diff --git a/iwdfixpack/lib/functions.tpa b/iwdfixpack/lib/functions.tpa index f25275b..e22b69c 100644 --- a/iwdfixpack/lib/functions.tpa +++ b/iwdfixpack/lib/functions.tpa @@ -1,9 +1,34 @@ // deleted effects which are now in WeiDU itself ///// \\\\\ -///// item/spell functions \\\\\ +///// area functions \\\\\ ///// \\\\\ +DEFINE_ACTION_FUNCTION cd_swap_actor_name + STR_VAR old_name = "" + new_name = "" + area = "" +BEGIN + + ACTION_IF (("%old_name%" STRING_COMPARE_CASE "") AND (FILE_EXISTS_IN_GAME ~%area%.are~)) BEGIN + + COPY_EXISTING ~%area%.are~ ~override~ + READ_LONG 0x54 act_off + READ_SHORT 0x54 act_num + FOR (index = 0 ; index < act_num ; ++index) BEGIN + READ_ASCII (act_off + 0x00 + (index * 0x110)) name (32) NULL + PATCH_IF ("%old_name%" STRING_COMPARE_CASE "%name%" = 0) BEGIN + WRITE_ASCIIE (act_off + 0x00 + (index * 0x110)) ~%new_name%~ #32 + SET index = act_num // kill loop + END + END + BUT_ONLY + + END + +END + + DEFINE_PATCH_FUNCTION ALTER_AREA_AMBIENT INT_VAR coord_x = "-10" coord_y = "-10" diff --git a/iwdfixpack/setup-iwdfixpack.tp2 b/iwdfixpack/setup-iwdfixpack.tp2 index 76e9658..e8df096 100644 --- a/iwdfixpack/setup-iwdfixpack.tp2 +++ b/iwdfixpack/setup-iwdfixpack.tp2 @@ -989,6 +989,108 @@ COPY_EXISTING ~ar1105.are~ ~override~ WRITE_LONG (song_off + 0x10) 40 BUT_ONLY +///// \\\\\ +///// area script names \\\\\ +///// \\\\\ + +// oIWD uses area actor names as DVs, which means they should be limited to 18 characters (not counting +// spaces) so that SPRITE_IS_DEADfoo won't exceed 32 characters total. As such, we change: +LAF cd_swap_actor_name STR_VAR area = ar1000 old_name = "Goblin Bow Elite (Quest)" new_name = "GoblinBowEliteQ" END // actor 9 +LAF cd_swap_actor_name STR_VAR area = ar2006 old_name = "Goblin Archer Marshal 1" new_name = "GoblinArchMarshal1" END // actor 3 +LAF cd_swap_actor_name STR_VAR area = ar2006 old_name = "Goblin Archer Marshal 2" new_name = "GoblinArchMarshal2" END // actor 4 +LAF cd_swap_actor_name STR_VAR area = ar3502 old_name = "Tattered Skeleton 1 Trap" new_name = "TatteredSkel1Trap" END // actor 1 +LAF cd_swap_actor_name STR_VAR area = ar3502 old_name = "Tattered Skeleton 2 Trap" new_name = "TatteredSkel2Trap" END // actor 2 +LAF cd_swap_actor_name STR_VAR area = ar3502 old_name = "Tattered Skeleton 3 Trap" new_name = "TatteredSkel3Trap" END // actor 3 +LAF cd_swap_actor_name STR_VAR area = ar3502 old_name = "Tattered Skeleton 4 Trap" new_name = "TatteredSkel4Trap" END // actor 4 +LAF cd_swap_actor_name STR_VAR area = ar3502 old_name = "Tattered Skeleton 5 Trap" new_name = "TatteredSkel5Trap" END // actor 5 +LAF cd_swap_actor_name STR_VAR area = ar3502 old_name = "Tattered Skeleton 6 Trap" new_name = "TatteredSkel6Trap" END // actor 6 +LAF cd_swap_actor_name STR_VAR area = ar4001 old_name = "Captive Villager 9 (SPECIAL)" new_name = "CaptiveVillager9SP" END // actor 6 +LAF cd_swap_actor_name STR_VAR area = ar4002 old_name = "Lizard Man Shaman KID 2" new_name = "LizardManShamanK2" END // actor 2 +LAF cd_swap_actor_name STR_VAR area = ar4002 old_name = "Lizard Man Shaman KID 3" new_name = "LizardManShamanK3" END // actor 3 +LAF cd_swap_actor_name STR_VAR area = ar4005 old_name = "Yuan-ti Elite Archer 1" new_name = "Yuan-tiEliteArch1" END // actor 0 +LAF cd_swap_actor_name STR_VAR area = ar4005 old_name = "Yuan-ti Elite Archer 2" new_name = "Yuan-tiEliteArch2" END // actor 1 +LAF cd_swap_actor_name STR_VAR area = ar4005 old_name = "Yuan-ti Elite Archer 3" new_name = "Yuan-tiEliteArch3" END // actor 2 +LAF cd_swap_actor_name STR_VAR area = ar4005 old_name = "Yuan-ti Elite Archer 4" new_name = "Yuan-tiEliteArch4" END // actor 3 +LAF cd_swap_actor_name STR_VAR area = ar4005 old_name = "Yuan-ti Elite Archer 5" new_name = "Yuan-tiEliteArch5" END // actor 4 +LAF cd_swap_actor_name STR_VAR area = ar4005 old_name = "Yuan-ti Elite Archer 6" new_name = "Yuan-tiEliteArch6" END // actor 5 +LAF cd_swap_actor_name STR_VAR area = ar4005 old_name = "Yuan-ti Elite Archer 8" new_name = "Yuan-tiEliteArch8" END // actor 6 +LAF cd_swap_actor_name STR_VAR area = ar4005 old_name = "Yuan-ti Elite Archer 9" new_name = "Yuan-tiEliteArch9" END // actor 7 +LAF cd_swap_actor_name STR_VAR area = ar4005 old_name = "Yuan-ti Elite Archer 10" new_name = "Yuan-tiEliteArch10" END // actor 8 +LAF cd_swap_actor_name STR_VAR area = ar4005 old_name = "Yuan-ti Elite Archer 11" new_name = "Yuan-tiEliteArch11" END // actor 9 +LAF cd_swap_actor_name STR_VAR area = ar4005 old_name = "Yuan-ti Elite Archer 12" new_name = "Yuan-tiEliteArch12" END // actor 0 +LAF cd_swap_actor_name STR_VAR area = ar4005 old_name = "Yuan-ti Elite Archer 13" new_name = "Yuan-tiEliteArch13" END // actor 1 +LAF cd_swap_actor_name STR_VAR area = ar4005 old_name = "Yuan-ti Elite Archer 14" new_name = "Yuan-tiEliteArch14" END // actor 2 +LAF cd_swap_actor_name STR_VAR area = ar4005 old_name = "Yuan-ti Elite Archer 15" new_name = "Yuan-tiEliteArch15" END // actor 3 +LAF cd_swap_actor_name STR_VAR area = ar4005 old_name = "Yuan-ti Elite Archer 16" new_name = "Yuan-tiEliteArch16" END // actor 4 +LAF cd_swap_actor_name STR_VAR area = ar4005 old_name = "Yuan-ti Elite Archer 17" new_name = "Yuan-tiEliteArch17" END // actor 5 +LAF cd_swap_actor_name STR_VAR area = ar4005 old_name = "Yuan-ti Elite Archer 18" new_name = "Yuan-tiEliteArch18" END // actor 6 +LAF cd_swap_actor_name STR_VAR area = ar4005 old_name = "Yuan-ti Elite Archer 19" new_name = "Yuan-tiEliteArch19" END // actor 7 +LAF cd_swap_actor_name STR_VAR area = ar4005 old_name = "Yuan-ti Elite Archer 20" new_name = "Yuan-tiEliteArch20" END // actor 8 +LAF cd_swap_actor_name STR_VAR area = ar4005 old_name = "Yuan-ti Elite Archer 21" new_name = "Yuan-tiEliteArch21" END // actor 9 +LAF cd_swap_actor_name STR_VAR area = ar4005 old_name = "Yuan-ti Elite Archer 22" new_name = "Yuan-tiEliteArch22" END // actor 0 +LAF cd_swap_actor_name STR_VAR area = ar4005 old_name = "Yuan-ti Elite Archer 23" new_name = "Yuan-tiEliteArch23" END // actor 1 +LAF cd_swap_actor_name STR_VAR area = ar4005 old_name = "Yuan-ti Elite Archer Guard 1" new_name = "Yuan-tiEliteArchG1" END // actor 8 +LAF cd_swap_actor_name STR_VAR area = ar4005 old_name = "Yuan-ti Elite Archer Guard 2" new_name = "Yuan-tiEliteArchG2" END // actor 9 +LAF cd_swap_actor_name STR_VAR area = ar4005 old_name = "Yuan-ti Elite Archer Guard 3" new_name = "Yuan-tiEliteArchG3" END // actor 0 +LAF cd_swap_actor_name STR_VAR area = ar4005 old_name = "Yuan-ti Elite Archer Guard 4" new_name = "Yuan-tiEliteArchG4" END // actor 1 +LAF cd_swap_actor_name STR_VAR area = ar8004 old_name = "Sleeping Svirfneblin 1" new_name = "SleepSvirfneblin1" END // actor 6 +LAF cd_swap_actor_name STR_VAR area = ar8004 old_name = "Sleeping Svirfneblin 2" new_name = "SleepSvirfneblin2" END // actor 7 +LAF cd_swap_actor_name STR_VAR area = ar8004 old_name = "Sleeping Svirfneblin 3" new_name = "SleepSvirfneblin3" END // actor 8 +LAF cd_swap_actor_name STR_VAR area = ar8004 old_name = "Sleeping Svirfneblin 4" new_name = "SleepSvirfneblin4" END // actor 9 +LAF cd_swap_actor_name STR_VAR area = ar8004 old_name = "Sleeping Svirfneblin 5" new_name = "SleepSvirfneblin5" END // actor 0 +LAF cd_swap_actor_name STR_VAR area = ar8010 old_name = "Malavon's Simulacrum" new_name = "MalavonSimulacrum" END // actor 7 +LAF cd_swap_actor_name STR_VAR area = ar8012 old_name = "Boneguard Skeleton 10" new_name = "BoneguardSkel10" END // actor 5 +LAF cd_swap_actor_name STR_VAR area = ar8012 old_name = "Boneguard Skeleton 11" new_name = "BoneguardSkel11" END // actor 6 +LAF cd_swap_actor_name STR_VAR area = ar8012 old_name = "Boneguard Skeleton 12" new_name = "BoneguardSkel12" END // actor 7 +LAF cd_swap_actor_name STR_VAR area = ar8012 old_name = "Boneguard Skeleton 13" new_name = "BoneguardSkel13" END // actor 8 +LAF cd_swap_actor_name STR_VAR area = ar8012 old_name = "Boneguard Skeleton 14" new_name = "BoneguardSkel14" END // actor 9 +LAF cd_swap_actor_name STR_VAR area = ar8012 old_name = "Boneguard Skeleton 15" new_name = "BoneguardSkel15" END // actor 0 +LAF cd_swap_actor_name STR_VAR area = ar8012 old_name = "Boneguard Skeleton 16" new_name = "BoneguardSkel16" END // actor 1 +LAF cd_swap_actor_name STR_VAR area = ar8012 old_name = "Boneguard Skeleton 17" new_name = "BoneguardSkel17" END // actor 2 +LAF cd_swap_actor_name STR_VAR area = ar8012 old_name = "Boneguard Skeleton 18" new_name = "BoneguardSkel18" END // actor 3 +LAF cd_swap_actor_name STR_VAR area = ar8012 old_name = "Boneguard Skeleton 19" new_name = "BoneguardSkel19" END // actor 4 +LAF cd_swap_actor_name STR_VAR area = ar8012 old_name = "Boneguard Skeleton 20" new_name = "BoneguardSkel20" END // actor 5 +LAF cd_swap_actor_name STR_VAR area = ar8012 old_name = "Boneguard Skeleton 21" new_name = "BoneguardSkel21" END // actor 6 +LAF cd_swap_actor_name STR_VAR area = ar8012 old_name = "Boneguard Skeleton 22" new_name = "BoneguardSkel22" END // actor 7 +LAF cd_swap_actor_name STR_VAR area = ar8012 old_name = "Boneguard Skeleton 23" new_name = "BoneguardSkel23" END // actor 8 +LAF cd_swap_actor_name STR_VAR area = ar8012 old_name = "Boneguard Skeleton 24" new_name = "BoneguardSkel24" END // actor 9 +LAF cd_swap_actor_name STR_VAR area = ar8013 old_name = "Revered Brother Poquelin" new_name = "ReveredBroPoquelin" END // actor 0 +ACTION_IF !game_is_iwd BEGIN + LAF cd_swap_actor_name STR_VAR area = ar4001 old_name = "NEW Tough Lizard Man 10" new_name = "NToughLizardMan10" END // actor 7 + LAF cd_swap_actor_name STR_VAR area = ar4001 old_name = "NEW Lizard Man Shaman 1" new_name = "NLizardManShaman1" END // actor 8 + LAF cd_swap_actor_name STR_VAR area = ar4001 old_name = "NEW Lizard Man Shaman 2" new_name = "NLizardManShaman2" END // actor 9 + LAF cd_swap_actor_name STR_VAR area = ar4001 old_name = "NEW Lizard Man Shaman 3" new_name = "NLizardManShaman3" END // actor 0 + LAF cd_swap_actor_name STR_VAR area = ar4001 old_name = "NEW Lizard Man Shaman 4" new_name = "NLizardManShaman4" END // actor 1 + LAF cd_swap_actor_name STR_VAR area = ar4001 old_name = "NEW Lizard Man Shaman 5" new_name = "NLizardManShaman5" END // actor 2 + LAF cd_swap_actor_name STR_VAR area = ar4001 old_name = "NEW Lizard Man Shaman 6" new_name = "NLizardManShaman6" END // actor 3 + LAF cd_swap_actor_name STR_VAR area = ar8011 old_name = "Priest-Mage of Vhaer 1" new_name = "PriestMageofVhaer1" END // actor 7 + LAF cd_swap_actor_name STR_VAR area = ar8011 old_name = "Priest-Mage of Vhaer 2" new_name = "PriestMageofVhaer2" END // actor 8 + LAF cd_swap_actor_name STR_VAR area = ar9300 old_name = "Neutral Ghost Shaman 1" new_name = "NeutralGhstShaman1" END // actor 7 + LAF cd_swap_actor_name STR_VAR area = ar9300 old_name = "Neutral Ghost Shaman 2" new_name = "NeutralGhstShaman2" END // actor 8 + LAF cd_swap_actor_name STR_VAR area = ar9300 old_name = "Neutral Ghost Shaman 3" new_name = "NeutralGhstShaman3" END // actor 9 + LAF cd_swap_actor_name STR_VAR area = ar9300 old_name = "Neutral Ghost Shaman 4" new_name = "NeutralGhstShaman4" END // actor 0 + LAF cd_swap_actor_name STR_VAR area = ar9300 old_name = "Neutral Ghost Shaman 5" new_name = "NeutralGhstShaman5" END // actor 1 + ACTION_IF game_is_totlm BEGIN + LAF cd_swap_actor_name STR_VAR area = ar9711 old_name = "Spectral Hero (Hobart)" new_name = "SpectralHeroHobart" END // actor 7 + LAF cd_swap_actor_name STR_VAR area = ar9711 old_name = "Spectral Hero (Harald)" new_name = "SpectralHeroHarald" END // actor 8 + LAF cd_swap_actor_name STR_VAR area = ar9711 old_name = "Spectral Hero (Criek)" new_name = "SpectralHeroCriek" END // actor 9 + LAF cd_swap_actor_name STR_VAR area = ar9711 old_name = "Spectral Hero (Adran)" new_name = "SpectralHeroAdran" END // actor 0 + LAF cd_swap_actor_name STR_VAR area = ar9711 old_name = "Spectral Hero (Shelhai)" new_name = "SpectralHeroShelha" END // actor 1 + LAF cd_swap_actor_name STR_VAR area = ar9714 old_name = "Boneguard Skeleton 10" new_name = "BoneguardSkel10" END // actor 0 + LAF cd_swap_actor_name STR_VAR area = ar9714 old_name = "Boneguard Skeleton 11" new_name = "BoneguardSkel11" END // actor 1 + LAF cd_swap_actor_name STR_VAR area = ar9714 old_name = "Boneguard Skeleton 12" new_name = "BoneguardSkel12" END // actor 2 + LAF cd_swap_actor_name STR_VAR area = ar9714 old_name = "Boneguard Skeleton 13" new_name = "BoneguardSkel13" END // actor 3 + LAF cd_swap_actor_name STR_VAR area = ar9714 old_name = "Boneguard Skeleton 14" new_name = "BoneguardSkel14" END // actor 4 + LAF cd_swap_actor_name STR_VAR area = ar9714 old_name = "Boneguard Skeleton 15" new_name = "BoneguardSkel15" END // actor 5 + LAF cd_swap_actor_name STR_VAR area = ar9714 old_name = "Boneguard Skeleton 16" new_name = "BoneguardSkel16" END // actor 6 + LAF cd_swap_actor_name STR_VAR area = ar9714 old_name = "Boneguard Skeleton 17" new_name = "BoneguardSkel17" END // actor 7 + LAF cd_swap_actor_name STR_VAR area = ar9714 old_name = "Boneguard Skeleton 18" new_name = "BoneguardSkel18" END // actor 8 + LAF cd_swap_actor_name STR_VAR area = ar9714 old_name = "Boneguard Skeleton 19" new_name = "BoneguardSkel19" END // actor 9 + LAF cd_swap_actor_name STR_VAR area = ar9714 old_name = "Boneguard Skeleton 20" new_name = "BoneguardSkel20" END // actor 0 + LAF cd_swap_actor_name STR_VAR area = ar9714 old_name = "Boneguard Skeleton 21" new_name = "BoneguardSkel21" END // actor 1 + END +END + ///// \\\\\ ///// area fixes \\\\\ ///// \\\\\ @@ -6638,8 +6740,8 @@ INCLUDE ~iwdfixpack/languages/%LANGUAGE%/gtu.tpa~ /////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\ /////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\ -BEGIN ~internal test component~ DESIGNATED 1000 -REQUIRE_PREDICATE FILE_EXISTS ~iwdfixpack/lib/test.tpa~ ~skipping internal test component~ +//BEGIN ~internal test component~ DESIGNATED 1000 +//REQUIRE_PREDICATE FILE_EXISTS ~iwdfixpack/lib/test.tpa~ ~skipping internal test component~ // this should be deleted before release, but in case I forget this should be auto skipped -INCLUDE ~iwdfixpack/lib/test.tpa~ +//INCLUDE ~iwdfixpack/lib/test.tpa~