diff --git a/EET/EET.tp2 b/EET/EET.tp2 index 0b9dd0c1..59d44006 100644 --- a/EET/EET.tp2 +++ b/EET/EET.tp2 @@ -1,6 +1,6 @@ BACKUP ~EET/backup~ AUTHOR ~K4thos (swit)~ -VERSION ~1.0 RC6~ +VERSION ~1.0 RC7~ README ~EET/lang/%LANGUAGE%/readme-EET.html~ ~EET/readme-EET.html~ LANGUAGE ~English~ @@ -125,9 +125,10 @@ ACTION_IF NOT FILE_EXISTS ~lang/%LANGUAGE_BG2%/dialog.bak~ BEGIN PRINT ~TLK merging...~ //create backups - COPY_LARGE + ~lang/%LANGUAGE_BG2%/dialog.tlk~ ~lang/%LANGUAGE_BG2%/dialog.bak~ - ACTION_IF FILE_EXISTS ~lang/%LANGUAGE_BG2%/dialogF.tlk~ BEGIN - COPY_LARGE + ~lang/%LANGUAGE_BG2%/dialogF.tlk~ ~lang/%LANGUAGE_BG2%/dialogF.bak~ + ACTION_FOR_EACH var IN ~~ F BEGIN + ACTION_IF FILE_EXISTS ~lang/%LANGUAGE_BG2%/dialog%var%.tlk~ BEGIN + COPY_LARGE + ~lang/%LANGUAGE_BG2%/dialog%var%.tlk~ ~EET/temp/dialog%var%.bak~ + END END //generate dummy strings up to 111000 diff --git a/EET/base/2da/K#PLOT.2DA b/EET/base/2da/K#PLOT.2DA index 5141073f..7ba19a2c 100644 --- a/EET/base/2da/K#PLOT.2DA +++ b/EET/base/2da/K#PLOT.2DA @@ -25,3 +25,4 @@ 22 FAMQUAS_ 23 FAMQUAS 24 FAMQUA25 +25 AMUL27 diff --git a/EET/bin/osx/ffmpeg b/EET/bin/osx/ffmpeg index a444b66b..0063d4f3 100644 Binary files a/EET/bin/osx/ffmpeg and b/EET/bin/osx/ffmpeg differ diff --git a/EET/compat/mur'neth/include.tph b/EET/compat/mur'neth/include.tph index 20b49c27..3efa64ad 100644 --- a/EET/compat/mur'neth/include.tph +++ b/EET/compat/mur'neth/include.tph @@ -11,7 +11,7 @@ COPY + ~%patch_dir%/cre/a#fmurn.cre~ ~%patch_dir%/cre~ END REPLACE_CRE_ITEM ~BLUN22~ #0 #0 #0 ~UNSTEALABLE&UNDROPPABLE~ ~WEAPON1~ EQUIP INNER_ACTION BEGIN - COPY_EXISTING - ~KITLIST.2DA~ ~override~ + COPY_EXISTING - ~KITLIST.2DA~ ~.../KITLIST.2DA~ PRETTY_PRINT_2DA COUNT_REGEXP_INSTANCES ~ A#GHAUN ~ num_matches PATCH_IF (num_matches > 0) BEGIN diff --git a/EET/compile/baf/K#CUTSUL.BAF b/EET/compile/baf/K#CUTSUL.BAF deleted file mode 100644 index 17f4e408..00000000 --- a/EET/compile/baf/K#CUTSUL.BAF +++ /dev/null @@ -1,22 +0,0 @@ -IF - True() -THEN - RESPONSE #100 - StartCutSceneMode() - CutSceneId(Player1) - FadeToColor([20.0],0) - Wait(1) - SetGlobal("ENDOFBG2","GLOBAL",1) - ActionOverride(Player1,LeaveAreaLUAPanic("AR2600","",[4285.637],SW)) - ActionOverride(Player1,LeaveAreaLUA("AR2600","",[4285.637],SW)) - ActionOverride(Player2,LeaveAreaLUA("AR2600","",[4285.637],SW)) - ActionOverride(Player3,LeaveAreaLUA("AR2600","",[4285.637],SW)) - ActionOverride(Player4,LeaveAreaLUA("AR2600","",[4285.637],SW)) - ActionOverride(Player5,LeaveAreaLUA("AR2600","",[4285.637],SW)) - ActionOverride(Player6,LeaveAreaLUA("AR2600","",[4285.637],SW)) - MultiPlayerSync() - Wait(1) - FadeFromColor([20.0],0) - Wait(1) - EndCutSceneMode() -END diff --git a/EET/compile/d/BDDEEP.d b/EET/compile/d/BDDEEP.d deleted file mode 100644 index 14f2cb53..00000000 --- a/EET/compile/d/BDDEEP.d +++ /dev/null @@ -1,7 +0,0 @@ -//Disable response to Brother Deepvein regarding his dwarves joining the army against crusade if chapter > 9 -ADD_TRANS_TRIGGER BDDEEP 80 ~GlobalLT("Chapter","GLOBAL",10)~ /*DO 0 1 2 3*/ -EXTEND_BOTTOM BDDEEP 80 -IF ~GlobalGT("Chapter","GLOBAL",9)~ THEN REPLY #263734 /* ~Don't look to me for answers. I've none to give.~ */ DO ~AddJournalEntry(267500,QUEST_DONE) -AddJournalEntry(264670,INFO) -~ GOTO 82 -END diff --git a/EET/compile/d/BDISABEL.d b/EET/compile/d/BDISABEL.d deleted file mode 100644 index 7b398cdb..00000000 --- a/EET/compile/d/BDISABEL.d +++ /dev/null @@ -1 +0,0 @@ -ADD_TRANS_TRIGGER BDISABEL 1 ~GlobalLT("Chapter","GLOBAL",13)~ DO 0 \ No newline at end of file diff --git a/EET/compile/d/BDREFG.d b/EET/compile/d/BDREFG.d deleted file mode 100644 index ecbc36bd..00000000 --- a/EET/compile/d/BDREFG.d +++ /dev/null @@ -1,76 +0,0 @@ -//Disable refugee dialogues that suggests the crusade is still going and Shinning Lady is alive when chapter > 11 -ADD_STATE_TRIGGER BDREFG1 15 ~GlobalLT("Chapter","GLOBAL",11)~ 18 20 24 25 26 -ADD_STATE_TRIGGER BDREFG2 15 ~GlobalLT("Chapter","GLOBAL",11)~ 18 20 24 25 26 -ADD_STATE_TRIGGER BDREFG3 15 ~GlobalLT("Chapter","GLOBAL",11)~ 18 20 24 25 26 -ADD_STATE_TRIGGER BDREFG4 15 ~GlobalLT("Chapter","GLOBAL",11)~ 18 20 24 25 26 -ADD_STATE_TRIGGER BDBFORT7 1 ~GlobalLT("Chapter","GLOBAL",11)~ 3 - -APPEND BDREFG1 -IF ~GlobalGT("Chapter","GLOBAL",10) - GlobalGT("bd_plot","global",155) - OR(6) - RandomNum(15,2) - RandomNum(15,4) - RandomNum(15,6) - RandomNum(15,10) - RandomNum(15,11) - RandomNum(15,12)~ THEN BEGIN new - SAY #255890 /* ~Forgive me, I'm not of a mind to chat at the moment.~ */ - IF ~~ THEN EXIT -END -END - -APPEND BDREFG2 -IF ~GlobalGT("Chapter","GLOBAL",10) - GlobalGT("bd_plot","global",155) - OR(6) - RandomNum(15,2) - RandomNum(15,4) - RandomNum(15,6) - RandomNum(15,10) - RandomNum(15,11) - RandomNum(15,12)~ THEN BEGIN new - SAY #255890 /* ~Forgive me, I'm not of a mind to chat at the moment.~ */ - IF ~~ THEN EXIT -END -END - -APPEND BDREFG3 -IF ~GlobalGT("Chapter","GLOBAL",10) - GlobalGT("bd_plot","global",155) - OR(6) - RandomNum(15,2) - RandomNum(15,4) - RandomNum(15,6) - RandomNum(15,10) - RandomNum(15,11) - RandomNum(15,12)~ THEN BEGIN new - SAY #255890 /* ~Forgive me, I'm not of a mind to chat at the moment.~ */ - IF ~~ THEN EXIT -END -END - -APPEND BDREFG4 -IF ~GlobalGT("Chapter","GLOBAL",10) - GlobalGT("bd_plot","global",155) - OR(6) - RandomNum(15,2) - RandomNum(15,4) - RandomNum(15,6) - RandomNum(15,10) - RandomNum(15,11) - RandomNum(15,12)~ THEN BEGIN new - SAY #255890 /* ~Forgive me, I'm not of a mind to chat at the moment.~ */ - IF ~~ THEN EXIT -END -END - -APPEND BDBFORT7 -IF ~GlobalGT("Chapter","GLOBAL",10) - OR(2) - RandomNum(8,2) - RandomNum(8,4)~ THEN BEGIN new - SAY #262979 /* ~I know who you are and I'd rather not speak to you. ~ */ - IF ~~ THEN EXIT -END -END diff --git a/EET/compile/d/FTOWBA.d b/EET/compile/d/FTOWBA.d deleted file mode 100644 index be24b6e8..00000000 --- a/EET/compile/d/FTOWBA.d +++ /dev/null @@ -1 +0,0 @@ -ADD_STATE_TRIGGER ~FTOWBA~ 1 ~Global("ENDOFBG1","GLOBAL",0)~ 2 3 4 diff --git a/EET/compile/d/FTOWBAZ.d b/EET/compile/d/FTOWBAZ.d deleted file mode 100644 index 12afab47..00000000 --- a/EET/compile/d/FTOWBAZ.d +++ /dev/null @@ -1 +0,0 @@ -ADD_STATE_TRIGGER ~FTOWBAZ~ 0 ~Global("ENDOFBG1","GLOBAL",0)~ 1 2 6 7 diff --git a/EET/compile/d/MTOWBA.d b/EET/compile/d/MTOWBA.d deleted file mode 100644 index 81d72faf..00000000 --- a/EET/compile/d/MTOWBA.d +++ /dev/null @@ -1 +0,0 @@ -ADD_STATE_TRIGGER ~MTOWBA~ 2 ~Global("ENDOFBG1","GLOBAL",0)~ 3 4 6 7 8 9 diff --git a/EET/compile/d/MTOWBAZ.d b/EET/compile/d/MTOWBAZ.d deleted file mode 100644 index 82da2154..00000000 --- a/EET/compile/d/MTOWBAZ.d +++ /dev/null @@ -1 +0,0 @@ -ADD_STATE_TRIGGER ~MTOWBAZ~ 0 ~Global("ENDOFBG1","GLOBAL",0)~ 1 4 8 9 diff --git a/EET/compile/d/NOBL12.d b/EET/compile/d/NOBL12.d deleted file mode 100644 index d55172bc..00000000 --- a/EET/compile/d/NOBL12.d +++ /dev/null @@ -1 +0,0 @@ -ADD_STATE_TRIGGER ~NOBL12~ 2 ~Global("ENDOFBG1","GLOBAL",0)~ diff --git a/EET/compile/d/NOBLBAZ.d b/EET/compile/d/NOBLBAZ.d deleted file mode 100644 index e9dd866f..00000000 --- a/EET/compile/d/NOBLBAZ.d +++ /dev/null @@ -1 +0,0 @@ -ADD_STATE_TRIGGER ~NOBLBAZ~ 0 ~Global("ENDOFBG1","GLOBAL",0)~ 4 7 10 13 diff --git a/EET/compile/d/NOBW5.d b/EET/compile/d/NOBW5.d deleted file mode 100644 index cd26e5af..00000000 --- a/EET/compile/d/NOBW5.d +++ /dev/null @@ -1 +0,0 @@ -ADD_STATE_TRIGGER ~NOBW5~ 2 ~Global("ENDOFBG1","GLOBAL",0)~ diff --git a/EET/compile/d/NOBW6.d b/EET/compile/d/NOBW6.d deleted file mode 100644 index 8bbe7418..00000000 --- a/EET/compile/d/NOBW6.d +++ /dev/null @@ -1 +0,0 @@ -ADD_STATE_TRIGGER ~NOBW6~ 4 ~Global("ENDOFBG1","GLOBAL",0)~ diff --git a/EET/compile/d/NOBWBAZ.d b/EET/compile/d/NOBWBAZ.d deleted file mode 100644 index 6a29b897..00000000 --- a/EET/compile/d/NOBWBAZ.d +++ /dev/null @@ -1 +0,0 @@ -ADD_STATE_TRIGGER ~NOBWBAZ~ 0 ~Global("ENDOFBG1","GLOBAL",0)~ 4 5 6 7 diff --git a/EET/compile/d/RBALDU.d b/EET/compile/d/RBALDU.d deleted file mode 100644 index d2e47c97..00000000 --- a/EET/compile/d/RBALDU.d +++ /dev/null @@ -1,4 +0,0 @@ -ADD_STATE_TRIGGER ~RBALDU~ 0 ~Global("ENDOFBG1","GLOBAL",0)~ 1 2 3 4 6 7 8 10 13 16 17 -ADD_STATE_TRIGGER ~RBEREG~ 11 ~GlobalLT("Chapter","GLOBAL",6)~ 12 18 -//REPLACE_STATE_TRIGGER ~RBALDU~ 3 ~Global("ENDOFBG1","GLOBAL",0)~ 6 7 8 -//REPLACE_STATE_TRIGGER ~RBEREG~ 11 ~GlobalLT("Chapter","GLOBAL",6)~ 12 18 diff --git a/EET/compile/d/RBEREG.d b/EET/compile/d/RBEREG.d deleted file mode 100644 index c5809d6f..00000000 --- a/EET/compile/d/RBEREG.d +++ /dev/null @@ -1,6 +0,0 @@ -ADD_STATE_TRIGGER ~RBEREG~ 0 ~GlobalLT("Chapter","GLOBAL",6)~ 5 7 8 9 18 20 -ADD_STATE_TRIGGER ~RBEREG~ 1 ~Global("ENDOFBG1","GLOBAL",0)~ 3 16 -ADD_STATE_TRIGGER ~RBEREG~ 4 ~GlobalLT("Chapter","GLOBAL",5)~ 6 12 13 15 19 -//REPLACE_STATE_TRIGGER ~RBEREG~ 5 ~GlobalLT("Chapter","GLOBAL",6)~ 7 9 20 -//REPLACE_STATE_TRIGGER ~RBEREG~ 3 ~Global("ENDOFBG1","GLOBAL",0)~ -//REPLACE_STATE_TRIGGER ~RBEREG~ 4 ~GlobalLT("Chapter","GLOBAL",5)~ 12 diff --git a/EET/compile/d/RFRIEN.d b/EET/compile/d/RFRIEN.d deleted file mode 100644 index 25d89e91..00000000 --- a/EET/compile/d/RFRIEN.d +++ /dev/null @@ -1,4 +0,0 @@ -ADD_STATE_TRIGGER ~RFRIEN~ 0 ~GlobalLT("Chapter","GLOBAL",6)~ 3 5 6 7 -ADD_STATE_TRIGGER ~RFRIEN~ 1 ~Global("ENDOFBG1","GLOBAL",0)~ 4 -//REPLACE_STATE_TRIGGER ~RFRIEN~ 3 ~GlobalLT("Chapter","GLOBAL",6)~ 5 6 -//REPLACE_STATE_TRIGGER ~RFRIEN~ 4 ~Global("ENDOFBG1","GLOBAL",0)~ diff --git a/EET/compile/d/cleanBG1.d b/EET/compile/d/cleanBG1.d new file mode 100644 index 00000000..f06206a4 --- /dev/null +++ b/EET/compile/d/cleanBG1.d @@ -0,0 +1,204 @@ +ADD_TRANS_TRIGGER DANDAL 1 ~GlobalLT("Chapter","GLOBAL",8)~ DO 1 +EXTEND_BOTTOM DANDAL 1 +IF ~GlobalGT("Chapter","GLOBAL",7)~ THEN REPLY #218665 /* ~Actually, we're adventurers. We're here to help out. Perhaps you could tell us about what's been going on in the region.~ */ GOTO 4 +END + +ADD_TRANS_TRIGGER BUB 0 ~GlobalLT("Chapter","GLOBAL",8)~ DO 0 + +ADD_TRANS_TRIGGER RALEO 2 ~GlobalLT("Chapter","GLOBAL",8)~ DO 1 +ADD_TRANS_TRIGGER RALEO 3 ~GlobalLT("Chapter","GLOBAL",8)~ DO 0 +ADD_TRANS_TRIGGER RALEO 5 ~GlobalLT("Chapter","GLOBAL",8)~ DO 1 + +ADD_STATE_TRIGGER VOLO 0 ~GlobalLT("Chapter","GLOBAL",8)~ 1 + +ADD_STATE_TRIGGER DRIZZT 6 ~GlobalLT("Chapter","GLOBAL",8)~ + +APPEND DRIZZT +IF ~GlobalGT("Chapter","GLOBAL",7) +Global("HelpDrizzt","GLOBAL",1) +Global("DrizztGnolls","GLOBAL",12)~ THEN BEGIN 6b + SAY #202454 /* ~Well met, friend. Luck be on your side.~ */ + IF ~~ THEN DO ~EscapeArea() +~ JOURNAL #227002 /* ~The dark elf named Drizzt Do'Urden seems a deadly sort of fellow. I'll be glad never to get on the wrong side of his blades.~ */ EXIT +END +END + +ADD_STATE_TRIGGER TAEROM 0 ~GlobalLT("Chapter","GLOBAL",8)~ 4 +ADD_TRANS_TRIGGER TAEROM 4 ~GlobalLT("Chapter","GLOBAL",8)~ DO 2 +ADD_TRANS_TRIGGER TAEROM 8 ~GlobalLT("Chapter","GLOBAL",8)~ DO 0 +ADD_TRANS_TRIGGER TAEROM 12 ~GlobalLT("Chapter","GLOBAL",8)~ DO 0 + +EXTEND_BOTTOM TAEROM 8 +IF ~GlobalGT("Chapter","GLOBAL",7) +PartyHasItem("MISC12") +~ THEN REPLY #226788 /* ~I'd like to sell you more ankheg shells.~ */ UNSOLVED_JOURNAL #227451 /* ~A New Suit of Armor +In just a day, Taerom "Thunderhammer" of Beregost should have my new ankheg-shell plate mail ready for me. I will look ferocious in it!~ */ GOTO 1b +END + +EXTEND_BOTTOM TAEROM 12 +IF ~GlobalGT("Chapter","GLOBAL",7)~ THEN REPLY #200203 /* ~I'll sell it to you. I'm sick of carrying it around.~ */ GOTO 1b +END + +APPEND TAEROM +IF ~~ THEN BEGIN 1b + SAY @1000048 /* ~Ah, this will make a fine suit of plate for a governor or better. Nobility like exotic materials and don't care much about the price. Probably close to 20,000 gold for a tenday's work when I'm finished.~ */ + IF ~~ THEN DO ~TakePartyItem("MISC12") +DestroyItem("MISC12") +GiveGoldForce(500) +EraseJournalEntry(227450) +EraseJournalEntry(227451) +EraseJournalEntry(227452) +~ SOLVED_JOURNAL #227452 /* ~A Small Fortune! +One lousy ankheg shell for 500 gold? I can't believe everyone isn't out hunting those giant bug monsters.~ */ EXIT +END +END + +ADD_TRANS_TRIGGER NOBL10 0 ~GlobalLT("Chapter","GLOBAL",8)~ DO 0 1 2 +EXTEND_BOTTOM NOBL10 0 +IF ~~ THEN EXIT +END + +ADD_TRANS_TRIGGER SAMANT 0 ~GlobalLT("Chapter","GLOBAL",8)~ DO 1 +EXTEND_BOTTOM SAMANT 0 +IF ~GlobalGT("Chapter","GLOBAL",7)~ THEN REPLY #218698 /* ~We're adventurers, just arrived in town recently. So what's your name?~ */ GOTO 5 +END + +ADD_TRANS_TRIGGER HUNTER 1 ~GlobalLT("Chapter","GLOBAL",8)~ DO 0 + +ADD_STATE_TRIGGER WHELP 0 ~GlobalLT("Chapter","GLOBAL",8)~ +REPLACE_STATE_TRIGGER WHELP 3 ~GlobalGT("Chapter","GLOBAL",7)~ + +ADD_TRANS_TRIGGER SURREY 0 ~GlobalLT("Chapter","GLOBAL",8)~ DO 0 + +ADD_STATE_TRIGGER HULRIK 1 ~GlobalLT("Chapter","GLOBAL",8)~ + +ADD_STATE_TRIGGER MERC0706 0 ~GlobalLT("Chapter","GLOBAL",8)~ +APPEND MERC0706 +IF ~GlobalGT("Chapter","GLOBAL",7) +~ THEN BEGIN 0b + SAY @1000048 /* ~A fine and lovely day to ye! Would you be interested in any of my fine odds and ends?~ */ + IF ~~ THEN REPLY #215764 /* ~I have no need of your trinkets. Good day.~ */ EXIT + IF ~~ THEN REPLY #215765 /* ~Let's see what you have for offer.~ */ DO ~StartStore("sto0706",LastTalkedToBy(Myself)) +~ EXIT +END +END + +ADD_STATE_TRIGGER MERCH4 0 ~GlobalLT("Chapter","GLOBAL",8)~ +APPEND MERCH4 +IF ~GlobalGT("Chapter","GLOBAL",7) +~ THEN BEGIN 0b + SAY @1000048 /* ~A fine and lovely day to ye! Would you be interested in any of my fine odds and ends?~ */ + IF ~~ THEN REPLY #215764 /* ~I have no need of your trinkets. Good day.~ */ EXIT + IF ~~ THEN REPLY #215765 /* ~Let's see what you have for offer.~ */ DO ~StartStore("sto4906",LastTalkedToBy(Myself)) +~ EXIT +END +END + +ADD_STATE_TRIGGER MERCH2 0 ~GlobalLT("Chapter","GLOBAL",8)~ 1 +APPEND MERCH2 +IF ~GlobalGT("Chapter","GLOBAL",7) +~ THEN BEGIN 0-1b + SAY @1000049 /* ~Hey there, you look like the adventurin' type. So, do ya need some new equipment?~ */ + IF ~~ THEN REPLY #215290 /* ~Show us your wares.~ */ DO ~StartStore("sto4901",LastTalkedToBy(Myself)) +~ EXIT + IF ~~ THEN REPLY #215291 /* ~We don't need anything today.~ */ EXIT +END +END + +ADD_STATE_TRIGGER MERCH6 0 ~GlobalLT("Chapter","GLOBAL",8)~ +APPEND MERCH6 +IF ~GlobalGT("Chapter","GLOBAL",7) +~ THEN BEGIN 0b + SAY @1000050 /* ~I trust you are enjoying the fair? What can I get for you?~ */ + IF ~~ THEN REPLY #215770 /* ~It has been a lovely diversion, indeed. What wares have you available?~ */ DO ~StartStore("sto4909",LastTalkedToBy(Myself)) +~ EXIT + IF ~~ THEN REPLY #215771 /* ~Sorry, but I've no need of anything right now. Perhaps another time.~ */ EXIT +END +END + +ADD_STATE_TRIGGER MERCHA 2 ~GlobalLT("Chapter","GLOBAL",8)~ + +ADD_STATE_TRIGGER AMNIS3 2 ~GlobalLT("Chapter","GLOBAL",8)~ + +ADD_STATE_TRIGGER AMNIS 6 ~GlobalLT("Chapter","GLOBAL",8)~ 7 15 16 +APPEND AMNIS +IF ~GlobalGT("Chapter","GLOBAL",7) +~ THEN BEGIN 6-7-15-16b + SAY #200352 /* ~Move along, citizen.~ */ + IF ~~ THEN EXIT +END +END + +ADD_STATE_TRIGGER AMNIS4 1 ~GlobalLT("Chapter","GLOBAL",8)~ 3 5 6 7 8 9 +APPEND AMNIS4 +IF ~GlobalGT("Chapter","GLOBAL",7) +~ THEN BEGIN 1-3-5-6-7-8-9b + SAY #213948 /* ~You make one move that be suspicious, and I swear your head will leave the mines before your neck.~ */ + IF ~~ THEN EXIT +END +END + +ADD_STATE_TRIGGER MTOWBE 0 ~GlobalLT("Chapter","GLOBAL",8)~ 13 14 15 16 18 19 20 22 24 25 29 30 31 32 33 +APPEND MTOWBE +IF ~GlobalGT("Chapter","GLOBAL",7) +~ THEN BEGIN 0-13-14-15-16-18-19-20-22-24-25-29-30-31-32-33b + SAY #206422 /* ~Sorry, buddy, but I'm just simple folk and don't know anything about politics and such.~ */ + IF ~~ THEN EXIT +END +END + +ADD_STATE_TRIGGER FTOWBE 2 ~GlobalLT("Chapter","GLOBAL",8)~ 5 6 9 10 11 12 13 20 +APPEND FTOWBE +IF ~GlobalGT("Chapter","GLOBAL",7) +~ THEN BEGIN 2-5-6-9-10-11-12-13-20b + SAY #206419 /* ~I'm just a simple little lady, I don't know much at all.~ */ + IF ~~ THEN EXIT +END +END + +ADD_STATE_TRIGGER MTOWNA 0 ~GlobalLT("Chapter","GLOBAL",8)~ 1 2 3 8 11 14 15 +APPEND MTOWNA +IF ~GlobalGT("Chapter","GLOBAL",7) +~ THEN BEGIN 0-1-2-3-8-11-14-15b + SAY #206292 /* ~I don't know nuthin'. Sorry.~ */ + IF ~~ THEN EXIT +END +END + +ADD_STATE_TRIGGER FTOWNA 0 ~GlobalLT("Chapter","GLOBAL",8)~ 1 8 11 +APPEND FTOWNA +IF ~GlobalGT("Chapter","GLOBAL",7) +~ THEN BEGIN 0-1-8-11b + SAY #200332 /* ~Please, leave me be.~ */ + IF ~~ THEN EXIT +END +END + +ADD_STATE_TRIGGER MTOWFR 1 ~GlobalLT("Chapter","GLOBAL",8)~ 2 3 9 16 17 21 +APPEND MTOWFR +IF ~GlobalGT("Chapter","GLOBAL",7) +~ THEN BEGIN 1-2-3-9-16-17-21b + SAY #201474 /* ~I'm in no mood to speak with you. Get out of me face.~ */ + IF ~~ THEN EXIT +END +END + +ADD_STATE_TRIGGER FTOWFR 2 ~GlobalLT("Chapter","GLOBAL",8)~ 4 5 8 9 10 14 17 +APPEND MTOWFR +IF ~GlobalGT("Chapter","GLOBAL",7) +~ THEN BEGIN 2-4-5-8-9-10-14-17b + SAY #200860 /* ~I'm sorry, my husband doesn't like me to speak with strangers.~ */ + IF ~~ THEN EXIT +END +END + +//STO +REPLACE_STATE_TRIGGER RBALDU 0 ~Global("Chapter","GLOBAL",7)~ 1 2 3 4 10 13 16 17 +REPLACE_STATE_TRIGGER RBALDU 6 ~GlobalLT("Chapter","GLOBAL",8)~ 7 8 11 12 18 + +REPLACE_STATE_TRIGGER RBEREG 1 ~Global("Chapter","GLOBAL",7)~ 16 +REPLACE_STATE_TRIGGER RBEREG 3 ~GlobalLT("Chapter","GLOBAL",8)~ 4 5 7 9 12 17 20 +ADD_STATE_TRIGGER RBEREG 6 ~GlobalLT("Chapter","GLOBAL",8)~ 15 18 19 + +REPLACE_STATE_TRIGGER RFRIEN 1 ~Global("Chapter","GLOBAL",7)~ +REPLACE_STATE_TRIGGER RFRIEN 3 ~GlobalLT("Chapter","GLOBAL",8)~ 4 5 6 diff --git a/EET/compile/d/BDSCHAEL.d b/EET/compile/d/cleanSoD.d similarity index 72% rename from EET/compile/d/BDSCHAEL.d rename to EET/compile/d/cleanSoD.d index 9438d259..e19702cd 100644 --- a/EET/compile/d/BDSCHAEL.d +++ b/EET/compile/d/cleanSoD.d @@ -1,3 +1,90 @@ +//Disable response to Brother Deepvein regarding his dwarves joining the army against crusade if chapter > 9 +ADD_TRANS_TRIGGER BDDEEP 80 ~GlobalLT("Chapter","GLOBAL",10)~ /*DO 0 1 2 3*/ +EXTEND_BOTTOM BDDEEP 80 +IF ~GlobalGT("Chapter","GLOBAL",9)~ THEN REPLY #263734 /* ~Don't look to me for answers. I've none to give.~ */ DO ~AddJournalEntry(267500,QUEST_DONE) +AddJournalEntry(264670,INFO) +~ GOTO 82 +END + +ADD_TRANS_TRIGGER BDISABEL 1 ~GlobalLT("Chapter","GLOBAL",13)~ DO 0 + +//Disable refugee dialogues that suggests the crusade is still going and Shinning Lady is alive when chapter > 11 +ADD_STATE_TRIGGER BDREFG1 15 ~GlobalLT("Chapter","GLOBAL",11)~ 18 20 24 25 26 +ADD_STATE_TRIGGER BDREFG2 15 ~GlobalLT("Chapter","GLOBAL",11)~ 18 20 24 25 26 +ADD_STATE_TRIGGER BDREFG3 15 ~GlobalLT("Chapter","GLOBAL",11)~ 18 20 24 25 26 +ADD_STATE_TRIGGER BDREFG4 15 ~GlobalLT("Chapter","GLOBAL",11)~ 18 20 24 25 26 +ADD_STATE_TRIGGER BDBFORT7 1 ~GlobalLT("Chapter","GLOBAL",11)~ 3 + +APPEND BDREFG1 +IF ~GlobalGT("Chapter","GLOBAL",10) + GlobalGT("bd_plot","global",155) + OR(6) + RandomNum(15,2) + RandomNum(15,4) + RandomNum(15,6) + RandomNum(15,10) + RandomNum(15,11) + RandomNum(15,12)~ THEN BEGIN new + SAY #255890 /* ~Forgive me, I'm not of a mind to chat at the moment.~ */ + IF ~~ THEN EXIT +END +END + +APPEND BDREFG2 +IF ~GlobalGT("Chapter","GLOBAL",10) + GlobalGT("bd_plot","global",155) + OR(6) + RandomNum(15,2) + RandomNum(15,4) + RandomNum(15,6) + RandomNum(15,10) + RandomNum(15,11) + RandomNum(15,12)~ THEN BEGIN new + SAY #255890 /* ~Forgive me, I'm not of a mind to chat at the moment.~ */ + IF ~~ THEN EXIT +END +END + +APPEND BDREFG3 +IF ~GlobalGT("Chapter","GLOBAL",10) + GlobalGT("bd_plot","global",155) + OR(6) + RandomNum(15,2) + RandomNum(15,4) + RandomNum(15,6) + RandomNum(15,10) + RandomNum(15,11) + RandomNum(15,12)~ THEN BEGIN new + SAY #255890 /* ~Forgive me, I'm not of a mind to chat at the moment.~ */ + IF ~~ THEN EXIT +END +END + +APPEND BDREFG4 +IF ~GlobalGT("Chapter","GLOBAL",10) + GlobalGT("bd_plot","global",155) + OR(6) + RandomNum(15,2) + RandomNum(15,4) + RandomNum(15,6) + RandomNum(15,10) + RandomNum(15,11) + RandomNum(15,12)~ THEN BEGIN new + SAY #255890 /* ~Forgive me, I'm not of a mind to chat at the moment.~ */ + IF ~~ THEN EXIT +END +END + +APPEND BDBFORT7 +IF ~GlobalGT("Chapter","GLOBAL",10) + OR(2) + RandomNum(8,2) + RandomNum(8,4)~ THEN BEGIN new + SAY #262979 /* ~I know who you are and I'd rather not speak to you. ~ */ + IF ~~ THEN EXIT +END +END + REPLACE_TRIGGER_TEXT BDSCHAEL ~BeenInParty("Khalid")~ ~BeenInParty("Khalid") !Dead("Khalid")~ REPLACE_TRIGGER_TEXT BDSCHAEL ~BeenInParty("Jaheira")~ ~BeenInParty("Jaheira") !Dead("Jaheira")~ REPLACE_TRIGGER_TEXT BDSCHAEL ~BeenInParty("Neera")~ ~BeenInParty("Neera") !Dead("Neera")~ @@ -23,7 +110,7 @@ IF ~~ THEN BEGIN 39b END IF ~~ THEN BEGIN 39c - SAY @1000042 /* ~...A monk named Rasaad is currently working at the Iron Throne building—the Council made it a refuge for those fleeing Caelar.~ */ + SAY @1000042 /* ~...A monk named Rasaad is currently working at the Iron Throne building—the Council made it a refuge for those fleeing Caelar.~ */ IF ~~ THEN GOTO 40 END diff --git a/EET/docs/Modder's Notes.html b/EET/docs/Modder's Notes.html new file mode 100644 index 00000000..72b9339f --- /dev/null +++ b/EET/docs/Modder's Notes.html @@ -0,0 +1,1905 @@ + + + +Modder's Notes for EET + + + + + +

Modder's Notes for Baldur's Gate: Enhanced Edition Trilogy (EET)

+ + +

Table of Contents

+
+
    +
  1. Overview
  2. +
  3. EET conventions
  4. + +
  5. Creating mods compatible with EET
  6. + +
+
+ + +

Overview

+
+ +

Baldur's Gate: Enhanced Edition Trilogy Modder's Notes is intended for modders who wish to build modifications to be installed on top of EET core component installation. The document is organized using a tutorial approach, in which you are guided through each step of accomplishing particular modding tasks without breaking compatibility with other platforms.

+ +

These notes expects that you're already familiar with F.A.Q section of the EET readme file.

+ +

I've tried to write this document with easy to understand language even for novice modders. English is not my first language though, so I can't promise that it will be smooth read. If you find something here confusing or if you have additional questions don't hesitate to ask on EET section of Gibberlings3 forum.

+ +
+ + +

EET conventions

+
+ + + + +

Areas naming convention

+

All area resources (ARE, WED, TIS, MOS, BMP, BCS) have been renamed to use new area codes because there is considerable overlap in area filenames between Baldur's Gate: Enahanced Edition and Baldur's Gate II: Enhanced Edition. It is a straightforward system. The numbers are untouched, but the prefix "AR" is changed to "BG". This maintains the consistency and validity of area references from a number of public documents, including walkthroughs, travel maps, and the like. Therefore, these documents can be referred to for an area number guide to EET, except that the prefix change from "AR" to "BG" must be considered when, for example, using the CLUAConsole, or when developing modifications that affects Baldur's Gate: Enhanced Edition areas. Siege of Dragonspear area resources don't conflict with BG2:EE due to vanilla "BD" prefix, so the original names are kept.

+ + +

Resource naming convention

+

For other resources, EET keeps the original BG:EE resource name as strictly as possible. If it doesn't conflict with BG2:EE content than the name of imported file is not changed. For conflicting resources BG1 ones have suffix with the underscore (_) added to make them unique. Since the engine only supports 8.3 filenames, there are 2 resources that couldn't use this convention and adopted BGT one instead (skelwa02.cre => bgskel02.cre, skelwa03.cre => bgskel03.cre).

+ +

Conflicting spells from BG:EE that don't use SPELL.IDS symbolic names uses a little different naming convention - "BG" letters replaces first 2 letters of the spell (so SPWI becomes BGWI etc). The reason behind this is limitation of the engine which expects maximum 7 character spell names for some spell effects. This convention, adopted from BGT, makes the renamed spells still easy to identify.

+ + +

Naming convention for new files

+

New files added by EET have "K#" prefix to distinguish them from vanilla BG:EE and BG2:EE content.

+ + +

BG1 resource naming reference table

+

For more convenient viewing, the BG1 resource naming reference table has been moved to external file. Even though it's in HTML format it's basically a spreadsheet file, so you can also open it for example in Microsoft Excel (which has been used to create it). The file is separated into several worksheets named after extensions of files listed there. Columns show naming conventions used in BG:EE, EET and BGT. Tutu reference has not been included because that platform renames pretty much every single resource in game which would make the table far less readable.

+ +
+ +

Creating mods compatible with EET

+
+ + + + +

Adopting EET naming conventions for BG1 resources

+

If your mod is designed to work not only with EET but also other platforms you should consider using either:

+ + +

You can also patch files directly using EET_modConverter tool that has custom version of Platform Conversion Utility in it, specialized in converting BG:EE and BGT code and resources to adopt EET BG1 naming conventions. The tool will print all changes it makes into a log file, so you can review them if they are really needed. "Patching (...)" in log means that the input file has been patched and copied to output directory of the tool. "Analyzing (...)" means that the tool found an instance of the particular resource in tp2/tph/tpp/tpa files that didn't have extension provided. In such case the file is not patched but you should manually check if suggested change is warranted. Keep in mind that PCU part of this tool is designed for mods with BG1/BG:EE content only. You should not use it for mods with BG2 resources/code, unless you really know you're doing. Supported files that this tool can automatically convert: ARE, BAF, BCS, CRE, D, DLG, EFF, GAM, ITM, SPL, STO, TBL, TP2, TPH, TPP, TPA, TRA, VVC, WED, WMP. Other than renaming and patching files to use EET naming convention it will also handle converting ARE Song references to use EET song playlist.

+ + +

Implementing BG1 random items

+

Infinity Engine uses dummy items in order to assign random loot through the game. There are 2 ways to implement them:

+
    +
  1. via RNDEQUIP.2DA, RNDMAGIC.2DA, RNDSCROL.2DA, RNDTREAS.2DA, RNDWEAP.2DA system from vanilla engine
  2. +
  3. via RNDTRES.2DA system added in EE engine +
+

In EET RNDTRES.2DA is used for random tables related to SoD content (no changes compared to vanilla SoD, new rows are simply appended to the file.). But for the vanilla BG1 content old system is still in use due to problem with item identification when another dummy item is referenced in a row. This means that BG1 random items have different names compared to vanilla BG:EE which needs to be adopted in mods that use them. EET uses exactly the same item names for BG1 items as BGT (the only difference is that EET also makes entries from RNDEQUIP.2DA unique), so if your mod already has compatibility code/resources for that platform it will also work with EET. To make the resource patching easier we've prepared a new WeiDU function that can be used to automatically patch any resource to use correct BG1 dummy item names, regardless of platform, available within EET_functions.tph. BG1_RND_ITM patch function supports following resources: ARE, CRE, EFF, ITM, SPL, STO. Example usage:

+
+
+COPY ~somefile~ ~override~
+  LPF BG1_RND_ITM INT_VAR src = 1 END //src variable sets source platform for dummy item names used in that file: 0 (default, no need to assign) - BG1 / BG:EE / Tutu; 1 - BGT; 2 - EET
+
+
+ + +

Implementing BG1 random items

+ +

EET uses all music files present in BG:EE, SoD and BG2:EE. The mod is meant to be installed on clean installation of BG2:EE, which allows it to set a common standard for song numbers for mods installed later. All BG2:EE song references are kept as they were, BG:EE and SoD songs that were missing in BG2:EE become appended to songlist.2da during EET installation - use it as a reference. It's also easy to patch areas from BG:EE and BGT mods to use EET common standard for song numbers thanks to EET_modConverter tool, as has been explained here. + + +

Adding support for EET chapters/journal system

+

EET uses united journal system that keeps track of all 22 chapters of your journey. Here is a reference information when each chapter starts and ends:

+
    +
  1. Baldur's Gate - chapters from 0 to 7 (no changes compared to vanilla BG:EE).
  2. + +
  3. Siege of Dragonspear expansion - chapters from 7 to 13 (no changes compared to vanilla BG:EE+SoD).
  4. + +
  5. Baldur's Gate II: Shadows of Amn - chapters from 13 to 19 (instead of 1-7).
  6. + +
  7. Throne of Bhaal expansion - chapters from 20 to 22 (instead of 8-10).
  8. + +
+ +

As you can see from above reference mods that uses Chapter variable should adopt EET continuous chapters/journal system when it comes to Shadows of Amn and Throne of Bhaal chapters (no changes in BG:EE and SoD content). Sounds like a nightmare compatibility wise, right? Well... not really. All changes to your code can be implemented automatically without any effort on your part. There are 2 ways do it:

+ + + + +

Working with files that are merged during installation

+ +

EET is installed in two steps - main components (setup-EET_core installed automatically by setup-EET) on a clean BG2:EE, and additional setup-EET_end component at the end of mod installation process (after any other mods). This second step is used to automatically:

+ + +

Why exactly NPC JOIN dialogue files are being merged? Short answer - interjections. Let's use an example from vanilla game.

+

Party travels through Athkatla slums where they can meet a shady looking guy that initiates a dialogue: "Yes, you! See this mighty fine sphere here? You can have it for your very own for a mere 500 gold pieces! What do you say?". Now if you have Minsc in the party following interjection is called "Boo says such a sphere will not fit into my pocket. If I can't carry it with me, it's just not a good buy."

+

The above dialogue piece called 'interjection' is triggered by WAYLANE.DLG and filtered with triggers, in this case See("Minsc") and InParty("Minsc"). Now let's say you didn't meet this guy during your Shadows of Amn travels. What would happen after going back from Throne of Bhaal to Athkatla with Minsc? The dialogue would be interrupted in the place where Minsc is expected to say something (dialogue shutdown/infinite loop and other problems). In order to make JOIN dialogue files valid through whole journey continuous characters that uses more than 1 JOIN dialogue file have them merged with one another.

+ +

JOIN dialogue file merging is done automatically, based on PDIALOG variants 2DA entries, at the end of installation process (after all mods are already installed), so modders don't need to change anything when it comes to JOIN dialogue coding. You should patch each dialogue file exactly the same way as you do in vanilla games. State numbers and file names are not altered at that point of installation (just keep in mind that some BG1 files have been renamed due to conflicts with BG2). You can use this reference file that lists different files that are assigned through out the game (green colour cells shows BG1 renamed files - if you're using cpmvars variable libraries thn you don't even need to be aware about it).

+ + +

Detecting EET within WeiDU code

+ + + +

Once again EET_modConverter may be handy if you need to replace many instances of GAME_IS command in your code - the tool has an option to do it automatically.

+ + +

Trigger filtering across BG1, SoD, BG2:SoA, BG2:ToB

+

EET uses following GLOBAL in-game variable filters for vanilla campaigns to shut off content that no longer should show up after certain point of the story.

+ +

All these variables are correctly set even if you start the game in SoD, BG2 or ToB, so they should be always reliable for content filtering.

+ +

There may be situations where you want to filter content to show up (or not) when party is returning to old areas. For this purpose EET added new "BG1AREA" entry to AREATYPE.IDS. You can check if the current area is part of BG1 campaign via following triggers:

+ +

If you need more precision with detecting areas you can also use additional AreaCheck(S:ResRef*) triggers.

+ + +

Adding AreaType to BG1 ARE files

+

You can patch area files with WeiDU code during your mod installation. First retrieve the BIT number associated with BG1AREA from AREATYPE.IDS using this action command:

+
+
+ADD_AREA_TYPE BG1AREA
+
+
+

And than patch area files with this code:

+
+
+WRITE_SHORT 0x48 THIS | (1 << BG1AREA)
+
+
+ + +

Detecting mods installed on BG:EE

+ +

As has been mentioned in the readme F.A.Q section EET has limited support for BG:EE mods installed on BG:EE previous to installing EET on BG2:EE. Mods installed this way are treated exactly the same as vanilla resources and end up as part of the BG2:EE EET installation. So, how can other mods detect if a particular mod has been installed on BG:EE? There are 2 ways to do it:

+ + + + +

Adding support for mods installable on BG:EE previous to installing EET on BG2:EE

+

If you're not planning to convert your BG:EE mod to work natively with EET, you may be interested in a solution that treats mods installed on BG:EE (previous to installing EET on BG2:EE) as vanilla content, which means all new BG:EE resources are converted on the fly with vanilla files. For more information how to achieve this please take a look at BGEE_to_EET_mod_checker tool readme file.

+ + +

Adding support for shattering items (iron crisis) system in BG1 portion of the game

+

EET uses the same system as vanilla BG:EE+SoD installation - via opcode 232. There is a pre-made action function available within EET_functions.tph in case you would like to add more items into iron crisis pool. It first removes BG:EE/Tutu/BGT/EET implementation (if already present) and automatically patch files to add BG:EE/EET item shattering system. The function can be used not only for weapons but also armors, shield and helmets listed in the array.

+ +
+
+ACTION_DEFINE_ARRAY arrayName BEGIN ~modDir/weapon.itm~ ~modDir/armor.itm~ ~%var%/shield.itm~ ~override/helmet.itm~ END
+LAF ~EET_IRON_CRISIS~
+  STR_VAR
+    shattering_array = EVAL ~arrayName~ //array with files to patch (supports: weapons, armors, shields, helmets)
+END
+
+
+ + +

Importing more items to BG2

+

In vanilla game when you import your character only Player1 inventory is checked and bags of holding are lost. In order to expand item importation for whole party and junk located in bags of holding EET introduced a new way to import items. Modders should use exactly the same code in AR0602.BCS as they do in vanilla game. The only change needed is appending the item that you would like to be imported into K#IMPORT.2DA: +

+
+APPEND ~K#IMPORT.2DA~ ~1 CHAN06~ UNLESS ~CHAN06~
+
+
+

This way the item will be in Player1 inventory at the beginning of Irenicus Dungeon even if it belonged to other party member during transition or was stored in a bag of holding. Your importation code should be expanded on top of AR0602.BCS like in vanilla game (before block that takes all items from your inventory). That's all you really need to know to create mods compatible with EET, but here is a full explanation how the system works in case you'd like to take advantage of other features of this system: +

    +
  1. During setup-EET_end component installation K#IMPORT.2DA, IMPORT01.2DA, IMPORT02.2DA, IMPORT03.2DA and BDSODIMP.BCS files are read and the importation code is automatically generated at the top of K#TELBGT.BCS script using filenames found within those previously analysed files
  2. +
  3. The importation code within K#TELBGT.BCS takes the referenced items from whole party + bags of holdings during SoD->BG2 transition and places them in a new bag of holding called K#IMPORT.ITM
  4. +
  5. Now that the all relevant items are already within importation bag of holding the transition code moves all the remaining party items into invisible 'K#ImportContainer' container in BD6100.ARE (last area in SoD)
  6. +
  7. At the end of script run CHARNAME receives importation bag of holding (K#IMPORT.ITM) with all imported items in it (so we are NOT limited to just 20 items)
  8. +
  9. After CHARNAME is moved to Irenicus Dungeon there is a time for mods to do something with items imported to BG2 before they are taken away from player inventory
  10. +
  11. Instead of completely destroying inventory and gold EET moves remaining items to invisible 'K#ImportContainer' container within AR0602.ARE and the gold is stored in K#ImportGold global variable. The same container also receives all items that we previously moved to container with the same name in BD6100.ARE
  12. +
+ + +

Adding support for NPC transition system

+

As mentioned in readme file EET uses new system for NPC transition from Siege of Dragonspear expansion to Shadows of Amn and from Shadows of Amn to Throne of Bhaal expansion. In order to make modder's life easier we've prepared a function designed to automatically add both types of transition to any kind of NPC mod. All you need to do to make your NPC fully compatible with EET is disabling your normal patching code for AR4000.BCS, AR4500.BCS, FATESP.DLG and using EET_TRANSITION function instead.

+

If your BG2 NPC is meant to have BG1->BG2 transition than you should add additional !BeenInParty("%DV%") trigger (where %DV% is death variable of your CRE) in the code that spawns new version of CRE file into BG2 area. This way such block won't trigger if the NPC is valid for migration from BG1 to BG2. For example:

+ +
+
+//this code will spawn new version of CRE if the transition didn't occur and CRE was not left dead in BG1
+IF
+  Global("MinscImport","MYAREA",0)
+  !BeenInParty("Minsc") //NPC was not in party at any point during BG1/SoD (otherwise he would be valid for trnsition)
+  GlobalLT("chapter","GLOBAL",20) //don't spawn him during ToB
+  !Dead("Minsc") //NPC has not been killed during BG1
+THEN
+  RESPONSE #100
+    CreateCreature("Minsc7",[4029.2759],6)
+    ActionOverride("Minsc",MakeGlobalOverride()) //just to be sure that there is no more than 1 entry in GAM file
+    SetGlobal("MinscImport","MYAREA",1)
+    Continue()
+END
+
+
+ +

In order to always be up to date with latest set of EET functions I suggest using WeiDU INCLUDE command and point it to EET directory in your code like this:

+
+
+INCLUDE ~EET/other/EET_functions.tph~
+
+
+ +

You can use this example code for reference how the EET_functions.tph EET_NPC_TRANSITION function is meant to be used:

+ +
+
+LAF ~EET_NPC_TRANSITION~
+  INT_VAR
+    type = 1
+      //1 - BG1/SoD NPC without BG2 content (NPC is disabled from game after BG1, mentioned but not summonable in ToB)
+      //2 - BG2 NPC without BG1 content (transition to ToB if joined the party at least once during SoA)
+      //3 - NPC with BG1 and BG2 content (full transition to SoA/ToB)
+    default_ToB = 0 //controls if NPC should be spawnable in ToB when the game has been started in ToB (no by default - 0)
+    clean_ToB = 0 //cleans out existing EET code in FATESP.DLG, AR4000.BCS, AR4500.BCS for DV specified in clean_ToB_DV
+  STR_VAR
+    dv = "IMOEN2" //Death Variable (script name) of the NPC (must be the same in BG1/SoD/BG2/ToB)
+    override_BG1 = "IMOEN_" //name of the override NPC script in BG1
+    override_SoD = "BDIMOEN" //name of the override NPC script in SoD (use BG1 one if doesn't exist)
+    override_SoA = "IMOEN2" //name of the override NPC script in SoA
+    override_ToB = "IMOEN25" //name of the override NPC script in ToB (use SoA one if doesn't exist)
+    dialog_ToB = "IMOEN25A" //name of the dialogue file used after spawning NPC in ToB (use SoA POST dialogue or initial SoA dialogue file if doesn't exist)
+    traFile = "" //an optional TRA file that will be used for the TRA references defined in "string"
+    string = "@1" //FATESP summon text (example: "Bring me Quayle, the gnome cleric/illusionist.") or TRA string number
+    stringPosDV = "" //set the DV of NPC right below your response (used for sorting FATESP responses alphabetically)
+      //Aerie, Ajantis, Alora, Anomen, Baeloth, Branwen, Cernd, Coran, Corwin, Dorn, Dynaheir, Edwin, Eldoth, Faldorn, Garrick,
+      //Glint, HaerDalis, Hexxat, Imoen2, Jaheira, Jan, Kagain, Keldorn, Khalid, Kivan, Korgan, MKhiin, Mazzy, Minsc, Montaron,
+      //Nalia, Neera, Quayle, Rasaad, Safana, SharTeel, Skie, Tiax, Viconia, Valygar, Voghiln, Wilson, Xan, Xzar, Yeslick, Yoshimo
+      //variable not set (default) = NPC name appended at the end of summoning list
+    SummonedVar = "" //set it only if you want to use different var name than %dv%Summoned (useless in most cases)
+    SpawnPlaneVar = "" //set it only if you want use different var name than %dv%SpawnPlane (useless in most cases)
+    clean_ToB_DV = "" //if clean_ToB = 1 existing code for this DV will be removed from FATESP.DLG, AR4000.BCS, AR4500.BCS
+END
+
+
+ +
+
+//example for BG1 NPC without BG2 content
+LAF ~EET_NPC_TRANSITION~
+  INT_VAR
+    type = 1
+  STR_VAR
+    dv = "IMOEN2"
+    override_BG1 = "IMOEN_"
+    override_SoD = "BDIMOEN"
+    traFile = "ModFolder/language/%LNGUAGE%/dialog.tra"
+    string = "@1"
+END
+
+//example for BG2 NPC without BG1 content
+LAF ~EET_NPC_TRANSITION~
+  INT_VAR
+    type = 2
+  STR_VAR
+    dv = "IMOEN2"
+    override_SoA = "IMOEN2"
+    override_ToB = "IMOEN25"
+    dialog_ToB = "IMOEN25A"
+    traFile = "ModFolder/language/%LNGUAGE%/dialog.tra"
+    string = "@1"
+END
+
+//example for NPC with BG1 and BG2 content (type = 3 can be also used to add transition into vanilla BG1 NPC without it)
+LAF ~EET_NPC_TRANSITION~
+  INT_VAR
+    type = 3
+  STR_VAR
+    dv = "IMOEN2"
+    override_BG1 = "IMOEN_"
+    override_SoD = "BDIMOEN"
+    override_SoA = "IMOEN2"
+    override_ToB = "IMOEN25"
+    dialog_ToB = "IMOEN25A"
+    traFile = "ModFolder/language/%LNGUAGE%/dialog.tra"
+    string = "@1"
+END
+
+//example of implementing type of transition depending on detection if separate mod with type = 1 transition has been installed
+ACTION_IF MOD_IS_INSTALLED ~NPCName/NPCName.tp2~ ~0~ BEGIN
+  OUTER_SET type_var = 3 //this will change already applied type of transition = 1 to 3
+END ELSE BEGIN
+  OUTER_SET type_var = 2 //BG1 version of NPC is not installed, so just add BG2 only transition
+END
+LAF ~EET_NPC_TRANSITION~
+  INT_VAR
+    type = type_var
+  STR_VAR
+    dv = "IMOEN2"
+    are = "AR0602"
+    override_BG1 = "IMOEN_" //won't be used if type_var = 2
+    override_SoD = "BDIMOEN" //won't be used if type_var = 2
+    override_SoA = "IMOEN2"
+    override_ToB = "IMOEN25"
+    dialog_ToB = "IMOEN25A"
+    traFile = "ModFolder/language/%LNGUAGE%/dialog.tra"
+    string = "@1"
+END
+
+
+ +

You can see more examples in EET/lib/transition.tph file. It is preferable to use EET_TRANSITION than manually patching files. This way if anything regarding transition will be changed in future you won't need to change anything in your code. For those interested how exactly it works or those who need to include additional REPLACE_TEXTUALLY patching within outcome code, here is an explanation what the function does:

+ + + + + + + + +

Depending on which variables you set in EET_TRANSITION code, different combination of above patching will take place.

+ + +

Workaround for CalanderDay command in SoD/BG2 portion of the game

+

CalanderDay(I:Day*) / CalanderDayGT(I:Day*) / CalanderDayLT(I:Day*) triggers can be used to detect if the current day is the day specified / after the day specified / before the day specified. What about situations when you need to use it in Siege of Dragonspear or Baldur's Gate 2 portion of the game? We don't know how many days it will take CHARNAME party to finish first 7 chapters, so the vanilla command becomes less useful. That is why EET introduced days counter that can be used as a workaround here. For easier explanation let's take a look at how EET resolved this problem for Town Crier in Athkatla, who should tell something new each 3 passing days. + +

Town Crier local script (DS3483.BCS) has been expanded with the below code that assigns K#TOWNC01_day variable to use K#DaysPassed value (in EET this variable counts passed in-game days). From now after each day the value of K#TOWNC01_cnt will be increased by 1. You don't need to be near NPC to make it work - the K#TOWNC01_cnt variable will be updated correctly as soon as you return to area with this NPC.

+
+
+IF
+  Global("K#DoOnce","LOCALS",0)
+  Global("K#TOWNC01_cnt","GLOBAL",0)
+THEN
+  RESPONSE #100
+    SetGlobal("K#DoOnce","LOCALS",1)
+    SetGlobal("K#TOWNC01_cnt","GLOBAL",1) //modify this value if you want to change starting day
+    SetGlobal("K#TOWNC01_day","GLOBAL",0) //just to be sure
+    AddGlobals("K#TOWNC01_day","K#DaysPassed")
+    Continue()
+END
+
+IF
+  Global("K#DoOnce","LOCALS",1)
+  GlobalsGT("K#DaysPassed","K#TOWNC01_day")
+THEN
+  RESPONSE #100
+    IncrementGlobal("K#TOWNC01_cnt","GLOBAL",1)
+    IncrementGlobal("K#TOWNC01_day","GLOBAL",1)
+    Continue()
+END
+
+
+ +

Now that we have a working day tracking system we should modify TOWNC01.DLG to replace CalanderDayLT trigger with variable check instead, like this:

+
+
+COPY_EXISTING ~TOWNC01.DLG~ ~override~
+  DECOMPILE_AND_PATCH BEGIN
+    REPLACE_TEXTUALLY ~CalanderDayLT(~ ~GlobalLT("K#TOWNC01_cnt","GLOBAL",~
+  END
+BUT_ONLY
+
+
+

There you go - a working workaround for CalanderDayLT. You can adjust the code to easily create workarounds for CalanderDay and CalanderDayGT too. In this example K#TOWNC01_cnt is a GLOBAL variable due to multiple instances of TOWNC01.CRE in different areas and we want them all to use the same days passed counter. You can change it to use LOCALS variable instead if the counter should be tracked only for 1 instance of NPC.

+ + +

Adding new animations

+

Unlike classic games Infinity Engine distributed with Enhanced Edition games doesn't have hardcoded limit for animations, so assigning new animations to existing vanilla slots is considered a bad practice now. There are 2 ways to implement new animations to the game:

+ +

EET promotes common standard introduced in IWD:EE and viader's Extended Animations mod. If you are creating mod compatible with EET you should follow what has been said by viader regarding animation slot offsets, in above mentioned topic:

+
+
+0xE240 - 0xE2FF - reserved by Extended Animations
+0xE330 - 0xE3FF - free
+0xE440 - 0xE4FF - free
+0xE530 - 0xE5FF - free
+0xE620 - 0xE6FF - free
+0xE730 - 0xE7FF - free
+0xE850 - 0xE8FF - free
+0xE920 - 0xE9FF - free
+0xEA30 - 0xEAFF - free
+0xEB30 - 0xEBFF - free
+0xEC30 - 0xECFF - free
+0xED30 - 0xEDFF - free
+0xEE20 - 0xEEFF - free
+
+
+ + +

Adding support for EET Worldmap

+

EET Worldmap consists of BG1, SoD, BG2, ToB maps merged together. It also covers lands from both IWD games (related to IWD-in-EET mod). When it comes to BG2 and ToB areas it allows for cross-platform modding without separate script blocks for patching EET Worldmap. For EET you can use the same coordinates as in vanilla maps but with added X and Y correction that represents where the old map starts compared to the upper-left corner of the EET map. Preferable way of doing so is using cpmvars variable libraries + +Modders can use the same weidu code as for SoA/ToB worldmaps, by simply assigning additional X and Y coordinate correction depending on the platform. BG2 and ToB icons have the same numbers as in vanilla BG2:EE. BG1 icons also preserve the numbering, but you need to add a starting number correction, if you want to use the same code for worldmap patching between BG1 and EET. BG1 and ToB icons have been appended to MAPICONS.BAM file, so you also need to take it into account. EET uses the same icon numbers as BP-BGT Worldmap. + +

Here is an example code that is compatible with different platforms at the same time:

+ +
+
+//either use cpmvars that have these variables set or add this variable declaration somewhere in your tp2 code
+ACTION_IF GAME_IS ~eet~ BEGIN
+  OUTER_SET wmp_xCoord_SoA = 0 //in relation to BG2/BG2:EE WORLDMAP.WMP add 0 px correction to X coordinate
+  OUTER_SET wmp_yCoord_SoA = 2283 //in relation to BG2/BG2:EE WORLDMAP.WMP add 2283 px correction to Y coordinate
+  OUTER_SET wmp_xCoord_ToB = 893 //in relation to BG2/BG2:EE WORLDM25.WMP add 893 px correction to X coordinate
+  OUTER_SET wmp_yCoord_ToB = 3011 //in relation to BG2/BG2:EE WORLDM25.WMP add 1681 px correction to Y coordinate
+  OUTER_SET wmp_mapIcon_BG1 = 29 //in relation to Tutu YAC22MAP.BAM add 29 cycles correction to map icon
+  OUTER_SET wmp_mapIcon_ToB = 85 //in relation to BG2 25MAPIC.BAM add 85 cycles correction to map icon
+  OUTER_SPRINT wmp_worldmap_ToB "worldmap" //when editing ToB worldmap use WORLDMAP.WMP instead of WORLDM25.WMP
+END ELSE BEGIN
+  OUTER_SET wmp_xCoord_SoA = 0
+  OUTER_SET wmp_yCoord_SoA = 0
+  OUTER_SET wmp_xCoord_ToB = 0
+  OUTER_SET wmp_yCoord_ToB = 0
+  OUTER_SET wmp_mapIcon_BG1 = 0
+  OUTER_SET wmp_mapIcon_ToB = 0
+  OUTER_SPRINT wmp_worldmap_ToB "worldm25"
+END
+
+//example code that adds new area to BG2/BG2:EE/EET WORLDMAP.WMP
+LAF sc#addWmpAre
+  INT_VAR
+    mapIcon = 5
+    xCoord = 240 + wmp_xCoord_SoA
+    yCoord = 130 + wmp_yCoord_SoA
+  STR_VAR
+    areName = ~fileName~
+    strName = "nameOfTheArea"
+    strDesc = "nameOfTheArea"
+END
+
+//example code that adds new area to BG2/BG2:EE WORLDM25.WMP and to EET WORLDMAP.WMP
+LAF sc#addWmpAre
+  INT_VAR
+    mapIcon = 5 + wmp_mapIcon_ToB
+    xCoord = 240 + wmp_xCoord_ToB
+    yCoord = 130 + wmp_yCoord_ToB
+  STR_VAR
+    areName = ~fileName~
+    strName = "nameOfTheArea"
+    strDesc = "nameOfTheArea"
+    worldmap = EVAL "%wmp_worldmap_ToB%"
+END
+
+
+ +

For reference here is a table listing all icons available in EET MAPICONS.BAM file and icon numbers used by EET and other platforms.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IconEET / BP-BGT WorldmapTutuBG2 / BG2:EE (SoA map)BG2 / BG2:EE (ToB map)
5-5-
6-6-
7-7-
8-8-
9-9-
10-10-
11-11-
12-12-
13-13-
14-14-
15-15-
16-16-
17-17-
18-18-
19-19-
20-20-
21-21-
22-22-
23-23-
24-24-
25-25-
26-26-
28-28-
290--
301--
312--
323--
334--
345--
356--
367--
378--
389--
3910--
4011--
4112--
4213--
4314--
4415--
4516--
4617--
4718--
4819--
4920--
5021--
5122--
5223--
5324--
5425--
5626--
5727--
5828--
5929--
6130--
6231--
6332--
6433--
6534--
6635--
6736--
6837--
6938--
7039--
7140--
7241--
7342--
7443--
7544--
7645--
7746--
7847--
7948--
8049--
8250--
8351--
8452--
90--5
91--6
92--7
93--8
94--9
95--10
96--11
97--12
98--13
99--14
100--15
101--16
102--17
106-29 (only in BG2:EE)-
107-31 (only in BG2:EE)-
108-32 (only in BG2:EE)-
109-33 (only in BG2:EE)-
110-34 (only in BG2:EE)-
111-30 (only in BG2:EE)18 (only in BG2:EE)
112---
113---
114---
115---
116---
117---
118---
119---
120---
121---
123---
124---
125---
126---
127---
128---
129---
130---
131---
132---
133---
135---
136---
137---
138---
139---
140---
141---
142---
143---
144---
146---
147---
148---
150---
151---
152---
155---
156---
157---
158---
159---
160---
161---
162---
163---
164---
165---
166---
169---
170---
172---
173---
+ + + + + + + + +
EET Worldmap reference for BG1/SoD/SoA/ToB areas (click to enlarge)
+Please visit this forum topic for a full Worldmap image as well as areas reference for compatible mods.
+ +
+ + diff --git a/EET/docs/images/EET_worldmap.png b/EET/docs/images/EET_worldmap.png index 6b52608f..e93e88e3 100644 Binary files a/EET/docs/images/EET_worldmap.png and b/EET/docs/images/EET_worldmap.png differ diff --git a/EET/lang/de_DE/dialog.tra b/EET/lang/de_DE/dialog.tra index cb3d474f..0cad8396 100644 --- a/EET/lang/de_DE/dialog.tra +++ b/EET/lang/de_DE/dialog.tra @@ -42,3 +42,11 @@ @1000045 = ~You tell me. We are to acquire equipment and allies for the trip north. There's that bard or the thieves at the Elfsong Tavern, or a monk at the Iron Throne Building. Or we could just return to the palace.~ //based on SoD @60957 @1000046 = ~You tell me. We are to acquire equipment and allies for the trip north. There's that bard or the thieves at the Elfsong Tavern. Or we could just return to the palace.~ +//based on BG1 @180, just remove sentence regarding Iron shortage +@1000047 = ~Ah, this will make a fine suit of plate for a governor or better. Nobility like exotic materials and don't care much about the price. Probably close to 20,000 gold for a tenday's work when I'm finished.~ +//based on BG1 @15763, just remove sentence regarding Iron shortage +@1000048 = ~A fine and lovely day to ye! Would you be interested in any of my fine odds and ends?~ +//based on BG1 @3629, just remove sentence regarding Iron shortage +@1000049 = ~Hey there, you look like the adventurin' type. So, do ya need some new equipment?~ +//based on BG1 @15769, just remove sentence regarding Iron shortage +@1000050 = ~I trust you are enjoying the fair? What can I get for you?~ diff --git a/EET/lang/en_US/dialog.tra b/EET/lang/en_US/dialog.tra index 267b500e..af47fe1c 100644 --- a/EET/lang/en_US/dialog.tra +++ b/EET/lang/en_US/dialog.tra @@ -42,3 +42,11 @@ @1000045 = ~You tell me. We are to acquire equipment and allies for the trip north. There's that bard or the thieves at the Elfsong Tavern, or a monk at the Iron Throne Building. Or we could just return to the palace.~ //based on SoD @60957 @1000046 = ~You tell me. We are to acquire equipment and allies for the trip north. There's that bard or the thieves at the Elfsong Tavern. Or we could just return to the palace.~ +//based on BG1 @180, just remove sentence regarding Iron shortage +@1000047 = ~Ah, this will make a fine suit of plate for a governor or better. Nobility like exotic materials and don't care much about the price. Probably close to 20,000 gold for a tenday's work when I'm finished.~ +//based on BG1 @15763, just remove sentence regarding Iron shortage +@1000048 = ~A fine and lovely day to ye! Would you be interested in any of my fine odds and ends?~ +//based on BG1 @3629, just remove sentence regarding Iron shortage +@1000049 = ~Hey there, you look like the adventurin' type. So, do ya need some new equipment?~ +//based on BG1 @15769, just remove sentence regarding Iron shortage +@1000050 = ~I trust you are enjoying the fair? What can I get for you?~ diff --git a/EET/lang/es_ES/dialog.tra b/EET/lang/es_ES/dialog.tra index 044aade8..d53c2224 100644 --- a/EET/lang/es_ES/dialog.tra +++ b/EET/lang/es_ES/dialog.tra @@ -43,3 +43,11 @@ @1000045 = ~You tell me. We are to acquire equipment and allies for the trip north. There's that bard or the thieves at the Elfsong Tavern, or a monk at the Iron Throne Building. Or we could just return to the palace.~ //based on SoD @60957 @1000046 = ~You tell me. We are to acquire equipment and allies for the trip north. There's that bard or the thieves at the Elfsong Tavern. Or we could just return to the palace.~ +//based on BG1 @180, just remove sentence regarding Iron shortage +@1000047 = ~Ah, this will make a fine suit of plate for a governor or better. Nobility like exotic materials and don't care much about the price. Probably close to 20,000 gold for a tenday's work when I'm finished.~ +//based on BG1 @15763, just remove sentence regarding Iron shortage +@1000048 = ~A fine and lovely day to ye! Would you be interested in any of my fine odds and ends?~ +//based on BG1 @3629, just remove sentence regarding Iron shortage +@1000049 = ~Hey there, you look like the adventurin' type. So, do ya need some new equipment?~ +//based on BG1 @15769, just remove sentence regarding Iron shortage +@1000050 = ~I trust you are enjoying the fair? What can I get for you?~ diff --git a/EET/lang/fr_FR/dialog.tra b/EET/lang/fr_FR/dialog.tra index 3ee0b593..2ad74bd3 100644 --- a/EET/lang/fr_FR/dialog.tra +++ b/EET/lang/fr_FR/dialog.tra @@ -42,3 +42,11 @@ @1000045 = ~You tell me. We are to acquire equipment and allies for the trip north. There's that bard or the thieves at the Elfsong Tavern, or a monk at the Iron Throne Building. Or we could just return to the palace.~ //based on SoD @60957 @1000046 = ~You tell me. We are to acquire equipment and allies for the trip north. There's that bard or the thieves at the Elfsong Tavern. Or we could just return to the palace.~ +//based on BG1 @180, just remove sentence regarding Iron shortage +@1000047 = ~Ah, this will make a fine suit of plate for a governor or better. Nobility like exotic materials and don't care much about the price. Probably close to 20,000 gold for a tenday's work when I'm finished.~ +//based on BG1 @15763, just remove sentence regarding Iron shortage +@1000048 = ~A fine and lovely day to ye! Would you be interested in any of my fine odds and ends?~ +//based on BG1 @3629, just remove sentence regarding Iron shortage +@1000049 = ~Hey there, you look like the adventurin' type. So, do ya need some new equipment?~ +//based on BG1 @15769, just remove sentence regarding Iron shortage +@1000050 = ~I trust you are enjoying the fair? What can I get for you?~ diff --git a/EET/lang/pl_PL/dialog.tra b/EET/lang/pl_PL/dialog.tra index ab175667..44ced57b 100644 --- a/EET/lang/pl_PL/dialog.tra +++ b/EET/lang/pl_PL/dialog.tra @@ -42,3 +42,11 @@ @1000045 = ~You tell me. We are to acquire equipment and allies for the trip north. There's that bard or the thieves at the Elfsong Tavern, or a monk at the Iron Throne Building. Or we could just return to the palace.~ //based on SoD @60957 @1000046 = ~You tell me. We are to acquire equipment and allies for the trip north. There's that bard or the thieves at the Elfsong Tavern. Or we could just return to the palace.~ +//based on BG1 @180, just remove sentence regarding Iron shortage +@1000047 = ~Ach, będzie z tego wspaniała zbroja – dla burmistrza lub kogoś lepszego. Szlachta gustuje w egzotycznych materiałach i nie przejmuje się ceną. Po tygodniu roboty będę mógł za to wziąć nawet dwadzieścia tysięcy sztuk złota.~ +//based on BG1 @15763, just remove sentence regarding Iron shortage +@1000048 = ~Dzień dobry! Czy mogę cię zainteresować moimi wyśmienitymi towarami?~ +//based on BG1 @3629, just remove sentence regarding Iron shortage +@1000049 = ~Hej tam, wyglądacie na takich, co szukają przygód. Potrzebujecie nowego ekwipunku?~ +//based on BG1 @15769, just remove sentence regarding Iron shortage +@1000050 = ~Mam nadzieję, że jarmark się spodobał? Co mogę dla was zrobić?~ diff --git a/EET/lang/pl_PL/readme-EET.html b/EET/lang/pl_PL/readme-EET.html index c3b36c36..9a6126b5 100644 --- a/EET/lang/pl_PL/readme-EET.html +++ b/EET/lang/pl_PL/readme-EET.html @@ -156,7 +156,7 @@

Baldur's Gate: Enhanced Edition Trilogy (EET)

Autor: K4thos
Kontrybutorzy na GitHub: WhiteAgnus, AWizardDidIt, Crevs Daak

W sieci: Strona i Forum dyskusyjne

-

Wersja 1.0 Release Candidate 6
+

Wersja 1.0 Release Candidate 7
Dostępne wersje językowe: Angielski, Polski, Niemiecki, Francuski, Hiszpański
Wsparcie dla systemów operacyjnych: Windows, Mac OS X

@@ -413,7 +413,7 @@

Jakie mody można zainstalować po EET?

Jak przerobić moda, żeby był kompatybilny z EET?

-

Dzięki zasobom moderskim i narzędziom dystrybuowanym wraz z EET, adaptacja istniejących modów nie jest szczególnie trudna ani czasochłonna. Większość rzeczy da się wykonać automatycznie, korzystając z narzędzi i funkcji WeiDU, napisanych z myślą o konwersjach pod EET. Informacje na ten temat znajdziesz w pliku z dokumentacją techniczną.

+

Dzięki zasobom moderskim i narzędziom dystrybuowanym wraz z EET, adaptacja istniejących modów nie jest szczególnie trudna ani czasochłonna. Większość rzeczy da się wykonać automatycznie, korzystając z narzędzi i funkcji WeiDU, napisanych z myślą o konwersjach pod EET. Informacje na ten temat znajdziesz w pliku Modder's Notes.

Jak wygląda kompatybilność ze starymi zapisami gier?

diff --git a/EET/lib/EET_core.tp2 b/EET/lib/EET_core.tp2 index 5c9a6dd4..65c338c9 100644 --- a/EET/lib/EET_core.tp2 +++ b/EET/lib/EET_core.tp2 @@ -1,6 +1,6 @@ BACKUP ~EET/backup/core~ AUTHOR ~K4thos (swit)~ -VERSION ~1.0 RC6~ +VERSION ~1.0 RC7~ /////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\ /////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\ @@ -54,6 +54,12 @@ LANGUAGE ~Spanish~ BEGIN ~Core EET (game importation)~ REQUIRE_PREDICATE MOD_IS_INSTALLED ~EET/EET.tp2~ 0 @900009 //This component requires EET initialise component to be installed first +ACTION_FOR_EACH var IN ~~ F BEGIN + ACTION_IF FILE_EXISTS ~EET/temp/dialog%var%.bak~ BEGIN + COPY_LARGE + ~EET/temp/dialog%var%.bak~ ~lang/%LANGUAGE_BG2%~ + END +END + PRINT ~INTERACTIVE = %INTERACTIVE%~ PRINT ~LANGUAGE = %LANGUAGE%~ PRINT ~argv[0] = %argv[0]%~ @@ -137,6 +143,9 @@ END ELSE ACTION_IF ~%WEIDU_OS%~ STR_EQ ~osx~ BEGIN ACTION_IF (~%argv[0]%~ STRING_CONTAINS_REGEXP ~[dD]~ = 1) BEGIN AT_EXIT ~rm -rf EET/temp~ EXACT END + AT_NOW ~chmod +x EET/bin/osx/tileconv~ EXACT + AT_NOW ~chmod +x EET/bin/osx/tile2ee~ EXACT + AT_NOW ~chmod +x EET/bin/osx/ffmpeg~ EXACT END OUTER_SPRINT tileconv ~%osxBin%EET%os_slash%bin%os_slash%%WEIDU_OS%%os_slash%%arch_var%tileconv%exe%~ @@ -962,7 +971,6 @@ SetPrivateProfileString('%row%','%option%','%option_1%') //"Never Show Nuisance SOD" , 0 => "Program Options" "Debug Mode" , 1 => "Program Options" "Logging On" , 1 => "Program Options" - "UI Edit Mode" , 1 => "Program Options" "Cheats" , 1 => "Game Options" "BG4LOGO" , 1 => "MOVIES" "BILOGO" , 1 => "MOVIES" @@ -992,7 +1000,6 @@ SetPrivateProfileString('Program Options','EET Installation State','1') SetPrivateProfileString('Program Options','Active Campaign','1') SetPrivateProfileString('Program Options','Debug Mode','1') SetPrivateProfileString('Program Options','Logging On','1') -SetPrivateProfileString('Program Options','UI Edit Mode','1') SetPrivateProfileString('Game Options','Cheats','1') SetPrivateProfileString('MOVIES','BG4LOGO','1') SetPrivateProfileString('MOVIES','BILOGO','1') diff --git a/EET/lib/EET_end.tp2 b/EET/lib/EET_end.tp2 index f921e731..88b2ddef 100644 --- a/EET/lib/EET_end.tp2 +++ b/EET/lib/EET_end.tp2 @@ -87,7 +87,7 @@ END INCLUDE ~EET/lib/EET_end.tph~ -COPY_EXISTING - ~CAMPAIGN.2DA~ ~override~ +COPY_EXISTING - ~CAMPAIGN.2DA~ ~.../CAMPAIGN.2DA~ READ_2DA_ENTRIES_NOW campaign_tbl 32 FOR (i=0; i < campaign_tbl; ++i) BEGIN READ_2DA_ENTRY_FORMER campaign_tbl i 0 campaign diff --git a/EET/lib/EET_end_saves.tph b/EET/lib/EET_end_saves.tph index ddfd9f75..940abcb0 100644 --- a/EET/lib/EET_end_saves.tph +++ b/EET/lib/EET_end_saves.tph @@ -525,7 +525,7 @@ COPY_EXISTING_REGEXP - GLOB ~.+\.WMP~ ~override~ SET compLen = STRING_LENGTH ~%wmpData%~ SPRINT $array_wmp_glob("%SOURCE_FILE%" "%uncLen%" "%compLen%") "%wmpData%" -COPY_EXISTING - ~CAMPAIGN.2DA~ ~override~ +COPY_EXISTING - ~CAMPAIGN.2DA~ ~.../CAMPAIGN.2DA~ COUNT_2DA_ROWS 32 "cntrow" FOR (cnt = 0; cnt < "%cntrow%"; cnt = cnt + 1) BEGIN READ_2DA_ENTRY cnt 12 32 "save_dir" diff --git a/EET/lib/bg1_BCS.tph b/EET/lib/bg1_BCS.tph index 9eb30b16..630e6e9a 100644 --- a/EET/lib/bg1_BCS.tph +++ b/EET/lib/bg1_BCS.tph @@ -1119,7 +1119,7 @@ IF THEN RESPONSE #100 SetGlobal("K#NewGame","BD0120",1) - //SetGlobal("DREAM","GLOBAL",7) + SetGlobal("DREAM","GLOBAL",-1) SetGlobal("ENDOFBG1","GLOBAL",1) SetGlobal("NEWGAME_SOD","GLOBAL",1) //SetGlobal("K#temp","GLOBAL",364) @@ -1512,6 +1512,196 @@ END EXTEND_TOP ~BG2600.BCS~ ~.../BG2600-et.baf~ +<<<<<<<< .../BG1800-eb.baf +IF + GlobalGT("Chapter","GLOBAL",7) + Exists("LAKADAAR") +THEN + RESPONSE #100 + ActionOverride("LAKADAAR",DestroySelf()) + Continue() +END +>>>>>>>> +EXTEND_BOTTOM ~BG1800.BCS~ ~.../BG1800-eb.baf~ + +<<<<<<<< .../BG2700-eb.baf +IF + GlobalGT("Chapter","GLOBAL",7) + Exists("GORION") +THEN + RESPONSE #100 + ActionOverride("GORION",DestroySelf()) + Continue() +END + +IF + GlobalGT("Chapter","GLOBAL",7) + Exists("BINKOS") +THEN + RESPONSE #100 + ActionOverride("BINKOS",DestroySelf()) + Continue() +END +>>>>>>>> +EXTEND_BOTTOM ~BG2700.BCS~ ~.../BG2700-eb.baf~ + +<<<<<<<< .../BG2800-eb.baf +IF + GlobalGT("Chapter","GLOBAL",7) + Exists("ANDOUT") +THEN + RESPONSE #100 + ActionOverride("ANDOUT",DestroySelf()) + Continue() +END +>>>>>>>> +EXTEND_BOTTOM ~BG2800.BCS~ ~.../BG2800-eb.baf~ + +<<<<<<<< .../BG3900-eb.baf +IF + GlobalGT("Chapter","GLOBAL",7) + Exists("WILCO") +THEN + RESPONSE #100 + ActionOverride("WILCO",DestroySelf()) + Continue() +END +>>>>>>>> +EXTEND_BOTTOM ~BG3900.BCS~ ~.../BG3900-eb.baf~ + +<<<<<<<< .../BG4200-eb.baf +IF + GlobalGT("Chapter","GLOBAL",7) + Exists("HOBGO5") +THEN + RESPONSE #100 + ActionOverride("HOBGO5",DestroySelf()) + Continue() +END +>>>>>>>> +EXTEND_BOTTOM ~BG4200.BCS~ ~.../BG4200-eb.baf~ + +<<<<<<<< .../TAEROM-eb.baf +IF + GlobalGT("Chapter","GLOBAL",7) + Global("TaeromRidiculous","GLOBAL",0) +THEN + RESPONSE #100 + SetGlobal("TaeromRidiculous","GLOBAL",1) + Continue() +END +>>>>>>>> +EXTEND_BOTTOM ~TAEROM.BCS~ ~.../TAEROM-eb.baf~ + +<<<<<<<< .../BG4400-eb.baf +IF + GlobalGT("Chapter","GLOBAL",7) + Exists("SPRAT") +THEN + RESPONSE #100 + ActionOverride("SPRAT",DestroySelf()) + Continue() +END +>>>>>>>> +EXTEND_BOTTOM ~BG4400.BCS~ ~.../BG4400-eb.baf~ + +///// \\\\\ +/////clean BG1 areas \\\\\ +///// \\\\\ + +<<<<<<<< .../BG1800-eb.baf +IF + GlobalGT("Chapter","GLOBAL",7) + Exists("LAKADAAR") +THEN + RESPONSE #100 + ActionOverride("LAKADAAR",DestroySelf()) + Continue() +END +>>>>>>>> +EXTEND_BOTTOM ~BG1800.BCS~ ~.../BG1800-eb.baf~ + +<<<<<<<< .../BG2700-eb.baf +IF + GlobalGT("Chapter","GLOBAL",7) + Exists("GORION") +THEN + RESPONSE #100 + ActionOverride("GORION",DestroySelf()) + Continue() +END + +IF + GlobalGT("Chapter","GLOBAL",7) + Exists("BINKOS") +THEN + RESPONSE #100 + ActionOverride("BINKOS",DestroySelf()) + Continue() +END +>>>>>>>> +EXTEND_BOTTOM ~BG2700.BCS~ ~.../BG2700-eb.baf~ + +<<<<<<<< .../BG2800-eb.baf +IF + GlobalGT("Chapter","GLOBAL",7) + Exists("ANDOUT") +THEN + RESPONSE #100 + ActionOverride("ANDOUT",DestroySelf()) + Continue() +END +>>>>>>>> +EXTEND_BOTTOM ~BG2800.BCS~ ~.../BG2800-eb.baf~ + +<<<<<<<< .../BG3900-eb.baf +IF + GlobalGT("Chapter","GLOBAL",7) + Exists("WILCO") +THEN + RESPONSE #100 + ActionOverride("WILCO",DestroySelf()) + Continue() +END +>>>>>>>> +EXTEND_BOTTOM ~BG3900.BCS~ ~.../BG3900-eb.baf~ + +<<<<<<<< .../BG4200-eb.baf +IF + GlobalGT("Chapter","GLOBAL",7) + Exists("HOBGO5") +THEN + RESPONSE #100 + ActionOverride("HOBGO5",DestroySelf()) + Continue() +END +>>>>>>>> +EXTEND_BOTTOM ~BG4200.BCS~ ~.../BG4200-eb.baf~ + +<<<<<<<< .../TAEROM-eb.baf +IF + GlobalGT("Chapter","GLOBAL",7) + Global("TaeromRidiculous","GLOBAL",0) +THEN + RESPONSE #100 + SetGlobal("TaeromRidiculous","GLOBAL",1) + Continue() +END +>>>>>>>> +EXTEND_BOTTOM ~TAEROM.BCS~ ~.../TAEROM-eb.baf~ + +<<<<<<<< .../BG4400-eb.baf +IF + GlobalGT("Chapter","GLOBAL",7) + Exists("SPRAT") +THEN + RESPONSE #100 + ActionOverride("SPRAT",DestroySelf()) + Continue() +END +>>>>>>>> +EXTEND_BOTTOM ~BG4400.BCS~ ~.../BG4400-eb.baf~ + ///// \\\\\ /////clean SoD areas \\\\\ ///// \\\\\ @@ -1529,6 +1719,7 @@ EXTEND_TOP ~BDFIST.BCS~ ~.../DISABLE-et.baf~ EXTEND_TOP ~BDASC.BCS~ ~.../DISABLE-et.baf~ EXTEND_TOP ~BD5200EN.BCS~ ~.../DISABLE-et.baf~ EXTEND_TOP ~BD5100EN.BCS~ ~.../DISABLE-et.baf~ +EXTEND_TOP ~BDTHRUDD.BCS~ ~.../DISABLE-et.baf~ <<<<<<<< .../BDCOAL50.baf IF @@ -1549,7 +1740,7 @@ END //Coast Way Crossing <<<<<<<< .../BD1000-et.baf IF - Global("K#CleanAreaNote","BD2000",0) + Global("K#CleanAreaNote","BD1000",0) OR(3) GlobalGT("Chapter","GLOBAL",8) StateCheck("Baeloth",STATE_REALLY_DEAD) @@ -1557,7 +1748,7 @@ IF THEN RESPONSE #100 RemoveMapNote([2000.540],267515) //Baeloth's Black Pit to End All Black Pits - SetGlobal("K#CleanAreaNote","BD2000",1) + SetGlobal("K#CleanAreaNote","BD1000",1) Continue() END @@ -1606,7 +1797,7 @@ EXTEND_TOP ~BD1000.BCS~ ~.../BD1000-et.baf~ IF Global("K#CleanArea","BD1100",0) GlobalGT("Chapter","GLOBAL",9) - Global("bd_deepvein_troops","global",1) + GlobalGT("bd_deepvein_troops","GLOBAL",0) THEN RESPONSE #100 ActionOverride("BDDCLER2",DestroySelf()) //Dwarven Cleric @@ -1650,11 +1841,16 @@ IF GlobalGT("Chapter","GLOBAL",13) THEN RESPONSE #100 + ActionOverride("BDDUGRAF",DestroySelf()) //Sergeant Dugraff ActionOverride("BDFFMERC",DestroySelf()) //Flaming Fist Mercenary ActionOverride("DEAD5",DestroySelf()) //Crusader ActionOverride("DEAD4",DestroySelf()) //Crusader ActionOverride("DEAD2",DestroySelf()) //Crusader Archer ActionOverride("DEAD1",DestroySelf()) //Crusader Recruit + SoundActivate("AM_Distant_Battle",FALSE) + SoundActivate("AMB_Distant_Seige",FALSE) + SoundActivate("SS_Magic_Battle",FALSE) + SoundActivate("SS_Rumble_Battle",FALSE) RemoveMapNote([1384.1862],268887) //Explosive Barrels RemoveMapNote([2434.2616],267526) //Crusader Encampment RemoveMapNote([4090.404],268888) //Corpses @@ -1682,6 +1878,20 @@ END EXTEND_TOP ~BD2100.BCS~ ~.../BD2100-et.baf~ //Coalition Camp +COPY_EXISTING ~BD3000.BCS~ ~override~ + DECOMPILE_AND_PATCH BEGIN + SPRINT textToReplace ~RemoveAreaFlag(NOTRAVEL)~ + COUNT_REGEXP_INSTANCES ~%textToReplace%~ num_matches + PATCH_IF (num_matches > 0) BEGIN + REPLACE_TEXTUALLY ~\(%textToReplace%\)~ ~RemoveWorldmapAreaFlag("BD2000",6) + \1~ + PATCH_PRINT ~Patching: %num_matches% matches found in %SOURCE_FILESPEC% for REPLACE_TEXTUALLY: %textToReplace%~ + END ELSE BEGIN + PATCH_WARN ~WARNING: could not find %textToReplace% in %SOURCE_FILESPEC%~ + END + END +BUT_ONLY + <<<<<<<< .../BD3000-et.baf IF Global("K#CleanAreaBG2","BD3000",0) @@ -1714,9 +1924,17 @@ EXTEND_TOP ~BD3000.BCS~ ~.../BD3000-et.baf~ //Dragonspear Castle, Exterior COPY_EXISTING ~BD4000.BCS~ ~override~ DECOMPILE_AND_PATCH BEGIN - REPLACE_TEXTUALLY ~\(AddAreaFlag(NOTRAVEL)\)~ ~\1 - RemoveWorldmapAreaFlag("BD5000",6) - RemoveWorldmapAreaFlag("BD7400",6)~ + SPRINT textToReplace ~AddAreaFlag(NOTRAVEL)~ + COUNT_REGEXP_INSTANCES ~%textToReplace%~ num_matches + PATCH_IF (num_matches > 0) BEGIN + REPLACE_TEXTUALLY ~\(%textToReplace%\)~ ~AddWorldmapAreaFlag("BD5000",6) + AddWorldmapAreaFlag("BD7400",6) + AddWorldmapAreaFlag("BD2000",6) + \1~ + PATCH_PRINT ~Patching: %num_matches% matches found in %SOURCE_FILESPEC% for REPLACE_TEXTUALLY: %textToReplace%~ + END ELSE BEGIN + PATCH_WARN ~WARNING: could not find %textToReplace% in %SOURCE_FILESPEC%~ + END END BUT_ONLY @@ -1728,7 +1946,7 @@ THEN RESPONSE #100 RemoveAreaFlag(NOTRAVEL) ActionOverride("BDMORRUK",DestroySelf()) //Troll - ActionOverride("BDTHRUDD",DestroySelf()) //Troll + //ActionOverride("BDTHRUDD",DestroySelf()) //Troll - disabled via local script ActionOverride("BDTOLIKS",DestroySelf()) //Troll ActionOverride("BDULORI",DestroySelf()) //Troll RemoveMapNote([825.1280],269074) //Crusader Commander @@ -1768,6 +1986,8 @@ THEN RESPONSE #100 TriggerActivation("TransBD4100",TRUE) TriggerActivation("BD5200Entrance",TRUE) + SoundActivate("SS_Soldier",FALSE) + ActionOverride("BDAUN",DestroySelf()) //Aun Argent ActionOverride("BDDAZZO",DestroySelf()) //Sergeant Dazzo SetGlobal("K#CleanAreaBG2","BD4300",1) Continue() @@ -1797,6 +2017,8 @@ IF THEN RESPONSE #100 RemoveMapNote([4304.1939],267714) //Crusader Supply Depot + ActionOverride("BDFLOSS",DestroySelf()) //Floss + ActionOverride("BDGURGLE",DestroySelf()) //Gurgle SetGlobal("K#CleanAreaBG2","BD5100",1) Continue() END diff --git a/EET/lib/bg1_CRE.tph b/EET/lib/bg1_CRE.tph index f17e42ff..9288af93 100644 --- a/EET/lib/bg1_CRE.tph +++ b/EET/lib/bg1_CRE.tph @@ -5,18 +5,23 @@ ///// \\\\\ COPY_EXISTING ~addy.cre~ ~override~ + ~andout.cre~ ~override~ + ~binkos.cre~ ~override~ ~brenna.cre~ ~override~ ~caedmo.cre~ ~override~ ~elmin3.cre~ ~override~ + ~hobgo5.cre~ ~override~ ~ivanne.cre~ ~override~ ~jonavi.cre~ ~override~ ~kaella.cre~ ~override~ ~karan1.cre~ ~override~ - ~lamalh.cre~ ~override~ //only this CRE is missing DV in vanilla BG:EE (other are checked in case some mods sets different DV as they are not assigned in vanilla BG1/Tutu) + ~lamalh.cre~ ~override~ ~parda1.cre~ ~override~ ~slavfree.cre~ ~override~ + ~sprat.cre~ ~override~ ~sorrel.cre~ ~override~ ~sugar.cre~ ~override~ + ~wilco.cre~ ~override~ READ_ASCII 0x280 "DV" (32) NULL PATCH_IF ((NOT ~%DV%~ STR_EQ ~~) AND (NOT ~%DV%~ STR_EQ ~%SOURCE_RES%~) AND (NOT ~%DV%~ STR_EQ ~None~)) BEGIN PATCH_WARN ~WARNING: %SOURCE_FILE% uses wrong DV. Patching %DV% -> %SOURCE_FILE%.~ diff --git a/EET/lib/bg2_2DA.tph b/EET/lib/bg2_2DA.tph index c75b63cd..85da23e8 100644 --- a/EET/lib/bg2_2DA.tph +++ b/EET/lib/bg2_2DA.tph @@ -15,13 +15,13 @@ ACTION_DEFINE_ASSOCIATIVE_ARRAY table_2DA_kitStrref BEGIN MATCH3 => strref3 END -COPY - ~EET/temp/array/KITLIST.2DA~ ~EET/temp/array~ +COPY + ~EET/temp/array/KITLIST.2DA~ ~EET/temp/array~ PRETTY_PRINT_2DA COUNT_2DA_ROWS 3 "cntrow" FOR (cnt = 1; cnt < "%cntrow%"; cnt = cnt + 1) BEGIN READ_2DA_ENTRY cnt 0 3 "kit_num" READ_2DA_ENTRY cnt 1 3 "name" - PATCH_IF (NOT FILE_CONTAINS_EVALUATED (~KITLIST.2DA~ ~^[0-9]+[ ]+%name%[ ]~)) BEGIN + PATCH_IF (NOT FILE_CONTAINS_EVALUATED (~KITLIST.2DA~ ~^[0-9]+[ ]+%name% ~)) BEGIN REPLACE_EVALUATE CASE_INSENSITIVE ~^[0-9]+[ ]+%name%[ ]+\([0-9\*\-]+\)[ ]+\([0-9\*\-]+\)[ ]+\([0-9\*\-]+\)[ ]+\(.+\)[ ]+[A-Za-z0-9]+$~ BEGIN PATCH_PRINT ~Patching KITLIST.2DA: %name%~ SET kit_index = kit_index + 1 @@ -35,17 +35,17 @@ COPY - ~EET/temp/array/KITLIST.2DA~ ~EET/temp/array~ END END INNER_ACTION BEGIN - COPY_EXISTING - ~KIT.IDS~ ~override~ + COPY_EXISTING - ~KIT.IDS~ ~.../KIT.IDS~ PRETTY_PRINT_2DA - COUNT_REGEXP_INSTANCES ~ %name%$~ num_matches + COUNT_REGEXP_INSTANCES ~ %name%\([%newline%]+\)~ num_matches PATCH_IF (num_matches > 0) BEGIN - REPLACE_EVALUATE CASE_INSENSITIVE ~^\([A-Za-z0-9]+\)[ ]+%name%$~ BEGIN + REPLACE_EVALUATE CASE_INSENSITIVE ~^\([A-Za-z0-9]+\)[ ]+%name%\([%newline%]+\)~ BEGIN SPRINT ids_index_sprint ~%MATCH1%~ INNER_PATCH_SAVE ids_index_sprint ~%ids_index_sprint%~ BEGIN REPLACE_TEXTUALLY ~^0x~ ~0x0000~ END PATCH_PRINT ~%name% KITIDS = %ids_index_sprint%~ - END ~%MATCH1% %name%~ + END ~%MATCH1% %name%%MATCH2%~ END ELSE BEGIN SPRINT ids_index_sprint ~~ PATCH_WARN ~WARNING: %name% kit was not found in kit.ids~ @@ -70,14 +70,16 @@ BUT_ONLY ACTION_FOR_EACH file IN CLASWEAP ABCLASRQ ABCLSMOD ABDCDSRQ ABDCSCRQ ALIGNMNT DUALCLAS KITTABLE BACKSTAB CLSWPBON THIEFSKL CLSRCREQ SNEAKATT CRIPPSTR BEGIN COPY_EXISTING ~%file%.2DA~ ~override~ + //REPLACE_TEXTUALLY ~^ARCHER ~ ~FERALAN ~ + //REPLACE_TEXTUALLY ~^WILD_MAGE ~ ~WILDMAGE ~ PRETTY_PRINT_2DA BUT_ONLY - COPY - ~EET/temp/array/%file%.2DA~ ~EET/temp/array~ + COPY + ~EET/temp/array/%file%.2DA~ ~EET/temp/array~ PRETTY_PRINT_2DA COUNT_2DA_ROWS 3 "cntrow" FOR (cnt = 1; cnt < cntrow; cnt = cnt + 1) BEGIN READ_2DA_ENTRY cnt 0 3 "name" - PATCH_IF (NOT FILE_CONTAINS_EVALUATED (~%SOURCE_RES%.2DA~ ~^%name%[ ]~)) BEGIN + PATCH_IF (NOT FILE_CONTAINS_EVALUATED (~%SOURCE_RES%.2DA~ ~^%name% ~)) BEGIN REPLACE_EVALUATE CASE_INSENSITIVE ~^%name%[ ]+\(.+\)$~ BEGIN PATCH_PRINT ~Patching %SOURCE_RES%.2DA: %name%~ INNER_ACTION BEGIN @@ -97,14 +99,17 @@ END ACTION_FOR_EACH file IN FALLEN LUABBR NUMWSLOT TRAPLIMT HPCLASS BEGIN COPY_EXISTING ~%file%.2DA~ ~override~ + //REPLACE_TEXTUALLY ~^ARCHER ~ ~FERALAN ~ + //REPLACE_TEXTUALLY ~^WILD_MAGE ~ ~WILDMAGE ~ PRETTY_PRINT_2DA BUT_ONLY - COPY - ~EET/temp/array/%file%.2DA~ ~EET/temp/array~ + COPY + ~EET/temp/array/%file%.2DA~ ~EET/temp/array~ PRETTY_PRINT_2DA + REPLACE_TEXTUALLY ~^ARCHER ~ ~FERALAN ~ COUNT_2DA_ROWS 2 "cntrow" FOR (cnt = 1; cnt < cntrow; cnt = cnt + 1) BEGIN READ_2DA_ENTRY cnt 0 2 "name" - PATCH_IF (NOT FILE_CONTAINS_EVALUATED (~%SOURCE_RES%.2DA~ ~^%name%[ ]~)) BEGIN + PATCH_IF (NOT FILE_CONTAINS_EVALUATED (~%SOURCE_RES%.2DA~ ~^%name% ~)) BEGIN REPLACE_EVALUATE CASE_INSENSITIVE ~^%name%[ ]+\(.+\)$~ BEGIN PATCH_PRINT ~Patching %SOURCE_RES%.2DA: %name%~ INNER_ACTION BEGIN @@ -129,26 +134,20 @@ ACTION_FOR_EACH file IN WEAPPROF CLASCOLR CLASISKL THIEFSCL CLASTHAC BEGIN REPLACE_TEXTUALLY ~^ $~ ~~ COUNT_2DA_ROWS 3 "cntrow" BUT_ONLY - COPY - ~EET/temp/array/%file%.2DA~ ~EET/temp/array~ + COPY + ~EET/temp/array/%file%.2DA~ ~EET/temp/array~ PRETTY_PRINT_2DA - REPLACE_TEXTUALLY ~$~ ~ ~ COUNT_2DA_COLS "cntcol" FOR (cnt = 1; cnt < (cntcol - 1); cnt = cnt + 1) BEGIN READ_2DA_ENTRY 0 cnt 3 "name" - PATCH_IF (NOT FILE_CONTAINS_EVALUATED (~%SOURCE_RES%.2DA~ ~[ ]%name%[ ]~)) BEGIN + PATCH_IF (NOT FILE_CONTAINS_EVALUATED (~%SOURCE_RES%.2DA~ ~ %name% ~)) BEGIN PATCH_PRINT ~Patching %SOURCE_RES%.2DA: %name%~ - SET updated = 0 - SPRINT col ~dummy_entry dummy_entry %name%~ + SPRINT col ~%name%~ FOR (cnt2 = 1; cnt2 < cntrow; cnt2 = cnt2 + 1) BEGIN READ_2DA_ENTRY cnt2 (cnt + 1) 3 "add" SPRINT col ~%col% %add%~ END INNER_ACTION BEGIN - APPEND_COL ~%SOURCE_RES%.2DA~ ~%col%~ - OUTER_PATCH_SAVE ~col~ ~%col%~ BEGIN //for easier DEBUG reading - REPLACE_TEXTUALLY ~dummy_entry ~ ~~ - REPLACE_TEXTUALLY ~[ ]+~ ~ ~ - END + APPEND_COL ~%SOURCE_RES%.2DA~ ~dummy_entry dummy_entry %col%~ PRINT ~%col% column appended to %SOURCE_FILE%~ END END @@ -189,76 +188,100 @@ END ///// CHARSND.2DA \\\\\ ///// \\\\\ -ACTION_DEFINE_ASSOCIATIVE_ARRAY table_2DA_charsnd BEGIN - FEMALE => BGMAINF +ACTION_DEFINE_ASSOCIATIVE_ARRAY table_2DA_charsnd_name BEGIN MALE => BGMAINM + FEMALE => BGMAINF FEMALE1 => BGFEML1 FEMALE2 => BGFEML2 FEMALE3 => BGFEML3 FEMALE4 => BGFEML4 FEMALE5 => BGFEML5 FEMALE6 => BGFEML6 + FEMALE7 => BGFEML7 + FEMALE8 => BGFEML8 MALE1 => BGMALE1 MALE2 => BGMALE2 MALE3 => BGMALE3 MALE4 => BGMALE4 MALE5 => BGMALE5 MALE6 => BGMALE6 + MALE7 => BGMALE7 + MALE8 => BGMALE8 END <<<<<<<< .../CHARSND.txt -%index2% +%index% %append% >>>>>>>> -COPY - ~EET/temp/array/CHARSND.2DA~ ~EET/temp/array~ +COPY_EXISTING ~CHARSND.2DA~ ~override~ + PRETTY_PRINT_2DA +BUT_ONLY +COPY + ~EET/temp/array/CHARSND.2DA~ ~EET/temp/array~ + PRETTY_PRINT_2DA + COUNT_2DA_ROWS 3 "cntrow" + FOR (cnt = 1; cnt < cntrow; cnt = cnt + 1) BEGIN + READ_2DA_ENTRY cnt 0 3 "index" + PATCH_IF (NOT FILE_CONTAINS_EVALUATED (~%SOURCE_RES%.2DA~ ~^%index% ~)) BEGIN + DEFINE_ASSOCIATIVE_ARRAY table_2DA_charsnd_missing BEGIN ~%index%~ => ~~ END + END + END +COPY_EXISTING ~CHARSND.2DA~ ~override~ + //append missing index rows + COUNT_2DA_ROWS 3 "cntrow" COUNT_2DA_COLS "cntcol" - COUNT_2DA_ROWS (cntcol - 1) "cntrow" - READ_2DA_ENTRIES_NOW table_charsnd (cntcol - 1) - INNER_ACTION BEGIN - COPY_EXISTING ~CHARSND.2DA~ ~override~ - PRETTY_PRINT_2DA - COUNT_2DA_COLS "cntcol2" - COUNT_2DA_ROWS cntcol2 "cntrow2" - FOR (cnt1 = 0 ; cnt1 < cntcol2 - 1 ; cnt1 = cnt1 + 1) BEGIN - INNER_ACTION BEGIN - COPY - ~.../CHARSND.txt~ ~.../CHARSND.txt~ - REPLACE_TEXTUALLY ~\(index2.+\)~ ~\1 -1~ - END + SPRINT append ~~ + FOR (cnt = 1; cnt < cntcol; cnt = cnt + 1) BEGIN + INNER_PATCH_SAVE append ~%append%~ BEGIN + REPLACE_TEXTUALLY ~$~ ~ -1~ + END + END + PHP_EACH table_2DA_charsnd_missing AS index => dummy BEGIN + APPEND_FILE ~.../CHARSND.txt~ EVALUATE_BUFFER + END + //generate index array in correct order + FOR (cnt = 1; cnt < cntrow; cnt = cnt + 1) BEGIN + READ_2DA_ENTRY cnt 0 3 "index" + DEFINE_ASSOCIATIVE_ARRAY table_2DA_charsnd_index BEGIN ~%index%~ => ~-1~ END + END + PRETTY_PRINT_2DA + REPLACE_TEXTUALLY ~$~ ~ ~ + REPLACE_TEXTUALLY ~^ $~ ~~ +BUT_ONLY +COPY + ~EET/temp/array/CHARSND.2DA~ ~EET/temp/array~ + PRETTY_PRINT_2DA + COUNT_2DA_ROWS 3 "cntrow" + COUNT_2DA_COLS "cntcol" + FOR (cnt = 0; cnt < (cntcol - 1); cnt = cnt + 1) BEGIN + READ_2DA_ENTRY 0 cnt 3 "name" + TO_UPPER name + PATCH_IF (VARIABLE_IS_SET $table_2DA_charsnd_name(~%name%~)) BEGIN + TEXT_SPRINT name $table_2DA_charsnd_name(~%name%~) + END + PATCH_IF (NOT FILE_CONTAINS_EVALUATED (~%SOURCE_RES%.2DA~ ~ %name% ~)) BEGIN + PATCH_PRINT ~Patching %SOURCE_RES%.2DA: %name%~ + PHP_EACH table_2DA_charsnd_index AS index => strref BEGIN + DEFINE_ASSOCIATIVE_ARRAY table_2DA_charsnd_index BEGIN ~%index%~ => ~-1~ END //reset array END - BUT_ONLY - OUTER_FOR (cnt2 = 0 ; cnt2 < cntcol - 1 ; cnt2 = cnt2 + 1) BEGIN - COPY_EXISTING ~CHARSND.2DA~ ~override~//need to be copied each time to reload data for FILE_CONTAINS_EVALUATED - READ_2DA_ENTRY_FORMER table_charsnd 0 cnt2 "name" - PHP_EACH table_2DA_charsnd AS oldName => newName BEGIN - PATCH_IF ~%name%~ STR_EQ ~%oldName%~ BEGIN - SPRINT name ~%newName%~ - END - END - PATCH_IF (NOT FILE_CONTAINS_EVALUATED (~CHARSND.2DA~ ~^%name%~)) BEGIN - PATCH_PRINT ~Patching CHARSND.2DA: %name% subtitles~ - REPLACE_TEXTUALLY ~^\([ ]+MALE .+\)$~ ~\1 %name%~ - FOR (cnt3 = 0 ; cnt3 < cntrow2 ; cnt3 = cnt3 + 1) BEGIN - READ_2DA_ENTRY cnt3 0 cntcol2 "index1" - PATCH_IF (NOT FILE_CONTAINS_EVALUATED (~EET/temp/array/CHARSND.2DA~ ~^%index1%~)) BEGIN - REPLACE_TEXTUALLY ~^\(%index1% .+\)$~ ~\1 -1~ - END - END - FOR (cnt4 = 1; cnt4 < cntrow ; cnt4 = cnt4 + 1) BEGIN - READ_2DA_ENTRY_FORMER table_charsnd cnt4 0 "index2" - READ_2DA_ENTRY_FORMER table_charsnd cnt4 (cnt2 + 1) "strref" - PATCH_IF (NOT FILE_CONTAINS_EVALUATED (~CHARSND.2DA~ ~^%index2%~)) BEGIN - APPEND_FILE_EVALUATE ~.../CHARSND.txt~ - END - LPF ~EET_strref~ INT_VAR str = strref RET str END - REPLACE_TEXTUALLY ~^\(%index2% .+\)$~ ~\1 %str%~ - END + FOR (cnt2 = 1; cnt2 < cntrow; cnt2 = cnt2 + 1) BEGIN + READ_2DA_ENTRY cnt2 0 3 "index" + READ_2DA_ENTRY cnt2 (cnt + 1) 3 "strref" + LPF ~EET_strref~ INT_VAR str = strref RET str END + DEFINE_ASSOCIATIVE_ARRAY table_2DA_charsnd_index BEGIN ~%index%~ => ~%str%~ END + END + INNER_ACTION BEGIN + OUTER_SPRINT col ~%name%~ + ACTION_PHP_EACH table_2DA_charsnd_index AS index => strref BEGIN + OUTER_SPRINT col ~%col% %strref%~ END - BUT_ONLY + APPEND_COL ~%SOURCE_RES%.2DA~ ~dummy_entry dummy_entry %col%~ + PRINT ~%col% column appended to %SOURCE_FILE%~ + END END - COPY_EXISTING ~CHARSND.2DA~ ~override~ - PRETTY_PRINT_2DA - BUT_ONLY END +COPY_EXISTING ~%SOURCE_RES%.2DA~ ~override~ + REPLACE_TEXTUALLY ~dummy_entry~ ~~ + PRETTY_PRINT_2DA +BUT_ONLY ///// \\\\\ ///// CLEARXXX.2DA \\\\\ @@ -1048,32 +1071,34 @@ BUT_ONLY ///// SPAWNGRP.2DA \\\\\ ///// \\\\\ +COPY_EXISTING ~SPAWNGRP.2DA~ ~override~ + PRETTY_PRINT_2DA + REPLACE_TEXTUALLY ~$~ ~ ~ + REPLACE_TEXTUALLY ~^ $~ ~~ +BUT_ONLY COPY + ~EET/temp/array/SPAWNGRP.2DA~ ~EET/temp/array~ PRETTY_PRINT_2DA - REPLACE_TEXTUALLY ~^[ ]*RDGnoll~ ~dummy RDGnoll~ + COUNT_2DA_ROWS 3 "cntrow" COUNT_2DA_COLS "cntcol" - FOR (cnt = 1; cnt < "%cntcol%"; cnt = cnt + 1) BEGIN - SET noupdate = 0 - FOR (i = 1; i <= 10; i = i + 1) BEGIN - READ_2DA_ENTRY (i - 1) cnt 3 "row%i%" - END - INNER_ACTION BEGIN - COPY_EXISTING ~%SOURCE_RES%.2DA~ ~override~ - COUNT_2DA_COLS "cntcol2" - FOR (cnt2 = 0; cnt2 < ("%cntcol2%" - 1); cnt2 = cnt2 + 1) BEGIN - READ_2DA_ENTRY 0 cnt2 3 "compareWith" - PATCH_IF ("%row1%" STR_EQ "%compareWith%") BEGIN - SET noupdate = 1 - END - END - BUT_ONLY - ACTION_IF (noupdate = 0) BEGIN - APPEND_COL ~%SOURCE_RES%.2DA~ ~%row1% %row2% %row3% %row4% %row5% %row6% %row7% %row8% %row9% %row10%~ - PRINT ~%row1% %row2% %row3% %row4% %row5% %row6% %row7% %row8% %row9% %row10% column appended to %SOURCE_FILESPEC%~ + FOR (cnt = 0; cnt < (cntcol - 1); cnt = cnt + 1) BEGIN + READ_2DA_ENTRY 0 cnt 3 "name" + TO_UPPER name + PATCH_IF (NOT FILE_CONTAINS_EVALUATED (~%SOURCE_RES%.2DA~ ~^[ ]+.* %name% ~)) BEGIN + PATCH_PRINT ~Patching %SOURCE_RES%.2DA: %name%~ + SPRINT col ~%name%~ + FOR (cnt2 = 1; cnt2 < cntrow; cnt2 = cnt2 + 1) BEGIN + READ_2DA_ENTRY cnt2 (cnt + 1) 3 "add" + SPRINT match ~%add%~ SPRINT res ~cre~ LPM EET_PCU_outer_res PATCH_IF (NOT ~%file%~ STR_EQ ~%match%~) BEGIN SET_2DA_ENTRY cnt2 (cnt + 1) 3 "%match%" SPRINT add ~%match%~ END + SPRINT col ~%col% %add%~ + END + INNER_ACTION BEGIN + APPEND_COL ~%SOURCE_RES%.2DA~ ~dummy_entry dummy_entry %col%~ + PRINT ~%col% column appended to %SOURCE_FILE%~ END END END COPY_EXISTING ~%SOURCE_RES%.2DA~ ~override~ + REPLACE_TEXTUALLY ~dummy_entry~ ~~ PRETTY_PRINT_2DA BUT_ONLY @@ -1152,11 +1177,12 @@ BUT_ONLY COPY_EXISTING ~TOOLTIP.2DA~ ~override~ PRETTY_PRINT_2DA REPLACE_TEXTUALLY ~$~ ~ ~ + REPLACE_TEXTUALLY ~^ $~ ~~ BUT_ONLY INCLUDE ~EET/lib/tooltip.tpa~ -COPY - ~EET/temp/array/TOOLTIP.2DA~ ~EET/temp/array~ +COPY + ~EET/temp/array/TOOLTIP.2DA~ ~EET/temp/array~ PRETTY_PRINT_2DA COUNT_2DA_ROWS 3 "cntrow" COUNT_2DA_COLS "cntcol" @@ -1164,7 +1190,7 @@ COPY - ~EET/temp/array/TOOLTIP.2DA~ ~EET/temp/array~ SPRINT strings ~~ READ_2DA_ENTRY cnt 0 3 "col1" SPRINT match ~%col1%~ SPRINT res ~itm~ LPM EET_PCU_outer_res PATCH_IF (NOT ~%col1%~ STR_EQ ~%match%~) BEGIN SET_2DA_ENTRY cnt 0 3 "%match%" SPRINT col1 ~%match%~ END - PATCH_IF (NOT FILE_CONTAINS_EVALUATED (~TOOLTIP.2DA~ ~^%col1%[ ]~)) BEGIN + PATCH_IF (NOT FILE_CONTAINS_EVALUATED (~TOOLTIP.2DA~ ~^%col1% ~)) BEGIN FOR (cnt2 = 1; cnt2 < cntcol; cnt2 = cnt2 + 1) BEGIN READ_2DA_ENTRY cnt cnt2 3 "colx" LPF ~EET_strref~ INT_VAR str = colx RET str END @@ -1770,28 +1796,21 @@ COPY_EXISTING ~REPUTATI.2DA~ ~override~ REPLACE_TEXTUALLY ~^ $~ ~~ COUNT_2DA_ROWS 3 "cntrow" BUT_ONLY - -COPY - ~EET/temp/array/REPUTATI.2DA~ ~EET/temp/array~ +COPY + ~EET/temp/array/REPUTATI.2DA~ ~EET/temp/array~ ~EET/temp/2da/SODREPUT.2DA~ ~EET/temp/2da~ PRETTY_PRINT_2DA - REPLACE_TEXTUALLY ~$~ ~ ~ COUNT_2DA_COLS "cntcol" FOR (cnt = 1; cnt < (cntcol - 1); cnt = cnt + 1) BEGIN READ_2DA_ENTRY 0 cnt 3 "name" - PATCH_IF (NOT FILE_CONTAINS_EVALUATED (~REPUTATI.2DA~ ~[ ]%name%[ ]~)) BEGIN + PATCH_IF (NOT FILE_CONTAINS_EVALUATED (~REPUTATI.2DA~ ~ %name% ~)) BEGIN PATCH_PRINT ~Patching REPUTATI.2DA: %name%~ - SET updated = 0 - SPRINT col ~dummy_entry dummy_entry %name%~ + SPRINT col ~%name%~ FOR (cnt2 = 1; cnt2 < cntrow; cnt2 = cnt2 + 1) BEGIN READ_2DA_ENTRY cnt2 (cnt + 1) 3 "add" SPRINT col ~%col% %add%~ END INNER_ACTION BEGIN - APPEND_COL ~REPUTATI.2DA~ ~%col%~ - OUTER_PATCH_SAVE ~col~ ~%col%~ BEGIN //for easier DEBUG reading - REPLACE_TEXTUALLY ~dummy_entry ~ ~~ - REPLACE_TEXTUALLY ~[ ]+~ ~ ~ - END + APPEND_COL ~REPUTATI.2DA~ ~dummy_entry dummy_entry %col%~ PRINT ~%col% column appended to %SOURCE_FILE%~ END END diff --git a/EET/lib/bg2_BCS.tph b/EET/lib/bg2_BCS.tph index 7d290405..afc7ea6f 100644 --- a/EET/lib/bg2_BCS.tph +++ b/EET/lib/bg2_BCS.tph @@ -2083,7 +2083,7 @@ IF THEN RESPONSE #100 SetGlobal("K#NewGame","AR0602",1) - SetGlobal("DREAM","GLOBAL",7) + SetGlobal("DREAM","GLOBAL",-1) SetGlobal("ENDOFBG1","GLOBAL",2) SetGlobal("NEWGAME_SOA","GLOBAL",1) //SetGlobal("K#temp","GLOBAL",364) @@ -3003,15 +3003,25 @@ IF THEN RESPONSE #100 SetGlobal("K#NewGame","AR4000",1) - SetGlobal("DREAM","GLOBAL",7) + SetGlobal("DREAM","GLOBAL",-1) + SetGlobal("XPGiven","GLOBAL",0) + SetGlobal("INTOB","GLOBAL",1) + SetGlobal("StartMP","GLOBAL",1) + SetGlobal("HadEllesimeDream1","GLOBAL",1) + SetGlobal("HadImoenDream1","GLOBAL",1) + SetGlobal("HadSlayerDream","GLOBAL",1) + SetGlobal("HadJonDream1","GLOBAL",1) + SetGlobal("HadJonDream2","GLOBAL",1) + SetGlobal("HadEllesimeDream2","GLOBAL",1) SetGlobal("ENDOFBG1","GLOBAL",2) - SetGlobal("ENDOFBG2","GLOBAL",2) SetGlobal("SPRITE_IS_DEADYOSHIMO","GLOBAL",1) SetGlobal("NEWGAME_TOB","GLOBAL",1) StartMovie("INTRO") RemoveWorldmapAreaFlag("AR0020",ENABLED) //Reveal from linked area ReallyForceSpellRES("K#REMBHA",Player1) TakeItemListPartyNum("K#PLOT",99) + GiveItemCreate("BAG19",Player1,1,0,0) + GiveItemCreate("AMUL27",Player1,1,0,0) Continue() END @@ -3021,15 +3031,26 @@ IF THEN RESPONSE #100 SetGlobal("K#NewGame","AR4000",1) + SetGlobal("XPGiven","GLOBAL",0) + SetGlobal("INTOB","GLOBAL",1) + SetGlobal("StartMP","GLOBAL",1) + SetGlobal("HadEllesimeDream1","GLOBAL",1) + SetGlobal("HadImoenDream1","GLOBAL",1) + SetGlobal("HadSlayerDream","GLOBAL",1) + SetGlobal("HadJonDream1","GLOBAL",1) + SetGlobal("HadJonDream2","GLOBAL",1) + SetGlobal("HadEllesimeDream2","GLOBAL",1) SetGlobal("ENDOFBG1","GLOBAL",2) - SetGlobal("ENDOFBG2","GLOBAL",2) SetGlobal("SPRITE_IS_DEADYOSHIMO","GLOBAL",1) + SetGlobal("SPRITE_IS_DEADSAREVOK","GLOBAL",0) + ChangeGender("Edwin",MALE) ReallyForceSpellRES("K#FAMREM",Player1) ReallyForceSpellRES("K#FAMREM",Player2) ReallyForceSpellRES("K#FAMREM",Player3) ReallyForceSpellRES("K#FAMREM",Player4) ReallyForceSpellRES("K#FAMREM",Player5) ReallyForceSpellRES("K#FAMREM",Player6) + GiveItemCreate("AMUL27",Player1,1,0,0) Continue() END >>>>>>>> @@ -3460,11 +3481,16 @@ EXTEND_TOP ~OH8000.BCS~ ~.../OH8000-et.baf~ /////existing in BG2:EE and BG:EE, also used in BG2:EE \\\\\ ///// \\\\\ +//scripts imported from BG:EE +//BEAR.BCS +//CBEAR.BCS +//CCRAWLER.BCS + //different but no changes needed?: //CTCK.BCS //GTCK.BCS //ICMYC01.BCS -//SLIFIS01.BCS//no changed, only different StrRef +//SLIFIS01.BCS//just different StrRef //TROLIC01.BCS //WTATTWAT.BCS @@ -3497,54 +3523,8 @@ COPY_EXISTING ~ANKHEG.BCS~ ~override~ END BUT_ONLY -//BEAR.BCS -COPY_EXISTING ~BEAR.BCS~ ~override~ - DECOMPILE_AND_PATCH BEGIN - SPRINT textToReplace ~!See(\[PC\.0\.0\.CLERIC_RANGER\])~ - COUNT_REGEXP_INSTANCES ~%textToReplace%~ num_matches - PATCH_IF (num_matches > 0) BEGIN - REPLACE_TEXTUALLY ~%textToReplace%~ ~!See([PC.0.0.CLERIC_RANGER]) - GlobalLT("ENDOFBG1","GLOBAL",2)~ - PATCH_PRINT ~Patching: %num_matches% matches found in %SOURCE_FILESPEC% for REPLACE_TEXTUALLY: %textToReplace%~ - END ELSE BEGIN - PATCH_WARN ~WARNING: could not find %textToReplace% in %SOURCE_FILESPEC%~ - END - - SPRINT textToReplace ~RunAwayFrom(LastAttackerOf(Myself),200)~ - COUNT_REGEXP_INSTANCES ~%textToReplace%~ num_matches - PATCH_IF (num_matches > 0) BEGIN - REPLACE_TEXTUALLY ~%textToReplace%~ ~RunAwayFromNoLeaveArea(LastAttackerOf(Myself),200)~ - PATCH_PRINT ~Patching: %num_matches% matches found in %SOURCE_FILESPEC% for REPLACE_TEXTUALLY: %textToReplace%~ - END ELSE BEGIN - PATCH_WARN ~WARNING: could not find %textToReplace% in %SOURCE_FILESPEC%~ - END - END -BUT_ONLY - -<<<<<<<< .../BEAR-et.baf -IF - Range([GOODCUTOFF],7) - Allegiance(Myself,NEUTRAL) - GlobalLT("ENDOFBG1","GLOBAL",2) -THEN - RESPONSE #100 - Enemy() -END - -IF - AttackedBy([ANYONE],DEFAULT) - Allegiance(Myself,NEUTRAL) - GlobalLT("ENDOFBG1","GLOBAL",2) -THEN - RESPONSE #100 - Enemy() -END ->>>>>>>> - -EXTEND_TOP ~BEAR.BCS~ ~.../BEAR-et.baf~ - -//CBEAR.BCS -COPY_EXISTING ~CBEAR.BCS~ ~override~ +//BLBEAR.BCS +COPY_EXISTING ~BLBEAR.BCS~ ~override~ DECOMPILE_AND_PATCH BEGIN SPRINT textToReplace ~RunAwayFrom(LastAttackerOf(Myself),75)~ COUNT_REGEXP_INSTANCES ~%textToReplace%~ num_matches @@ -3557,57 +3537,6 @@ COPY_EXISTING ~CBEAR.BCS~ ~override~ END BUT_ONLY -//CCRAWLER.BCS -<<<<<<<< .../CCRAWLER-et.baf -IF - AreaCheck("BG0226") - Dead("SewerOgre") // SewerOgre - Allegiance(Myself,NEUTRAL) -THEN - RESPONSE #100 - ChangeEnemyAlly(Myself,ENEMY) -END - -IF - AreaCheck("BG0226") - See("SewerOgre") // SewerOgre - !Dead("SewerOgre") // SewerOgre - Allegiance("SewerOgre",NEUTRAL) // SewerOgre - Allegiance(Myself,ENEMY) -THEN - RESPONSE #100 - ChangeEnemyAlly(Myself,NEUTRAL) -END - -IF - AreaCheck("BG0226") - See("SewerOgre") // SewerOgre - !Dead("SewerOgre") // SewerOgre - Allegiance("SewerOgre",ENEMY) // SewerOgre - Allegiance(Myself,NEUTRAL) -THEN - RESPONSE #100 - ChangeEnemyAlly(Myself,ENEMY) -END ->>>>>>>> - -EXTEND_TOP ~CCRAWLER.BCS~ ~.../CCRAWLER-et.baf~ - -//CUTTUTOR.BCS -COPY_EXISTING ~CUTTUTOR.BCS~ ~override~ - DECOMPILE_AND_PATCH BEGIN - SPRINT textToReplace ~EndCutSceneMode()~ - COUNT_REGEXP_INSTANCES ~%textToReplace%~ num_matches - PATCH_IF (num_matches > 0) BEGIN - REPLACE_TEXTUALLY ~%textToReplace%~ ~SetGlobal("Deactivation0015","TU0015",2) - EndCutSceneMode()~ - PATCH_PRINT ~Patching: %num_matches% matches found in %SOURCE_FILESPEC% for REPLACE_TEXTUALLY: %textToReplace%~ - END ELSE BEGIN - PATCH_WARN ~WARNING: could not find %textToReplace% in %SOURCE_FILESPEC%~ - END - END -BUT_ONLY - //DEMGLASU.BCS COPY_EXISTING ~DEMGLASU.BCS~ ~override~ DECOMPILE_AND_PATCH BEGIN @@ -4208,7 +4137,7 @@ THEN END >>>>>>>> -ACTION_FOR_EACH script IN ANKHEG BEAR CCRAWLER CDRYAD DIREWOLF ETTERCAP GBASILSK GIBBER GNOLLF HAMA HOBGOBF KOBOLDF LBASILSK OGRE PRIEST1 PRIEST2 PRIEST3 PRIEST4 PRIEST5 PSPIDER WARDOG WDARSGT WDASIGHT WILDDOG WTARSGT WTASIGHT WYVERN XVART BEGIN +ACTION_FOR_EACH script IN ANKHEG CDRYAD DIREWOLF ETTERCAP GBASILSK GIBBER GNOLLF HAMA HOBGOBF KOBOLDF LBASILSK OGRE PRIEST1 PRIEST2 PRIEST3 PRIEST4 PRIEST5 PSPIDER WARDOG WDARSGT WDASIGHT WILDDOG WTARSGT WTASIGHT WYVERN XVART BEGIN EXTEND_TOP ~%script%.BCS~ ~.../STATE_PANIC-et.baf~ END diff --git a/EET/lib/bg2_IDS.tph b/EET/lib/bg2_IDS.tph index 4cb510b2..a2379411 100644 --- a/EET/lib/bg2_IDS.tph +++ b/EET/lib/bg2_IDS.tph @@ -110,6 +110,8 @@ COPY + ~EET/temp/array/ANISND.IDS~ ~EET/temp/array~ ///// \\\\\ ADD_AREA_TYPE BG1AREA //new entry added by EET +OUTER_SET dummy = IDS_OF_SYMBOL (AREATYPE BG1AREA) +PRINT ~BG1AREA = %BG1AREA% (%dummy%)~ ///// \\\\\ ///// GTIMES.IDS \\\\\ @@ -123,7 +125,7 @@ COPY + ~EET/temp/array/GTIMES.IDS~ ~EET/temp/array~ READ_2DA_ENTRY cnt 0 2 "col1" PATCH_IF IS_AN_INT col1 BEGIN READ_2DA_ENTRY cnt 1 2 "col2" - PATCH_IF (NOT FILE_CONTAINS_EVALUATED (~%SOURCE_RES%.IDS~ ~[ %TAB%]%col2%[ %TAB%]*$~)) BEGIN + PATCH_IF (NOT FILE_CONTAINS_EVALUATED (~%SOURCE_RES%.IDS~ ~[ %TAB%]%col2%[%newline%]+~)) BEGIN INNER_ACTION BEGIN APPEND ~%SOURCE_RES%.IDS~ ~%col1% %col2%~ PRINT ~%col1% %col2% appended to %SOURCE_FILE%~ @@ -150,7 +152,7 @@ COPY + ~EET/temp/array/KIT.IDS~ ~EET/temp/array~ READ_2DA_ENTRY cnt 0 2 "col1" PATCH_IF IS_AN_INT col1 BEGIN READ_2DA_ENTRY cnt 1 2 "col2" - PATCH_IF (NOT FILE_CONTAINS_EVALUATED (~%SOURCE_RES%.IDS~ ~[ %TAB%]%col2%[ %TAB%]*$~)) BEGIN + PATCH_IF (NOT FILE_CONTAINS_EVALUATED (~%SOURCE_RES%.IDS~ ~[ %TAB%]%col2%[%newline%]+~)) BEGIN INNER_ACTION BEGIN APPEND ~%SOURCE_RES%.IDS~ ~%ids_index_sprint% %col2%~ PRINT ~%ids_index_sprint% %col2% appended to %SOURCE_FILE%~ @@ -181,61 +183,61 @@ APPEND ~SONGLIST.IDS~ ~106 BPTHEME~ UNLESS ~ BPTHEME~ ///// SOUNDOFF.IDS \\\\\ ///// \\\\\ -APPEND ~SOUNDOFF.IDS~ ~9 BATTLE_CRY1~ UNLESS ~BATTLE_CRY1~ -APPEND ~SOUNDOFF.IDS~ ~10 BATTLE_CRY2~ UNLESS ~BATTLE_CRY2~ -APPEND ~SOUNDOFF.IDS~ ~11 BATTLE_CRY3~ UNLESS ~BATTLE_CRY3~ -APPEND ~SOUNDOFF.IDS~ ~12 BATTLE_CRY4~ UNLESS ~BATTLE_CRY4~ -APPEND ~SOUNDOFF.IDS~ ~13 BATTLE_CRY5~ UNLESS ~BATTLE_CRY5~ -APPEND ~SOUNDOFF.IDS~ ~14 ATTACK1~ UNLESS ~ATTACK1~ -APPEND ~SOUNDOFF.IDS~ ~15 ATTACK2~ UNLESS ~ATTACK2~ -APPEND ~SOUNDOFF.IDS~ ~16 ATTACK3~ UNLESS ~ATTACK3~ -APPEND ~SOUNDOFF.IDS~ ~17 ATTACK4~ UNLESS ~ATTACK4~ -APPEND ~SOUNDOFF.IDS~ ~26 SELECT_COMMON1~ UNLESS ~SELECT_COMMON1~ -APPEND ~SOUNDOFF.IDS~ ~27 SELECT_COMMON2~ UNLESS ~SELECT_COMMON2~ -APPEND ~SOUNDOFF.IDS~ ~28 SELECT_COMMON3~ UNLESS ~SELECT_COMMON3~ -APPEND ~SOUNDOFF.IDS~ ~29 SELECT_COMMON4~ UNLESS ~SELECT_COMMON4~ -APPEND ~SOUNDOFF.IDS~ ~30 SELECT_COMMON5~ UNLESS ~SELECT_COMMON5~ -APPEND ~SOUNDOFF.IDS~ ~31 SELECT_COMMON6~ UNLESS ~SELECT_COMMON6~ -APPEND ~SOUNDOFF.IDS~ ~32 SELECT_ACTION1~ UNLESS ~SELECT_ACTION1~ -APPEND ~SOUNDOFF.IDS~ ~33 SELECT_ACTION2~ UNLESS ~SELECT_ACTION2~ -APPEND ~SOUNDOFF.IDS~ ~34 SELECT_ACTION3~ UNLESS ~SELECT_ACTION3~ -APPEND ~SOUNDOFF.IDS~ ~35 SELECT_ACTION4~ UNLESS ~SELECT_ACTION4~ -APPEND ~SOUNDOFF.IDS~ ~36 SELECT_ACTION5~ UNLESS ~SELECT_ACTION5~ -APPEND ~SOUNDOFF.IDS~ ~37 SELECT_ACTION6~ UNLESS ~SELECT_ACTION6~ -APPEND ~SOUNDOFF.IDS~ ~38 SELECT_ACTION7~ UNLESS ~SELECT_ACTION7~ -APPEND ~SOUNDOFF.IDS~ ~39 INTERACTION1~ UNLESS ~INTERACTION1~ -APPEND ~SOUNDOFF.IDS~ ~40 INTERACTION2~ UNLESS ~INTERACTION2~ -APPEND ~SOUNDOFF.IDS~ ~41 INTERACTION3~ UNLESS ~INTERACTION3~ -APPEND ~SOUNDOFF.IDS~ ~42 INTERACTION4~ UNLESS ~INTERACTION4~ -APPEND ~SOUNDOFF.IDS~ ~43 INTERACTION5~ UNLESS ~INTERACTION5~ +APPEND ~SOUNDOFF.IDS~ ~9 BATTLE_CRY1~ UNLESS ~ BATTLE_CRY1~ +APPEND ~SOUNDOFF.IDS~ ~10 BATTLE_CRY2~ UNLESS ~ BATTLE_CRY2~ +APPEND ~SOUNDOFF.IDS~ ~11 BATTLE_CRY3~ UNLESS ~ BATTLE_CRY3~ +APPEND ~SOUNDOFF.IDS~ ~12 BATTLE_CRY4~ UNLESS ~ BATTLE_CRY4~ +APPEND ~SOUNDOFF.IDS~ ~13 BATTLE_CRY5~ UNLESS ~ BATTLE_CRY5~ +APPEND ~SOUNDOFF.IDS~ ~14 ATTACK1~ UNLESS ~ ATTACK1~ +APPEND ~SOUNDOFF.IDS~ ~15 ATTACK2~ UNLESS ~ ATTACK2~ +APPEND ~SOUNDOFF.IDS~ ~16 ATTACK3~ UNLESS ~ ATTACK3~ +APPEND ~SOUNDOFF.IDS~ ~17 ATTACK4~ UNLESS ~ ATTACK4~ +APPEND ~SOUNDOFF.IDS~ ~26 SELECT_COMMON1~ UNLESS ~ SELECT_COMMON1~ +APPEND ~SOUNDOFF.IDS~ ~27 SELECT_COMMON2~ UNLESS ~ SELECT_COMMON2~ +APPEND ~SOUNDOFF.IDS~ ~28 SELECT_COMMON3~ UNLESS ~ SELECT_COMMON3~ +APPEND ~SOUNDOFF.IDS~ ~29 SELECT_COMMON4~ UNLESS ~ SELECT_COMMON4~ +APPEND ~SOUNDOFF.IDS~ ~30 SELECT_COMMON5~ UNLESS ~ SELECT_COMMON5~ +APPEND ~SOUNDOFF.IDS~ ~31 SELECT_COMMON6~ UNLESS ~ SELECT_COMMON6~ +APPEND ~SOUNDOFF.IDS~ ~32 SELECT_ACTION1~ UNLESS ~ SELECT_ACTION1~ +APPEND ~SOUNDOFF.IDS~ ~33 SELECT_ACTION2~ UNLESS ~ SELECT_ACTION2~ +APPEND ~SOUNDOFF.IDS~ ~34 SELECT_ACTION3~ UNLESS ~ SELECT_ACTION3~ +APPEND ~SOUNDOFF.IDS~ ~35 SELECT_ACTION4~ UNLESS ~ SELECT_ACTION4~ +APPEND ~SOUNDOFF.IDS~ ~36 SELECT_ACTION5~ UNLESS ~ SELECT_ACTION5~ +APPEND ~SOUNDOFF.IDS~ ~37 SELECT_ACTION6~ UNLESS ~ SELECT_ACTION6~ +APPEND ~SOUNDOFF.IDS~ ~38 SELECT_ACTION7~ UNLESS ~ SELECT_ACTION7~ +APPEND ~SOUNDOFF.IDS~ ~39 INTERACTION1~ UNLESS ~ INTERACTION1~ +APPEND ~SOUNDOFF.IDS~ ~40 INTERACTION2~ UNLESS ~ INTERACTION2~ +APPEND ~SOUNDOFF.IDS~ ~41 INTERACTION3~ UNLESS ~ INTERACTION3~ +APPEND ~SOUNDOFF.IDS~ ~42 INTERACTION4~ UNLESS ~ INTERACTION4~ +APPEND ~SOUNDOFF.IDS~ ~43 INTERACTION5~ UNLESS ~ INTERACTION5~ APPEND ~SOUNDOFF.IDS~ ~44 INSULT1~ UNLESS ~ INSULT1~ APPEND ~SOUNDOFF.IDS~ ~45 INSULT2~ UNLESS ~ INSULT2~ APPEND ~SOUNDOFF.IDS~ ~46 INSULT3~ UNLESS ~ INSULT3~ APPEND ~SOUNDOFF.IDS~ ~47 COMPLIMENT1~ UNLESS ~ COMPLIMENT1~ APPEND ~SOUNDOFF.IDS~ ~48 COMPLIMENT2~ UNLESS ~ COMPLIMENT2~ APPEND ~SOUNDOFF.IDS~ ~49 COMPLIMENT3~ UNLESS ~ COMPLIMENT3~ -APPEND ~SOUNDOFF.IDS~ ~50 SPECIAL1~ UNLESS ~SPECIAL1~ -APPEND ~SOUNDOFF.IDS~ ~51 SPECIAL2~ UNLESS ~SPECIAL2~ -APPEND ~SOUNDOFF.IDS~ ~52 SPECIAL3~ UNLESS ~SPECIAL3~ -APPEND ~SOUNDOFF.IDS~ ~55 RESPONSE_TO_COMPLIMENT1~ UNLESS ~RESPONSE_TO_COMPLIMENT1~ -APPEND ~SOUNDOFF.IDS~ ~56 RESPONSE_TO_COMPLIMENT2~ UNLESS ~RESPONSE_TO_COMPLIMENT2~ -APPEND ~SOUNDOFF.IDS~ ~57 RESPONSE_TO_COMPLIMENT3~ UNLESS ~RESPONSE_TO_COMPLIMENT3~ -APPEND ~SOUNDOFF.IDS~ ~58 RESPONSE_TO_INSULT1~ UNLESS ~RESPONSE_TO_INSULT1~ -APPEND ~SOUNDOFF.IDS~ ~59 RESPONSE_TO_INSULT2~ UNLESS ~RESPONSE_TO_INSULT2~ -APPEND ~SOUNDOFF.IDS~ ~60 RESPONSE_TO_INSULT3~ UNLESS ~RESPONSE_TO_INSULT3~ +APPEND ~SOUNDOFF.IDS~ ~50 SPECIAL1~ UNLESS ~ SPECIAL1~ +APPEND ~SOUNDOFF.IDS~ ~51 SPECIAL2~ UNLESS ~ SPECIAL2~ +APPEND ~SOUNDOFF.IDS~ ~52 SPECIAL3~ UNLESS ~ SPECIAL3~ +APPEND ~SOUNDOFF.IDS~ ~55 RESPONSE_TO_COMPLIMENT1~ UNLESS ~ RESPONSE_TO_COMPLIMENT1~ +APPEND ~SOUNDOFF.IDS~ ~56 RESPONSE_TO_COMPLIMENT2~ UNLESS ~ RESPONSE_TO_COMPLIMENT2~ +APPEND ~SOUNDOFF.IDS~ ~57 RESPONSE_TO_COMPLIMENT3~ UNLESS ~ RESPONSE_TO_COMPLIMENT3~ +APPEND ~SOUNDOFF.IDS~ ~58 RESPONSE_TO_INSULT1~ UNLESS ~ RESPONSE_TO_INSULT1~ +APPEND ~SOUNDOFF.IDS~ ~59 RESPONSE_TO_INSULT2~ UNLESS ~ RESPONSE_TO_INSULT2~ +APPEND ~SOUNDOFF.IDS~ ~60 RESPONSE_TO_INSULT3~ UNLESS ~ RESPONSE_TO_INSULT3~ APPEND ~SOUNDOFF.IDS~ ~61 DIALOG_HOSTILE~ UNLESS ~61 DIALOG_HOSTILE~ APPEND ~SOUNDOFF.IDS~ ~62 DIALOG_DEFAULT~ UNLESS ~62 DIALOG_DEFAULT~ -APPEND ~SOUNDOFF.IDS~ ~63 SELECT_RARE1~ UNLESS ~SELECT_RARE1~ -APPEND ~SOUNDOFF.IDS~ ~64 SELECT_RARE2~ UNLESS ~SELECT_RARE2~ -APPEND ~SOUNDOFF.IDS~ ~65 CRITICAL_HIT~ UNLESS ~CRITICAL_HIT~ -APPEND ~SOUNDOFF.IDS~ ~66 CRITICAL_MISS~ UNLESS ~CRITICAL_MISS~ -APPEND ~SOUNDOFF.IDS~ ~67 TARGET_IMMUNE~ UNLESS ~TARGET_IMMUNE~ -APPEND ~SOUNDOFF.IDS~ ~68 INVENTORY_FULL~ UNLESS ~INVENTORY_FULL~ -APPEND ~SOUNDOFF.IDS~ ~69 PICKED_POCKET~ UNLESS ~PICKED_POCKET~ -APPEND ~SOUNDOFF.IDS~ ~70 HIDDEN_IN_SHADOWS~ UNLESS ~HIDDEN_IN_SHADOWS~ -APPEND ~SOUNDOFF.IDS~ ~71 SPELL_DISRUPTED~ UNLESS ~SPELL_DISRUPTED~ -APPEND ~SOUNDOFF.IDS~ ~72 SET_A_TRAP~ UNLESS ~SET_A_TRAP~ -APPEND ~SOUNDOFF.IDS~ ~73 EXISTANCE4~ UNLESS ~EXISTANCE4~ +APPEND ~SOUNDOFF.IDS~ ~63 SELECT_RARE1~ UNLESS ~ SELECT_RARE1~ +APPEND ~SOUNDOFF.IDS~ ~64 SELECT_RARE2~ UNLESS ~ SELECT_RARE2~ +APPEND ~SOUNDOFF.IDS~ ~65 CRITICAL_HIT~ UNLESS ~ CRITICAL_HIT~ +APPEND ~SOUNDOFF.IDS~ ~66 CRITICAL_MISS~ UNLESS ~ CRITICAL_MISS~ +APPEND ~SOUNDOFF.IDS~ ~67 TARGET_IMMUNE~ UNLESS ~ TARGET_IMMUNE~ +APPEND ~SOUNDOFF.IDS~ ~68 INVENTORY_FULL~ UNLESS ~ INVENTORY_FULL~ +APPEND ~SOUNDOFF.IDS~ ~69 PICKED_POCKET~ UNLESS ~ PICKED_POCKET~ +APPEND ~SOUNDOFF.IDS~ ~70 HIDDEN_IN_SHADOWS~ UNLESS ~ HIDDEN_IN_SHADOWS~ +APPEND ~SOUNDOFF.IDS~ ~71 SPELL_DISRUPTED~ UNLESS ~ SPELL_DISRUPTED~ +APPEND ~SOUNDOFF.IDS~ ~72 SET_A_TRAP~ UNLESS ~ SET_A_TRAP~ +APPEND ~SOUNDOFF.IDS~ ~73 EXISTANCE4~ UNLESS ~ EXISTANCE4~ APPEND ~SOUNDOFF.IDS~ ~74 BIO~ UNLESS ~ BIO~ ///// \\\\\ diff --git a/EET/lib/bgee_dir.tph b/EET/lib/bgee_dir.tph index c79b3e9e..ccd73155 100644 --- a/EET/lib/bgee_dir.tph +++ b/EET/lib/bgee_dir.tph @@ -69,7 +69,7 @@ ACTION_IF (valid_dir = 1) BEGIN END ELSE PATCH_IF ~%WEIDU_OS%~ STR_EQ ~osx~ BEGIN REPLACE_TEXTUALLY ~\\~ ~~ //remove quotes REPLACE_TEXTUALLY ~^"\(.*\)"$~ ~\1~ //if the whole text is quoted, remove quotes - REPLACE_TEXTUALLY ~/*$~ ~~ //remove terminal slashes//*/ + REPLACE_TEXTUALLY ~/*$~ ~~ //remove terminal slashes END END ACTION_IF NOT (FILE_EXISTS ~%bgee_dir%/movies/sodcin05.wbm~) BEGIN @@ -93,7 +93,7 @@ OUTER_WHILE (valid_dir = 0) BEGIN END ELSE PATCH_IF ~%WEIDU_OS%~ STR_EQ ~osx~ BEGIN REPLACE_TEXTUALLY ~\\~ ~~ //remove quotes REPLACE_TEXTUALLY ~^"\(.*\)"$~ ~\1~ //if the whole text is quoted, remove quotes - REPLACE_TEXTUALLY ~/*$~ ~~ //remove terminal slashes//*/ + REPLACE_TEXTUALLY ~/*$~ ~~ //remove terminal slashes END END ACTION_IF NOT (FILE_EXISTS ~%bgee_dir%/movies/sodcin05.wbm~) BEGIN diff --git a/EET/lib/macros.tph b/EET/lib/macros.tph index e06a5e35..2eab8753 100644 --- a/EET/lib/macros.tph +++ b/EET/lib/macros.tph @@ -38,7 +38,7 @@ DEFINE_PATCH_FUNCTION ~EET_spellbooks~ END ELSE PATCH_IF (class = 6) AND (known > 0) BEGIN // Paladin excludes inquisitors READ_BYTE 0x234 level_cleric INNER_ACTION BEGIN - COPY_EXISTING - ~MXSPLPAL.2DA~ ~override~ + COPY_EXISTING - ~MXSPLPAL.2DA~ ~.../MXSPLPAL.2da~ COUNT_2DA_COLS "cntcol" SET cleric_max = cntcol - 1 COUNT_2DA_ROWS cntcol "cntrow" @@ -66,7 +66,7 @@ DEFINE_PATCH_FUNCTION ~EET_spellbooks~ END ELSE PATCH_IF (class = 12) BEGIN // Trueclass Ranger READ_BYTE 0x234 level_druid INNER_ACTION BEGIN - COPY_EXISTING - ~MXSPLDRU.2DA~ ~override~ + COPY_EXISTING - ~MXSPLDRU.2DA~ ~.../MXSPLDRU.2DA~ COUNT_2DA_COLS "cntcol" SET druid_max = cntcol - 1 COUNT_2DA_ROWS cntcol "cntrow" @@ -96,7 +96,7 @@ DEFINE_PATCH_FUNCTION ~EET_spellbooks~ READ_BYTE 0x234 level_cleric READ_BYTE 0x235 level_druid INNER_ACTION BEGIN - COPY_EXISTING - ~MXSPLDRU.2DA~ ~override~ + COPY_EXISTING - ~MXSPLDRU.2DA~ ~.../MXSPLDRU.2DA~ COUNT_2DA_COLS "cntcol" PATCH_IF (cheat = 0) BEGIN SET druid_max = cntcol - 1 @@ -145,7 +145,7 @@ DEFINE_PATCH_FUNCTION ~EET_spellbooks~ READ_BYTE 0x27b align // used for various restriction checks below INNER_ACTION BEGIN LAF RES_NUM_OF_SPELL_NAME STR_VAR spell_name = EVAL ~%spell_name%~ RET spell_res spell_num END - COPY_EXISTING - ~%spell_res%.spl~ ~override~ + COPY_EXISTING ~%spell_res%.spl~ ~override~ READ_LONG 0x1e "flags" PATCH_IF (is_cleric = 1) OR (is_druid = 1) BEGIN PATCH_IF (~%flags%~ BAND BIT0) BEGIN //Exclude Chaotic priests @@ -244,6 +244,7 @@ DEFINE_PATCH_FUNCTION ~EET_spellbooks~ END END END + BUT_ONLY END //Known Spells READ_LONG 0x2a0 "kspell_off" @@ -1034,7 +1035,7 @@ DEFINE_PATCH_FUNCTION dump_wmp END INNER_ACTION BEGIN ACTION_PHP_EACH ~%2da_links_array%~ AS source => file BEGIN - COPY_EXISTING - ~%file%.2da~ ~override~ + COPY_EXISTING - ~%file%.2da~ ~.../%file%.2da~ PRETTY_PRINT_2DA REPLACE_TEXTUALLY ~\*~ ~N~ REPLACE_EVALUATE CASE_INSENSITIVE ~^[0-9]+[ ]+\([A-Za-z0-9#_-]+\)+[ ]+\([0-9]+\)[ ]+\([A-Za-z0-9#_-]+\)[ ]+\([0-9]+\)[ ]+\([0-9]+\)[ ]+\([A-Za-z0-9#_-]+\)[ ]+\([A-Za-z0-9#_-]+\)[ ]+\([A-Za-z0-9#_-]+\)[ ]+\([A-Za-z0-9#_-]+\)[ ]+\([A-Za-z0-9#_-]+\)[ ]+\([0-3N]+\)$~ BEGIN diff --git a/EET/lib/prep_BCS.tph b/EET/lib/prep_BCS.tph index d3e8b8fc..72ee8728 100644 --- a/EET/lib/prep_BCS.tph +++ b/EET/lib/prep_BCS.tph @@ -51,12 +51,12 @@ DELETE + ~%patch_dir%/bcs/BALDUR.BCS~ ~%patch_dir%/bcs/AMNISE.BCS~ ~%patch_dir%/bcs/ANKHEG.BCS~ ~%patch_dir%/bcs/BALOR01.BCS~ - ~%patch_dir%/bcs/BEAR.BCS~ - ~%patch_dir%/bcs/CBEAR.BCS~ - ~%patch_dir%/bcs/CCRAWLER.BCS~ + //~%patch_dir%/bcs/BEAR.BCS~ + //~%patch_dir%/bcs/CBEAR.BCS~ + //~%patch_dir%/bcs/CCRAWLER.BCS~ ~%patch_dir%/bcs/CDRYAD.BCS~ ~%patch_dir%/bcs/CTCK.BCS~//? - ~%patch_dir%/bcs/CUTTUTOR.BCS~ + //~%patch_dir%/bcs/CUTTUTOR.BCS~ ~%patch_dir%/bcs/DEFAULT.BCS~// ~%patch_dir%/bcs/DEMGLASU.BCS~ ~%patch_dir%/bcs/DEMNABSU.BCS~ diff --git a/EET/other/BGEE_to_EET_mod_checker/setup-BGEE_to_EET_mod_checker.exe b/EET/other/BGEE_to_EET_mod_checker/setup-BGEE_to_EET_mod_checker.exe index ef28ecac..1b4c17c0 100644 Binary files a/EET/other/BGEE_to_EET_mod_checker/setup-BGEE_to_EET_mod_checker.exe and b/EET/other/BGEE_to_EET_mod_checker/setup-BGEE_to_EET_mod_checker.exe differ diff --git a/EET/other/EET_functions.tph b/EET/other/EET_functions.tph index 8b4f6a13..2daae869 100644 --- a/EET/other/EET_functions.tph +++ b/EET/other/EET_functions.tph @@ -228,7 +228,7 @@ END END ELSE BEGIN OUTER_SET match = 0 ACTION_IF ((~%stringPosDV%~ STR_EQ ~~)=0) BEGIN - COPY_EXISTING - ~FATESP.DLG~ ~override~ + COPY_EXISTING - ~FATESP.DLG~ ~.../FATESP.DLG~ DECOMPILE_AND_PATCH BEGIN SPRINT tilde "~" SET match = 0 diff --git a/EET/other/EET_modConverter/setup-EET_modConverter.exe b/EET/other/EET_modConverter/setup-EET_modConverter.exe index ef28ecac..1b4c17c0 100644 Binary files a/EET/other/EET_modConverter/setup-EET_modConverter.exe and b/EET/other/EET_modConverter/setup-EET_modConverter.exe differ diff --git a/EET/readme-EET.html b/EET/readme-EET.html index 55ab0946..5f2b869c 100644 --- a/EET/readme-EET.html +++ b/EET/readme-EET.html @@ -13,7 +13,7 @@

Baldur's Gate: Enhanced Edition Trilogy (EET)

Author: K4thos
Contributors: WhiteAgnus, AWizardDidIt, CrevsDaak

On the web: Home page and discussion forum

-

Version 1.0 Release Candidate 6
+

Version 1.0 Release Candidate 7
Languages: English, Polish, German (unfinished), French (unfinished), Spanish (unfinished)
Platforms: Windows, Mac OS X

@@ -270,7 +270,7 @@

What mods can be installed after EET?

How to add EET compatibility for other mods?

-

Adopting existing mods to conventions and technical features used by EET is relatively easy and intuitive thanks to modder's resources and tools included in EET package that can be used to drastically reduce time needed for such conversion. Brief explanation of the scope of needed changes is available in this forum topic, where we also provide support for modders converting their mods to support EET. Please refer to the EET developer's documentation for detailed information regarding this task.

+

Adopting existing mods to conventions and technical features used by EET is relatively easy and intuitive thanks to modder's resources and tools included in EET package that can be used to drastically reduce time needed for such conversion. Brief explanation of the scope of needed changes is available in this forum topic, where we also provide support for modders converting their mods to support EET. Please refer to the Modder's Notes for detailed information regarding this task.

What about compatibility with saves?

diff --git a/EET/tbl/compatibility.tbl b/EET/tbl/compatibility.tbl index d9a9d112..9f493b8d 100644 --- a/EET/tbl/compatibility.tbl +++ b/EET/tbl/compatibility.tbl @@ -6,7 +6,6 @@ BGEECLASSICMOVIES 0 //BG:EE Classic Movies DARKHORIZONSBGEE 1 //Dark Horizons BG:EE DRIZZTSAGA 1 //Drizzt Saga (BP-BGT Worldmap version) BGQE 1 //Baldur's Gate Mini Quests and Encounters -SIRINESCALL 0 //The Lure of the Sirine's Call SOA 1 //The Stone of Askavar (BP-BGT Worldmap version) WBGTAP 0 //Wedges BGT Adventure Pack BG1AERIE 1 //Aerie for BG:EE diff --git a/setup-EET b/setup-EET index c0e82d60..aaa45b18 100644 Binary files a/setup-EET and b/setup-EET differ diff --git a/setup-EET.exe b/setup-EET.exe index ef28ecac..1b4c17c0 100644 Binary files a/setup-EET.exe and b/setup-EET.exe differ