From 04c5d3fac04787329d88995b52147e887c8036cd Mon Sep 17 00:00:00 2001 From: 4Luke4 Date: Thu, 3 Apr 2025 19:47:16 +0200 Subject: [PATCH 01/12] Misc fixes and tweaks --- eefixpack/files/lib/gt_7eyes.tph | 997 +++++++++++------- eefixpack/files/lib/gt_functions.tph | 820 +++++++------- .../files/tph/6037_iwdee_probabilities.tph | 1 + eefixpack/files/tph/bg2ee.tph | 244 ++++- .../files/tph/bg_bg2_common_spell_fixes.tph | 29 +- eefixpack/files/tph/bgee.tph | 138 +++ eefixpack/files/tph/dw/holy_unholy.tph | 44 +- eefixpack/files/tph/dw/paralyzation_fixes.tph | 3 +- eefixpack/files/tph/dw_fixes.tph | 4 +- eefixpack/files/tph/iwdee.tph | 359 ++++++- eefixpack/files/tph/luke/7eyes/7eyes.tph | 131 +-- eefixpack/files/tph/luke/7eyes/berserk.tph | 149 --- .../files/tph/luke/7eyes/bg1/berserk.2da | 7 + eefixpack/files/tph/luke/7eyes/bg1/blind.2da | 29 + eefixpack/files/tph/luke/7eyes/bg1/charm.2da | 36 + .../files/tph/luke/7eyes/bg1/confusion.2da | 25 + .../files/tph/luke/7eyes/bg1/damage_acid.2da | 22 + .../files/tph/luke/7eyes/bg1/damage_cold.2da | 10 + .../tph/luke/7eyes/bg1/damage_crushing.2da | 22 + .../tph/luke/7eyes/bg1/damage_electricity.2da | 6 + .../files/tph/luke/7eyes/bg1/damage_fire.2da | 31 + .../tph/luke/7eyes/bg1/damage_missile.2da | 7 + .../tph/luke/7eyes/bg1/damage_piercing.2da | 20 + .../tph/luke/7eyes/bg1/damage_slashing.2da | 4 + eefixpack/files/tph/luke/7eyes/bg1/deaf.2da | 10 + .../files/tph/luke/7eyes/bg1/disease.2da | 23 + .../files/tph/luke/7eyes/bg1/disintegrate.2da | 14 + .../files/tph/luke/7eyes/bg1/entangle.2da | 11 + .../files/tph/luke/7eyes/bg1/feeblemind.2da | 11 + eefixpack/files/tph/luke/7eyes/bg1/grease.2da | 5 + eefixpack/files/tph/luke/7eyes/bg1/haste.2da | 16 + eefixpack/files/tph/luke/7eyes/bg1/hold.2da | 17 + .../files/tph/luke/7eyes/bg1/imprisonment.2da | 5 + eefixpack/files/tph/luke/7eyes/bg1/kill.2da | 54 + eefixpack/files/tph/luke/7eyes/bg1/maze.2da | 9 + eefixpack/files/tph/luke/7eyes/bg1/panic.2da | 43 + .../files/tph/luke/7eyes/bg1/paralyze.2da | 34 + .../files/tph/luke/7eyes/bg1/petrify.2da | 20 + .../tph/luke/7eyes/bg1/power_word_kill.2da | 8 + .../tph/luke/7eyes/bg1/power_word_stun.2da | 6 + .../files/tph/luke/7eyes/bg1/silence.2da | 9 + eefixpack/files/tph/luke/7eyes/bg1/slay.2da | 36 + eefixpack/files/tph/luke/7eyes/bg1/slow.2da | 36 + .../files/tph/luke/7eyes/bg1/special.2da | 23 + eefixpack/files/tph/luke/7eyes/bg1/stun.2da | 47 + eefixpack/files/tph/luke/7eyes/bg1/web.2da | 8 + .../files/tph/luke/7eyes/bg2/berserk.2da | 5 + eefixpack/files/tph/luke/7eyes/bg2/blind.2da | 32 + eefixpack/files/tph/luke/7eyes/bg2/charm.2da | 46 + .../files/tph/luke/7eyes/bg2/confusion.2da | 26 + .../files/tph/luke/7eyes/bg2/damage_acid.2da | 19 + .../files/tph/luke/7eyes/bg2/damage_cold.2da | 12 + .../tph/luke/7eyes/bg2/damage_crushing.2da | 27 + .../tph/luke/7eyes/bg2/damage_electricity.2da | 10 + .../files/tph/luke/7eyes/bg2/damage_fire.2da | 40 + .../tph/luke/7eyes/bg2/damage_missile.2da | 10 + .../tph/luke/7eyes/bg2/damage_piercing.2da | 17 + .../tph/luke/7eyes/bg2/damage_slashing.2da | 5 + eefixpack/files/tph/luke/7eyes/bg2/deaf.2da | 8 + .../files/tph/luke/7eyes/bg2/disease.2da | 22 + .../files/tph/luke/7eyes/bg2/disintegrate.2da | 16 + .../files/tph/luke/7eyes/bg2/entangle.2da | 10 + .../files/tph/luke/7eyes/bg2/feeblemind.2da | 10 + eefixpack/files/tph/luke/7eyes/bg2/grease.2da | 6 + eefixpack/files/tph/luke/7eyes/bg2/haste.2da | 23 + eefixpack/files/tph/luke/7eyes/bg2/hold.2da | 19 + .../files/tph/luke/7eyes/bg2/imprisonment.2da | 7 + eefixpack/files/tph/luke/7eyes/bg2/kill.2da | 69 ++ eefixpack/files/tph/luke/7eyes/bg2/maze.2da | 10 + eefixpack/files/tph/luke/7eyes/bg2/panic.2da | 48 + .../files/tph/luke/7eyes/bg2/paralyze.2da | 39 + .../files/tph/luke/7eyes/bg2/petrify.2da | 21 + .../tph/luke/7eyes/bg2/power_word_kill.2da | 8 + .../tph/luke/7eyes/bg2/power_word_stun.2da | 6 + .../files/tph/luke/7eyes/bg2/silence.2da | 13 + eefixpack/files/tph/luke/7eyes/bg2/slay.2da | 46 + eefixpack/files/tph/luke/7eyes/bg2/slow.2da | 57 + .../files/tph/luke/7eyes/bg2/special.2da | 21 + eefixpack/files/tph/luke/7eyes/bg2/stun.2da | 59 ++ eefixpack/files/tph/luke/7eyes/bg2/web.2da | 7 + eefixpack/files/tph/luke/7eyes/blindness.tph | 178 ---- .../files/tph/luke/7eyes/charm_creature.tph | 177 ---- eefixpack/files/tph/luke/7eyes/confusion.tph | 172 --- eefixpack/files/tph/luke/7eyes/damage.tph | 225 ---- eefixpack/files/tph/luke/7eyes/deafness.tph | 148 --- .../files/tph/luke/7eyes/feeblemindedness.tph | 156 --- .../files/tph/luke/7eyes/hold_creature.tph | 162 --- .../files/tph/luke/7eyes/iwd/berserk.2da | 11 + eefixpack/files/tph/luke/7eyes/iwd/blind.2da | 28 + eefixpack/files/tph/luke/7eyes/iwd/charm.2da | 17 + .../files/tph/luke/7eyes/iwd/confusion.2da | 19 + .../files/tph/luke/7eyes/iwd/damage_acid.2da | 13 + .../files/tph/luke/7eyes/iwd/damage_cold.2da | 6 + .../tph/luke/7eyes/iwd/damage_crushing.2da | 20 + .../tph/luke/7eyes/iwd/damage_electricity.2da | 5 + .../files/tph/luke/7eyes/iwd/damage_fire.2da | 26 + .../tph/luke/7eyes/iwd/damage_missile.2da | 14 + .../tph/luke/7eyes/iwd/damage_piercing.2da | 13 + .../tph/luke/7eyes/iwd/damage_slashing.2da | 5 + eefixpack/files/tph/luke/7eyes/iwd/deaf.2da | 10 + .../files/tph/luke/7eyes/iwd/disease.2da | 19 + .../files/tph/luke/7eyes/iwd/disintegrate.2da | 4 + .../files/tph/luke/7eyes/iwd/entangle.2da | 12 + .../files/tph/luke/7eyes/iwd/feeblemind.2da | 10 + eefixpack/files/tph/luke/7eyes/iwd/grease.2da | 3 + eefixpack/files/tph/luke/7eyes/iwd/haste.2da | 16 + eefixpack/files/tph/luke/7eyes/iwd/hold.2da | 15 + .../files/tph/luke/7eyes/iwd/imprisonment.2da | 4 + eefixpack/files/tph/luke/7eyes/iwd/kill.2da | 45 + eefixpack/files/tph/luke/7eyes/iwd/maze.2da | 8 + eefixpack/files/tph/luke/7eyes/iwd/panic.2da | 33 + .../files/tph/luke/7eyes/iwd/paralyze.2da | 16 + .../files/tph/luke/7eyes/iwd/petrify.2da | 11 + .../tph/luke/7eyes/iwd/power_word_kill.2da | 6 + .../tph/luke/7eyes/iwd/power_word_stun.2da | 4 + .../files/tph/luke/7eyes/iwd/silence.2da | 9 + eefixpack/files/tph/luke/7eyes/iwd/slay.2da | 13 + eefixpack/files/tph/luke/7eyes/iwd/slow.2da | 26 + .../files/tph/luke/7eyes/iwd/special.2da | 16 + eefixpack/files/tph/luke/7eyes/iwd/stun.2da | 59 ++ eefixpack/files/tph/luke/7eyes/iwd/web.2da | 5 + eefixpack/files/tph/luke/7eyes/panic.tph | 210 ---- eefixpack/files/tph/luke/7eyes/paralyze.tph | 173 --- .../files/tph/luke/7eyes/petrification.tph | 165 --- eefixpack/files/tph/luke/7eyes/poison.tph | 162 --- .../files/tph/luke/7eyes/power_word_stun.tph | 152 --- eefixpack/files/tph/luke/7eyes/silence.tph | 157 --- eefixpack/files/tph/luke/7eyes/stun.tph | 236 ----- eefixpack/files/tph/luke/false_dawn.tph | 37 + eefixpack/files/tph/luke/holy_unholy_word.tph | 182 +--- .../files/tph/luke/polymorph_overhaul.tph | 148 ++- .../files/tph/luke/redundant_effects.tph | 124 ++- eefixpack/files/tph/luke/searing_orb.tph | 246 +---- eefixpack/files/tph/luke/sunray.tph | 372 +------ .../files/tph/luke/three_white_doves.tph | 51 + eefixpack/setup-eefixpack.tp2 | 2 +- 136 files changed, 4287 insertions(+), 4226 deletions(-) delete mode 100644 eefixpack/files/tph/luke/7eyes/berserk.tph create mode 100644 eefixpack/files/tph/luke/7eyes/bg1/berserk.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg1/blind.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg1/charm.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg1/confusion.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg1/damage_acid.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg1/damage_cold.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg1/damage_crushing.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg1/damage_electricity.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg1/damage_fire.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg1/damage_missile.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg1/damage_piercing.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg1/damage_slashing.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg1/deaf.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg1/disease.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg1/disintegrate.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg1/entangle.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg1/feeblemind.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg1/grease.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg1/haste.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg1/hold.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg1/imprisonment.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg1/kill.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg1/maze.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg1/panic.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg1/paralyze.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg1/petrify.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg1/power_word_kill.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg1/power_word_stun.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg1/silence.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg1/slay.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg1/slow.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg1/special.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg1/stun.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg1/web.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg2/berserk.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg2/blind.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg2/charm.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg2/confusion.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg2/damage_acid.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg2/damage_cold.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg2/damage_crushing.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg2/damage_electricity.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg2/damage_fire.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg2/damage_missile.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg2/damage_piercing.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg2/damage_slashing.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg2/deaf.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg2/disease.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg2/disintegrate.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg2/entangle.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg2/feeblemind.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg2/grease.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg2/haste.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg2/hold.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg2/imprisonment.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg2/kill.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg2/maze.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg2/panic.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg2/paralyze.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg2/petrify.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg2/power_word_kill.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg2/power_word_stun.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg2/silence.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg2/slay.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg2/slow.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg2/special.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg2/stun.2da create mode 100644 eefixpack/files/tph/luke/7eyes/bg2/web.2da delete mode 100644 eefixpack/files/tph/luke/7eyes/blindness.tph delete mode 100644 eefixpack/files/tph/luke/7eyes/charm_creature.tph delete mode 100644 eefixpack/files/tph/luke/7eyes/confusion.tph delete mode 100644 eefixpack/files/tph/luke/7eyes/damage.tph delete mode 100644 eefixpack/files/tph/luke/7eyes/deafness.tph delete mode 100644 eefixpack/files/tph/luke/7eyes/feeblemindedness.tph delete mode 100644 eefixpack/files/tph/luke/7eyes/hold_creature.tph create mode 100644 eefixpack/files/tph/luke/7eyes/iwd/berserk.2da create mode 100644 eefixpack/files/tph/luke/7eyes/iwd/blind.2da create mode 100644 eefixpack/files/tph/luke/7eyes/iwd/charm.2da create mode 100644 eefixpack/files/tph/luke/7eyes/iwd/confusion.2da create mode 100644 eefixpack/files/tph/luke/7eyes/iwd/damage_acid.2da create mode 100644 eefixpack/files/tph/luke/7eyes/iwd/damage_cold.2da create mode 100644 eefixpack/files/tph/luke/7eyes/iwd/damage_crushing.2da create mode 100644 eefixpack/files/tph/luke/7eyes/iwd/damage_electricity.2da create mode 100644 eefixpack/files/tph/luke/7eyes/iwd/damage_fire.2da create mode 100644 eefixpack/files/tph/luke/7eyes/iwd/damage_missile.2da create mode 100644 eefixpack/files/tph/luke/7eyes/iwd/damage_piercing.2da create mode 100644 eefixpack/files/tph/luke/7eyes/iwd/damage_slashing.2da create mode 100644 eefixpack/files/tph/luke/7eyes/iwd/deaf.2da create mode 100644 eefixpack/files/tph/luke/7eyes/iwd/disease.2da create mode 100644 eefixpack/files/tph/luke/7eyes/iwd/disintegrate.2da create mode 100644 eefixpack/files/tph/luke/7eyes/iwd/entangle.2da create mode 100644 eefixpack/files/tph/luke/7eyes/iwd/feeblemind.2da create mode 100644 eefixpack/files/tph/luke/7eyes/iwd/grease.2da create mode 100644 eefixpack/files/tph/luke/7eyes/iwd/haste.2da create mode 100644 eefixpack/files/tph/luke/7eyes/iwd/hold.2da create mode 100644 eefixpack/files/tph/luke/7eyes/iwd/imprisonment.2da create mode 100644 eefixpack/files/tph/luke/7eyes/iwd/kill.2da create mode 100644 eefixpack/files/tph/luke/7eyes/iwd/maze.2da create mode 100644 eefixpack/files/tph/luke/7eyes/iwd/panic.2da create mode 100644 eefixpack/files/tph/luke/7eyes/iwd/paralyze.2da create mode 100644 eefixpack/files/tph/luke/7eyes/iwd/petrify.2da create mode 100644 eefixpack/files/tph/luke/7eyes/iwd/power_word_kill.2da create mode 100644 eefixpack/files/tph/luke/7eyes/iwd/power_word_stun.2da create mode 100644 eefixpack/files/tph/luke/7eyes/iwd/silence.2da create mode 100644 eefixpack/files/tph/luke/7eyes/iwd/slay.2da create mode 100644 eefixpack/files/tph/luke/7eyes/iwd/slow.2da create mode 100644 eefixpack/files/tph/luke/7eyes/iwd/special.2da create mode 100644 eefixpack/files/tph/luke/7eyes/iwd/stun.2da create mode 100644 eefixpack/files/tph/luke/7eyes/iwd/web.2da delete mode 100644 eefixpack/files/tph/luke/7eyes/panic.tph delete mode 100644 eefixpack/files/tph/luke/7eyes/paralyze.tph delete mode 100644 eefixpack/files/tph/luke/7eyes/petrification.tph delete mode 100644 eefixpack/files/tph/luke/7eyes/poison.tph delete mode 100644 eefixpack/files/tph/luke/7eyes/power_word_stun.tph delete mode 100644 eefixpack/files/tph/luke/7eyes/silence.tph delete mode 100644 eefixpack/files/tph/luke/7eyes/stun.tph create mode 100644 eefixpack/files/tph/luke/false_dawn.tph create mode 100644 eefixpack/files/tph/luke/three_white_doves.tph diff --git a/eefixpack/files/lib/gt_7eyes.tph b/eefixpack/files/lib/gt_7eyes.tph index 7e07175c..d5da7687 100644 --- a/eefixpack/files/lib/gt_7eyes.tph +++ b/eefixpack/files/lib/gt_7eyes.tph @@ -1,438 +1,673 @@ ///////////////////////////////////////////////////////////////// /* -Take some subset of a spell or item's effects and extract them as a subspell. -(I tweaked DavidW's function to suite my needs) +1) Take some subset of a spell or item's effects and extract them as a subspell. +2) Reorder effect stack. */ ////////////////////////////////////////////////////////////////// -DEFINE_PATCH_FUNCTION "gt_extract_effects_as_subspell" +DEFINE_ACTION_FUNCTION "7EYES-O-MATIC" INT_VAR - "ability" = "-1" // all + "splstate" = "-1" + "effectID" = "-1" + "damage_type" = "-1" // for use with op12 + // + "write" = 0 // when set to 1, files to be edited are autogenerated, and then recorded in folders "eefixpack\files\tph\luke\7eyes\iwd" (or similar, it's game-dependent). The idea is to set "write=1" in development and then put "write=0" in live code STR_VAR - "subspell_resref" = "" // without extension - "extract" = "" + "opcode_extra" = "" // space-separated list of ancillary opcodes (such as op0 and op126 for op154) + "feedback_string" = "" // comma-separated list of ancillary feedback strings + "feedback_icon" = "" // space-separated list of ancillary feedback portrait icons + "feedback_vfx" = "" // space-separated list of ancillary feedback visual effects + // + "2da_filespec" = "" BEGIN - // Validate input - PATCH_IF (("%extract%" STRING_MATCHES_REGEXP "^[0-9]+\(,[0-9]+\)*$") == 0) BEGIN - // process the extraction instruction - LPF "ARRAY_OF_LIST" - STR_VAR - "list" = "%extract%" - "separator" = "," - RET_ARRAY - "extract_array" = "array" + ACTION_IF ("%effectID%" == 12) BEGIN + OUTER_PATCH "" BEGIN + SPRINTF "hexNumber" "%x" ("%damage_type%") END - // Mark specified effects for later detection - LPF "MARK_EFFECTS" RET "damage_opcode" RET_ARRAY "extracted_data" END - // Cast a subspell with the specified effects - PATCH_IF "%damage_opcode%" BEGIN - LPF "ALTER_EFFECT" INT_VAR "check_globals" = 0 "header" = "%ability%" "match_opcode" = 998 "opcode" = 146 "parameter1" = 0 "parameter2" = 1 "timing" = 1 "duration" = 0 "dicenumber" = 0 "dicesize" = 0 "savingthrow" = 0 "savebonus" = 0 "special" = 0 STR_VAR "resource" = "%subspell_resref%" END - END ELSE BEGIN - LPF "ALTER_EFFECT" INT_VAR "check_globals" = 0 "header" = "%ability%" "match_opcode" = 998 "opcode" = 146 "parameter1" = 0 "parameter2" = 1 "timing" = 1 "duration" = 0 "special" = 0 STR_VAR "resource" = "%subspell_resref%" END + END + ACTION_IF "%write%" BEGIN + OUTER_TEXT_SPRINT "preferred_subspell_resref" "****" + WITH_SCOPE BEGIN + COPY_EXISTING "kitlist.2da" "%2da_filespec%" + DELETE_BYTES 0x0 BUFFER_LENGTH + INSERT_BYTES 0x0 STRING_LENGTH "2DA V1.0%WNL%****%WNL%%TAB%FILE SUBSPELL%WNL%" + WRITE_ASCII 0x0 "2DA V1.0%WNL%****%WNL%%TAB%FILE SUBSPELL%WNL%" + BUT_ONLY_IF_IT_CHANGES END - LPF "DELETE_EFFECT" INT_VAR "check_globals" = 0 "header" = "%ability%" "match_opcode" = 999 END - // Now build the new spl file - LPF "MAKE_SUBSPELL" STR_VAR "subspell_resref" END + COPY_EXISTING_REGEXP "^.+\.\(spl\|itm\)$" "override" + PATCH_IF ("%DEST_RES%" STRING_CONTAINS_REGEXP "^__") BEGIN + LPF "7EYES-O-MATIC#CORE" END + END + BUT_ONLY END ELSE BEGIN - PATCH_FAIL "gt_extract_effects_as_subspell: Invalid input => ~%extract%~" + COPY - "%2da_filespec%" "override" + READ_2DA_ENTRIES_NOW "read_2da_file" 0 + FOR ("i" = 3 ; "%i%" < "%read_2da_file%" ; "i" += 1) BEGIN // skip first 3 rows... + READ_2DA_ENTRY_FORMER "read_2da_file" "%i%" 1 "file_to_patch" + READ_2DA_ENTRY_FORMER "read_2da_file" "%i%" 2 "preferred_subspell_resref" + INNER_ACTION BEGIN + COPY_EXISTING "%file_to_patch%" "override" + LPF "7EYES-O-MATIC#CORE" END + BUT_ONLY IF_EXISTS // skip SoD assets if needed + END + END + BUT_ONLY_IF_IT_CHANGES END END -///////////////////////////////////////////////////////////////// -/* -For the current itm/spl file, take the effect stack for an ability and permute the order of the effects -(I tweaked DavidW's function to suite my needs) - -*/ -////////////////////////////////////////////////////////////////// +//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\ +//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\ +//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\ -DEFINE_PATCH_FUNCTION "gt_permute_effects" -INT_VAR - "ability" = "-1" // all -STR_VAR - "permutation" = "" +DEFINE_PATCH_FUNCTION "7EYES-O-MATIC#CORE" BEGIN - // Validate input - PATCH_IF (("%permutation%" STRING_MATCHES_REGEXP "^[0-9]+=>-?[0-9]+\(,[0-9]+=>-?[0-9]+\)*$") == 0) BEGIN - // Initialize + PATCH_IF !("%effectID%" == 12) OR ("%DEST_EXT%" STR_EQ "SPL") BEGIN // intentionally skip ITM files if "%effectID%" == 0xC (since op12 is usually applied with no ancillary effects...) PATCH_MATCH "%DEST_EXT%" WITH - "itm" BEGIN - GET_OFFSET_ARRAY "ab_array" ITM_V10_HEADERS - END - "spl" BEGIN + "SPL" BEGIN GET_OFFSET_ARRAY "ab_array" SPL_V10_HEADERS END + "ITM" BEGIN + GET_OFFSET_ARRAY "ab_array" ITM_V10_HEADERS + END DEFAULT - PATCH_FAIL "Should not happen (~%DEST_FILE%~)" END - // Main + TEXT_SPRINT "subspell_resref" "" + // PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN - PATCH_IF ("%ability%" == "-1") OR ("%ab_ind%" == "%ability%") BEGIN - PATCH_WITH_SCOPE BEGIN - GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" ITM_V10_HEAD_EFFECTS // NB, same for spl and itm - WHILE ("%permutation%" STRING_COMPARE_CASE "") BEGIN - LPF "RETURN_FIRST_ENTRY" - STR_VAR - "list_in" = "%permutation%" - "separator" = "," - RET - "entry" - "permutation" = "list_out" - END - INNER_PATCH "%entry%" BEGIN - REPLACE_EVALUATE "^\([0-9]+\)=>\(-?[0-9]+\)$" BEGIN - SET "old_idx" = "%MATCH1%" - SET "new_idx" = "%MATCH2%" - END - "" + SET "found" = 0 + SET "found_other" = 0 + SET "clone_fx" = "-1" + SET "#_matches" = 0 + CLEAR_ARRAY "7eyes-o-matic#main" + CLEAR_ARRAY "7eyes-o-matic#ancillary" + CLEAR_ARRAY "7eyes-o-matic#other" + // + PATCH_MATCH "%DEST_EXT%" WITH + "SPL" BEGIN + LOOKUP_IDS_SYMBOL_OF_INT "pro_res" "projectl" (SHORT_AT ("%ab_off%" + 0x26) - 1) + READ_SHORT ("%ab_off%" + 0x10) "ab_level" + READ_ASCII ("%ab_off%" + 0x4) "ab_icon" + END + "ITM" BEGIN + LOOKUP_IDS_SYMBOL_OF_INT "pro_res" "projectl" (SHORT_AT ("%ab_off%" + 0x2A) - 1) + READ_BYTE ("%ab_off%" + 0x17) "ab_mschool" + READ_BYTE ("%ab_off%" + 0x19) "ab_msectype" + SET "ab_level" = 1 + READ_ASCII ("%ab_off%" + 0x4) "ab_icon" + END + DEFAULT + END + SET "projectile_type" = 2 // single-target + INNER_PATCH_FILE "%pro_res%.pro" BEGIN + READ_SHORT 0x8 "projectile_type" + END + // in case of op39, skip troll-related assets (f.i. "cdtorgal.spl") + READ_BYTE ("%ab_off%" + 0xC) "ab_target" + PATCH_IF ("%effectID%" == 39) BEGIN + SET "skip_sleep" = 0 + PATCH_MATCH "%ab_target%" WITH + 5 7 BEGIN + PATCH_IF ("%projectile_type%" != 3) BEGIN + SET "skip_sleep" = 1 END - PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN - PATCH_IF ("%fx_ind%" == "%old_idx%") BEGIN - // Save current values - READ_SHORT ("%fx_off%" + 0x0) "fx_opcode" - READ_BYTE ("%fx_off%" + 0x2) "fx_target" - READ_BYTE ("%fx_off%" + 0x3) "fx_power" - READ_SLONG ("%fx_off%" + 0x4) "fx_parameter1" - READ_SLONG ("%fx_off%" + 0x8) "fx_parameter2" - READ_BYTE ("%fx_off%" + 0xC) "fx_timing" - READ_BYTE ("%fx_off%" + 0xD) "fx_resist_dispel" - READ_LONG ("%fx_off%" + 0xE) "fx_duration" - READ_BYTE ("%fx_off%" + 0x12) "fx_probability1" - READ_BYTE ("%fx_off%" + 0x13) "fx_probability2" - READ_ASCII ("%fx_off%" + 0x14) "fx_resref" - READ_LONG ("%fx_off%" + 0x1C) "fx_max_level" - READ_LONG ("%fx_off%" + 0x20) "fx_min_level" - READ_LONG ("%fx_off%" + 0x24) "fx_savetype" - READ_SLONG ("%fx_off%" + 0x28) "fx_savebonus" - READ_SLONG ("%fx_off%" + 0x2C) "fx_special" - TEXT_SPRINT $"fx_data"("%fx_opcode%" "%fx_target%" "%fx_power%" "%fx_parameter1%" "%fx_parameter2%" "%fx_timing%" "%fx_resist_dispel%" "%fx_duration%" "%fx_probability1%" "%fx_probability2%" "%fx_resref%" "%fx_max_level%" "%fx_min_level%" "%fx_savetype%" "%fx_savebonus%" "%fx_special%" "%old_idx%" "%new_idx%") "irrelevant" - // Mark it for deletion - WRITE_SHORT "%fx_off%" 999 + END + DEFAULT + END + END + // + GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" SPL_V10_HEAD_EFFECTS + SET "sleep_type" = "-1" + PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN + READ_SHORT "%fx_off%" "fx_opcode" + READ_BYTE ("%fx_off%" + 0x2) "fx_target" + READ_BYTE ("%fx_off%" + 0x3) "fx_power" + READ_SLONG ("%fx_off%" + 0x4) "fx_parameter1" + READ_LONG ("%fx_off%" + 0x8) "fx_parameter2" + READ_BYTE ("%fx_off%" + 0xC) "fx_timing" + READ_BYTE ("%fx_off%" + 0xD) "fx_resist_dispel" + READ_LONG ("%fx_off%" + 0xE) "fx_duration" + READ_BYTE ("%fx_off%" + 0x12) "fx_probability1" + READ_BYTE ("%fx_off%" + 0x13) "fx_probability2" + READ_ASCII ("%fx_off%" + 0x14) "fx_resource" + READ_LONG ("%fx_off%" + 0x1C) "fx_dicenumber" + READ_LONG ("%fx_off%" + 0x20) "fx_dicesize" + READ_LONG ("%fx_off%" + 0x24) "fx_savetype" + READ_SLONG ("%fx_off%" + 0x28) "fx_savebonus" + READ_LONG ("%fx_off%" + 0x2C) "fx_special" + // + PATCH_MATCH "%fx_opcode%" WITH + "%effectID%" BEGIN + PATCH_IF !("%effectID%" == 12) OR ("%fx_parameter2%" >> 16 == "%damage_type%" >> 16) BEGIN // if "%effectID%" == 0xC, then check Damage Type... + PATCH_IF !("%effectID%" == 12) OR ("%fx_ind%" < SHORT_AT ("%ab_off%" + 0x1E) - 1) BEGIN // if "%effectID%" == 0xC, then make sure it is not last in the effect stack... + PATCH_IF !("%effectID%" == 39) OR ("%skip_sleep%" == 0 AND "%fx_target%" != 1) BEGIN // skip special cases such as iwd "%WIZARD_GREAT_SHOUT%.spl" (which should always hit, since it is part of the spell's drawback) + PATCH_IF ("%effectID%" == 142) BEGIN + PATCH_MATCH "%fx_parameter2%" WITH + 86 BEGIN + SET "found" = 1 + SET "#_matches" += 1 + SET "clone_fx" = "%clone_fx%" == "-1" ? "%fx_opcode%" : "%clone_fx%" + TEXT_SPRINT $"7eyes-o-matic#main"("%fx_opcode%" "%fx_target%" "%fx_power%" "%fx_parameter1%" "%fx_parameter2%" "%fx_timing%" "%fx_resist_dispel%" "%fx_duration%" "%fx_probability1%" "%fx_probability2%" "%fx_resource%" "%fx_dicenumber%" "%fx_dicesize%" "%fx_savetype%" "%fx_savebonus%" "%fx_special%" "%fx_ind%" "%ab_ind%" "%projectile_type%") "" + WRITE_SHORT "%fx_off%" 1000 + // + LPF "ADD_IDS_ENTRY" STR_VAR "idsFile" = "splstate" "identifier" = "DEVOUR_BRAIN_IMMUNITY" RET "splstate" = "value" END + TEXT_SPRINT "opcode_extra" "19" + TEXT_SPRINT "feedback_string" "Devour brain" + // + SET "icon_type" = 86 + END + 91 BEGIN + SET "found" = 1 + SET "#_matches" += 1 + SET "clone_fx" = "%clone_fx%" == "-1" ? "%fx_opcode%" : "%clone_fx%" + TEXT_SPRINT $"7eyes-o-matic#main"("%fx_opcode%" "%fx_target%" "%fx_power%" "%fx_parameter1%" "%fx_parameter2%" "%fx_timing%" "%fx_resist_dispel%" "%fx_duration%" "%fx_probability1%" "%fx_probability2%" "%fx_resource%" "%fx_dicenumber%" "%fx_dicesize%" "%fx_savetype%" "%fx_savebonus%" "%fx_special%" "%fx_ind%" "%ab_ind%" "%projectile_type%") "" + WRITE_SHORT "%fx_off%" 1000 + // + LPF "ADD_IDS_ENTRY" STR_VAR "idsFile" = "splstate" "identifier" = "ABILITY_SCORE_DRAIN_IMMUNITY" RET "splstate" = "value" END + TEXT_SPRINT "opcode_extra" "6 10 15 19 44 49 97" + TEXT_SPRINT "feedback_string" "Ability Score Drained, Weakened, Strength Modification, Constitution Modification, Dexterity Modification, Charisma Modification, Wisdom Modification, Intelligence Modification" + // + SET "icon_type" = 91 + END + 168 BEGIN + SET "found" = 1 + SET "#_matches" += 1 + SET "clone_fx" = "%clone_fx%" == "-1" ? "%fx_opcode%" : "%clone_fx%" + TEXT_SPRINT $"7eyes-o-matic#main"("%fx_opcode%" "%fx_target%" "%fx_power%" "%fx_parameter1%" "%fx_parameter2%" "%fx_timing%" "%fx_resist_dispel%" "%fx_duration%" "%fx_probability1%" "%fx_probability2%" "%fx_resource%" "%fx_dicenumber%" "%fx_dicesize%" "%fx_savetype%" "%fx_savebonus%" "%fx_special%" "%fx_ind%" "%ab_ind%" "%projectile_type%") "" + WRITE_SHORT "%fx_off%" 1000 + // + LPF "ADD_IDS_ENTRY" STR_VAR "idsFile" = "splstate" "identifier" = "PHASE_IMMUNITY" RET "splstate" = "value" END + TEXT_SPRINT "opcode_extra" "272 65" + TEXT_SPRINT "feedback_string" "Phased" + // + SET "icon_type" = 168 + END + DEFAULT + END + END ELSE BEGIN + SET "found" = 1 + SET "#_matches" += 1 + SET "clone_fx" = "%clone_fx%" == "-1" ? "%fx_opcode%" : "%clone_fx%" + TEXT_SPRINT $"7eyes-o-matic#main"("%fx_opcode%" "%fx_target%" "%fx_power%" "%fx_parameter1%" "%fx_parameter2%" "%fx_timing%" "%fx_resist_dispel%" "%fx_duration%" "%fx_probability1%" "%fx_probability2%" "%fx_resource%" "%fx_dicenumber%" "%fx_dicesize%" "%fx_savetype%" "%fx_savebonus%" "%fx_special%" "%fx_ind%" "%ab_ind%" "%projectile_type%") "" + WRITE_SHORT "%fx_off%" 1000 + END + END END END END - // Add the saved effects at the specified new position - PATCH_MATCH "%DEST_EXT%" WITH - "itm" BEGIN - PHP_EACH "fx_data" AS "fx_attributes" => "" BEGIN - LPF "ADD_ITEM_EFFECT" - INT_VAR - "type" = 99 // all types - "header" = "%ab_ind%" + 1 // count starts from 1 instead of 0!!! - "opcode" = "%fx_attributes_0%" - "target" = "%fx_attributes_1%" - "power" = "%fx_attributes_2%" - "parameter1" = "%fx_attributes_3%" - "parameter2" = "%fx_attributes_4%" - "timing" = "%fx_attributes_5%" - "resist_dispel" = "%fx_attributes_6%" - "duration" = "%fx_attributes_7%" - "probability1" = "%fx_attributes_8%" - "probability2" = "%fx_attributes_9%" - "dicenumber" = "%fx_attributes_11%" - "dicesize" = "%fx_attributes_12%" - "savingthrow" = "%fx_attributes_13%" - "savebonus" = "%fx_attributes_14%" - "special" = "%fx_attributes_15%" - "insert_point" = "%fx_attributes_17%" - STR_VAR - "resource" = "%fx_attributes_10%" + 177 283 WHEN ("%effectID%" != 142) BEGIN + SET "found_eff" = 0 + INNER_PATCH_FILE "%fx_resource%.eff" BEGIN + PATCH_MATCH LONG_AT 0x10 WITH + "%effectID%" BEGIN + PATCH_IF !("%effectID%" == 12) OR (LONG_AT 0x20 >> 16 == "%damage_type%" >> 16) BEGIN // if "%effectID%" == 0xC, then check Damage Type... + SET "found" = 1 + SET "#_matches" += 1 + SET "found_eff" = 1 + SET "clone_fx" = "%clone_fx%" == "-1" ? "%fx_opcode%" : "%clone_fx%" + TEXT_SPRINT $"7eyes-o-matic#main"("%fx_opcode%" "%fx_target%" "%fx_power%" "%fx_parameter1%" "%fx_parameter2%" "%fx_timing%" "%fx_resist_dispel%" "%fx_duration%" "%fx_probability1%" "%fx_probability2%" "%fx_resource%" "%fx_dicenumber%" "%fx_dicesize%" "%fx_savetype%" "%fx_savebonus%" "%fx_special%" "%fx_ind%" "%ab_ind%" "%projectile_type%") "" + END END + DEFAULT END END - "spl" BEGIN - PHP_EACH "fx_data" AS "fx_attributes" => "" BEGIN - LPF "ADD_SPELL_EFFECT" - INT_VAR - "header" = "%ab_ind%" + 1 // count starts from 1 instead of 0!!! - "opcode" = "%fx_attributes_0%" - "target" = "%fx_attributes_1%" - "power" = "%fx_attributes_2%" - "parameter1" = "%fx_attributes_3%" - "parameter2" = "%fx_attributes_4%" - "timing" = "%fx_attributes_5%" - "resist_dispel" = "%fx_attributes_6%" - "duration" = "%fx_attributes_7%" - "probability1" = "%fx_attributes_8%" - "probability2" = "%fx_attributes_9%" - "dicenumber" = "%fx_attributes_11%" - "dicesize" = "%fx_attributes_12%" - "savingthrow" = "%fx_attributes_13%" - "savebonus" = "%fx_attributes_14%" - "special" = "%fx_attributes_15%" - "insert_point" = "%fx_attributes_17%" - STR_VAR - "resource" = "%fx_attributes_10%" + PATCH_IF "%found_eff%" BEGIN + WRITE_SHORT "%fx_off%" 1000 + END + END + // Sleep must be treated separately + 318 324 BEGIN // protection from resource + PATCH_IF ("%effectID%" == 39) BEGIN + PATCH_MATCH "%fx_parameter2%" WITH + 15 19 BEGIN // RACE=ELF || RACE=HALF_ELF + SET "sleep_type" += 1 + TEXT_SPRINT "feedback_icon" "14" + END + 47 55 BEGIN // RACE=MYCONID || GENERAL=UNDEAD || RACE=GOLEM + SET "sleep_type" = 2 + TEXT_SPRINT "feedback_icon" "126" END + DEFAULT END END - DEFAULT - PATCH_FAIL "File not supported (~%DEST_FILE%~)" END - LPF "DELETE_EFFECT" INT_VAR "check_globals" = 0 "header" = "%ab_ind%" "match_opcode" = 999 END // delete old instances + 269 BEGIN // shake screen + PATCH_IF ("%effectID%" == 39) BEGIN + SET "sleep_type" = 3 + TEXT_SPRINT "feedback_icon" "14 130" + END + END + 235 BEGIN // wing buffet + PATCH_IF ("%effectID%" == 39) BEGIN + SET "sleep_type" = 4 + TEXT_SPRINT "feedback_icon" "14 130" + TEXT_SPRINT "opcode_extra" "235" + END + END + // + 142 WHEN ("%fx_parameter2%" == 137) BEGIN // bleeding + PATCH_IF ("%effectID%" == 12) BEGIN + LPF "ADD_IDS_ENTRY" STR_VAR "idsFile" = "splstate" "identifier" = "BLEEDING_IMMUNITY" RET "splstate" = "value" END + END + END + DEFAULT END END - END - END ELSE BEGIN - PATCH_FAIL "gt_permute_effects: Invalid input => ~%permutation%~" - END -END - -///////////////////////////////////////////////////////////////// -/* - -Auxiliary functions - -*/ -////////////////////////////////////////////////////////////////// - -DEFINE_PATCH_FUNCTION "MARK_EFFECTS" -RET - "damage_opcode" -RET_ARRAY - "extracted_data" -BEGIN - // Initialize - PATCH_CLEAR_ARRAY "extracted_data" - SET "damage_opcode" = 0 - PATCH_MATCH "%DEST_EXT%" WITH - "itm" BEGIN - GET_OFFSET_ARRAY "ab_array" ITM_V10_HEADERS - END - "spl" BEGIN - GET_OFFSET_ARRAY "ab_array" SPL_V10_HEADERS - END - DEFAULT - PATCH_FAIL "Should not happen (~%DEST_FILE%~)" - END - // Main - PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN - PATCH_IF ("%ability%" == "-1") OR ("%ab_ind%" == "%ability%") BEGIN - GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" ITM_V10_HEAD_EFFECTS // NB, same for spl and itm - SET "done_first" = 0 - PHP_EACH "extract_array" AS "new_ind" => "fx_ind" BEGIN - // Sanity check - LAUNCH_PATCH_FUNCTION ~ARRAY_CONTAINS~ - STR_VAR - "array" = "fx_array" // array name - "key" = "%fx_ind%" - RET - ~found~ + // + PATCH_IF "%found%" BEGIN + PATCH_IF ("%effectID%" == 39) BEGIN + PATCH_MATCH "%sleep_type%" WITH + 1 BEGIN + LPF "ADD_IDS_ENTRY" STR_VAR "idsFile" = "splstate" "identifier" = "SLEEP_IMMUNITY" RET "splstate" = "value" END + END + 2 BEGIN + LPF "ADD_IDS_ENTRY" STR_VAR "idsFile" = "splstate" "identifier" = "NAUSEA_IMMUNITY" RET "splstate" = "value" END + END + 3 BEGIN + LPF "ADD_IDS_ENTRY" STR_VAR "idsFile" = "splstate" "identifier" = "EARTHQUAKE_IMMUNITY" RET "splstate" = "value" END + END + 4 BEGIN + LPF "ADD_IDS_ENTRY" STR_VAR "idsFile" = "splstate" "identifier" = "KNOCKBACK_IMMUNITY" RET "splstate" = "value" END + END + DEFAULT + LPF "ADD_IDS_ENTRY" STR_VAR "idsFile" = "splstate" "identifier" = "UNCONSCIOUS_IMMUNITY" RET "splstate" = "value" END + TEXT_SPRINT "feedback_icon" "14 44 126 130" + TEXT_SPRINT "opcode_extra" "328" + END END - PATCH_IF ~%found%~ BEGIN - //SET "offset" = $"fx_array"("%fx_ind%") - PATCH_IF !("%done_first%") BEGIN - // Save current values - READ_SHORT $"fx_array"("%fx_ind%") "fx_opcode" - READ_BYTE ($"fx_array"("%fx_ind%") + 0x2) "fx_target" - READ_BYTE ($"fx_array"("%fx_ind%") + 0x3) "fx_power" - READ_SLONG ($"fx_array"("%fx_ind%") + 0x4) "fx_parameter1" - READ_SLONG ($"fx_array"("%fx_ind%") + 0x8) "fx_parameter2" - READ_BYTE ($"fx_array"("%fx_ind%") + 0xC) "fx_timing" - READ_BYTE ($"fx_array"("%fx_ind%") + 0xD) "fx_resist_dispel" - READ_LONG ($"fx_array"("%fx_ind%") + 0xE) "fx_duration" - READ_BYTE ($"fx_array"("%fx_ind%") + 0x12) "fx_probability1" - READ_BYTE ($"fx_array"("%fx_ind%") + 0x13) "fx_probability2" - READ_ASCII ($"fx_array"("%fx_ind%") + 0x14) "fx_resref" - READ_LONG ($"fx_array"("%fx_ind%") + 0x1C) "fx_max_level" - READ_LONG ($"fx_array"("%fx_ind%") + 0x20) "fx_min_level" - READ_LONG ($"fx_array"("%fx_ind%") + 0x24) "fx_savetype" - READ_SLONG ($"fx_array"("%fx_ind%") + 0x28) "fx_savebonus" - READ_SLONG ($"fx_array"("%fx_ind%") + 0x2C) "fx_special" - TEXT_SPRINT $"extracted_data"("%fx_opcode%" "%fx_target%" "%fx_power%" "%fx_parameter1%" "%fx_parameter2%" "%fx_timing%" "%fx_resist_dispel%" "%fx_duration%" "%fx_probability1%" "%fx_probability2%" "%fx_resref%" "%fx_max_level%" "%fx_min_level%" "%fx_savetype%" "%fx_savebonus%" "%fx_special%" "%new_ind%" "%ab_ind%") "irrelevant" - // Mark it - WRITE_SHORT $"fx_array"("%fx_ind%") 998 - SET "done_first" = 1 - END ELSE BEGIN - // Save current values - READ_SHORT $"fx_array"("%fx_ind%") "fx_opcode" - READ_BYTE ($"fx_array"("%fx_ind%") + 0x2) "fx_target" - READ_BYTE ($"fx_array"("%fx_ind%") + 0x3) "fx_power" - READ_SLONG ($"fx_array"("%fx_ind%") + 0x4) "fx_parameter1" - READ_SLONG ($"fx_array"("%fx_ind%") + 0x8) "fx_parameter2" - READ_BYTE ($"fx_array"("%fx_ind%") + 0xC) "fx_timing" - READ_BYTE ($"fx_array"("%fx_ind%") + 0xD) "fx_resist_dispel" - READ_LONG ($"fx_array"("%fx_ind%") + 0xE) "fx_duration" - READ_BYTE ($"fx_array"("%fx_ind%") + 0x12) "fx_probability1" - READ_BYTE ($"fx_array"("%fx_ind%") + 0x13) "fx_probability2" - READ_ASCII ($"fx_array"("%fx_ind%") + 0x14) "fx_resref" - READ_LONG ($"fx_array"("%fx_ind%") + 0x1C) "fx_max_level" - READ_LONG ($"fx_array"("%fx_ind%") + 0x20) "fx_min_level" - READ_LONG ($"fx_array"("%fx_ind%") + 0x24) "fx_savetype" - READ_SLONG ($"fx_array"("%fx_ind%") + 0x28) "fx_savebonus" - READ_SLONG ($"fx_array"("%fx_ind%") + 0x2C) "fx_special" - TEXT_SPRINT $"extracted_data"("%fx_opcode%" "%fx_target%" "%fx_power%" "%fx_parameter1%" "%fx_parameter2%" "%fx_timing%" "%fx_resist_dispel%" "%fx_duration%" "%fx_probability1%" "%fx_probability2%" "%fx_resref%" "%fx_max_level%" "%fx_min_level%" "%fx_savetype%" "%fx_savebonus%" "%fx_special%" "%new_ind%" "%ab_ind%") "irrelevant" - // Mark it - WRITE_SHORT $"fx_array"("%fx_ind%") 999 + // Record "%DEST_FILE%" if in 'write' mode + /* + PATCH_WITH_SCOPE BEGIN + PATCH_IF "%write%" BEGIN + INNER_ACTION BEGIN + OUTER_TEXT_SPRINT "outer_destFile" "%DEST_FILE%" + COPY "%2da_filespec%" "%2da_filespec%" + COUNT_2DA_ROWS 0 "rows" + SET "count" = "%rows%" - 3 + INSERT_2DA_ROW "%rows%" 0 "%count% %outer_destFile% ****" + // prettify + PRETTY_PRINT_2DA + BUT_ONLY UNLESS "%outer_destFile%" + END END - END ELSE BEGIN - PATCH_FAIL "gt_extract_effects_as_subspell, ~%DEST_FILE%~: effect #%fx_ind% does not exist on ability #%ab_ind%" END - END - END - END - PHP_EACH "extracted_data" AS "effect_attributes" => "" BEGIN - PATCH_IF ("%effect_attributes_0%" == 12) BEGIN - SET "damage_opcode" = 1 - END - END -END - -DEFINE_PATCH_FUNCTION "MAKE_SUBSPELL" -STR_VAR - "subspell_resref" = "" -BEGIN - PATCH_IF !(FILE_EXISTS_IN_GAME "%subspell_resref%.spl") AND ("%subspell_resref%" STRING_COMPARE_CASE "") BEGIN - TO_LOWER "subspell_resref" - PATCH_MATCH "%DEST_EXT%" WITH - "ITM" BEGIN - READ_ASCII 0x3A "header_icon" - SET "hdr" = "%ability%" < 0 ? 0 : "%ability%" - SET "primary_type" = BYTE_AT (LONG_AT 0x64 + 0x38 * "%hdr%" + 0x17) - SET "secondary_type" = BYTE_AT (LONG_AT 0x64 + 0x38 * "%hdr%" + 0x19) - READ_ASCII (LONG_AT 0x64 + 0x38 * "%hdr%" + 0x4) "ability_icon" - LPF "GET_PROJECTILE_TYPE" RET "projectile_type" END - INNER_ACTION BEGIN - CREATE "SPL" "%subspell_resref%" - /* Header */ - WRITE_LONG NAME1 "-1" - WRITE_LONG NAME2 "-1" - WRITE_LONG UNIDENTIFIED_DESC "-1" - WRITE_LONG DESC "-1" - WRITE_LONG 0x18 BIT14 // Ignore dead/wild magic - WRITE_BYTE 0x25 "%primary_type%" - WRITE_BYTE 0x27 "%secondary_type%" - WRITE_LONG 0x34 1 // Spell level - WRITE_EVALUATED_ASCII 0x3A "%header_icon%" #8 - WRITE_LONG 0x64 0x72 // Extended Header offset - WRITE_SHORT 0x68 1 // Extended Header count - WRITE_LONG 0x6A 0x9A // Feature Block Table offset - INSERT_BYTES 0x72 0x28 - /* Extended header */ - WRITE_EVALUATED_ASCII 0x76 "%ability_icon%" #8 - WRITE_SHORT 0x80 0x7FFF // Range (max signed value) - WRITE_SHORT 0x82 1 // Minimum level - WRITE_SHORT 0x98 IDS_OF_SYMBOL ("MISSILE" "None") // Projectile - /* Feature blocks */ - PHP_EACH "extracted_data" AS "effect_attributes" => "" BEGIN - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = "%effect_attributes_0%" - "target" = "%effect_attributes_1%" - "power" = "%projectile_type%" == 3 ? 0 : "%effect_attributes_2%" - "parameter1" = "%effect_attributes_3%" - "parameter2" = "%effect_attributes_4%" - "timing" = "%effect_attributes_5%" - "resist_dispel" = ("%effect_attributes_6%" == BIT0 ? BIT0 | BIT1 : "%effect_attributes_6%") - "duration" = "%effect_attributes_7%" - "dicenumber" = "%damage_opcode%" ? "%effect_attributes_11%" : 0 - "dicesize" = "%damage_opcode%" ? "%effect_attributes_12%" : 0 - "savingthrow" = "%damage_opcode%" ? "%effect_attributes_13%" : 0 - "savebonus" = "%damage_opcode%" ? "%effect_attributes_14%" : 0 - "special" = "%effect_attributes_15%" - STR_VAR - "resource" = "%effect_attributes_10%" + */ + // + GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" SPL_V10_HEAD_EFFECTS + PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN + READ_SHORT "%fx_off%" "fx_opcode" + READ_BYTE ("%fx_off%" + 0x2) "fx_target" + READ_BYTE ("%fx_off%" + 0x3) "fx_power" + READ_SLONG ("%fx_off%" + 0x4) "fx_parameter1" + READ_LONG ("%fx_off%" + 0x8) "fx_parameter2" + READ_BYTE ("%fx_off%" + 0xC) "fx_timing" + READ_BYTE ("%fx_off%" + 0xD) "fx_resist_dispel" + READ_LONG ("%fx_off%" + 0xE) "fx_duration" + READ_BYTE ("%fx_off%" + 0x12) "fx_probability1" + READ_BYTE ("%fx_off%" + 0x13) "fx_probability2" + READ_ASCII ("%fx_off%" + 0x14) "fx_resource" + READ_LONG ("%fx_off%" + 0x1C) "fx_dicenumber" + READ_LONG ("%fx_off%" + 0x20) "fx_dicesize" + READ_LONG ("%fx_off%" + 0x24) "fx_savetype" + READ_SLONG ("%fx_off%" + 0x28) "fx_savebonus" + READ_LONG ("%fx_off%" + 0x2C) "fx_special" + // + PATCH_MATCH "%fx_opcode%" WITH + 1000 BEGIN END // ignore mark + // + 12 WHEN ("%effectID%" == 12) BEGIN + PATCH_MATCH "%damage_type%" WITH + IDS_OF_SYMBOL ("dmgtype" "fire") IDS_OF_SYMBOL ("dmgtype" "cold") IDS_OF_SYMBOL ("dmgtype" "electricity") IDS_OF_SYMBOL ("dmgtype" "acid") BEGIN + PATCH_MATCH ("%fx_parameter2%" >> 16) WITH + IDS_OF_SYMBOL ("dmgtype" "fire") >> 16 + IDS_OF_SYMBOL ("dmgtype" "cold") >> 16 + IDS_OF_SYMBOL ("dmgtype" "electricity") >> 16 + IDS_OF_SYMBOL ("dmgtype" "acid") >> 16 BEGIN + TEXT_SPRINT $"7eyes-o-matic#ancillary"("%fx_opcode%" "%fx_target%" "%fx_power%" "%fx_parameter1%" "%fx_parameter2%" "%fx_timing%" "%fx_resist_dispel%" "%fx_duration%" "%fx_probability1%" "%fx_probability2%" "%fx_resource%" "%fx_dicenumber%" "%fx_dicesize%" "%fx_savetype%" "%fx_savebonus%" "%fx_special%" "%fx_ind%" "%ab_ind%" "%projectile_type%") "" + WRITE_SHORT "%fx_off%" 999 + END + DEFAULT + SET "found_other" = 1 + END + END + IDS_OF_SYMBOL ("dmgtype" "piercing") IDS_OF_SYMBOL ("dmgtype" "missile") IDS_OF_SYMBOL ("dmgtype" "slashing") IDS_OF_SYMBOL ("dmgtype" "crushing") BEGIN + PATCH_MATCH ("%fx_parameter2%" >> 16) WITH + IDS_OF_SYMBOL ("dmgtype" "piercing") >> 16 + IDS_OF_SYMBOL ("dmgtype" "missile") >> 16 + IDS_OF_SYMBOL ("dmgtype" "slashing") >> 16 + IDS_OF_SYMBOL ("dmgtype" "crushing") >> 16 BEGIN + TEXT_SPRINT $"7eyes-o-matic#ancillary"("%fx_opcode%" "%fx_target%" "%fx_power%" "%fx_parameter1%" "%fx_parameter2%" "%fx_timing%" "%fx_resist_dispel%" "%fx_duration%" "%fx_probability1%" "%fx_probability2%" "%fx_resource%" "%fx_dicenumber%" "%fx_dicesize%" "%fx_savetype%" "%fx_savebonus%" "%fx_special%" "%fx_ind%" "%ab_ind%" "%projectile_type%") "" + WRITE_SHORT "%fx_off%" 999 + END + DEFAULT + SET "found_other" = 1 + END + END + DEFAULT + PATCH_FAIL "Invalid Damage Type (%damage_type%)" END END - END - END - "SPL" BEGIN - READ_ASCII 0x0 "current_content" (BUFFER_LENGTH) // read current content - INNER_ACTION BEGIN - CREATE "SPL" "%subspell_resref%" - INSERT_BYTES 0x72 (STRING_LENGTH "%current_content%" - 0x72) // insert missing bytes - WRITE_EVALUATED_ASCII 0x0 "%current_content%" - /* Header */ - WRITE_LONG NAME1 "-1" - WRITE_LONG NAME2 "-1" - WRITE_ASCII 0x10 "" #8 // no casting sound - WRITE_LONG UNIDENTIFIED_DESC "-1" - WRITE_LONG DESC "-1" - WRITE_LONG 0x1E 0 // no exclusion flags - WRITE_SHORT 0x22 0 // no casting animation - /* Extended header */ - PATCH_WITH_SCOPE BEGIN - GET_OFFSET_ARRAY "ab_array" SPL_V10_HEADERS - PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN - PATCH_MATCH "%ability%" WITH - "-1" "%ab_ind%" BEGIN END + /*12 WHEN ("%effectID%" == 25) AND ("%fx_parameter2%" >> 16 == IDS_OF_SYMBOL ("dmgtype" "poison") >> 16) BEGIN + TEXT_SPRINT $"7eyes-o-matic#ancillary"("%fx_opcode%" "%fx_target%" "%fx_power%" "%fx_parameter1%" "%fx_parameter2%" "%fx_timing%" "%fx_resist_dispel%" "%fx_duration%" "%fx_probability1%" "%fx_probability2%" "%fx_resource%" "%fx_dicenumber%" "%fx_dicesize%" "%fx_savetype%" "%fx_savebonus%" "%fx_special%" "%fx_ind%" "%ab_ind%" "%projectile_type%") "" + WRITE_SHORT "%fx_off%" 999 + END*/ + // + 7 8 9 50 51 52 BEGIN + PATCH_IF ("%fx_duration%" > 0) AND ("%effectID%" != 12) BEGIN + TEXT_SPRINT $"7eyes-o-matic#ancillary"("%fx_opcode%" "%fx_target%" "%fx_power%" "%fx_parameter1%" "%fx_parameter2%" "%fx_timing%" "%fx_resist_dispel%" "%fx_duration%" "%fx_probability1%" "%fx_probability2%" "%fx_resource%" "%fx_dicenumber%" "%fx_dicesize%" "%fx_savetype%" "%fx_savebonus%" "%fx_special%" "%fx_ind%" "%ab_ind%" "%projectile_type%") "" + WRITE_SHORT "%fx_off%" 998 + END + END + 41 61 140 141 165 170 265 269 BEGIN END + 206 318 324 BEGIN + PATCH_IF ("%fx_ind%" == SHORT_AT ("%ab_off%" + 0x1E) - 1) AND ("%fx_resource%" STR_EQ "%DEST_RES%") BEGIN // if last in the effect stack... + SET "found_other" = 1 + END ELSE BEGIN + PATCH_IF ("%fx_resource%" STRING_COMPARE_CASE "%DEST_RES%") AND (("%opcode_extra%" STRING_CONTAINS_REGEXP "\b%fx_opcode%\b") == 0) BEGIN + TEXT_SPRINT $"7eyes-o-matic#ancillary"("%fx_opcode%" "%fx_target%" "%fx_power%" "%fx_parameter1%" "%fx_parameter2%" "%fx_timing%" "%fx_resist_dispel%" "%fx_duration%" "%fx_probability1%" "%fx_probability2%" "%fx_resource%" "%fx_dicenumber%" "%fx_dicesize%" "%fx_savetype%" "%fx_savebonus%" "%fx_special%" "%fx_ind%" "%ab_ind%" "%projectile_type%") "" + WRITE_SHORT "%fx_off%" 999 + END + END + END + 321 BEGIN + PATCH_IF ("%fx_resource%" STR_EQ "%DEST_RES%") BEGIN + TEXT_SPRINT $"7eyes-o-matic#ancillary"("%fx_opcode%" "%fx_target%" "%fx_power%" "%fx_parameter1%" "%fx_parameter2%" "%fx_timing%" "%fx_resist_dispel%" "%fx_duration%" "%fx_probability1%" "%fx_probability2%" "%fx_resource%" "%fx_dicenumber%" "%fx_dicesize%" "%fx_savetype%" "%fx_savebonus%" "%fx_special%" "%fx_ind%" "%ab_ind%" "%projectile_type%") "" + WRITE_SHORT "%fx_off%" 997 + END + END + 139 BEGIN + LPF "GT_GET_STRING" INT_VAR "strref" = "%fx_parameter1%" RET "string" END + LPF "COUNT_ELEMENT_INSTANCES" STR_VAR "list_in" = "%feedback_string%" "element" = "%string%" "separator" = ", " RET "count" END + PATCH_IF "%count%" BEGIN + TEXT_SPRINT $"7eyes-o-matic#ancillary"("%fx_opcode%" "%fx_target%" "%fx_power%" "%fx_parameter1%" "%fx_parameter2%" "%fx_timing%" "%fx_resist_dispel%" "%fx_duration%" "%fx_probability1%" "%fx_probability2%" "%fx_resource%" "%fx_dicenumber%" "%fx_dicesize%" "%fx_savetype%" "%fx_savebonus%" "%fx_special%" "%fx_ind%" "%ab_ind%" "%projectile_type%") "" + WRITE_SHORT "%fx_off%" 999 + END + END + 142 BEGIN + PATCH_IF (("%feedback_icon%" STRING_CONTAINS_REGEXP "\b%fx_parameter2%\b") == 0) BEGIN + TEXT_SPRINT $"7eyes-o-matic#ancillary"("%fx_opcode%" "%fx_target%" "%fx_power%" "%fx_parameter1%" "%fx_parameter2%" "%fx_timing%" "%fx_resist_dispel%" "%fx_duration%" "%fx_probability1%" "%fx_probability2%" "%fx_resource%" "%fx_dicenumber%" "%fx_dicesize%" "%fx_savetype%" "%fx_savebonus%" "%fx_special%" "%fx_ind%" "%ab_ind%" "%projectile_type%") "" + WRITE_SHORT "%fx_off%" 999 + END + END + 215 BEGIN + PATCH_IF ("%fx_duration%" > 5) AND (("%feedback_vfx%" STRING_CONTAINS_REGEXP "\b%fx_resource%\b") == 0) BEGIN + TEXT_SPRINT $"7eyes-o-matic#ancillary"("%fx_opcode%" "%fx_target%" "%fx_power%" "%fx_parameter1%" "%fx_parameter2%" "%fx_timing%" "%fx_resist_dispel%" "%fx_duration%" "%fx_probability1%" "%fx_probability2%" "%fx_resource%" "%fx_dicenumber%" "%fx_dicesize%" "%fx_savetype%" "%fx_savebonus%" "%fx_special%" "%fx_ind%" "%ab_ind%" "%projectile_type%") "" + WRITE_SHORT "%fx_off%" 999 + END + END + 174 BEGIN + PATCH_IF ("%fx_timing%" == 4) AND ("%effectID%" != 12) BEGIN + TEXT_SPRINT $"7eyes-o-matic#ancillary"("%fx_opcode%" "%fx_target%" "%fx_power%" "%fx_parameter1%" "%fx_parameter2%" "%fx_timing%" "%fx_resist_dispel%" "%fx_duration%" "%fx_probability1%" "%fx_probability2%" "%fx_resource%" "%fx_dicenumber%" "%fx_dicesize%" "%fx_savetype%" "%fx_savebonus%" "%fx_special%" "%fx_ind%" "%ab_ind%" "%projectile_type%") "" + WRITE_SHORT "%fx_off%" 998 + END + END + // + 177 283 BEGIN + SET "found_eff" = 0 + INNER_PATCH_FILE "%fx_resource%.eff" BEGIN + PATCH_MATCH LONG_AT 0x10 WITH + 7 8 9 41 50 51 52 61 140 141 165 170 265 269 BEGIN END + 33 34 35 36 37 325 WHEN LONG_AT 0x20 == 3 BEGIN END // save vs. X (Increment instantaneously) + 139 BEGIN + LPF "GT_GET_STRING" INT_VAR "strref" = SLONG_AT 0x1C RET "string" END + LPF "COUNT_ELEMENT_INSTANCES" STR_VAR "list_in" = "%feedback_string%" "element" = "%string%" "separator" = ", " RET "count" END + PATCH_IF "%count%" BEGIN + SET "found_eff" = 1 + TEXT_SPRINT $"7eyes-o-matic#ancillary"("%fx_opcode%" "%fx_target%" "%fx_power%" "%fx_parameter1%" "%fx_parameter2%" "%fx_timing%" "%fx_resist_dispel%" "%fx_duration%" "%fx_probability1%" "%fx_probability2%" "%fx_resource%" "%fx_dicenumber%" "%fx_dicesize%" "%fx_savetype%" "%fx_savebonus%" "%fx_special%" "%fx_ind%" "%ab_ind%" "%projectile_type%") "" + END + END + 142 BEGIN + READ_LONG 0x20 "eff_icon" + PATCH_IF (("%feedback_icon%" STRING_CONTAINS_REGEXP "\b%eff_icon%\b") == 0) BEGIN + SET "found_eff" = 1 + TEXT_SPRINT $"7eyes-o-matic#ancillary"("%fx_opcode%" "%fx_target%" "%fx_power%" "%fx_parameter1%" "%fx_parameter2%" "%fx_timing%" "%fx_resist_dispel%" "%fx_duration%" "%fx_probability1%" "%fx_probability2%" "%fx_resource%" "%fx_dicenumber%" "%fx_dicesize%" "%fx_savetype%" "%fx_savebonus%" "%fx_special%" "%fx_ind%" "%ab_ind%" "%projectile_type%") "" + END + END + 215 BEGIN + READ_ASCII 0x30 "eff_vfx" + PATCH_IF (("%feedback_vfx%" STRING_CONTAINS_REGEXP "\b%eff_vfx%\b") == 0) BEGIN + SET "found_eff" = 1 + TEXT_SPRINT $"7eyes-o-matic#ancillary"("%fx_opcode%" "%fx_target%" "%fx_power%" "%fx_parameter1%" "%fx_parameter2%" "%fx_timing%" "%fx_resist_dispel%" "%fx_duration%" "%fx_probability1%" "%fx_probability2%" "%fx_resource%" "%fx_dicenumber%" "%fx_dicesize%" "%fx_savetype%" "%fx_savebonus%" "%fx_special%" "%fx_ind%" "%ab_ind%" "%projectile_type%") "" + END + END + 235 WHEN ("%effectID%" == 39) BEGIN + SET "found_eff" = 1 + TEXT_SPRINT $"7eyes-o-matic#ancillary"("%fx_opcode%" "%fx_target%" "%fx_power%" "%fx_parameter1%" "%fx_parameter2%" "%fx_timing%" "%fx_resist_dispel%" "%fx_duration%" "%fx_probability1%" "%fx_probability2%" "%fx_resource%" "%fx_dicenumber%" "%fx_dicesize%" "%fx_savetype%" "%fx_savebonus%" "%fx_special%" "%fx_ind%" "%ab_ind%" "%projectile_type%") "" + END + 206 BEGIN END DEFAULT - WRITE_BYTE "%ab_off%" 0xFF // mark it for deletion (max unsigned value) + SET "found_other" = 1 + TEXT_SPRINT $"7eyes-o-matic#other"("%fx_opcode%" "%fx_target%" "%fx_power%" "%fx_parameter1%" "%fx_parameter2%" "%fx_timing%" "%fx_resist_dispel%" "%fx_duration%" "%fx_probability1%" "%fx_probability2%" "%fx_resource%" "%fx_dicenumber%" "%fx_dicesize%" "%fx_savetype%" "%fx_savebonus%" "%fx_special%" "%fx_ind%" "%ab_ind%" "%projectile_type%") "" END END - LPF "DELETE_SPELL_HEADER" INT_VAR "header_type" = 0xFF END + PATCH_IF "%found_eff%" BEGIN + WRITE_SHORT "%fx_off%" 999 + END END - LPF "GET_PROJECTILE_TYPE" RET "projectile_type" END // this assumes all abilities share the same PRO file - LAUNCH_PATCH_FUNCTION "ALTER_SPELL_HEADER" - INT_VAR - "range" = 0x7FFF // max signed value - "speed" = 0 - "projectile" = IDS_OF_SYMBOL ("MISSILE" "None") + // + DEFAULT + PATCH_IF (("%opcode_extra%" STRING_CONTAINS_REGEXP "\b%fx_opcode%\b") == 0) BEGIN + PATCH_IF !("%effectID%" == 142 AND ("%icon_type%" == 86 OR "%icon_type%" == 91)) OR ("%fx_parameter1%" < 0) BEGIN + TEXT_SPRINT $"7eyes-o-matic#ancillary"("%fx_opcode%" "%fx_target%" "%fx_power%" "%fx_parameter1%" "%fx_parameter2%" "%fx_timing%" "%fx_resist_dispel%" "%fx_duration%" "%fx_probability1%" "%fx_probability2%" "%fx_resource%" "%fx_dicenumber%" "%fx_dicesize%" "%fx_savetype%" "%fx_savebonus%" "%fx_special%" "%fx_ind%" "%ab_ind%" "%projectile_type%") "" + WRITE_SHORT "%fx_off%" 999 + END ELSE BEGIN + SET "found_other" = 1 + TEXT_SPRINT $"7eyes-o-matic#other"("%fx_opcode%" "%fx_target%" "%fx_power%" "%fx_parameter1%" "%fx_parameter2%" "%fx_timing%" "%fx_resist_dispel%" "%fx_duration%" "%fx_probability1%" "%fx_probability2%" "%fx_resource%" "%fx_dicenumber%" "%fx_dicesize%" "%fx_savetype%" "%fx_savebonus%" "%fx_special%" "%fx_ind%" "%ab_ind%" "%projectile_type%") "" + END + END ELSE BEGIN + SET "found_other" = 1 + TEXT_SPRINT $"7eyes-o-matic#other"("%fx_opcode%" "%fx_target%" "%fx_power%" "%fx_parameter1%" "%fx_parameter2%" "%fx_timing%" "%fx_resist_dispel%" "%fx_duration%" "%fx_probability1%" "%fx_probability2%" "%fx_resource%" "%fx_dicenumber%" "%fx_dicesize%" "%fx_savetype%" "%fx_savebonus%" "%fx_special%" "%fx_ind%" "%ab_ind%" "%projectile_type%") "" + END + END + END + // + PATCH_IF ("%found_other%" OR ("%DEST_EXT%" STR_EQ "ITM")) BEGIN + // Make subspell + PATCH_MATCH "%DEST_EXT%" WITH + "SPL" BEGIN + PATCH_IF ("%subspell_resref%" STRING_EQUAL_CASE "") BEGIN + PATCH_MATCH "%effectID%" WITH + 12 BEGIN + PATCH_IF ("%preferred_subspell_resref%" STRING_COMPARE_CASE "****") BEGIN + TEXT_SPRINT "subspell_resref" "%preferred_subspell_resref%" + END ELSE BEGIN + LPF "GET_UNIQUE_FILE_NAME" STR_VAR "extension" = "spl" "base" = "%DEST_FILE%-Subspell_Applying_Opcode#%effectID%#%hexNumber%" RET "subspell_resref" = "filename" END + END + END + 142 BEGIN + PATCH_IF ("%preferred_subspell_resref%" STRING_COMPARE_CASE "****") BEGIN + TEXT_SPRINT "subspell_resref" "%preferred_subspell_resref%" + END ELSE BEGIN + LPF "GET_UNIQUE_FILE_NAME" STR_VAR "extension" = "spl" "base" = "%DEST_FILE%-Subspell_Applying_Opcode#%effectID%#%icon_type%" RET "subspell_resref" = "filename" END + END + END + DEFAULT + PATCH_IF ("%preferred_subspell_resref%" STRING_COMPARE_CASE "****") BEGIN + TEXT_SPRINT "subspell_resref" "%preferred_subspell_resref%" + END ELSE BEGIN + LPF "GET_UNIQUE_FILE_NAME" STR_VAR "extension" = "spl" "base" = "%DEST_FILE%-Subspell_Applying_Opcode#%effectID%" RET "subspell_resref" = "filename" END + END + END + // Record "%DEST_FILE%" if in 'write' mode + PATCH_WITH_SCOPE BEGIN + PATCH_IF "%write%" BEGIN + // + INNER_PATCH_SAVE "subspell_resref" "%subspell_resref%" BEGIN + REPLACE_TEXTUALLY CASE_INSENSITIVE EVALUATE_REGEXP "^__" "cd" + END + TO_UPPER "subspell_resref" + // + INNER_ACTION BEGIN + OUTER_TEXT_SPRINT "outer_destFile" "%DEST_FILE%" + COPY "%2da_filespec%" "%2da_filespec%" + COUNT_2DA_ROWS 0 "rows" + SET "count" = "%rows%" - 3 + INSERT_2DA_ROW "%rows%" 0 "%count% %outer_destFile% %subspell_resref%" + // prettify + PRETTY_PRINT_2DA + BUT_ONLY UNLESS "%outer_destFile%" + END + END + END + // + PATCH_WITH_SCOPE BEGIN + INNER_ACTION BEGIN + COPY_EXISTING "%DEST_FILE%" "override\%subspell_resref%.spl" + WRITE_LONG NAME1 "-1" // blank name + WRITE_ASCII 0x10 "" #8 // blank casting sound + WRITE_SHORT 0x22 0 // blank casting animation + LPF "DELETE_SPELL_HEADER" INT_VAR "header_type" = "-1" END // delete abilities and associated effects + LPF "DELETE_EFFECT" INT_VAR "check_headers" = 0 END // delete casting feature blocks + BUT_ONLY + END + END + END END - // Sanity check - PATCH_MATCH SHORT_AT 0x68 WITH - 0 BEGIN - PATCH_FAIL "MAKE_SUBSPELL: ~%DEST_FILE%~ has 0 abilities... Wut???" + "ITM" BEGIN + PATCH_MATCH "%effectID%" WITH + 142 BEGIN + PATCH_IF ("%preferred_subspell_resref%" STRING_COMPARE_CASE "****") BEGIN + TEXT_SPRINT "subspell_resref" "%preferred_subspell_resref%" + END ELSE BEGIN + LPF "GET_UNIQUE_FILE_NAME" STR_VAR "extension" = "spl" "base" = "%DEST_FILE%-Ability#%ab_ind%_Subspell_Applying_Opcode#%effectID%#%icon_type%" RET "subspell_resref" = "filename" END + END + END + DEFAULT + PATCH_IF ("%preferred_subspell_resref%" STRING_COMPARE_CASE "****") BEGIN + TEXT_SPRINT "subspell_resref" "%preferred_subspell_resref%" + END ELSE BEGIN + LPF "GET_UNIQUE_FILE_NAME" STR_VAR "extension" = "spl" "base" = "%DEST_FILE%-Ability#%ab_ind%_Subspell_Applying_Opcode#%effectID%" RET "subspell_resref" = "filename" END + END + END + // Record "%DEST_FILE%" if in 'write' mode + PATCH_WITH_SCOPE BEGIN + PATCH_IF "%write%" BEGIN + // + INNER_PATCH_SAVE "subspell_resref" "%subspell_resref%" BEGIN + REPLACE_TEXTUALLY CASE_INSENSITIVE EVALUATE_REGEXP "^__" "cd" + END + TO_UPPER "subspell_resref" + // + INNER_ACTION BEGIN + OUTER_TEXT_SPRINT "outer_destFile" "%DEST_FILE%" + COPY "%2da_filespec%" "%2da_filespec%" + COUNT_2DA_ROWS 0 "rows" + SET "count" = "%rows%" - 3 + INSERT_2DA_ROW "%rows%" 0 "%count% %outer_destFile% %subspell_resref%" + // prettify + PRETTY_PRINT_2DA + BUT_ONLY UNLESS "%outer_destFile%" + END + END + END + // + PATCH_WITH_SCOPE BEGIN + INNER_ACTION BEGIN + CREATE "spl" "%subspell_resref%" + COPY_EXISTING "%subspell_resref%.spl" "override" + WRITE_LONG NAME1 "-1" + WRITE_LONG UNIDENTIFIED_DESC "-1" + WRITE_SHORT 0x1C 4 // innate + WRITE_LONG 0x34 1 // level + WRITE_BYTE 0x25 "%ab_mschool%" + WRITE_BYTE 0x27 "%ab_msectype%" + WRITE_ASCII 0x3A "%ab_icon%" #8 + BUT_ONLY_IF_IT_CHANGES + END END - 1 BEGIN - LPF ~ALTER_SPELL_HEADER~ INT_VAR ~min_level~ = 1 END + END + DEFAULT + END + // Patch subspell + PATCH_WITH_SCOPE BEGIN + INNER_ACTION BEGIN + COPY_EXISTING "%subspell_resref%.spl" "override" + PATCH_WITH_SCOPE BEGIN + LPF "ADD_SPELL_ABILITY" INT_VAR ~range~ = 0x7FFF ~minimum_level~ = SHORT_AT 0x68 == 0 ? 1 : "%ab_level%" STR_VAR "icon" = "%ab_icon%" END + TEXT_SPRINT "sfx_duration" "" // needed for special cases like bg(2) "ghast1.itm" (i.e multiple delayed op174 effects) + PHP_EACH "7eyes-o-matic#main" AS "fx_attribute" => "" BEGIN + TEXT_SPRINT "sfx_duration" "%sfx_duration% %fx_attribute_7%" + LPF "ADD_SPELL_EFFECT" INT_VAR "header" = SHORT_AT 0x68 "opcode" = "%fx_attribute_0%" "target" = "%fx_attribute_1%" "power" = ("%fx_attribute_18%" == 3 ? 0 : "%fx_attribute_2%") "parameter1" = "%fx_attribute_3%" "parameter2" = "%fx_attribute_4%" "timing" = "%fx_attribute_5%" "resist_dispel" = ("%fx_attribute_6%" == BIT0 ? BIT0 | BIT1 : "%fx_attribute_6%") "duration" = "%fx_attribute_7%" "probability1" = ("%#_matches%" > 1 ? "%fx_attribute_8%" : 100) "probability2" = ("%#_matches%" > 1 ? "%fx_attribute_9%" : 0) "dicenumber" = ("%#_matches%" > 1 OR "%effectID%" == 12 ? "%fx_attribute_11%" : 0) "dicesize" = ("%#_matches%" > 1 OR "%effectID%" == 12 ? "%fx_attribute_12%" : 0) "savingthrow" = ("%#_matches%" > 1 OR "%effectID%" == 12 ? "%fx_attribute_13%" : 0) "savebonus" = ("%#_matches%" > 1 OR "%effectID%" == 12 ? "%fx_attribute_14%" : 0) "special" = "%fx_attribute_15%" STR_VAR "resource" = "%fx_attribute_10%" END + END + PHP_EACH "7eyes-o-matic#ancillary" AS "fx_attribute" => "" BEGIN + PATCH_MATCH "%fx_attribute_0%" WITH + 7 8 9 50 51 52 174 BEGIN + PATCH_IF (("%sfx_duration%" STRING_CONTAINS_REGEXP "\b%fx_attribute_7%\b") == 0) BEGIN + LPF "ADD_SPELL_EFFECT" INT_VAR "header" = SHORT_AT 0x68 "opcode" = "%fx_attribute_0%" "target" = "%fx_attribute_1%" "power" = ("%fx_attribute_18%" == 3 ? 0 : "%fx_attribute_2%") "parameter1" = "%fx_attribute_3%" "parameter2" = "%fx_attribute_4%" "timing" = "%fx_attribute_5%" "resist_dispel" = ("%fx_attribute_6%" == BIT0 ? BIT0 | BIT1 : "%fx_attribute_6%") "duration" = "%fx_attribute_7%" "probability1" = ("%#_matches%" > 1 ? "%fx_attribute_8%" : 100) "probability2" = ("%#_matches%" > 1 ? "%fx_attribute_9%" : 0) "dicenumber" = ("%#_matches%" > 1 OR "%effectID%" == 12 ? "%fx_attribute_11%" : 0) "dicesize" = ("%#_matches%" > 1 OR "%effectID%" == 12 ? "%fx_attribute_12%" : 0) "savingthrow" = ("%#_matches%" > 1 OR "%effectID%" == 12 ? "%fx_attribute_13%" : 0) "savebonus" = ("%#_matches%" > 1 OR "%effectID%" == 12 ? "%fx_attribute_14%" : 0) "special" = "%fx_attribute_15%" STR_VAR "resource" = "%fx_attribute_10%" END + END + END + 321 BEGIN + LPF "ADD_SPELL_EFFECT" INT_VAR "insert_point" = 0 "header" = SHORT_AT 0x68 "opcode" = "%fx_attribute_0%" "target" = "%fx_attribute_1%" "power" = ("%fx_attribute_18%" == 3 ? 0 : "%fx_attribute_2%") "parameter1" = "%fx_attribute_3%" "parameter2" = "%fx_attribute_4%" "timing" = "%fx_attribute_5%" "resist_dispel" = ("%fx_attribute_6%" == BIT0 ? BIT0 | BIT1 : "%fx_attribute_6%") "duration" = "%fx_attribute_7%" "probability1" = ("%#_matches%" > 1 ? "%fx_attribute_8%" : 100) "probability2" = ("%#_matches%" > 1 ? "%fx_attribute_9%" : 0) "dicenumber" = ("%#_matches%" > 1 OR "%effectID%" == 12 ? "%fx_attribute_11%" : 0) "dicesize" = ("%#_matches%" > 1 OR "%effectID%" == 12 ? "%fx_attribute_12%" : 0) "savingthrow" = ("%#_matches%" > 1 OR "%effectID%" == 12 ? "%fx_attribute_13%" : 0) "savebonus" = ("%#_matches%" > 1 OR "%effectID%" == 12 ? "%fx_attribute_14%" : 0) "special" = "%fx_attribute_15%" STR_VAR "resource" = "%DEST_RES%" END + END + DEFAULT + LPF "ADD_SPELL_EFFECT" INT_VAR "header" = SHORT_AT 0x68 "opcode" = "%fx_attribute_0%" "target" = "%fx_attribute_1%" "power" = ("%fx_attribute_18%" == 3 ? 0 : "%fx_attribute_2%") "parameter1" = "%fx_attribute_3%" "parameter2" = "%fx_attribute_4%" "timing" = "%fx_attribute_5%" "resist_dispel" = ("%fx_attribute_6%" == BIT0 ? BIT0 | BIT1 : "%fx_attribute_6%") "duration" = "%fx_attribute_7%" "probability1" = ("%#_matches%" > 1 ? "%fx_attribute_8%" : 100) "probability2" = ("%#_matches%" > 1 ? "%fx_attribute_9%" : 0) "dicenumber" = ("%#_matches%" > 1 OR "%effectID%" == 12 ? "%fx_attribute_11%" : 0) "dicesize" = ("%#_matches%" > 1 OR "%effectID%" == 12 ? "%fx_attribute_12%" : 0) "savingthrow" = ("%#_matches%" > 1 OR "%effectID%" == 12 ? "%fx_attribute_13%" : 0) "savebonus" = ("%#_matches%" > 1 OR "%effectID%" == 12 ? "%fx_attribute_14%" : 0) "special" = "%fx_attribute_15%" STR_VAR "resource" = "%fx_attribute_10%" END + END + END + END + BUT_ONLY + END + END + // Patch parent file => check probabilities and saving throw on the subspell if necessary (needed for op12, iwdee "sflail.itm", iwdee "%WIZARD_GREAT_SHOUT%", possibly others...) + LPF "ALTER_EFFECT" INT_VAR "check_globals" = 0 "header" = "%ab_ind%" "multi_match" = 1 "match_opcode" = 1000 "match_parameter2" = ("%effectID%" == 142 ? "%icon_type%" : "-1") "opcode" = ("%effectID%" == 12 AND "%splstate%" == "-1" ? 146 : 326) "parameter1" = ("%effectID%" == 12 AND "%splstate%" == "-1" ? 0 : "%splstate%") "parameter2" = ("%effectID%" == 12 AND "%splstate%" == "-1" ? 1 : 111) "timing" = 1 "duration" = 0 "probability1" = ("%#_matches%" > 1 ? 100 : "-1") "probability2" = ("%#_matches%" > 1 ? 0 : "-1") "savingthrow" = ("%#_matches%" > 1 OR "%effectID%" == 12 ? 0 : "-1") "savebonus" = ("%#_matches%" > 1 OR "%effectID%" == 12 ? 0 : "-100") "dicenumber" = ("%#_matches%" > 1 OR "%effectID%" == 12 ? 0 : "-1") "dicesize" = ("%#_matches%" > 1 OR "%effectID%" == 12 ? 0 : "-1") "special" = 0 STR_VAR "resource" = "%subspell_resref%" END + LPF "DELETE_EFFECT" INT_VAR "check_globals" = 0 "header" = "%ab_ind%" "match_opcode" = 1000 END + LPF "DELETE_EFFECT" INT_VAR "check_globals" = 0 "header" = "%ab_ind%" "match_opcode" = 999 END + // + PATCH_WITH_SCOPE BEGIN + PHP_EACH "7eyes-o-matic#ancillary" AS "fx_attribute" => "" BEGIN + PATCH_MATCH "%fx_attribute_0%" WITH + 7 8 9 50 51 52 174 BEGIN + SET "restore_cosmetic" = 0 + PHP_EACH "7eyes-o-matic#other" AS "fx_attribute2" => "" BEGIN + PATCH_IF ("%fx_attribute2_7%" == "%fx_attribute_7%") AND ("%fx_attribute2_0%" != 0xC) BEGIN + SET "restore_cosmetic" = 1 + END + END + PATCH_IF "%restore_cosmetic%" BEGIN + LPF "ALTER_EFFECT" INT_VAR "check_globals" = 0 "header" = "%ab_ind%" "multi_match" = 1 "match_opcode" = 998 "opcode" = "%fx_attribute_0%" END + END ELSE BEGIN + LPF "DELETE_EFFECT" INT_VAR "check_globals" = 0 "header" = "%ab_ind%" "multi_match" = 1 "match_opcode" = 998 END + END + END + 321 BEGIN + LPF "ALTER_EFFECT" INT_VAR "check_globals" = 0 "header" = "%ab_ind%" "multi_match" = 1 "match_opcode" = 997 "opcode" = 321 END + END + DEFAULT END - DEFAULT END - /* Feature blocks */ - LPF "DELETE_EFFECT" END // delete current content - PHP_EACH "extracted_data" AS "effect_attributes" => "" BEGIN - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = "%effect_attributes_0%" - "target" = "%effect_attributes_1%" - "power" = "%projectile_type%" == 3 ? 0 : "%effect_attributes_2%" - "parameter1" = "%effect_attributes_3%" - "parameter2" = "%effect_attributes_4%" - "timing" = "%effect_attributes_5%" - "resist_dispel" = ("%effect_attributes_6%" == BIT0 ? BIT0 | BIT1 : "%effect_attributes_6%") - "duration" = "%effect_attributes_7%" - "dicenumber" = "%damage_opcode%" ? "%effect_attributes_11%" : 0 - "dicesize" = "%damage_opcode%" ? "%effect_attributes_12%" : 0 - "savingthrow" = "%damage_opcode%" ? "%effect_attributes_13%" : 0 - "savebonus" = "%damage_opcode%" ? "%effect_attributes_14%" : 0 - "special" = "%effect_attributes_15%" - "header" = (SHORT_AT 0x68) == 1 ? 1 : "%effect_attributes_17%" + 1 // count starts from 1 instead of 0!!! - STR_VAR - "resource" = "%effect_attributes_10%" + END + END ELSE BEGIN + // Record "%DEST_FILE%" if in 'write' mode + PATCH_WITH_SCOPE BEGIN + PATCH_IF "%write%" BEGIN + INNER_ACTION BEGIN + OUTER_TEXT_SPRINT "outer_destFile" "%DEST_FILE%" + COPY "%2da_filespec%" "%2da_filespec%" + COUNT_2DA_ROWS 0 "rows" + SET "count" = "%rows%" - 3 + INSERT_2DA_ROW "%rows%" 0 "%count% %outer_destFile% ****" + // prettify + PRETTY_PRINT_2DA + BUT_ONLY UNLESS "%outer_destFile%" END END + END + // Reorder effect stack + LPF "DELETE_EFFECT" INT_VAR "check_globals" = 0 "header" = "%ab_ind%" "match_opcode" = 1000 END + LPF "DELETE_EFFECT" INT_VAR "check_globals" = 0 "header" = "%ab_ind%" "match_opcode" = 999 END + LPF "DELETE_EFFECT" INT_VAR "check_globals" = 0 "header" = "%ab_ind%" "match_opcode" = 998 END + LPF "DELETE_EFFECT" INT_VAR "check_globals" = 0 "header" = "%ab_ind%" "match_opcode" = 997 END + PATCH_WITH_SCOPE BEGIN + PHP_EACH "7eyes-o-matic#main" AS "fx_attribute" => "" BEGIN + LPF "ADD_SPELL_EFFECT" INT_VAR "header" = ("%ab_ind%" + 1) "opcode" = "%fx_attribute_0%" "target" = "%fx_attribute_1%" "power" = "%fx_attribute_2%" "parameter1" = "%fx_attribute_3%" "parameter2" = "%fx_attribute_4%" "timing" = "%fx_attribute_5%" "resist_dispel" = "%fx_attribute_6%" "duration" = "%fx_attribute_7%" "probability1" = "%fx_attribute_8%" "probability2" = "%fx_attribute_9%" "dicenumber" = "%fx_attribute_11%" "dicesize" = "%fx_attribute_12%" "savingthrow" = "%fx_attribute_13%" "savebonus" = "%fx_attribute_14%" "special" = "%fx_attribute_15%" STR_VAR "resource" = "%fx_attribute_10%" END + END + PHP_EACH "7eyes-o-matic#ancillary" AS "fx_attribute" => "" BEGIN + LPF "ADD_SPELL_EFFECT" INT_VAR "insert_point" = ("%fx_attribute_0%" == 321 ? 0 : "-1") "header" = ("%ab_ind%" + 1) "opcode" = "%fx_attribute_0%" "target" = "%fx_attribute_1%" "power" = "%fx_attribute_2%" "parameter1" = "%fx_attribute_3%" "parameter2" = "%fx_attribute_4%" "timing" = "%fx_attribute_5%" "resist_dispel" = "%fx_attribute_6%" "duration" = "%fx_attribute_7%" "probability1" = "%fx_attribute_8%" "probability2" = "%fx_attribute_9%" "dicenumber" = "%fx_attribute_11%" "dicesize" = "%fx_attribute_12%" "savingthrow" = "%fx_attribute_13%" "savebonus" = "%fx_attribute_14%" "special" = "%fx_attribute_15%" STR_VAR "resource" = "%fx_attribute_10%" END + END + END + LPF "CLONE_EFFECT" INT_VAR "silent" = 1 "header" = "%ab_ind%" "check_globals" = 0 "check_headers" = ("%effectID%" == 12 AND "%splstate%" == "-1" ? 0 : 1) "multi_match" = 1 "match_opcode" = "%clone_fx%" "match_parameter2" = ("%effectID%" == 142 ? "%icon_type%" : "-1") "opcode" = (SLONG_AT NAME1 > 0 ? 324 : 318) "parameter1" = "%splstate%" "parameter2" = 110 "timing" = 0 "duration" = 0 "special" = 0 STR_VAR "resource" = "%DEST_RES%" END // Immunity to resource and message END END - DEFAULT - PATCH_FAIL "Should not happen (~%DEST_FILE%~)" END - END ELSE BEGIN - //PATCH_WARN "SPL file ~%subspell_resref%~ already exists as a game resource! Intended?" END END - -DEFINE_PATCH_FUNCTION "GET_PROJECTILE_TYPE" -RET - "projectile_type" -BEGIN - PATCH_MATCH "%DEST_EXT%" WITH - "itm" BEGIN - LOOKUP_IDS_SYMBOL_OF_INT "pro_resref" "projectl" (SHORT_AT (LONG_AT 0x64 + 0x38 * "%hdr%" + 0x2A) - 1) - END - "spl" BEGIN - LOOKUP_IDS_SYMBOL_OF_INT "pro_resref" "projectl" (SHORT_AT (0x98) - 1) - END - DEFAULT - PATCH_FAIL "Should not happen" - END - PATCH_IF (FILE_EXISTS_IN_GAME "%pro_resref%.pro") BEGIN - INNER_PATCH_FILE "%pro_resref%.pro" BEGIN - READ_SHORT 0x8 "projectile_type" - END - END ELSE BEGIN - SET "projectile_type" = "-1" - END -END \ No newline at end of file diff --git a/eefixpack/files/lib/gt_functions.tph b/eefixpack/files/lib/gt_functions.tph index f7263d87..64f90822 100644 --- a/eefixpack/files/lib/gt_functions.tph +++ b/eefixpack/files/lib/gt_functions.tph @@ -1,107 +1,107 @@ DEFINE_PATCH_FUNCTION "COUNT_V10_HEAD_EFFECTS" STR_VAR - "opcode" = "-1" // regexp allowed (if needed) - "parameter2" = "same" // regexp allowed (if needed) - "timing_exclude" = "none" // regexp allowed (if needed) - "resource" = "same" // regexp allowed (if needed) + "opcode" = "-1" // regexp allowed (if needed) + "parameter2" = "same" // regexp allowed (if needed) + "timing_exclude" = "none" // regexp allowed (if needed) + "resource" = "same" // regexp allowed (if needed) RET - "count" + "count" BEGIN - // Initialize - SET "count" = 0 - // Main - GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" 0x6a 4 0x1e 2 0x20 2 0x30 - PHP_EACH "fx_array" AS "_" => "fx_off" BEGIN - PATCH_MATCH (SHORT_AT "%fx_off%") WITH - "%opcode%" BEGIN - READ_SLONG ("%fx_off%" + 0x8) "p2" - READ_BYTE ("%fx_off%" + 0xC) "tmg" - PATCH_IF ("%parameter2%" STRING_EQUAL_CASE "same") OR (IS_AN_INT "parameter2" AND "%p2%" == "%parameter2%") OR (("%p2%" STRING_MATCHES_REGEXP "%parameter2%") == 0) BEGIN - PATCH_IF ("%timing_exclude%" STRING_EQUAL_CASE "none") OR (IS_AN_INT "timing_exclude" AND "%tmg%" != "%timing_exclude%") OR ("%tmg%" STRING_MATCHES_REGEXP "%timing_exclude%") BEGIN - READ_ASCII ("%fx_off%" + 0x14) "resref" - PATCH_IF ("%resource%" STRING_EQUAL_CASE "same") OR (("%resref%" STRING_MATCHES_REGEXP "%resource%") == 0) BEGIN - SET "count" += 1 - END - END - END - END - DEFAULT - END - END + // Initialize + SET "count" = 0 + // Main + GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" 0x6a 4 0x1e 2 0x20 2 0x30 + PHP_EACH "fx_array" AS "_" => "fx_off" BEGIN + PATCH_MATCH (SHORT_AT "%fx_off%") WITH + "%opcode%" BEGIN + READ_SLONG ("%fx_off%" + 0x8) "p2" + READ_BYTE ("%fx_off%" + 0xC) "tmg" + PATCH_IF ("%parameter2%" STRING_EQUAL_CASE "same") OR (IS_AN_INT "parameter2" AND "%p2%" == "%parameter2%") OR (("%p2%" STRING_MATCHES_REGEXP "%parameter2%") == 0) BEGIN + PATCH_IF ("%timing_exclude%" STRING_EQUAL_CASE "none") OR (IS_AN_INT "timing_exclude" AND "%tmg%" != "%timing_exclude%") OR ("%tmg%" STRING_MATCHES_REGEXP "%timing_exclude%") BEGIN + READ_ASCII ("%fx_off%" + 0x14) "resref" + PATCH_IF ("%resource%" STRING_EQUAL_CASE "same") OR (("%resref%" STRING_MATCHES_REGEXP "%resource%") == 0) BEGIN + SET "count" += 1 + END + END + END + END + DEFAULT + END + END END DEFINE_PATCH_FUNCTION "GET_V10_HEAD_EFFECTS" RET_ARRAY - "v10_head_effects" + "v10_head_effects" BEGIN - // Initialize - PATCH_CLEAR_ARRAY "v10_head_effects" - PATCH_MATCH "%DEST_EXT%" WITH - "ITM" BEGIN - GET_OFFSET_ARRAY "ab_array" ITM_V10_HEADERS - END - "SPL" BEGIN - GET_OFFSET_ARRAY "ab_array" SPL_V10_HEADERS - END - DEFAULT - PATCH_FAIL "GET_V10_HEAD_EFFECTS: should not happen => ~%DEST_FILE%~" - END - // Main - PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN - GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" ITM_V10_HEAD_EFFECTS // NB, same for spl and itm - PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN - // Save current values - READ_SHORT ("%fx_off%" + 0x0) "fx_opcode" - READ_BYTE ("%fx_off%" + 0x2) "fx_target" - READ_BYTE ("%fx_off%" + 0x3) "fx_power" - READ_SLONG ("%fx_off%" + 0x4) "fx_parameter1" - READ_SLONG ("%fx_off%" + 0x8) "fx_parameter2" - READ_BYTE ("%fx_off%" + 0xC) "fx_timing" - READ_BYTE ("%fx_off%" + 0xD) "fx_resist_dispel" - READ_LONG ("%fx_off%" + 0xE) "fx_duration" - READ_BYTE ("%fx_off%" + 0x12) "fx_probability1" - READ_BYTE ("%fx_off%" + 0x13) "fx_probability2" - READ_ASCII ("%fx_off%" + 0x14) "fx_resref" - READ_LONG ("%fx_off%" + 0x1C) "fx_max_level" - READ_LONG ("%fx_off%" + 0x20) "fx_min_level" - READ_LONG ("%fx_off%" + 0x24) "fx_savetype" - READ_SLONG ("%fx_off%" + 0x28) "fx_savebonus" - READ_SLONG ("%fx_off%" + 0x2C) "fx_special" - TEXT_SPRINT $"v10_head_effects"("%fx_opcode%" "%fx_target%" "%fx_power%" "%fx_parameter1%" "%fx_parameter2%" "%fx_timing%" "%fx_resist_dispel%" "%fx_duration%" "%fx_probability1%" "%fx_probability2%" "%fx_resref%" "%fx_max_level%" "%fx_min_level%" "%fx_savetype%" "%fx_savebonus%" "%fx_special%" "%fx_ind%" "%ab_ind%") "irrelevant" - END - END + // Initialize + PATCH_CLEAR_ARRAY "v10_head_effects" + PATCH_MATCH "%DEST_EXT%" WITH + "ITM" BEGIN + GET_OFFSET_ARRAY "ab_array" ITM_V10_HEADERS + END + "SPL" BEGIN + GET_OFFSET_ARRAY "ab_array" SPL_V10_HEADERS + END + DEFAULT + PATCH_FAIL "GET_V10_HEAD_EFFECTS: should not happen => ~%DEST_FILE%~" + END + // Main + PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN + GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" ITM_V10_HEAD_EFFECTS // NB, same for spl and itm + PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN + // Save current values + READ_SHORT ("%fx_off%" + 0x0) "fx_opcode" + READ_BYTE ("%fx_off%" + 0x2) "fx_target" + READ_BYTE ("%fx_off%" + 0x3) "fx_power" + READ_SLONG ("%fx_off%" + 0x4) "fx_parameter1" + READ_SLONG ("%fx_off%" + 0x8) "fx_parameter2" + READ_BYTE ("%fx_off%" + 0xC) "fx_timing" + READ_BYTE ("%fx_off%" + 0xD) "fx_resist_dispel" + READ_LONG ("%fx_off%" + 0xE) "fx_duration" + READ_BYTE ("%fx_off%" + 0x12) "fx_probability1" + READ_BYTE ("%fx_off%" + 0x13) "fx_probability2" + READ_ASCII ("%fx_off%" + 0x14) "fx_resref" + READ_LONG ("%fx_off%" + 0x1C) "fx_max_level" + READ_LONG ("%fx_off%" + 0x20) "fx_min_level" + READ_LONG ("%fx_off%" + 0x24) "fx_savetype" + READ_SLONG ("%fx_off%" + 0x28) "fx_savebonus" + READ_SLONG ("%fx_off%" + 0x2C) "fx_special" + TEXT_SPRINT $"v10_head_effects"("%fx_opcode%" "%fx_target%" "%fx_power%" "%fx_parameter1%" "%fx_parameter2%" "%fx_timing%" "%fx_resist_dispel%" "%fx_duration%" "%fx_probability1%" "%fx_probability2%" "%fx_resref%" "%fx_max_level%" "%fx_min_level%" "%fx_savetype%" "%fx_savebonus%" "%fx_special%" "%fx_ind%" "%ab_ind%") "irrelevant" + END + END END DEFINE_PATCH_FUNCTION "COUNT_V10_GEN_EFFECTS" STR_VAR - "opcode" = "-1" // regexp allowed (if needed) - "parameter2" = "same" // regexp allowed (if needed) - "timing" = "same" // regexp allowed (if needed) - "resource" = "same" // regexp allowed (if needed) + "opcode" = "-1" // regexp allowed (if needed) + "parameter2" = "same" // regexp allowed (if needed) + "timing" = "same" // regexp allowed (if needed) + "resource" = "same" // regexp allowed (if needed) RET - "count" + "count" BEGIN - // Initialize - SET "count" = 0 - // Main - GET_OFFSET_ARRAY "fx_array" 0x6a 4 0x70 2 0x6e 2 0x30 - PHP_EACH "fx_array" AS "_" => "fx_off" BEGIN - PATCH_MATCH (SHORT_AT "%fx_off%") WITH - "%opcode%" BEGIN - READ_SLONG ("%fx_off%" + 0x8) "p2" - READ_BYTE ("%fx_off%" + 0xC) "tmg" - PATCH_IF ("%parameter2%" STRING_EQUAL_CASE "same") OR (IS_AN_INT "parameter2" AND "%p2%" == "%parameter2%") OR (("%p2%" STRING_MATCHES_REGEXP "%parameter2%") == 0) BEGIN - PATCH_IF ("%timing%" STRING_EQUAL_CASE "same") OR (IS_AN_INT "timing" AND "%tmg%" == "%timing%") OR (("%tmg%" STRING_MATCHES_REGEXP "%timing%") == 0) BEGIN - READ_ASCII ("%fx_off%" + 0x14) "resref" - PATCH_IF ("%resource%" STRING_EQUAL_CASE "same") OR (("%resref%" STRING_MATCHES_REGEXP "%resource%") == 0) BEGIN - SET "count" += 1 - END - END - END - END - DEFAULT - END - END + // Initialize + SET "count" = 0 + // Main + GET_OFFSET_ARRAY "fx_array" 0x6a 4 0x70 2 0x6e 2 0x30 + PHP_EACH "fx_array" AS "_" => "fx_off" BEGIN + PATCH_MATCH (SHORT_AT "%fx_off%") WITH + "%opcode%" BEGIN + READ_SLONG ("%fx_off%" + 0x8) "p2" + READ_BYTE ("%fx_off%" + 0xC) "tmg" + PATCH_IF ("%parameter2%" STRING_EQUAL_CASE "same") OR (IS_AN_INT "parameter2" AND "%p2%" == "%parameter2%") OR (("%p2%" STRING_MATCHES_REGEXP "%parameter2%") == 0) BEGIN + PATCH_IF ("%timing%" STRING_EQUAL_CASE "same") OR (IS_AN_INT "timing" AND "%tmg%" == "%timing%") OR (("%tmg%" STRING_MATCHES_REGEXP "%timing%") == 0) BEGIN + READ_ASCII ("%fx_off%" + 0x14) "resref" + PATCH_IF ("%resource%" STRING_EQUAL_CASE "same") OR (("%resref%" STRING_MATCHES_REGEXP "%resource%") == 0) BEGIN + SET "count" += 1 + END + END + END + END + DEFAULT + END + END END /////////////////////////////////////////////////////////////////////////////////////////////////// @@ -261,64 +261,6 @@ BEGIN END END -////////////////////////////////////////////////////////// -/////// TO_HEX_NUMBER (borrowed from Argent77) -////////////////////////////////////////////////////////// - -/* -** Converts any decimal number into a hexadecimal number -*/ - -DEFINE_DIMORPHIC_FUNCTION ~TO_HEX_NUMBER~ -INT_VAR - ~value~ = 0 // the decimal number - ~minDigits~ = 1 // min. number of digits in return value (not counting sign) - ~prefix~ = 0 // whether to return number with "0x" prefix - ~signed~ = 1 // whether number is treated as a signed number - ~upperCase~ = 0 // whether to represent alphabetic digits in upper case -RET - ~hexNumber~ // returned as string without prefix -BEGIN - ACTION_IF (~%minDigits%~ < 1) BEGIN - OUTER_SET ~minDigits~ = 1 - END - ACTION_IF ("%minDigits%" > 8) BEGIN - OUTER_SET ~minDigits~ = 8 - END - OUTER_TEXT_SPRINT ~hexNumber~ ~~ - ACTION_DEFINE_ARRAY ~digit~ BEGIN ~0~ ~1~ ~2~ ~3~ ~4~ ~5~ ~6~ ~7~ ~8~ ~9~ ~a~ ~b~ ~c~ ~d~ ~e~ ~f~ END - - ACTION_IF ("%signed%" && "%value%" < 0) BEGIN - OUTER_SET ~isSigned~ = 1 - OUTER_SET ~value~ = 0 - "%value%" - END ELSE BEGIN - OUTER_SET ~isSigned~ = 0 - END - - OUTER_WHILE ("%value%" != 0) BEGIN - OUTER_SET ~curDigit~ = "%value%" BAND 0xf - OUTER_SET ~value~ = "%value%" BLSR 4 - OUTER_TEXT_SPRINT ~hexDigit~ $~digit~(~%curDigit%~) - OUTER_TEXT_SPRINT ~hexNumber~ ~%hexDigit%%hexNumber%~ - END - - OUTER_WHILE (STRING_LENGTH ~%hexNumber%~ < "%minDigits%") BEGIN - OUTER_TEXT_SPRINT ~hexNumber~ ~0%hexNumber%~ - END - - ACTION_IF ("%upperCase%") BEGIN - ACTION_TO_UPPER ~hexNumber~ - END - - ACTION_IF ("%prefix%") BEGIN - OUTER_TEXT_SPRINT ~hexNumber~ ~0x%hexNumber%~ - END - - ACTION_IF ("%isSigned%") BEGIN - OUTER_TEXT_SPRINT ~hexNumber~ ~-%hexNumber%~ - END -END - ////////////////////////////////////////////////////////// /////// ADD_SPLPROT_ENTRY (borrowed from Argent77) ////////////////////////////////////////////////////////// @@ -336,72 +278,69 @@ END DEFINE_DIMORPHIC_FUNCTION "ADD_SPLPROT_ENTRY" INT_VAR - "stat" = "-1" + "stat" = "-1" STR_VAR - "value" = "*" - "relation" = "*" - "label" = "" + "value" = "*" + "relation" = "*" + "label" = "" RET - "index" + "index" BEGIN - // Initialize - OUTER_SET "index" = "-1" - // Main - ACTION_IF ("%stat%" >= 0) BEGIN - LAF "TO_HEX_NUMBER" - INT_VAR - "value" = "%stat%" - "prefix" = 1 - RET - "valueHex" = "hexNumber" - END - ACTION_IF (~%value%~ STRING_EQUAL ~~) BEGIN - OUTER_TEXT_SPRINT "value" ~*~ - END - ACTION_IF (~%relation%~ STRING_EQUAL ~~) BEGIN - OUTER_TEXT_SPRINT "relation" ~*~ - END - // Add the specified entry or return its index if already present - COPY_EXISTING ~splprot.2da~ ~override~ - READ_2DA_ENTRIES_NOW "read_splprot" 4 - // Search for identical entries - FOR ("idx" = 0; "%idx%" < "%read_splprot%"; "idx" += 1) BEGIN - READ_2DA_ENTRY_FORMER "read_splprot" "%idx%" 1 "curStat" - PATCH_IF (~%stat%~ STRING_EQUAL ~%curStat%~ OR ~%valueHex%~ STRING_EQUAL_CASE ~%curStat%~) BEGIN - READ_2DA_ENTRY_FORMER "read_splprot" "%idx%" 2 "curValue" - PATCH_IF (~%value%~ STRING_EQUAL ~%curValue%~) BEGIN - READ_2DA_ENTRY_FORMER "read_splprot" "%idx%" 3 "curRelation" - PATCH_IF (~%relation%~ STRING_EQUAL ~%curRelation%~) BEGIN - SET "index" = "%idx%" // If already present, return its index - SET "idx" = "%read_splprot%" // Kill FOR-loop - END - END - END - END - // If not already present, add it... - PATCH_IF ("%index%" < 0) BEGIN - // Make sure we provided an identifier! - PATCH_IF ("%label%" STRING_COMPARE_CASE "") BEGIN - // Sanity check - INNER_PATCH_SAVE "label" "%label%" BEGIN - REPLACE_TEXTUALLY CASE_INSENSITIVE EVALUATE_REGEXP "[ %TAB%%WNL%%MNL%%LNL%]" "" - END - // Add new entry - PATCH_IF ("%stat%" >= 0x100) BEGIN - TEXT_SPRINT "line" ~%read_splprot%_%label% %valueHex% %value% %relation%~ - END ELSE BEGIN - TEXT_SPRINT "line" ~%read_splprot%_%label% %stat% %value% %relation%~ - END - INSERT_2DA_ROW "%read_splprot%" 4 ~%line%~ - // Prettify - PRETTY_PRINT_2DA - SET "index" = "%read_splprot%" - END ELSE BEGIN - PATCH_FAIL "ADD_SPLPROT_ENTRY: ~label~ cannot be empty. Please specify a human-friendly identifier (f.i. ~ALIGNMENTBITS!=MASK_LCNEUTRAL~)" - END - END - BUT_ONLY_IF_IT_CHANGES - END + // Initialize + OUTER_SET "index" = "-1" + // Main + ACTION_IF ("%stat%" >= 0) BEGIN + OUTER_PATCH "" BEGIN + SPRINTF "valueHex" "%x" ("%stat%") + END + // + ACTION_IF (~%value%~ STRING_EQUAL ~~) BEGIN + OUTER_TEXT_SPRINT "value" ~*~ + END + ACTION_IF (~%relation%~ STRING_EQUAL ~~) BEGIN + OUTER_TEXT_SPRINT "relation" ~*~ + END + // Add the specified entry or return its index if already present + COPY_EXISTING ~splprot.2da~ ~override~ + READ_2DA_ENTRIES_NOW "read_splprot" 4 + // Search for identical entries + FOR ("idx" = 0; "%idx%" < "%read_splprot%"; "idx" += 1) BEGIN + READ_2DA_ENTRY_FORMER "read_splprot" "%idx%" 1 "curStat" + PATCH_IF (~%stat%~ STRING_EQUAL ~%curStat%~ OR ~%valueHex%~ STRING_EQUAL_CASE ~%curStat%~) BEGIN + READ_2DA_ENTRY_FORMER "read_splprot" "%idx%" 2 "curValue" + PATCH_IF (~%value%~ STRING_EQUAL ~%curValue%~) BEGIN + READ_2DA_ENTRY_FORMER "read_splprot" "%idx%" 3 "curRelation" + PATCH_IF (~%relation%~ STRING_EQUAL ~%curRelation%~) BEGIN + SET "index" = "%idx%" // If already present, return its index + SET "idx" = "%read_splprot%" // Kill FOR-loop + END + END + END + END + // If not already present, add it... + PATCH_IF ("%index%" < 0) BEGIN + // Make sure we provided an identifier! + PATCH_IF ("%label%" STRING_COMPARE_CASE "") BEGIN + // Sanity check + INNER_PATCH_SAVE "label" "%label%" BEGIN + REPLACE_TEXTUALLY CASE_INSENSITIVE EVALUATE_REGEXP "[ %TAB%%WNL%%MNL%%LNL%]" "" + END + // Add new entry + PATCH_IF ("%stat%" >= 0x100) BEGIN + TEXT_SPRINT "line" ~%read_splprot%_%label% %valueHex% %value% %relation%~ + END ELSE BEGIN + TEXT_SPRINT "line" ~%read_splprot%_%label% %stat% %value% %relation%~ + END + INSERT_2DA_ROW "%read_splprot%" 4 ~%line%~ + // Prettify + PRETTY_PRINT_2DA + SET "index" = "%read_splprot%" + END ELSE BEGIN + PATCH_FAIL "ADD_SPLPROT_ENTRY: ~label~ cannot be empty. Please specify a human-friendly identifier (f.i. ~ALIGNMENTBITS!=MASK_LCNEUTRAL~)" + END + END + BUT_ONLY_IF_IT_CHANGES + END END //////////////////////////////////////////////////////////////////////// @@ -422,81 +361,79 @@ END DEFINE_DIMORPHIC_FUNCTION "ADD_IDS_ENTRY" INT_VAR - "minValue" = 0 - "maxValue" = 255 - "preferredValue" = "-1" - "hexadecimal" = 0 + "minValue" = 0 + "maxValue" = 255 + "preferredValue" = "-1" + "hexadecimal" = 0 STR_VAR - "idsFile" = "" - "identifier" = "" + "idsFile" = "" + "identifier" = "" RET - "value" + "value" BEGIN - // Strip ".ids" (or ".IDS") from "%idsFile%" - ACTION_IF ((~%idsFile%~ STRING_MATCHES_REGEXP ~.+\..+~) == 0) BEGIN - OUTER_PATCH_SAVE "idsFile" ~%idsFile%~ BEGIN - REPLACE_TEXTUALLY ~\(.+\)\.[^.]+~ ~\1~ - END - END - // Main - ACTION_IF (FILE_EXISTS_IN_GAME ~%idsFile%.ids~) BEGIN - // If ~%identifier%~ is already present, return the corresponding value and exit - OUTER_SET "value" = IDS_OF_SYMBOL ("%idsFile%" "%identifier%") - ACTION_IF ("%value%" == "-1") BEGIN - // Fix invalid "%minValue%" and/or "%maxValue%" - ACTION_IF ("%minValue%" < 0) BEGIN - OUTER_SET "minValue" = 0 - END - ACTION_IF ("%maxValue%" < "%minValue%") BEGIN - OUTER_SET "maxValue" = "%minValue%" - END - // Try preferred value first - OUTER_PATCH ~~ BEGIN - PATCH_IF ("%preferredValue%" >= "%minValue%" AND "%preferredValue%" <= "%maxValue%") BEGIN - LOOKUP_IDS_SYMBOL_OF_INT "retVal" ~%idsFile%~ "%preferredValue%" - PATCH_IF (~%retVal%~ STRING_EQUAL ~%preferredValue%~) BEGIN - SET "value" = "%preferredValue%" - END - END - END - // Looking for available IDS slot - ACTION_IF ("%value%" == "-1") BEGIN - OUTER_PATCH ~~ BEGIN - FOR ("v" = "%minValue%"; "%v%" <= "%maxValue%"; "v" += 1) BEGIN - LOOKUP_IDS_SYMBOL_OF_INT "retVal" ~%idsFile%~ "%v%" - PATCH_IF (~%retVal%~ STRING_EQUAL ~%v%~) BEGIN - SET "value" = "%v%" - SET "v" = "%maxValue%" + 1 // Kill FOR-loop - END - END - END - END - // Adding new entry - ACTION_IF ("%value%" != "-1") BEGIN - ACTION_IF ("%hexadecimal%") BEGIN - LAF "TO_HEX_NUMBER" - INT_VAR - "value" - RET - "hexNumber" - END - OUTER_TEXT_SPRINT ~idsValue~ ~0x%hexNumber%~ - END ELSE BEGIN - OUTER_TEXT_SPRINT ~idsValue~ ~%value%~ - END - // APPENDing to ~%idsFile%.ids~ - APPEND ~%idsFile%.ids~ ~%idsValue% %identifier%~ - // Sanity check - ACTION_IF ("%value%" < "%minValue%" OR "%value%" > "%maxValue%") BEGIN - FAIL ~ADD_IDS_ENTRY: the IDS value corresponding to "%identifier%" is out of bounds~ - END - END ELSE BEGIN - FAIL "ADD_IDS_ENTRY, ~%idsFile%.ids~: there's no room for appending ~%identifier%~" - END - END - END ELSE BEGIN - FAIL "ADD_IDS_ENTRY: the specified IDS file ~%idsFile%~ does not exist as a game resource" - END + // Strip ".ids" (or ".IDS") from "%idsFile%" + ACTION_IF ((~%idsFile%~ STRING_MATCHES_REGEXP ~.+\..+~) == 0) BEGIN + OUTER_PATCH_SAVE "idsFile" ~%idsFile%~ BEGIN + REPLACE_TEXTUALLY ~\(.+\)\.[^.]+~ ~\1~ + END + END + // Main + ACTION_IF (FILE_EXISTS_IN_GAME ~%idsFile%.ids~) BEGIN + // If ~%identifier%~ is already present, return the corresponding value and exit + OUTER_SET "value" = IDS_OF_SYMBOL ("%idsFile%" "%identifier%") + ACTION_IF ("%value%" == "-1") BEGIN + // Fix invalid "%minValue%" and/or "%maxValue%" + ACTION_IF ("%minValue%" < 0) BEGIN + OUTER_SET "minValue" = 0 + END + ACTION_IF ("%maxValue%" < "%minValue%") BEGIN + OUTER_SET "maxValue" = "%minValue%" + END + // Try preferred value first + OUTER_PATCH ~~ BEGIN + PATCH_IF ("%preferredValue%" >= "%minValue%" AND "%preferredValue%" <= "%maxValue%") BEGIN + LOOKUP_IDS_SYMBOL_OF_INT "retVal" ~%idsFile%~ "%preferredValue%" + PATCH_IF (~%retVal%~ STRING_EQUAL ~%preferredValue%~) BEGIN + SET "value" = "%preferredValue%" + END + END + END + // Looking for available IDS slot + ACTION_IF ("%value%" == "-1") BEGIN + OUTER_PATCH ~~ BEGIN + FOR ("v" = "%minValue%"; "%v%" <= "%maxValue%"; "v" += 1) BEGIN + LOOKUP_IDS_SYMBOL_OF_INT "retVal" ~%idsFile%~ "%v%" + PATCH_IF (~%retVal%~ STRING_EQUAL ~%v%~) BEGIN + SET "value" = "%v%" + SET "v" = "%maxValue%" + 1 // Kill FOR-loop + END + END + END + END + // Adding new entry + ACTION_IF ("%value%" != "-1") BEGIN + ACTION_IF ("%hexadecimal%") BEGIN + OUTER_PATCH "" BEGIN + SPRINTF "idsValue" "%x" ("%value%") + TO_UPPER "idsValue" + END + OUTER_TEXT_SPRINT ~idsValue~ ~0x%hexNumber%~ + END ELSE BEGIN + OUTER_TEXT_SPRINT ~idsValue~ ~%value%~ + END + // APPENDing to ~%idsFile%.ids~ + APPEND ~%idsFile%.ids~ ~%idsValue% %identifier%~ + // Sanity check + ACTION_IF ("%value%" < "%minValue%" OR "%value%" > "%maxValue%") BEGIN + FAIL ~ADD_IDS_ENTRY: the IDS value corresponding to "%identifier%" is out of bounds~ + END + END ELSE BEGIN + FAIL "ADD_IDS_ENTRY, ~%idsFile%.ids~: there's no room for appending ~%identifier%~" + END + END + END ELSE BEGIN + FAIL "ADD_IDS_ENTRY: the specified IDS file ~%idsFile%~ does not exist as a game resource" + END END //////////////////////////////////////////////////////////////////////// @@ -508,20 +445,20 @@ END DEFINE_DIMORPHIC_FUNCTION ~ARRAY_CONTAINS~ STR_VAR - "array" = "" // array name - "key" = "" - "value" = "" + "array" = "" // array name + "key" = "" + "value" = "" RET - ~found~ + ~found~ BEGIN - // Initialize - OUTER_SET ~found~ = 0 // Suppose "%key%" => "%value%" is not present - // Main - ACTION_PHP_EACH "%array%" AS "k" => "v" BEGIN - ACTION_IF ("%key%" STRING_EQUAL "%k%" || "%key%" STR_EQ "") && ("%value%" STRING_EQUAL "%v%" || "%value%" STR_EQ "") BEGIN - OUTER_SET ~found~ = 1 - END - END + // Initialize + OUTER_SET ~found~ = 0 // Suppose "%key%" => "%value%" is not present + // Main + ACTION_PHP_EACH "%array%" AS "k" => "v" BEGIN + ACTION_IF ("%key%" STRING_EQUAL "%k%" || "%key%" STR_EQ "") && ("%value%" STRING_EQUAL "%v%" || "%value%" STR_EQ "") BEGIN + OUTER_SET ~found~ = 1 + END + END END ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -532,32 +469,32 @@ END DEFINE_DIMORPHIC_FUNCTION "ADD_STATDESC_ENTRY" INT_VAR - "description" = "-1" + "description" = "-1" STR_VAR - "bam_file" = "****" + "bam_file" = "****" RET - "index" + "index" BEGIN - // Initialize - OUTER_SET "index" = "-1" - // Check if "%description%" and "%bam_file%" are already present - COPY_EXISTING "statdesc.2da" "override" - COUNT_2DA_COLS "cols" - READ_2DA_ENTRIES_NOW "read_statdesc" "%cols%" - FOR ("i" = 0 ; "%i%" < "%read_statdesc%" ; "i" += 1) BEGIN - READ_2DA_ENTRY_FORMER "read_statdesc" "%i%" 0 "idx" // current index - PATCH_IF ("%description%" == "%read_statdesc_%i%_1%") AND ("%bam_file%" STRING_EQUAL_CASE "%read_statdesc_%i%_2%") BEGIN - SET "index" = "%read_statdesc_%i%_0%" - SET "i" = "%read_statdesc%" + 1 // kill FOR-loop - END - END - PATCH_IF ("%index%" == "-1") BEGIN - SET "index" = "%idx%" + 1 - INSERT_2DA_ROW "%read_statdesc%" "%cols%" "%index% %description% %bam_file%" - // Formatting - PRETTY_PRINT_2DA - END - BUT_ONLY_IF_IT_CHANGES + // Initialize + OUTER_SET "index" = "-1" + // Check if "%description%" and "%bam_file%" are already present + COPY_EXISTING "statdesc.2da" "override" + COUNT_2DA_COLS "cols" + READ_2DA_ENTRIES_NOW "read_statdesc" "%cols%" + FOR ("i" = 0 ; "%i%" < "%read_statdesc%" ; "i" += 1) BEGIN + READ_2DA_ENTRY_FORMER "read_statdesc" "%i%" 0 "idx" // current index + PATCH_IF ("%description%" == "%read_statdesc_%i%_1%") AND ("%bam_file%" STRING_EQUAL_CASE "%read_statdesc_%i%_2%") BEGIN + SET "index" = "%read_statdesc_%i%_0%" + SET "i" = "%read_statdesc%" + 1 // kill FOR-loop + END + END + PATCH_IF ("%index%" == "-1") BEGIN + SET "index" = "%idx%" + 1 + INSERT_2DA_ROW "%read_statdesc%" "%cols%" "%index% %description% %bam_file%" + // Formatting + PRETTY_PRINT_2DA + END + BUT_ONLY_IF_IT_CHANGES END ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -568,43 +505,43 @@ END DEFINE_DIMORPHIC_FUNCTION "RETURN_FIRST_ENTRY" STR_VAR - "list_in" = "" - "separator" = " " + "list_in" = "" + "separator" = " " RET - "entry" - "list_out" + "entry" + "list_out" BEGIN - // Initialize - OUTER_TEXT_SPRINT "list_out" "%list_in%" - // Find the first instance of "%separator%" - OUTER_SET "x" = INDEX (CASE_INSENSITIVE EXACT_MATCH "%separator%" "%list_in%") - ACTION_IF ("%x%" == "-1") BEGIN - // If it can't find "%separator%", then this is the last entry => Find end of string - OUTER_SET "x" = INDEX (CASE_INSENSITIVE EVALUATE_REGEXP "$" "%list_in%") - OUTER_TEXT_SPRINT "list_out" "" - END - OUTER_SET "y" = STRING_LENGTH "%list_in%" - // Return the first entry - LAF "SUBSTRING" - INT_VAR - "length" = "%x%" - STR_VAR - "string" = "%list_in%" - RET - "entry" = "substring" - END - // Strip "%entry%" from "%list_in%" and save the resulting list as "list_out" - ACTION_IF ("%list_out%" STRING_COMPARE_CASE "") BEGIN - LAF "SUBSTRING" - INT_VAR - "start" = "%x%" + STRING_LENGTH "%separator%" // we need to take into account the length of "%separator%" - "length" = "%y%" - ("%x%" + STRING_LENGTH "%separator%") // we need to take into account the length of "%separator%" - STR_VAR - "string" = "%list_in%" - RET - "list_out" = "substring" - END - END + // Initialize + OUTER_TEXT_SPRINT "list_out" "%list_in%" + // Find the first instance of "%separator%" + OUTER_SET "found" = INDEX (CASE_INSENSITIVE EXACT_MATCH "%separator%" "%list_in%") + ACTION_IF ("%found%" == "-1") BEGIN + // If it can't find "%separator%", then this is the last entry => Find end of string + OUTER_SET "found" = INDEX (CASE_INSENSITIVE EVALUATE_REGEXP "$" "%list_in%") + OUTER_TEXT_SPRINT "list_out" "" + END + OUTER_SET "string_length" = STRING_LENGTH "%list_in%" + // Return the first entry + LAF "SUBSTRING" + INT_VAR + "length" = "%found%" + STR_VAR + "string" = "%list_in%" + RET + "entry" = "substring" + END + // Strip "%entry%" from "%list_in%" and save the resulting list as "list_out" + ACTION_IF ("%list_out%" STRING_COMPARE_CASE "") BEGIN + LAF "SUBSTRING" + INT_VAR + "start" = "%found%" + STRING_LENGTH "%separator%" // we need to take into account the length of "%separator%" + "length" = "%string_length%" - ("%found%" + STRING_LENGTH "%separator%") // we need to take into account the length of "%separator%" + STR_VAR + "string" = "%list_in%" + RET + "list_out" = "substring" + END + END END ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -615,27 +552,164 @@ END DEFINE_DIMORPHIC_FUNCTION "ARRAY_OF_LIST" STR_VAR - "list" = "" - "separator" = " " + "list" = "" + "separator" = " " RET_ARRAY - "array" + "array" +BEGIN + // Initialize + ACTION_CLEAR_ARRAY "array" + OUTER_SET "count" = 0 + // Main + OUTER_WHILE ("%list%" STRING_COMPARE_CASE "") BEGIN + LAF "RETURN_FIRST_ENTRY" + STR_VAR + "list_in" = "%list%" + "separator" + RET + "entry" + "list" = "list_out" + END + ACTION_DEFINE_ASSOCIATIVE_ARRAY "array" BEGIN + "%count%" => "%entry%" + END + OUTER_SET "count" += 1 + END +END + +////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +///////////// Return the number of times ~%element%~ appears in ~%list%~ (matching is case-insensitive) +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +DEFINE_DIMORPHIC_FUNCTION "COUNT_ELEMENT_INSTANCES" +STR_VAR + "list_in" = "" + "element" = "" + "separator" = " " +RET + "count" + "list_out" +BEGIN + // Initialize + OUTER_SET "count" = 0 + OUTER_TEXT_SPRINT "list_out" "" + // Main + OUTER_WHILE ("%list_in%" STRING_COMPARE_CASE "") BEGIN + LAF "RETURN_FIRST_ENTRY" + STR_VAR + "list_in" + "separator" + RET + "list_in" = "list_out" + "entry" + END + ACTION_IF ("%entry%" STRING_EQUAL_CASE "%element%") BEGIN + OUTER_SET "count" += 1 + END ELSE BEGIN + OUTER_TEXT_SPRINT "list_out" "%list_out%%separator%%entry%" + END + END + // Remove leading ~%separator%~ + OUTER_PATCH_SAVE "list_out" "%list_out%" BEGIN + REPLACE_TEXTUALLY CASE_SENSITIVE EVALUATE_REGEXP "^%separator%" "" + END +END + +///////////////////////////////////////////////////////////////////////////////////////////////////////////// +/* + +De-localized (i.e., not language dependant) function to get the string corresponding to index #"%strref%" + +*/ +///////////////////////////////////////////////////////////////////////////////////////////////////////////// + +DEFINE_DIMORPHIC_FUNCTION "GT_GET_STRING" +INT_VAR + "strref" = 0 +RET + "string" BEGIN - // Initialize - ACTION_CLEAR_ARRAY "array" - OUTER_SET "count" = 0 - // Main - OUTER_WHILE ("%list%" STRING_COMPARE_CASE "") BEGIN - LAF "RETURN_FIRST_ENTRY" - STR_VAR - "list_in" = "%list%" - "separator" - RET - "entry" - "list" = "list_out" - END - ACTION_DEFINE_ASSOCIATIVE_ARRAY "array" BEGIN - "%count%" => "%entry%" - END - OUTER_SET "count" += 1 - END + OUTER_TEXT_SPRINT "string" "" + COPY - "lang\en_us\dialog.tlk" "override" + READ_LONG 0xE "base_off" // Offset to base data + READ_LONG (0x12 + 0x12 + ("%strref%" * 0x1A)) "off" // Relative offset of this string + READ_LONG (0x12 + 0x16 + ("%strref%" * 0x1A)) "length" // Length of this string + READ_ASCII ("%base_off%" + "%off%") "string" ("%length%") + BUT_ONLY_IF_IT_CHANGES +END + +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// + +DEFINE_PATCH_FUNCTION ~ADD_SPELL_ABILITY~ +INT_VAR + ~type~ = 1 // Melee (should be irrelevant for `spl` files...) + ~location~ = 4 // Ability (F13 button) + ~target~ = 1 // Living actor + ~#_targets~ = 0 + ~range~ = 30 // Default visual range + ~minimum_level~ = 1 + ~casting_speed~ = 0 + ~projectile~ = IDS_OF_SYMBOL ("MISSILE" "None") + // + ~copy_header~ = 0 + ~insert_point~ = ~-1~ // insert last +STR_VAR + ~icon~ = ~~ +RET + ~insert_point~ +BEGIN + //LPF ~FJ_SPL_ITM_REINDEX~ END + ~hs~ = 0x28 + + READ_LONG 0x64 ~ho~ + READ_SHORT 0x68 ~hc~ + READ_LONG 0x6a ~eo~ + ~insert_point~ = ("%insert_point%" > "%hc%" || "%insert_point%" < 0) ? "%hc%" : "%insert_point%" + ~copy_header~ = ("%copy_header%" < 0) ? 0 : "%copy_header%" + + PATCH_IF "%copy_header%" > "%hc%" BEGIN + PATCH_WARN ~Unable to copy %copy_header%th header, "%DEST_FILE%" contains only %hc% headers!~ + END ELSE BEGIN + INSERT_BYTES ("%ho%" + "%insert_point%" * "%hs%") "%hs%" + "hc" += 1 + "eo" += "%hs%" + PATCH_IF "%copy_header%" BEGIN + READ_SHORT ("%ho%" + ("%copy_header%" - 1) * "%hs%" + 0x1e) "ec" + READ_SHORT ("%ho%" + ("%copy_header%" - 1) * "%hs%" + 0x20) "ei" + READ_ASCII ("%eo%" + "%ei%" * 0x30) "effs" ("%ec%" * 0x30) + READ_ASCII ("%ho%" + ("%copy_header%" - 1) * "%hs%") "copy" ("%hs%") + WRITE_ASCII ("%ho%" + "%insert_point%" * "%hs%") ~%copy%~ ("%hs%") + END + WRITE_SHORT 0x68 "%hc%" + WRITE_LONG 0x6a "%eo%" + + READ_SHORT 0x70 "ei" // technically, it is a counter + FOR ("i" = "%ho%" ; "%i%" < "%ho%" + "%hc%" * "%hs%" ; "i" += "%hs%") BEGIN + READ_SHORT "%i%" + 0x1e "ec" + WRITE_SHORT "%i%" + 0x20 "%ei%" + "ei" += "%ec%" + END + + PATCH_IF "%copy_header%" BEGIN + READ_SHORT ("%ho%" + "%insert_point%" * "%hs%" + 0x1e) "ec" + READ_SHORT ("%ho%" + "%insert_point%" * "%hs%" + 0x20) "ei" + INSERT_BYTES ("%eo%" + "%ei%" * 0x30) ("%ec%" * 0x30) + WRITE_ASCII ("%eo%" + "%ei%" * 0x30) ~%effs%~ ("%ec%" * 0x30) + END ELSE BEGIN + "off" = "%ho%" + "%insert_point%" * "%hs%" + WRITE_BYTE "%off%" "%type%" + WRITE_SHORT ("%off%" + 0x2) "%location%" + WRITE_ASCII ("%off%" + 0x4) ~%icon%~ #8 + WRITE_BYTE ("%off%" + 0xc) "%target%" + WRITE_BYTE ("%off%" + 0xd) "%#_targets%" + WRITE_SHORT ("%off%" + 0xe) "%range%" + WRITE_SHORT ("%off%" + 0x10) "%minimum_level%" + WRITE_SHORT ("%off%" + 0x12) "%casting_speed%" + WRITE_SHORT ("%off%" + 0x26) "%projectile%" + END + END END diff --git a/eefixpack/files/tph/6037_iwdee_probabilities.tph b/eefixpack/files/tph/6037_iwdee_probabilities.tph index e43bf469..6ccb2798 100644 --- a/eefixpack/files/tph/6037_iwdee_probabilities.tph +++ b/eefixpack/files/tph/6037_iwdee_probabilities.tph @@ -96,6 +96,7 @@ COPY_EXISTING ~amaunat.itm~ ~override~ // amaunator's legacy: 5% beltyn's burni ~sbowebu.itm~ ~override~ // short bow of ebullience: 25% fire damage ~serrate.itm~ ~override~ // serrated bone blade: 20% cold damage ~sflail.itm~ ~override~ // conrnugon: 50% bleed, 25% stun + ~cd0048.spl~ ~override~ // conrnugon: 25% stun ~shax4d4c.itm~ ~override~ // shadowed orc weapon: 40% cold damage ~shaxe2c.itm~ ~override~ // shadowed orc weapon: 40% cold damage ~shmblr.itm~ ~override~ // shambler weapon: 5% entangle diff --git a/eefixpack/files/tph/bg2ee.tph b/eefixpack/files/tph/bg2ee.tph index 985867e7..e0cbc01a 100644 --- a/eefixpack/files/tph/bg2ee.tph +++ b/eefixpack/files/tph/bg2ee.tph @@ -178,6 +178,15 @@ WITH_SCOPE BEGIN END END +/* +luke +"7eyes.2da" vs. SPL/ITM files +*/ +WITH_SCOPE BEGIN + INCLUDE "eefixpack/files/tph/luke/7eyes/7eyes.tph" + LAUNCH_ACTION_FUNCTION "7EYESification" END +END + /* luke **Wing Buffet vs. MR** @@ -795,7 +804,8 @@ COPY_EXISTING ~misc3a3.itm~ ~override~ // tbd, cam // uses 'intoxication' icon for a confusion effect COPY_EXISTING ~misc3m.itm~ ~override~ // Harp of Discord - causes confusion - plays animation SPCONFUS - portrait icon 5 - plays sound EFF_P05 - LPF ALTER_EFFECT INT_VAR match_opcode = 142 match_parameter2 = 5 parameter2 = 3 END + //LPF ALTER_EFFECT INT_VAR match_opcode = 142 match_parameter2 = 5 parameter2 = 3 END + LPF DELETE_EFFECT INT_VAR match_opcode = 142 match_parameter2 = 5 END // moved to subspell // patrol leader helmet should be unusable by thieves and kensais, like other helmets COPY_EXISTING ~misca6.itm~ ~override~ // patrol leader helmet @@ -1022,6 +1032,28 @@ WITH_SCOPE BEGIN END END +/* +luke +**Wand of Glitterdust** +- Make sure all effects are dispellable/do not bypass Magic Resistance (so as to match the corresponding spell) +*/ +WITH_SCOPE BEGIN + COPY_EXISTING "ohdwand1.itm" "override" + LPF "ALTER_EFFECT" INT_VAR "check_globals" = 0 "resist_dispel" = BIT0 END + BUT_ONLY_IF_IT_CHANGES +END + +/* +luke +**Kuo-toan Bolt** +- Make sure it ignores Magic Resistance +*/ +WITH_SCOPE BEGIN + COPY_EXISTING "kuobolt3.itm" "override" + LPF "ALTER_EFFECT" INT_VAR "check_globals" = 0 "resist_dispel" = 0 END + BUT_ONLY_IF_IT_CHANGES +END + // tbd, cam // fixing paperdoll animations ACTION_DEFINE_ASSOCIATIVE_ARRAY cd_paperdoll_animations BEGIN @@ -1185,8 +1217,27 @@ COPY_EXISTING ~spin696.spl~ ~override~ // moon dog sight // tbd, cam // wrong duration for portrait icon -COPY_EXISTING ~spin807.spl~ ~override~ // Slayer Fear - causes fear - portrait icon 36 - LPF ALTER_EFFECT INT_VAR match_duration = 120 duration = 12 END +//COPY_EXISTING ~spin807.spl~ ~override~ // Slayer Fear - causes fear - portrait icon 36 + //LPF ALTER_EFFECT INT_VAR match_duration = 120 duration = 12 END +WITH_SCOPE BEGIN + COPY_EXISTING - ~spin807.spl~ ~override~ // Slayer Fear - causes fear - portrait icon 36 + GET_OFFSET_ARRAY ab_arr SPL_V10_HEADERS + PHP_EACH ab_arr AS ab_ind => ab_off BEGIN + GET_OFFSET_ARRAY2 fx_arr ab_off SPL_V10_HEAD_EFFECTS + PHP_EACH fx_arr AS fx_ind => fx_off BEGIN + PATCH_MATCH SHORT_AT fx_off WITH + 326 WHEN SLONG_AT (fx_off + 0x4) = IDS_OF_SYMBOL ("splstate" "PANIC_IMMUNITY") AND LONG_AT (fx_off + 0x8) = 111 BEGIN + READ_ASCII (fx_off + 0x14) "subspell" + END + DEFAULT + END + END + END + BUT_ONLY + COPY_EXISTING "%subspell%.spl" "override" + LPF ALTER_EFFECT INT_VAR match_duration = 120 duration = 12 END + BUT_ONLY +END COPY_EXISTING ~spin891.spl~ ~override~ // make moon dog howl only affect enemies LPF ALTER_HEADER INT_VAR projectile = 159 END // inarea > inareanp @@ -1285,9 +1336,9 @@ WITH_SCOPE BEGIN PATCH_WITH_SCOPE BEGIN SET "parameter2" = IDS_OF_SYMBOL ("STATS" "CLERIC_INSECT_PLAGUE") GET_OFFSET_ARRAY "ab_array" SPL_V10_HEADERS - PHP_EACH "ab_array" AS "hdr" => "ab_off" BEGIN + PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN LPF "COUNT_V10_HEAD_EFFECTS" STR_VAR "opcode" = "233" "parameter2" RET "count" END - LPF ~DELETE_EFFECT~ INT_VAR ~match_opcode~ = 233 ~check_globals~ = 0 ~check_headers~ = (~%count%~ <= 1 ? 0 : 1) ~multi_match~ = (~%count%~ - 1) ~header~ = ~%hdr%~ ~match_parameter2~ = IDS_OF_SYMBOL ("STATS" "CLERIC_INSECT_PLAGUE") END + LPF ~DELETE_EFFECT~ INT_VAR ~match_opcode~ = 233 ~check_globals~ = 0 ~check_headers~ = (~%count%~ <= 1 ? 0 : 1) ~multi_match~ = (~%count%~ - 1) ~header~ = ~%ab_ind%~ ~match_parameter2~ = IDS_OF_SYMBOL ("STATS" "CLERIC_INSECT_PLAGUE") END END END BUT_ONLY_IF_IT_CHANGES @@ -1304,6 +1355,189 @@ COPY_EXISTING ~spin597.spl~ ~override~ // blue dragon breath needs additional f WRITE_LONG 0x34 1 // set spell level 1 LPF ALTER_EFFECT INT_VAR power = 0 resist_dispel = 0 END +/* +luke +**Wand of Glitterdust** +- Make sure all effects are dispellable/do not bypass Magic Resistance (so as to match the corresponding spell) +*/ +WITH_SCOPE BEGIN + COPY_EXISTING - "ohdwand1.itm" "override" + GET_OFFSET_ARRAY "ab_array" ITM_V10_HEADERS + PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN + GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" ITM_V10_HEAD_EFFECTS + PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN + PATCH_MATCH SHORT_AT "%fx_off%" WITH + 326 WHEN SLONG_AT (0x4 + "%fx_off%") == IDS_OF_SYMBOL ("splstate" "BLIND_IMMUNITY") AND LONG_AT (0x8 + "%fx_off%") == 111 BEGIN + READ_ASCII (0x14 + "%fx_off%") "subspell" + END + DEFAULT + END + END + END + BUT_ONLY_IF_IT_CHANGES + COPY_EXISTING "%subspell%.spl" "override" + LPF "ALTER_EFFECT" INT_VAR "check_globals" = 0 "resist_dispel" = BIT0 BOR BIT1 END // MR already checked on the parent file + END +END + +/* +luke +**The Captive Audience** +- Make sure duration is 12 hours (so as to match item description) +*/ +WITH_SCOPE BEGIN + COPY_EXISTING - "misc2p.itm" "override" + GET_OFFSET_ARRAY "ab_array" ITM_V10_HEADERS + PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN + GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" ITM_V10_HEAD_EFFECTS + PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN + PATCH_MATCH SHORT_AT "%fx_off%" WITH + 326 WHEN SLONG_AT (0x4 + "%fx_off%") == IDS_OF_SYMBOL ("splstate" "CHARM_IMMUNITY") AND LONG_AT (0x8 + "%fx_off%") == 111 BEGIN + READ_ASCII (0x14 + "%fx_off%") "subspell" + END + DEFAULT + END + END + END + BUT_ONLY_IF_IT_CHANGES + COPY_EXISTING "%subspell%.spl" "override" + LPF "ALTER_EFFECT" INT_VAR "match_duration" = 120 "duration" = 3600 END + BUT_ONLY_IF_IT_CHANGES +END + +/* +luke +**Harp of Discord** +- Make sure it uses the Confused icon + - this is a "eefixpack\files\tph\luke\7eyes\7eyes.tph" follow-up +*/ +WITH_SCOPE BEGIN + COPY_EXISTING - "misc3m.itm" "override" + GET_OFFSET_ARRAY "ab_array" ITM_V10_HEADERS + PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN + GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" ITM_V10_HEAD_EFFECTS + PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN + PATCH_MATCH SHORT_AT "%fx_off%" WITH + 326 WHEN SLONG_AT (0x4 + "%fx_off%") == IDS_OF_SYMBOL ("splstate" "CONFUSION_IMMUNITY") AND LONG_AT (0x8 + "%fx_off%") == 111 BEGIN + READ_ASCII (0x14 + "%fx_off%") "subspell" + END + DEFAULT + END + END + END + BUT_ONLY + COPY_EXISTING "%subspell%.spl" "override" + LPF "CLONE_EFFECT" INT_VAR "match_opcode" = 128 "opcode" = 142 "parameter1" = 0 "parameter2" = 3 "special" = 0 STR_VAR "resource" = "" "insert" = "below" END + BUT_ONLY_IF_IT_CHANGES +END + +/* +luke +**Kuo-toan Bolt** +- Make sure it ignores Magic Resistance +- It is supposed to cause paralysis, not web +*/ +WITH_SCOPE BEGIN + COPY_EXISTING - "kuobolt3.itm" "override" + GET_OFFSET_ARRAY "ab_array" ITM_V10_HEADERS + PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN + GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" ITM_V10_HEAD_EFFECTS + PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN + PATCH_MATCH SHORT_AT "%fx_off%" WITH + 326 WHEN SLONG_AT (0x4 + "%fx_off%") == IDS_OF_SYMBOL ("splstate" "PARALYZE_IMMUNITY") AND LONG_AT (0x8 + "%fx_off%") == 111 BEGIN + READ_ASCII (0x14 + "%fx_off%") "subspell" + END + DEFAULT + END + END + END + BUT_ONLY + COPY_EXISTING "%subspell%.spl" "override" + LPF "DELETE_EFFECT" INT_VAR "check_globals" = 0 "match_opcode" = 157 END // web overlay + LPF "ALTER_EFFECT" INT_VAR "check_globals" = 0 "resist_dispel" = 0 END + BUT_ONLY_IF_IT_CHANGES +END + +/* +luke +**Horn of Silence** +- Make sure all effects are dispellable / bypass Magic Resistance (so as to match the corresponding spell) +*/ +WITH_SCOPE BEGIN + COPY_EXISTING - "misc3l.itm" "override" + GET_OFFSET_ARRAY "ab_array" ITM_V10_HEADERS + PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN + GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" ITM_V10_HEAD_EFFECTS + PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN + PATCH_MATCH SHORT_AT "%fx_off%" WITH + 326 WHEN SLONG_AT (0x4 + "%fx_off%") == IDS_OF_SYMBOL ("splstate" "SILENCE_IMMUNITY") AND LONG_AT (0x8 + "%fx_off%") == 111 BEGIN + READ_ASCII (0x14 + "%fx_off%") "subspell" + END + DEFAULT + END + END + END + BUT_ONLY + COPY_EXISTING "%subspell%.spl" "override" + LPF "ALTER_EFFECT" INT_VAR "check_globals" = 0 "resist_dispel" = BIT0 BOR BIT1 END // MR already checked on the parent file + BUT_ONLY_IF_IT_CHANGES +END + +/* +luke +**False Dawn** +- make sure it properly affects undead (undead are normally immune to confusion, so this spell is not working as expected...) + - if EEex is not installed, abuse op182 to bypass/ignore op101 ("https://www.gibberlings3.net/forums/topic/35616-effect-immunities-on-the-ee-engine-aka-taking-full-advantage-of-the-ee-fixpack/page/2/#comment-313805") +*/ +WITH_SCOPE BEGIN + INCLUDE "eefixpack\files\tph\luke\false_dawn.tph" + //LAF "CLERIC_FALSE_DAWN" END +END + +/* +luke +**Oil of Speed (cursed)** +- should display the feeblemind icon +*/ +WITH_SCOPE BEGIN + COPY_EXISTING "potn23.itm" "override" + LPF "DELETE_EFFECT" INT_VAR "match_opcode" = 142 "match_parameter2" = 3 END // Icon: Confused + GET_OFFSET_ARRAY "ab_array" ITM_V10_HEADERS + PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN + GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" ITM_V10_HEAD_EFFECTS + PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN + PATCH_MATCH SHORT_AT "%fx_off%" WITH + 326 WHEN SLONG_AT (0x4 + "%fx_off%") == IDS_OF_SYMBOL ("splstate" "FEEBLEMIND_IMMUNITY") AND LONG_AT (0x8 + "%fx_off%") == 111 BEGIN + READ_ASCII (0x14 + "%fx_off%") "subspell" + END + DEFAULT + END + END + END + INNER_ACTION BEGIN + COPY_EXISTING "%subspell%.spl" "override" + LPF "CLONE_EFFECT" INT_VAR "match_opcode" = 76 "opcode" = 142 "parameter1" = 0 "parameter2" = 48 "special" = 0 STR_VAR "resource" = "" "insert" = "below" END // portrait icon + BUT_ONLY_IF_IT_CHANGES + END + BUT_ONLY_IF_IT_CHANGES +END + +/* +luke +**Moon Dog Howl** +- "eefixpack\files\tph\luke\7eyes\7eyes.tph" follow-up +*/ +WITH_SCOPE BEGIN + COPY_EXISTING "spin891a.spl" "override" // panic subspell + LPF "ALTER_EFFECT" INT_VAR "match_opcode" = 177 "opcode" = 24 "parameter1" = 0 "parameter2" = 0 STR_VAR "match_resource" = "moondog" "resource" = "" END + LPF "ALTER_EFFECT" INT_VAR "match_opcode" = 177 "opcode" = 142 "parameter1" = 0 "parameter2" = 36 STR_VAR "match_resource" = "moond2" "resource" = "" END + LPF "ALTER_EFFECT" INT_VAR "match_opcode" = 177 "opcode" = 139 "parameter1" = 14007 "parameter2" = 0 STR_VAR "match_resource" = "moond1" "resource" = "" END + LPF "ALTER_EFFECT" INT_VAR "match_opcode" = 177 "opcode" = 215 "parameter1" = 0 "parameter2" = 1 STR_VAR "match_resource" = "moond4" "resource" = "cdhorror" END + LPF "CLONE_EFFECT" INT_VAR "match_opcode" = 24 "opcode" = 318 "parameter1" = IDS_OF_SYMBOL ("align" "MASK_EVIL") "parameter2" = 118 "timing" = 0 "duration" = 0 "special" = 0 STR_VAR "resource" = "%DEST_RES%" END + LPF "DELETE_EFFECT" INT_VAR "match_target" = 3 END + BUT_ONLY_IF_IT_CHANGES +END + ///// \\\\\ ///// projectile fixes \\\\\ ///// \\\\\ diff --git a/eefixpack/files/tph/bg_bg2_common_spell_fixes.tph b/eefixpack/files/tph/bg_bg2_common_spell_fixes.tph index 9a5f289c..d2e34fe9 100644 --- a/eefixpack/files/tph/bg_bg2_common_spell_fixes.tph +++ b/eefixpack/files/tph/bg_bg2_common_spell_fixes.tph @@ -30,7 +30,7 @@ WITH_SCOPE BEGIN END // luke -// Lesser Fire Spirit – Suppress misleading "One of the spell has failed" message +// Lesser Fire Spirit - Suppress misleading "One of the spell has failed" message // 1) Set subspell's range to a very high value (max signed value) // 2) Set subspell's projectile to either "RANGE05", "RANGE07" or "RANGE10". The second one is the most appropriate IMHO (given ELEMENTAL_FIRE_SMALL selection circle)... WITH_SCOPE BEGIN @@ -52,7 +52,7 @@ OUTER_FOR (index = 2 ; index < 21 ; ++index) BEGIN END // luke -// Grease – Remove duplicate op321 effect +// Grease - Remove duplicate op321 effect // grease should work like web and check for grease once/round WITH_SCOPE BEGIN COPY_EXISTING ~%WIZARD_GREASE%.spl~ ~override~ // Grease spwi101 @@ -72,7 +72,7 @@ WITH_SCOPE BEGIN END // luke -// Magic Missile – better feedback for the player when you cast it at someone protected by WIZARD_SHIELD +// Magic Missile - better feedback for the player when you cast it at someone protected by WIZARD_SHIELD WITH_SCOPE BEGIN COPY_EXISTING ~%WIZARD_MAGIC_MISSILE%.spl~ ~override~ // spwi112 ~%TRAP_MAGIC_MISSILE%.spl~ ~override~ // spwi003 @@ -101,7 +101,7 @@ WITH_SCOPE BEGIN END // luke -// Detect Evil – should not interact with spell protections +// Detect Evil - should not interact with spell protections // 1) there's no need for the subspell //// 1a) its effects have incorrect power levels //// 1b) more importantly, as of v2.6, you should no longer be able to bypass other's Magic Resistance by targeting yourself with an area-effect ability => see `https://gibberlings3.github.io/iesdp/file_formats/ie_formats/eff_v2.htm#effv2_Body_0x5C` (BIT3) for further details... @@ -122,6 +122,7 @@ END // 1) op39 can automatically display a portrait icon, there's no need to apply a separate op142 effect // 2) remove the "Bypass Mirror Image" flag (it's only relevant for opcode #12 and opcode #25) // 3) provide better feedback for the player when attacking Golems or Undead +// 4) op324 resource field should not be empty (bgee only) WITH_SCOPE BEGIN COPY_EXISTING "%WIZARD_STINKING_CLOUD%.spl" "override" // spwi213 PATCH_WITH_SCOPE BEGIN @@ -138,6 +139,7 @@ WITH_SCOPE BEGIN END LAUNCH_PATCH_FUNCTION ~DELETE_EFFECT~ INT_VAR ~match_opcode~ = 142 END LAUNCH_PATCH_FUNCTION ~ALTER_EFFECT~ INT_VAR ~match_opcode~ = 39 ~special~ = 126 END + LPF ~ALTER_EFFECT~ INT_VAR ~match_opcode~ = 324 ~match_parameter2~ = 55 STR_VAR ~resource~ = "%DEST_RES%" END BUT_ONLY_IF_IT_CHANGES END @@ -166,7 +168,7 @@ WITH_SCOPE BEGIN END // luke -// Lightning Bolt – remove duplicate op318 effect +// Lightning Bolt - remove duplicate op318 effect WITH_SCOPE BEGIN COPY_EXISTING "%WIZARD_LIGHTNING_BOLT%.spl" "override" // spwi308 "%TALOS_LIGHTNING_BOLT%.spl" "override" // spcl722 @@ -185,7 +187,7 @@ WITH_SCOPE BEGIN END // luke -// Protection From Normal Missiles – remove duplicate op328 effect +// Protection From Normal Missiles - remove duplicate op328 effect WITH_SCOPE BEGIN COPY_EXISTING "%WIZARD_PROTECTION_FROM_NORMAL_MISSILES%.spl" "override" // spwi311 "spra303.spl" "override" // Stalker @@ -232,7 +234,7 @@ WITH_SCOPE BEGIN END // luke -// Minor Spell Deflection – remove duplicate op328 / op233 effects +// Minor Spell Deflection - remove duplicate op328 / op233 effects WITH_SCOPE BEGIN COPY_EXISTING "%WIZARD_MINOR_SPELL_DEFLECTION%.spl" "override" // spwi318 "spra302.spl" "override" // Stalker @@ -285,7 +287,7 @@ WITH_SCOPE BEGIN END // luke -// Feeblemind – make sure it is truly permanent (until dispelled or character death) +// Feeblemind - make sure it is truly permanent (until dispelled or character death) //// Unlike other effects that alter a creature's stat, this one does leave behind a removable effect when applied with `timing=1` WITH_SCOPE BEGIN COPY_EXISTING "%WIZARD_FEEBLEMIND%.spl" "override" // spwi509 @@ -295,7 +297,7 @@ WITH_SCOPE BEGIN END // luke -// Protection From Normal Weapons – remove duplicate op328 effect +// Protection From Normal Weapons - remove duplicate op328 effect WITH_SCOPE BEGIN COPY_EXISTING "%WIZARD_PROTECTION_FROM_NORMAL_WEAPONS%.spl" "override" // spwi511 PATCH_WITH_SCOPE BEGIN @@ -310,7 +312,7 @@ WITH_SCOPE BEGIN END // luke -// Minor Spell Turning – remove duplicate op328 / op233 effects +// Minor Spell Turning - remove duplicate op328 / op233 effects WITH_SCOPE BEGIN COPY_EXISTING "%WIZARD_MINOR_SPELL_TURNING%.spl" "override" // spwi522 "%BEHOLDER_SPELL_TURNING%.spl" "override" // spin920 @@ -329,7 +331,7 @@ WITH_SCOPE BEGIN END // luke -// Spell Deflection – remove duplicate op328 / op233 effects +// Spell Deflection - remove duplicate op328 / op233 effects WITH_SCOPE BEGIN COPY_EXISTING "%WIZARD_SPELL_DEFLECTION%.spl" "override" // spwi618 "%SPELL_DEFLECTION_NO_VISUAL%.spl" "override" // spin710 @@ -349,7 +351,7 @@ WITH_SCOPE BEGIN END // luke -// Spell Turning – remove duplicate op328 / op233 effects +// Spell Turning - remove duplicate op328 / op233 effects WITH_SCOPE BEGIN COPY_EXISTING "%WIZARD_SPELL_TURNING%.spl" "override" // spwi701 PATCH_WITH_SCOPE BEGIN @@ -383,7 +385,7 @@ WITH_SCOPE BEGIN END // luke -// Spell Trap – remove duplicate op328 / op282 effects +// Spell Trap - remove duplicate op328 / op282 effects WITH_SCOPE BEGIN COPY_EXISTING "%WIZARD_SPELL_TRAP%.spl" "override" // spwi902 PATCH_WITH_SCOPE BEGIN @@ -438,6 +440,7 @@ END // - Make sure it truly slows poison (so as to match `IWDEE` and spell description/name) WITH_SCOPE BEGIN COPY_EXISTING ~%CLERIC_SLOW_POISON%.spl~ ~override~ // sppr212 + "spin102.spl" "override" // innate variant LAUNCH_PATCH_FUNCTION "ALTER_EFFECT" INT_VAR "match_opcode" = 11 "opcode" = 329 "parameter1" = 10 "parameter2" = 0 END // Cure poison => Slow poison BUT_ONLY_IF_IT_CHANGES END diff --git a/eefixpack/files/tph/bgee.tph b/eefixpack/files/tph/bgee.tph index 701c289b..b169be8f 100644 --- a/eefixpack/files/tph/bgee.tph +++ b/eefixpack/files/tph/bgee.tph @@ -320,6 +320,15 @@ WITH_SCOPE BEGIN END END +/* +luke +"7eyes.2da" vs. SPL/ITM files +*/ +WITH_SCOPE BEGIN + INCLUDE "eefixpack/files/tph/luke/7eyes/7eyes.tph" + LAUNCH_ACTION_FUNCTION "7EYESification" END +END + /* luke **Wing Buffet vs. MR** @@ -1227,6 +1236,29 @@ WITH_SCOPE BEGIN END END +/* +luke +**Wand of Cursing** +- add missing Deafness effect (as per item description) +*/ +WITH_SCOPE BEGIN + COPY_EXISTING "wand19.itm" "override" + LPF "CLONE_EFFECT" INT_VAR "match_opcode" = 326 "multi_match" = 1 "match_parameter2" = 111 "parameter1" = IDS_OF_SYMBOL ("splstate" "DEAFNESS_IMMUNITY") STR_VAR "resource" = "wand19df" END + BUT_ONLY_IF_IT_CHANGES +END + +/* +luke +**MAGIWEB** +- Should cause Web, not Paralysis + - "eefixpack\files\tph\luke\7eyes\7eyes.tph" follow-up +*/ +WITH_SCOPE BEGIN + COPY_EXISTING "magiweb.itm" "override" + LPF "ALTER_EFFECT" INT_VAR "match_opcode" = 326 "match_parameter1" = IDS_OF_SYMBOL ("splstate" "PARALYZE_IMMUNITY") "match_parameter2" = 111 "parameter1" = IDS_OF_SYMBOL ("splstate" "WEB_IMMUNITY") END + BUT_ONLY_IF_IT_CHANGES +END + /* +--------------------------------------------------------------------+ | [Luke] | @@ -1474,6 +1506,81 @@ WITH_SCOPE BEGIN LAF ~CLERIC_CREEPING_DOOM~ END END +/* +luke +**Wand of Cursing** +- add missing Deafness effect (as per item description) +*/ +WITH_SCOPE BEGIN + COPY_EXISTING - "wand19.itm" "override" + GET_OFFSET_ARRAY "ab_array" ITM_V10_HEADERS + PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN + GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" ITM_V10_HEAD_EFFECTS + PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN + PATCH_MATCH SHORT_AT "%fx_off%" WITH + 326 WHEN SLONG_AT (0x4 + "%fx_off%") == IDS_OF_SYMBOL ("splstate" "SILENCE_IMMUNITY") AND LONG_AT (0x8 + "%fx_off%") == 111 BEGIN + READ_ASCII (0x14 + "%fx_off%") "subspell" + END + DEFAULT + END + END + END + BUT_ONLY_IF_IT_CHANGES + COPY_EXISTING "%subspell%.spl" "override\wand19df.spl" + LPF "ALTER_EFFECT" INT_VAR "match_opcode" = 38 "opcode" = 80 "parameter1" = 0 "parameter2" = 0 "special" = 0 STR_VAR "resource" = "" END // deafness + LPF "ALTER_EFFECT" INT_VAR "match_opcode" = 142 "parameter1" = 0 "parameter2" = 112 "special" = 0 STR_VAR "resource" = "" END // portrait icon + LPF "ALTER_EFFECT" INT_VAR "match_opcode" = 139 "parameter1" = 31791 "parameter2" = 0 "special" = 0 STR_VAR "resource" = "" END // feedback string + BUT_ONLY_IF_IT_CHANGES +END + +/* +luke +**Tail Constriction** +- Should display the Webbed icon (instead of the Entangled icon) +*/ +WITH_SCOPE BEGIN + COPY_EXISTING "bdwyrmt.spl" "override" + LPF "DELETE_EFFECT" INT_VAR "match_opcode" = 142 END // portrait icon -- move to subspell + BUT_ONLY_IF_IT_CHANGES IF_EXISTS +END + +/* +luke +**MAGIWEB, Tail Constriction** +- Should display the Webbed icon (instead of the Held/Entangled icon) +*/ +WITH_SCOPE BEGIN + COPY_EXISTING "magiweb.spl" "override" + "bdwyrmtw.spl" "override" + LPF "CLONE_EFFECT" INT_VAR "match_opcode" = 157 "opcode" = 142 "parameter1" = 0 "parameter2" = 129 "special" = 0 STR_VAR "resource" = "" "insert" = "below" END // portrait icon + BUT_ONLY_IF_IT_CHANGES IF_EXISTS +END + +/* +luke +**Power Word, Stun - Power Word, Kill** +- fix incorrect op318/op324 resource field +*/ +WITH_SCOPE BEGIN + COPY_EXISTING "%CUTSCENE_POWERWORD_STUN%.spl" "override" + "%POWERWORD_STUN%.spl" "override" + "%POWERWORD_KILL%.spl" "override" + LPF "ALTER_EFFECT" INT_VAR "match_opcode" = 324 "special" = 0 STR_VAR "resource" = "%DEST_RES%" END + LPF "ALTER_EFFECT" INT_VAR "silent" = 1 "match_opcode" = 318 "special" = 0 STR_VAR "resource" = "%DEST_RES%" END + BUT_ONLY_IF_IT_CHANGES +END + +/* +luke +**False Dawn** +- make sure it affects undead (undead are normally immune to confusion, so this spell is not working as expected...) + - if EEex is not installed, abuse op182 to bypass/ignore op101 ("https://www.gibberlings3.net/forums/topic/35616-effect-immunities-on-the-ee-engine-aka-taking-full-advantage-of-the-ee-fixpack/page/2/#comment-313805") +*/ +WITH_SCOPE BEGIN + INCLUDE "eefixpack\files\tph\luke\false_dawn.tph" + //LAF "CLERIC_FALSE_DAWN" END +END + /* +-----------------------------------------------------------------+ | [Luke] | @@ -1498,6 +1605,37 @@ WITH_SCOPE BEGIN END END +/* ++-----------------------------------------------------------------+ +| [Luke] The Vampire's Revenge +1 | ++-----------------------------------------------------------------+ +| - Add missing feedback string | +| - Add missing portrait icon | ++-----------------------------------------------------------------+ +*/ + +WITH_SCOPE BEGIN + COPY_EXISTING - "sw1h19.itm" "override" + GET_OFFSET_ARRAY "ab_array" ITM_V10_HEADERS + PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN + GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" ITM_V10_HEAD_EFFECTS + PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN + PATCH_MATCH SHORT_AT "%fx_off%" WITH + 326 WHEN SLONG_AT (0x4 + "%fx_off%") == IDS_OF_SYMBOL ("splstate" "BERSERK_IMMUNITY") AND LONG_AT (0x8 + "%fx_off%") == 111 BEGIN + READ_ASCII (0x14 + "%fx_off%") "subspell" + END + DEFAULT + END + END + END + BUT_ONLY_IF_IT_CHANGES + COPY_EXISTING "%subspell%.spl" "override" + LPF "CLONE_EFFECT" INT_VAR "match_opcode" = 3 "opcode" = 142 "parameter1" = 0 "parameter2" = 4 "special" = 0 STR_VAR "resource" = "" "insert" = "below" END // portrait icon + LPF "CLONE_EFFECT" INT_VAR "match_opcode" = 3 "opcode" = 139 "parameter1" = 10381 "parameter2" = 0 "special" = 0 "duration" = 0 STR_VAR "resource" = "" "insert" = "below" END // feedback string + BUT_ONLY_IF_IT_CHANGES +END + + ///// \\\\\ ///// projectile fixes \\\\\ ///// \\\\\ diff --git a/eefixpack/files/tph/dw/holy_unholy.tph b/eefixpack/files/tph/dw/holy_unholy.tph index 9369e486..2d0df4fa 100644 --- a/eefixpack/files/tph/dw/holy_unholy.tph +++ b/eefixpack/files/tph/dw/holy_unholy.tph @@ -1,5 +1,5 @@ /* -This function moves Holy Smite and Unholy Blight so as to use 324 magic rather than a big block of 101s. +This function moves Holy Smite and Unholy Blight so as to use 324 magic rather than a big block of 177s. In the process it also handles EE save-for-half functionality. */ @@ -11,17 +11,47 @@ DEFINE_ACTION_FUNCTION holy_unholy BEGIN ACTION_IF GAME_IS "bgee bg2ee" BEGIN // rebuild to use 324s instead of horrific pile of EFFs COPY_EXISTING "SPPR313.spl" override + // patch subspell [luke] + GET_OFFSET_ARRAY ab_arr SPL_V10_HEADERS + PHP_EACH ab_arr AS ab_ind=>ab_off BEGIN + GET_OFFSET_ARRAY2 fx_arr ab_off SPL_V10_HEAD_EFFECTS + PHP_EACH fx_arr AS fx_ind=>fx_off BEGIN + PATCH_MATCH SHORT_AT fx_off WITH + 326 WHEN SLONG_AT (0x4+fx_off) = IDS_OF_SYMBOL ("splstate" "BLIND_IMMUNITY") && LONG_AT (0x8+fx_off) = 111 BEGIN + READ_ASCII (0x14+fx_off) subspell + END + DEFAULT + END + END + END + // + INNER_ACTION BEGIN + COPY_EXISTING "%subspell%.spl" override + GET_OFFSET_ARRAY ab_arr SPL_V10_HEADERS + PHP_EACH ab_arr AS ab_ind=>ab_off BEGIN + PATCH_IF SHORT_AT (0x10+ab_off) > 1 BEGIN + WRITE_BYTE ab_off 0xff + END + END + LPF DELETE_SPELL_HEADER INT_VAR header_type=0xff END // subspell is not supposed to scale with level + LPF DELETE_EFFECT END + LPF ADD_SPELL_EFFECT INT_VAR opcode=74 resist_dispel=BIT0+BIT1 target=2 duration=6 END // blindness + LPF ADD_SPELL_EFFECT INT_VAR opcode=139 resist_dispel=BIT0+BIT1 target=2 timing=1 parameter1=14674 END // 'blinded' string + BUT_ONLY + END + // LPF DELETE_EFFECT END // level-independent effects splprot_param="%SOURCE_RES%" STR_EQ sppr313 ? 38 : 36 - LPF ADD_SPELL_EFFECT INT_VAR opcode=324 target=2 parameter2=splprot_param STR_VAR resource="%SOURCE_RES%" END // block non-evil/non-good - LPF ADD_SPELL_EFFECT INT_VAR opcode=141 resist_dispel = 1 target=2 parameter2=26 END // lighting effect - LPF ADD_SPELL_EFFECT INT_VAR opcode=174 resist_dispel = 1 target=2 timing=1 STR_VAR resource=EFF_P85 END // sound - LPF ADD_SPELL_EFFECT INT_VAR opcode=74 resist_dispel = 1 target=2 duration=8 savingthrow=BIT0 END // blindness + LPF ADD_SPELL_EFFECT INT_VAR opcode=324 power=3 target=2 parameter2=splprot_param STR_VAR resource="%SOURCE_RES%" END // block non-evil/non-good + LPF ADD_SPELL_EFFECT INT_VAR opcode=141 power=3 resist_dispel=1 target=2 parameter2=26 END // lighting effect + LPF ADD_SPELL_EFFECT INT_VAR opcode=174 power=3 resist_dispel=1 target=2 timing=1 STR_VAR resource=EFF_P85 END // sound + LPF ADD_SPELL_EFFECT INT_VAR opcode=326 power=3 resist_dispel=1 target=2 timing=1 savingthrow=BIT0 parameter1=IDS_OF_SYMBOL(splstate blind_immunity) parameter2=111 STR_VAR resource="%subspell%" END // blindness, 'blinded' string + /*LPF ADD_SPELL_EFFECT INT_VAR opcode=74 resist_dispel = 1 target=2 duration=8 savingthrow=BIT0 END // blindness LPF ADD_SPELL_EFFECT INT_VAR opcode=139 resist_dispel = 1 target=2 timing=1 parameter1=14674 savingthrow=BIT0 END // 'blinded' string - LPF ADD_SPELL_EFFECT INT_VAR opcode=142 resist_dispel = 1 target=2 duration=8 parameter2=8 savingthrow=BIT0 END // 'blind' icon + LPF ADD_SPELL_EFFECT INT_VAR opcode=142 resist_dispel = 1 target=2 duration=8 parameter2=8 savingthrow=BIT0 END // 'blind' icon*/ // level-dependent blocks - LPF ADD_SPELL_EFFECT INT_VAR opcode=12 target=2 parameter2=64*0x10000 dicesize=4 savingthrow=BIT0+BIT24 special=BIT8 END + LPF ADD_SPELL_EFFECT INT_VAR opcode=12 target=2 power=3 resist_dispel=1 parameter2=64*0x10000 dicesize=4 savingthrow=BIT0+BIT24 special=BIT8 END GET_OFFSET_ARRAY ab_arr SPL_V10_HEADERS PHP_EACH ab_arr AS ab_ind=>ab_off BEGIN level=SHORT_AT (0x10+ab_off) diff --git a/eefixpack/files/tph/dw/paralyzation_fixes.tph b/eefixpack/files/tph/dw/paralyzation_fixes.tph index 7b7ac431..37c032f9 100644 --- a/eefixpack/files/tph/dw/paralyzation_fixes.tph +++ b/eefixpack/files/tph/dw/paralyzation_fixes.tph @@ -386,7 +386,8 @@ ACTION_IF GAME_IS "bg2ee iwdee" BEGIN //bgee already uses 185 BEGIN COPY_EXISTING "%hand_spell%.spl" override LPF ALTER_EFFECT INT_VAR match_opcode=39 opcode=185 parameter2=2 parameter1=0 END - LPF ALTER_EFFECT INT_VAR silent=1 match_opcode=337 match_parameter1=39 parameter1=185 END + //LPF ALTER_EFFECT INT_VAR silent=1 match_opcode=337 match_parameter1=39 parameter1=185 END + LPF DELETE_EFFECT INT_VAR silent=1 match_opcode=337 match_parameter1=39 match_parameter2=101 END // [luke] -- delete pathological op337 END END diff --git a/eefixpack/files/tph/dw_fixes.tph b/eefixpack/files/tph/dw_fixes.tph index fc3908c9..817d5da2 100644 --- a/eefixpack/files/tph/dw_fixes.tph +++ b/eefixpack/files/tph/dw_fixes.tph @@ -25,8 +25,8 @@ LAF declutter INT_VAR write END // Rearrange various orderings of effects; extract various effect blocks to subspells // (Prepares for other changes, notably immunities_via_324) -INCLUDE "%library_path%/rearrange_itm_spl.tph" -LAF rearrange_itm_spl END +//INCLUDE "%library_path%/rearrange_itm_spl.tph" +//LAF rearrange_itm_spl END // Sort out the various issues with 109/175/185 (this is the conservative bit) diff --git a/eefixpack/files/tph/iwdee.tph b/eefixpack/files/tph/iwdee.tph index 91b6395d..cdf9c859 100644 --- a/eefixpack/files/tph/iwdee.tph +++ b/eefixpack/files/tph/iwdee.tph @@ -199,13 +199,17 @@ WITH_SCOPE BEGIN END END +// tbd, davidw +// circle of bone subspell has illegal character in sig +COPY_EXISTING "#bonecir.spl" override WRITE_ASCII 0x0 "SPL " + /* luke "7eyes.2da" vs. SPL/ITM files */ WITH_SCOPE BEGIN INCLUDE "eefixpack/files/tph/luke/7eyes/7eyes.tph" - LAUNCH_ACTION_FUNCTION "7EYES" END + LAUNCH_ACTION_FUNCTION "7EYESification" END END /* @@ -685,6 +689,29 @@ WITH_SCOPE BEGIN BUT_ONLY_IF_IT_CHANGES END +/* +luke +**Three White Doves +3** +- Redone from scratch via op326 (instead of 177s) +- Fixed incorrect probability values +*/ +WITH_SCOPE BEGIN + INCLUDE "eefixpack/files/tph/luke/three_white_doves.tph" + LAUNCH_ACTION_FUNCTION "THREE_WHITE_DOVES" END +END + +/* +luke +**Talon of the Gloomfrost +4, Holdfast Arrow +1** +- Should display the Entangled icon instead of the Held icon +*/ +WITH_SCOPE BEGIN + COPY_EXISTING "holdfst.itm" "override" + "talongf.itm" "override" + LPF "DELETE_EFFECT" INT_VAR "check_globals" = 0 "match_opcode" = 142 "match_parameter2" = 13 END // portrait icon -- move to subspell + BUT_ONLY +END + ///// \\\\\ ///// spell fixes \\\\\ ///// \\\\\ @@ -697,11 +724,6 @@ INCLUDE ~eefixpack/files/tph/bg_bg2_iwd_common_spell_fixes.tph~ // spell fixes i INCLUDE ~eefixpack/files/tph/5919_iwdee_spider_spawn.tph~ // ie-5919, cam: spider spawn only summons giant spiders, should also summon phase and sword INCLUDE ~eefixpack/files/tph/tbd_324_traps_iwdee.tph~ // tbd, cam - game can crash if a spell-via-trap uses 318/324 vs. a spell without a name - -// tbd, davidw -// circle of bone subspell has illegal character in sig - COPY_EXISTING "#bonecir.spl" override WRITE_ASCII 0x0 "SPL " - // swapping stacking protection from 206/318/324 for 321 // see also cwoslim.itm, spin132.spl, sppr617.spl, spin161.spl, sppr250.spl, spwi101/b/c.spl COPY_EXISTING ~#cofear.spl~ ~override~ @@ -784,9 +806,16 @@ COPY_EXISTING ~spdr101.spl~ ~override~ COPY_EXISTING ~%INNATE_MOURNFUL_WAIL%.spl~ ~override~ // spin115 Mournful Wail; do separately since it has a 206 at top of stack LPF ALTER_EFFECT INT_VAR match_opcode = 139 probability1 = 100 END // play on all stuns LPF CLONE_EFFECT INT_VAR match_opcode = 139 opcode = 321 STR_VAR resource = spwi429 END // remove Emotion: Hope + LPF DELETE_EFFECT INT_VAR match_opcode = 142 match_parameter2 = 44 END + LPF CLONE_EFFECT INT_VAR match_opcode = 45 opcode = 142 parameter1 = 0 parameter2 = 44 STR_VAR insert = last END BUT_ONLY COPY_EXISTING ~%CLERIC_SYMBOL_OF_HOPELESSNESS%.spl~ ~override~ // sppr716 Symbol: Hopelessness + ~%WIZARD_EMOTION_HOPELESSNESS%.spl~ ~override~ // spwi411 LPF CLONE_EFFECT INT_VAR multi_match = 1 match_opcode = 139 opcode = 321 parameter1 = 0 parameter2 = 0 STR_VAR resource = spwi429 END // remove Emotion: Hope + LPF DELETE_EFFECT INT_VAR match_opcode = 142 match_parameter2 = 44 END + LPF DELETE_EFFECT INT_VAR match_opcode = 139 match_parameter1 = 14980 END + LPF CLONE_EFFECT INT_VAR match_opcode = 45 opcode = 142 parameter1 = 0 parameter2 = 44 STR_VAR insert = last END + LPF CLONE_EFFECT INT_VAR match_opcode = 45 opcode = 139 parameter1 = 14980 parameter2 = 0 timing = 1 duration = 0 STR_VAR insert = last END BUT_ONLY // ie-6033, cam @@ -908,10 +937,12 @@ COPY_EXISTING ~%CLERIC_SPIKE_STONES%.spl~ ~override~ // sppr519 // ie-5944, cam // Animal Rage needs power level corrections -COPY_EXISTING ~%CLERIC_ANIMAL_RAGE%.spl~ ~override~ // sppr522 +COPY_EXISTING ~%CLERIC_ANIMAL_RAGE%.spl~ ~override~ // sppr522 + LPF DELETE_EFFECT INT_VAR match_opcode = 321 match_timing = 4 END +COPY_EXISTING ~cd0003.spl~ ~override~ LPF DELETE_EFFECT INT_VAR match_opcode = 321 match_timing = 4 END -COPY_EXISTING ~%CLERIC_ANIMAL_RAGE%b.spl~ ~override~ // sppr522b - LPF ALTER_EFFECT INT_VAR power = 0 END +COPY_EXISTING ~%CLERIC_ANIMAL_RAGE%b.spl~ ~override~ // sppr522b + LPF ALTER_EFFECT INT_VAR power = 5 END // power stays at 5 as per its parent (since it is not an AoE spell!) // ie-5942, cam // Mass Cause Light Wounds should not be available to druids @@ -1061,12 +1092,55 @@ COPY_EXISTING ~%WIZARD_MIND_BLANK%.spl~ ~override~ // spwi802 // ie-5939, cam // Great Shout duplicates combat feedback on a failed save -COPY_EXISTING ~%WIZARD_GREAT_SHOUT%.spl~ ~override~ // spwi806 great shout - LPF DELETE_EFFECT INT_VAR match_opcode = 174 END - LPF DELETE_EFFECT INT_VAR match_opcode = 139 match_target = 2 match_savingthrow = BIT0 END // nuke dupe 'stunned' string - LPF CLONE_EFFECT INT_VAR match_opcode = 142 match_duration = 12 opcode = 206 parameter1 = 0 parameter2 = 0 duration = 1 STR_VAR resource = EVAL ~%WIZARD_GREAT_SHOUT%~ insert = below END - LPF ADD_SPELL_EFFECT INT_VAR insert_point = 0 opcode = 174 target = 1 power = 8 timing = 1 resist_dispel = 2 STR_VAR resource = ~#ff_m101~ END +WITH_SCOPE BEGIN + COPY_EXISTING - ~%WIZARD_GREAT_SHOUT%.spl~ ~override~ // spwi806 great shout + GET_OFFSET_ARRAY ab_arr SPL_V10_HEADERS + PHP_EACH ab_arr AS ab_ind => ab_off BEGIN + GET_OFFSET_ARRAY2 fx_arr ab_off SPL_V10_HEAD_EFFECTS + PHP_EACH fx_arr AS fx_ind => fx_off BEGIN + PATCH_MATCH SHORT_AT fx_off WITH + 326 WHEN LONG_AT (0x8 + fx_off) = 111 BEGIN + PATCH_MATCH SLONG_AT (0x4 + fx_off) WITH + IDS_OF_SYMBOL("splstate" "STUN_IMMUNITY") IDS_OF_SYMBOL("splstate" "DEAF_IMMUNITY") BEGIN + READ_ASCII (0x14 + fx_off) subspell + // patch subspell + PATCH_WITH_SCOPE BEGIN + INNER_ACTION BEGIN + COPY_EXISTING "%subspell%.spl" "override" + GET_OFFSET_ARRAY ab_arr SPL_V10_HEADERS + PHP_EACH ab_arr AS ab_ind => ab_off BEGIN + GET_OFFSET_ARRAY2 fx_arr ab_off SPL_V10_HEAD_EFFECTS + PHP_EACH fx_arr AS fx_ind => fx_off BEGIN + PATCH_MATCH LONG_AT (fx_off + 0x24) WITH + 0 BEGIN + READ_ASCII fx_off $temp_arr("%fx_ind%") (0x30) + WRITE_SHORT fx_off 999 + END + DEFAULT + END + END + END + LPF DELETE_SPELL_EFFECT INT_VAR opcode_to_delete = 999 END + LPF CLONE_EFFECT INT_VAR silent = 1 match_opcode = 80 opcode = 139 timing = 1 duration = 0 parameter1 = 14073 STR_VAR insert = below END + LPF ADD_SPELL_EFFECT INT_VAR opcode = 206 target = 2 savingthrow = BIT0 parameter1 = "-1" resist_dispel = 3 STR_VAR resource = "%DEST_RES%" END + PHP_EACH temp_arr AS "" => fx_data BEGIN + INSERT_BYTES (LONG_AT 0x6A + 0x30 * SHORT_AT (LONG_AT 0x64 + 0x1E)) 0x30 + WRITE_ASCII (LONG_AT 0x6A + 0x30 * SHORT_AT (LONG_AT 0x64 + 0x1E)) "%fx_data%" + WRITE_SHORT (LONG_AT 0x64 + 0x1E) (THIS + 1) + END + BUT_ONLY + END + END + END + DEFAULT + END + END + DEFAULT + END + END + END BUT_ONLY +END // luke // 1) Grease should not interact with spell protections @@ -1109,12 +1183,28 @@ END luke **Ghast attack** - Effects that grant a Save vs. Paralyze/Poison/Death should go into the new subspell +- Add missing feedback string */ WITH_SCOPE BEGIN COPY_EXISTING "ghast1.spl" "override" LPF "DELETE_EFFECT" INT_VAR "check_globals" = 0 "match_savingthrow" = BIT2 END BUT_ONLY_IF_IT_CHANGES - COPY_EXISTING "ghast1p.spl" "override" + COPY_EXISTING - "ghast1.itm" "override" + GET_OFFSET_ARRAY "ab_array" ITM_V10_HEADERS + PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN + GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" ITM_V10_HEAD_EFFECTS + PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN + PATCH_MATCH SHORT_AT "%fx_off%" WITH + 326 WHEN LONG_AT (0x8 + "%fx_off%") == 111 AND SLONG_AT (0x4 + "%fx_off%") == IDS_OF_SYMBOL ("splstate" "PARALYZE_IMMUNITY") BEGIN + READ_ASCII (0x14 + "%fx_off%") "subspell" + END + DEFAULT + END + END + END + BUT_ONLY + COPY_EXISTING "%subspell%.spl" "override" + LPF "ADD_SPELL_EFFECT" INT_VAR "opcode" = 139 "target" = 2 "timing" = 1 "parameter1" = 14650 "resist_dispel" = 3 END // feedback string LPF "ADD_SPELL_EFFECT" INT_VAR "opcode" = 174 "target" = 2 "timing" = 1 "resist_dispel" = 3 STR_VAR "resource" = "#EFF_P11" END LPF "ADD_SPELL_EFFECT" INT_VAR "opcode" = 174 "target" = 2 "timing" = 4 "duration" = 36 "resist_dispel" = 3 STR_VAR "resource" = "#EFF_E05" END BUT_ONLY_IF_IT_CHANGES @@ -1165,6 +1255,245 @@ WITH_SCOPE BEGIN END END +/* +luke +**Sprays Spores** +- make sure all effects are dispellable / bypass Magic Resistance + - this is a "eefixpack\files\tph\luke\7eyes\berserk.tph" follow-up +*/ + +WITH_SCOPE BEGIN + ACTION_CLEAR_ARRAY "subspell_arr" + // + COPY_EXISTING "%INNATE_MYCONID_SPORES%.spl" "override" + GET_OFFSET_ARRAY "ab_array" SPL_V10_HEADERS + PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN + GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" SPL_V10_HEAD_EFFECTS + PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN + PATCH_MATCH SHORT_AT "%fx_off%" WITH + 326 WHEN LONG_AT (0x8 + "%fx_off%") == 111 BEGIN + PATCH_MATCH SLONG_AT (0x4 + "%fx_off%") WITH + IDS_OF_SYMBOL ("splstate" "BERSERK_IMMUNITY") IDS_OF_SYMBOL ("splstate" "STUN_IMMUNITY") IDS_OF_SYMBOL ("splstate" "PANIC_IMMUNITY") BEGIN + READ_ASCII (0x14 + "%fx_off%") $"subspell_arr"("%fx_ind%") + WRITE_BYTE (0xD + "%fx_off%") BIT0 + END + DEFAULT + END + END + DEFAULT + END + END + END + BUT_ONLY_IF_IT_CHANGES + ACTION_PHP_EACH "subspell_arr" AS "" => "resref" BEGIN + COPY_EXISTING "%resref%.spl" "override" + LPF "ALTER_EFFECT" INT_VAR "check_globals" = 0 "resist_dispel" = BIT0 | BIT1 END + BUT_ONLY + END +END + +/* +luke +**Mental Domination** +- should also block innate abilities (as per spell description) +*/ + +WITH_SCOPE BEGIN + COPY_EXISTING "%CLERIC_MENTAL_DOMINATION%.spl" "override" + LPF "CLONE_EFFECT" INT_VAR "multi_match" = 1 "match_opcode" = 60 "parameter1" = 100 "parameter2" = 2 END // Casting failure (innate) + BUT_ONLY +END + +/* +luke +**Talon of the Gloomfrost +4, Holdfast Arrow +1** +- Should display the Entangled icon instead of the Held icon +- Should display the "Entangled" string +*/ +WITH_SCOPE BEGIN + COPY_EXISTING "holdfst.itm" "override" + "talongf.itm" "override" + GET_OFFSET_ARRAY "ab_array" ITM_V10_HEADERS + PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN + GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" ITM_V10_HEAD_EFFECTS + PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN + PATCH_MATCH SHORT_AT "%fx_off%" WITH + 326 WHEN SLONG_AT (0x4 + "%fx_off%") == IDS_OF_SYMBOL ("splstate" "ENTANGLE_IMMUNITY") AND LONG_AT (0x8 + "%fx_off%") == 111 BEGIN + READ_ASCII (0x14 + "%fx_off%") "subspell" + END + DEFAULT + END + END + END + INNER_ACTION BEGIN + COPY_EXISTING "%subspell%.spl" "override" + LPF "CLONE_EFFECT" INT_VAR "match_opcode" = 154 "opcode" = 142 "parameter1" = 0 "parameter2" = 144 "special" = 0 STR_VAR "insert" = "below" "resource" = "" END + LPF "CLONE_EFFECT" INT_VAR "match_opcode" = 154 "opcode" = 139 "parameter1" = 37709 "parameter2" = 0 "special" = 0 "timing" = 1 "duration" = 0 STR_VAR "insert" = "below" "resource" = "" END + BUT_ONLY + END + BUT_ONLY +END + +/* +luke +**(unused, but fix anyway)** +- Should display the Entangled icon instead of the Held icon +- Should display the "Entangled" string +*/ +WITH_SCOPE BEGIN + COPY_EXISTING "holdfst.spl" "override" + "talongf.spl" "override" + LPF "DELETE_EFFECT" INT_VAR "match_opcode" = 142 "match_parameter2" = 13 END + LPF "CLONE_EFFECT" INT_VAR "match_opcode" = 154 "opcode" = 142 "parameter1" = 0 "parameter2" = 144 "special" = 0 STR_VAR "insert" = "below" "resource" = "" END + LPF "CLONE_EFFECT" INT_VAR "match_opcode" = 154 "opcode" = 139 "parameter1" = 37709 "parameter2" = 0 "special" = 0 "timing" = 1 "duration" = 0 STR_VAR "insert" = "below" "resource" = "" END + BUT_ONLY +END + +/* +luke +**Club (unused, but fix anyway)** +- Add missing ancillary effects (it currently only displays the entangle overlay, but does not actually cause Entangle!) +*/ +WITH_SCOPE BEGIN + COPY_EXISTING "gasp.itm" "override" + GET_OFFSET_ARRAY "ab_array" ITM_V10_HEADERS + PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN + GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" ITM_V10_HEAD_EFFECTS + PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN + PATCH_MATCH SHORT_AT "%fx_off%" WITH + 326 WHEN SLONG_AT (0x4 + "%fx_off%") == IDS_OF_SYMBOL ("splstate" "entangle_immunity") AND LONG_AT (0x8 + "%fx_off%") == 111 BEGIN + READ_ASCII (0x14 + "%fx_off%") "subspell" + END + DEFAULT + END + END + END + INNER_ACTION BEGIN + COPY_EXISTING "%subspell%.spl" "override" + LPF "CLONE_EFFECT" INT_VAR "match_opcode" = 154 "opcode" = 142 "parameter1" = 0 "parameter2" = 144 "special" = 0 STR_VAR "insert" = "last" "resource" = "" END + LPF "CLONE_EFFECT" INT_VAR "match_opcode" = 154 "opcode" = 139 "parameter1" = 37709 "parameter2" = 0 "special" = 0 "timing" = 1 "duration" = 0 STR_VAR "insert" = "last" "resource" = "" END + LPF "CLONE_EFFECT" INT_VAR "match_opcode" = 154 "opcode" = 126 "parameter1" = 0 "parameter2" = 5 "special" = 0 STR_VAR "insert" = "last" "resource" = "" END + BUT_ONLY + END + BUT_ONLY +END + +/* +luke +**(unused, but fix anyway)** +- Add missing ancillary effects (it currently only displays the entangle overlay, but does not actually cause Entangle!) +*/ +WITH_SCOPE BEGIN + COPY_EXISTING "gasp.spl" "override" + GET_OFFSET_ARRAY "ab_array" SPL_V10_HEADERS + PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN + GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" SPL_V10_HEAD_EFFECTS + PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN + PATCH_MATCH SHORT_AT "%fx_off%" WITH + 326 WHEN SLONG_AT (0x4 + "%fx_off%") == IDS_OF_SYMBOL ("splstate" "entangle_immunity") AND LONG_AT (0x8 + "%fx_off%") == 111 BEGIN + READ_ASCII (0x14 + "%fx_off%") "subspell" + END + DEFAULT + END + END + END + INNER_ACTION BEGIN + COPY_EXISTING "%subspell%.spl" "override" + LPF "CLONE_EFFECT" INT_VAR "match_opcode" = 154 "opcode" = 142 "parameter1" = 0 "parameter2" = 144 "special" = 0 STR_VAR "insert" = "last" "resource" = "" END + LPF "CLONE_EFFECT" INT_VAR "match_opcode" = 154 "opcode" = 139 "parameter1" = 37709 "parameter2" = 0 "special" = 0 "timing" = 1 "duration" = 0 STR_VAR "insert" = "last" "resource" = "" END + LPF "CLONE_EFFECT" INT_VAR "match_opcode" = 154 "opcode" = 126 "parameter1" = 0 "parameter2" = 5 "special" = 0 STR_VAR "insert" = "last" "resource" = "" END + BUT_ONLY + END + BUT_ONLY +END + +/* +luke +**Warrior Cry, Fear, Aura of Fear, Spook, Emotion:Fear, Symbol:Fear** +- op324 resource field should not be blank +*/ +WITH_SCOPE BEGIN + COPY_EXISTING "%WARRIOR_WAR_CRY%.spl" "override" + "%INNATE_BEHOLDER_FEAR%.spl" "override" + "%INNATE_AURA_OF_FEAR%.spl" "override" + "%WIZARD_SPOOK%.spl" "override" + "%WIZARD_EMOTION_FEAR%.spl" "override" + "spwm123.spl" "override" // Symbol, Fear + LPF "ALTER_EFFECT" INT_VAR "match_opcode" = 324 "match_parameter2" = 55 STR_VAR "match_resource" = "" "resource" = "%DEST_RES%" END + BUT_ONLY +END + +/* +luke +**Cornugon** +- "eefixpack\files\tph\luke\7eyes\7eyes.tph" follow-up +*/ +WITH_SCOPE BEGIN + ACTION_CLEAR_ARRAY "tosubspell" + // + COPY_EXISTING "sflail.itm" "override" + GET_OFFSET_ARRAY "ab_array" ITM_V10_HEADERS + PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN + GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" ITM_V10_HEAD_EFFECTS + PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN + PATCH_MATCH SHORT_AT "%fx_off%" WITH + 326 WHEN SLONG_AT (0x4 + "%fx_off%") == IDS_OF_SYMBOL ("splstate" "stun_immunity") AND LONG_AT (0x8 + "%fx_off%") == 111 BEGIN + READ_ASCII (0x14 + "%fx_off%") "subspell" + END + 12 139 BEGIN + READ_ASCII "%fx_off%" $"tosubspell"("%fx_ind%") (0x30) + WRITE_SHORT "%fx_off%" 999 + END + DEFAULT + END + END + LPF "DELETE_EFFECT" INT_VAR "check_globals" = 0 "header" = "%ab_ind%" "match_opcode" = 999 END + LPF "CLONE_EFFECT" INT_VAR "check_globals" = 0 "header" = "%ab_ind%" "match_opcode" = 326 "opcode" = 146 "parameter1" = 0 "parameter2" = 1 "probability1" = 50 "probability2" = 0 STR_VAR "resource" = "sflail01" END + END + BUT_ONLY + // + COPY_EXISTING "%subspell%.spl" "override" + LPF "DELETE_SPELL_EFFECT" INT_VAR "opcode_to_delete" = 8 END + LPF "CLONE_EFFECT" INT_VAR "match_opcode" = 45 "opcode" = 8 "parameter1" = (46 << 8) + (56 << 16) + (0 << 24) "parameter2" = 255 STR_VAR "insert" = "last" END // Set color glow solid (Location: Character color) + BUT_ONLY + // + COPY_EXISTING "%subspell%.spl" "override\sflail01.spl" + LPF "DELETE_EFFECT" END + PHP_EACH "tosubspell" AS "" => "fx_data" BEGIN + INNER_PATCH "%fx_data%" BEGIN + READ_SHORT 0x0 "op" + PATCH_IF ("%op%" == 0xC) BEGIN + TEXT_SPRINT "insert" "first" + END ELSE BEGIN + TEXT_SPRINT "insert" "last" + END + END + PATCH_MATCH "%insert%" WITH + "first" BEGIN + SET "offset" = LONG_AT 0x6A + END + DEFAULT + SET "offset" = LONG_AT 0x6A + 0x30 * SHORT_AT (LONG_AT 0x64 + 0x1E) + END + INSERT_BYTES "%offset%" 0x30 + WRITE_ASCII "%offset%" "%fx_data%" + WRITE_BYTE ("%offset%" + 0x12) 100 // prob1 + WRITE_BYTE ("%offset%" + 0x13) 0 // prob2 + WRITE_SHORT (LONG_AT 0x64 + 0x1E) (THIS + 1) // # effects + END + BUT_ONLY +END + +/* +luke +**Searing Orb** // (unused, but fix anyway) +- "eefixpack\files\tph\luke\7eyes\7eyes.tph" follow-up +*/ +WITH_SCOPE BEGIN + INCLUDE "eefixpack\files\tph\luke\searing_orb.tph" + LAF "CLERIC_SOL_SEARING_ORB" END +END + ///// \\\\\ ///// projectile fixes \\\\\ ///// \\\\\ diff --git a/eefixpack/files/tph/luke/7eyes/7eyes.tph b/eefixpack/files/tph/luke/7eyes/7eyes.tph index 4369408a..df9b9804 100644 --- a/eefixpack/files/tph/luke/7eyes/7eyes.tph +++ b/eefixpack/files/tph/luke/7eyes/7eyes.tph @@ -1,66 +1,79 @@ -DEFINE_ACTION_FUNCTION "7EYES" +DEFINE_ACTION_FUNCTION "7EYESification" BEGIN // Include function library INCLUDE "eefixpack/files/lib/gt_7eyes.tph" - // Main - WITH_SCOPE BEGIN - INCLUDE "eefixpack/files/tph/luke/7eyes/berserk.tph" - LAF "BERSERK" END + // + ACTION_MATCH 1 WITH + GAME_IS "bgee" BEGIN + OUTER_TEXT_SPRINT "game_folder" "bg1" + END + GAME_IS "bg2ee eet" BEGIN + OUTER_TEXT_SPRINT "game_folder" "bg2" + END + GAME_IS "iwdee" BEGIN + OUTER_TEXT_SPRINT "game_folder" "iwd" + END + DEFAULT + FAIL "Game not supported (should not happen)" END - WITH_SCOPE BEGIN - INCLUDE "eefixpack/files/tph/luke/7eyes/charm_creature.tph" - LAF "CHARM_CREATURE" END + ACTION_DEFINE_ASSOCIATIVE_ARRAY "7eyes-o-matic" BEGIN + // effectID , damageType , splState , opcodeExtra , feedbackString , feedbackIcon , feedbackVfx => 2daFile + 3 , "null" , "BERSERK_IMMUNITY" , "" , "Berserk, Berzerk" , "4" , "" => "berserk.2da" + 5 , "null" , "CHARM_IMMUNITY" , "" , "Charmed, Dire Charmed, Dominated, Turned" , "0 1 43" , "" => "charm.2da" + 12 , "fire" , "" , "" , "Bleeding, Suffers Bleeding Wound, Bleeding Wound, Deathbringer Assault" , "102 137" , "fireh firel" => "damage_fire.2da" + 12 , "cold" , "" , "" , "Bleeding, Suffers Bleeding Wound, Bleeding Wound, Deathbringer Assault" , "102 137" , "coldh coldl" => "damage_cold.2da" + 12 , "electricity" , "" , "" , "Bleeding, Suffers Bleeding Wound, Bleeding Wound, Deathbringer Assault" , "102 137" , "electrh electrl" => "damage_electricity.2da" + 12 , "acid" , "" , "" , "Bleeding, Suffers Bleeding Wound, Bleeding Wound, Deathbringer Assault" , "102 137" , "acidh" => "damage_acid.2da" + 12 , "missile" , "" , "" , "Bleeding, Suffers Bleeding Wound, Bleeding Wound, Deathbringer Assault" , "102 137" , "" => "damage_missile.2da" + 12 , "crushing" , "" , "" , "Bleeding, Suffers Bleeding Wound, Bleeding Wound, Deathbringer Assault" , "102 137" , "" => "damage_crushing.2da" + 12 , "slashing" , "" , "" , "Bleeding, Suffers Bleeding Wound, Bleeding Wound, Deathbringer Assault" , "102 137" , "" => "damage_slashing.2da" + 12 , "piercing" , "" , "" , "Bleeding, Suffers Bleeding Wound, Bleeding Wound, Deathbringer Assault" , "102 137" , "" => "damage_piercing.2da" + 13 , "null" , "DEATH_IMMUNITY" , "" , "Death, Vorpal Hit" , "51" , "" => "kill.2da" + 16 , "null" , "HASTE_IMMUNITY" , "93 126 206 318" , "Haste, Hasted" , "38 110" , "" => "haste.2da" + 24 , "null" , "PANIC_IMMUNITY" , "23 54 106" , "Panic, Morale Failure: Panic, *flees in terror*" , "36" , "cdhorror spmindat ohrmind" => "panic.2da" + 38 , "null" , "SILENCE_IMMUNITY" , "" , "Silence, Silenced, Bard Song Silenced" , "34" , "" => "silence.2da" + //39 , "null" , "" , "" , "Sleep, Unconscious" , "" , "" => "sleep.2da" + 40 , "null" , "SLOW_IMMUNITY" , "0 54 240" , "Slow, Slowed" , "41" , "" => "slow.2da" + 45 , "null" , "STUN_IMMUNITY" , "" , "Stun, Stunned" , "55" , "cdstun spflayer spmindat" => "stun.2da" + 55 , "null" , "DEATH_IMMUNITY" , "" , "Death, Vorpal Hit" , "51" , "" => "slay.2da" + 74 , "null" , "BLIND_IMMUNITY" , "54" , "Blind, Blinded, Blindness" , "8" , "" => "blind.2da" + 76 , "null" , "FEEBLEMIND_IMMUNITY" , "" , "Feeblemind, Feebleminded, Feeblemindedness, Mind Locked Away" , "48" , "cdfeeble spmindat" => "feeblemind.2da" + 78 , "null" , "DISEASE_IMMUNITY" , "" , "Gibberslug Infection, Diseased, Stricken by a foul disease" , "7" , "" => "disease.2da" + 80 , "null" , "DEAF_IMMUNITY" , "" , "Deaf, Deafened, Deafness" , "112" , "" => "deaf.2da" + 109 , "null" , "PARALYZE_IMMUNITY" , "157" , "Paralyzed, Paralysed, Held" , "13" , "" => "paralyze.2da" + 128 , "null" , "CONFUSION_IMMUNITY" , "" , "Confused, Rigid Thinking, Chaos" , "2 3 47" , "spconfus" => "confusion.2da" + 134 , "null" , "PETRIFY_IMMUNITY" , "" , "Petrification, Petrified" , "171" , "" => "petrify.2da" + 142 , "null" , "" , "" , "" , "" , "" => "special.2da" + 154 , "null" , "ENTANGLE_IMMUNITY" , "0 126" , "Entangle, Entangled" , "144" , "spentaci entangc" => "entangle.2da" + 157 , "null" , "WEB_IMMUNITY" , "109" , "Webbed, Held" , "129" , "webentd webc" => "web.2da" + 158 , "null" , "GREASE_IMMUNITY" , "126" , "Grease, Greased" , "145" , "greased greaseb" => "grease.2da" + 175 , "null" , "HOLD_IMMUNITY" , "" , "Held" , "13" , "spmindat ohnwand1" => "hold.2da" + 209 , "null" , "DEATH_IMMUNITY" , "" , "Death, Vorpal Hit" , "51" , "" => "power_word_kill.2da" + 210 , "null" , "STUN_IMMUNITY" , "" , "Stun, Stunned" , "55" , "cdstun" => "power_word_stun.2da" + 211 , "null" , "IMPRISONMENT_IMMUNITY" , "" , "" , "79" , "spmaze1 spmaze2" => "imprisonment.2da" + 213 , "null" , "MAZE_IMMUNITY" , "" , "" , "78 190" , "spspmaze" => "maze.2da" + 238 , "null" , "DEATH_IMMUNITY" , "" , "Death, Vorpal Hit" , "51" , "" => "disintegrate.2da" END - WITH_SCOPE BEGIN - INCLUDE "eefixpack/files/tph/luke/7eyes/damage.tph" - LAF "DAMAGE" END - END - WITH_SCOPE BEGIN - INCLUDE "eefixpack/files/tph/luke/7eyes/panic.tph" - LAF "PANIC" END - END - WITH_SCOPE BEGIN - INCLUDE "eefixpack/files/tph/luke/7eyes/poison.tph" - LAF "POISON" END - END - WITH_SCOPE BEGIN - INCLUDE "eefixpack/files/tph/luke/7eyes/silence.tph" - LAF "SILENCE" END - END - WITH_SCOPE BEGIN - INCLUDE "eefixpack/files/tph/luke/7eyes/stun.tph" - LAF "STUN" END - END - WITH_SCOPE BEGIN - INCLUDE "eefixpack/files/tph/luke/7eyes/blindness.tph" - LAF "BLINDNESS" END - END - WITH_SCOPE BEGIN - INCLUDE "eefixpack/files/tph/luke/7eyes/feeblemindedness.tph" - LAF "FEEBLEMINDEDNESS" END - END - WITH_SCOPE BEGIN - INCLUDE "eefixpack/files/tph/luke/7eyes/deafness.tph" - LAF "DEAFNESS" END - END - WITH_SCOPE BEGIN - INCLUDE "eefixpack/files/tph/luke/7eyes/paralyze.tph" - LAF "PARALYZE" END - END - WITH_SCOPE BEGIN - INCLUDE "eefixpack/files/tph/luke/7eyes/confusion.tph" - LAF "CONFUSION" END - END - WITH_SCOPE BEGIN - INCLUDE "eefixpack/files/tph/luke/7eyes/petrification.tph" - LAF "PETRIFICATION" END - END - WITH_SCOPE BEGIN - INCLUDE "eefixpack/files/tph/luke/7eyes/hold_creature.tph" - LAF "HOLD_CREATURE" END - END - WITH_SCOPE BEGIN - INCLUDE "eefixpack/files/tph/luke/7eyes/power_word_stun.tph" - LAF "POWER_WORD_STUN" END + // + ACTION_PHP_EACH "7eyes-o-matic" AS "key" => "2daFile" BEGIN + ACTION_IF ("%key_2%" STRING_COMPARE_CASE "") BEGIN + LAF "ADD_IDS_ENTRY" STR_VAR "idsFile" = "splstate" "identifier" = "%key_2%" RET "value" END + END ELSE BEGIN + OUTER_SET "value" = "-1" + END + // + LAF "7EYES-O-MATIC" + INT_VAR + "splstate" = "%value%" + "effectID" = "%key_0%" + "damage_type" = IDS_OF_SYMBOL ("dmgtype" "%key_1%") + STR_VAR + "opcode_extra" = "%key_3%" + "feedback_string" = "%key_4%" + "feedback_icon" = "%key_5%" + "feedback_vfx" = "%key_6%" + // + "2da_filespec" = "eefixpack\files\tph\luke\7eyes\%game_folder%\%2daFile%" + END END END \ No newline at end of file diff --git a/eefixpack/files/tph/luke/7eyes/berserk.tph b/eefixpack/files/tph/luke/7eyes/berserk.tph deleted file mode 100644 index 4294618e..00000000 --- a/eefixpack/files/tph/luke/7eyes/berserk.tph +++ /dev/null @@ -1,149 +0,0 @@ -DEFINE_ACTION_FUNCTION "BERSERK" -BEGIN - /* - **************************************************************************************** - ***************************************** ITM files ************************************ - **************************************************************************************** - */ - - WITH_SCOPE BEGIN - ACTION_MATCH 1 WITH - (GAME_IS ~bgee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - END - END - (GAME_IS ~bg2ee eet~) BEGIN END - (GAME_IS ~iwdee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - "u2hax5a" , "-1" , "1,2,3" => "u2hax5a" // Foe's Fate +4 - "udart2a" , "-1" , "0,1,2" => "udart2a" // Berserker Darts - "young" , "-1" , "0,1,2" => "young" // Young Rage +5 - END - END - DEFAULT - FAIL "Game not supported" - END - /* Main */ - ACTION_PHP_EACH "patch_data" AS "x" => "y" BEGIN - COPY_EXISTING "%x_0%.itm" "override" - // Transfer effects onto a new SPL file (if needed) - PATCH_IF ("%y%" STRING_COMPARE_CASE "") BEGIN - LAUNCH_PATCH_FUNCTION "gt_extract_effects_as_subspell" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "subspell_resref" = "%y%" - "extract" = "%x_2%" - END - END ELSE BEGIN - LAUNCH_PATCH_FUNCTION "gt_permute_effects" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "permutation" = "%x_2%" - END - END - BUT_ONLY_IF_IT_CHANGES - END - END - - /* - **************************************************************************************** - ***************************************** SPL files ************************************ - **************************************************************************************** - */ - - WITH_SCOPE BEGIN - ACTION_MATCH 1 WITH - (GAME_IS ~bgee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - END - END - (GAME_IS ~bg2ee eet~) BEGIN END - (GAME_IS ~iwdee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - "%CLERIC_BLOOD_RAGE%" , "-1" , "54=>3" => "" - "%CLERIC_ANIMAL_RAGE%" , "-1" , "6=>2" => "" - END - END - DEFAULT - FAIL "Game not supported" - END - /* Main */ - ACTION_PHP_EACH "patch_data" AS "x" => "y" BEGIN - COPY_EXISTING "%x_0%.spl" "override" - // Transfer effects onto a new SPL file (if needed) - PATCH_IF ("%y%" STRING_COMPARE_CASE "") BEGIN - LAUNCH_PATCH_FUNCTION "gt_extract_effects_as_subspell" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "subspell_resref" = "%y%" - "extract" = "%x_2%" - END - END ELSE BEGIN - LAUNCH_PATCH_FUNCTION "gt_permute_effects" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "permutation" = "%x_2%" - END - END - BUT_ONLY_IF_IT_CHANGES - END - END -END - -///////////////////////////////////////////////////////////////// -/* - -Collect SPL/ITM files to check - -*/ -////////////////////////////////////////////////////////////////// - -/* -WITH_SCOPE BEGIN - OUTER_SET "count_spl" = 0 - OUTER_SET "count_itm" = 0 - COPY_EXISTING_REGEXP - "^.+\.\(spl\|itm\)$" "override" - PATCH_MATCH "%DEST_EXT%" WITH - "itm" BEGIN - GET_OFFSET_ARRAY "ab_array" ITM_V10_HEADERS - TEXT_SPRINT "filename" "rearrange_itm" - END - "spl" BEGIN - GET_OFFSET_ARRAY "ab_array" SPL_V10_HEADERS - TEXT_SPRINT "filename" "rearrange_spl" - END - DEFAULT - PATCH_FAIL "~%DEST_FILE%~" - END - PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN - PATCH_IF SHORT_AT ("%ab_off%" + 0x1E) > 1 BEGIN - GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" SPL_V10_HEAD_EFFECTS - PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN - PATCH_MATCH SHORT_AT "%fx_off%" WITH - 3 BEGIN - INNER_ACTION BEGIN - ACTION_IF ("%DEST_EXT%" STRING_EQUAL_CASE "itm") BEGIN - OUTER_SET "count_itm" += 1 - APPEND_OUTER "%MOD_FOLDER%/%filename%.txt" "%count_itm%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" UNLESS "%count_itm%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" - END ELSE BEGIN - OUTER_SET "count_spl" += 1 - APPEND_OUTER "%MOD_FOLDER%/%filename%.txt" "%count_spl%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" UNLESS "%count_spl%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" - END - END - END - DEFAULT - END - END - END - END - BUT_ONLY_IF_IT_CHANGES -END -*/ \ No newline at end of file diff --git a/eefixpack/files/tph/luke/7eyes/bg1/berserk.2da b/eefixpack/files/tph/luke/7eyes/bg1/berserk.2da new file mode 100644 index 00000000..4085602e --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg1/berserk.2da @@ -0,0 +1,7 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BDAX1H03.ITM CD0000 +1 SPIN117.SPL CD0001 +2 SW1H19.ITM CD0002 +3 SW1P01.ITM CD0003 diff --git a/eefixpack/files/tph/luke/7eyes/bg1/blind.2da b/eefixpack/files/tph/luke/7eyes/bg1/blind.2da new file mode 100644 index 00000000..80b13ac6 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg1/blind.2da @@ -0,0 +1,29 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BDBBEAUT.SPL **** +1 BDBRAC01.SPL **** +2 BDSHLD02.SPL CD005T +3 BDVENOMS.SPL CD005U +4 CHALCY2.ITM CD005V +5 POTN99.ITM CD005W +6 SORB.ITM CD005X +7 SPCL239A.SPL CD005Y +8 SPDM101.SPL **** +9 SPDR101.SPL CD005Z +10 SPIN878.SPL CD0060 +11 SPIN893.SPL CD0061 +12 SPIN929.SPL CD0062 +13 SPIN931.SPL CD0063 +14 SPPR313.SPL CD0064 +15 SPPR704.SPL CD0065 +16 SPPR707.SPL CD0066 +17 SPWI106.SPL **** +18 SPWI118.SPL CD0067 +19 SPWI224.SPL CD0068 +20 SPWI228.SPL CD0069 +21 SPWI714.SPL CD006A +22 SPWI815.SPL **** +23 SPWI958.SPL **** +24 SPWM178.SPL **** +25 WAND19.ITM CD006B diff --git a/eefixpack/files/tph/luke/7eyes/bg1/charm.2da b/eefixpack/files/tph/luke/7eyes/bg1/charm.2da new file mode 100644 index 00000000..27a010d9 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg1/charm.2da @@ -0,0 +1,36 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BDHAMADC.SPL **** +1 BDNERAU2.SPL **** +2 CLCK07.ITM CD0004 +3 CLCK08.ITM CD0005 +4 GORWOM1.ITM CD0006 +5 HGNYMPH.ITM CD0007 +6 MISC2P.ITM CD0008 +7 RING03.ITM CD0009 +8 RING27.ITM CD000A +9 SPCL311.SPL **** +10 SPCL641.SPL **** +11 SPIN108.SPL **** +12 SPIN119.SPL **** +13 SPIN558.SPL CD000B +14 SPIN785.SPL **** +15 SPIN883.SPL **** +16 SPIN910.SPL **** +17 SPIN975.SPL **** +18 SPIN980.SPL **** +19 SPIN985.SPL **** +20 SPPR204.SPL **** +21 SPPR405.SPL **** +22 SPPR982.SPL **** +23 SPWI104.SPL **** +24 SPWI316.SPL **** +25 SPWI506.SPL **** +26 SPWI929.SPL **** +27 SPWI930.SPL **** +28 SPWI939.SPL **** +29 SPWI943.SPL **** +30 SPWI996.SPL **** +31 SPWM179.SPL **** +32 SW1P01.ITM CD000C diff --git a/eefixpack/files/tph/luke/7eyes/bg1/confusion.2da b/eefixpack/files/tph/luke/7eyes/bg1/confusion.2da new file mode 100644 index 00000000..4c918421 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg1/confusion.2da @@ -0,0 +1,25 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BDAX1H05.SPL **** +1 BDMYCSP1.SPL **** +2 BDSHA01A.SPL **** +3 BDSHRIEK.SPL CD007O +4 BDSTINK.SPL **** +5 MAGICONF.ITM CD007P +6 SIRINE1.ITM CD007Q +7 SPCL751A.SPL CD007R +8 SPDR501.SPL **** +9 SPIN502.SPL **** +10 SPIN582.SPL **** +11 SPIN674.SPL **** +12 SPIN704.SPL **** +13 SPIN839.SPL **** +14 SPIN976.SPL **** +15 SPPR311.SPL **** +16 SPPR609.SPL CD007S +17 SPPR709.SPL **** +18 SPPR983.SPL **** +19 SPWI401.SPL **** +20 SPWI508.SPL **** +21 SPWI711.SPL CD007T diff --git a/eefixpack/files/tph/luke/7eyes/bg1/damage_acid.2da b/eefixpack/files/tph/luke/7eyes/bg1/damage_acid.2da new file mode 100644 index 00000000..8edb7292 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg1/damage_acid.2da @@ -0,0 +1,22 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BDCUT57A.SPL CD000U +1 BDDAGG05.SPL **** +2 BDMEPWAT.SPL **** +3 BDWYRMB.SPL **** +4 SHOAL.SPL **** +5 SHOAL1.SPL CD000V +6 SPDR101.SPL CD000W +7 SPIN191.SPL CD000X +8 SPIN691.SPL **** +9 SPIN708.SPL CD000Y +10 SPIN715.SPL CD000Z +11 SPIN787.SPL **** +12 SPIN792.SPL **** +13 SPIN913.SPL **** +14 SPIN917.SPL **** +15 SPIN994.SPL **** +16 SPWI118.SPL CD0010 +17 SPWI211.SPL **** +18 SPWI614.SPL CD0011 diff --git a/eefixpack/files/tph/luke/7eyes/bg1/damage_cold.2da b/eefixpack/files/tph/luke/7eyes/bg1/damage_cold.2da new file mode 100644 index 00000000..b51529a0 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg1/damage_cold.2da @@ -0,0 +1,10 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BDSW2H01.SPL CD000O +1 BDUNSLGU.SPL CD000P +2 SPIN723.SPL CD000Q +3 SPIN787.SPL **** +4 SPIN833.SPL **** +5 SPIN936.SPL **** +6 SPPR250.SPL CD000R diff --git a/eefixpack/files/tph/luke/7eyes/bg1/damage_crushing.2da b/eefixpack/files/tph/luke/7eyes/bg1/damage_crushing.2da new file mode 100644 index 00000000..4f40301f --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg1/damage_crushing.2da @@ -0,0 +1,22 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BDBLUN04.SPL **** +1 BDTR01.SPL CD0016 +2 BDWYRMT.SPL CD0017 +3 SPIN695.SPL CD0018 +4 SPIN834.SPL CD0019 +5 SPIN931.SPL CD001A +6 SPIN934.SPL CD001B +7 SPIN941.SPL **** +8 SPIN942.SPL **** +9 SPIN973.SPL CD001C +10 SPOGRE01.SPL CD001D +11 SPPR720.SPL CD001E +12 SPWI818.SPL CD001F +13 SPWI818A.SPL CD001G +14 SPWI918.SPL CD001H +15 SPWI918A.SPL CD001I +16 SPWI934.SPL CD001J +17 SPWM188.SPL CD001K +18 SPYANC01.SPL CD001L diff --git a/eefixpack/files/tph/luke/7eyes/bg1/damage_electricity.2da b/eefixpack/files/tph/luke/7eyes/bg1/damage_electricity.2da new file mode 100644 index 00000000..726d1960 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg1/damage_electricity.2da @@ -0,0 +1,6 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 SPIN656.SPL CD000S +1 SPIN787.SPL **** +2 SPIN932.SPL CD000T diff --git a/eefixpack/files/tph/luke/7eyes/bg1/damage_fire.2da b/eefixpack/files/tph/luke/7eyes/bg1/damage_fire.2da new file mode 100644 index 00000000..9e981531 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg1/damage_fire.2da @@ -0,0 +1,31 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BDALLDIE.SPL CD000D +1 BDBELBLZ.SPL **** +2 BDPFLAME.SPL **** +3 BDSHLD02.SPL CD000E +4 SPCL236.SPL **** +5 SPCL239A.SPL CD000F +6 SPDD03.SPL **** +7 SPDR101.SPL CD000G +8 SPIMIX01.SPL **** +9 SPIN693.SPL **** +10 SPIN701.SPL **** +11 SPIN720.SPL **** +12 SPIN721.SPL **** +13 SPIN726.SPL **** +14 SPIN799.SPL **** +15 SPIN819.SPL **** +16 SPIN877.SPL CD000H +17 SPIN926.SPL CD000I +18 SPPR503.SPL **** +19 SPPR609.SPL CD000J +20 SPPR985.SPL **** +21 SPWI103.SPL **** +22 SPWI118.SPL CD000K +23 SPWI217.SPL **** +24 SPWI303.SPL CD000L +25 SPWI304.SPL **** +26 SPWI711.SPL CD000M +27 SPWI979.SPL CD000N diff --git a/eefixpack/files/tph/luke/7eyes/bg1/damage_missile.2da b/eefixpack/files/tph/luke/7eyes/bg1/damage_missile.2da new file mode 100644 index 00000000..1d980935 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg1/damage_missile.2da @@ -0,0 +1,7 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 SPCL411.SPL CD0012 +1 SPCL411F.SPL CD0013 +2 SPCL415.SPL CD0014 +3 SPWI008.SPL CD0015 diff --git a/eefixpack/files/tph/luke/7eyes/bg1/damage_piercing.2da b/eefixpack/files/tph/luke/7eyes/bg1/damage_piercing.2da new file mode 100644 index 00000000..1770093f --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg1/damage_piercing.2da @@ -0,0 +1,20 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BDGASSA3.SPL CD001M +1 BDGSPEAR.SPL **** +2 BDHALB02.SPL **** +3 BDIMPALE.SPL CD001N +4 BDSW1H21.SPL **** +5 SPIN706.SPL **** +6 SPIN707.SPL CD001O +7 SPIN709.SPL **** +8 SPWI006.SPL CD001P +9 SPWI007.SPL CD001Q +10 SPWI009.SPL CD001R +11 SPWI010.SPL CD001S +12 SPWI011.SPL CD001T +13 SPWI012.SPL CD001U +14 SPWI013.SPL **** +15 SPWI019.SPL CD001V +16 SPWI303.SPL CD001W diff --git a/eefixpack/files/tph/luke/7eyes/bg1/damage_slashing.2da b/eefixpack/files/tph/luke/7eyes/bg1/damage_slashing.2da new file mode 100644 index 00000000..2a22a689 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg1/damage_slashing.2da @@ -0,0 +1,4 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BDDCOR1A.SPL **** diff --git a/eefixpack/files/tph/luke/7eyes/bg1/deaf.2da b/eefixpack/files/tph/luke/7eyes/bg1/deaf.2da new file mode 100644 index 00000000..83ddf62d --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg1/deaf.2da @@ -0,0 +1,10 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BDBRD04.SPL CD006U +1 BDSHRIEK.SPL CD006V +2 MELICAMP.SPL **** +3 SPIN191.SPL CD006W +4 SPPR710.SPL CD006X +5 SPPR715.SPL CD006Y +6 SPWI223.SPL **** diff --git a/eefixpack/files/tph/luke/7eyes/bg1/disease.2da b/eefixpack/files/tph/luke/7eyes/bg1/disease.2da new file mode 100644 index 00000000..a1a8ea7c --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg1/disease.2da @@ -0,0 +1,23 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BDBELDIS.SPL **** +1 BDBONEFI.SPL **** +2 BDBOW01.SPL **** +3 BDDRAGGH.ITM CD006H +4 BDFESTER.SPL **** +5 BDGIBBBR.ITM CD006I +6 BDISEASE.SPL **** +7 BDMUMM01.ITM CD006J +8 BDOTYG01.ITM CD006K +9 BDOTYG02.ITM CD006L +10 BDWOLFDR.ITM CD006M +11 DEMOGORG.ITM CD006N +12 FINMEL01.ITM CD006O +13 MUMGREW.ITM CD006P +14 MUMMYW.ITM CD006Q +15 OTYUGH.ITM CD006R +16 PUDDEN01.ITM CD006S +17 RAVAG03.ITM CD006T +18 SPIN784.SPL **** +19 SPWI409.SPL **** diff --git a/eefixpack/files/tph/luke/7eyes/bg1/disintegrate.2da b/eefixpack/files/tph/luke/7eyes/bg1/disintegrate.2da new file mode 100644 index 00000000..7620be52 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg1/disintegrate.2da @@ -0,0 +1,14 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BLAKBLAD.ITM CD008X +1 SPIN542.SPL **** +2 SPIN782.SPL **** +3 SPIN793.SPL **** +4 SPIN805.SPL CD008Y +5 SPIN982.SPL **** +6 SPWI055.SPL **** +7 SPWI056.SPL **** +8 SPWI616.SPL **** +9 SPWI711.SPL CD008Z +10 SPWI714.SPL CD0090 diff --git a/eefixpack/files/tph/luke/7eyes/bg1/entangle.2da b/eefixpack/files/tph/luke/7eyes/bg1/entangle.2da new file mode 100644 index 00000000..13cc5244 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg1/entangle.2da @@ -0,0 +1,11 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BDBOW06.SPL **** +1 BDIMPALE.SPL CD008M +2 BDSHAMB.SPL **** +3 HGNYA01.ITM CD008N +4 MOUND.ITM CD008O +5 SPIN688.SPL **** +6 SPPR105.SPL **** +7 SPWM111.SPL **** diff --git a/eefixpack/files/tph/luke/7eyes/bg1/feeblemind.2da b/eefixpack/files/tph/luke/7eyes/bg1/feeblemind.2da new file mode 100644 index 00000000..1cb47a58 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg1/feeblemind.2da @@ -0,0 +1,11 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BDMYCSP2.SPL **** +1 POTN23.ITM CD006C +2 SCRL18.ITM CD006D +3 SIRINE.ITM CD006E +4 SIRINE1.ITM CD006F +5 SPPR650.SPL **** +6 SPWI509.SPL **** +7 SPWI714.SPL CD006G diff --git a/eefixpack/files/tph/luke/7eyes/bg1/grease.2da b/eefixpack/files/tph/luke/7eyes/bg1/grease.2da new file mode 100644 index 00000000..dd5e30b7 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg1/grease.2da @@ -0,0 +1,5 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 SPIN914.SPL CD008Q +1 SPWI101.SPL **** diff --git a/eefixpack/files/tph/luke/7eyes/bg1/haste.2da b/eefixpack/files/tph/luke/7eyes/bg1/haste.2da new file mode 100644 index 00000000..510e16d3 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg1/haste.2da @@ -0,0 +1,16 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BDCRIMSN.SPL **** +1 BDFLESHR.SPL **** +2 BDRUNRUN.SPL **** +3 CUTHIDE.SPL CD002Z +4 POTN14.ITM CD0030 +5 SPIN572.SPL **** +6 SPIN828.SPL **** +7 SPIN978.SPL **** +8 SPRA301.SPL **** +9 SPWI305.SPL **** +10 SPWI613.SPL **** +11 SPWI711.SPL CD0031 +12 SPWM115.SPL **** diff --git a/eefixpack/files/tph/luke/7eyes/bg1/hold.2da b/eefixpack/files/tph/luke/7eyes/bg1/hold.2da new file mode 100644 index 00000000..9d8863e4 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg1/hold.2da @@ -0,0 +1,17 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BDMISC07.SPL **** +1 SPCL415.SPL CD008R +2 SPIN503.SPL **** +3 SPIN988.SPL **** +4 SPIN990.SPL **** +5 SPIN996.SPL CD008S +6 SPIN999.SPL **** +7 SPPR208.SPL **** +8 SPPR305.SPL **** +9 SPPR989.SPL **** +10 SPWI306.SPL **** +11 SPWI507.SPL **** +12 SPWM122.SPL **** +13 SW1P01.ITM CD008T diff --git a/eefixpack/files/tph/luke/7eyes/bg1/imprisonment.2da b/eefixpack/files/tph/luke/7eyes/bg1/imprisonment.2da new file mode 100644 index 00000000..6be98d37 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg1/imprisonment.2da @@ -0,0 +1,5 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 SPIN788.SPL **** +1 SPWI910.SPL CD008U diff --git a/eefixpack/files/tph/luke/7eyes/bg1/kill.2da b/eefixpack/files/tph/luke/7eyes/bg1/kill.2da new file mode 100644 index 00000000..11c31aec --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg1/kill.2da @@ -0,0 +1,54 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 ACIDOOZ4.ITM CD001X +1 BALOR.ITM CD001Y +2 BDCHUNK.SPL **** +3 BDNEERA3.SPL CD001Z +4 BDNEERA4.SPL CD0020 +5 BDSTONEC.SPL **** +6 BDSW1H3B.SPL CD0021 +7 BDZHADRO.SPL CD0022 +8 DEVA.ITM CD0023 +9 DEVAEVIL.ITM CD0024 +10 ELEMCHAN.ITM CD0025 +11 ELEMCRYO.ITM CD0026 +12 ELEMHYDR.ITM CD0027 +13 ELEMIMIX.ITM CD0028 +14 ELEMOGRE.ITM CD0029 +15 ELEMSUNN.ITM CD002A +16 ELEMYANC.ITM CD002B +17 ELEMZAAM.ITM CD002C +18 FINSOL01.ITM CD002D +19 FINSOL02.ITM CD002E +20 JELLGR1.ITM CD002F +21 MAGIDEAD.ITM CD002G +22 NEIRED.ITM CD002H +23 PLANETAR.ITM CD002I +24 POTN40.ITM CD002J +25 PTION2K.ITM CD002K +26 PTION2L.ITM CD002L +27 PTION2M.ITM CD002M +28 PTION2N.ITM CD002N +29 SCRL17.ITM CD002O +30 SCRLZY.ITM CD002P +31 SENSPI01.ITM CD002Q +32 SPERMEL.ITM CD002R +33 SPIDVO01.ITM CD002S +34 SPIN770.SPL **** +35 SPIN780.SPL **** +36 SPIN781.SPL **** +37 SPIN804.SPL **** +38 SPIN813.SPL **** +39 SPIN871.SPL CD002T +40 SPIN877.SPL CD002U +41 SPIN888.SPL **** +42 SPIN951.SPL **** +43 SPIN952.SPL **** +44 SPIN953.SPL **** +45 SPIN973.SPL CD002V +46 SPPR303.SPL CD002W +47 SPPR710.SPL CD002X +48 SPPR715.SPL CD002Y +49 SPWI023.SPL **** +50 SPWI998.SPL **** diff --git a/eefixpack/files/tph/luke/7eyes/bg1/maze.2da b/eefixpack/files/tph/luke/7eyes/bg1/maze.2da new file mode 100644 index 00000000..7da65a2f --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg1/maze.2da @@ -0,0 +1,9 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BDMAZE.SPL **** +1 SPCL415.SPL CD008V +2 SPIN774.SPL **** +3 SPPR750.SPL CD008W +4 SPPR750B.SPL **** +5 SPWI813.SPL **** diff --git a/eefixpack/files/tph/luke/7eyes/bg1/panic.2da b/eefixpack/files/tph/luke/7eyes/bg1/panic.2da new file mode 100644 index 00000000..306a23c6 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg1/panic.2da @@ -0,0 +1,43 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BDAURAFE.SPL **** +1 BDDRAGG2.SPL CD0032 +2 BDFEAR.SPL **** +3 BDFEYRWP.ITM CD0033 +4 BDGFEAR.SPL CD0034 +5 BDHAFEAR.SPL CD0035 +6 BDNEOAWE.SPL **** +7 BDPANIC.SPL **** +8 BDPOTN01.ITM CD0036 +9 BDSHA01C.SPL **** +10 BDTGAZE.SPL **** +11 BEARSPIR.ITM CD0037 +12 MISTICE.ITM CD0038 +13 SPBATT1.ITM CD0039 +14 SPBATT2.ITM CD003A +15 SPBATT3.ITM CD003B +16 SPBATT4.ITM CD003C +17 SPBATT5.ITM CD003D +18 SPCL103.SPL CD003E +19 SPIN105.SPL **** +20 SPIN675.SPL **** +21 SPIN680.SPL **** +22 SPIN772.SPL **** +23 SPIN807.SPL CD003F +24 SPIN882.SPL **** +25 SPIN890.SPL **** +26 SPIN891.SPL CD003G +27 SPIN895.SPL **** +28 SPIN921.SPL CD003H +29 SPIN981.SPL **** +30 SPPR416.SPL **** +31 SPPR517.SPL CD003I +32 SPPR706.SPL **** +33 SPWI125.SPL **** +34 SPWI205.SPL **** +35 SPWI811.SPL **** +36 SPWI899.SPL **** +37 SPWI956.SPL **** +38 SPWM123.SPL **** +39 WAND02.ITM CD003J diff --git a/eefixpack/files/tph/luke/7eyes/bg1/paralyze.2da b/eefixpack/files/tph/luke/7eyes/bg1/paralyze.2da new file mode 100644 index 00000000..923efd83 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg1/paralyze.2da @@ -0,0 +1,34 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BASILG1.ITM CD006Z +1 BASILL1.ITM CD0070 +2 BDBONBAT.ITM CD0071 +3 BDCCRAW1.ITM CD0072 +4 BDGHASTG.ITM CD0073 +5 BDSPIDGA.SPL **** +6 BDWOLFVA.ITM CD0074 +7 CARRIO1.ITM CD0075 +8 DEMMAU01.ITM CD0076 +9 GHAST1.ITM CD0077 +10 GHOUL1.ITM CD0078 +11 GHOULT.ITM CD0079 +12 KALDW1.ITM CD007A +13 LICH02.ITM CD007B +14 MAGIWEB.ITM CD007C +15 PARABASI.ITM CD007D +16 REVENT1.ITM CD007E +17 SPDR201.SPL **** +18 SPIN683.SPL **** +19 SPIN776.SPL CD007F +20 SPIN863.SPL **** +21 SPIN914.SPL CD007G +22 SPIN960.SPL **** +23 SPWATT2.ITM CD007H +24 SPWATT3.ITM CD007I +25 SPWATT4.ITM CD007J +26 SPWATT5.ITM CD007K +27 SPWI215.SPL **** +28 SPWI711.SPL CD007L +29 VAMPIRE.ITM CD007M +30 WOLFVA1.ITM CD007N diff --git a/eefixpack/files/tph/luke/7eyes/bg1/petrify.2da b/eefixpack/files/tph/luke/7eyes/bg1/petrify.2da new file mode 100644 index 00000000..c6446d86 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg1/petrify.2da @@ -0,0 +1,20 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BASIGAZE.ITM CD007U +1 BASILG1.ITM CD007V +2 BASILL1.ITM CD007W +3 BDSTSNAK.ITM CD007X +4 EYEGOR01.ITM CD007Y +5 PARABASI.ITM CD007Z +6 SCRL16.ITM CD0080 +7 SPDR101.SPL CD0081 +8 SPIN865.SPL **** +9 SPIN889.SPL **** +10 SPIN950.SPL **** +11 SPIN984.SPL **** +12 SPWI053.SPL **** +13 SPWI118.SPL CD0082 +14 SPWI604.SPL **** +15 SPWI714.SPL CD0083 +16 SW1P01.ITM CD0084 diff --git a/eefixpack/files/tph/luke/7eyes/bg1/power_word_kill.2da b/eefixpack/files/tph/luke/7eyes/bg1/power_word_kill.2da new file mode 100644 index 00000000..4c240958 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg1/power_word_kill.2da @@ -0,0 +1,8 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 SPPR719.SPL **** +1 SPWI817.SPL **** +2 SPWI897.SPL **** +3 SPWI912.SPL **** +4 SPWI960.SPL **** diff --git a/eefixpack/files/tph/luke/7eyes/bg1/power_word_stun.2da b/eefixpack/files/tph/luke/7eyes/bg1/power_word_stun.2da new file mode 100644 index 00000000..e3b61c48 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg1/power_word_stun.2da @@ -0,0 +1,6 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 SPIN944.SPL **** +1 SPWI715.SPL **** +2 SPWI959.SPL **** diff --git a/eefixpack/files/tph/luke/7eyes/bg1/silence.2da b/eefixpack/files/tph/luke/7eyes/bg1/silence.2da new file mode 100644 index 00000000..cc4d4996 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg1/silence.2da @@ -0,0 +1,9 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 SPIN692.SPL **** +1 SPIN998.SPL **** +2 SPPR211.SPL **** +3 SPPR988.SPL **** +4 SPWI612.SPL **** +5 WAND19.ITM CD003K diff --git a/eefixpack/files/tph/luke/7eyes/bg1/slay.2da b/eefixpack/files/tph/luke/7eyes/bg1/slay.2da new file mode 100644 index 00000000..a6eb0970 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg1/slay.2da @@ -0,0 +1,36 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 AROW03.ITM CD0053 +1 BDCUT57A.SPL CD0054 +2 BDNERKIS.SPL **** +3 BULL04.ITM CD0055 +4 LICHEL01.ITM CD0056 +5 SLAYLIVE.ITM CD0057 +6 SPCL411.SPL CD0058 +7 SPCL411F.SPL CD0059 +8 SPDR101.SPL CD005A +9 SPIN673.SPL CD005B +10 SPIN681.SPL **** +11 SPIN723.SPL CD005C +12 SPIN789.SPL **** +13 SPIN820.SPL **** +14 SPIN836.SPL **** +15 SPIN864.SPL CD005D +16 SPIN961.SPL CD005E +17 SPIN991.SPL **** +18 SPPR599.SPL CD005F +19 SPPR704.SPL CD005G +20 SPPR708.SPL CD005H +21 SPWI006.SPL CD005I +22 SPWI016.SPL CD005J +23 SPWI054.SPL CD005K +24 SPWI118.SPL CD005L +25 SPWI502.SPL CD005M +26 SPWI605.SPL CD005N +27 SPWI713.SPL CD005O +28 SPWI913.SPL **** +29 SW1H99.ITM CD005P +30 SW1P01.ITM CD005Q +31 TELSLAV.ITM CD005R +32 WAND13.ITM CD005S diff --git a/eefixpack/files/tph/luke/7eyes/bg1/slow.2da b/eefixpack/files/tph/luke/7eyes/bg1/slow.2da new file mode 100644 index 00000000..f3033b55 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg1/slow.2da @@ -0,0 +1,36 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 ACIDOOZ3.ITM CD003L +1 BDHALB03.SPL **** +2 BDSHA06B.SPL **** +3 BDSW1H02.SPL **** +4 BDSW2H01.SPL CD003M +5 BDTR01.SPL CD003N +6 BDUNSLGU.SPL CD003O +7 BONEDAG.ITM CD003P +8 DOGWAWP.ITM CD003Q +9 HGBER01.ITM CD003R +10 JELLMU1.ITM CD003S +11 JELLMU2.ITM CD003T +12 PLYJELLY.ITM CD003U +13 POTN32.ITM CD003V +14 SHARSWD.ITM CD003W +15 SPCL123.SPL CD003X +16 SPCL415.SPL CD003Y +17 SPCL422.SPL CD003Z +18 SPCL751A.SPL CD0040 +19 SPERMEL.ITM CD0041 +20 SPIN575.SPL **** +21 SPIN817.SPL CD0042 +22 SPIN818.SPL CD0043 +23 SPIN977.SPL **** +24 SPIN983.SPL **** +25 SPPR250.SPL CD0044 +26 SPPR610.SPL CD0045 +27 SPPR710.SPL CD0046 +28 SPPR715.SPL CD0047 +29 SPWI312.SPL **** +30 SPWISH25.SPL **** +31 SPWM112.SPL **** +32 SPWM164.SPL **** diff --git a/eefixpack/files/tph/luke/7eyes/bg1/special.2da b/eefixpack/files/tph/luke/7eyes/bg1/special.2da new file mode 100644 index 00000000..29e1fae6 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg1/special.2da @@ -0,0 +1,23 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BDAX1HGH.ITM CD0085 +1 BDBLUNGH.ITM CD0086 +2 BDGFEAR.SPL CD0087 +3 BDGHOST.ITM CD0088 +4 BDSHADGR.ITM CD0089 +5 BDSHADOW.ITM CD008A +6 BDSTRDRN.SPL CD008B +7 BDSW1HGH.ITM CD008C +8 BDSW2HGH.ITM CD008D +9 BDSYMPAI.SPL CD008E +10 BDVOID.SPL **** +11 BONEFD.ITM CD008F +12 MAGISPWR.ITM CD008G +13 MINDFLAY.ITM CD008H +14 SHADOWWP.ITM CD008I +15 SHARSWD.ITM CD008J +16 SPIDWR1.ITM CD008K +17 SPIN808.SPL **** +18 SPIN901.SPL **** +19 SPPR751.SPL CD008L diff --git a/eefixpack/files/tph/luke/7eyes/bg1/stun.2da b/eefixpack/files/tph/luke/7eyes/bg1/stun.2da new file mode 100644 index 00000000..d792c2e7 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg1/stun.2da @@ -0,0 +1,47 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BDDCOR01.SPL **** +1 BDHALB01.ITM CD0048 +2 BDHELM17.SPL **** +3 BDSHA06A.SPL **** +4 BDSHRIEK.SPL CD0049 +5 BLUN41.ITM CD004A +6 CARRIO.ITM CD004B +7 CORNUGON.ITM CD004C +8 DART03.ITM CD004D +9 DEMCOR01.ITM CD004E +10 DEVA.ITM CD004F +11 DWBOLT02.ITM CD004G +12 ELEMHYDR.ITM CD004H +13 GHOULC.ITM CD004I +14 GOLTOME4.ITM CD004J +15 GORSNAKE.ITM CD004K +16 ICETRL.ITM CD004L +17 PARACARR.ITM CD004M +18 PARAGHAS.ITM CD004N +19 PARAGHOU.ITM CD004O +20 SAHBOLT.ITM CD004P +21 SPCL123.SPL CD004Q +22 SPDR101.SPL CD004R +23 SPERMEL.ITM CD004S +24 SPIN191.SPL CD004T +25 SPIN543.SPL **** +26 SPIN727.SPL **** +27 SPIN832.SPL **** +28 SPIN834.SPL CD004U +29 SPIN909.SPL **** +30 SPIN926.SPL CD004V +31 SPIN927.SPL CD004W +32 SPIN934.SPL CD004X +33 SPIN959.SPL **** +34 SPIN974.SPL **** +35 SPPR710.SPL CD004Y +36 SPPR715.SPL CD004Z +37 SPPR718.SPL **** +38 SPPR984.SPL CD0050 +39 SPWI118.SPL CD0051 +40 SPWI816.SPL **** +41 SPWI898.SPL **** +42 SPWM152.SPL **** +43 WAND04.ITM CD0052 diff --git a/eefixpack/files/tph/luke/7eyes/bg1/web.2da b/eefixpack/files/tph/luke/7eyes/bg1/web.2da new file mode 100644 index 00000000..2c8590b7 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg1/web.2da @@ -0,0 +1,8 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BDSPIDGA.SPL **** +1 BDWYRMT.SPL CD008P +2 SPDR201.SPL **** +3 SPIN683.SPL **** +4 SPWI215.SPL **** diff --git a/eefixpack/files/tph/luke/7eyes/bg2/berserk.2da b/eefixpack/files/tph/luke/7eyes/bg2/berserk.2da new file mode 100644 index 00000000..d08d1dd0 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg2/berserk.2da @@ -0,0 +1,5 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 SPIN117.SPL CD0000 +1 SW1H19.ITM CD0001 diff --git a/eefixpack/files/tph/luke/7eyes/bg2/blind.2da b/eefixpack/files/tph/luke/7eyes/bg2/blind.2da new file mode 100644 index 00000000..64b14f57 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg2/blind.2da @@ -0,0 +1,32 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 CHALCY2.ITM CD008G +1 GORWOM4.ITM CD008H +2 HALB06.ITM CD008I +3 OHBWFOG.SPL **** +4 OHDWAND1.ITM CD008J +5 OHRBLIND.SPL **** +6 OHRDARK.SPL **** +7 SORB.ITM CD008K +8 SPCL239A.SPL CD008L +9 SPDM101.SPL **** +10 SPDR101.SPL CD008M +11 SPIN595.SPL CD008N +12 SPIN613.SPL **** +13 SPIN878.SPL CD008O +14 SPIN893.SPL CD008P +15 SPIN929.SPL CD008Q +16 SPIN931.SPL CD008R +17 SPPR313.SPL CD008S +18 SPPR704.SPL CD008T +19 SPPR707.SPL CD008U +20 SPWI106.SPL **** +21 SPWI118.SPL CD008V +22 SPWI224.SPL CD008W +23 SPWI714.SPL CD008X +24 SPWI815.SPL **** +25 SPWI958.SPL **** +26 SPWM178.SPL **** +27 SW1H51.ITM CD008Y +28 WAND19.ITM CD008Z diff --git a/eefixpack/files/tph/luke/7eyes/bg2/charm.2da b/eefixpack/files/tph/luke/7eyes/bg2/charm.2da new file mode 100644 index 00000000..0de7c004 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg2/charm.2da @@ -0,0 +1,46 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BEGUILE.SPL CD0002 +1 CLCK07.ITM CD0003 +2 DEMOCHM.SPL **** +3 GORWOM1.ITM CD0004 +4 HGNYMPH.ITM CD0005 +5 MISC2P.ITM CD0006 +6 MISC9X.ITM CD0007 +7 OHREYEB1.SPL **** +8 OHRMJAR.SPL CD0008 +9 REGISAMU.ITM CD0009 +10 RING03.ITM CD000A +11 RING27.ITM CD000B +12 RING28.ITM CD000C +13 RING29.ITM CD000D +14 RING30.ITM CD000E +15 SPCL311.SPL **** +16 SPCL641.SPL **** +17 SPIN108.SPL **** +18 SPIN119.SPL **** +19 SPIN553.SPL CD000F +20 SPIN558.SPL **** +21 SPIN614.SPL **** +22 SPIN785.SPL **** +23 SPIN883.SPL **** +24 SPIN910.SPL **** +25 SPIN975.SPL **** +26 SPIN980.SPL **** +27 SPIN985.SPL **** +28 SPPR204.SPL **** +29 SPPR405.SPL **** +30 SPPR982.SPL **** +31 SPWI104.SPL **** +32 SPWI316.SPL **** +33 SPWI506.SPL **** +34 SPWI929.SPL **** +35 SPWI930.SPL CD000G +36 SPWI939.SPL **** +37 SPWI943.SPL **** +38 SPWI996.SPL **** +39 SPWM179.SPL **** +40 STAF09.ITM CD000H +41 STAF14.ITM CD000I +42 URGEKILL.SPL **** diff --git a/eefixpack/files/tph/luke/7eyes/bg2/confusion.2da b/eefixpack/files/tph/luke/7eyes/bg2/confusion.2da new file mode 100644 index 00000000..12c2398d --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg2/confusion.2da @@ -0,0 +1,26 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BDSHA01A.SPL **** +1 INSANITY.SPL CD00AH +2 MAGICONF.ITM CD00AI +3 MISC3M.ITM CD00AJ +4 OHBJOKE1.SPL **** +5 SIRINE1.ITM CD00AK +6 SPCL751A.SPL CD00AL +7 SPDR501.SPL **** +8 SPIN582.SPL **** +9 SPIN612.SPL CD00AM +10 SPIN674.SPL **** +11 SPIN704.SPL **** +12 SPIN839.SPL **** +13 SPIN976.SPL **** +14 SPPR311.SPL **** +15 SPPR609.SPL CD00AN +16 SPPR709.SPL **** +17 SPPR983.SPL **** +18 SPWI401.SPL **** +19 SPWI508.SPL **** +20 SPWI711.SPL CD00AO +21 WA2HARP.ITM CD00AP +22 WAS2H.ITM CD00AQ diff --git a/eefixpack/files/tph/luke/7eyes/bg2/damage_acid.2da b/eefixpack/files/tph/luke/7eyes/bg2/damage_acid.2da new file mode 100644 index 00000000..7f845223 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg2/damage_acid.2da @@ -0,0 +1,19 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 OHDMASK.SPL CD001E +1 OHRGROG.SPL CD001F +2 SPDR101.SPL CD001G +3 SPIN596.SPL **** +4 SPIN691.SPL **** +5 SPIN708.SPL CD001H +6 SPIN715.SPL CD001I +7 SPIN787.SPL **** +8 SPIN792.SPL **** +9 SPIN913.SPL **** +10 SPIN917.SPL **** +11 SPIN994.SPL **** +12 SPIN996.SPL CD001J +13 SPWI118.SPL CD001K +14 SPWI211.SPL **** +15 SPWI614.SPL CD001L diff --git a/eefixpack/files/tph/luke/7eyes/bg2/damage_cold.2da b/eefixpack/files/tph/luke/7eyes/bg2/damage_cold.2da new file mode 100644 index 00000000..4324e255 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg2/damage_cold.2da @@ -0,0 +1,12 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BDSW2H01.SPL CD0014 +1 OHBICEW.SPL CD0015 +2 OHDDIVRT.SPL CD0016 +3 SPIN562.SPL **** +4 SPIN723.SPL CD0017 +5 SPIN787.SPL **** +6 SPIN833.SPL **** +7 SPIN936.SPL **** +8 SPPR250.SPL CD0018 diff --git a/eefixpack/files/tph/luke/7eyes/bg2/damage_crushing.2da b/eefixpack/files/tph/luke/7eyes/bg2/damage_crushing.2da new file mode 100644 index 00000000..8401cb29 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg2/damage_crushing.2da @@ -0,0 +1,27 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 ABZAWAY.SPL CD001T +1 BALTH01.SPL CD001U +2 BALTH09.SPL CD001V +3 CH3AWAY.SPL CD001W +4 JWWHIRL.SPL CD001X +5 OHBQUAKE.SPL CD001Y +6 OHBWHIRL.SPL CD001Z +7 SPIN695.SPL CD0020 +8 SPIN834.SPL CD0021 +9 SPIN931.SPL CD0022 +10 SPIN934.SPL CD0023 +11 SPIN941.SPL **** +12 SPIN942.SPL **** +13 SPIN973.SPL CD0024 +14 SPOGRE01.SPL CD0025 +15 SPPR720.SPL CD0026 +16 SPWI818.SPL CD0027 +17 SPWI818A.SPL CD0028 +18 SPWI918.SPL CD0029 +19 SPWI918A.SPL CD002A +20 SPWI934.SPL CD002B +21 SPWISH27.SPL CD002C +22 SPWM188.SPL CD002D +23 SPYANC01.SPL CD002E diff --git a/eefixpack/files/tph/luke/7eyes/bg2/damage_electricity.2da b/eefixpack/files/tph/luke/7eyes/bg2/damage_electricity.2da new file mode 100644 index 00000000..4668b43e --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg2/damage_electricity.2da @@ -0,0 +1,10 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 CDSTAF12.SPL CD0019 +1 OHBWI308.SPL **** +2 SPIN531.SPL CD001A +3 SPIN579.SPL CD001B +4 SPIN656.SPL CD001C +5 SPIN787.SPL **** +6 SPIN932.SPL CD001D diff --git a/eefixpack/files/tph/luke/7eyes/bg2/damage_fire.2da b/eefixpack/files/tph/luke/7eyes/bg2/damage_fire.2da new file mode 100644 index 00000000..02249442 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg2/damage_fire.2da @@ -0,0 +1,40 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BALTH01.SPL CD000J +1 JWSIEGE.SPL CD000K +2 OHBEFLAM.SPL **** +3 SPAURU.SPL CD000L +4 SPCL236.SPL **** +5 SPCL239A.SPL CD000M +6 SPCL911B.SPL CD000N +7 SPDD03.SPL **** +8 SPDR101.SPL CD000O +9 SPIMIX01.SPL **** +10 SPIN539.SPL **** +11 SPIN560.SPL CD000P +12 SPIN561.SPL **** +13 SPIN567.SPL **** +14 SPIN636.SPL CD000Q +15 SPIN693.SPL **** +16 SPIN701.SPL **** +17 SPIN720.SPL CD000R +18 SPIN721.SPL CD000S +19 SPIN726.SPL CD000T +20 SPIN799.SPL **** +21 SPIN819.SPL **** +22 SPIN877.SPL CD000U +23 SPIN926.SPL CD000V +24 SPPR503.SPL **** +25 SPPR609.SPL CD000W +26 SPPR722.SPL CD000X +27 SPPR728.SPL CD000Y +28 SPPR985.SPL **** +29 SPWI103.SPL **** +30 SPWI118.SPL CD000Z +31 SPWI217.SPL **** +32 SPWI303.SPL CD0010 +33 SPWI304.SPL **** +34 SPWI711.SPL CD0011 +35 SPWI922.SPL CD0012 +36 SPWI925.SPL CD0013 diff --git a/eefixpack/files/tph/luke/7eyes/bg2/damage_missile.2da b/eefixpack/files/tph/luke/7eyes/bg2/damage_missile.2da new file mode 100644 index 00000000..3b878ac7 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg2/damage_missile.2da @@ -0,0 +1,10 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 EYEEGLM3.SPL CD001M +1 EYEEGLM4.SPL CD001N +2 EYEEGLM7.SPL CD001O +3 SPCL411.SPL CD001P +4 SPCL411F.SPL CD001Q +5 SPCL415.SPL CD001R +6 SPWI008.SPL CD001S diff --git a/eefixpack/files/tph/luke/7eyes/bg2/damage_piercing.2da b/eefixpack/files/tph/luke/7eyes/bg2/damage_piercing.2da new file mode 100644 index 00000000..a05d6e6f --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg2/damage_piercing.2da @@ -0,0 +1,17 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 OHBBLEED.SPL CD002H +1 SPIN595.SPL CD002I +2 SPIN706.SPL **** +3 SPIN707.SPL CD002J +4 SPIN709.SPL **** +5 SPWI006.SPL CD002K +6 SPWI007.SPL CD002L +7 SPWI009.SPL CD002M +8 SPWI010.SPL CD002N +9 SPWI011.SPL CD002O +10 SPWI012.SPL CD002P +11 SPWI013.SPL **** +12 SPWI019.SPL CD002Q +13 SPWI303.SPL CD002R diff --git a/eefixpack/files/tph/luke/7eyes/bg2/damage_slashing.2da b/eefixpack/files/tph/luke/7eyes/bg2/damage_slashing.2da new file mode 100644 index 00000000..942b1bfa --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg2/damage_slashing.2da @@ -0,0 +1,5 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 MELIS01.SPL CD002F +1 SAREVEFF.SPL CD002G diff --git a/eefixpack/files/tph/luke/7eyes/bg2/deaf.2da b/eefixpack/files/tph/luke/7eyes/bg2/deaf.2da new file mode 100644 index 00000000..1570c293 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg2/deaf.2da @@ -0,0 +1,8 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 OHNCOLL.ITM CD009K +1 SPPR710.SPL CD009L +2 SPPR715.SPL CD009M +3 SPWI223.SPL **** +4 WAND19.ITM CD009N diff --git a/eefixpack/files/tph/luke/7eyes/bg2/disease.2da b/eefixpack/files/tph/luke/7eyes/bg2/disease.2da new file mode 100644 index 00000000..9535490f --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg2/disease.2da @@ -0,0 +1,22 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 DARTMEL.ITM CD0095 +1 DEMOGORG.ITM CD0096 +2 GHOULLOR.ITM CD0097 +3 IOTYUGH.ITM CD0098 +4 LACEDO.ITM CD0099 +5 LACEDO02.ITM CD009A +6 MUMGREW.ITM CD009B +7 MUMMYW.ITM CD009C +8 OHBCDIS.SPL **** +9 OHBJOKE2.SPL **** +10 OHBJOKE3.SPL **** +11 OHHGMUM1.ITM CD009D +12 OHRSLNG1.ITM CD009E +13 P1-2P.ITM CD009G +14 PUDDEN01.ITM CD009H +15 SAHZOM01.ITM CD009I +16 SPIN784.SPL **** +17 SPWI409.SPL **** +18 ZOMSEA.ITM CD009J diff --git a/eefixpack/files/tph/luke/7eyes/bg2/disintegrate.2da b/eefixpack/files/tph/luke/7eyes/bg2/disintegrate.2da new file mode 100644 index 00000000..e52d51c7 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg2/disintegrate.2da @@ -0,0 +1,16 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BLAKBLAD.ITM CD00C0 +1 SPIN542.SPL **** +2 SPIN552.SPL **** +3 SPIN624.SPL **** +4 SPIN782.SPL **** +5 SPIN793.SPL **** +6 SPIN805.SPL CD00C1 +7 SPIN982.SPL **** +8 SPWI055.SPL **** +9 SPWI056.SPL **** +10 SPWI616.SPL **** +11 SPWI711.SPL CD00C2 +12 SPWI714.SPL CD00C3 diff --git a/eefixpack/files/tph/luke/7eyes/bg2/entangle.2da b/eefixpack/files/tph/luke/7eyes/bg2/entangle.2da new file mode 100644 index 00000000..91555d8f --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg2/entangle.2da @@ -0,0 +1,10 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 HGNYA01.ITM CD00BJ +1 MOUND.ITM CD00BK +2 SPIN688.SPL **** +3 SPPR105.SPL **** +4 SPWM111.SPL **** +5 SW1H58.ITM CD00BL +6 SW1H59.ITM CD00BM diff --git a/eefixpack/files/tph/luke/7eyes/bg2/feeblemind.2da b/eefixpack/files/tph/luke/7eyes/bg2/feeblemind.2da new file mode 100644 index 00000000..e728ccda --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg2/feeblemind.2da @@ -0,0 +1,10 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 INSANITY.SPL CD0090 +1 POTN23.ITM CD0091 +2 SCRL18.ITM CD0092 +3 SIRINE.ITM CD0093 +4 SPPR650.SPL **** +5 SPWI509.SPL **** +6 SPWI714.SPL CD0094 diff --git a/eefixpack/files/tph/luke/7eyes/bg2/grease.2da b/eefixpack/files/tph/luke/7eyes/bg2/grease.2da new file mode 100644 index 00000000..d86457ad --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg2/grease.2da @@ -0,0 +1,6 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 KUOSPER.ITM CD00BN +1 SPIN914.SPL CD00BO +2 SPWI101.SPL **** diff --git a/eefixpack/files/tph/luke/7eyes/bg2/haste.2da b/eefixpack/files/tph/luke/7eyes/bg2/haste.2da new file mode 100644 index 00000000..2b699a93 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg2/haste.2da @@ -0,0 +1,23 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BRAC16.ITM CD0049 +1 MISCBC.ITM CD004A +2 POTN14.ITM CD004B +3 RING39.ITM CD004C +4 RUNRUN.SPL **** +5 SPIN572.SPL **** +6 SPIN584.SPL **** +7 SPIN655.SPL **** +8 SPIN828.SPL **** +9 SPIN978.SPL **** +10 SPRA301.SPL **** +11 SPWI305.SPL **** +12 SPWI613.SPL **** +13 SPWI711.SPL CD004D +14 SPWISH36.SPL **** +15 SPWISH37.SPL **** +16 SPWISH40.SPL **** +17 SPWM115.SPL **** +18 SW1H27.ITM CD004E +19 WAND12.ITM CD004F diff --git a/eefixpack/files/tph/luke/7eyes/bg2/hold.2da b/eefixpack/files/tph/luke/7eyes/bg2/hold.2da new file mode 100644 index 00000000..f08cc750 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg2/hold.2da @@ -0,0 +1,19 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 OHNWAND1.SPL CD00BP +1 OHREYEB2.SPL **** +2 SPCL415.SPL CD00BQ +3 SPIN648.SPL **** +4 SPIN988.SPL **** +5 SPIN990.SPL **** +6 SPIN996.SPL CD00BR +7 SPIN999.SPL **** +8 SPPR208.SPL **** +9 SPPR305.SPL **** +10 SPPR728.SPL CD00BS +11 SPPR989.SPL **** +12 SPWI306.SPL **** +13 SPWI507.SPL **** +14 SPWM114.SPL **** +15 SPWM122.SPL **** diff --git a/eefixpack/files/tph/luke/7eyes/bg2/imprisonment.2da b/eefixpack/files/tph/luke/7eyes/bg2/imprisonment.2da new file mode 100644 index 00000000..da1dae99 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg2/imprisonment.2da @@ -0,0 +1,7 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 SPIN580.SPL CD00BT +1 SPIN626.SPL CD00BU +2 SPIN788.SPL CD00BV +3 SPWI910.SPL CD00BW diff --git a/eefixpack/files/tph/luke/7eyes/bg2/kill.2da b/eefixpack/files/tph/luke/7eyes/bg2/kill.2da new file mode 100644 index 00000000..357d6887 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg2/kill.2da @@ -0,0 +1,69 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 ACIDOOZ4.ITM CD002S +1 AX1H10.ITM CD002T +2 AX1H15.ITM CD002V +3 BALOR.ITM CD002W +4 BLUN12.ITM CD002X +5 BLUN25.ITM CD002Y +6 DEVA.ITM CD002Z +7 DEVAEVIL.ITM CD0030 +8 ELEMCHAN.ITM CD0031 +9 ELEMCRYO.ITM CD0032 +10 ELEMHYDR.ITM CD0033 +11 ELEMIMIX.ITM CD0034 +12 ELEMOGRE.ITM CD0035 +13 ELEMSUNN.ITM CD0036 +14 ELEMYANC.ITM CD0037 +15 ELEMZAAM.ITM CD0038 +16 FINSOL01.ITM CD0039 +17 FINSOL02.ITM CD003A +18 GITH.ITM CD003B +19 HALB09.ITM CD003C +20 HALB11.ITM CD003D +21 HAMM10.ITM CD003E +22 HAMM11.ITM CD003F +23 JELLGR1.ITM CD003G +24 JWDEATH.SPL **** +25 JWWHIRL.SPL CD003H +26 MAGIDEAD.ITM CD003I +27 NEIRED.ITM CD003J +28 OHBDEVA.ITM CD003K +29 OHBPTN03.ITM CD003L +30 OHBPTN05.ITM CD003M +31 OHBPTN06.ITM CD003N +32 OHBPTN07.ITM CD003O +33 OHBPTN10.ITM CD003P +34 OHBWHIRL.SPL CD003Q +35 OHBWING.ITM CD003R +36 OHHFROST.SPL CD003S +37 OHNKILL.SPL **** +38 PLANETAR.ITM CD003T +39 POTN40.ITM CD003U +40 PTION41.ITM CD003V +41 SCRL17.ITM CD003W +42 SCRLZY.ITM CD003X +43 SENSPI01.ITM CD003Y +44 SPCTMD02.SPL **** +45 SPERMEL.ITM CD003Z +46 SPIDVO01.ITM CD0040 +47 SPIN627.SPL **** +48 SPIN770.SPL CD0041 +49 SPIN780.SPL **** +50 SPIN781.SPL **** +51 SPIN804.SPL **** +52 SPIN813.SPL **** +53 SPIN871.SPL CD0042 +54 SPIN877.SPL CD0043 +55 SPIN888.SPL **** +56 SPIN951.SPL **** +57 SPIN952.SPL **** +58 SPIN953.SPL **** +59 SPIN973.SPL CD0044 +60 SPPR303.SPL CD0045 +61 SPPR710.SPL CD0046 +62 SPPR715.SPL CD0047 +63 SPWI023.SPL **** +64 SPWI998.SPL **** +65 SW2H15.ITM CD0048 diff --git a/eefixpack/files/tph/luke/7eyes/bg2/maze.2da b/eefixpack/files/tph/luke/7eyes/bg2/maze.2da new file mode 100644 index 00000000..147841ae --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg2/maze.2da @@ -0,0 +1,10 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 OHBDEMI3.SPL CD00BX +1 SPCL415.SPL CD00BY +2 SPCL937.SPL **** +3 SPIN774.SPL **** +4 SPPR750.SPL CD00BZ +5 SPPR750B.SPL **** +6 SPWI813.SPL **** diff --git a/eefixpack/files/tph/luke/7eyes/bg2/panic.2da b/eefixpack/files/tph/luke/7eyes/bg2/panic.2da new file mode 100644 index 00000000..0a6d3ad4 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg2/panic.2da @@ -0,0 +1,48 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 B1-12M4.ITM CD004G +1 BDSHA01C.SPL **** +2 BEARSPIR.ITM CD004H +3 FLPR717A.SPL **** +4 HELM32.ITM CD004I +5 MISTHO.ITM CD004J +6 MISTICE.ITM CD004K +7 OHBDFA1.SPL **** +8 OHBDRAG2.SPL **** +9 OHBTGAZE.SPL **** +10 OHREYEB3.SPL **** +11 OHRFEAR.SPL **** +12 RODMACE.ITM CD004L +13 RODS05.ITM CD004M +14 SPBATT1.ITM CD004N +15 SPBATT2.ITM CD004O +16 SPBATT3.ITM CD004P +17 SPBATT4.ITM CD004Q +18 SPBATT5.ITM CD004R +19 SPCL103.SPL CD004S +20 SPCL908.SPL **** +21 SPIN105.SPL **** +22 SPIN203.SPL **** +23 SPIN536.SPL **** +24 SPIN559.SPL **** +25 SPIN675.SPL **** +26 SPIN680.SPL **** +27 SPIN772.SPL **** +28 SPIN807.SPL CD004T +29 SPIN882.SPL **** +30 SPIN890.SPL **** +31 SPIN891.SPL CD004U +32 SPIN895.SPL **** +33 SPIN921.SPL CD004V +34 SPIN981.SPL **** +35 SPPR416.SPL **** +36 SPPR517.SPL CD004W +37 SPPR706.SPL **** +38 SPWI125.SPL **** +39 SPWI205.SPL **** +40 SPWI811.SPL **** +41 SPWI899.SPL **** +42 SPWI956.SPL **** +43 SPWM123.SPL **** +44 WAND02.ITM CD004X diff --git a/eefixpack/files/tph/luke/7eyes/bg2/paralyze.2da b/eefixpack/files/tph/luke/7eyes/bg2/paralyze.2da new file mode 100644 index 00000000..2a5f291c --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg2/paralyze.2da @@ -0,0 +1,39 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BASILG1.ITM CD009O +1 BASILL1.ITM CD009P +2 CARRIO1.ITM CD009Q +3 DAGG17.ITM CD009R +4 DEMMAU01.ITM CD009S +5 GHAST1.ITM CD009T +6 GHOUL1.ITM CD009U +7 GHOULLOR.ITM CD009V +8 GHOULT.ITM CD009W +9 KALDW1.ITM CD009X +10 KUOBOLT3.ITM CD009Y +11 LACEDO.ITM CD009Z +12 LACEDO02.ITM CD00A0 +13 LICH02.ITM CD00A1 +14 MAGIWEB.ITM CD00A2 +15 OHBDAGG1.ITM CD00A3 +16 OHBENVLP.SPL **** +17 PARABASI.ITM CD00A4 +18 REVENT1.ITM CD00A5 +19 RODSWORD.ITM CD00A6 +20 SPDR201.SPL **** +21 SPIN566.SPL **** +22 SPIN683.SPL **** +23 SPIN776.SPL CD00A7 +24 SPIN863.SPL **** +25 SPIN914.SPL CD00A8 +26 SPIN960.SPL **** +27 SPWATT2.ITM CD00A9 +28 SPWATT3.ITM CD00AA +29 SPWATT4.ITM CD00AB +30 SPWATT5.ITM CD00AC +31 SPWI215.SPL **** +32 SPWI711.SPL CD00AD +33 VAMPIRE.ITM CD00AE +34 WAND14.ITM CD00AF +35 WOLFVA1.ITM CD00AG diff --git a/eefixpack/files/tph/luke/7eyes/bg2/petrify.2da b/eefixpack/files/tph/luke/7eyes/bg2/petrify.2da new file mode 100644 index 00000000..c9ff3b32 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg2/petrify.2da @@ -0,0 +1,21 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BASIGAZE.ITM CD00AR +1 BASILG1.ITM CD00AS +2 BASILL1.ITM CD00AT +3 CDSW2H07.ITM CD00AU +4 EYEGOR01.ITM CD00AV +5 PARABASI.ITM CD00AW +6 PLYBASS.ITM CD00AX +7 SCRL16.ITM CD00AY +8 SPDR101.SPL CD00AZ +9 SPIN865.SPL **** +10 SPIN889.SPL **** +11 SPIN950.SPL **** +12 SPIN984.SPL **** +13 SPWI053.SPL **** +14 SPWI118.SPL CD00B0 +15 SPWI604.SPL **** +16 SPWI714.SPL CD00B1 +17 WAND12.ITM CD00B3 diff --git a/eefixpack/files/tph/luke/7eyes/bg2/power_word_kill.2da b/eefixpack/files/tph/luke/7eyes/bg2/power_word_kill.2da new file mode 100644 index 00000000..4c240958 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg2/power_word_kill.2da @@ -0,0 +1,8 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 SPPR719.SPL **** +1 SPWI817.SPL **** +2 SPWI897.SPL **** +3 SPWI912.SPL **** +4 SPWI960.SPL **** diff --git a/eefixpack/files/tph/luke/7eyes/bg2/power_word_stun.2da b/eefixpack/files/tph/luke/7eyes/bg2/power_word_stun.2da new file mode 100644 index 00000000..e3b61c48 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg2/power_word_stun.2da @@ -0,0 +1,6 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 SPIN944.SPL **** +1 SPWI715.SPL **** +2 SPWI959.SPL **** diff --git a/eefixpack/files/tph/luke/7eyes/bg2/silence.2da b/eefixpack/files/tph/luke/7eyes/bg2/silence.2da new file mode 100644 index 00000000..09ec404d --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg2/silence.2da @@ -0,0 +1,13 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 MISC3L.ITM CD004Y +1 SPIN634.SPL **** +2 SPIN692.SPL **** +3 SPIN998.SPL **** +4 SPPR211.SPL **** +5 SPPR988.SPL **** +6 SPWI612.SPL **** +7 SPWISH35.SPL **** +8 SW1H36.ITM CD004Z +9 WAND19.ITM CD0050 diff --git a/eefixpack/files/tph/luke/7eyes/bg2/slay.2da b/eefixpack/files/tph/luke/7eyes/bg2/slay.2da new file mode 100644 index 00000000..fbccd573 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg2/slay.2da @@ -0,0 +1,46 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 AROW03.ITM CD007I +1 BOLT08.ITM CD007J +2 BULL04.ITM CD007K +3 HAMM09.ITM CD007L +4 LICHEL01.ITM CD007M +5 OHBCSFD.SPL **** +6 OHBDEMI2.SPL **** +7 OHBDEVA1.ITM CD007N +8 OHBDROWN.SPL **** +9 RODS04.ITM CD007O +10 SLAYLIVE.ITM CD007P +11 SPCL411.SPL CD007Q +12 SPCL411F.SPL CD007R +13 SPDR101.SPL CD007S +14 SPIN673.SPL CD007T +15 SPIN681.SPL **** +16 SPIN723.SPL CD007U +17 SPIN789.SPL **** +18 SPIN820.SPL **** +19 SPIN836.SPL **** +20 SPIN864.SPL CD007V +21 SPIN961.SPL CD007W +22 SPIN991.SPL **** +23 SPPR599.SPL CD007X +24 SPPR704.SPL CD007Y +25 SPPR708.SPL CD007Z +26 SPPR722.SPL CD0080 +27 SPWI006.SPL CD0081 +28 SPWI016.SPL CD0082 +29 SPWI054.SPL CD0083 +30 SPWI118.SPL CD0084 +31 SPWI502.SPL CD0085 +32 SPWI605.SPL CD0086 +33 SPWI713.SPL CD0087 +34 SPWI913.SPL **** +35 STAF15.ITM CD0088 +36 STAF16.ITM CD0089 +37 STAF17.ITM CD008A +38 STDEATH.ITM CD008B +39 SW1H50.ITM CD008C +40 SW1H99.ITM CD008D +41 TELSLAV.ITM CD008E +42 WAND13.ITM CD008F diff --git a/eefixpack/files/tph/luke/7eyes/bg2/slow.2da b/eefixpack/files/tph/luke/7eyes/bg2/slow.2da new file mode 100644 index 00000000..dbd6f95c --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg2/slow.2da @@ -0,0 +1,57 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 ACIDOOZ3.ITM CD0051 +1 AURSTAF.ITM CD0052 +2 BALTH07.SPL CD0053 +3 BDSHA06B.SPL **** +4 BDSW2H01.SPL CD0054 +5 BHAAL2B.SPL CD0055 +6 BLUN14.ITM CD0056 +7 BLUN20.ITM CD0057 +8 BLUN30.ITM CD0058 +9 BLUN30C.ITM CD0059 +10 BLUN30D.ITM CD005A +11 BONEDAG.ITM CD005B +12 CH3DRAIN.SPL CD005C +13 CH3FLASH.SPL CD005D +14 CH3WEAK.SPL CD005E +15 DOGWAWP.ITM CD005F +16 DWWHIP.ITM CD005G +17 DWWHIP01.ITM CD005H +18 GORWOM4.ITM CD005I +19 HGBER01.ITM CD005J +20 JELLMU1.ITM CD005K +21 JELLMU2.ITM CD005L +22 KUOSPER.ITM CD005M +23 MELIS01.SPL CD005N +24 OHBDGELU.ITM CD005O +25 OHBEWWSL.SPL **** +26 OHHPHREY.ITM CD005P +27 OHNPOTN1.ITM CD005Q +28 PLYJELLO.ITM CD005R +29 PLYJELLY.ITM CD005S +30 POTN32.ITM CD005T +31 SENDAI.ITM CD005U +32 SHARSWD.ITM CD005V +33 SPCL123.SPL CD005W +34 SPCL415.SPL CD005X +35 SPCL422.SPL CD005Y +36 SPCL751A.SPL CD005Z +37 SPERMEL.ITM CD0060 +38 SPIN575.SPL **** +39 SPIN628.SPL CD0061 +40 SPIN635.SPL **** +41 SPIN817.SPL CD0062 +42 SPIN818.SPL CD0063 +43 SPIN977.SPL **** +44 SPIN983.SPL **** +45 SPPR250.SPL CD0064 +46 SPPR610.SPL CD0065 +47 SPPR710.SPL CD0066 +48 SPPR715.SPL CD0067 +49 SPWI312.SPL **** +50 SPWISH25.SPL **** +51 SPWM112.SPL **** +52 SPWM164.SPL **** +53 TROLLTOR.ITM CD0068 diff --git a/eefixpack/files/tph/luke/7eyes/bg2/special.2da b/eefixpack/files/tph/luke/7eyes/bg2/special.2da new file mode 100644 index 00000000..3ab76129 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg2/special.2da @@ -0,0 +1,21 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BDVOID.SPL **** +1 BONEFD.ITM CD00B4 +2 CDMINDFL.ITM CD00B5 +3 GORCAMB.ITM CD00B6 +4 MAGISPWR.ITM CD00B7 +5 MINDFLAY.ITM CD00B8 +6 NPSW06.ITM CD00B9 +7 OHBDRAG1.SPL CD00BA +8 OHRCLCK3.ITM CD00BB +9 SHADOWWP.ITM CD00BC +10 SHARSWD.ITM CD00BD +11 SPIDWR1.ITM CD00BE +12 SPIN808.SPL **** +13 SPIN901.SPL **** +14 SPPR751.SPL CD00BF +15 TROLLSPI.ITM CD00BG +16 TROLLTOR.ITM CD00BH +17 WAWAK.ITM CD00BI diff --git a/eefixpack/files/tph/luke/7eyes/bg2/stun.2da b/eefixpack/files/tph/luke/7eyes/bg2/stun.2da new file mode 100644 index 00000000..3b8da23e --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg2/stun.2da @@ -0,0 +1,59 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BDSHA06A.SPL **** +1 BOLT07.ITM CD0069 +2 CARRIO.ITM CD006A +3 CDSTAF12.SPL CD006B +4 CORNUGON.ITM CD006C +5 DART03.ITM CD006D +6 DARTMEL.ITM CD006E +7 DEMCOR01.ITM CD006F +8 DEVA.ITM CD006G +9 DWBOLT02.ITM CD006H +10 ELEMHYDR.ITM CD006I +11 FAMPSDAT.ITM CD006J +12 GHOULC.ITM CD006K +13 GOLTOME4.ITM CD006L +14 GORCAMB.ITM CD006M +15 GORSNAKE.ITM CD006N +16 ICETRL.ITM CD006O +17 KUOBOLT.ITM CD006P +18 KUOBOLT2.ITM CD006Q +19 MEPSAL.ITM CD006R +20 MISC3H.ITM CD006S +21 MISTWA.ITM CD006T +22 OHBDCORN.SPL CD006U +23 OHBDEVA.ITM CD006V +24 OHHDAG01.ITM CD006W +25 PARACARR.ITM CD006X +26 PARAGHAS.ITM CD006Y +27 PARAGHOU.ITM CD006Z +28 RAVAG02.ITM CD0070 +29 SAHBOLT.ITM CD0071 +30 SAREVEFF.SPL CD0072 +31 SLNG06.ITM CD0073 +32 SPCL123.SPL CD0074 +33 SPDR101.SPL CD0075 +34 SPERMEL.ITM CD0076 +35 SPIN543.SPL **** +36 SPIN727.SPL **** +37 SPIN832.SPL **** +38 SPIN834.SPL CD0077 +39 SPIN909.SPL **** +40 SPIN926.SPL CD0078 +41 SPIN927.SPL CD0079 +42 SPIN934.SPL CD007A +43 SPIN959.SPL **** +44 SPIN974.SPL **** +45 SPPR710.SPL CD007B +46 SPPR715.SPL CD007C +47 SPPR718.SPL **** +48 SPPR984.SPL CD007D +49 SPWI118.SPL CD007E +50 SPWI816.SPL **** +51 SPWI898.SPL **** +52 SPWM152.SPL **** +53 STAF13.ITM CD007F +54 SW1H51.ITM CD007G +55 WAND04.ITM CD007H diff --git a/eefixpack/files/tph/luke/7eyes/bg2/web.2da b/eefixpack/files/tph/luke/7eyes/bg2/web.2da new file mode 100644 index 00000000..3c5ad496 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/bg2/web.2da @@ -0,0 +1,7 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 SPDR201.SPL **** +1 SPIN566.SPL **** +2 SPIN683.SPL **** +3 SPWI215.SPL **** diff --git a/eefixpack/files/tph/luke/7eyes/blindness.tph b/eefixpack/files/tph/luke/7eyes/blindness.tph deleted file mode 100644 index 91cc445e..00000000 --- a/eefixpack/files/tph/luke/7eyes/blindness.tph +++ /dev/null @@ -1,178 +0,0 @@ -DEFINE_ACTION_FUNCTION "BLINDNESS" -BEGIN - /* - **************************************************************************************** - ***************************************** ITM files ************************************ - **************************************************************************************** - */ - - WITH_SCOPE BEGIN - ACTION_MATCH 1 WITH - (GAME_IS ~bgee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - END - END - (GAME_IS ~bg2ee eet~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - END - END - (GAME_IS ~iwdee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - "udart3b" , "-1" , "0,1,2,3,4" => "udart3b" // Blinding Dart +2 - "wand19" , "-1" , "3,9,0,4" => "wand19b" // Wand of Cursing - "zze6pe" , "-1" , "1,2,3,4,5,6" => "zze6pe" // Pig's Eye +2 - END - END - DEFAULT - FAIL "Game not supported" - END - /* Main */ - ACTION_PHP_EACH "patch_data" AS "x" => "y" BEGIN - COPY_EXISTING "%x_0%.itm" "override" - // Transfer effects onto a new SPL file (if needed) - PATCH_IF ("%y%" STRING_COMPARE_CASE "") BEGIN - LAUNCH_PATCH_FUNCTION "gt_extract_effects_as_subspell" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "subspell_resref" = "%y%" - "extract" = "%x_2%" - END - END ELSE BEGIN - LAUNCH_PATCH_FUNCTION "gt_permute_effects" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "permutation" = "%x_2%" - END - END - BUT_ONLY_IF_IT_CHANGES - END - END - - /* - **************************************************************************************** - ***************************************** SPL files ************************************ - **************************************************************************************** - */ - - WITH_SCOPE BEGIN - ACTION_MATCH 1 WITH - (GAME_IS ~bgee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - "bdbrac01" , "-1" , "1=>0" => "" // Bracers of the Shuttered Lid - "bdshld02" , "-1" , "3,1,2,4,5,6,7,8" => "bdshld02" // Shield of Barnassus: The Suncatcher - "bdvenoms" , "-1" , "3,4,6,10" => "bdvenom0" // Venom Spit ("bdnereid.bcs") - "bdvenoms" , "-1" , "3=>0" => "" // Venom Spit ("bdnereid.bcs") - "%SUN_SOUL_SUN_SOULBEAM%a" , "-1" , "3,4,5" => "%SUN_SOUL_SUN_SOULBEAM%b" - "spdr101" , 0 , "2=>0,0=>2" => "" // Chromatic Orb (Avenger) - "spdr101" , 3 , "0=>3" => "" // Chromatic Orb (Avenger) - "%SHADOW_DRAIN%" , "-1" , "1=>-1,0=>-1,2=>-1" => "" - "%SHADOW_DRAGON_BREATH%" , "-1" , "1=>-1,0=>-1,2=>-1" => "" - "%MEPHIT_MIST%" , "-1" , "3=>0,5=>0" => "" - "%MEPHIT_SOOTY_BALL%" , "-1" , "4,0,2,3,5,6" => "%MEPHIT_SOOTY_BALL%A" - //"%CLERIC_SUNRAY%" "override" // fixed elsewhere - "%WIZARD_BLINDNESS%" , "-1" , "1=>0" => "" - "%WIZARD_CHROMATIC_ORB%" , 0 , "2=>0,0=>2" => "" - "%WIZARD_CHROMATIC_ORB%" , 3 , "0=>3" => "" - "%WIZARD_GLITTERDUST%" , "-1" , "3,0,4" => "%WIZARD_GLITTERDUST%A" - "%WIZARD_DARKNESS_15_FOOT%" , "-1" , "3=>2" => "" - "%WIZARD_PRISMATIC_SPRAY%" , "-1" , "7,0,8" => "%WIZARD_PRISMATIC_SPRAY%C" - "%WIZARD_POWER_WORD_BLIND%" , "-1" , "1=>0" => "" - "%POWERWORD_BLIND%" , "-1" , "1=>0" => "" - "spwm178" , "-1" , "1=>0" => "" // Blindness (wild surge) - END - END - (GAME_IS ~bg2ee eet~) BEGIN END - (GAME_IS ~iwdee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - "#sunrund" , "-1" , "3=>1" => "" - "%CLERIC_SUNSCORCH%" , "-1" , "1=>-1,2=>-1,3=>-1" => "" - "%CLERIC_SOL_SEARING_ORB%B" , "-1" , "0,1,2" => "%CLERIC_SOL_SEARING_ORB%D" - "%CLERIC_SOL_SEARING_ORB%C" , "-1" , "0,1,2" => "%CLERIC_SOL_SEARING_ORB%E" - //"%CLERIC_SUNRAY%" , "-1" , "0,2,3,4,5" => "%CLERIC_SUNRAY%A" -- fixed elsewhere - "%WIZARD_GLITTERDUST%" , "-1" , "2,1,3" => "%WIZARD_GLITTERDUST%A" - END - END - DEFAULT - FAIL "Game not supported" - END - /* Main */ - ACTION_PHP_EACH "patch_data" AS "x" => "y" BEGIN - COPY_EXISTING "%x_0%.spl" "override" - // Transfer effects onto a new SPL file (if needed) - PATCH_IF ("%y%" STRING_COMPARE_CASE "") BEGIN - LAUNCH_PATCH_FUNCTION "gt_extract_effects_as_subspell" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "subspell_resref" = "%y%" - "extract" = "%x_2%" - END - END ELSE BEGIN - LAUNCH_PATCH_FUNCTION "gt_permute_effects" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "permutation" = "%x_2%" - END - END - BUT_ONLY_IF_IT_CHANGES - END - END -END - -///////////////////////////////////////////////////////////////// -/* - -Collect SPL/ITM files to check - -*/ -////////////////////////////////////////////////////////////////// - -/* -WITH_SCOPE BEGIN - OUTER_SET "count_spl" = 0 - OUTER_SET "count_itm" = 0 - COPY_EXISTING_REGEXP - "^.+\.\(spl\|itm\)$" "override" - PATCH_MATCH "%DEST_EXT%" WITH - "itm" BEGIN - GET_OFFSET_ARRAY "ab_array" ITM_V10_HEADERS - TEXT_SPRINT "filename" "rearrange_itm" - END - "spl" BEGIN - GET_OFFSET_ARRAY "ab_array" SPL_V10_HEADERS - TEXT_SPRINT "filename" "rearrange_spl" - END - DEFAULT - PATCH_FAIL "~%DEST_FILE%~" - END - PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN - PATCH_IF SHORT_AT ("%ab_off%" + 0x1E) > 1 BEGIN - GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" SPL_V10_HEAD_EFFECTS - PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN - PATCH_MATCH SHORT_AT "%fx_off%" WITH - 74 BEGIN - INNER_ACTION BEGIN - ACTION_IF ("%DEST_EXT%" STRING_EQUAL_CASE "itm") BEGIN - OUTER_SET "count_itm" += 1 - APPEND_OUTER "%MOD_FOLDER%/%filename%.txt" "%count_itm%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" UNLESS "%count_itm%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" - END ELSE BEGIN - OUTER_SET "count_spl" += 1 - APPEND_OUTER "%MOD_FOLDER%/%filename%.txt" "%count_spl%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" UNLESS "%count_spl%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" - END - END - END - DEFAULT - END - END - END - END - BUT_ONLY_IF_IT_CHANGES -END -*/ \ No newline at end of file diff --git a/eefixpack/files/tph/luke/7eyes/charm_creature.tph b/eefixpack/files/tph/luke/7eyes/charm_creature.tph deleted file mode 100644 index 68fc623c..00000000 --- a/eefixpack/files/tph/luke/7eyes/charm_creature.tph +++ /dev/null @@ -1,177 +0,0 @@ -DEFINE_ACTION_FUNCTION "CHARM_CREATURE" -BEGIN - /* - **************************************************************************************** - ***************************************** ITM files ************************************ - **************************************************************************************** - */ - - WITH_SCOPE BEGIN - ACTION_MATCH 1 WITH - (GAME_IS ~bgee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - "clck07" , "-1" , "2,3" => "clck07" // Nymph Cloak - "clck08" , "-1" , "2,3" => "clck08" // Algernon's Cloak - "gorwom1" , "-1" , "14,15,18" => "gorwom1" // - "hgnymph" , "-1" , "4,3,5,6" => "hgnymph" // - "misc2p" , "-1" , "2,3,4,5,6,8" => "misc2p" // The Captive Audience - "ring03" , "-1" , "3,4,5,6" => "ring03" // Druid's Ring - //"sw1p01" "override" // Viper's Edge +2 - END - END - (GAME_IS ~bg2ee eet~) BEGIN END - (GAME_IS ~iwdee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - "ring03" , "-1" , "3,4,5,6,7" => "ring03" // Ring of Animal Friendship - END - END - DEFAULT - FAIL "Game not supported" - END - /* Main */ - ACTION_PHP_EACH "patch_data" AS "x" => "y" BEGIN - COPY_EXISTING "%x_0%.itm" "override" - // Transfer effects onto a new SPL file (if needed) - PATCH_IF ("%y%" STRING_COMPARE_CASE "") BEGIN - LAUNCH_PATCH_FUNCTION "gt_extract_effects_as_subspell" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "subspell_resref" = "%y%" - "extract" = "%x_2%" - END - END ELSE BEGIN - LAUNCH_PATCH_FUNCTION "gt_permute_effects" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "permutation" = "%x_2%" - END - END - BUT_ONLY_IF_IT_CHANGES - END - END - - /* - **************************************************************************************** - ***************************************** SPL files ************************************ - **************************************************************************************** - */ - - WITH_SCOPE BEGIN - ACTION_MATCH 1 WITH - (GAME_IS ~bgee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - //"bdhamadc" "override" // Charm Person - //"bdnerau2" "override" // Charm Person - //"%RANGER_CHARM_ANIMAL%" "override" - //"spcl641" "override" // Charm Person or Mammal - //"spin108" "override" // Charm Animal - //"%SAFANA_CHARM%" "override" - //"%ERINYES_CHARM%" "override" - //"%PERM_CHARM%" "override" - //"%VAMPIRE_DOMINATION%" "override" - //"%PSIONIC_DOMINATION%" "override" - //"%MIND_FLAYER_DOMINATION%" "override" - //"%BEHOLDER_CHARM_PERSON%" "override" - //"%BEHOLDER_DOMINATION%" "override" - "%CLERIC_CHARM_PERSON%" , "-1" , "3=>7,3=>7" => "" - //"%CLERIC_MENTAL_DOMINATION%" "override" - //"%TRAP_DIRE_CHARM%" "override" - //"%WIZARD_CHARM_PERSON%" "override" - //"%WIZARD_DIRE_CHARM%" "override" - //"%WIZARD_DOMINATION%" "override" - //"%SUCCUBUS_CHARM_FEMALE%" "override" - //"%SUCCUBUS_CHARM_MALE%" "override" - //"%CHARM_HERO%" "override" - //"%SIRINE_DIRE_CHARM%" "override" - //"%CHARM_KORAX%" "override" - "spwm179" , "-1" , "5=>2" => "" // Polymorph Other - END - END - (GAME_IS ~bg2ee eet~) BEGIN END - (GAME_IS ~iwdee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - END - END - DEFAULT - FAIL "Game not supported" - END - /* Main */ - ACTION_PHP_EACH "patch_data" AS "x" => "y" BEGIN - COPY_EXISTING "%x_0%.spl" "override" - // Transfer effects onto a new SPL file (if needed) - PATCH_IF ("%y%" STRING_COMPARE_CASE "") BEGIN - LAUNCH_PATCH_FUNCTION "gt_extract_effects_as_subspell" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "subspell_resref" = "%y%" - "extract" = "%x_2%" - END - END ELSE BEGIN - LAUNCH_PATCH_FUNCTION "gt_permute_effects" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "permutation" = "%x_2%" - END - END - BUT_ONLY_IF_IT_CHANGES - END - END -END - -///////////////////////////////////////////////////////////////// -/* - -Collect SPL/ITM files to check - -*/ -////////////////////////////////////////////////////////////////// - -/* -WITH_SCOPE BEGIN - OUTER_SET "count_spl" = 0 - OUTER_SET "count_itm" = 0 - COPY_EXISTING_REGEXP - "^.+\.\(spl\|itm\)$" "override" - PATCH_MATCH "%DEST_EXT%" WITH - "itm" BEGIN - GET_OFFSET_ARRAY "ab_array" ITM_V10_HEADERS - TEXT_SPRINT "filename" "rearrange_itm" - END - "spl" BEGIN - GET_OFFSET_ARRAY "ab_array" SPL_V10_HEADERS - TEXT_SPRINT "filename" "rearrange_spl" - END - DEFAULT - PATCH_FAIL "~%DEST_FILE%~" - END - PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN - PATCH_IF SHORT_AT ("%ab_off%" + 0x1E) > 1 BEGIN - GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" SPL_V10_HEAD_EFFECTS - PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN - PATCH_MATCH SHORT_AT "%fx_off%" WITH - 5 BEGIN - INNER_ACTION BEGIN - ACTION_IF ("%DEST_EXT%" STRING_EQUAL_CASE "itm") BEGIN - OUTER_SET "count_itm" += 1 - APPEND_OUTER "%MOD_FOLDER%/%filename%.txt" "%count_itm%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" UNLESS "%count_itm%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" - END ELSE BEGIN - OUTER_SET "count_spl" += 1 - APPEND_OUTER "%MOD_FOLDER%/%filename%.txt" "%count_spl%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" UNLESS "%count_spl%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" - END - END - END - DEFAULT - END - END - END - END - BUT_ONLY_IF_IT_CHANGES -END -*/ \ No newline at end of file diff --git a/eefixpack/files/tph/luke/7eyes/confusion.tph b/eefixpack/files/tph/luke/7eyes/confusion.tph deleted file mode 100644 index 05abd35b..00000000 --- a/eefixpack/files/tph/luke/7eyes/confusion.tph +++ /dev/null @@ -1,172 +0,0 @@ -DEFINE_ACTION_FUNCTION "CONFUSION" -BEGIN - /* - **************************************************************************************** - ***************************************** ITM files ************************************ - **************************************************************************************** - */ - - WITH_SCOPE BEGIN - ACTION_MATCH 1 WITH - (GAME_IS ~bgee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - "magiconf" , "-1" , "1,2" => "magiconf" // Ghoul hand - "sirine1" , "-1" , "1,2" => "sirine1a" // Ghoul hand - END - END - (GAME_IS ~bg2ee eet~) BEGIN END - (GAME_IS ~iwdee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - "uarow3a" , "-1" , "0,1,2,3,4" => "uarow3a" // Confusion Arrow +3 - "ulswd3b" , "-1" , "0,1,2,3,4" => "ulswd3b" // Long Sword of Confusion +2 - "umstr2a" , "-1" , "0,1,2,3,4" => "umstr2a" // Morning Star of Confusion +1 - END - END - DEFAULT - FAIL "Game not supported" - END - /* Main */ - ACTION_PHP_EACH "patch_data" AS "x" => "y" BEGIN - COPY_EXISTING "%x_0%.itm" "override" - // Transfer effects onto a new SPL file (if needed) - PATCH_IF ("%y%" STRING_COMPARE_CASE "") BEGIN - LAUNCH_PATCH_FUNCTION "gt_extract_effects_as_subspell" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "subspell_resref" = "%y%" - "extract" = "%x_2%" - END - END ELSE BEGIN - LAUNCH_PATCH_FUNCTION "gt_permute_effects" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "permutation" = "%x_2%" - END - END - BUT_ONLY_IF_IT_CHANGES - END - END - - /* - **************************************************************************************** - ***************************************** SPL files ************************************ - **************************************************************************************** - */ - - WITH_SCOPE BEGIN - ACTION_MATCH 1 WITH - (GAME_IS ~bgee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - //"bdax1h05" "override" // used by Grubdoubler's Axe +1 - //"bdmycsp1" "override" // Hallucinator Spores - //"bdsha01a" "override" // used by Fox Spirit - "bdshriek" , "-1" , "4,5,6,7" => "bdshrie1" // Piercing Shriek - //"bdstink" "override" // Confusion - "spcl751a" , 1 , "8=>6,4=>7" => "" // Jester's song - //"spdr501" "override" // Chaos - //"%PSIONIC_ID_INSINUATION%" "override" - //"%CONFUSION_NO_SAVE%" "override" - //"%MIST_CHAOS%" "override" - //"%NYMPH_CONFUSION%" "override" - //"%HULK_CONFUSION%" "override" - //"%GOLEM_CONFUSION%" "override" - //"%CLERIC_RIGID_THINKING%" "override" - //"%CLERIC_CONFUSION%" "override" - //"%TRAP_CONFUSION%" "override" - //"%WIZARD_CONFUSION%" "override" - //"%WIZARD_CHAOS%" "override" - //"%WIZARD_SPHERE_OF_CHAOS%" , "-1" , "" => "%WIZARD_SPHERE_OF_CHAOS%B" - END - END - (GAME_IS ~bg2ee eet~) BEGIN END - (GAME_IS ~iwdee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - //"insanity" , "-1" , "9=>0,8=>0" => "insanity" // Insanity Gaze - "insanity" , "-1" , "0,1,2,3,4" => "insanitc" // Insanity Gaze - "spcl751a" , 1 , "2,4,5" => "spcl751b" // Jester's song - "spcl751a" , 2 , "6,7" => "spcl751b" // Jester's song -- this is just to accomodate Cure Confusion SPL/ITM files... - END - END - DEFAULT - FAIL "Game not supported" - END - /* Main */ - ACTION_PHP_EACH "patch_data" AS "x" => "y" BEGIN - COPY_EXISTING "%x_0%.spl" "override" - // Transfer effects onto a new SPL file (if needed) - PATCH_IF ("%y%" STRING_COMPARE_CASE "") BEGIN - LAUNCH_PATCH_FUNCTION "gt_extract_effects_as_subspell" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "subspell_resref" = "%y%" - "extract" = "%x_2%" - END - END ELSE BEGIN - LAUNCH_PATCH_FUNCTION "gt_permute_effects" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "permutation" = "%x_2%" - END - END - BUT_ONLY_IF_IT_CHANGES - END - END -END - -///////////////////////////////////////////////////////////////// -/* - -Collect SPL/ITM files to check - -*/ -////////////////////////////////////////////////////////////////// - -/* -WITH_SCOPE BEGIN - OUTER_SET "count_spl" = 0 - OUTER_SET "count_itm" = 0 - COPY_EXISTING_REGEXP - "^.+\.\(spl\|itm\)$" "override" - PATCH_MATCH "%DEST_EXT%" WITH - "itm" BEGIN - GET_OFFSET_ARRAY "ab_array" ITM_V10_HEADERS - TEXT_SPRINT "filename" "rearrange_itm" - END - "spl" BEGIN - GET_OFFSET_ARRAY "ab_array" SPL_V10_HEADERS - TEXT_SPRINT "filename" "rearrange_spl" - END - DEFAULT - PATCH_FAIL "~%DEST_FILE%~" - END - PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN - PATCH_IF SHORT_AT ("%ab_off%" + 0x1E) > 1 BEGIN - GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" SPL_V10_HEAD_EFFECTS - PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN - PATCH_MATCH SHORT_AT "%fx_off%" WITH - 128 BEGIN - INNER_ACTION BEGIN - ACTION_IF ("%DEST_EXT%" STRING_EQUAL_CASE "itm") BEGIN - OUTER_SET "count_itm" += 1 - APPEND_OUTER "%MOD_FOLDER%/%filename%.txt" "%count_itm%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" UNLESS "%count_itm%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" - END ELSE BEGIN - OUTER_SET "count_spl" += 1 - APPEND_OUTER "%MOD_FOLDER%/%filename%.txt" "%count_spl%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" UNLESS "%count_spl%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" - END - END - END - DEFAULT - END - END - END - END - BUT_ONLY_IF_IT_CHANGES -END -*/ \ No newline at end of file diff --git a/eefixpack/files/tph/luke/7eyes/damage.tph b/eefixpack/files/tph/luke/7eyes/damage.tph deleted file mode 100644 index f00efbf9..00000000 --- a/eefixpack/files/tph/luke/7eyes/damage.tph +++ /dev/null @@ -1,225 +0,0 @@ -DEFINE_ACTION_FUNCTION "DAMAGE" -BEGIN - /* - **************************************************************************************** - ***************************************** ITM files ************************************ - **************************************************************************************** - */ - - WITH_SCOPE BEGIN - ACTION_MATCH 1 WITH - (GAME_IS ~bgee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - END - END - (GAME_IS ~bg2ee eet~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - END - END - (GAME_IS ~iwdee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - END - END - DEFAULT - FAIL "Game not supported" - END - /* Main */ - ACTION_PHP_EACH "patch_data" AS "x" => "y" BEGIN - COPY_EXISTING "%x_0%.itm" "override" - // Transfer effects onto a new SPL file (if needed) - PATCH_IF ("%y%" STRING_COMPARE_CASE "") BEGIN - LAUNCH_PATCH_FUNCTION "gt_extract_effects_as_subspell" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "subspell_resref" = "%y%" - "extract" = "%x_2%" - END - END ELSE BEGIN - LAUNCH_PATCH_FUNCTION "gt_permute_effects" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "permutation" = "%x_2%" - END - END - BUT_ONLY_IF_IT_CHANGES - END - END - - /* - **************************************************************************************** - ***************************************** SPL files ************************************ - **************************************************************************************** - */ - - WITH_SCOPE BEGIN - ACTION_MATCH 1 WITH - (GAME_IS ~bgee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - END - END - (GAME_IS ~bg2ee eet~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - END - END - (GAME_IS ~iwdee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - "#beltyn" , "-1" , "0,1" => "%WIZARD_BELTYNS_BURNING_BLOOD%A" - "#deathf1" , "-1" , "0" => "%TRAP_DEATH_FOG%A" - "#deathf2" , "-1" , "0" => "%TRAP_DEATH_FOG%B" - "#deathf3" , "-1" , "0" => "%TRAP_DEATH_FOG%C" - "#sunrund" , "-1" , "0" => "cdsunrun" - "bdsumst1" , "-1" , "0,2" => "bdsumst4" // Flame Arrow - "ltouch" , "-1" , "0" => "%WIZARD_LICH_TOUCH%A" - "%SUN_SOUL_SUN_SOULRAY%" , "-1" , "1=>0" => "" - "%SUN_SOUL_SUN_SOULBEAM%A" , "-1" , "1,2" => "%SUN_SOUL_SUN_SOULBEAM%B" - "spcl411" , 1 , "1" => "spcl411a" - "spcl411" , 2 , "1" => "spcl411b" - "spcl411" , 3 , "1" => "spcl411b" - "spcl411f" , 1 , "0" => "spcl411c" // unused...? - "spcl411f" , 2 , "0" => "spcl411c" // unused...? - "spcl411f" , 3 , "0" => "spcl411c" // unused...? - "spcl415" , 0 , "0=>-1" => "" - "spcl911b" , 0 , "0=>-1" => "" - "spdr101" , 1 , "0=>-1" => "" // Chromatic Orb (Avenger) - "spdr101" , 2 , "1=>-1" => "" // Chromatic Orb (Avenger) - "%INNATE_DRAGON_WING_BUFFET%" , "-1" , "5,6" => "%INNATE_DRAGON_WING_BUFFET%A" - "%INNATE_BOMBARDIER_BEETLE_CLOUD%" , "-1" , "0" => "%INNATE_BOMBARDIER_BEETLE_CLOUD%A" - "%AIR_ELEMENTAL_EFFECT%" , "-1" , "1=>-1" => "" - "spogre01" , "-1" , "6=>-1" => "" // Earthquake - "%CLERIC_ALICORN_LANCE%" , "-1" , "1=>-1" => "" - "%CLERIC_WRITHING_FOG%" , "-1" , "1=>8" => "" - "%CLERIC_CLOUDBURST%" , "-1" , "12,13" => "%CLERIC_CLOUDBURST%A" - "%CLERIC_PRODUCE_FIRE%" , "-1" , "1" => "%CLERIC_PRODUCE_FIRE%A" - "%CLERIC_SMASHING_WAVE%" , "-1" , "4" => "%CLERIC_SMASHING_WAVE%A" - "%CLERIC_INSECT_PLAGUE%" , "-1" , "3" => "%CLERIC_INSECT_PLAGUE%A" - "%CLERIC_SPIKE_STONES%" , "-1" , "1=>-1" => "" - "%CLERIC_FALSE_DAWN%" , "-1" , "2" => "%CLERIC_FALSE_DAWN%A" - "%CLERIC_WHIRLWIND%" , "-1" , "5,6" => "%CLERIC_WHIRLWIND%A" - "%CLERIC_EARTHQUAKE%" , "-1" , "6=>-1" => "" - "%CLERIC_STORM_OF_VENGEANCE%" , "-1" , "0,1,2,3,4,5,6,7,8" => "%CLERIC_STORM_OF_VENGEANCE%A" - "%CLERIC_IMPLOSION%" , "-1" , "2" => "%CLERIC_IMPLOSION%A" - "%TRAP_ARROW_SLAYING%" , "-1" , "0" => "%TRAP_ARROW_SLAYING%A" - "%TRAP_ARROW_ACID%" , "-1" , "0" => "%TRAP_ARROW_ACID%A" - "%TRAP_ARROW_BITING%" , "-1" , "0" => "%TRAP_ARROW_BITING%A" - "%TRAP_ARROW_DETONATION%" , "-1" , "0" => "%TRAP_ARROW_DETONATION%A" - "%TRAP_ARROW_DISPELLING%" , "-1" , "0=>-1" => "" - "%TRAP_ARROW_FIRE%" , "-1" , "0" => "%TRAP_ARROW_FIRE%A" - "%TRAP_ARROW_ICE%" , "-1" , "0" => "%TRAP_ARROW_ICE%A" - "%TRAP_DISEASE_DARTS%" , "-1" , "0" => "%TRAP_DISEASE_DARTS%A" - "%TRAP_POISON_DAMAGE_DARTS%" , "-1" , "0" => "%TRAP_POISON_DAMAGE_DARTS%A" - "%TRAP_POISON_PARALYZATION_DARTS%" , "-1" , "0" => "%TRAP_POISON_PARALYZATION_DARTS%A" - "%TRAP_POISON_CONFUSION_DARTS%" , "-1" , "0" => "%TRAP_POISON_CONFUSION_DARTS%A" - //"%WIZARD_CHILL_TOUCH%B" -- fixed elsewhere - "%WIZARD_CHROMATIC_ORB%" , 1 , "0=>-1" => "" - "%WIZARD_CHROMATIC_ORB%" , 2 , "1=>-1" => "" - "%WIZARD_FLAME_ARROW%" , 0 , "0" => "%WIZARD_FLAME_ARROW%A" - "%WIZARD_FLAME_ARROW%" , 1 , "0,2" => "%WIZARD_FLAME_ARROW%B" - "%WIZARD_FLAME_ARROW%" , 2 , "0,2,4" => "%WIZARD_FLAME_ARROW%C" - "%WIZARD_FLAME_ARROW%" , 3 , "0,2,4,6" => "%WIZARD_FLAME_ARROW%D" - "%WIZARD_FLAME_ARROW%" , 4 , "0,2,4,6,8" => "%WIZARD_FLAME_ARROW%E" - "%WIZARD_FLAME_ARROW%" , 5 , "0,2,4,6,8,10" => "%WIZARD_FLAME_ARROW%F" - //WIZARD_SHROUD_OF_FLAME -- should the Eye of Mage absorb the possibility to spread the shroud...? Guess so... - //"%WIZARD_DEATH_FOG%" , "-1" , "5=>-1" => "" -- should it be recoded Ă  la "%TRAP_DEATH_FOG%" (no need for splstates)...? - "%WIZARD_PRISMATIC_SPRAY%" , "-1" , "4,5" => "%WIZARD_PRISMATIC_SPRAY%A" - //WIZARD_BIGBYS_CLENCHED_FIST - //WIZARD_BIGBYS_CRUSHING_HAND - "%WIZARD_DRAGONS_BREATH%" , "-1" , "1=>-1" => "" - "%WIZARD_COMET%" , "-1" , "1=>-1" => "" - "spwish27" , "-1" , "2=>-1" => "" // Knockback - "spyanc01" , "-1" , "2=>-1" => "" // Whirlwind - END - END - DEFAULT - FAIL "Game not supported" - END - /* Main */ - ACTION_PHP_EACH "patch_data" AS "x" => "y" BEGIN - COPY_EXISTING "%x_0%.spl" "override" - // Transfer effects onto a new SPL file (if needed) - PATCH_IF ("%y%" STRING_COMPARE_CASE "") BEGIN - LAUNCH_PATCH_FUNCTION "gt_extract_effects_as_subspell" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "subspell_resref" = "%y%" - "extract" = "%x_2%" - END - END ELSE BEGIN - LAUNCH_PATCH_FUNCTION "gt_permute_effects" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "permutation" = "%x_2%" - END - END - BUT_ONLY_IF_IT_CHANGES - END - END -END - -///////////////////////////////////////////////////////////////// -/* - -Collect SPL/ITM files to check - -*/ -////////////////////////////////////////////////////////////////// - -/* -WITH_SCOPE BEGIN - OUTER_SET "count_spl" = 0 - OUTER_SET "count_itm" = 0 - COPY_EXISTING_REGEXP - "^.+\.\(spl\|itm\)$" "override" - PATCH_MATCH "%DEST_EXT%" WITH - "itm" BEGIN - GET_OFFSET_ARRAY "ab_array" ITM_V10_HEADERS - TEXT_SPRINT "filename" "rearrange_itm" - END - "spl" BEGIN - GET_OFFSET_ARRAY "ab_array" SPL_V10_HEADERS - TEXT_SPRINT "filename" "rearrange_spl" - END - DEFAULT - PATCH_FAIL "~%DEST_FILE%~" - END - PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN - PATCH_IF SHORT_AT ("%ab_off%" + 0x1E) > 1 BEGIN - GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" SPL_V10_HEAD_EFFECTS - SET "done_first" = 0 - PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN - PATCH_MATCH SHORT_AT "%fx_off%" WITH - 12 WHEN !("%done_first%") BEGIN - PATCH_MATCH SHORT_AT ("%fx_off%" + 0xA) WITH - (IDS_OF_SYMBOL ("DMGTYPE" "STUNNING") >> 16) BEGIN END - (IDS_OF_SYMBOL ("DMGTYPE" "MAGIC") >> 16) BEGIN END - DEFAULT - SET "done_first" = 1 - PATCH_IF ("%fx_ind%" != SHORT_AT ("%ab_off%" + 0x1E) - 1) BEGIN - INNER_ACTION BEGIN - ACTION_IF ("%DEST_EXT%" STRING_EQUAL_CASE "itm") BEGIN - OUTER_SET "count_itm" += 1 - APPEND_OUTER "%MOD_FOLDER%/%filename%.txt" "%count_itm%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" UNLESS "%count_itm%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" - END ELSE BEGIN - OUTER_SET "count_spl" += 1 - APPEND_OUTER "%MOD_FOLDER%/%filename%.txt" "%count_spl%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" UNLESS "%count_spl%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" - END - END - END - END - END - DEFAULT - END - END - END - END - BUT_ONLY_IF_IT_CHANGES -END -*/ \ No newline at end of file diff --git a/eefixpack/files/tph/luke/7eyes/deafness.tph b/eefixpack/files/tph/luke/7eyes/deafness.tph deleted file mode 100644 index 54ffa3b4..00000000 --- a/eefixpack/files/tph/luke/7eyes/deafness.tph +++ /dev/null @@ -1,148 +0,0 @@ -DEFINE_ACTION_FUNCTION "DEAFNESS" -BEGIN - /* - **************************************************************************************** - ***************************************** ITM files ************************************ - **************************************************************************************** - */ - - WITH_SCOPE BEGIN - ACTION_MATCH 1 WITH - (GAME_IS ~bgee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - END - END - (GAME_IS ~bg2ee eet~) BEGIN END - (GAME_IS ~iwdee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - "wand19" , "-1" , "1,0,7" => "wand19c" // Wand of Cursing - END - END - DEFAULT - FAIL "Game not supported" - END - /* Main */ - ACTION_PHP_EACH "patch_data" AS "x" => "y" BEGIN - COPY_EXISTING "%x_0%.itm" "override" - // Transfer effects onto a new SPL file (if needed) - PATCH_IF ("%y%" STRING_COMPARE_CASE "") BEGIN - LAUNCH_PATCH_FUNCTION "gt_extract_effects_as_subspell" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "subspell_resref" = "%y%" - "extract" = "%x_2%" - END - END ELSE BEGIN - LAUNCH_PATCH_FUNCTION "gt_permute_effects" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "permutation" = "%x_2%" - END - END - BUT_ONLY_IF_IT_CHANGES - END - END - - /* - **************************************************************************************** - ***************************************** SPL files ************************************ - **************************************************************************************** - */ - - WITH_SCOPE BEGIN - ACTION_MATCH 1 WITH - (GAME_IS ~bgee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - END - END - (GAME_IS ~bg2ee eet~) BEGIN END - (GAME_IS ~iwdee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - "%WIZARD_DEAFNESS%" , "-1" , "1=>0" => "" - "%WIZARD_SHOUT%" , "-1" , "2=>3" => "" -// "%WIZARD_GREAT_SHOUT%" , "-1" , "9=>8" => "" // disabled by cam - david's immunity review already breaks this into subspells - END - END - DEFAULT - FAIL "Game not supported" - END - /* Main */ - ACTION_PHP_EACH "patch_data" AS "x" => "y" BEGIN - COPY_EXISTING "%x_0%.spl" "override" - // Transfer effects onto a new SPL file (if needed) - PATCH_IF ("%y%" STRING_COMPARE_CASE "") BEGIN - LAUNCH_PATCH_FUNCTION "gt_extract_effects_as_subspell" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "subspell_resref" = "%y%" - "extract" = "%x_2%" - END - END ELSE BEGIN - LAUNCH_PATCH_FUNCTION "gt_permute_effects" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "permutation" = "%x_2%" - END - END - BUT_ONLY_IF_IT_CHANGES - END - END -END - -///////////////////////////////////////////////////////////////// -/* - -Collect SPL/ITM files to check - -*/ -////////////////////////////////////////////////////////////////// - -/* -WITH_SCOPE BEGIN - OUTER_SET "count_spl" = 0 - OUTER_SET "count_itm" = 0 - COPY_EXISTING_REGEXP - "^.+\.\(spl\|itm\)$" "override" - PATCH_MATCH "%DEST_EXT%" WITH - "itm" BEGIN - GET_OFFSET_ARRAY "ab_array" ITM_V10_HEADERS - TEXT_SPRINT "filename" "rearrange_itm" - END - "spl" BEGIN - GET_OFFSET_ARRAY "ab_array" SPL_V10_HEADERS - TEXT_SPRINT "filename" "rearrange_spl" - END - DEFAULT - PATCH_FAIL "~%DEST_FILE%~" - END - PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN - PATCH_IF SHORT_AT ("%ab_off%" + 0x1E) > 1 BEGIN - GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" SPL_V10_HEAD_EFFECTS - PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN - PATCH_MATCH SHORT_AT "%fx_off%" WITH - 80 BEGIN - INNER_ACTION BEGIN - ACTION_IF ("%DEST_EXT%" STRING_EQUAL_CASE "itm") BEGIN - OUTER_SET "count_itm" += 1 - APPEND_OUTER "%MOD_FOLDER%/%filename%.txt" "%count_itm%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" UNLESS "%count_itm%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" - END ELSE BEGIN - OUTER_SET "count_spl" += 1 - APPEND_OUTER "%MOD_FOLDER%/%filename%.txt" "%count_spl%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" UNLESS "%count_spl%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" - END - END - END - DEFAULT - END - END - END - END - BUT_ONLY_IF_IT_CHANGES -END -*/ \ No newline at end of file diff --git a/eefixpack/files/tph/luke/7eyes/feeblemindedness.tph b/eefixpack/files/tph/luke/7eyes/feeblemindedness.tph deleted file mode 100644 index 7fc14cba..00000000 --- a/eefixpack/files/tph/luke/7eyes/feeblemindedness.tph +++ /dev/null @@ -1,156 +0,0 @@ -DEFINE_ACTION_FUNCTION "FEEBLEMINDEDNESS" -BEGIN - /* - **************************************************************************************** - ***************************************** ITM files ************************************ - **************************************************************************************** - */ - - WITH_SCOPE BEGIN - ACTION_MATCH 1 WITH - (GAME_IS ~bgee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - "potn23" , "-1" , "0,2,3,4,5,6,7,8,9" => "potn23" // Oil of Speed (cursed) - "scrl18" , "-1" , "1,0,10" => "scrl18" // Cursed Scroll of Stupidity - "sirine1" , "-1" , "0,2" => "sirine1b" // Ghoul hand - "sirine" , "-1" , "1,0,2,3,4" => "sirine" // Ghoul hand - END - END - (GAME_IS ~bg2ee eet~) BEGIN END - (GAME_IS ~iwdee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - "potn23" , "-1" , "0,2,3,4,5,6,7,8,9" => "potn23" // Oil of Speed (cursed) - END - END - DEFAULT - FAIL "Game not supported" - END - /* Main */ - ACTION_PHP_EACH "patch_data" AS "x" => "y" BEGIN - COPY_EXISTING "%x_0%.itm" "override" - // Transfer effects onto a new SPL file (if needed) - PATCH_IF ("%y%" STRING_COMPARE_CASE "") BEGIN - LAUNCH_PATCH_FUNCTION "gt_extract_effects_as_subspell" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "subspell_resref" = "%y%" - "extract" = "%x_2%" - END - END ELSE BEGIN - LAUNCH_PATCH_FUNCTION "gt_permute_effects" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "permutation" = "%x_2%" - END - END - BUT_ONLY_IF_IT_CHANGES - END - END - - /* - **************************************************************************************** - ***************************************** SPL files ************************************ - **************************************************************************************** - */ - - WITH_SCOPE BEGIN - ACTION_MATCH 1 WITH - (GAME_IS ~bgee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - //"bdmycsp2" , "-1" "override" // Pacifier Spores - //"%CLERIC_SPIRITUAL_LOCK%.spl" "override" - //"%WIZARD_FEEBLEMIND%.spl" "override" - "%WIZARD_PRISMATIC_SPRAY%" , "-1" , "5,11" => "%WIZARD_PRISMATIC_SPRAY%A" - END - END - (GAME_IS ~bg2ee eet~) BEGIN END - (GAME_IS ~iwdee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - "%WIZARD_FEEBLEMIND%" , "-1" , "1=>0" => "" - "%WIZARD_PRISMATIC_SPRAY%" , "-1" , "7,14,15" => "%WIZARD_PRISMATIC_SPRAY%B" - "insanity" , "-1" , "5,6,7" => "insanitf" // Insanity Gaze - END - END - DEFAULT - FAIL "Game not supported" - END - /* Main */ - ACTION_PHP_EACH "patch_data" AS "x" => "y" BEGIN - COPY_EXISTING "%x_0%.spl" "override" - // Transfer effects onto a new SPL file (if needed) - PATCH_IF ("%y%" STRING_COMPARE_CASE "") BEGIN - LAUNCH_PATCH_FUNCTION "gt_extract_effects_as_subspell" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "subspell_resref" = "%y%" - "extract" = "%x_2%" - END - END ELSE BEGIN - LAUNCH_PATCH_FUNCTION "gt_permute_effects" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "permutation" = "%x_2%" - END - END - BUT_ONLY_IF_IT_CHANGES - END - END -END - -///////////////////////////////////////////////////////////////// -/* - -Collect SPL/ITM files to check - -*/ -////////////////////////////////////////////////////////////////// - -/* -WITH_SCOPE BEGIN - OUTER_SET "count_spl" = 0 - OUTER_SET "count_itm" = 0 - COPY_EXISTING_REGEXP - "^.+\.\(spl\|itm\)$" "override" - PATCH_MATCH "%DEST_EXT%" WITH - "itm" BEGIN - GET_OFFSET_ARRAY "ab_array" ITM_V10_HEADERS - TEXT_SPRINT "filename" "rearrange_itm" - END - "spl" BEGIN - GET_OFFSET_ARRAY "ab_array" SPL_V10_HEADERS - TEXT_SPRINT "filename" "rearrange_spl" - END - DEFAULT - PATCH_FAIL "~%DEST_FILE%~" - END - PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN - PATCH_IF SHORT_AT ("%ab_off%" + 0x1E) > 1 BEGIN - GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" SPL_V10_HEAD_EFFECTS - PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN - PATCH_MATCH SHORT_AT "%fx_off%" WITH - 76 BEGIN - INNER_ACTION BEGIN - ACTION_IF ("%DEST_EXT%" STRING_EQUAL_CASE "itm") BEGIN - OUTER_SET "count_itm" += 1 - APPEND_OUTER "%MOD_FOLDER%/%filename%.txt" "%count_itm%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" UNLESS "%count_itm%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" - END ELSE BEGIN - OUTER_SET "count_spl" += 1 - APPEND_OUTER "%MOD_FOLDER%/%filename%.txt" "%count_spl%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" UNLESS "%count_spl%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" - END - END - END - DEFAULT - END - END - END - END - BUT_ONLY_IF_IT_CHANGES -END -*/ \ No newline at end of file diff --git a/eefixpack/files/tph/luke/7eyes/hold_creature.tph b/eefixpack/files/tph/luke/7eyes/hold_creature.tph deleted file mode 100644 index d78b554b..00000000 --- a/eefixpack/files/tph/luke/7eyes/hold_creature.tph +++ /dev/null @@ -1,162 +0,0 @@ -DEFINE_ACTION_FUNCTION "HOLD_CREATURE" -BEGIN - /* - **************************************************************************************** - ***************************************** ITM files ************************************ - **************************************************************************************** - */ - - WITH_SCOPE BEGIN - ACTION_MATCH 1 WITH - (GAME_IS ~bgee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - //"shld07p.itm" "override" - //"sw1p01.itm" "override" // Viper's Edge +2 - END - END - (GAME_IS ~bg2ee eet~) BEGIN END - (GAME_IS ~iwdee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - "ulswd4a" , "-1" , "2,1,3,4,5" => "ulswd4a" // Hold Fast +3 - END - END - DEFAULT - FAIL "Game not supported" - END - /* Main */ - ACTION_PHP_EACH "patch_data" AS "x" => "y" BEGIN - COPY_EXISTING "%x_0%.itm" "override" - // Transfer effects onto a new SPL file (if needed) - PATCH_IF ("%y%" STRING_COMPARE_CASE "") BEGIN - LAUNCH_PATCH_FUNCTION "gt_extract_effects_as_subspell" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "subspell_resref" = "%y%" - "extract" = "%x_2%" - END - END ELSE BEGIN - LAUNCH_PATCH_FUNCTION "gt_permute_effects" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "permutation" = "%x_2%" - END - END - BUT_ONLY_IF_IT_CHANGES - END - END - - /* - **************************************************************************************** - ***************************************** SPL files ************************************ - **************************************************************************************** - */ - - WITH_SCOPE BEGIN - ACTION_MATCH 1 WITH - (GAME_IS ~bgee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - //"bdmisc07" "override" - "spcl415" , 1 , "3,0,1,2" => "spcl415h" // Snare - //"%PSIONIC_CONTROL_BODY%" "override" - "%BEHOLDER_HOLD_PERSON%" , "-1" , "3=>0" => "" - //"%BEHOLDER_PARALYZATION%" "override" - //"%TANARI_DEATH_GAZE%" "override" -- unsure, will ask... - //"%TANARI_PARALYZE%" "override" - "%CLERIC_HOLD_PERSON%" , "-1" , "3=>0" => "" - "%CLERIC_HOLD_ANIMAL%" , "-1" , "3=>0" => "" - "%TRAP_HOLD_PERSON%" , "-1" , "3=>0" => "" - "%WIZARD_HOLD_PERSON%" , "-1" , "3=>0" => "" - //"%WIZARD_HOLD_MONSTER%" "override" - "spwm122" , "-1" , "3=>0" => "" // Hold Person (wild surge) - END - END - (GAME_IS ~bg2ee eet~) BEGIN END - (GAME_IS ~iwdee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - "spcl415" , 1 , "3,0,1,2" => "spcl415h" - //"%TRAP_POISON_PARALYZATION_DARTS%" , "-1" , "5,6" => "%TRAP_POISON_PARALYZATION_DARTS%A" - END - END - DEFAULT - FAIL "Game not supported" - END - /* Main */ - ACTION_PHP_EACH "patch_data" AS "x" => "y" BEGIN - COPY_EXISTING "%x_0%.spl" "override" - // Transfer effects onto a new SPL file (if needed) - PATCH_IF ("%y%" STRING_COMPARE_CASE "") BEGIN - LAUNCH_PATCH_FUNCTION "gt_extract_effects_as_subspell" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "subspell_resref" = "%y%" - "extract" = "%x_2%" - END - END ELSE BEGIN - LAUNCH_PATCH_FUNCTION "gt_permute_effects" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "permutation" = "%x_2%" - END - END - BUT_ONLY_IF_IT_CHANGES - END - END -END - -///////////////////////////////////////////////////////////////// -/* - -Collect SPL/ITM files to check - -*/ -////////////////////////////////////////////////////////////////// - -/* -WITH_SCOPE BEGIN - OUTER_SET "count_spl" = 0 - OUTER_SET "count_itm" = 0 - COPY_EXISTING_REGEXP - "^.+\.\(spl\|itm\)$" "override" - PATCH_MATCH "%DEST_EXT%" WITH - "itm" BEGIN - GET_OFFSET_ARRAY "ab_array" ITM_V10_HEADERS - TEXT_SPRINT "filename" "rearrange_itm" - END - "spl" BEGIN - GET_OFFSET_ARRAY "ab_array" SPL_V10_HEADERS - TEXT_SPRINT "filename" "rearrange_spl" - END - DEFAULT - PATCH_FAIL "~%DEST_FILE%~" - END - PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN - PATCH_IF SHORT_AT ("%ab_off%" + 0x1E) > 1 BEGIN - GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" SPL_V10_HEAD_EFFECTS - PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN - PATCH_MATCH SHORT_AT "%fx_off%" WITH - 175 BEGIN - INNER_ACTION BEGIN - ACTION_IF ("%DEST_EXT%" STRING_EQUAL_CASE "itm") BEGIN - OUTER_SET "count_itm" += 1 - APPEND_OUTER "%MOD_FOLDER%/%filename%.txt" "%count_itm%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" UNLESS "%count_itm%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" - END ELSE BEGIN - OUTER_SET "count_spl" += 1 - APPEND_OUTER "%MOD_FOLDER%/%filename%.txt" "%count_spl%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" UNLESS "%count_spl%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" - END - END - END - DEFAULT - END - END - END - END - BUT_ONLY_IF_IT_CHANGES -END -*/ \ No newline at end of file diff --git a/eefixpack/files/tph/luke/7eyes/iwd/berserk.2da b/eefixpack/files/tph/luke/7eyes/iwd/berserk.2da new file mode 100644 index 00000000..9563b6ea --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/iwd/berserk.2da @@ -0,0 +1,11 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 #BELTYN.SPL CD0000 +1 SPIN188.SPL CD0001 +2 SPPR422.SPL CD0002 +3 SPPR522.SPL CD0003 +4 SPPR522B.SPL **** +5 U2HAX5A.ITM CD0004 +6 UDART2A.ITM CD0005 +7 YOUNG.ITM CD0006 diff --git a/eefixpack/files/tph/luke/7eyes/iwd/blind.2da b/eefixpack/files/tph/luke/7eyes/iwd/blind.2da new file mode 100644 index 00000000..deac8a2f --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/iwd/blind.2da @@ -0,0 +1,28 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 #SUNRUND.SPL CD005I +1 SORB.ITM CD005J +2 SPCL239A.SPL CD005K +3 SPDM101.SPL **** +4 SPDR101.SPL CD005L +5 SPPR115.SPL CD005M +6 SPPR313.SPL CD005N +7 SPPR423.SPL CD005O +8 SPPR609.SPL CD005P +9 SPPR614B.SPL CD005Q +10 SPPR614C.SPL CD005R +11 SPPR704.SPL CD005S +12 SPPR707.SPL CD005T +13 SPWI032.SPL CD005U +14 SPWI105.SPL CD005V +15 SPWI106.SPL **** +16 SPWI118.SPL CD005W +17 SPWI224.SPL CD005X +18 SPWI226.SPL **** +19 SPWI714.SPL CD005Y +20 SPWI815.SPL **** +21 SPWM178.SPL **** +22 UDART3B.ITM CD005Z +23 WAND19.ITM CD0060 +24 ZZE6PE.ITM CD0061 diff --git a/eefixpack/files/tph/luke/7eyes/iwd/charm.2da b/eefixpack/files/tph/luke/7eyes/iwd/charm.2da new file mode 100644 index 00000000..73fff1aa --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/iwd/charm.2da @@ -0,0 +1,17 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 DEMOCHM.SPL **** +1 RING03.ITM CD0007 +2 SPCL311.SPL **** +3 SPCL641.SPL **** +4 SPIN141.SPL **** +5 SPIN975.SPL **** +6 SPITM99.SPL **** +7 SPPR204.SPL **** +8 SPPR405.SPL CD0008 +9 SPPR982.SPL **** +10 SPWI104.SPL **** +11 SPWI316.SPL **** +12 SPWI506.SPL **** +13 SPWM179.SPL **** diff --git a/eefixpack/files/tph/luke/7eyes/iwd/confusion.2da b/eefixpack/files/tph/luke/7eyes/iwd/confusion.2da new file mode 100644 index 00000000..3d0b81cb --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/iwd/confusion.2da @@ -0,0 +1,19 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BDSHA01A.SPL **** +1 INSANITY.SPL CD0071 +2 SPCL751A.SPL **** +3 SPDR501.SPL **** +4 SPIN976.SPL **** +5 SPPR311.SPL **** +6 SPPR709.SPL **** +7 SPPR983.SPL **** +8 SPWI029.SPL CD0073 +9 SPWI401.SPL **** +10 SPWI508.SPL **** +11 SPWI711.SPL CD0074 +12 UAROW3A.ITM CD0075 +13 ULSWD3B.ITM CD0076 +14 UMBERGAZ.SPL **** +15 UMSTR2A.ITM CD0077 diff --git a/eefixpack/files/tph/luke/7eyes/iwd/damage_acid.2da b/eefixpack/files/tph/luke/7eyes/iwd/damage_acid.2da new file mode 100644 index 00000000..cfb604c4 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/iwd/damage_acid.2da @@ -0,0 +1,13 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 #DEATHF1.SPL **** +1 #DEATHF2.SPL **** +2 #DEATHF3.SPL **** +3 SPIN191.SPL CD000V +4 SPWI211.SPL **** +5 SPWI432.SPL CD000W +6 SPWI614.SPL CD000X +7 SPWI614B.SPL CD000Y +8 SPWI614C.SPL CD000Z +9 SPWI724.SPL **** diff --git a/eefixpack/files/tph/luke/7eyes/iwd/damage_cold.2da b/eefixpack/files/tph/luke/7eyes/iwd/damage_cold.2da new file mode 100644 index 00000000..32e21c1f --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/iwd/damage_cold.2da @@ -0,0 +1,6 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 LTOUCH.SPL CD000Q +1 SPPR250.SPL CD000R +2 SPWI117B.SPL CD000S diff --git a/eefixpack/files/tph/luke/7eyes/iwd/damage_crushing.2da b/eefixpack/files/tph/luke/7eyes/iwd/damage_crushing.2da new file mode 100644 index 00000000..86e8f759 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/iwd/damage_crushing.2da @@ -0,0 +1,20 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 GASP.SPL CD001A +1 SPIN132.SPL CD001B +2 SPIN973.SPL CD001C +3 SPOGRE01.SPL CD001D +4 SPPR106.SPL **** +5 SPPR323D.SPL **** +6 SPPR426.SPL CD001E +7 SPPR617.SPL CD001F +8 SPPR720.SPL CD001G +9 SPWI328.SPL **** +10 SPWI818.SPL CD001H +11 SPWI818A.SPL CD001I +12 SPWI918.SPL CD001J +13 SPWI918A.SPL CD001K +14 SPWISH27.SPL CD001L +15 SPWM188.SPL CD001M +16 SPYANC01.SPL CD001N diff --git a/eefixpack/files/tph/luke/7eyes/iwd/damage_electricity.2da b/eefixpack/files/tph/luke/7eyes/iwd/damage_electricity.2da new file mode 100644 index 00000000..1d74e9d1 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/iwd/damage_electricity.2da @@ -0,0 +1,5 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 SPPR325.SPL CD000T +1 SPPR420B.SPL CD000U diff --git a/eefixpack/files/tph/luke/7eyes/iwd/damage_fire.2da b/eefixpack/files/tph/luke/7eyes/iwd/damage_fire.2da new file mode 100644 index 00000000..4133b1ff --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/iwd/damage_fire.2da @@ -0,0 +1,26 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 #BELTYN.SPL CD0009 +1 #SUNRUND.SPL CD000A +2 BDSUMST1.SPL CD000B +3 FIRAU1D2.SPL **** +4 SEKOLAH.SPL **** +5 SPAURU.SPL CD000C +6 SPCL236.SPL **** +7 SPCL239A.SPL CD000D +8 SPCL911B.SPL CD000E +9 SPDD03.SPL **** +10 SPDR101.SPL CD000F +11 SPPR419.SPL CD000G +12 SPPR609.SPL CD000H +13 SPPR705.SPL **** +14 SPPR722.SPL CD000I +15 SPPR728.SPL CD000J +16 SPWI118.SPL CD000K +17 SPWI217.SPL **** +18 SPWI303.SPL CD000L +19 SPWI524B.SPL CD000M +20 SPWI711.SPL CD000N +21 SPWI922.SPL CD000O +22 SPWI925.SPL CD000P diff --git a/eefixpack/files/tph/luke/7eyes/iwd/damage_missile.2da b/eefixpack/files/tph/luke/7eyes/iwd/damage_missile.2da new file mode 100644 index 00000000..68db6822 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/iwd/damage_missile.2da @@ -0,0 +1,14 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 SPCL411.SPL CD0010 +1 SPCL411F.SPL CD0011 +2 SPCL415.SPL CD0012 +3 SPWI006.SPL CD0013 +4 SPWI007.SPL CD0014 +5 SPWI008.SPL CD0015 +6 SPWI009.SPL CD0016 +7 SPWI010.SPL CD0017 +8 SPWI011.SPL CD0018 +9 SPWI012.SPL CD0019 +10 SPWI013.SPL **** diff --git a/eefixpack/files/tph/luke/7eyes/iwd/damage_piercing.2da b/eefixpack/files/tph/luke/7eyes/iwd/damage_piercing.2da new file mode 100644 index 00000000..d58a19c3 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/iwd/damage_piercing.2da @@ -0,0 +1,13 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BDSUMST1.SPL CD001P +1 SPPR218.SPL CD001Q +2 SPPR324.SPL **** +3 SPPR517.SPL CD001R +4 SPPR519.SPL CD001S +5 SPWI018.SPL CD001T +6 SPWI019.SPL CD001U +7 SPWI028.SPL CD001V +8 SPWI029.SPL CD001W +9 SPWI303.SPL CD001X diff --git a/eefixpack/files/tph/luke/7eyes/iwd/damage_slashing.2da b/eefixpack/files/tph/luke/7eyes/iwd/damage_slashing.2da new file mode 100644 index 00000000..151a0e2e --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/iwd/damage_slashing.2da @@ -0,0 +1,5 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 #BONECIR.SPL **** +1 SAREVEFF.SPL CD001O diff --git a/eefixpack/files/tph/luke/7eyes/iwd/deaf.2da b/eefixpack/files/tph/luke/7eyes/iwd/deaf.2da new file mode 100644 index 00000000..9653a836 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/iwd/deaf.2da @@ -0,0 +1,10 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 SPIN191.SPL CD006K +1 SPPR710.SPL CD006L +2 SPPR715.SPL CD006M +3 SPWI223.SPL **** +4 SPWI431.SPL CD006N +5 SPWI806.SPL CD006O +6 WAND19.ITM CD006P diff --git a/eefixpack/files/tph/luke/7eyes/iwd/disease.2da b/eefixpack/files/tph/luke/7eyes/iwd/disease.2da new file mode 100644 index 00000000..315aad1e --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/iwd/disease.2da @@ -0,0 +1,19 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BEHWEP.ITM CD0067 +1 MUM1-12.ITM CD0068 +2 PEST.ITM CD0069 +3 SHADOW1.SPL **** +4 SPIDWR1.ITM CD006A +5 SPIN190.SPL CD006B +6 SPPR320.SPL **** +7 SPPR326.SPL CD006C +8 SPPR326B.SPL CD006D +9 SPWI018.SPL CD006E +10 SPWI409.SPL **** +11 U2HAX3A.ITM CD006F +12 UBSWD5A.ITM CD006G +13 UDAGG4A.ITM CD006H +14 UHALB2A.ITM CD006I +15 UTSWD4B.ITM CD006J diff --git a/eefixpack/files/tph/luke/7eyes/iwd/disintegrate.2da b/eefixpack/files/tph/luke/7eyes/iwd/disintegrate.2da new file mode 100644 index 00000000..f24ca0b9 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/iwd/disintegrate.2da @@ -0,0 +1,4 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 SPIN805.SPL CD0086 diff --git a/eefixpack/files/tph/luke/7eyes/iwd/entangle.2da b/eefixpack/files/tph/luke/7eyes/iwd/entangle.2da new file mode 100644 index 00000000..c38920d7 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/iwd/entangle.2da @@ -0,0 +1,12 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 GASP.ITM CD007P +1 GASP.SPL CD007Q +2 HOLDFST.ITM CD007R +3 HOLDFST.SPL **** +4 SHMBLR.ITM CD007S +5 SPPR105.SPL **** +6 SPWM111.SPL **** +7 TALONGF.ITM CD007T +8 TALONGF.SPL **** diff --git a/eefixpack/files/tph/luke/7eyes/iwd/feeblemind.2da b/eefixpack/files/tph/luke/7eyes/iwd/feeblemind.2da new file mode 100644 index 00000000..7a72e3e2 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/iwd/feeblemind.2da @@ -0,0 +1,10 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 INSANITY.SPL CD0062 +1 POTN23.ITM CD0063 +2 SPPR650.SPL **** +3 SPWI415.SPL CD0064 +4 SPWI509.SPL **** +5 SPWI711.SPL CD0065 +6 SPWI714.SPL CD0066 diff --git a/eefixpack/files/tph/luke/7eyes/iwd/grease.2da b/eefixpack/files/tph/luke/7eyes/iwd/grease.2da new file mode 100644 index 00000000..0c2ace99 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/iwd/grease.2da @@ -0,0 +1,3 @@ +2DA V1.0 +**** + FILE SUBSPELL diff --git a/eefixpack/files/tph/luke/7eyes/iwd/haste.2da b/eefixpack/files/tph/luke/7eyes/iwd/haste.2da new file mode 100644 index 00000000..acf39a39 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/iwd/haste.2da @@ -0,0 +1,16 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 LABELT.ITM CD002W +1 POTN14.ITM CD002X +2 RUNRUN.SPL CD002Y +3 SPIN117.SPL **** +4 SPIN978.SPL **** +5 SPRA301.SPL **** +6 SPWI305.SPL **** +7 SPWI613.SPL **** +8 SPWI711.SPL CD002Z +9 SPWISH36.SPL **** +10 SPWISH37.SPL **** +11 SPWISH40.SPL **** +12 SPWM115.SPL **** diff --git a/eefixpack/files/tph/luke/7eyes/iwd/hold.2da b/eefixpack/files/tph/luke/7eyes/iwd/hold.2da new file mode 100644 index 00000000..1b81ed7e --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/iwd/hold.2da @@ -0,0 +1,15 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 LTOUCH.SPL CD007U +1 SPCL415.SPL CD007V +2 SPDR101.SPL CD007W +3 SPPR208.SPL **** +4 SPPR305.SPL **** +5 SPPR989.SPL **** +6 SPWI028.SPL CD007X +7 SPWI118.SPL CD007Y +8 SPWI306.SPL **** +9 SPWI507.SPL **** +10 SPWM122.SPL **** +11 ULSWD4A.ITM CD007Z diff --git a/eefixpack/files/tph/luke/7eyes/iwd/imprisonment.2da b/eefixpack/files/tph/luke/7eyes/iwd/imprisonment.2da new file mode 100644 index 00000000..48150ac9 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/iwd/imprisonment.2da @@ -0,0 +1,4 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 SPWI910.SPL CD0083 diff --git a/eefixpack/files/tph/luke/7eyes/iwd/kill.2da b/eefixpack/files/tph/luke/7eyes/iwd/kill.2da new file mode 100644 index 00000000..965396a9 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/iwd/kill.2da @@ -0,0 +1,45 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 #DISINT.SPL CD001Y +1 DEBIAN.ITM CD001Z +2 DEVA.ITM CD0020 +3 DOVES.ITM CD0021 +4 ELEMCHAN.ITM CD0022 +5 ELEMSUNN.ITM CD0023 +6 ELEMZAAM.ITM CD0024 +7 PLANETAR.ITM CD0025 +8 POTN40.ITM CD0026 +9 REAVER.ITM CD0027 +10 SCRLZY.ITM CD0028 +11 SPCTMD02.SPL **** +12 SPIN116.SPL **** +13 SPIN126.SPL CD0029 +14 SPIN131.SPL CD002A +15 SPIN132.SPL CD002B +16 SPIN148.SPL CD002C +17 SPIN171.SPL **** +18 SPIN172.SPL CD002D +19 SPIN182.SPL CD002E +20 SPIN189.SPL CD002F +21 SPIN190.SPL CD002G +22 SPIN871.SPL CD002H +23 SPIN973.SPL CD002I +24 SPPR511.SPL CD002J +25 SPPR599.SPL CD002K +26 SPPR617.SPL CD002L +27 SPPR708.SPL CD002M +28 SPPR710.SPL CD002N +29 SPPR715.SPL CD002O +30 SPPR734.SPL CD002P +31 SPWI023.SPL **** +32 SPWI031.SPL CD002Q +33 SPWI054.SPL **** +34 SPWI605.SPL **** +35 SPWI713.SPL CD002R +36 SPWI806.SPL CD002S +37 SPWI812.SPL CD002T +38 SPWI912.SPL **** +39 SPWISH32.SPL CD002U +40 VEXED2.ITM CD002V +41 VORPAL.SPL **** diff --git a/eefixpack/files/tph/luke/7eyes/iwd/maze.2da b/eefixpack/files/tph/luke/7eyes/iwd/maze.2da new file mode 100644 index 00000000..faa13898 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/iwd/maze.2da @@ -0,0 +1,8 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 SPCL415.SPL CD0084 +1 SPCL937.SPL **** +2 SPPR750.SPL CD0085 +3 SPPR750B.SPL **** +4 SPWI813.SPL **** diff --git a/eefixpack/files/tph/luke/7eyes/iwd/panic.2da b/eefixpack/files/tph/luke/7eyes/iwd/panic.2da new file mode 100644 index 00000000..cdf39414 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/iwd/panic.2da @@ -0,0 +1,33 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 #COFEAR.SPL CD0030 +1 BDSHA01C.SPL **** +2 BEARSPIR.ITM CD0031 +3 FLPR717A.SPL **** +4 SPBATT1.ITM CD0032 +5 SPBATT2.ITM CD0033 +6 SPBATT3.ITM CD0034 +7 SPBATT4.ITM CD0035 +8 SPBATT5.ITM CD0036 +9 SPCL103.SPL CD0037 +10 SPCL908.SPL **** +11 SPIN119.SPL CD0038 +12 SPIN139.SPL CD0039 +13 SPIN145.SPL **** +14 SPIN173.SPL **** +15 SPIN188.SPL CD003A +16 SPIN921.SPL CD003B +17 SPPR517.SPL CD003C +18 SPPR706.SPL **** +19 SPWI036.SPL **** +20 SPWI117A.SPL **** +21 SPWI125.SPL **** +22 SPWI205.SPL **** +23 SPWI428.SPL **** +24 SPWI811.SPL **** +25 SPWI899.SPL **** +26 SPWM123.SPL **** +27 WAND02.ITM CD003D +28 ZZJ6SP.ITM CD003E +29 ZZM5MH.ITM CD003F diff --git a/eefixpack/files/tph/luke/7eyes/iwd/paralyze.2da b/eefixpack/files/tph/luke/7eyes/iwd/paralyze.2da new file mode 100644 index 00000000..b35624b0 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/iwd/paralyze.2da @@ -0,0 +1,16 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BASILL1.ITM CD006Q +1 CARRIO1.ITM CD006R +2 GHAST1.ITM CD006S +3 GHOUL1.ITM CD006T +4 GHOULT.ITM CD006U +5 SPDR201.SPL **** +6 SPPR728.SPL CD006V +7 SPWATT2.ITM CD006W +8 SPWATT3.ITM CD006X +9 SPWATT4.ITM CD006Y +10 SPWATT5.ITM CD006Z +11 SPWI215.SPL **** +12 SPWI711.SPL CD0070 diff --git a/eefixpack/files/tph/luke/7eyes/iwd/petrify.2da b/eefixpack/files/tph/luke/7eyes/iwd/petrify.2da new file mode 100644 index 00000000..40bbe225 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/iwd/petrify.2da @@ -0,0 +1,11 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BASILL1.ITM CD0078 +1 MAE.ITM CD0079 +2 PLYBASS.ITM CD007A +3 SPIN143.SPL **** +4 SPWI035.SPL **** +5 SPWI053.SPL **** +6 SPWI604.SPL **** +7 SPWI714.SPL CD007B diff --git a/eefixpack/files/tph/luke/7eyes/iwd/power_word_kill.2da b/eefixpack/files/tph/luke/7eyes/iwd/power_word_kill.2da new file mode 100644 index 00000000..55ec708f --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/iwd/power_word_kill.2da @@ -0,0 +1,6 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 SPPR719.SPL CD0080 +1 SPWI817.SPL CD0081 +2 SPWI897.SPL CD0082 diff --git a/eefixpack/files/tph/luke/7eyes/iwd/power_word_stun.2da b/eefixpack/files/tph/luke/7eyes/iwd/power_word_stun.2da new file mode 100644 index 00000000..4ad7de08 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/iwd/power_word_stun.2da @@ -0,0 +1,4 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 SPWI715.SPL **** diff --git a/eefixpack/files/tph/luke/7eyes/iwd/silence.2da b/eefixpack/files/tph/luke/7eyes/iwd/silence.2da new file mode 100644 index 00000000..10200401 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/iwd/silence.2da @@ -0,0 +1,9 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 SPPR211.SPL **** +1 SPPR988.SPL **** +2 SPWI612.SPL **** +3 SPWISH35.SPL **** +4 TRNBOLT.ITM CD003G +5 WAND19.ITM CD003H diff --git a/eefixpack/files/tph/luke/7eyes/iwd/slay.2da b/eefixpack/files/tph/luke/7eyes/iwd/slay.2da new file mode 100644 index 00000000..faf6c51e --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/iwd/slay.2da @@ -0,0 +1,13 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 AROW03.ITM CD0059 +1 SLAYLIVE.ITM CD005A +2 SPCL411.SPL CD005B +3 SPCL411F.SPL CD005C +4 SPPR704.SPL CD005D +5 SPPR722.SPL CD005E +6 SPWI016.SPL CD005F +7 SPWI502.SPL CD005G +8 SPWI913.SPL **** +9 WITHERY.ITM CD005H diff --git a/eefixpack/files/tph/luke/7eyes/iwd/slow.2da b/eefixpack/files/tph/luke/7eyes/iwd/slow.2da new file mode 100644 index 00000000..1efc7a0c --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/iwd/slow.2da @@ -0,0 +1,26 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 BDSHA06B.SPL **** +1 DAYS.ITM CD003I +2 JELLMU1.ITM CD003J +3 PLYJELLY.ITM CD003K +4 POTN32.ITM CD003L +5 SPCL123.SPL CD003M +6 SPCL415.SPL CD003N +7 SPCL422.SPL CD003O +8 SPCL751A.SPL CD003P +9 SPIN146.SPL **** +10 SPIN164.SPL CD003Q +11 SPIN977.SPL **** +12 SPPR250.SPL CD003R +13 SPPR610.SPL CD003S +14 SPPR710.SPL CD003T +15 SPPR715.SPL CD003U +16 SPWI312.SPL **** +17 SPWISH25.SPL **** +18 SPWM112.SPL **** +19 SPWM164.SPL **** +20 U1HAX4A.ITM CD003V +21 UMSTR4B.ITM CD003W +22 USSWD3A.ITM CD003X diff --git a/eefixpack/files/tph/luke/7eyes/iwd/special.2da b/eefixpack/files/tph/luke/7eyes/iwd/special.2da new file mode 100644 index 00000000..7282f53e --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/iwd/special.2da @@ -0,0 +1,16 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 MINDFLAY.ITM CD007C +1 SHADOWWP.ITM CD007D +2 SPIN119.SPL CD007E +3 SPPR751.SPL CD007F +4 TROLLSPI.ITM CD007G +5 U1HAM5A.ITM CD007H +6 U2HAM4B.ITM CD007I +7 U2HAX4A.ITM CD007J +8 UBSWD2A.ITM CD007K +9 UBSWD4B.ITM CD007L +10 UDAGG1B.ITM CD007M +11 UMSTR3C.ITM CD007N +12 USSWD2B.ITM CD007O diff --git a/eefixpack/files/tph/luke/7eyes/iwd/stun.2da b/eefixpack/files/tph/luke/7eyes/iwd/stun.2da new file mode 100644 index 00000000..83054a53 --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/iwd/stun.2da @@ -0,0 +1,59 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 AXEMINO.ITM CD003Y +1 BDSHA06A.SPL **** +2 CWREVE.ITM CD003Z +3 DART03.ITM CD0040 +4 DAZER.ITM CD0041 +5 DEVA.ITM CD0042 +6 GVALOR2.ITM CD0043 +7 ICEGOLEM.ITM CD0044 +8 ICETRL.ITM CD0045 +9 POQ2-16.ITM CD0046 +10 SAREVEFF.SPL CD0047 +11 SFLAIL.ITM CD0048 +12 SPCL118.SPL CD0049 +13 SPCL123.SPL CD004A +14 SPDR101.SPL CD004B +15 SPIN115.SPL **** +16 SPIN132.SPL CD004C +17 SPIN139.SPL CD004D +18 SPIN188.SPL CD004E +19 SPIN191.SPL CD004F +20 SPIN974.SPL **** +21 SPPR426.SPL CD004G +22 SPPR617.SPL CD004H +23 SPPR710.SPL CD004I +24 SPPR715.SPL CD004J +25 SPPR716.SPL **** +26 SPPR718.SPL **** +27 SPWI032.SPL CD004K +28 SPWI105.SPL CD004L +29 SPWI118.SPL CD004M +30 SPWI327.SPL CD004N +31 SPWI411.SPL **** +32 SPWI806.SPL CD004O +33 SPWI816.SPL **** +34 SPWI898.SPL **** +35 SPWM152.SPL **** +36 U1HAM3B.ITM CD004P +37 U1HAX2A.ITM CD004Q +38 U1HAX4B.ITM CD004R +39 UAROW3B.ITM CD004S +40 UBSWD5B.ITM CD004T +41 UDART1A.ITM CD004U +42 UFLAL2B.ITM CD004V +43 UFLAL5A.ITM CD004W +44 UHALB4A.ITM CD004X +45 UHALB4B.ITM CD004Y +46 ULSWD5B.ITM CD004Z +47 UMSTR2B.ITM CD0050 +48 UMSTR3A.ITM CD0051 +49 UMSTR5A.ITM CD0052 +50 USSWD5B.ITM CD0053 +51 UTSWD2B.ITM CD0054 +52 UTSWD3A.ITM CD0055 +53 UTSWD5A.ITM CD0056 +54 WAND04.ITM CD0057 +55 XCLUB.ITM CD0058 diff --git a/eefixpack/files/tph/luke/7eyes/iwd/web.2da b/eefixpack/files/tph/luke/7eyes/iwd/web.2da new file mode 100644 index 00000000..34cc986d --- /dev/null +++ b/eefixpack/files/tph/luke/7eyes/iwd/web.2da @@ -0,0 +1,5 @@ +2DA V1.0 +**** + FILE SUBSPELL +0 SPDR201.SPL **** +1 SPWI215.SPL **** diff --git a/eefixpack/files/tph/luke/7eyes/panic.tph b/eefixpack/files/tph/luke/7eyes/panic.tph deleted file mode 100644 index bcf2fc41..00000000 --- a/eefixpack/files/tph/luke/7eyes/panic.tph +++ /dev/null @@ -1,210 +0,0 @@ -DEFINE_ACTION_FUNCTION "PANIC" -BEGIN - /* - **************************************************************************************** - ***************************************** ITM files ************************************ - **************************************************************************************** - */ - - WITH_SCOPE BEGIN - ACTION_MATCH 1 WITH - (GAME_IS ~bgee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - //"bdfeyrwp" , "-1" , "" "override" // Used by Feyrs - "bdpotn01" , "-1" , "0,1,2" => "bdpotn01" - //"bearspir" , "" "override" // Attack - "mistice" , "-1" , "1,2,3,4" => "mistice" // Attack - "spbatt1" , "-1" , "0,1,2" => "spbatt1" // Attack - "spbatt2" , "-1" , "0,1,2" => "spbatt2" // Attack - "spbatt3" , "-1" , "0,1,2" => "spbatt3" // Attack - "spbatt4" , "-1" , "0,1,2" => "spbatt4" // Attack - "spbatt5" , "-1" , "0,1,2" => "spbatt5" // Attack - "wand02" , "-1" , "0,1,2,3,4" => "wand02" // Wand of Fear - END - END - (GAME_IS ~bg2ee eet~) BEGIN END - (GAME_IS ~iwdee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - "spbatt1" , "-1" , "0,1" => "spbatt1" // Attack - "spbatt2" , "-1" , "0,1" => "spbatt2" // Attack - "spbatt3" , "-1" , "0,1" => "spbatt3" // Attack - "spbatt4" , "-1" , "0,1" => "spbatt4" // Attack - "spbatt5" , "-1" , "0,1" => "spbatt5" // Attack - "wand02" , "-1" , "0,1,2,3,4" => "wand02" // Wand of Fear - "zzj6sp" , "-1" , "0,1,2,3,4" => "zzj6sp" // SelĂ»ne's Promise +1 - "zzm5mh" , "-1" , "1,2,3,4,5,6" => "zzm5mh" // Misery's Herald +3 - END - END - DEFAULT - FAIL "Game not supported" - END - /* Main */ - ACTION_PHP_EACH "patch_data" AS "x" => "y" BEGIN - COPY_EXISTING "%x_0%.itm" "override" - // Transfer effects onto a new SPL file (if needed) - PATCH_IF ("%y%" STRING_COMPARE_CASE "") BEGIN - LAUNCH_PATCH_FUNCTION "gt_extract_effects_as_subspell" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "subspell_resref" = "%y%" - "extract" = "%x_2%" - END - END ELSE BEGIN - LAUNCH_PATCH_FUNCTION "gt_permute_effects" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "permutation" = "%x_2%" - END - END - BUT_ONLY_IF_IT_CHANGES - END - END - - /* - **************************************************************************************** - ***************************************** SPL files ************************************ - **************************************************************************************** - */ - - WITH_SCOPE BEGIN - ACTION_MATCH 1 WITH - (GAME_IS ~bgee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - //"bdaurafe" , "-1" "override" // Aura of Fear - "bddragg2" , "-1" , "2,1" => "bddragg0" // Dragon Fear - //"bdfear" "override" // Panic - "bdgfear" , "-1" , "0,5,6,7,8" => "bdgfear0" // Ghost Fear - //"bdhafear" "override" // Unnamed - //"bdneoawe" "override" // - //"bdpanic" "override" // Panic - //"bdsha01c" "override" // Hound Spirit - //"bdtgaze" "override" // Terrifying Gaze - "%AURA_OF_DESPAIR%" , 2 , "4=>8" => "" - "%AURA_OF_DESPAIR%" , 3 , "4=>8" => "" - //"%INNATE_HORROR%" "override" // - //"%MIST_HORROR%" "override" - //"%HARPER_DEATH_SONG%" "override" - "%HELL_FEAR%" , "-1" , "2=>-1,1=>-1" => "" - "%SLAYER_FEAR%" , "-1" , "2=>0" => "" - //"%VAMPIRE_FEAR%" "override" - //"%DEMON_FEAR%" "override" - "%DRAGON_FEAR%" , "-1" , "3=>2" => "" - //"spin921" "override" // Deathsong - //"%BEHOLDER_FEAR%" "override" - //"%CLERIC_CLOAK_OF_FEAR%" "override" - //"%CLERIC_INSECT_PLAGUE%" "override" -- reworked elsewhere - //"%CLERIC_SYMBOL_FEAR%" "override" - "%WIZARD_SPOOK%" , 0 , "2=>0" => "" - "%WIZARD_SPOOK%" , 1 , "2=>0" => "" - "%WIZARD_SPOOK%" , 2 , "2=>0" => "" - "%WIZARD_SPOOK%" , 3 , "2=>0" => "" - "%WIZARD_SPOOK%" , 4 , "2=>0" => "" - "%WIZARD_SPOOK%" , 5 , "2=>0" => "" - //"%WIZARD_HORROR%" "override" - //"%WIZARD_SYMBOL_FEAR%" "override" -- fix duration...? - //"%WIZARD_NPC_SYMBOL_FEAR%" "override" - //"%FEAR%" "override" - //"spwm123" "override" // Symbol, Fear (wild surge) - END - END - (GAME_IS ~bg2ee eet~) BEGIN END - (GAME_IS ~iwdee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - "%AURA_OF_DESPAIR%" , 2 , "4=>7" => "" - "%AURA_OF_DESPAIR%" , 3 , "4=>7" => "" - "%WARRIOR_WAR_CRY%" , "-1" , "2=>1" => "" - //"%INNATE_GREAT_ROAR%" -- should EYEMIND absorb the 'Strength bonus' penalty...? Yes, probably (see here => https://www.gibberlings3.net/forums/topic/35652-removing-that-dang-spinny-head-animation/?do=findComment&comment=312015) - "%INNATE_HARPY_WAIL_INTERNAL%" , "-1" , "5,8,9" => "%INNATE_HARPY_WAIL_INTERNAL%A" - "%CLERIC_INSECT_PLAGUE%" , "-1" , "4,6,13" => "%CLERIC_INSECT_PLAGUE%B" // "... creatures with 2 or fewer Hit Dice will immediately panic..." - "%CLERIC_INSECT_PLAGUE%" , "-1" , "5,6,12" => "%CLERIC_INSECT_PLAGUE%B" // "... while creatures with 3 to 5 Hit Dice must save vs. Spell to avoid the same fate." - "%WIZARD_SPOOK%" , 0 , "3=>1" => "" - "%WIZARD_SPOOK%" , 1 , "3=>1" => "" - "%WIZARD_SPOOK%" , 2 , "3=>1" => "" - "%WIZARD_SPOOK%" , 3 , "3=>1" => "" - "%WIZARD_SPOOK%" , 4 , "3=>1" => "" - "%WIZARD_SPOOK%" , 5 , "3=>1" => "" - END - END - DEFAULT - FAIL "Game not supported" - END - /* Main */ - ACTION_PHP_EACH "patch_data" AS "x" => "y" BEGIN - COPY_EXISTING "%x_0%.spl" "override" - // Transfer effects onto a new SPL file (if needed) - PATCH_IF ("%y%" STRING_COMPARE_CASE "") BEGIN - LAUNCH_PATCH_FUNCTION "gt_extract_effects_as_subspell" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "subspell_resref" = "%y%" - "extract" = "%x_2%" - END - END ELSE BEGIN - LAUNCH_PATCH_FUNCTION "gt_permute_effects" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "permutation" = "%x_2%" - END - END - BUT_ONLY_IF_IT_CHANGES - END - END -END - -///////////////////////////////////////////////////////////////// -/* - -Collect SPL/ITM files to check - -*/ -////////////////////////////////////////////////////////////////// - -/* -WITH_SCOPE BEGIN - OUTER_SET "count_spl" = 0 - OUTER_SET "count_itm" = 0 - COPY_EXISTING_REGEXP - "^.+\.\(spl\|itm\)$" "override" - PATCH_MATCH "%DEST_EXT%" WITH - "itm" BEGIN - GET_OFFSET_ARRAY "ab_array" ITM_V10_HEADERS - TEXT_SPRINT "filename" "rearrange_itm" - END - "spl" BEGIN - GET_OFFSET_ARRAY "ab_array" SPL_V10_HEADERS - TEXT_SPRINT "filename" "rearrange_spl" - END - DEFAULT - PATCH_FAIL "~%DEST_FILE%~" - END - PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN - PATCH_IF SHORT_AT ("%ab_off%" + 0x1E) > 1 BEGIN - GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" SPL_V10_HEAD_EFFECTS - PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN - PATCH_MATCH SHORT_AT "%fx_off%" WITH - 24 BEGIN - INNER_ACTION BEGIN - ACTION_IF ("%DEST_EXT%" STRING_EQUAL_CASE "itm") BEGIN - OUTER_SET "count_itm" += 1 - APPEND_OUTER "%MOD_FOLDER%/%filename%.txt" "%count_itm%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" UNLESS "%count_itm%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" - END ELSE BEGIN - OUTER_SET "count_spl" += 1 - APPEND_OUTER "%MOD_FOLDER%/%filename%.txt" "%count_spl%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" UNLESS "%count_spl%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" - END - END - END - DEFAULT - END - END - END - END - BUT_ONLY_IF_IT_CHANGES -END -*/ \ No newline at end of file diff --git a/eefixpack/files/tph/luke/7eyes/paralyze.tph b/eefixpack/files/tph/luke/7eyes/paralyze.tph deleted file mode 100644 index 2aaaac87..00000000 --- a/eefixpack/files/tph/luke/7eyes/paralyze.tph +++ /dev/null @@ -1,173 +0,0 @@ -DEFINE_ACTION_FUNCTION "PARALYZE" -BEGIN - /* - **************************************************************************************** - ***************************************** ITM files ************************************ - **************************************************************************************** - */ - - WITH_SCOPE BEGIN - ACTION_MATCH 1 WITH - (GAME_IS ~bgee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - "bdbonbat" , "-1" , "8,4,5,6,7,9,10" => "bdbonbat" // Bonebat - "bdccraw1" , "-1" , "0,1,2,3,4,5" => "bdccraw1" // Carrion Crawler - "bdghastg" , "-1" , "0,1,2,3,4,5" => "bdghastg" // Greater Ghast - "bdwolfva" , "-1" , "1,2,3,4,5,6" => "bdwolfva" // Vampiric Wolf - "carrio1" , "-1" , "0,1,2,3,4,5" => "carrio1" // Carrion Crawler - "demmau01" , "-1" , "3,4,5,6,7,0,1,2,8,9" => "demmau01" // Maurezhi - "ghast1" , "-1" , "0,1,2,3,4,5" => "ghast1" // Ghast - "ghoul1" , "-1" , "4,0,1,2,3,5" => "ghoul1" // Ghoul - "ghoult" , "-1" , "0,1,2,3,4,5,6" => "ghoult" // Ghoul Touch - "kaldw1" , "-1" , "2,1,3,4,5" => "kaldw1" // Kaldran the Bear - "lich02" , "-1" , "0,1,2,3,4" => "lich02" // Lich - "revent1" , "-1" , "0,1,2,3,4,5" => "revent1" // Revenant - "spwatt2" , "-1" , "4,1,2,3" => "spwatt2" // Spirit Wolf - "spwatt3" , "-1" , "4,1,2,3" => "spwatt2" // Spirit Wolf - "spwatt4" , "-1" , "4,1,2,3" => "spwatt2" // Spirit Wolf - //"spwatt5" , "-1" , "4,1,2,3" => "spwatt2" // Spirit Wolf - "vampire" , "-1" , "1,2" => "vampire" // Vampire - "wolfva1" , "-1" , "1,2,3,4,5,6" => "wolfva1" // Vampiric Wolf - END - END - (GAME_IS ~bg2ee eet~) BEGIN END - (GAME_IS ~iwdee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - "carrio1" , "-1" , "0,1,2,3,4,5,6" => "carrio1" // Carrion Crawler - "ghast1" , "-1" , "0,1,2" => "ghast1p" // Ghast - "ghoul1" , "-1" , "9,3,4,5,6,7,8" => "ghoul1" // Ghoul - "ghoult" , "-1" , "9,3,4,5,6,7,8" => "ghoult" // Ghoul Touch - "spwatt2" , "-1" , "3,2" => "spwatt2" // Spirit Wolf - "spwatt3" , "-1" , "3,2" => "spwatt3" // Spirit Wolf - "spwatt4" , "-1" , "3,2" => "spwatt4" // Spirit Wolf - "spwatt5" , "-1" , "3,2" => "spwatt5" // Spirit Wolf - END - END - DEFAULT - FAIL "Game not supported" - END - /* Main */ - ACTION_PHP_EACH "patch_data" AS "x" => "y" BEGIN - COPY_EXISTING "%x_0%.itm" "override" - // Transfer effects onto a new SPL file (if needed) - PATCH_IF ("%y%" STRING_COMPARE_CASE "") BEGIN - LAUNCH_PATCH_FUNCTION "gt_extract_effects_as_subspell" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "subspell_resref" = "%y%" - "extract" = "%x_2%" - END - END ELSE BEGIN - LAUNCH_PATCH_FUNCTION "gt_permute_effects" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "permutation" = "%x_2%" - END - END - BUT_ONLY_IF_IT_CHANGES - END - END - - /* - **************************************************************************************** - ***************************************** SPL files ************************************ - **************************************************************************************** - */ - - WITH_SCOPE BEGIN - ACTION_MATCH 1 WITH - (GAME_IS ~bgee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - //"%BEHOLDER_PARALYZATION_RAY%" , "" "override" - //"%WIZARD_SPHERE_OF_CHAOS%" , "" "override" - END - END - (GAME_IS ~bg2ee eet~) BEGIN END - (GAME_IS ~iwdee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - //"%WIZARD_SPHERE_OF_CHAOS%" , "" "override" - END - END - DEFAULT - FAIL "Game not supported" - END - /* Main */ - ACTION_PHP_EACH "patch_data" AS "x" => "y" BEGIN - COPY_EXISTING "%x_0%.spl" "override" - // Transfer effects onto a new SPL file (if needed) - PATCH_IF ("%y%" STRING_COMPARE_CASE "") BEGIN - LAUNCH_PATCH_FUNCTION "gt_extract_effects_as_subspell" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "subspell_resref" = "%y%" - "extract" = "%x_2%" - END - END ELSE BEGIN - LAUNCH_PATCH_FUNCTION "gt_permute_effects" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "permutation" = "%x_2%" - END - END - BUT_ONLY_IF_IT_CHANGES - END - END -END - -///////////////////////////////////////////////////////////////// -/* - -Collect SPL/ITM files to check - -*/ -////////////////////////////////////////////////////////////////// - -/* -WITH_SCOPE BEGIN - OUTER_SET "count_spl" = 0 - OUTER_SET "count_itm" = 0 - COPY_EXISTING_REGEXP - "^.+\.\(spl\|itm\)$" "override" - PATCH_MATCH "%DEST_EXT%" WITH - "itm" BEGIN - GET_OFFSET_ARRAY "ab_array" ITM_V10_HEADERS - TEXT_SPRINT "filename" "rearrange_itm" - END - "spl" BEGIN - GET_OFFSET_ARRAY "ab_array" SPL_V10_HEADERS - TEXT_SPRINT "filename" "rearrange_spl" - END - DEFAULT - PATCH_FAIL "~%DEST_FILE%~" - END - PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN - PATCH_IF SHORT_AT ("%ab_off%" + 0x1E) > 1 BEGIN - GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" SPL_V10_HEAD_EFFECTS - PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN - PATCH_MATCH SHORT_AT "%fx_off%" WITH - 109 BEGIN - INNER_ACTION BEGIN - ACTION_IF ("%DEST_EXT%" STRING_EQUAL_CASE "itm") BEGIN - OUTER_SET "count_itm" += 1 - APPEND_OUTER "%MOD_FOLDER%/%filename%.txt" "%count_itm%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" UNLESS "%count_itm%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" - END ELSE BEGIN - OUTER_SET "count_spl" += 1 - APPEND_OUTER "%MOD_FOLDER%/%filename%.txt" "%count_spl%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" UNLESS "%count_spl%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" - END - END - END - DEFAULT - END - END - END - END - BUT_ONLY_IF_IT_CHANGES -END -*/ \ No newline at end of file diff --git a/eefixpack/files/tph/luke/7eyes/petrification.tph b/eefixpack/files/tph/luke/7eyes/petrification.tph deleted file mode 100644 index 169a9738..00000000 --- a/eefixpack/files/tph/luke/7eyes/petrification.tph +++ /dev/null @@ -1,165 +0,0 @@ -DEFINE_ACTION_FUNCTION "PETRIFICATION" -BEGIN - /* - **************************************************************************************** - ***************************************** ITM files ************************************ - **************************************************************************************** - */ - - WITH_SCOPE BEGIN - ACTION_MATCH 1 WITH - (GAME_IS ~bgee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - "basilg1" , "-1" , "0,1,2" => "basilg1" // Attack (Greater Basilisk) - "basill1" , "-1" , "0,1,2" => "basill1" // Attack (Lesser Basilisk) - "bdstsnak" , "-1" , "0,1" => "bdstsnak" // Attack (Stone Snake) - "parabasi" , "-1" , "0,1,2,3" => "parabasi" // - "scrl16" , "-1" , "0,3,4,5" => "scrl16" // Cursed Scroll of Petrification - //"sw1p01" "override" // Viper's Edge +2 - END - END - (GAME_IS ~bg2ee eet~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - END - END - (GAME_IS ~iwdee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - "basill1" , "-1" , "1,2,3" => "basill1" // Attack (Lesser Basilisk) - "mae" , "-1" , "1,2,3,4" => "mae" // Flail of Mae - "plybass" , "-1" , "1,2,3" => "plybass" // Attack (Basilisk form) - END - END - DEFAULT - FAIL "Game not supported" - END - /* Main */ - ACTION_PHP_EACH "patch_data" AS "x" => "y" BEGIN - COPY_EXISTING "%x_0%.itm" "override" - // Transfer effects onto a new SPL file (if needed) - PATCH_IF ("%y%" STRING_COMPARE_CASE "") BEGIN - LAUNCH_PATCH_FUNCTION "gt_extract_effects_as_subspell" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "subspell_resref" = "%y%" - "extract" = "%x_2%" - END - END ELSE BEGIN - LAUNCH_PATCH_FUNCTION "gt_permute_effects" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "permutation" = "%x_2%" - END - END - BUT_ONLY_IF_IT_CHANGES - END - END - - /* - **************************************************************************************** - ***************************************** SPL files ************************************ - **************************************************************************************** - */ - - WITH_SCOPE BEGIN - ACTION_MATCH 1 WITH - (GAME_IS ~bgee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - "spdr101" , 7 , "5,1,2,3,4" => "spdr101c" // Chromatic Orb (Avenger) - "%WIZARD_CHROMATIC_ORB%" , 7 , "5,3,4" => "%WIZARD_CHROMATIC_ORB%C" - "%WIZARD_PRISMATIC_SPRAY%" , "-1" , "4" => "%WIZARD_PRISMATIC_SPRAY%B" - END - END - (GAME_IS ~bg2ee eet~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - END - END - (GAME_IS ~iwdee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - "%WIZARD_PRISMATIC_SPRAY%" , "-1" , "6,11,15" => "%WIZARD_PRISMATIC_SPRAY%C" - END - END - DEFAULT - FAIL "Game not supported" - END - /* Main */ - ACTION_PHP_EACH "patch_data" AS "x" => "y" BEGIN - COPY_EXISTING "%x_0%.spl" "override" - // Transfer effects onto a new SPL file (if needed) - PATCH_IF ("%y%" STRING_COMPARE_CASE "") BEGIN - LAUNCH_PATCH_FUNCTION "gt_extract_effects_as_subspell" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "subspell_resref" = "%y%" - "extract" = "%x_2%" - END - END ELSE BEGIN - LAUNCH_PATCH_FUNCTION "gt_permute_effects" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "permutation" = "%x_2%" - END - END - BUT_ONLY_IF_IT_CHANGES - END - END -END - -///////////////////////////////////////////////////////////////// -/* - -Collect SPL/ITM files to check - -*/ -////////////////////////////////////////////////////////////////// - -/* -WITH_SCOPE BEGIN - OUTER_SET "count_spl" = 0 - OUTER_SET "count_itm" = 0 - COPY_EXISTING_REGEXP - "^.+\.\(spl\|itm\)$" "override" - PATCH_MATCH "%DEST_EXT%" WITH - "itm" BEGIN - GET_OFFSET_ARRAY "ab_array" ITM_V10_HEADERS - TEXT_SPRINT "filename" "rearrange_itm" - END - "spl" BEGIN - GET_OFFSET_ARRAY "ab_array" SPL_V10_HEADERS - TEXT_SPRINT "filename" "rearrange_spl" - END - DEFAULT - PATCH_FAIL "~%DEST_FILE%~" - END - PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN - PATCH_IF SHORT_AT ("%ab_off%" + 0x1E) > 1 BEGIN - GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" SPL_V10_HEAD_EFFECTS - PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN - PATCH_MATCH SHORT_AT "%fx_off%" WITH - 134 BEGIN - INNER_ACTION BEGIN - ACTION_IF ("%DEST_EXT%" STRING_EQUAL_CASE "itm") BEGIN - OUTER_SET "count_itm" += 1 - APPEND_OUTER "%MOD_FOLDER%/%filename%.txt" "%count_itm%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" UNLESS "%count_itm%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" - END ELSE BEGIN - OUTER_SET "count_spl" += 1 - APPEND_OUTER "%MOD_FOLDER%/%filename%.txt" "%count_spl%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" UNLESS "%count_spl%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" - END - END - END - DEFAULT - END - END - END - END - BUT_ONLY_IF_IT_CHANGES -END -*/ \ No newline at end of file diff --git a/eefixpack/files/tph/luke/7eyes/poison.tph b/eefixpack/files/tph/luke/7eyes/poison.tph deleted file mode 100644 index 15735903..00000000 --- a/eefixpack/files/tph/luke/7eyes/poison.tph +++ /dev/null @@ -1,162 +0,0 @@ -DEFINE_ACTION_FUNCTION "POISON" -BEGIN - /* - **************************************************************************************** - ***************************************** ITM files ************************************ - **************************************************************************************** - */ - - WITH_SCOPE BEGIN - ACTION_MATCH 1 WITH - (GAME_IS ~bgee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - "wand12" , "-1" , "1=>0" => "" // Wand of Cursing - END - END - (GAME_IS ~bg2ee eet~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - END - END - (GAME_IS ~iwdee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - //"cwszomb" -- fixed elsewhere - "kris" , "-1" , "2,3,4,5" => "kris" // Bone Kris of Black Ichor +2 - "poison" , "-1" , "2,3,4,6" => "poison" // Should EYEVENOM also block that Constitution loss...? Guess so...? (see here => https://www.gibberlings3.net/forums/topic/35652-removing-that-dang-spinny-head-animation/?do=findComment&comment=312015) - //"spsatt[1-5]" -- Should that op177 effect be removed...? - END - END - DEFAULT - FAIL "Game not supported" - END - /* Main */ - ACTION_PHP_EACH "patch_data" AS "x" => "y" BEGIN - COPY_EXISTING "%x_0%.itm" "override" - // Transfer effects onto a new SPL file (if needed) - PATCH_IF ("%y%" STRING_COMPARE_CASE "") BEGIN - LAUNCH_PATCH_FUNCTION "gt_extract_effects_as_subspell" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "subspell_resref" = "%y%" - "extract" = "%x_2%" - END - END ELSE BEGIN - LAUNCH_PATCH_FUNCTION "gt_permute_effects" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "permutation" = "%x_2%" - END - END - BUT_ONLY_IF_IT_CHANGES - END - END - - /* - **************************************************************************************** - ***************************************** SPL files ************************************ - **************************************************************************************** - */ - - WITH_SCOPE BEGIN - ACTION_MATCH 1 WITH - (GAME_IS ~bgee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - END - END - (GAME_IS ~bg2ee eet~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - END - END - (GAME_IS ~iwdee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - "spcl422" , 3 , "7=>0,6=>0" => "" - "%WISH_POISON%" , "-1" , "5=>2" => "" // Wish - //CLERIC_DOLOROUS_DECAY - "%TRAP_POISON_PARALYZATION_DARTS%" , "-1" , "3,4" => "%TRAP_POISON_PARALYZATION_DARTS%B" - "%TRAP_POISON_CONFUSION_DARTS%" , "-1" , "3,4" => "%TRAP_POISON_CONFUSION_DARTS%B" - END - END - DEFAULT - FAIL "Game not supported" - END - /* Main */ - ACTION_PHP_EACH "patch_data" AS "x" => "y" BEGIN - COPY_EXISTING "%x_0%.spl" "override" - // Transfer effects onto a new SPL file (if needed) - PATCH_IF ("%y%" STRING_COMPARE_CASE "") BEGIN - LAUNCH_PATCH_FUNCTION "gt_extract_effects_as_subspell" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "subspell_resref" = "%y%" - "extract" = "%x_2%" - END - END ELSE BEGIN - LAUNCH_PATCH_FUNCTION "gt_permute_effects" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "permutation" = "%x_2%" - END - END - BUT_ONLY_IF_IT_CHANGES - END - END -END - -///////////////////////////////////////////////////////////////// -/* - -Collect SPL/ITM files to check - -*/ -////////////////////////////////////////////////////////////////// - -/* -WITH_SCOPE BEGIN - OUTER_SET "count_spl" = 0 - OUTER_SET "count_itm" = 0 - COPY_EXISTING_REGEXP - "^.+\.\(spl\|itm\)$" "override" - PATCH_MATCH "%DEST_EXT%" WITH - "itm" BEGIN - GET_OFFSET_ARRAY "ab_array" ITM_V10_HEADERS - TEXT_SPRINT "filename" "rearrange_itm" - END - "spl" BEGIN - GET_OFFSET_ARRAY "ab_array" SPL_V10_HEADERS - TEXT_SPRINT "filename" "rearrange_spl" - END - DEFAULT - PATCH_FAIL "~%DEST_FILE%~" - END - PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN - PATCH_IF SHORT_AT ("%ab_off%" + 0x1E) > 1 BEGIN - GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" SPL_V10_HEAD_EFFECTS - PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN - PATCH_MATCH SHORT_AT "%fx_off%" WITH - 25 BEGIN - INNER_ACTION BEGIN - ACTION_IF ("%DEST_EXT%" STRING_EQUAL_CASE "itm") BEGIN - OUTER_SET "count_itm" += 1 - APPEND_OUTER "%MOD_FOLDER%/%filename%.txt" "%count_itm%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" UNLESS "%count_itm%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" - END ELSE BEGIN - OUTER_SET "count_spl" += 1 - APPEND_OUTER "%MOD_FOLDER%/%filename%.txt" "%count_spl%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" UNLESS "%count_spl%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" - END - END - END - DEFAULT - END - END - END - END - BUT_ONLY_IF_IT_CHANGES -END -*/ \ No newline at end of file diff --git a/eefixpack/files/tph/luke/7eyes/power_word_stun.tph b/eefixpack/files/tph/luke/7eyes/power_word_stun.tph deleted file mode 100644 index a7160b4f..00000000 --- a/eefixpack/files/tph/luke/7eyes/power_word_stun.tph +++ /dev/null @@ -1,152 +0,0 @@ -DEFINE_ACTION_FUNCTION "POWER_WORD_STUN" -BEGIN - /* - **************************************************************************************** - ***************************************** ITM files ************************************ - **************************************************************************************** - */ - - WITH_SCOPE BEGIN - ACTION_MATCH 1 WITH - (GAME_IS ~bgee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - END - END - (GAME_IS ~bg2ee eet~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - END - END - (GAME_IS ~iwdee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - END - END - DEFAULT - FAIL "Game not supported" - END - /* Main */ - ACTION_PHP_EACH "patch_data" AS "x" => "y" BEGIN - COPY_EXISTING "%x_0%.itm" "override" - // Transfer effects onto a new SPL file (if needed) - PATCH_IF ("%y%" STRING_COMPARE_CASE "") BEGIN - LAUNCH_PATCH_FUNCTION "gt_extract_effects_as_subspell" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "subspell_resref" = "%y%" - "extract" = "%x_2%" - END - END ELSE BEGIN - LAUNCH_PATCH_FUNCTION "gt_permute_effects" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "permutation" = "%x_2%" - END - END - BUT_ONLY_IF_IT_CHANGES - END - END - - /* - **************************************************************************************** - ***************************************** SPL files ************************************ - **************************************************************************************** - */ - - WITH_SCOPE BEGIN - ACTION_MATCH 1 WITH - (GAME_IS ~bgee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - END - END - (GAME_IS ~bg2ee eet~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - END - END - (GAME_IS ~iwdee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - END - END - DEFAULT - FAIL "Game not supported" - END - /* Main */ - ACTION_PHP_EACH "patch_data" AS "x" => "y" BEGIN - COPY_EXISTING "%x_0%.spl" "override" - // Transfer effects onto a new SPL file (if needed) - PATCH_IF ("%y%" STRING_COMPARE_CASE "") BEGIN - LAUNCH_PATCH_FUNCTION "gt_extract_effects_as_subspell" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "subspell_resref" = "%y%" - "extract" = "%x_2%" - END - END ELSE BEGIN - LAUNCH_PATCH_FUNCTION "gt_permute_effects" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "permutation" = "%x_2%" - END - END - BUT_ONLY_IF_IT_CHANGES - END - END -END - -///////////////////////////////////////////////////////////////// -/* - -Collect SPL/ITM files to check - -*/ -////////////////////////////////////////////////////////////////// - -/* -WITH_SCOPE BEGIN - OUTER_SET "count_spl" = 0 - OUTER_SET "count_itm" = 0 - COPY_EXISTING_REGEXP - "^.+\.\(spl\|itm\)$" "override" - PATCH_MATCH "%DEST_EXT%" WITH - "itm" BEGIN - GET_OFFSET_ARRAY "ab_array" ITM_V10_HEADERS - TEXT_SPRINT "filename" "rearrange_itm" - END - "spl" BEGIN - GET_OFFSET_ARRAY "ab_array" SPL_V10_HEADERS - TEXT_SPRINT "filename" "rearrange_spl" - END - DEFAULT - PATCH_FAIL "~%DEST_FILE%~" - END - PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN - PATCH_IF SHORT_AT ("%ab_off%" + 0x1E) > 1 BEGIN - GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" SPL_V10_HEAD_EFFECTS - PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN - PATCH_MATCH SHORT_AT "%fx_off%" WITH - 210 BEGIN - INNER_ACTION BEGIN - ACTION_IF ("%DEST_EXT%" STRING_EQUAL_CASE "itm") BEGIN - OUTER_SET "count_itm" += 1 - APPEND_OUTER "%MOD_FOLDER%/%filename%.txt" "%count_itm%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" UNLESS "%count_itm%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" - END ELSE BEGIN - OUTER_SET "count_spl" += 1 - APPEND_OUTER "%MOD_FOLDER%/%filename%.txt" "%count_spl%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" UNLESS "%count_spl%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" - END - END - END - DEFAULT - END - END - END - END - BUT_ONLY_IF_IT_CHANGES -END -*/ \ No newline at end of file diff --git a/eefixpack/files/tph/luke/7eyes/silence.tph b/eefixpack/files/tph/luke/7eyes/silence.tph deleted file mode 100644 index a5b97c78..00000000 --- a/eefixpack/files/tph/luke/7eyes/silence.tph +++ /dev/null @@ -1,157 +0,0 @@ -DEFINE_ACTION_FUNCTION "SILENCE" -BEGIN - /* - **************************************************************************************** - ***************************************** ITM files ************************************ - **************************************************************************************** - */ - - WITH_SCOPE BEGIN - ACTION_MATCH 1 WITH - (GAME_IS ~bgee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - "wand12" , "-1" , "1=>0" => "" // Wand of Cursing - END - END - (GAME_IS ~bg2ee eet~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - END - END - (GAME_IS ~iwdee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - "trnbolt" , "-1" , "0,1,2,3,4,5,6,7" => "trnbolt" // Tranquil Bolt +1 - "wand19" , "-1" , "8,9,10,11" => "wand19a" // Wand of Cursing - END - END - DEFAULT - FAIL "Game not supported" - END - /* Main */ - ACTION_PHP_EACH "patch_data" AS "x" => "y" BEGIN - COPY_EXISTING "%x_0%.itm" "override" - // Transfer effects onto a new SPL file (if needed) - PATCH_IF ("%y%" STRING_COMPARE_CASE "") BEGIN - LAUNCH_PATCH_FUNCTION "gt_extract_effects_as_subspell" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "subspell_resref" = "%y%" - "extract" = "%x_2%" - END - END ELSE BEGIN - LAUNCH_PATCH_FUNCTION "gt_permute_effects" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "permutation" = "%x_2%" - END - END - BUT_ONLY_IF_IT_CHANGES - END - END - - /* - **************************************************************************************** - ***************************************** SPL files ************************************ - **************************************************************************************** - */ - - WITH_SCOPE BEGIN - ACTION_MATCH 1 WITH - (GAME_IS ~bgee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - END - END - (GAME_IS ~bg2ee eet~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - END - END - (GAME_IS ~iwdee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - "%WIZARD_POWER_WORD_SILENCE%" , "-1" , "1=>0" => "" - "spwish35", "-1" , "1=>0" => "" // Power Word, Silence - END - END - DEFAULT - FAIL "Game not supported" - END - /* Main */ - ACTION_PHP_EACH "patch_data" AS "x" => "y" BEGIN - COPY_EXISTING "%x_0%.spl" "override" - // Transfer effects onto a new SPL file (if needed) - PATCH_IF ("%y%" STRING_COMPARE_CASE "") BEGIN - LAUNCH_PATCH_FUNCTION "gt_extract_effects_as_subspell" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "subspell_resref" = "%y%" - "extract" = "%x_2%" - END - END ELSE BEGIN - LAUNCH_PATCH_FUNCTION "gt_permute_effects" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "permutation" = "%x_2%" - END - END - BUT_ONLY_IF_IT_CHANGES - END - END -END - -///////////////////////////////////////////////////////////////// -/* - -Collect SPL/ITM files to check - -*/ -////////////////////////////////////////////////////////////////// - -/* -WITH_SCOPE BEGIN - OUTER_SET "count_spl" = 0 - OUTER_SET "count_itm" = 0 - COPY_EXISTING_REGEXP - "^.+\.\(spl\|itm\)$" "override" - PATCH_MATCH "%DEST_EXT%" WITH - "itm" BEGIN - GET_OFFSET_ARRAY "ab_array" ITM_V10_HEADERS - TEXT_SPRINT "filename" "rearrange_itm" - END - "spl" BEGIN - GET_OFFSET_ARRAY "ab_array" SPL_V10_HEADERS - TEXT_SPRINT "filename" "rearrange_spl" - END - DEFAULT - PATCH_FAIL "~%DEST_FILE%~" - END - PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN - PATCH_IF SHORT_AT ("%ab_off%" + 0x1E) > 1 BEGIN - GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" SPL_V10_HEAD_EFFECTS - PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN - PATCH_MATCH SHORT_AT "%fx_off%" WITH - 38 BEGIN - INNER_ACTION BEGIN - ACTION_IF ("%DEST_EXT%" STRING_EQUAL_CASE "itm") BEGIN - OUTER_SET "count_itm" += 1 - APPEND_OUTER "%MOD_FOLDER%/%filename%.txt" "%count_itm%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" UNLESS "%count_itm%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" - END ELSE BEGIN - OUTER_SET "count_spl" += 1 - APPEND_OUTER "%MOD_FOLDER%/%filename%.txt" "%count_spl%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" UNLESS "%count_spl%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" - END - END - END - DEFAULT - END - END - END - END - BUT_ONLY_IF_IT_CHANGES -END -*/ \ No newline at end of file diff --git a/eefixpack/files/tph/luke/7eyes/stun.tph b/eefixpack/files/tph/luke/7eyes/stun.tph deleted file mode 100644 index 56c846bf..00000000 --- a/eefixpack/files/tph/luke/7eyes/stun.tph +++ /dev/null @@ -1,236 +0,0 @@ -DEFINE_ACTION_FUNCTION "STUN" -BEGIN - /* - **************************************************************************************** - ***************************************** ITM files ************************************ - **************************************************************************************** - */ - - WITH_SCOPE BEGIN - ACTION_MATCH 1 WITH - (GAME_IS ~bgee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - "bdhalb01" , "-1" , "2,1,3,4,5" => "bdhalb00" // Storm Pike +2 - "blun41" , "-1" , "0,1,2,3" => "blun41" // The Stupefier +1 - "carrio" , "-1" , "1,0" => "carrio" // Ghoul hand - "cornugon" , "-1" , "2,1" => "cornugon" // Attack - "dart03" , "-1" , "1,0,2" => "dart03" // Dart of Stunning - "demcor01" , "-1" , "1,0" => "demcor01" // Attack - "deva" , "-1" , "14,13,15" => "deva" // Mace - "dwbolt02" , "-1" , "0,1,2" => "dwbolt02" // Drow Bolt of Stunning +1 - "elemhydr" , "-1" , "13,12,14" => "elemhydr" // Attack (Olhydra) - "ghoulc" , "-1" , "1,0" => "ghoulc" // Ghoul hand - "goltome4" , "-1" , "1,0,3" => "goltome4" // Attack - "gorsnake" , "-1" , "1,0,2" => "gorsnake" // Skull - "icetrl" , "-1" , "2,1" => "icetrlst" // Attack - "paracarr" , "-1" , "1,0,2" => "paracarr" // Ghoul hand - "paraghas" , "-1" , "1,0,2,3,4" => "paraghas" // Ghoul Touch - "paraghou" , "-1" , "1,0,2,3,4" => "paraghou" // Ghoul Touch - "sahbolt" , "-1" , "0,1,2" => "sahbolt" // Paralytic Bolt +1 - "spermel" , "-1" , "12,11,13" => "spermel" // Spear - "wand04" , "-1" , "1,0,2,3,4,5" => "wand04" // Wand of Paralyzation - END - END - (GAME_IS ~bg2ee eet~) BEGIN END - (GAME_IS ~iwdee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - "axemino" , "-1" , "0,1,2,3" => "axemino" // Axe of the Minotaur Lord +4 - "cwreve" , "-1" , "0,1,2,3,4,5" => "cwreve" // Attack - "dart03" , "-1" , "0,1,2,3" => "dart03" // Dart of Stunning +1 - "dazer" , "-1" , "0,1,2,3" => "dazer" // Dazer - "deva" , "-1" , "14,15,16" => "deva" // Mace of Disruption +2 - "icegolem" , "-1" , "1,0,2,3" => "icegolem" // Skull - "icetrl" , "-1" , "1,2,3" => "icetrlst" // Attack - "poq2-16" , "-1" , "0,1,2,3" => "poq2-16" // - "sflail" , "-1" , "22,23,24,25,26,27,28,29,30" => "sflail1" // Flail (Stun: 6 seconds) - "sflail" , "-1" , "23,24,25,26,27,28,29,30,31" => "sflail2" // Flail (Stun: 12 seconds) - "sflail" , "-1" , "24,25,26,27,28,29,30,31,32" => "sflail3" // Flail (Stun: 18 seconds) - "sflail" , "-1" , "25,26,27,28,29,30,31,32,33" => "sflail4" // Flail (Stun: 24 seconds) - "u1ham3b" , "-1" , "1,2,3,4" => "u1ham3b" // War Hammer of Sparks +2 - "u1hax2a" , "-1" , "1,2,3,4" => "u1hax2a" // Charged Battle Axe +2 - "u1hax4b" , "-1" , "1,0,2,3" => "u1hax4b" // Benorg's Truth +3 - "uarow3b" , "-1" , "0,1,2,3" => "uarow3b" // Hammer Arrow +1 - "ubswd5b" , "-1" , "1,2,3,4" => "ubswd5b" // Bastard Sword +3: Incinerator - "udart1a" , "-1" , "0,1,2,3" => "udart1a" // Hammer Dart - "uflal2b" , "-1" , "0,1,2,3" => "uflal2b" // Hammer Flail +2 - "uflal5a" , "-1" , "1,2,3,4" => "uflal5a" // Shocking Flail +4 - "uhalb4a" , "-1" , "1,2,3,4" => "uhalb4a" // Doom Halberd +3 - "uhalb4b" , "-1" , "0,1,2,3" => "uhalb4b" // Star-Forged Halberd +3 - "ulswd5b" , "-1" , "1,2,3,4" => "ulswd5b" // Bhaal's Fire +3 - "umstr2b" , "-1" , "1,2,3,4" => "umstr2b" // Lesser Static Star +1 - "umstr3a" , "-1" , "0,1,2,3" => "umstr3a" // Morning Star +2: Hammer - "umstr5a" , "-1" , "0,1,2,3" => "umstr5a" // Morning Star of Action +4 - "usswd5b" , "-1" , "1,2,3,4" => "usswd5b" // Short Sword +4: Hammer - "utswd2b" , "-1" , "0,1,2,3" => "utswd2b" // Two-Handed Sword +1: Hammering - "utswd3a" , "-1" , "0,1,2,3" => "utswd3a" // Two-Handed Sword +2: Hammering - "utswd5a" , "-1" , "1,2,3,4" => "utswd5a" // Static Two-Handed Sword +4 - "wand04" , "-1" , "1,2,3,4,5,6" => "wand04" // Wand of Paralyzation - "xclub" , "-1" , "0,1,2,3" => "xclub" // Dazer - END - END - DEFAULT - FAIL "Game not supported" - END - /* Main */ - ACTION_PHP_EACH "patch_data" AS "x" => "y" BEGIN - COPY_EXISTING "%x_0%.itm" "override" - // Transfer effects onto a new SPL file (if needed) - PATCH_IF ("%y%" STRING_COMPARE_CASE "") BEGIN - LAUNCH_PATCH_FUNCTION "gt_extract_effects_as_subspell" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "subspell_resref" = "%y%" - "extract" = "%x_2%" - END - END ELSE BEGIN - LAUNCH_PATCH_FUNCTION "gt_permute_effects" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "permutation" = "%x_2%" - END - END - BUT_ONLY_IF_IT_CHANGES - END - END - - /* - **************************************************************************************** - ***************************************** SPL files ************************************ - **************************************************************************************** - */ - - WITH_SCOPE BEGIN - ACTION_MATCH 1 WITH - (GAME_IS ~bgee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - "bddcor01" , "-1" , "6=>4" => "" // used by Cornugon - //"bdhelm17" , "-1" => "override" // used by Voghiln's Helmet - "bdsha06a" , "-1" , "2=>1" => "" // used by Bear Spirit - "bdshriek" , "-1" , "2,3,4,5" => "bdshrie0" // Piercing Shriek - "spcl123" , 3 , "4=>3" => "" // - //"spdr101" , 4 , "1,2,3,4,5,6,7" => "spdr101a" // Chromatic Orb (AVENGER) - //"spdr101" , 6 , "1,2,3,4,5,6,7" => "spdr101b" // Chromatic Orb (AVENGER) - "%BOMBARDIER_BEETLE_CLOUD%" , "-1" , "2,3,4" => "%BOMBARDIER_BEETLE_CLOUD%A" - "%PSIONIC_INFLICT_PAIN%" , "-1" , "1=>0" => "" - "%NOSAVE_PSIONIC_BLAST%" , "-1" , "1=>0" => "" - "%SILVER_DRAGON_BREATH_PARALIZATION%" , "-1" , "2=>1" => "" - "%BRAIN_PSIONIC_BLAST%" , "-1" , "1,0,2,4" => "%BRAIN_PSIONIC_BLAST%A" - //"%PSIONIC_EGOWHIP%" , "-1" => "" - "%MEPHIT_WATER_JET%" , "-1" , "1,2,3" => "%MEPHIT_WATER_JET%A" - "%MEPHIT_WATER_JET%" , "-1" , "2=>0" => "" - "%MEPHIT_RAINSTORM%" , "-1" , "2,1,3,4" => "%MEPHIT_RAINSTORM%A" - "%MEPHIT_SALT_CRYSTAL%" , "-1" , "2,1,3,4" => "%MEPHIT_SALT_CRYSTAL%A" - "%ULITHARID_PSIONIC_BLAST%" , "-1" , "1=>0" => "" - "%MIND_FLAYER_PSIONIC_BLAST%" , "-1" , "1=>0" => "" - "%CLERIC_SYMBOL_STUN%" , "-1" , "1=>0" => "" - //"%TRAP_CHROMATIC_ORB%" , "-1" => "" - //"%WIZARD_CHROMATIC_ORB%" , 4 , "" => "%WIZARD_CHROMATIC_ORB%A" - //"%WIZARD_CHROMATIC_ORB%" , 6 => "%WIZARD_CHROMATIC_ORB%B" - "%WIZARD_SYMBOL_STUN%" , "-1" , "1=>0" => "" - //"%WIZARD_NPC_SYMBOL_STUN%" , "-1" => "" - "spwm152" , "-1" , "4=>0" => "" // Polymorph Other (wild surge) - END - END - (GAME_IS ~bg2ee eet~) BEGIN END - (GAME_IS ~iwdee~) BEGIN - ACTION_DEFINE_ASSOCIATIVE_ARRAY "patch_data" BEGIN - // parent resref , ability , permutation/extract => child resref - "bdsha06a" , "-1" , "2=>1" => "" // used by Bear Spirit - "sareveff" , "-1" , "2=>1" => "" // Sarevok special attack - "%BARD_SONG_SIREN%" , "-1" , "7=>6" => "" // The Siren's Yearning—Enthralls Creatures - "spcl123" , 3 , "5=>3" => "" // - "%INNATE_MOURNFUL_WAIL%" , "-1" , "3=>7" => "" - "%INNATE_DRAGON_WING_BUFFET%" , "-1" , "6,7,8" => "%INNATE_DRAGON_WING_BUFFET%B" - "%INNATE_HARPY_WAIL_INTERNAL%" , "-1" , "6,7" => "%INNATE_HARPY_WAIL_INTERNAL%B" - //"%INNATE_MYCONID_SPORES%" , "-1" , "9=>0" => "" - //"%INNATE_BOMBARDIER_BEETLE_CLOUD%" , "-1" , "2,3,4,8" => "%INNATE_BOMBARDIER_BEETLE_CLOUD%A" - //"%CLERIC_SMASHING_WAVE%" , "-1" , "5,6,10" => "%CLERIC_SMASHING_WAVE%B" - "%CLERIC_WHIRLWIND%" , "-1" , "6,7,8" => "%CLERIC_WHIRLWIND%B" - "%CLERIC_SYMBOL_OF_HOPELESSNESS%" , "-1" , "3=>1" => "" - "%WIZARD_ICELANCE%" , "-1" , "1,2,3" => "%WIZARD_ICELANCE%A" - "%WIZARD_EMOTION_HOPELESSNESS%" , "-1" , "3=>1" => "" - //"%WIZARD_GREAT_SHOUT%" , "-1" , "7,8,11,13,14,16" => "%WIZARD_GREAT_SHOUT%A" // disabled by cam - david's immunity review already breaks this into subspells - END - END - DEFAULT - FAIL "Game not supported" - END - /* Main */ - ACTION_PHP_EACH "patch_data" AS "x" => "y" BEGIN - COPY_EXISTING "%x_0%.spl" "override" - // Transfer effects onto a new SPL file (if needed) - PATCH_IF ("%y%" STRING_COMPARE_CASE "") BEGIN - LAUNCH_PATCH_FUNCTION "gt_extract_effects_as_subspell" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "subspell_resref" = "%y%" - "extract" = "%x_2%" - END - END ELSE BEGIN - LAUNCH_PATCH_FUNCTION "gt_permute_effects" - INT_VAR - "ability" = "%x_1%" - STR_VAR - "permutation" = "%x_2%" - END - END - BUT_ONLY_IF_IT_CHANGES - END - END -END - -///////////////////////////////////////////////////////////////// -/* - -Collect SPL/ITM files to check - -*/ -////////////////////////////////////////////////////////////////// - -/* -WITH_SCOPE BEGIN - OUTER_SET "count_spl" = 0 - OUTER_SET "count_itm" = 0 - COPY_EXISTING_REGEXP - "^.+\.\(spl\|itm\)$" "override" - PATCH_MATCH "%DEST_EXT%" WITH - "itm" BEGIN - GET_OFFSET_ARRAY "ab_array" ITM_V10_HEADERS - TEXT_SPRINT "filename" "rearrange_itm" - END - "spl" BEGIN - GET_OFFSET_ARRAY "ab_array" SPL_V10_HEADERS - TEXT_SPRINT "filename" "rearrange_spl" - END - DEFAULT - PATCH_FAIL "~%DEST_FILE%~" - END - PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN - PATCH_IF SHORT_AT ("%ab_off%" + 0x1E) > 1 BEGIN - GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" SPL_V10_HEAD_EFFECTS - PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN - PATCH_MATCH SHORT_AT "%fx_off%" WITH - 45 BEGIN - INNER_ACTION BEGIN - ACTION_IF ("%DEST_EXT%" STRING_EQUAL_CASE "itm") BEGIN - OUTER_SET "count_itm" += 1 - APPEND_OUTER "%filename%.txt" "%count_itm%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" UNLESS "%count_itm%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" - END ELSE BEGIN - OUTER_SET "count_spl" += 1 - APPEND_OUTER "%filename%.txt" "%count_spl%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" UNLESS "%count_spl%) ~%DEST_FILE%~ => ability #%ab_ind%, position #%fx_ind%" - END - END - END - DEFAULT - END - END - END - END - BUT_ONLY_IF_IT_CHANGES -END -*/ \ No newline at end of file diff --git a/eefixpack/files/tph/luke/false_dawn.tph b/eefixpack/files/tph/luke/false_dawn.tph new file mode 100644 index 00000000..b49061b9 --- /dev/null +++ b/eefixpack/files/tph/luke/false_dawn.tph @@ -0,0 +1,37 @@ +DEFINE_ACTION_FUNCTION "CLERIC_FALSE_DAWN" +BEGIN + COPY_EXISTING "%CLERIC_FALSE_DAWN%.spl" "override" // sppr609 + GET_OFFSET_ARRAY "ab_array" SPL_V10_HEADERS + PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN + GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" SPL_V10_HEAD_EFFECTS + PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN + PATCH_MATCH SHORT_AT "%fx_off%" WITH + 326 WHEN (SLONG_AT ("%fx_off%" + 0x4) == IDS_OF_SYMBOL ("splstate" "CONFUSION_IMMUNITY")) AND (LONG_AT ("%fx_off%" + 0x8) == 111) BEGIN + WRITE_SHORT "%fx_off%" 146 // Cast spell -- intentionally do not check for CONFUSION_IMMUNITY since this spell is meant to ignore it... + WRITE_LONG ("%fx_off%" + 0x4) 0 // param1 -- unused + WRITE_LONG ("%fx_off%" + 0x8) 1 // Cast instantly (caster level) + READ_ASCII ("%fx_off%" + 0x14) "subspell" + END + DEFAULT + END + END + END + BUT_ONLY_IF_IT_CHANGES + // + COPY_EXISTING "%subspell%.spl" "override" + PATCH_IF (MOD_IS_INSTALLED "EEex.tp2" 0) BEGIN + LPF "ALTER_EFFECT" INT_VAR "check_globals" = 0 "match_opcode" = 177 "opcode" = 128 "parameter1" = 0 "parameter2" = 0 "savingthrow" = BIT23 STR_VAR "match_resource" = "dawncon" "resource" = "" END // EEex: savetype BIT23 (bypass op101) + END ELSE BEGIN + LPF "ALTER_EFFECT" INT_VAR "check_globals" = 0 "match_opcode" = 177 STR_VAR "match_resource" = "dawncon" "resource" = "%CLERIC_FALSE_DAWN%" END + INNER_ACTION BEGIN + CREATE "eff" "%CLERIC_FALSE_DAWN%" + WRITE_LONG 0x10 182 // !EEex: Apply EFF while ITM (since this opcode is bugged, we abuse it in order to bypass op101) + WRITE_SHORT 0x2C 100 // probability1 + WRITE_ASCII 0x70 "dawncon" #8 // real EFF applying Confusion (op128) + END + END + LPF "ALTER_EFFECT" INT_VAR "check_globals" = 0 "match_opcode" = 177 "opcode" = 215 "parameter1" = 0 "parameter2" = 1 STR_VAR "match_resource" = "dawnvis" "resource" = "dawnvfx" END // Play visual effect (Over target (attached)) + BUT_ONLY + // + COPY_EXISTING "spconfus.vvc" "override\dawnvfx.vvc" // a copy of "spconfus.vvc" (again, undead are normally immune to "spconfus.vvc", so we make a copy of it) +END \ No newline at end of file diff --git a/eefixpack/files/tph/luke/holy_unholy_word.tph b/eefixpack/files/tph/luke/holy_unholy_word.tph index e233b041..81cd8a6f 100644 --- a/eefixpack/files/tph/luke/holy_unholy_word.tph +++ b/eefixpack/files/tph/luke/holy_unholy_word.tph @@ -1,15 +1,12 @@ // This function moves Holy / Unholy Word so as to use 324 magic rather than those messy 177s. -// The new implementation takes into account the "7eyes.2da" thing... More on that on a future pull request... +// This is a "eefixpack\files\tph\luke\7eyes\7eyes.tph" follow-up... DEFINE_ACTION_FUNCTION "CLERIC_HOLY_UNHOLY_WORD" BEGIN WITH_SCOPE BEGIN COPY_EXISTING "%CLERIC_HOLY_WORD%.spl" "override" "%CLERIC_UNHOLY_WORD%.spl" "override" - LPF "DELETE_EFFECT" - INT_VAR - "check_globals" = 0 - "match_opcode" = 177 // Use EFF file - END + LPF "DELETE_EFFECT" INT_VAR "check_globals" = 0 "match_opcode" = 177 END // Use EFF file + // PATCH_WITH_SCOPE BEGIN PATCH_MATCH "%DEST_RES%" WITH "%CLERIC_HOLY_WORD%" BEGIN @@ -29,147 +26,72 @@ BEGIN END DEFAULT END - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 324 // Immunity to resource and message - "target" = 2 // Preset target - "power" = 7 - "parameter2" = "%index%" - "resist_dispel" = BIT1 - STR_VAR - "resource" = "%DEST_RES%" - END + LPF "ADD_SPELL_EFFECT" INT_VAR "insert_point" = 0 "opcode" = 324 "target" = 2 "power" = 7 "parameter2" = "%index%" "resist_dispel" = BIT1 STR_VAR "resource" = "%DEST_RES%" END // Immunity to resource and message END // Less than 4 Hit Dice / Levels => Death - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 13 // Kill target - "target" = 2 // Preset target - "power" = 7 - "timing" = 1 - "parameter2" = BIT2 // Normal death - "resist_dispel" = BIT0 - "dicenumber" = 3 - END + LPF "ADD_SPELL_EFFECT" INT_VAR "opcode" = 13 "target" = 2 "power" = 7 "timing" = 1 "parameter2" = BIT2 "resist_dispel" = BIT0 "dicenumber" = 3 END // Kill target (Normal death) // 4 to 7 Hit Dice / Levels => Stunned for 1 turn - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 45 // Stun - "target" = 2 // Preset target - "power" = 7 - "duration" = 60 // 1 turn - "resist_dispel" = BIT0 - "dicenumber" = 7 - "dicesize" = 4 - END - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 139 // Display string - "target" = 2 // Preset target - "power" = 7 - "parameter1" = "%game_is_bgee%" ? 26050 : 1280 - "timing" = 1 - "resist_dispel" = BIT0 - "dicenumber" = 7 - "dicesize" = 4 + PATCH_WITH_SCOPE BEGIN + GET_OFFSET_ARRAY "ab_array" SPL_V10_HEADERS + PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN + GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" SPL_V10_HEAD_EFFECTS + PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN + PATCH_MATCH SHORT_AT "%fx_off%" WITH + 326 WHEN (SLONG_AT ("%fx_off%" + 0x4) == IDS_OF_SYMBOL ("splstate" "STUN_IMMUNITY")) AND (LONG_AT ("%fx_off%" + 0x8) == 111) BEGIN + READ_ASCII ("%fx_off%" + 0x14) "subspell" + END + DEFAULT + END + END + END + INNER_ACTION BEGIN + COPY_EXISTING "%subspell%.spl" "override" + LPF "DELETE_SPELL_EFFECT" INT_VAR "opcode_to_delete" = "-1" END + LPF "ADD_SPELL_EFFECT" INT_VAR "opcode" = 45 "target" = 2 "duration" = 60 "resist_dispel" = BIT0 | BIT1 END // Stun + LPF "ADD_SPELL_EFFECT" INT_VAR "opcode" = 139 "target" = 2 "parameter1" = ("%game_is_bgee%" ? 26050 : 1280) "timing" = 1 "resist_dispel" = BIT0 | BIT1 END // Display string + BUT_ONLY + END END // 8 to 11 Hit Dice / Levels => Slowed for 1 turn with a 75% chance of spell failure - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 40 // Slow - "target" = 2 // Preset target - "power" = 7 - "duration" = 60 // 1 turn - "resist_dispel" = BIT0 - "dicenumber" = 11 - "dicesize" = 8 - END - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 139 // Display string - "target" = 2 // Preset target - "power" = 7 - "parameter1" = 14668 - "timing" = 1 - "resist_dispel" = BIT0 - "dicenumber" = 11 - "dicesize" = 8 - END - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 60 // Casting failure - "target" = 2 // Preset target - "power" = 7 - "parameter1" = 75 - "parameter2" = 0 // Arcane spells - "duration" = 60 // 1 turn - "resist_dispel" = BIT0 - "dicenumber" = 11 - "dicesize" = 8 - END - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 60 // Casting failure - "target" = 2 // Preset target - "power" = 7 - "parameter1" = 75 - "parameter2" = 1 // Divine spells - "duration" = 60 // 1 turn - "resist_dispel" = BIT0 - "dicenumber" = 11 - "dicesize" = 8 - END - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 142 // Display portrait icon - "target" = 2 // Preset target - "power" = 7 - "parameter2" = 105 // Miscast Magic - "duration" = 60 // 1 turn - "resist_dispel" = BIT0 - "dicenumber" = 11 - "dicesize" = 8 - END + LPF "ADD_SPELL_EFFECT" INT_VAR "opcode" = 40 "target" = 2 "power" = 7 "duration" = 60 "resist_dispel" = BIT0 "dicenumber" = 11 "dicesize" = 8 END // Slow + LPF "ADD_SPELL_EFFECT" INT_VAR "opcode" = 139 "target" = 2 "power" = 7 "parameter1" = 14668 "timing" = 1 "resist_dispel" = BIT0 "dicenumber" = 11 "dicesize" = 8 END // Display string + LPF "ADD_SPELL_EFFECT" INT_VAR "opcode" = 60 "target" = 2 "power" = 7 "parameter1" = 75 "parameter2" = 0 "duration" = 60 "resist_dispel" = BIT0 "dicenumber" = 11 "dicesize" = 8 END // Casting failure (Arcane spells) + LPF "ADD_SPELL_EFFECT" INT_VAR "opcode" = 60 "target" = 2 "power" = 7 "parameter1" = 75 "parameter2" = 1 "duration" = 60 "resist_dispel" = BIT0 "dicenumber" = 11 "dicesize" = 8 END // Casting failure (Divine spells) + LPF "ADD_SPELL_EFFECT" INT_VAR "opcode" = 142 "target" = 2 "power" = 7 "parameter2" = 105 "duration" = 60 "resist_dispel" = BIT0 "dicenumber" = 11 "dicesize" = 8 END // Display portrait icon (Miscast Magic) // 12+ Hit Dice / Levels => Deafened for 1 turn with a 50% chance of spell failure - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 80 // Deafness - "target" = 2 // Preset target - "power" = 7 - "duration" = 60 // 1 turn - "resist_dispel" = BIT0 - "dicesize" = 12 - END - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 142 // Display portrait icon - "target" = 2 // Preset target - "power" = 7 - "parameter2" = 112 // Deaf - "duration" = 60 // 1 turn - "resist_dispel" = BIT0 - "dicesize" = 12 + PATCH_WITH_SCOPE BEGIN + GET_OFFSET_ARRAY "ab_array" SPL_V10_HEADERS + PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN + GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" SPL_V10_HEAD_EFFECTS + PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN + PATCH_MATCH SHORT_AT "%fx_off%" WITH + 326 WHEN (SLONG_AT ("%fx_off%" + 0x4) == IDS_OF_SYMBOL ("splstate" "DEAF_IMMUNITY")) AND (LONG_AT ("%fx_off%" + 0x8) == 111) BEGIN + READ_ASCII ("%fx_off%" + 0x14) "subspell" + END + DEFAULT + END + END + END + INNER_ACTION BEGIN + COPY_EXISTING "%subspell%.spl" "override" + LPF "DELETE_SPELL_EFFECT" INT_VAR "opcode_to_delete" = "-1" END + LPF "ADD_SPELL_EFFECT" INT_VAR "opcode" = 80 "target" = 2 "duration" = 60 "resist_dispel" = BIT0 | BIT1 END // Deafness + LPF "ADD_SPELL_EFFECT" INT_VAR "opcode" = 142 "target" = 2 "parameter1" = 112 "duration" = 60 "resist_dispel" = BIT0 | BIT1 END // Display portrait icon + BUT_ONLY + END END // Visual / Cosmetic effects LPF "ADD_SPELL_EFFECT" INT_VAR "opcode" = 61 // Creature RGB color fade - "target" = 2 // Preset target + "target" = 2 "power" = 7 "parameter1" = ("%DEST_RES%" STR_EQ "%CLERIC_HOLY_WORD%") ? (128 << 8) + (128 << 16) + (128 << 24) : (160 << 8) + (32 << 16) + (0 << 24) "parameter2" = 0 + (25 << 16) "timing" = 1 "resist_dispel" = BIT0 END - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 141 // Lighting effects - "target" = 2 // Preset target - "power" = 7 - "parameter2" = 22 // Conjure water - "timing" = 1 - "resist_dispel" = BIT0 - END + LPF "ADD_SPELL_EFFECT" INT_VAR "opcode" = 141 "target" = 2 "power" = 7 "parameter2" = 22 "timing" = 1 "resist_dispel" = BIT0 END // Lighting effects (Conjure water) BUT_ONLY_IF_IT_CHANGES END END \ No newline at end of file diff --git a/eefixpack/files/tph/luke/polymorph_overhaul.tph b/eefixpack/files/tph/luke/polymorph_overhaul.tph index 665d4b98..76b34b5f 100644 --- a/eefixpack/files/tph/luke/polymorph_overhaul.tph +++ b/eefixpack/files/tph/luke/polymorph_overhaul.tph @@ -115,7 +115,9 @@ BEGIN ACTION_CLEAR_ARRAY ~%WIZARD_SHAPECHANGE%~ ACTION_CLEAR_ARRAY ~POLYITEM~ ACTION_CLEAR_ARRAY ~POLYFORM_abort~ - // + // + LAF "ADD_IDS_ENTRY" STR_VAR "idsFile" = "splstate" "identifier" = "POLYMORPH_IMMUNITY" END + // LAUNCH_ACTION_FUNCTION "ADD_SPLPROT_ENTRY" INT_VAR "stat" = IDS_OF_SYMBOL ("STATS" "POLYMORPHED") @@ -213,8 +215,8 @@ BEGIN END // Various remaining Natural Form abilities => all redirected to cast SPINHUMR WITH_SCOPE BEGIN - ACTION_DEFINE_ARRAY "human" BEGIN ~SPIN122~ ~SPIN123~ ~SPIN124~ ~SPIN151~ ~SPWI490~ ~SPWI491~ ~SPIN868~ ~SPCL110~ END - ACTION_PHP_EACH "human" AS "null" => "res_" BEGIN + ACTION_DEFINE_ARRAY "tohuman" BEGIN ~SPIN122~ ~SPIN123~ ~SPIN124~ ~SPIN151~ ~SPWI490~ ~SPWI491~ ~SPIN868~ ~SPCL110~ END + ACTION_PHP_EACH "tohuman" AS "null" => "res_" BEGIN ACTION_TO_LOWER "res_" COPY_EXISTING ~%res_%.spl~ ~override~ LPF "DELETE_EFFECT" END // delete current content @@ -426,61 +428,102 @@ BEGIN // Update "Flame Blade", "Phantom Blade" and the like (i.e., magically created weapons) // This is only relevant when one of those spells is in a Sequencer / Contingency / etc... (since op135 automatically disables arcane/divine spellcasting) WITH_SCOPE BEGIN - COPY_EXISTING_REGEXP ~^.+\.\(spl\|itm\)$~ ~override~ - TO_UPPER "SOURCE_RES" - LPF ~ARRAY_CONTAINS~ - STR_VAR - "array" = "POLYFORM_abort" - "key" = "%SOURCE_RES%" - RET - ~found~ + ACTION_MATCH 1 WITH + GAME_IS "bgee" BEGIN + ACTION_DEFINE_ASSOCIATIVE_ARRAY "magically_created_weapon" BEGIN + "figure01.itm" => "" // Shakti Figurine + // + "ohbpr608.spl" => "" // Harm + "%HELM_SEEKING_SWORD%.spl" => "" + "spdm103.spl" => "" // Ghoul Touch + "spin113.spl" => "" // Spiritual Hammer + "spin202.spl" => "" // Cause Serious Wounds + "%CREATE_YOSHIMO_BLADE%.spl" => "" + "%CLERIC_SHILLELAGH%.spl" => "" + "%CLERIC_FLAME_BLADE%.spl" => "" + "%CLERIC_SPIRITUAL_HAMMER%.spl" => "" + "%CLERIC_CAUSE_SERIOUS_WOUNDS%.spl" => "" + "%CLERIC_CAUSE_CRITICAL_WOUNDS%.spl" => "" + "%CLERIC_SLAY_LIVING%.spl" => "" + "%CLERIC_HARM%.spl" => "" + "%CLERIC_SOL_SEARING_ORB%.spl" => "" + "%CLERIC_ENERGY_BLADES%.spl" => "" + "%WIZARD_SHOCKING_GRASP%.spl" => "" + "%WIZARD_CHILL_TOUCH%.spl" => "" + "%WIZARD_GHOUL_TOUCH%.spl" => "" + "%WIZARD_MELF_METEOR%.spl" => "" + "%WIZARD_PHANTOM_BLADE%.spl" => "" + "%WIZARD_BLACK_BLADE_OF_DISASTER%.spl" => "" + "%WIZARD_ENERGY_BLADES%.spl" => "" + END END - //PATCH_IF !VARIABLE_IS_SET $POLYFORM_abort(~%SOURCE_RES%~) BEGIN - PATCH_IF !("%found%") BEGIN - PATCH_WITH_SCOPE BEGIN - PATCH_MATCH "%DEST_EXT%" WITH - "SPL" BEGIN - GET_OFFSET_ARRAY "ab_array" SPL_V10_HEADERS - END - DEFAULT - GET_OFFSET_ARRAY "ab_array" ITM_V10_HEADERS - END - // Do not apply "CLONE_EFFECT" directly when COPY_EXISTING_REGEXPing - // Make sure the effect you want to clone is present before cloning it (should improve installation times) - PHP_EACH "ab_array" AS "hdr" => "ab_off" BEGIN - LPF "COUNT_V10_HEAD_EFFECTS" - STR_VAR - "opcode" = "111" // Create weapon - RET - "count" - END - PATCH_IF ("%count%") BEGIN - LPF "CLONE_EFFECT" - INT_VAR - //silent = 1 - "check_globals" = 0 - "match_opcode" = 111 // Create weapon - "header" = "%hdr%" - "opcode" = 326 // Apply effects list - "parameter1" = 0 - "parameter2" = $~splprot~(~POLYMORPH=1~) - "timing" = 1 - "duration" = 0 - "special" = 0 - STR_VAR - "resource" = ~SPINHUMW~ - END - END - END + GAME_IS "bg2ee eet" BEGIN + ACTION_DEFINE_ASSOCIATIVE_ARRAY "magically_created_weapon" BEGIN + "figure01.itm" => "" // Shakti Figurine + // + "ohbpr608.spl" => "" // Harm + "%HELM_SEEKING_SWORD%.spl" => "" + "spdm103.spl" => "" // Ghoul Touch + "spin113.spl" => "" // Spiritual Hammer + "spin202.spl" => "" // Cause Serious Wounds + "%CREATE_YOSHIMO_BLADE%.spl" => "" + "%CLERIC_SHILLELAGH%.spl" => "" + "%CLERIC_FLAME_BLADE%.spl" => "" + "%CLERIC_SPIRITUAL_HAMMER%.spl" => "" + "%CLERIC_CAUSE_SERIOUS_WOUNDS%.spl" => "" + "%CLERIC_CAUSE_CRITICAL_WOUNDS%.spl" => "" + "%CLERIC_SLAY_LIVING%.spl" => "" + "%CLERIC_HARM%.spl" => "" + "%CLERIC_SOL_SEARING_ORB%.spl" => "" + "%CLERIC_ENERGY_BLADES%.spl" => "" + "%WIZARD_SHOCKING_GRASP%.spl" => "" + "%WIZARD_CHILL_TOUCH%.spl" => "" + "%WIZARD_GHOUL_TOUCH%.spl" => "" + "%WIZARD_MELF_METEOR%.spl" => "" + "%WIZARD_PHANTOM_BLADE%.spl" => "" + "%WIZARD_BLACK_BLADE_OF_DISASTER%.spl" => "" + "%WIZARD_ENERGY_BLADES%.spl" => "" END END - BUT_ONLY + GAME_IS "iwdee" BEGIN + ACTION_DEFINE_ASSOCIATIVE_ARRAY "magically_created_weapon" BEGIN + "gvalor1.itm" => "" // Gauntlet of Valor + // + "%HELM_SEEKING_SWORD%.spl" => "" + "spdm103.spl" => "" // Ghoul Touch + "%INNATE_ANIMAL_AFFINITY%.spl" => "" + "%CLERIC_SHILLELAGH%.spl" => "" + "%CLERIC_FLAME_BLADE%.spl" => "" + "%CLERIC_SPIRITUAL_HAMMER%.spl" => "" + "%CLERIC_BEAST_CLAW%.spl" => "" + "%CLERIC_MOONBLADE%.spl" => "" + "%CLERIC_STAR_METAL_CUDGEL%.spl" => "" + "%CLERIC_ENERGY_BLADES%.spl" => "" + "%WIZARD_CHILL_TOUCH%.spl" => "" + "%WIZARD_DECASTAVE%.spl" => "" + "%WIZARD_GHOUL_TOUCH%.spl" => "" + "%WIZARD_MELF_METEOR%.spl" => "" + "%WIZARD_PHANTOM_BLADE%.spl" => "" + "%WIZARD_LICH_TOUCH%.spl" => "" + "%WIZARD_DARTS_OF_BONE%.spl" => "" + "%WIZARD_MORDENKAINENS_SWORD%.spl" => "" + "%WIZARD_IRON_BODY%.spl" => "" + "%WIZARD_BLACK_BLADE_OF_DISASTER%.spl" => "" + "%WIZARD_ENERGY_BLADES%.spl" => "" + END + END + DEFAULT + END + // + ACTION_PHP_EACH "magically_created_weapon" AS "file" => "" BEGIN + COPY_EXISTING ~%file%~ ~override~ + LPF "CLONE_EFFECT" INT_VAR "check_globals" = 0 "match_opcode" = 111 "opcode" = 326 "parameter1" = 0 "parameter2" = $~splprot~(~POLYMORPH=1~) "timing" = 1 "duration" = 0 "special" = 0 STR_VAR "resource" = ~SPINHUMW~ END // Apply effects list + BUT_ONLY + END END // Update "Slayer Change"-related scripts WITH_SCOPE BEGIN - COPY_EXISTING - ~uddoor2.bcs~ ~override~ - ~uddoor3.bcs~ ~override~ + COPY_EXISTING_REGEXP ~^uddoor[2-3]\.bcs$~ ~override~ DECOMPILE_AND_PATCH BEGIN REPLACE_TEXTUALLY ~Global("Slayer10","GLOBAL",2)~ ~HasItem("slayerw3",Player1)~ END @@ -748,6 +791,7 @@ BEGIN LPF ~ADD_ITEM_EFFECT~ INT_VAR "type" = 99 "header" "opcode" = 174 "power" "target" = ("%hostile%" ? 2 : 1) "timing" = 1 "resist_dispel" "savingthrow" "probability1" STR_VAR "resource" = ~EFF_P07~ END // Play sound END END + LPF "CLONE_EFFECT" INT_VAR "silent" = 1 "check_globals" = 0 "check_headers" = ("%hostile%" ? 1 : 0) "match_opcode" = 146 "opcode" = 324 "parameter1" = IDS_OF_SYMBOL ("splstate" "POLYMORPH_IMMUNITY") "parameter2" = 110 "timing" = 0 "duration" = 0 "special" = 0 STR_VAR "match_resource" = "spinhumr" "resource" = "%DEST_RES%" END BUT_ONLY END // Polymorph effect moved to subspell if it needs a duration diff --git a/eefixpack/files/tph/luke/redundant_effects.tph b/eefixpack/files/tph/luke/redundant_effects.tph index b4e57bf7..efedfa8a 100644 --- a/eefixpack/files/tph/luke/redundant_effects.tph +++ b/eefixpack/files/tph/luke/redundant_effects.tph @@ -20,6 +20,7 @@ **Opcode 175** - It can naturally provide the "Held" portrait icon +- It can naturally display the "Held" feedback string **Opcode 25** - It can naturally provide the "Poisoned" portrait icon @@ -39,6 +40,10 @@ **Opcode 5** - It can naturally provide the "Charm" / "Dire Charm" / "Domination" portrait icon +- It can naturally display the "Charmed" / "Dire charmed" feedback strings + +**Opcode 157** +- It can naturally paralyze the targeted creature (there is no need to apply a separate op109 effect) */ ////////////////////////////////////////////////////////////////// @@ -145,17 +150,17 @@ BEGIN // Collect opcodes LPF "redundant_effect_helper2" RET_ARRAY "fx_data" END // check redundant effects - PHP_EACH "fx_data" AS "fx_attributes" => "" BEGIN + PHP_EACH "fx_data" AS "fx_attribute" => "" BEGIN PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN PATCH_MATCH SHORT_AT "%fx_off%" WITH - 54 WHEN (SLONG_AT ("%fx_off%" + 0x4) == "-4") AND (SLONG_AT ("%fx_off%" + 0x8) == 0) AND ("%fx_attributes_0%" == 74) BEGIN - PATCH_IF (BYTE_AT ("%fx_off%" + 0x2) == "%fx_attributes_1%") BEGIN - PATCH_IF (BYTE_AT ("%fx_off%" + 0x12) == "%fx_attributes_2%") BEGIN - PATCH_IF (BYTE_AT ("%fx_off%" + 0x13) == "%fx_attributes_3%") BEGIN - PATCH_IF (LONG_AT ("%fx_off%" + 0x1C) == "%fx_attributes_4%") BEGIN - PATCH_IF (LONG_AT ("%fx_off%" + 0x20) == "%fx_attributes_5%") BEGIN - PATCH_IF (LONG_AT ("%fx_off%" + 0x24) == "%fx_attributes_6%") BEGIN - PATCH_IF (SLONG_AT ("%fx_off%" + 0x28) == "%fx_attributes_7%") BEGIN + 54 WHEN (SLONG_AT ("%fx_off%" + 0x4) == "-4") AND (SLONG_AT ("%fx_off%" + 0x8) == 0) AND ("%fx_attribute_0%" == 74) BEGIN + PATCH_IF (BYTE_AT ("%fx_off%" + 0x2) == "%fx_attribute_1%") BEGIN + PATCH_IF (BYTE_AT ("%fx_off%" + 0x12) == "%fx_attribute_2%") BEGIN + PATCH_IF (BYTE_AT ("%fx_off%" + 0x13) == "%fx_attribute_3%") BEGIN + PATCH_IF (LONG_AT ("%fx_off%" + 0x1C) == "%fx_attribute_4%") BEGIN + PATCH_IF (LONG_AT ("%fx_off%" + 0x20) == "%fx_attribute_5%") BEGIN + PATCH_IF (LONG_AT ("%fx_off%" + 0x24) == "%fx_attribute_6%") BEGIN + PATCH_IF (SLONG_AT ("%fx_off%" + 0x28) == "%fx_attribute_7%") BEGIN WRITE_SHORT "%fx_off%" 999 SET "found_here" = 1 END @@ -166,14 +171,14 @@ BEGIN END END END - 139 WHEN ("%game_is_iwdee%") AND (SLONG_AT ("%fx_off%" + 0x4) == 37607) AND ("%fx_attributes_0%" == 25) BEGIN - PATCH_IF (BYTE_AT ("%fx_off%" + 0x2) == "%fx_attributes_1%") BEGIN - PATCH_IF (BYTE_AT ("%fx_off%" + 0x12) == "%fx_attributes_2%") BEGIN - PATCH_IF (BYTE_AT ("%fx_off%" + 0x13) == "%fx_attributes_3%") BEGIN - PATCH_IF (LONG_AT ("%fx_off%" + 0x1C) == "%fx_attributes_4%") BEGIN - PATCH_IF (LONG_AT ("%fx_off%" + 0x20) == "%fx_attributes_5%") BEGIN - PATCH_IF (LONG_AT ("%fx_off%" + 0x24) == "%fx_attributes_6%") BEGIN - PATCH_IF (SLONG_AT ("%fx_off%" + 0x28) == "%fx_attributes_7%") BEGIN + 109 WHEN ("%fx_attribute_0%" == 157) BEGIN + PATCH_IF (BYTE_AT ("%fx_off%" + 0x2) == "%fx_attribute_1%") BEGIN + PATCH_IF (BYTE_AT ("%fx_off%" + 0x12) == "%fx_attribute_2%") BEGIN + PATCH_IF (BYTE_AT ("%fx_off%" + 0x13) == "%fx_attribute_3%") BEGIN + PATCH_IF (LONG_AT ("%fx_off%" + 0x1C) == "%fx_attribute_4%") BEGIN + PATCH_IF (LONG_AT ("%fx_off%" + 0x20) == "%fx_attribute_5%") BEGIN + PATCH_IF (LONG_AT ("%fx_off%" + 0x24) == "%fx_attribute_6%") BEGIN + PATCH_IF (SLONG_AT ("%fx_off%" + 0x28) == "%fx_attribute_7%") BEGIN WRITE_SHORT "%fx_off%" 999 SET "found_here" = 1 END @@ -184,31 +189,52 @@ BEGIN END END END + 139 BEGIN + LPF "GT_GET_STRING" INT_VAR "strref" = SLONG_AT ("%fx_off%" + 0x4) RET "string" END + PATCH_IF (("%string%" STRING_MATCHES_REGEXP "%fx_attribute_9%") == 0) BEGIN + PATCH_IF (BYTE_AT ("%fx_off%" + 0x2) == "%fx_attribute_1%") BEGIN + PATCH_IF (BYTE_AT ("%fx_off%" + 0x12) == "%fx_attribute_2%") BEGIN + PATCH_IF (BYTE_AT ("%fx_off%" + 0x13) == "%fx_attribute_3%") BEGIN + PATCH_IF (LONG_AT ("%fx_off%" + 0x1C) == "%fx_attribute_4%") BEGIN + PATCH_IF (LONG_AT ("%fx_off%" + 0x20) == "%fx_attribute_5%") BEGIN + PATCH_IF (LONG_AT ("%fx_off%" + 0x24) == "%fx_attribute_6%") BEGIN + PATCH_IF (SLONG_AT ("%fx_off%" + 0x28) == "%fx_attribute_7%") BEGIN + WRITE_SHORT "%fx_off%" 999 + SET "found_here" = 1 + END + END + END + END + END + END + END + END + END 142 BEGIN READ_SLONG ("%fx_off%" + 0x8) "icon" - PATCH_IF (("%icon%" STRING_MATCHES_REGEXP "%fx_attributes_8%") == 0) BEGIN - PATCH_IF (BYTE_AT ("%fx_off%" + 0x2) == "%fx_attributes_1%") BEGIN - PATCH_IF (BYTE_AT ("%fx_off%" + 0x12) == "%fx_attributes_2%") BEGIN - PATCH_IF (BYTE_AT ("%fx_off%" + 0x13) == "%fx_attributes_3%") BEGIN - PATCH_IF (LONG_AT ("%fx_off%" + 0x1C) == "%fx_attributes_4%") BEGIN - PATCH_IF (LONG_AT ("%fx_off%" + 0x20) == "%fx_attributes_5%") BEGIN - PATCH_IF (LONG_AT ("%fx_off%" + 0x24) == "%fx_attributes_6%") BEGIN - PATCH_IF (SLONG_AT ("%fx_off%" + 0x28) == "%fx_attributes_7%") BEGIN + PATCH_IF (("%icon%" STRING_MATCHES_REGEXP "%fx_attribute_8%") == 0) BEGIN + PATCH_IF (BYTE_AT ("%fx_off%" + 0x2) == "%fx_attribute_1%") BEGIN + PATCH_IF (BYTE_AT ("%fx_off%" + 0x12) == "%fx_attribute_2%") BEGIN + PATCH_IF (BYTE_AT ("%fx_off%" + 0x13) == "%fx_attribute_3%") BEGIN + PATCH_IF (LONG_AT ("%fx_off%" + 0x1C) == "%fx_attribute_4%") BEGIN + PATCH_IF (LONG_AT ("%fx_off%" + 0x20) == "%fx_attribute_5%") BEGIN + PATCH_IF (LONG_AT ("%fx_off%" + 0x24) == "%fx_attribute_6%") BEGIN + PATCH_IF (SLONG_AT ("%fx_off%" + 0x28) == "%fx_attribute_7%") BEGIN WRITE_SHORT "%fx_off%" 999 SET "found_here" = 1 PATCH_MATCH "%icon%" WITH 7 56 87 14 44 126 130 BEGIN - PATCH_IF ("%fx_ind%" > "%fx_attributes_9%") BEGIN - WRITE_LONG ("%fx_off%" - ("%fx_ind%" - "%fx_attributes_9%") * 0x30 + 0x2C) "%icon%" + PATCH_IF ("%fx_ind%" > "%fx_attribute_10%") BEGIN + WRITE_LONG ("%fx_off%" - ("%fx_ind%" - "%fx_attribute_10%") * 0x30 + 0x2C) "%icon%" END ELSE BEGIN - WRITE_LONG ("%fx_off%" + ("%fx_ind%" - "%fx_attributes_9%") * 0x30 + 0x2C) "%icon%" + WRITE_LONG ("%fx_off%" + ("%fx_ind%" - "%fx_attribute_10%") * 0x30 + 0x2C) "%icon%" END END - 41 WHEN ("%fx_attributes_0%" == 78) AND ("%fx_attributes_10%" == 10) BEGIN // Disease type: Slow - PATCH_IF ("%fx_ind%" > "%fx_attributes_9%") BEGIN - WRITE_LONG ("%fx_off%" - ("%fx_ind%" - "%fx_attributes_9%") * 0x30 + 0x2C) "%icon%" + 41 WHEN ("%fx_attribute_0%" == 78) AND ("%fx_attribute_11%" == 10) BEGIN // Disease type: Slow + PATCH_IF ("%fx_ind%" > "%fx_attribute_10%") BEGIN + WRITE_LONG ("%fx_off%" - ("%fx_ind%" - "%fx_attribute_10%") * 0x30 + 0x2C) "%icon%" END ELSE BEGIN - WRITE_LONG ("%fx_off%" + ("%fx_ind%" - "%fx_attributes_9%") * 0x30 + 0x2C) "%icon%" + WRITE_LONG ("%fx_off%" + ("%fx_ind%" - "%fx_attribute_10%") * 0x30 + 0x2C) "%icon%" END END DEFAULT @@ -246,7 +272,7 @@ BEGIN READ_LONG ("%fx_off%" + 0x20) "fx_min_level" READ_LONG ("%fx_off%" + 0x24) "fx_savetype" READ_SLONG ("%fx_off%" + 0x28) "fx_savebonus" - TEXT_SPRINT $"fx_data"("%fx_opcode%" "%fx_target%" "%fx_probability1%" "%fx_probability2%" "%fx_max_level%" "%fx_min_level%" "%fx_savetype%" "%fx_savebonus%" "^\(0\|1\|43\)$" "%fx_ind%") "irrelevant" + TEXT_SPRINT $"fx_data"("%fx_opcode%" "%fx_target%" "%fx_probability1%" "%fx_probability2%" "%fx_max_level%" "%fx_min_level%" "%fx_savetype%" "%fx_savebonus%" "^\(0\|1\|43\)$" "^\(Charmed\|Dire charmed\)$" "%fx_ind%") "irrelevant" END END 16 317 BEGIN // Haste @@ -261,7 +287,7 @@ BEGIN READ_LONG ("%fx_off%" + 0x20) "fx_min_level" READ_LONG ("%fx_off%" + 0x24) "fx_savetype" READ_SLONG ("%fx_off%" + 0x28) "fx_savebonus" - TEXT_SPRINT $"fx_data"("%fx_opcode%" "%fx_target%" "%fx_probability1%" "%fx_probability2%" "%fx_max_level%" "%fx_min_level%" "%fx_savetype%" "%fx_savebonus%" "^\(38\|110\)$" "%fx_ind%") "irrelevant" + TEXT_SPRINT $"fx_data"("%fx_opcode%" "%fx_target%" "%fx_probability1%" "%fx_probability2%" "%fx_max_level%" "%fx_min_level%" "%fx_savetype%" "%fx_savebonus%" "^\(38\|110\)$" "*" "%fx_ind%") "irrelevant" END END 25 BEGIN // Poison @@ -274,7 +300,7 @@ BEGIN READ_LONG ("%fx_off%" + 0x20) "fx_min_level" READ_LONG ("%fx_off%" + 0x24) "fx_savetype" READ_SLONG ("%fx_off%" + 0x28) "fx_savebonus" - TEXT_SPRINT $"fx_data"("%fx_opcode%" "%fx_target%" "%fx_probability1%" "%fx_probability2%" "%fx_max_level%" "%fx_min_level%" "%fx_savetype%" "%fx_savebonus%" "6" "%fx_ind%") "irrelevant" + TEXT_SPRINT $"fx_data"("%fx_opcode%" "%fx_target%" "%fx_probability1%" "%fx_probability2%" "%fx_max_level%" "%fx_min_level%" "%fx_savetype%" "%fx_savebonus%" "6" "^\(Poison\|Poisoned\)$" "%fx_ind%") "irrelevant" END 39 BEGIN // Sleep READ_BYTE ("%fx_off%" + 0xC) "fx_timing" @@ -288,7 +314,7 @@ BEGIN READ_LONG ("%fx_off%" + 0x20) "fx_min_level" READ_LONG ("%fx_off%" + 0x24) "fx_savetype" READ_SLONG ("%fx_off%" + 0x28) "fx_savebonus" - TEXT_SPRINT $"fx_data"("%fx_opcode%" "%fx_target%" "%fx_probability1%" "%fx_probability2%" "%fx_max_level%" "%fx_min_level%" "%fx_savetype%" "%fx_savebonus%" "^\(14\|44\|126\|130\)$" "%fx_ind%") "irrelevant" + TEXT_SPRINT $"fx_data"("%fx_opcode%" "%fx_target%" "%fx_probability1%" "%fx_probability2%" "%fx_max_level%" "%fx_min_level%" "%fx_savetype%" "%fx_savebonus%" "^\(14\|44\|126\|130\)$" "*" "%fx_ind%") "irrelevant" END END 40 BEGIN // Slow @@ -303,7 +329,7 @@ BEGIN READ_LONG ("%fx_off%" + 0x20) "fx_min_level" READ_LONG ("%fx_off%" + 0x24) "fx_savetype" READ_SLONG ("%fx_off%" + 0x28) "fx_savebonus" - TEXT_SPRINT $"fx_data"("%fx_opcode%" "%fx_target%" "%fx_probability1%" "%fx_probability2%" "%fx_max_level%" "%fx_min_level%" "%fx_savetype%" "%fx_savebonus%" "41" "%fx_ind%") "irrelevant" + TEXT_SPRINT $"fx_data"("%fx_opcode%" "%fx_target%" "%fx_probability1%" "%fx_probability2%" "%fx_max_level%" "%fx_min_level%" "%fx_savetype%" "%fx_savebonus%" "41" "*" "%fx_ind%") "irrelevant" END END 45 BEGIN // Stun @@ -318,7 +344,7 @@ BEGIN READ_LONG ("%fx_off%" + 0x20) "fx_min_level" READ_LONG ("%fx_off%" + 0x24) "fx_savetype" READ_SLONG ("%fx_off%" + 0x28) "fx_savebonus" - TEXT_SPRINT $"fx_data"("%fx_opcode%" "%fx_target%" "%fx_probability1%" "%fx_probability2%" "%fx_max_level%" "%fx_min_level%" "%fx_savetype%" "%fx_savebonus%" "55" "%fx_ind%") "irrelevant" + TEXT_SPRINT $"fx_data"("%fx_opcode%" "%fx_target%" "%fx_probability1%" "%fx_probability2%" "%fx_max_level%" "%fx_min_level%" "%fx_savetype%" "%fx_savebonus%" "55" "*" "%fx_ind%") "irrelevant" END END 74 BEGIN // Blindness @@ -333,7 +359,7 @@ BEGIN READ_LONG ("%fx_off%" + 0x20) "fx_min_level" READ_LONG ("%fx_off%" + 0x24) "fx_savetype" READ_SLONG ("%fx_off%" + 0x28) "fx_savebonus" - TEXT_SPRINT $"fx_data"("%fx_opcode%" "%fx_target%" "%fx_probability1%" "%fx_probability2%" "%fx_max_level%" "%fx_min_level%" "%fx_savetype%" "%fx_savebonus%" "8" "%fx_ind%") "irrelevant" + TEXT_SPRINT $"fx_data"("%fx_opcode%" "%fx_target%" "%fx_probability1%" "%fx_probability2%" "%fx_max_level%" "%fx_min_level%" "%fx_savetype%" "%fx_savebonus%" "8" "*" "%fx_ind%") "irrelevant" END END 78 BEGIN // Disease @@ -347,7 +373,7 @@ BEGIN READ_LONG ("%fx_off%" + 0x20) "fx_min_level" READ_LONG ("%fx_off%" + 0x24) "fx_savetype" READ_SLONG ("%fx_off%" + 0x28) "fx_savebonus" - TEXT_SPRINT $"fx_data"("%fx_opcode%" "%fx_target%" "%fx_probability1%" "%fx_probability2%" "%fx_max_level%" "%fx_min_level%" "%fx_savetype%" "%fx_savebonus%" "^\(7\|41\)$" "%fx_ind%" "%fx_parameter2%") "irrelevant" + TEXT_SPRINT $"fx_data"("%fx_opcode%" "%fx_target%" "%fx_probability1%" "%fx_probability2%" "%fx_max_level%" "%fx_min_level%" "%fx_savetype%" "%fx_savebonus%" "^\(7\|41\)$" "*" "%fx_ind%" "%fx_parameter2%") "irrelevant" END 98 BEGIN // Regeneration // Save current values @@ -359,7 +385,7 @@ BEGIN READ_LONG ("%fx_off%" + 0x20) "fx_min_level" READ_LONG ("%fx_off%" + 0x24) "fx_savetype" READ_SLONG ("%fx_off%" + 0x28) "fx_savebonus" - TEXT_SPRINT $"fx_data"("%fx_opcode%" "%fx_target%" "%fx_probability1%" "%fx_probability2%" "%fx_max_level%" "%fx_min_level%" "%fx_savetype%" "%fx_savebonus%" "^\(56\|87\)$" "%fx_ind%") "irrelevant" + TEXT_SPRINT $"fx_data"("%fx_opcode%" "%fx_target%" "%fx_probability1%" "%fx_probability2%" "%fx_max_level%" "%fx_min_level%" "%fx_savetype%" "%fx_savebonus%" "^\(56\|87\)$" "*" "%fx_ind%") "irrelevant" END 175 BEGIN // Hold creature // Save current values @@ -371,7 +397,7 @@ BEGIN READ_LONG ("%fx_off%" + 0x20) "fx_min_level" READ_LONG ("%fx_off%" + 0x24) "fx_savetype" READ_SLONG ("%fx_off%" + 0x28) "fx_savebonus" - TEXT_SPRINT $"fx_data"("%fx_opcode%" "%fx_target%" "%fx_probability1%" "%fx_probability2%" "%fx_max_level%" "%fx_min_level%" "%fx_savetype%" "%fx_savebonus%" "13" "%fx_ind%") "irrelevant" + TEXT_SPRINT $"fx_data"("%fx_opcode%" "%fx_target%" "%fx_probability1%" "%fx_probability2%" "%fx_max_level%" "%fx_min_level%" "%fx_savetype%" "%fx_savebonus%" "13" "Held" "%fx_ind%") "irrelevant" END 213 BEGIN // Maze // Save current values @@ -383,7 +409,19 @@ BEGIN READ_LONG ("%fx_off%" + 0x20) "fx_min_level" READ_LONG ("%fx_off%" + 0x24) "fx_savetype" READ_SLONG ("%fx_off%" + 0x28) "fx_savebonus" - TEXT_SPRINT $"fx_data"("%fx_opcode%" "%fx_target%" "%fx_probability1%" "%fx_probability2%" "%fx_max_level%" "%fx_min_level%" "%fx_savetype%" "%fx_savebonus%" "78" "%fx_ind%") "irrelevant" + TEXT_SPRINT $"fx_data"("%fx_opcode%" "%fx_target%" "%fx_probability1%" "%fx_probability2%" "%fx_max_level%" "%fx_min_level%" "%fx_savetype%" "%fx_savebonus%" "78" "*" "%fx_ind%") "irrelevant" + END + 157 BEGIN // Web overlay + // Save current values + READ_SHORT ("%fx_off%" + 0x0) "fx_opcode" + READ_BYTE ("%fx_off%" + 0x2) "fx_target" + READ_BYTE ("%fx_off%" + 0x12) "fx_probability1" + READ_BYTE ("%fx_off%" + 0x13) "fx_probability2" + READ_LONG ("%fx_off%" + 0x1C) "fx_max_level" + READ_LONG ("%fx_off%" + 0x20) "fx_min_level" + READ_LONG ("%fx_off%" + 0x24) "fx_savetype" + READ_SLONG ("%fx_off%" + 0x28) "fx_savebonus" + TEXT_SPRINT $"fx_data"("%fx_opcode%" "%fx_target%" "%fx_probability1%" "%fx_probability2%" "%fx_max_level%" "%fx_min_level%" "%fx_savetype%" "%fx_savebonus%" "*" "*" "%fx_ind%") "irrelevant" END DEFAULT END diff --git a/eefixpack/files/tph/luke/searing_orb.tph b/eefixpack/files/tph/luke/searing_orb.tph index a95580cf..6afda00c 100644 --- a/eefixpack/files/tph/luke/searing_orb.tph +++ b/eefixpack/files/tph/luke/searing_orb.tph @@ -1,217 +1,67 @@ // This function moves Searing Orb so as to use 326 magic rather than those messy 177s. -// The new implementation takes into account the "7eyes.2da" thing... More on that on a future pull request... +// This a "eefixpack\files\tph\luke\7eyes\7eyes.tph" follow-up... DEFINE_ACTION_FUNCTION "CLERIC_SOL_SEARING_ORB" BEGIN + COPY_EXISTING "sorb.itm" "override" + /* Header */ + WRITE_ASCII 0x10 ~~ #8 // Used up item + /* Feature blocks */ + GET_OFFSET_ARRAY "ab_array" ITM_V10_HEADERS + PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN + GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" ITM_V10_HEAD_EFFECTS + PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN + PATCH_MATCH SHORT_AT "%fx_off%" WITH + 326 WHEN (SLONG_AT ("%fx_off%" + 0x4) == IDS_OF_SYMBOL ("splstate" "BLIND_IMMUNITY")) AND (LONG_AT ("%fx_off%" + 0x8) == 111) BEGIN + READ_ASCII ("%fx_off%" + 0x14) "subspell" + END + DEFAULT + END + END + END + LPF "DELETE_ITEM_EFFECT" INT_VAR "opcode_to_delete" = "-1" END // fresh start + // + LPF "ADD_ITEM_EFFECT" INT_VAR "type" = 2 "opcode" = 215 "target" = 2 "timing" = 1 STR_VAR "resource" = "ICFIRSDI" END // Play visual effect (Visual/Cosmetic effect (no save, bypass MR)) + LPF "ADD_ITEM_EFFECT" INT_VAR "type" = 2 "opcode" = 326 "target" = 2 "parameter1" = IDS_OF_SYMBOL ("splstate" "BLIND_IMMUNITY") "parameter2" = 111 "timing" = 1 STR_VAR "resource" = "%subspell%" END // Apply effects list + // 6d6 (fire), Save vs. Spell for half damage + LPF "ADD_ITEM_EFFECT" INT_VAR "type" = 2 "opcode" = 12 "target" = 2 "parameter2" = IDS_OF_SYMBOL ("DMGTYPE" "FIRE") "timing" = 1 "resist_dispel" = BIT0 "dicenumber" = 6 "dicesize" = 6 "savingthrow" = BIT0 "special" = BIT8 END + LPF "ADD_ITEM_EFFECT" INT_VAR "type" = 2 "opcode" = 318 "target" = 2 "parameter2" = 2 STR_VAR "resource" = "%DEST_RES%" END // Protection from resource (GENERAL!=UNDEAD) + // 6d6 (fire), no save (for GENERAL=UNDEAD only) + // - 12d6 (fire) upon a failed Save vs. Spell + // - 9d6 = 3d6 + 6d6 (fire) upon a successful Save vs. Spell + LPF "ADD_ITEM_EFFECT" INT_VAR "type" = 2 "opcode" = 12 "target" = 2 "parameter2" = IDS_OF_SYMBOL ("DMGTYPE" "FIRE") "timing" = 1 "resist_dispel" = BIT0 "dicenumber" = 6 "dicesize" = 6 END + BUT_ONLY_IF_IT_CHANGES + // WITH_SCOPE BEGIN - COPY_EXISTING "sorb.itm" "override" - /* Header */ - WRITE_ASCII 0x10 ~~ #8 // Used up item - /* Feature blocks */ - LPF "DELETE_EFFECT" END // let us start from scratch - // Visual/Cosmetic effect (no save, bypass MR) - LPF "ADD_ITEM_EFFECT" - INT_VAR - "type" = 2 // Ranged - "opcode" = 215 // Play visual effect - "target" = 2 // Preset target - "timing" = 1 - STR_VAR - "resource" = "ICFIRSDI" - END + COPY_EXISTING "%subspell%.spl" "override" + LPF "DELETE_EFFECT" END // Blinds undead target for 12 rounds (Save vs. Spell for 6 rounds) - LPF "ADD_ITEM_EFFECT" - INT_VAR - "type" = 2 // Ranged - "opcode" = 326 // Apply effects list - "target" = 2 // Preset target - "parameter2" = 1 // GENERAL=UNDEAD - "timing" = 1 - "resist_dispel" = BIT0 - STR_VAR - "resource" = "%CLERIC_SOL_SEARING_ORB%a" - END + LPF "ADD_SPELL_EFFECT" INT_VAR "opcode" = 326 "target" = 2 "parameter2" = 1 "timing" = 1 "resist_dispel" = BIT0 | BIT1 STR_VAR "resource" = "sorb01" END // Apply effects list (GENERAL=UNDEAD) // Blinds living target for 1d6 rounds (Save vs. Spell negates) - LPF "ADD_ITEM_EFFECT" - INT_VAR - "type" = 2 // Ranged - "opcode" = 326 // Apply effects list - "target" = 2 // Preset target - "parameter2" = 2 // GENERAL!=UNDEAD - "timing" = 1 - "resist_dispel" = BIT0 - "savingthrow" = BIT0 // Save vs. Spell - STR_VAR - "resource" = "%CLERIC_SOL_SEARING_ORB%b" - END - // 6d6 (fire), Save vs. Spell for half damage - LPF "ADD_ITEM_EFFECT" - INT_VAR - "type" = 2 // Ranged - "opcode" = 12 // Damage - "target" = 2 // Preset target - "parameter2" = IDS_OF_SYMBOL ("DMGTYPE" "FIRE") - "timing" = 1 - "resist_dispel" = BIT0 - "dicenumber" = 6 - "dicesize" = 6 - "savingthrow" = BIT0 // Save vs. Spell - "special" = BIT8 // Save for Half - END - LPF "ADD_ITEM_EFFECT" - INT_VAR - "type" = 2 // Ranged - "opcode" = 318 // Protection from resource - "target" = 2 // Preset target - "parameter2" = 2 // GENERAL!=UNDEAD - STR_VAR - "resource" = "%DEST_RES%" - END - // 6d6 (fire), no save (for GENERAL=UNDEAD only) - // - 12d6 (fire) upon a failed Save vs. Spell - // - 9d6 = 3d6 + 6d6 (fire) upon a successful Save vs. Spell - LPF "ADD_ITEM_EFFECT" - INT_VAR - "type" = 2 // Ranged - "opcode" = 12 // Damage - "target" = 2 // Preset target - "parameter2" = IDS_OF_SYMBOL ("DMGTYPE" "FIRE") - "timing" = 1 - "resist_dispel" = BIT0 - "dicenumber" = 6 - "dicesize" = 6 - END - BUT_ONLY_IF_IT_CHANGES + LPF "ADD_SPELL_EFFECT" INT_VAR "opcode" = 326 "target" = 2 "parameter2" = 2 "timing" = 1 "resist_dispel" = BIT0 | BIT1 "savingthrow" = BIT0 STR_VAR "resource" = "sorb02" END // Apply effects list (GENERAL!=UNDEAD) + BUT_ONLY END - // Subspell A => GENERAL = UNDEAD => "Blinds undead target for 12 rounds (Save vs. Spell for 6 rounds)" + // Subspell B => GENERAL = UNDEAD => "Blinds undead target for 12 rounds (Save vs. Spell for 6 rounds)" WITH_SCOPE BEGIN - COPY_EXISTING "%CLERIC_SOL_SEARING_ORB%.spl" "override/%CLERIC_SOL_SEARING_ORB%a.spl" - /* Header */ - WRITE_LONG NAME1 "-1" - WRITE_ASCII 0x10 "" #8 // casting sound - WRITE_LONG 0x18 0 // flags - WRITE_LONG 0x1E 0 // exclusion flags - WRITE_SHORT 0x22 0 // casting animation - WRITE_BYTE 0x25 6 // Primary type: INVOKER (match "sorb.itm") - WRITE_BYTE 0x27 10 // Secondary type: OFFENSIVEDAMAGE (match "sorb.itm") - /* Extended header(s) */ - LPF "ALTER_SPELL_HEADER" - INT_VAR - "projectile" = IDS_OF_SYMBOL ("MISSILE" "None") - "speed" = 0 - END - /* Feature block(s) */ + COPY_EXISTING "%subspell%.spl" "override/sorb01.spl" LPF "DELETE_EFFECT" END // delete current content - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 74 // Blindness - "target" = 2 // Preset target - "duration" = 72 - "resist_dispel" = BIT0 + BIT1 - "savingthrow" = BIT0 // Save vs. Spell - END - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 139 // Display string - "target" = 2 // Preset target - "parameter1" = "%game_is_bgee%" ? 31786 : 14674 - "timing" = 1 - "resist_dispel" = BIT0 + BIT1 - "savingthrow" = BIT0 // Save vs. Spell - END - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 318 // Protection from resource - "target" = 2 // Preset target - "resist_dispel" = BIT0 + BIT1 - "savingthrow" = BIT0 // Save vs. Spell - STR_VAR - "resource" = "%DEST_RES%" - END - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 74 // Blindness - "target" = 2 // Preset target - "duration" = 36 - "resist_dispel" = BIT0 + BIT1 - END - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 139 // Display string - "target" = 2 // Preset target - "parameter1" = "%game_is_bgee%" ? 31786 : 14674 - "timing" = 1 - "resist_dispel" = BIT0 + BIT1 - END + LPF "ADD_SPELL_EFFECT" INT_VAR "opcode" = 74 "target" = 2 "duration" = 72 "resist_dispel" = BIT0 + BIT1 "savingthrow" = BIT0 END // Blindness (12 rounds): Save vs. Spell + LPF "ADD_SPELL_EFFECT" INT_VAR "opcode" = 139 "target" = 2 "parameter1" = ("%game_is_bgee%" ? 31786 : 14674) "timing" = 1 "resist_dispel" = BIT0 + BIT1 "savingthrow" = BIT0 END // Display string: Save vs. Spell + LPF "ADD_SPELL_EFFECT" INT_VAR "opcode" = 318 "target" = 2 "resist_dispel" = BIT0 + BIT1 "savingthrow" = BIT0 STR_VAR "resource" = "%DEST_RES%" END // Protection from resource: Save vs. Spell + LPF "ADD_SPELL_EFFECT" INT_VAR "opcode" = 74 "target" = 2 "duration" = 36 "resist_dispel" = BIT0 + BIT1 END // Blindness (6 rounds): no save + LPF "ADD_SPELL_EFFECT" INT_VAR "opcode" = 139 "target" = 2 "parameter1" = ("%game_is_bgee%" ? 31786 : 14674) "timing" = 1 "resist_dispel" = BIT0 + BIT1 END // Display string: no save BUT_ONLY_IF_IT_CHANGES END - // Subspell B => GENERAL != UNDEAD => "Blinds living target for 1d6 rounds (Save vs. Spell negates)" + // Subspell C => GENERAL != UNDEAD => "Blinds living target for 1d6 rounds (Save vs. Spell negates)" WITH_SCOPE BEGIN - COPY_EXISTING "%CLERIC_SOL_SEARING_ORB%a.spl" "override/%CLERIC_SOL_SEARING_ORB%b.spl" + COPY_EXISTING "%subspell%.spl" "override/sorb02.spl" /* Feature blocks */ LPF "DELETE_EFFECT" END // delete current content - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 74 // Blindness - "target" = 2 // Preset target - "duration" = 6 - "resist_dispel" = BIT0 + BIT1 - "probability2" = 0 - "probability1" = 16 - END - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 74 // Blindness - "target" = 2 // Preset target - "duration" = 12 - "resist_dispel" = BIT0 + BIT1 - "probability2" = 17 - "probability1" = 33 - END - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 74 // Blindness - "target" = 2 // Preset target - "duration" = 18 - "resist_dispel" = BIT0 + BIT1 - "probability2" = 34 - "probability1" = 50 - END - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 74 // Blindness - "target" = 2 // Preset target - "duration" = 24 - "resist_dispel" = BIT0 + BIT1 - "probability2" = 51 - "probability1" = 67 - END - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 74 // Blindness - "target" = 2 // Preset target - "duration" = 30 - "resist_dispel" = BIT0 + BIT1 - "probability2" = 68 - "probability1" = 84 - END - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 74 // Blindness - "target" = 2 // Preset target - "duration" = 36 - "resist_dispel" = BIT0 + BIT1 - "probability2" = 85 - "probability1" = 100 - END - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 139 // Display string - "target" = 2 // Preset target - "parameter1" = "%game_is_bgee%" ? 31786 : 14674 - "timing" = 1 - "resist_dispel" = BIT0 + BIT1 + // poor approximation of 1d6 + FOR ("i" = 0 "j" = 16 "k" = 1 ; "%k%" <= 6 ; "i" += 17 "j" += 17 "k" += 1) BEGIN + LPF "ADD_SPELL_EFFECT" INT_VAR "opcode" = 74 "target" = 2 "duration" = ("%k%" * 6) "resist_dispel" = BIT0 + BIT1 "probability2" = "%i%" "probability1" = "%j%" END // Blindness (1d6 rounds) END + LPF "ADD_SPELL_EFFECT" INT_VAR "opcode" = 139 "target" = 2 "parameter1" = ("%game_is_bgee%" ? 31786 : 14674) "timing" = 1 "resist_dispel" = BIT0 + BIT1 END // Display string BUT_ONLY_IF_IT_CHANGES END END \ No newline at end of file diff --git a/eefixpack/files/tph/luke/sunray.tph b/eefixpack/files/tph/luke/sunray.tph index c1dab817..91927269 100644 --- a/eefixpack/files/tph/luke/sunray.tph +++ b/eefixpack/files/tph/luke/sunray.tph @@ -1,339 +1,63 @@ // This function moves Sunray so as to use 326 magic rather than those messy 177s. -// The new implementation takes into account the "7eyes.2da" thing... More on that on a future pull request... +// This is a "eefixpack\files\tph\luke\7eyes\7eyes.tph" follow-up... DEFINE_ACTION_FUNCTION "CLERIC_SUNRAY" BEGIN ACTION_IF (GAME_IS ~bgee bg2ee eet~) BEGIN - WITH_SCOPE BEGIN - COPY_EXISTING "%CLERIC_SUNRAY%.spl" "override" - LPF "DELETE_EFFECT" END // let us start from scratch - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 146 // Cast spell - "target" = 1 // Self - "power" = 7 - "parameter2" = 1 // Cast instantly (ignore level) - "timing" = 1 - "resist_dispel" = BIT1 - STR_VAR - "resource" = "%CLERIC_FALSE_DAWN%d" - END - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 326 // Apply effects list - "target" = 2 // Preset target - "power" = 7 - "parameter2" = 1 // GENERAL=UNDEAD - "timing" = 1 - "resist_dispel" = BIT0 - STR_VAR - "resource" = "%CLERIC_SUNRAY%a" - END - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 326 // Apply effects list - "target" = 2 // Preset target - "power" = 7 - "parameter2" = 2 // GENERAL!=UNDEAD - "timing" = 1 - "resist_dispel" = BIT0 - STR_VAR - "resource" = "%CLERIC_SUNRAY%b" - END - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 215 // Play visual effect - "target" = 2 // Preset target - "power" = 7 - "timing" = 1 - "resist_dispel" = BIT1 - STR_VAR - "resource" = "SPFDAWN" - END - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 174 // Play sound - "target" = 2 // Preset target - "power" = 7 - "timing" = 1 - "resist_dispel" = BIT1 - STR_VAR - "resource" = "EFF_P56" - END - BUT_ONLY_IF_IT_CHANGES - END - // Subspell A => GENERAL = UNDEAD => "Undead that are hit by the sunray take 1d6 damage per level of the caster, and must save vs. Spell or be destroyed." - WITH_SCOPE BEGIN - COPY_EXISTING "%CLERIC_SUNRAY%.spl" "override/%CLERIC_SUNRAY%a.spl" - /* Header */ - WRITE_LONG NAME1 "-1" - WRITE_ASCII 0x10 "" #8 // casting sound - WRITE_LONG 0x18 0 // flags - WRITE_LONG 0x1E 0 // exclusion flags - WRITE_SHORT 0x22 0 // casting animation - /* Extended header(s) */ - LPF "ALTER_SPELL_HEADER" - INT_VAR - "projectile" = IDS_OF_SYMBOL ("MISSILE" "None") - "speed" = 0 - END - /* Feature block(s) */ - LPF "DELETE_EFFECT" END // delete current content - PATCH_WITH_SCOPE BEGIN - LPF "GET_FIRST_LEVEL_YOU_CAN_LEARN_XTH_LEVEL_SPELLS" - INT_VAR - "spell_level" = LONG_AT 0x34 - RET - "caster_level" - END - GET_OFFSET_ARRAY "ab_array" SPL_V10_HEADERS - PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN - LPF "ADD_SPELL_EFFECT" - INT_VAR - "header" = "%ab_ind%" + 1 - "opcode" = 12 // Damage - "target" = 2 // Preset target - "parameter2" = IDS_OF_SYMBOL ("DMGTYPE" "MAGIC") - "timing" = 1 - "resist_dispel" = BIT1 - "dicenumber" = SHORT_AT ("%ab_off%" + 0x10) == 1 ? "%caster_level%" : SHORT_AT ("%ab_off%" + 0x10) - "dicesize" = 6 - "savingthrow" = BIT24 // Bypass Mirror Image + COPY_EXISTING - "%CLERIC_SUNRAY%.spl" "override" + GET_OFFSET_ARRAY "ab_array" SPL_V10_HEADERS + PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN + GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" SPL_V10_HEAD_EFFECTS + PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN + PATCH_MATCH SHORT_AT "%fx_off%" WITH + 326 WHEN (SLONG_AT ("%fx_off%" + 0x4) == IDS_OF_SYMBOL ("splstate" "BLIND_IMMUNITY")) AND (LONG_AT ("%fx_off%" + 0x8) == 111) BEGIN + READ_ASCII ("%fx_off%" + 0x14) "subspell" END + DEFAULT END END - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 13 // Kill target - "target" = 2 // Preset target - "parameter2" = BIT0 // Burning death - "timing" = 1 - "resist_dispel" = BIT1 - "savingthrow" = BIT0 // Save vs. Spell - END - BUT_ONLY_IF_IT_CHANGES - END - // Subspell B => GENERAL != UNDEAD => "All creatures within the area of effect take 3d6 points of damage and must save vs. Spell or be blinded for 1 turn." - WITH_SCOPE BEGIN - COPY_EXISTING "%CLERIC_SUNRAY%a.spl" "override/%CLERIC_SUNRAY%b.spl" - // Should not scale with character level - PATCH_WITH_SCOPE BEGIN - SET "#_abilities" = SHORT_AT 0x68 - FOR ("ab_ind" = 0 ; "ab_ind" < "%#_abilities%" ; "ab_ind" += 1) BEGIN - PATCH_IF (SHORT_AT (0x72 + "%ab_ind%" * 0x28 + 0x10) != 1) BEGIN - LPF "DELETE_SPELL_HEADER" - INT_VAR - "header_type" = "-1" // all types - "min_level" = SHORT_AT (0x72 + "%ab_ind%" * 0x28 + 0x10) - END - // We need to take into account the ability we've just deleted - SET "ab_ind" -= 1 // current index - SET "#_abilities" -= 1 // total number of abilities - END - END - END - /* Feature blocks */ - LPF "DELETE_EFFECT" END // delete current content - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 146 // Cast spell - "target" = 2 // Preset target - "parameter2" = 1 // Cast instantly (ignore level) - "timing" = 1 - "resist_dispel" = BIT1 - STR_VAR - "resource" = "%CLERIC_SUNRAY%c" - END - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 74 // Blindness - "target" = 2 // Preset target - "duration" = 60 - "resist_dispel" = BIT0 + BIT1 - "savingthrow" = BIT0 // Save vs. Spell - END - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 139 // Display string - "target" = 2 // Preset target - "parameter1" = "%game_is_bgee%" ? 31786 : 14674 - "timing" = 1 - "resist_dispel" = BIT1 - "savingthrow" = BIT0 // Save vs. Spell - END - BUT_ONLY_IF_IT_CHANGES - END - // Subspell C => GENERAL != UNDEAD => "All creatures within the area of effect take 3d6 points of damage" - WITH_SCOPE BEGIN - COPY_EXISTING "%CLERIC_SUNRAY%b.spl" "override/%CLERIC_SUNRAY%c.spl" - /* Feature blocks */ - LPF "DELETE_EFFECT" END // delete current content - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 12 // Damage - "target" = 2 // Preset target - "parameter2" = IDS_OF_SYMBOL ("DMGTYPE" "MAGIC") - "timing" = 1 - "resist_dispel" = BIT1 - "dicenumber" = 3 - "dicesize" = 6 - "savingthrow" = BIT24 // Bypass Mirror Image + END + BUT_ONLY_IF_IT_CHANGES + // + COPY_EXISTING "%subspell%.spl" "override" + GET_OFFSET_ARRAY "ab_array" SPL_V10_HEADERS + PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN + PATCH_IF SHORT_AT ("%ab_off%" + 0x10) > 1 BEGIN // min level + WRITE_BYTE "%ab_off%" 0xFF END - BUT_ONLY_IF_IT_CHANGES - END - // Main SPL file should not scale with character level - WITH_SCOPE BEGIN - COPY_EXISTING "%CLERIC_SUNRAY%.spl" "override" - PATCH_WITH_SCOPE BEGIN - SET "#_abilities" = SHORT_AT 0x68 - FOR ("ab_ind" = 0 ; "ab_ind" < "%#_abilities%" ; "ab_ind" += 1) BEGIN - PATCH_IF (SHORT_AT (0x72 + "%ab_ind%" * 0x28 + 0x10) != 1) BEGIN - LPF "DELETE_SPELL_HEADER" - INT_VAR - "header_type" = "-1" // all types - "min_level" = SHORT_AT (0x72 + "%ab_ind%" * 0x28 + 0x10) - END - // We need to take into account the ability we've just deleted - SET "ab_ind" -= 1 // current index - SET "#_abilities" -= 1 // total number of abilities + END + LPF "DELETE_SPELL_HEADER" INT_VAR "header_type" = 0xFF END + BUT_ONLY + END ELSE BEGIN // iwdee + COPY_EXISTING "%CLERIC_SUNRAY%.spl" "override" + GET_OFFSET_ARRAY "ab_array" SPL_V10_HEADERS + PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN + GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" SPL_V10_HEAD_EFFECTS + PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN + PATCH_MATCH SHORT_AT "%fx_off%" WITH + 326 WHEN SLONG_AT ("%fx_off%" + 0x4) == IDS_OF_SYMBOL ("splstate" "BLIND_IMMUNITY") AND LONG_AT ("%fx_off%" + 0x8) == 111 BEGIN + READ_ASCII ("%fx_off%" + 0x14) "subspell" + WRITE_LONG ("%fx_off%" + 0x24) BIT0 // save vs. spell END END END - BUT_ONLY_IF_IT_CHANGES - END - END ELSE BEGIN - WITH_SCOPE BEGIN - COPY_EXISTING "%CLERIC_SUNRAY%.spl" "override" - LPF "DELETE_EFFECT" END // let us start from scratch - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 326 // Apply effects list - "target" = 2 // Preset target - "power" = 7 - "parameter2" = 31 // GENERAL=UNDEAD || RACE=MYCONID - "timing" = 1 - "resist_dispel" = BIT0 - STR_VAR - "resource" = "%CLERIC_SUNRAY%a" - END - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 326 // Apply effects list - "target" = 2 // Preset target - "power" = 7 - "parameter2" = 32 // !(GENERAL=UNDEAD || RACE=MYCONID) - "timing" = 1 - "resist_dispel" = BIT0 - "savingthrow" = BIT0 // Save vs. Spell - STR_VAR - "resource" = "%CLERIC_SUNRAY%c" - END - BUT_ONLY_IF_IT_CHANGES - END - // Subspell A => (GENERAL=UNDEAD || RACE=MYCONID) => "Undead or fungoid creatures in the area of effect also take 8d6 points of damage (save vs. Spell for half) and are blinded for 1 turn." - WITH_SCOPE BEGIN - COPY_EXISTING "%CLERIC_SUNRAY%.spl" "override/%CLERIC_SUNRAY%a.spl" - /* Header */ - WRITE_LONG NAME1 "-1" - WRITE_ASCII 0x10 "" #8 // casting sound - WRITE_LONG 0x18 0 // flags - WRITE_LONG 0x1E 0 // exclusion flags - WRITE_SHORT 0x22 0 // casting animation - /* Extended header(s) */ - LPF "ALTER_SPELL_HEADER" - INT_VAR - "projectile" = IDS_OF_SYMBOL ("MISSILE" "None") - "speed" = 0 - END - /* Feature block(s) */ - LPF "DELETE_EFFECT" END // delete current content - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 146 // Cast spell - "target" = 2 // Preset target - "parameter2" = 1 // Cast instantly (ignore level) - "timing" = 1 - "resist_dispel" = BIT1 - "savingthrow" = BIT0 // Save vs. Spell - STR_VAR - "resource" = "%CLERIC_SUNRAY%B" - END - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 12 // Damage - "target" = 2 // Preset target - "parameter2" = IDS_OF_SYMBOL ("DMGTYPE" "FIRE") - "timing" = 1 - "resist_dispel" = BIT1 - "dicenumber" = 8 - "dicesize" = 6 - "savingthrow" = (BIT0 | BIT24) // Save vs. Spell, Bypass Mirror Image - "special" = BIT8 // Save for half - END - BUT_ONLY_IF_IT_CHANGES - END - // Subspell B => (GENERAL=UNDEAD || RACE=MYCONID) => "Undead or fungoid creatures in the area of effect ... are blinded for 1 turn." - WITH_SCOPE BEGIN - COPY_EXISTING "%CLERIC_SUNRAY%a.spl" "override/%CLERIC_SUNRAY%b.spl" - /* Feature blocks */ - LPF "DELETE_EFFECT" END // delete current content - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 74 // Blindness - "target" = 2 // Preset target - "duration" = 60 - "resist_dispel" = BIT0 | BIT1 - END - LPF "ADD_SPELL_EFFECT" - INT_VAR - "opcode" = 139 // Display string - "target" = 2 // Preset target - "parameter1" = 37800 // ~Blinded~ - "timing" = 1 - "resist_dispel" = BIT0 | BIT1 - END - BUT_ONLY_IF_IT_CHANGES - END - // Subspell C => !(GENERAL=UNDEAD || RACE=MYCONID) => "Creatures in the area of effect must make a Save vs. Spell or be blinded for 2 rounds." - WITH_SCOPE BEGIN - COPY_EXISTING "%CLERIC_SUNRAY%b.spl" "override/%CLERIC_SUNRAY%c.spl" - /* Feature blocks */ - LPF "ALTER_EFFECT" - INT_VAR - "match_opcode" = 74 // Blindness - "duration" = 12 - END - BUT_ONLY_IF_IT_CHANGES - END - END -END - -///////////////////////////////////////////////////////////////// -/* - -Auxiliary function - -*/ -////////////////////////////////////////////////////////////////// - -DEFINE_PATCH_FUNCTION "GET_FIRST_LEVEL_YOU_CAN_LEARN_XTH_LEVEL_SPELLS" -INT_VAR - "spell_level" = "-1" -RET - "caster_level" -BEGIN - // Initialize - SET "caster_level" = "-1" - // Main - INNER_PATCH_FILE "mxsplprs.2da" BEGIN - COUNT_2DA_COLS "cols" - READ_2DA_ENTRIES_NOW "read_mxsplprs" "%cols%" - FOR ("row" = 0 ; "%row%" < "%read_mxsplprs%" ; "row" += 1) BEGIN - READ_2DA_ENTRY_FORMER "read_mxsplprs" "%row%" "%spell_level%" "#_spells" - PATCH_IF ("%#_spells%" > 0) BEGIN - READ_2DA_ENTRY_FORMER "read_mxsplprs" "%row%" 0 "caster_level" - SET "row" = "%read_mxsplprs%" + 1 // Kill FOR-loop END - END + BUT_ONLY + // + COPY_EXISTING "%subspell%.spl" "override\%CLERIC_SUNRAY%b.spl" + LPF "DELETE_EFFECT" INT_VAR "match_duration" = 60 END + LPF "ALTER_EFFECT" INT_VAR "savingthrow" = 0 END + BUT_ONLY + // + COPY_EXISTING "%subspell%.spl" "override\%CLERIC_SUNRAY%c.spl" + LPF "DELETE_EFFECT" INT_VAR "match_duration" = 12 END + LPF "ALTER_EFFECT" INT_VAR "savingthrow" = 0 END + BUT_ONLY + // + COPY_EXISTING "%subspell%.spl" "override" + LPF "DELETE_EFFECT" END + LPF "ADD_SPELL_EFFECT" INT_VAR "opcode" = 326 "target" = 2 "parameter2" = 32 "timing" = 1 "resist_dispel" = BIT0 BOR BIT1 STR_VAR "resource" = "%CLERIC_SUNRAY%b" END // Apply effects list: !(GENERAL=UNDEAD || RACE=MYCONID) + LPF "ADD_SPELL_EFFECT" INT_VAR "opcode" = 326 "target" = 2 "parameter2" = 31 "timing" = 1 "resist_dispel" = BIT0 BOR BIT1 STR_VAR "resource" = "%CLERIC_SUNRAY%c" END // Apply effects list: (GENERAL=UNDEAD || RACE=MYCONID) + BUT_ONLY END END \ No newline at end of file diff --git a/eefixpack/files/tph/luke/three_white_doves.tph b/eefixpack/files/tph/luke/three_white_doves.tph new file mode 100644 index 00000000..1b740f5b --- /dev/null +++ b/eefixpack/files/tph/luke/three_white_doves.tph @@ -0,0 +1,51 @@ +DEFINE_ACTION_FUNCTION "THREE_WHITE_DOVES" +BEGIN + // Subspell creation + COPY_EXISTING "#evasion.spl" "override\doves1.spl" + WRITE_ASCII 0x3A "idoves" #8 + LPF "ALTER_SPELL_HEADER" INT_VAR "range" = 0x7FFF STR_VAR "icon" = "idoves" END + LPF "DELETE_SPELL_EFFECT" INT_VAR "opcode_to_delete" = "-1" END // fresh start + LPF "ADD_SPELL_EFFECT" INT_VAR "opcode" = 215 "target" = 2 "timing" = 1 STR_VAR "resource" = "cldamah" END // Play visual effect + LPF "ADD_SPELL_EFFECT" INT_VAR "opcode" = 12 "target" = 2 "parameter2" = IDS_OF_SYMBOL ("DMGTYPE" "CRUSHING") "timing" = 1 "parameter1" = 4 "dicenumber" = 1 "dicesize" = 6 END // 1d6+4 (crushing) + BUT_ONLY_IF_IT_CHANGES + // + COPY_EXISTING "doves1.spl" "override\doves2.spl" + LPF "DELETE_SPELL_EFFECT" INT_VAR "opcode_to_delete" = "-1" END // fresh start + LPF "ADD_SPELL_EFFECT" INT_VAR "opcode" = 139 "target" = 2 "timing" = 1 "parameter1" = 40195 END // Display string (Outer planar destroyed) + LPF "ADD_SPELL_EFFECT" INT_VAR "opcode" = 13 "target" = 2 "parameter2" = BIT2 "timing" = 1 END // Kill target (normal death) + BUT_ONLY_IF_IT_CHANGES + // + COPY_EXISTING "doves1.spl" "override\doves3.spl" + LPF "DELETE_SPELL_EFFECT" INT_VAR "opcode_to_delete" = "-1" END // fresh start + LPF "ADD_SPELL_EFFECT" INT_VAR "opcode" = 139 "target" = 2 "timing" = 1 "parameter1" = 35600 END // Display string (Undead destroyed) + LPF "ADD_SPELL_EFFECT" INT_VAR "opcode" = 13 "target" = 2 "parameter2" = BIT2 "timing" = 1 END // Kill target (normal death) + BUT_ONLY_IF_IT_CHANGES + // + COPY_EXISTING "doves.itm" "override" + LPF "DELETE_EFFECT" INT_VAR "check_globals" = 0 END // Fresh start + // Double damage against outer planar creatures / 5% chance of being destroyed + PATCH_WITH_SCOPE BEGIN + PATCH_FOR_EACH "race" IN "DEMONIC" "MEPHIT" "IMP" "GITHYANKI" "ELEMENTAL" "GENIE" "SOLAR" "ANTISOLAR" "PLANATAR" "DARKPLANATAR" "SALAMANDER" BEGIN + LPF "ADD_ITEM_EFFECT" INT_VAR "target" = 2 "type" = 1 "opcode" = 326 "parameter1" = IDS_OF_SYMBOL ("RACE" "%race%") "parameter2" = 104 "timing" = 1 STR_VAR "resource" = "doves1" END // Apply effects list (double damage) + LPF "ADD_ITEM_EFFECT" INT_VAR "target" = 2 "type" = 1 "opcode" = 326 "parameter1" = IDS_OF_SYMBOL ("RACE" "%race%") "parameter2" = 104 "timing" = 1 "probability1" = 95 STR_VAR "resource" = "doves2" END // Apply effects list (kill creature) + END + END + // Double damage against undead + LPF "ADD_ITEM_EFFECT" INT_VAR "target" = 2 "type" = 1 "opcode" = 326 "parameter2" = 1 "timing" = 1 STR_VAR "resource" = "doves1" END // Apply effects list (double damage) + PATCH_WITH_SCOPE BEGIN + DEFINE_ASSOCIATIVE_ARRAY "three_white_doves" BEGIN + // max level , min level , probability2 => "" + 4 , 0 , 0 => "" // [Undead] 1-4 Hit Dice: Automatically destroyed + 5 , 5 , 5 => "" // [Undead] 5 Hit Dice: 95% chance of being destroyed + 6 , 6 , 20 => "" // [Undead] 6 Hit Dice: 80% chance of being destroyed + 7 , 7 , 35 => "" // [Undead] 7 Hit Dice: 65% chance of being destroyed + 9 , 8 , 50 => "" // [Undead] 8-9 Hit Dice: 50% chance of being destroyed + 10 , 10 , 65 => "" // [Undead] 10 Hit Dice: 35% chance of being destroyed + 0 , 11 , 80 => "" // [Undead] 11+ Hit Dice: 20% chance of being destroyed + END + PHP_EACH "three_white_doves" AS "key" => "" BEGIN + LPF "ADD_ITEM_EFFECT" INT_VAR "target" = 2 "type" = 1 "opcode" = 326 "parameter2" = 1 "timing" = 1 "dicenumber" = "%key_0%" "dicesize" = "%key_1%" "probability2" = "%key_2%" STR_VAR "resource" = "doves3" END // Apply effects list (kill creature) + END + END + BUT_ONLY_IF_IT_CHANGES +END \ No newline at end of file diff --git a/eefixpack/setup-eefixpack.tp2 b/eefixpack/setup-eefixpack.tp2 index b2e4a02d..cd885b34 100644 --- a/eefixpack/setup-eefixpack.tp2 +++ b/eefixpack/setup-eefixpack.tp2 @@ -30,7 +30,7 @@ ALWAYS OUTER_SET ~game_is_%game%~ = 1 LOAD_TRA ~eefixpack/languages/%LANGUAGE%/%game%.tra~ INCLUDE ~eefixpack/files/lib/cd_spell_ids.tpa~ // sets variables such as WIZARD_MAGIC_MISSILE based on spell.ids - INCLUDE ~eefixpack/files/lib/gt_race_ids.tph~ // sets variables such as RACE_HUMAN based on race.ids + //INCLUDE ~eefixpack/files/lib/gt_race_ids.tph~ // sets variables such as RACE_HUMAN based on race.ids -- unused INCLUDE ~eefixpack/files/lib/cd_functions.tpa~ INCLUDE ~eefixpack/files/lib/gt_functions.tph~ INCLUDE ~eefixpack/files/lib/dw_functions.tph~ From 0840c64b242b714c17ba4d5668ac9879ed0e3fd5 Mon Sep 17 00:00:00 2001 From: 4Luke4 Date: Fri, 4 Apr 2025 20:55:14 +0200 Subject: [PATCH 02/12] iwd subspells file names --- eefixpack/files/lib/gt_7eyes.tph | 7 +- eefixpack/files/tph/5943_mold_touch.tph | 18 +- eefixpack/files/tph/iwdee.tph | 8 +- eefixpack/files/tph/luke/7eyes/7eyes.tph | 2 +- .../files/tph/luke/7eyes/iwd/confusion.2da | 2 +- eefixpack/files/tph/tbd_vfx_removal_iwd.tph | 349 +++++++++--------- eefixpack/setup-eefixpack.tp2 | 2 +- 7 files changed, 201 insertions(+), 187 deletions(-) diff --git a/eefixpack/files/lib/gt_7eyes.tph b/eefixpack/files/lib/gt_7eyes.tph index d5da7687..a4a07a84 100644 --- a/eefixpack/files/lib/gt_7eyes.tph +++ b/eefixpack/files/lib/gt_7eyes.tph @@ -451,6 +451,9 @@ BEGIN PATCH_IF !("%effectID%" == 142 AND ("%icon_type%" == 86 OR "%icon_type%" == 91)) OR ("%fx_parameter1%" < 0) BEGIN TEXT_SPRINT $"7eyes-o-matic#ancillary"("%fx_opcode%" "%fx_target%" "%fx_power%" "%fx_parameter1%" "%fx_parameter2%" "%fx_timing%" "%fx_resist_dispel%" "%fx_duration%" "%fx_probability1%" "%fx_probability2%" "%fx_resource%" "%fx_dicenumber%" "%fx_dicesize%" "%fx_savetype%" "%fx_savebonus%" "%fx_special%" "%fx_ind%" "%ab_ind%" "%projectile_type%") "" WRITE_SHORT "%fx_off%" 999 + END ELSE PATCH_IF !("%effectID%" == 78) OR ("%fx_parameter2%" == 6) BEGIN + TEXT_SPRINT $"7eyes-o-matic#ancillary"("%fx_opcode%" "%fx_target%" "%fx_power%" "%fx_parameter1%" "%fx_parameter2%" "%fx_timing%" "%fx_resist_dispel%" "%fx_duration%" "%fx_probability1%" "%fx_probability2%" "%fx_resource%" "%fx_dicenumber%" "%fx_dicesize%" "%fx_savetype%" "%fx_savebonus%" "%fx_special%" "%fx_ind%" "%ab_ind%" "%projectile_type%") "" + WRITE_SHORT "%fx_off%" 999 END ELSE BEGIN SET "found_other" = 1 TEXT_SPRINT $"7eyes-o-matic#other"("%fx_opcode%" "%fx_target%" "%fx_power%" "%fx_parameter1%" "%fx_parameter2%" "%fx_timing%" "%fx_resist_dispel%" "%fx_duration%" "%fx_probability1%" "%fx_probability2%" "%fx_resource%" "%fx_dicenumber%" "%fx_dicesize%" "%fx_savetype%" "%fx_savebonus%" "%fx_special%" "%fx_ind%" "%ab_ind%" "%projectile_type%") "" @@ -506,7 +509,7 @@ BEGIN INSERT_2DA_ROW "%rows%" 0 "%count% %outer_destFile% %subspell_resref%" // prettify PRETTY_PRINT_2DA - BUT_ONLY UNLESS "%outer_destFile%" + BUT_ONLY UNLESS "%outer_destFile%[ %TAB%]+%subspell_resref%" END END END @@ -557,7 +560,7 @@ BEGIN INSERT_2DA_ROW "%rows%" 0 "%count% %outer_destFile% %subspell_resref%" // prettify PRETTY_PRINT_2DA - BUT_ONLY UNLESS "%outer_destFile%" + BUT_ONLY UNLESS "%outer_destFile%[ %TAB%]+%subspell_resref%" END END END diff --git a/eefixpack/files/tph/5943_mold_touch.tph b/eefixpack/files/tph/5943_mold_touch.tph index 4d6c6f61..4f72f46c 100644 --- a/eefixpack/files/tph/5943_mold_touch.tph +++ b/eefixpack/files/tph/5943_mold_touch.tph @@ -5,18 +5,20 @@ COPY_EXISTING ~idmold.pro~ ~override~ COPY_EXISTING ~%CLERIC_MOLD_TOUCH%.spl~ ~override~ // sppr326 ~%CLERIC_MOLD_TOUCH%b.spl~ ~override~ // sppr326b - LPF DELETE_EFFECT INT_VAR match_opcode = 142 END // delete portrait icons because... - LPF ALTER_EFFECT INT_VAR match_opcode = 78 special = 7 END // we're attaching them directly to the disease effect - LPF ALTER_EFFECT INT_VAR match_opcode = 78 match_parameter2 = 12 timing = 3 duration = 0 END // we're attaching them directly to the disease effect + // LPF DELETE_EFFECT INT_VAR match_opcode = 142 END // delete portrait icons because... + // LPF ALTER_EFFECT INT_VAR match_opcode = 78 special = 7 END // we're attaching them directly to the disease effect + // LPF ALTER_EFFECT INT_VAR match_opcode = 78 match_parameter2 = 12 timing = 3 duration = 0 END // we're attaching them directly to the disease effect COPY_EXISTING ~%CLERIC_MOLD_TOUCH%.spl~ ~override~ // sppr326 - LPF ALTER_EFFECT INT_VAR match_opcode = 78 match_duration = 18 opcode = 146 parameter1 = 0 parameter2 = 2 duration = 7 - special = 0 STR_VAR resource = EVAL ~%CLERIC_MOLD_TOUCH%a~ END // change final (saved) mold touch burst to another subspell LPF CLONE_EFFECT INT_VAR match_opcode = 324 match_parameter2 = 55 parameter2 = 68 END // prevent spread to someone who already has mold + +COPY_EXISTING "cd006c.spl" "override" + LPF ALTER_EFFECT INT_VAR match_opcode = 78 match_duration = 18 opcode = 146 parameter1 = 0 parameter2 = 1 duration = 7 + special = 0 STR_VAR resource = EVAL ~%CLERIC_MOLD_TOUCH%a~ END // change final (saved) mold touch burst to another subspell LPF CLONE_EFFECT INT_VAR match_opcode = 78 match_parameter1 = 2 opcode = 206 parameter1 = 0 parameter2 = 0 - timing = 0 duration = 1 savingthrow = BIT0 STR_VAR resource = EVAL ~%CLERIC_MOLD_TOUCH%~ END - LPF ALTER_EFFECT INT_VAR match_opcode = 174 resist_dispel = 3 END // always play audio/visual - LPF ALTER_EFFECT INT_VAR match_opcode = 215 resist_dispel = 3 END // always play audio/visual + timing = 0 duration = 1 savingthrow = BIT0 STR_VAR resource = EVAL ~%DEST_RES%~ END + // LPF ALTER_EFFECT INT_VAR match_opcode = 174 resist_dispel = 3 END // always play audio/visual + // LPF ALTER_EFFECT INT_VAR match_opcode = 215 resist_dispel = 3 END // always play audio/visual COPY_EXISTING ~%CLERIC_MOLD_TOUCH%b.spl~ ~override~ // sppr326b WRITE_BYTE 0x1c 2 // spell type diff --git a/eefixpack/files/tph/iwdee.tph b/eefixpack/files/tph/iwdee.tph index cdf9c859..fde4b518 100644 --- a/eefixpack/files/tph/iwdee.tph +++ b/eefixpack/files/tph/iwdee.tph @@ -1220,11 +1220,11 @@ luke WITH_SCOPE BEGIN WITH_SCOPE BEGIN COPY_EXISTING "spcl751a.spl" "override" - LPF "ALTER_EFFECT" INT_VAR "match_opcode" = 146 "savingthrow" = 0 "savebonus" = 0 STR_VAR "match_resource" = "spcl751b" END // Cast spell + LPF "ALTER_EFFECT" INT_VAR "match_opcode" = 146 "savingthrow" = 0 "savebonus" = 0 STR_VAR "match_resource" = "cd0072" END // Cast spell BUT_ONLY_IF_IT_CHANGES END WITH_SCOPE BEGIN - COPY_EXISTING "spcl751b.spl" "override" + COPY_EXISTING "cd0072.spl" "override" LPF "ALTER_EFFECT" INT_VAR "savingthrow" = BIT0 "savebonus" = 2 END // all effects: Save vs. Spell LPF "ADD_SPELL_EFFECT" INT_VAR "insert_point" = 0 "opcode" = 321 "target" = 2 "timing" = 1 STR_VAR "resource" = "%DEST_RES%" END // Remove effects by resource BUT_ONLY_IF_IT_CHANGES @@ -1233,11 +1233,12 @@ END /* luke -**Wand of Cursing** +**Wand of Cursing** (no longer needed!) - Move all cosmetic effects into the 3 subspells - this is a "eefixpack/files/tph/luke/7eyes/silence/blindness/deafness.tph" follow-up */ +/* WITH_SCOPE BEGIN COPY_EXISTING "wand19.itm" "override" LPF "GET_V10_HEAD_EFFECTS" RET_ARRAY "v10_head_effects" END @@ -1254,6 +1255,7 @@ WITH_SCOPE BEGIN BUT_ONLY_IF_IT_CHANGES END END +*/ /* luke diff --git a/eefixpack/files/tph/luke/7eyes/7eyes.tph b/eefixpack/files/tph/luke/7eyes/7eyes.tph index df9b9804..19c7a9a0 100644 --- a/eefixpack/files/tph/luke/7eyes/7eyes.tph +++ b/eefixpack/files/tph/luke/7eyes/7eyes.tph @@ -38,7 +38,7 @@ BEGIN 55 , "null" , "DEATH_IMMUNITY" , "" , "Death, Vorpal Hit" , "51" , "" => "slay.2da" 74 , "null" , "BLIND_IMMUNITY" , "54" , "Blind, Blinded, Blindness" , "8" , "" => "blind.2da" 76 , "null" , "FEEBLEMIND_IMMUNITY" , "" , "Feeblemind, Feebleminded, Feeblemindedness, Mind Locked Away" , "48" , "cdfeeble spmindat" => "feeblemind.2da" - 78 , "null" , "DISEASE_IMMUNITY" , "" , "Gibberslug Infection, Diseased, Stricken by a foul disease" , "7" , "" => "disease.2da" + 78 , "null" , "DISEASE_IMMUNITY" , "328" , "Gibberslug Infection, Diseased, Stricken by a foul disease" , "7" , "" => "disease.2da" 80 , "null" , "DEAF_IMMUNITY" , "" , "Deaf, Deafened, Deafness" , "112" , "" => "deaf.2da" 109 , "null" , "PARALYZE_IMMUNITY" , "157" , "Paralyzed, Paralysed, Held" , "13" , "" => "paralyze.2da" 128 , "null" , "CONFUSION_IMMUNITY" , "" , "Confused, Rigid Thinking, Chaos" , "2 3 47" , "spconfus" => "confusion.2da" diff --git a/eefixpack/files/tph/luke/7eyes/iwd/confusion.2da b/eefixpack/files/tph/luke/7eyes/iwd/confusion.2da index 3d0b81cb..8a649f39 100644 --- a/eefixpack/files/tph/luke/7eyes/iwd/confusion.2da +++ b/eefixpack/files/tph/luke/7eyes/iwd/confusion.2da @@ -3,7 +3,7 @@ FILE SUBSPELL 0 BDSHA01A.SPL **** 1 INSANITY.SPL CD0071 -2 SPCL751A.SPL **** +2 SPCL751A.SPL CD0072 3 SPDR501.SPL **** 4 SPIN976.SPL **** 5 SPPR311.SPL **** diff --git a/eefixpack/files/tph/tbd_vfx_removal_iwd.tph b/eefixpack/files/tph/tbd_vfx_removal_iwd.tph index b543aa42..bdb9cfc7 100644 --- a/eefixpack/files/tph/tbd_vfx_removal_iwd.tph +++ b/eefixpack/files/tph/tbd_vfx_removal_iwd.tph @@ -36,16 +36,19 @@ COPY_EXISTING ~potn23.itm~ ~override~ // Oil of Speed - causes feeblemind - po // needs stun immunity, but can't block bonus damage COPY_EXISTING ~uarow3b.spl~ ~override~ // (itm) Hammer Arrow +1 - causes stun - portrait icon(s) 55 - additional effects [color glow] - LPF CLONE_EFFECT INT_VAR match_opcode = 45 opcode = 324 parameter1 = stun_immunity parameter2 = 110 timing = 0 resist_dispel = 0 duration = 0 STR_VAR insert = first resource = EVAL ~%SOURCE_RES%~ END + //LPF CLONE_EFFECT INT_VAR match_opcode = 45 opcode = 324 parameter1 = stun_immunity parameter2 = 110 timing = 0 resist_dispel = 0 duration = 0 STR_VAR insert = first resource = EVAL ~%SOURCE_RES%~ END +BUT_ONLY_IF_IT_CHANGES // needs stun immunity, but do special to avoid triple 324s COPY_EXISTING ~spin115.spl~ ~override~ // (spl) Mournful Wail - causes stun - portrait icon(s) 44 - sound(s) #eff_e04 [expiry sound] + LPF DELETE_EFFECT INT_VAR match_opcode = 324 match_parameter1 = stun_immunity match_parameter2 = 110 END LPF CLONE_EFFECT INT_VAR multi_match = 1 match_opcode = 45 opcode = 324 parameter1 = stun_immunity parameter2 = 110 timing = 0 resist_dispel = 0 duration = 0 probability1 = 100 probability2 = 0 STR_VAR insert = first resource = EVAL ~%SOURCE_RES%~ END // fear abilities which should have immunity checks COPY_EXISTING ~spin119.spl~ ~override~ // (spl) Great Roar - causes fear - portrait icon(s) 36 91 - additional effects [str penalty] ~spin921.spl~ ~override~ // (spl) Deathsong - causes fear - additional effects [includes attack penalty, school protection (?)] - LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 324 parameter1 = panic_immunity parameter2 = 110 timing = 0 resist_dispel = 0 duration = 0 STR_VAR insert = first resource = EVAL ~%SOURCE_RES%~ END + //LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 324 parameter1 = panic_immunity parameter2 = 110 timing = 0 resist_dispel = 0 duration = 0 STR_VAR insert = first resource = EVAL ~%SOURCE_RES%~ END +BUT_ONLY_IF_IT_CHANGES // sleep abilities which should have immunity checks COPY_EXISTING ~spin120.spl~ ~override~ // (spl) Retribution - causes sleep - additional effects [color pulse] @@ -55,8 +58,8 @@ COPY_EXISTING ~spin120.spl~ ~override~ // (spl) Retribution - causes sleep - ad // stun immunity check placed too late COPY_EXISTING ~sppr716.spl~ ~override~ // (spl) Symbol, Hopelessness - causes stun - portrait icon(s) 44 - sound(s) #eff_e04 [expiry sound, hopelesssness icon] ~spwi411.spl~ ~override~ // (spl) Emotion, Hopelessness - causes stun - portrait icon(s) 44 - sound(s) #eff_e05 [expiry sound, hopelesssness icon] - LPF CLONE_EFFECT INT_VAR match_opcode = 324 opcode = 400 STR_VAR insert = first END - LPF DELETE_EFFECT INT_VAR match_opcode = 324 END + LPF CLONE_EFFECT INT_VAR match_opcode = 324 match_parameter1 = stun_immunity match_parameter2 = 110 opcode = 400 STR_VAR insert = first END + LPF DELETE_EFFECT INT_VAR match_opcode = 324 match_parameter1 = stun_immunity match_parameter2 = 110 END LPF ALTER_EFFECT INT_VAR match_opcode = 400 opcode = 324 END ///// \\\\\ @@ -68,8 +71,12 @@ COPY_EXISTING ~ghast1.itm~ ~override~ LPF ALTER_EFFECT INT_VAR match_opcode = 146 savingthrow = BIT1 STR_VAR match_resource = ghast1 resource = ghast1n END // luke's seven eyes fix already creates subspells, but renaming subspells for bg/bg2 consistency -COPY ~override/ghast1.spl~ ~override/ghast1n.spl~ // nausea subspell +COPY_EXISTING ~ghast1.spl~ ~override/ghast1n.spl~ // nausea subspell LPF ALTER_EFFECT INT_VAR savingthrow = 0 END + LPF DELETE_EFFECT INT_VAR match_opcode = 174 match_timing = 4 match_duration = 36 END + +COPY_EXISTING ~cd006s.spl~ ~override~ // paralyze subspell + LPF CLONE_EFFECT INT_VAR match_opcode = 109 opcode = 174 timing = 4 duration = 36 parameter1 = 0 parameter2 = 0 special = 0 STR_VAR resource = "#eff_e05" END //MOVE ~override/ghast2.spl~ ~override/ghast1p.spl~ // paralyze subspell // luke's seven eyes already split this, but it needs a unique resref @@ -77,32 +84,32 @@ COPY ~override/ghast1.spl~ ~override/ghast1n.spl~ // nausea subspell // LPF ALTER_EFFECT INT_VAR match_opcode = 146 STR_VAR match_resource = icetrl resource = icetrlst END //MOVE ~override/icetrl.spl~ ~override/icetrlst.spl~ -COPY_EXISTING ~icetrlst.spl~ ~override~ - LPF ADD_SPELL_EFFECT INT_VAR opcode = 324 parameter1 = stun_immunity parameter2 = 110 STR_VAR resource = EVAL ~%DEST_RES%~ END +//COPY_EXISTING ~icetrlst.spl~ ~override~ + //LPF ADD_SPELL_EFFECT INT_VAR opcode = 324 parameter1 = stun_immunity parameter2 = 110 STR_VAR resource = EVAL ~%DEST_RES%~ END // move stun to subspell -COPY_EXISTING ~sflail.itm~ ~override~ // (itm) Flail - causes stun - additional effects - LPF DELETE_EFFECT INT_VAR match_savingthrow = BIT2 END - LPF ADD_ITEM_EFFECT INT_VAR type = 1 opcode = 146 parameter2 = 2 timing = 1 resist_dispel = 2 savingthrow = BIT2 savebonus = "-2" probability2 = 100 probability1 = 74 STR_VAR resource = sflailst END +//COPY_EXISTING ~sflail.itm~ ~override~ // (itm) Flail - causes stun - additional effects + //LPF DELETE_EFFECT INT_VAR match_savingthrow = BIT2 END + //LPF ADD_ITEM_EFFECT INT_VAR type = 1 opcode = 146 parameter2 = 2 timing = 1 resist_dispel = 2 savingthrow = BIT2 savebonus = "-2" probability2 = 100 probability1 = 74 STR_VAR resource = sflailst END // create stun subspell -COPY ~eefixpack/files/spl/cdcure.spl~ ~override/sflailst.spl~ - LPF ADD_SPELL_EFFECT INT_VAR opcode = 324 parameter1 = stun_immunity parameter2 = 110 STR_VAR resource = EVAL ~%DEST_RES%~ END // stun immunity - FOR (index = 0 ; index < 4 ; ++index) BEGIN - LPF ADD_SPELL_EFFECT INT_VAR opcode = 45 target = 2 duration = ((index + 1) * 6) probability2 = (((index + 1) * 25) - 1) probability1 = (index * 25) END - FOR (index2 = 0 ; index2 < 7 ; ++index2) BEGIN - LPF ADD_SPELL_EFFECT INT_VAR opcode = 8 target = 2 duration = ((index + 1) * 6) probability2 = (((index + 1) * 25) - 1) probability1 = (index * 25) parameter1 = ((46 << 8) + (56 << 16) + (0 << 24)) parameter2 = index2 END - END - END - LPF ADD_SPELL_EFFECT INT_VAR opcode = 139 target = 2 parameter1 = 35568 timing = 1 END // stunned string +// COPY ~eefixpack/files/spl/cdcure.spl~ ~override/sflailst.spl~ +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 324 parameter1 = stun_immunity parameter2 = 110 STR_VAR resource = EVAL ~%DEST_RES%~ END // stun immunity +// FOR (index = 0 ; index < 4 ; ++index) BEGIN +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 45 target = 2 duration = ((index + 1) * 6) probability2 = (((index + 1) * 25) - 1) probability1 = (index * 25) END +// FOR (index2 = 0 ; index2 < 7 ; ++index2) BEGIN +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 8 target = 2 duration = ((index + 1) * 6) probability2 = (((index + 1) * 25) - 1) probability1 = (index * 25) parameter1 = ((46 << 8) + (56 << 16) + (0 << 24)) parameter2 = index2 END +// END +// END +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 139 target = 2 parameter1 = 35568 timing = 1 END // stunned string // split out confusion from main insanity gaze spell //MOVE ~override/insanit2.spl~ ~override/insanitc.spl~ -COPY_EXISTING ~insanitc.spl~ ~override~ // (spl) Insanity Gaze - causes confusion feeblemind - portrait icon(s) 47 48 - sound(s) #eff_e05 - additional effects - LPF CLONE_EFFECT INT_VAR match_opcode = 128 opcode = 324 parameter1 = confusion_immunity parameter2 = 110 timing = 0 resist_dispel = 0 duration = 0 STR_VAR insert = first resource = EVAL ~%SOURCE_RES%~ END +//COPY_EXISTING ~insanitc.spl~ ~override~ // (spl) Insanity Gaze - causes confusion feeblemind - portrait icon(s) 47 48 - sound(s) #eff_e05 - additional effects + //LPF CLONE_EFFECT INT_VAR match_opcode = 128 opcode = 324 parameter1 = confusion_immunity parameter2 = 110 timing = 0 resist_dispel = 0 duration = 0 STR_VAR insert = first resource = EVAL ~%SOURCE_RES%~ END //MOVE ~override/insanit1.spl~ ~override/insanitf.spl~ -COPY_EXISTING ~insanitf.spl~ ~override~ // (spl) Insanity Gaze - causes confusion feeblemind - portrait icon(s) 47 48 - sound(s) #eff_e05 - additional effects - LPF CLONE_EFFECT INT_VAR match_opcode = 76 opcode = 324 parameter1 = feeblemind_immunity parameter2 = 110 timing = 0 resist_dispel = 0 duration = 0 STR_VAR insert = first resource = EVAL ~%SOURCE_RES%~ END +//COPY_EXISTING ~insanitf.spl~ ~override~ // (spl) Insanity Gaze - causes confusion feeblemind - portrait icon(s) 47 48 - sound(s) #eff_e05 - additional effects + //LPF CLONE_EFFECT INT_VAR match_opcode = 76 opcode = 324 parameter1 = feeblemind_immunity parameter2 = 110 timing = 0 resist_dispel = 0 duration = 0 STR_VAR insert = first resource = EVAL ~%SOURCE_RES%~ END // luke's seven eyes fix already creates subspells, but renaming subspells for bg/bg2 consistency //COPY_EXISTING ~insanity.spl~ ~override~ // (spl) Insanity Gaze - causes confusion feeblemind - portrait icon(s) 47 48 - sound(s) #eff_e05 - additional effects @@ -111,101 +118,101 @@ COPY_EXISTING ~insanitf.spl~ ~override~ // (spl) Insanity Gaze - causes confusio // luke's seven eyes fix already creates subspells, but renaming subspells for bg/bg2 consistency //MOVE ~override/spcl415b.spl~ ~override/spcl415h.spl~ -COPY ~eefixpack/files/spl/spcl415h.spl~ ~override~ // just the hold ability farmed out into separate spell - LPF ALTER_EFFECT INT_VAR match_opcode = 324 parameter1 = hold_immunity END +//COPY ~eefixpack/files/spl/spcl415h.spl~ ~override~ // just the hold ability farmed out into separate spell + //LPF ALTER_EFFECT INT_VAR match_opcode = 324 parameter1 = hold_immunity END //COPY_EXISTING ~spcl415.spl~ ~override~ // LPF ALTER_EFFECT INT_VAR match_opcode = 146 STR_VAR match_resource = spcl415b resource = spcl415h END // chromatic orb - subspells for hold (7), blind (1,4), and stun (6) -COPY_EXISTING ~spdr101.spl~ ~override~ // Chromatic Orb (druid) - ~spwi118.spl~ ~override~ // Chromatic Orb (arcane) - // hold - LPF ALTER_EFFECT INT_VAR header = 5 match_opcode = 175 opcode = 146 parameter2 = 2 timing = 1 duration = 0 savingthrow = 17 STR_VAR resource = spwi118f END // change hold to cast spell - LPF DELETE_EFFECT INT_VAR header = 5 match_savingthrow = BIT0 END // delete other hold effects - LPF ALTER_EFFECT INT_VAR header = 5 match_savingthrow = 17 savingthrow = BIT0 END // reinstate savingthrow - // blind - LPF DELETE_EFFECT INT_VAR match_opcode = 74 END // delete blind effect from headers 0 and 3 - LPF DELETE_EFFECT INT_VAR match_opcode = 142 match_parameter2 = 8 END // delete blind icon from headers 0 and 3 - LPF DELETE_EFFECT INT_VAR match_opcode = 139 match_parameter1 = 37800 END // uses strref 37800 "blinded" on header 0, 3 - LPF ALTER_EFFECT INT_VAR header = 0 match_opcode = 174 match_timing = 4 opcode = 146 parameter2 = 2 timing = 1 duration = 0 STR_VAR resource = spwi118a END // change expiry sounds to spell casts - LPF ALTER_EFFECT INT_VAR header = 3 match_opcode = 174 match_timing = 4 opcode = 146 parameter2 = 2 timing = 1 duration = 0 STR_VAR resource = spwi118d END // change expiry sounds to spell casts - // stun - LPF DELETE_EFFECT INT_VAR match_opcode = 45 END // delete stun effect from headers 4 and 6 25862 - LPF DELETE_EFFECT INT_VAR header = 4 match_opcode = 139 match_parameter1 = 35568 END // delete stun string from headers 4 - LPF ALTER_EFFECT INT_VAR header = 4 match_opcode = 174 match_timing = 4 opcode = 146 parameter2 = 2 timing = 1 duration = 0 STR_VAR resource = spwi118e END // change expiry sounds to spell casts +// COPY_EXISTING ~spdr101.spl~ ~override~ // Chromatic Orb (druid) +// ~spwi118.spl~ ~override~ // Chromatic Orb (arcane) +// // hold +// LPF ALTER_EFFECT INT_VAR header = 5 match_opcode = 175 opcode = 146 parameter2 = 2 timing = 1 duration = 0 savingthrow = 17 STR_VAR resource = spwi118f END // change hold to cast spell +// LPF DELETE_EFFECT INT_VAR header = 5 match_savingthrow = BIT0 END // delete other hold effects +// LPF ALTER_EFFECT INT_VAR header = 5 match_savingthrow = 17 savingthrow = BIT0 END // reinstate savingthrow +// // blind +// LPF DELETE_EFFECT INT_VAR match_opcode = 74 END // delete blind effect from headers 0 and 3 +// LPF DELETE_EFFECT INT_VAR match_opcode = 142 match_parameter2 = 8 END // delete blind icon from headers 0 and 3 +// LPF DELETE_EFFECT INT_VAR match_opcode = 139 match_parameter1 = 37800 END // uses strref 37800 "blinded" on header 0, 3 +// LPF ALTER_EFFECT INT_VAR header = 0 match_opcode = 174 match_timing = 4 opcode = 146 parameter2 = 2 timing = 1 duration = 0 STR_VAR resource = spwi118a END // change expiry sounds to spell casts +// LPF ALTER_EFFECT INT_VAR header = 3 match_opcode = 174 match_timing = 4 opcode = 146 parameter2 = 2 timing = 1 duration = 0 STR_VAR resource = spwi118d END // change expiry sounds to spell casts +// // stun +// LPF DELETE_EFFECT INT_VAR match_opcode = 45 END // delete stun effect from headers 4 and 6 25862 +// LPF DELETE_EFFECT INT_VAR header = 4 match_opcode = 139 match_parameter1 = 35568 END // delete stun string from headers 4 +// LPF ALTER_EFFECT INT_VAR header = 4 match_opcode = 174 match_timing = 4 opcode = 146 parameter2 = 2 timing = 1 duration = 0 STR_VAR resource = spwi118e END // change expiry sounds to spell casts -// create stun subspell for chromatic orb -COPY ~eefixpack/files/spl/cdcure.spl~ ~override/spwi118e.spl~ // create blind subspell for header 0 - LPF ADD_SPELL_EFFECT INT_VAR opcode = 324 parameter1 = stun_immunity parameter2 = 110 STR_VAR resource = EVAL ~%DEST_RES%~ END - LPF ADD_SPELL_EFFECT INT_VAR opcode = 45 target = 2 duration = 18 END // add stun effect - LPF ADD_SPELL_EFFECT INT_VAR opcode = 139 target = 2 parameter1 = 35568 timing = 1 END // add stun string - LPF ADD_SPELL_EFFECT INT_VAR opcode = 174 target = 2 timing = 4 duration = 18 STR_VAR resource = ~#eff_e05~ END // add expiry sound +// // create stun subspell for chromatic orb +// COPY ~eefixpack/files/spl/cdcure.spl~ ~override/spwi118e.spl~ // create blind subspell for header 0 +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 324 parameter1 = stun_immunity parameter2 = 110 STR_VAR resource = EVAL ~%DEST_RES%~ END +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 45 target = 2 duration = 18 END // add stun effect +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 139 target = 2 parameter1 = 35568 timing = 1 END // add stun string +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 174 target = 2 timing = 4 duration = 18 STR_VAR resource = ~#eff_e05~ END // add expiry sound -// create blind subspells for chromatic orb -COPY ~eefixpack/files/spl/cdcure.spl~ ~override/spwi118a.spl~ // create blind subspell for header 0 - LPF ADD_SPELL_EFFECT INT_VAR opcode = 74 target = 2 duration = 6 END // add blind effect - LPF ADD_SPELL_EFFECT INT_VAR opcode = 142 target = 2 parameter2 = 8 duration = 6 END // add blind icon - LPF ADD_SPELL_EFFECT INT_VAR opcode = 139 target = 2 parameter1 = 37800 timing = 1 END // add blinded string - LPF ADD_SPELL_EFFECT INT_VAR opcode = 174 target = 2 parameter1 = 10 timing = 4 duration = 6 STR_VAR resource = ~#eff_e05~ END // add expiry sound -COPY_EXISTING ~spwi118a.spl~ ~override/spwi118d.spl~ // create blind subspell for header 3 - LPF ALTER_EFFECT INT_VAR match_duration = 6 duration = 24 END +// // create blind subspells for chromatic orb +// COPY ~eefixpack/files/spl/cdcure.spl~ ~override/spwi118a.spl~ // create blind subspell for header 0 +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 74 target = 2 duration = 6 END // add blind effect +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 142 target = 2 parameter2 = 8 duration = 6 END // add blind icon +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 139 target = 2 parameter1 = 37800 timing = 1 END // add blinded string +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 174 target = 2 parameter1 = 10 timing = 4 duration = 6 STR_VAR resource = ~#eff_e05~ END // add expiry sound +// COPY_EXISTING ~spwi118a.spl~ ~override/spwi118d.spl~ // create blind subspell for header 3 +// LPF ALTER_EFFECT INT_VAR match_duration = 6 duration = 24 END -// create hold subspell for chromatic orb -COPY ~eefixpack/files/spl/cdcure.spl~ ~override/spwi118f.spl~ // create hold subspell for header 0 - LPF ADD_SPELL_EFFECT INT_VAR opcode = 324 target = 2 power = 1 parameter1 = hold_immunity parameter2 = 110 STR_VAR resource = EVAL ~%DEST_RES%~ END - LPF ADD_SPELL_EFFECT INT_VAR opcode = 175 target = 2 power = 1 parameter2 = 3 duration = 78 END // add hold effect - LPF ADD_SPELL_EFFECT INT_VAR opcode = 142 target = 2 power = 1 parameter2 = 13 duration = 78 END // add hold icon - LPF ADD_SPELL_EFFECT INT_VAR opcode = 174 target = 2 power = 1 timing = 4 duration = 78 STR_VAR resource = ~#eff_e05~ END // add expiry sound +// // create hold subspell for chromatic orb +// COPY ~eefixpack/files/spl/cdcure.spl~ ~override/spwi118f.spl~ // create hold subspell for header 0 +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 324 target = 2 power = 1 parameter1 = hold_immunity parameter2 = 110 STR_VAR resource = EVAL ~%DEST_RES%~ END +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 175 target = 2 power = 1 parameter2 = 3 duration = 78 END // add hold effect +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 142 target = 2 power = 1 parameter2 = 13 duration = 78 END // add hold icon +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 174 target = 2 power = 1 timing = 4 duration = 78 STR_VAR resource = ~#eff_e05~ END // add expiry sound // poison immunity blocking hold, needs hold subspell -COPY_EXISTING ~spwi028.spl~ ~override/spwi028h.spl~ // (spl) - causes hold poison - portrait icon(s) 6 13 - LPF DELETE_EFFECT INT_VAR match_savingthrow = BIT2 END // delete poison - LPF DELETE_EFFECT INT_VAR match_opcode = 318 END // poison protections - LPF DELETE_EFFECT INT_VAR match_opcode = 12 END // delete damage - LPM cd_make_subspell +// COPY_EXISTING ~spwi028.spl~ ~override/spwi028h.spl~ // (spl) - causes hold poison - portrait icon(s) 6 13 +// LPF DELETE_EFFECT INT_VAR match_savingthrow = BIT2 END // delete poison +// LPF DELETE_EFFECT INT_VAR match_opcode = 318 END // poison protections +// LPF DELETE_EFFECT INT_VAR match_opcode = 12 END // delete damage +// LPM cd_make_subspell // poison immunity blocking hold, needs hold subspell COPY_EXISTING ~spwi028.spl~ ~override~ // (spl) - causes hold poison - portrait icon(s) 6 13 - LPF CLONE_EFFECT INT_VAR match_opcode = 175 opcode = 146 parameter2 = 2 timing = 1 duration = 0 savingthrow = 17 STR_VAR resource = spwi028h insert = first END // change hold to cast spell - LPF DELETE_EFFECT INT_VAR match_savingthrow = BIT0 END // delete other hold effects - LPF ALTER_EFFECT INT_VAR match_opcode = 146 match_savingthrow = 17 savingthrow = BIT0 END // reinstate savingthrow + LPF CLONE_EFFECT INT_VAR match_opcode = 326 match_parameter1 = hold_immunity match_parameter2 = 111 opcode = 400 STR_VAR insert = first END // change hold to cast spell + LPF DELETE_EFFECT INT_VAR match_opcode = 326 match_parameter1 = hold_immunity match_parameter2 = 111 END // delete other hold effects + LPF ALTER_EFFECT INT_VAR match_opcode = 400 opcode = 326 END // reinstate savingthrow // poison immunity stepping on confusion, move confusion to subspell -COPY_EXISTING ~spwi029.spl~ ~override/spwi029c.spl~ // (spl) - causes confusion poison - portrait icon(s) 6 3 - LPF DELETE_EFFECT INT_VAR match_savingthrow = 0 END // deletes damage, generic effects - LPF DELETE_EFFECT INT_VAR match_savingthrow = BIT2 END // deletes poison stuff - LPM cd_make_subspell +// COPY_EXISTING ~spwi029.spl~ ~override/spwi029c.spl~ // (spl) - causes confusion poison - portrait icon(s) 6 3 +// LPF DELETE_EFFECT INT_VAR match_savingthrow = 0 END // deletes damage, generic effects +// LPF DELETE_EFFECT INT_VAR match_savingthrow = BIT2 END // deletes poison stuff +// LPM cd_make_subspell // poison immunity stepping on confusion COPY_EXISTING ~spwi029.spl~ ~override~ // (spl) - causes confusion poison - portrait icon(s) 6 3 - LPF CLONE_EFFECT INT_VAR match_opcode = 139 match_parameter1 = 37604 opcode = 146 parameter1 = 0 parameter2 = 2 savingthrow = 0 STR_VAR insert = first resource = spwi029c END - LPF DELETE_EFFECT INT_VAR match_savingthrow = BIT0 END // deletes confusion stuff - LPF ALTER_EFFECT INT_VAR match_opcode = 146 savingthrow = BIT0 END // the old switcheroo + LPF CLONE_EFFECT INT_VAR match_opcode = 326 match_parameter1 = confusion_immunity match_parameter2 = 111 opcode = 400 STR_VAR insert = first END + LPF DELETE_EFFECT INT_VAR match_opcode = 326 match_parameter1 = confusion_immunity match_parameter2 = 111 END // deletes confusion stuff + LPF ALTER_EFFECT INT_VAR match_opcode = 400 opcode = 326 END // the old switcheroo // luke and david's code was conflicting in splitting great shout the seven eyes/immunity fixes, so I've disabled it in their code blocks and handling it myself -COPY_EXISTING ~spwi806.spl~ ~override~ // (spl) Great Shout - causes deafness pause sleep - portrait icon(s) 112 - additional effects - LPF ALTER_EFFECT INT_VAR match_opcode = 146 savingthrow = 0 END // remove save from already-created death subspell - LPF ALTER_EFFECT INT_VAR match_opcode = 139 match_parameter1 = 14073 opcode = 146 parameter1 = 0 parameter2 = 2 savingthrow = 0 STR_VAR resource = dwfpgs01 END // turn deaf string into spell cast - LPF ALTER_EFFECT INT_VAR match_opcode = 139 match_parameter1 = 35568 opcode = 146 parameter1 = 0 parameter2 = 2 savingthrow = 0 STR_VAR resource = dwfpgs02 END // turn stun string into spell cast - LPF DELETE_EFFECT INT_VAR match_target = 2 match_savingthrow = BIT0 END // delete leftovers - LPF DELETE_EFFECT INT_VAR match_target = 2 match_duration = 6 END // delete leftovers - LPF DELETE_EFFECT INT_VAR match_target = 2 match_duration = 12 END // delete leftovers - -COPY ~eefixpack/files/spl/cdcure.spl~ ~override/dwfpgs01.spl~ // (spl) Great Shout - deaf subspell - LPF ADD_SPELL_EFFECT INT_VAR opcode = 80 target = 2 duration = 12 END // deaf, no save - LPF ADD_SPELL_EFFECT INT_VAR opcode = 142 target = 2 duration = 12 parameter2 = 112 END // deaf icon, no save - LPF CLONE_EFFECT INT_VAR match_duration = 12 duration = 24 savingthrow = BIT0 END // clone into 24s deaf & icon w/ save - LPF ADD_SPELL_EFFECT INT_VAR opcode = 139 target = 2 timing = 1 parameter1 = 14073 END // deaf string - -COPY ~eefixpack/files/spl/cdcure.spl~ ~override/dwfpgs02.spl~ // (spl) Great Shout - stun subspell - LPF ADD_SPELL_EFFECT INT_VAR opcode = 324 target = 2 power = 1 parameter1 = stun_immunity parameter2 = 110 STR_VAR resource = EVAL ~%DEST_RES%~ END - LPF ADD_SPELL_EFFECT INT_VAR opcode = 45 target = 2 duration = 6 END // stun, no save - LPF ADD_SPELL_EFFECT INT_VAR opcode = 45 target = 2 duration = 12 savingthrow = BIT0 END // stun, save - LPF ADD_SPELL_EFFECT INT_VAR opcode = 139 target = 2 timing = 1 parameter1 = 35568 END // stunned string - -COPY_EXISTING ~dwfpgs03.spl~ ~override~ // (spl) Great Shout - kill subspell -// LPF CLONE_EFFECT INT_VAR multi_match = 1 match_opcode = 13 opcode = 324 parameter1 = death_immunity parameter2 = 110 timing = 0 resist_dispel = 0 duration = 0 dicenumber = 0 dicesize = 0 STR_VAR insert = first resource = EVAL ~%SOURCE_RES%~ END - LPF ALTER_EFFECT INT_VAR resist_dispel = 0 END // main 146 already has MR check +// COPY_EXISTING ~spwi806.spl~ ~override~ // (spl) Great Shout - causes deafness pause sleep - portrait icon(s) 112 - additional effects +// LPF ALTER_EFFECT INT_VAR match_opcode = 146 savingthrow = 0 END // remove save from already-created death subspell +// LPF ALTER_EFFECT INT_VAR match_opcode = 139 match_parameter1 = 14073 opcode = 146 parameter1 = 0 parameter2 = 2 savingthrow = 0 STR_VAR resource = dwfpgs01 END // turn deaf string into spell cast +// LPF ALTER_EFFECT INT_VAR match_opcode = 139 match_parameter1 = 35568 opcode = 146 parameter1 = 0 parameter2 = 2 savingthrow = 0 STR_VAR resource = dwfpgs02 END // turn stun string into spell cast +// LPF DELETE_EFFECT INT_VAR match_target = 2 match_savingthrow = BIT0 END // delete leftovers +// LPF DELETE_EFFECT INT_VAR match_target = 2 match_duration = 6 END // delete leftovers +// LPF DELETE_EFFECT INT_VAR match_target = 2 match_duration = 12 END // delete leftovers + +// COPY ~eefixpack/files/spl/cdcure.spl~ ~override/dwfpgs01.spl~ // (spl) Great Shout - deaf subspell +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 80 target = 2 duration = 12 END // deaf, no save +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 142 target = 2 duration = 12 parameter2 = 112 END // deaf icon, no save +// LPF CLONE_EFFECT INT_VAR match_duration = 12 duration = 24 savingthrow = BIT0 END // clone into 24s deaf & icon w/ save +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 139 target = 2 timing = 1 parameter1 = 14073 END // deaf string + +// COPY ~eefixpack/files/spl/cdcure.spl~ ~override/dwfpgs02.spl~ // (spl) Great Shout - stun subspell +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 324 target = 2 power = 1 parameter1 = stun_immunity parameter2 = 110 STR_VAR resource = EVAL ~%DEST_RES%~ END +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 45 target = 2 duration = 6 END // stun, no save +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 45 target = 2 duration = 12 savingthrow = BIT0 END // stun, save +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 139 target = 2 timing = 1 parameter1 = 35568 END // stunned string + +// COPY_EXISTING ~dwfpgs03.spl~ ~override~ // (spl) Great Shout - kill subspell +// // LPF CLONE_EFFECT INT_VAR multi_match = 1 match_opcode = 13 opcode = 324 parameter1 = death_immunity parameter2 = 110 timing = 0 resist_dispel = 0 duration = 0 dicenumber = 0 dicesize = 0 STR_VAR insert = first resource = EVAL ~%SOURCE_RES%~ END +// LPF ALTER_EFFECT INT_VAR resist_dispel = 0 END // main 146 already has MR check ///// \\\\\ ///// berserk \\\\\ @@ -218,8 +225,8 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#cureber.spl~ PATCH_FOR_EACH res IN // ~#beltyn~ // (spl) - causes berserk - portrait icon(s) 4 // ~spin188~ // (spl) Sprays Spores - causes berserk fear stun - portrait icon(s) 55 36 4 - ~sppr422~ // (spl) Blood Rage - causes berserk - portrait icon(s) 176 - additional effects [all bonuses drawn from berserk] - ~sppr522~ // (spl) Animal Rage - causes berserk - portrait icon(s) 173 - additional effects + ~cd0002~ // (spl) Blood Rage - causes berserk - portrait icon(s) 176 - additional effects [all bonuses drawn from berserk] + ~cd0003~ // (spl) Animal Rage - causes berserk - portrait icon(s) 173 - additional effects ~sppr522b~ // (spl) - causes berserk - portrait icon(s) 4 // ~u2hax5a~ // (itm) Foe's Fate +4 - causes berserk - portrait icon(s) 4 // ~udart2a~ // (itm) Berserker Darts - causes berserk - portrait icon(s) 4 @@ -235,7 +242,7 @@ COPY_EXISTING ~bpdispel.spl~ ~override~ // - cures berserk b ~ohsmode4.spl~ ~override~ // [story mode] - cures berserk blind confusion deafness disease fear feeblemind hold level drain poison sleep stun ~ohtyr1.spl~ ~override~ // Exaltation - cures berserk confusion drunkenness fear feeblemind sleep - portrait icon(s) 174 37 - additional effects ~sppr321.spl~ ~override~ // Exaltation - cures berserk confusion drunkenness fear feeblemind sleep - portrait icon(s) 174 37 - additional effects - LPF ALTER_EFFECT INT_VAR match_opcode = 4 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#cureber~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 4 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#cureber~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_berserk END BUT_ONLY @@ -252,7 +259,7 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curebld.spl~ // ~sorb~ // (itm) Searing Orb - causes blind - portrait icon(s) 8 // ~spcl239a~ // (spl) - causes blind - portrait icon(s) 8 // ~spdm101~ // (spl) Blindness - causes blind - portrait icon(s) 8 -// ~spdr101~ // (spl) Chromatic Orb - causes blind hold stun - portrait icon(s) 8 55 13 - sound(s) #eff_m05 #eff_e05 - additional effects + ~cd005l~ // (spl) Chromatic Orb - causes blind hold stun - portrait icon(s) 8 55 13 - sound(s) #eff_m05 #eff_e05 - additional effects // ~sppr115~ // (spl) Sunscorch - causes blind - portrait icon(s) 8 // ~sppr313~ // (spl) Holy Smite - causes blind - portrait icon(s) 8 // ~sppr423~ // (spl) Cloud of Pestilence - causes blind - portrait icon(s) 8 - additional effects @@ -265,9 +272,9 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curebld.spl~ // ~spwi105~ // (spl) Color Spray - causes blind pause sleep stun - portrait icon(s) 8 - additional effects // ~spwi106~ // (spl) Blindness - causes blind - portrait icon(s) 8 // ~spwi118~ // (spl) Chromatic Orb - causes blind hold stun [blind at 1,4 moved to spwi118a & d] - ~spwi118a~ // (spl) Chromatic Orb - causes blind hold stun [blind from level 1] - ~spwi118d~ // (spl) Chromatic Orb - causes blind hold stun [blind from level 4] - ~spwi224~ // (spl) Glitterdust - causes blind - portrait icon(s) 128 8 - sound(s) EFF_E07 [expiry sound, glitterdust icon] + ~cd005w~ // (spl) Chromatic Orb - causes blind hold stun [blind from level 1] + //~spwi118d~ // (spl) Chromatic Orb - causes blind hold stun [blind from level 4] + ~cd005x~ // (spl) Glitterdust - causes blind - portrait icon(s) 128 8 - sound(s) EFF_E07 [expiry sound, glitterdust icon] ~spwi226~ // (spl) Blindness - causes blind - portrait icon(s) 8 - sound(s) #eff_e01 [expiry sound] // ~spwi714~ // (spl) Prismatic Spray - causes blind feeblemind - portrait icon(s) 8 48 171 // ~spwi815~ // (spl) Power Word, Blind - causes blind - portrait icon(s) 8 @@ -295,7 +302,7 @@ COPY_EXISTING ~adisease.itm~ ~override~ // Mummy's Tea - cures blind deafness di ~spwish28.spl~ ~override~ // Heal - cures blind deafness disease drunkenness feeblemind poison ~spwish39.spl~ ~override~ // Heal - cures blind deafness disease drunkenness feeblemind poison ~spwm168.spl~ ~override~ // Heal - cures blind deafness disease drunkenness feeblemind poison - LPF ALTER_EFFECT INT_VAR match_opcode = 75 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curebld~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 75 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curebld~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_blind END BUT_ONLY @@ -312,16 +319,16 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curecon.spl~ PATCH_FOR_EACH res IN // ~bdsha01a~ // (spl) - causes confusion - portrait icon(s) 3 // ~insanity~ // (spl) Insanity Gaze - causes confusion feeblemind - portrait icon(s) 47 48 - sound(s) #eff_e05 - additional effects [confusion routed to insanitc.spl] - ~insanitc~ // (spl) Insanity Gaze - [confusion from to insanity.spl] + ~cd0071~ // (spl) Insanity Gaze - [confusion from to insanity.spl] // ~spcl751a~ // (spl) - causes confusion sleep [bard song, refreshes every round so don't bother] ~spdr501~ // (spl) Chaos - causes confusion - portrait icon(s) 3 - sound(s) #eff_e05 [expiry sound] - ~spin704~ // (spl) Confusion - causes confusion - portrait icon(s) 3 - sound(s) #EFF_E05 [expiry sound] + //~spin704~ // (spl) Confusion - causes confusion - portrait icon(s) 3 - sound(s) #EFF_E05 [expiry sound] -- does not exist in iwd ~spin976~ // (spl) Confusion - causes confusion - portrait icon(s) 3 - sound(s) EFF_E05 [expiry sound] ~sppr311~ // (spl) Rigid Thinking - causes confusion - portrait icon(s) 2 - sound(s) #eff_e05 [expiry sound] ~sppr709~ // (spl) Confusion - causes confusion - portrait icon(s) 3 - sound(s) #eff_e05 [expiry sound] ~sppr983~ // (spl) Confusion - causes confusion - portrait icon(s) 3 - sound(s) EFF_E05 [expiry sound] // ~spwi029~ // (spl) - causes confusion poison - portrait icon(s) 6 3 [confusion moved to spwi029c subspell] - ~spwi029c~ // (spl) - [confusion subspell from spwi029, has expiry sound] + ~cd0073~ // (spl) - [confusion subspell from spwi029, has expiry sound] ~spwi401~ // (spl) Confusion - causes confusion - portrait icon(s) 3 - sound(s) #eff_e05 [expiry sound] ~spwi508~ // (spl) Chaos - causes confusion - portrait icon(s) 47 - sound(s) #eff_e05 [expiry sound] // ~spwi711~ // (spl) Sphere of Chaos - causes confusion hold sleep - portrait icon(s) 38 - additional effects @@ -344,7 +351,7 @@ COPY_EXISTING ~bpdispel.spl~ ~override~ // - cures berserk b ~sppr713.spl~ ~override~ // Greater Restoration - cures confusion disease fear feeblemind level drain poison ~spwish07.spl~ ~override~ // Greater Restoration - cures confusion disease fear feeblemind level drain poison ~spwish46.spl~ ~override~ // Greater Restoration - cures confusion disease fear feeblemind level drain poison - LPF ALTER_EFFECT INT_VAR match_opcode = 242 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curecon~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 242 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curecon~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_confusion END BUT_ONLY @@ -405,7 +412,7 @@ COPY_EXISTING ~adisease.itm~ ~override~ // Mummy's Tea - cures blind deafness di ~spwish28.spl~ ~override~ // Heal - cures blind deafness disease drunkenness feeblemind poison ~spwish39.spl~ ~override~ // Heal - cures blind deafness disease drunkenness feeblemind poison ~spwm168.spl~ ~override~ // Heal - cures blind deafness disease drunkenness feeblemind poison - LPF ALTER_EFFECT INT_VAR match_opcode = 81 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curedef~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 81 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curedef~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_deafness END BUT_ONLY @@ -426,9 +433,9 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curedis.spl~ // ~spidwr1~ // (itm) - causes disease - portrait icon(s) 7 // ~spin190~ // (spl) - causes disease sleep - [causes all sorts of stuff, but self-contained] // ~sppr320~ // (spl) Cause Disease - causes disease - portrait icon(s) 7 - ~sppr326~ // (spl) Mold Touch - causes disease - additional effects [clear out mold_touch spellstate] + ~cd006c~ // (spl) Mold Touch - causes disease - additional effects [clear out mold_touch spellstate] // ~sppr326a~ // (spl) - causes disease - ~sppr326b~ // (spl) - causes disease - additional effects [clear out mold_touch spellstate] + ~cd006d~ // (spl) - causes disease - additional effects [clear out mold_touch spellstate] // ~spwi018~ // (spl) - causes disease // ~spwi409~ // (spl) Contagion - causes disease // ~u2hax3a~ // (itm) Infected Two-Handed Axe +2 - causes disease @@ -464,7 +471,7 @@ COPY_EXISTING ~adisease.itm~ ~override~ // Mummy's Tea - cures blind deafness di ~spwish46.spl~ ~override~ // Greater Restoration - cures confusion disease fear feeblemind level drain poison ~spwm168.spl~ ~override~ // Heal - cures blind deafness disease drunkenness feeblemind poison ~trollde.itm~ ~override~ // - cures disease poison - LPF ALTER_EFFECT INT_VAR match_opcode = 79 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curedis~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 79 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curedis~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_disease END BUT_ONLY @@ -503,7 +510,7 @@ COPY_EXISTING ~devaheal.spl~ ~override~ // Heal - cures blind deafness disease d ~spwish28.spl~ ~override~ // Heal - cures blind deafness disease drunkenness feeblemind poison ~spwish39.spl~ ~override~ // Heal - cures blind deafness disease drunkenness feeblemind poison ~spwm168.spl~ ~override~ // Heal - cures blind deafness disease drunkenness feeblemind poison - LPF ALTER_EFFECT INT_VAR match_opcode = 164 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curedrk~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 164 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curedrk~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_drunkenness END BUT_ONLY @@ -516,7 +523,7 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curefer.spl~ LPF ADD_SPELL_EFFECT INT_VAR opcode = 161 target = 2 timing = 1 END // cure: fear LPF ADD_SPELL_EFFECT INT_VAR opcode = 240 target = 2 timing = 1 parameter2 = 36 END // remove icon: panic PATCH_FOR_EACH res IN - ~#cofear~ // (spl) - causes fear - portrait icon(s) 36 - additional effects [clear out stacking protection, too] + ~cd0030~ // (spl) - causes fear - portrait icon(s) 36 - additional effects [clear out stacking protection, too] // ~bdsha01c~ // (spl) - causes fear - portrait icon(s) 36 // ~bearspir~ // (itm) Attack - causes fear // ~flpr717a~ // (spl) - causes fear - portrait icon(s) 36 @@ -527,12 +534,12 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curefer.spl~ // ~spbatt5~ // (itm) Attack - causes fear // ~spcl103~ // (spl) Aura of Despair - causes fear - portrait icon(s) 36 - additional effects [mixed - causes fear at higher levels, but rest of effects are from "despair"] ~spcl908~ // (spl) War Cry - causes fear - portrait icon(s) 36 - sound(s) EFF_E05 [expiry sound] - ~spin119~ // (spl) Great Roar - causes fear - portrait icon(s) 36 91 - additional effects [str penalty] + ~cd0038~ // (spl) Great Roar - causes fear - portrait icon(s) 36 91 - additional effects [str penalty] // ~spin139~ // (spl) Harpy Wail - causes fear stun - portrait icon(s) 36 - additional effects [combined fear/stun] // ~spin145~ // (spl) Fear - causes fear - portrait icon(s) 36 // ~spin173~ // (spl) Aura of Fear - causes fear - portrait icon(s) 36 // ~spin188~ // (spl) Sprays Spores - causes berserk fear stun - portrait icon(s) 55 36 4 - ~spin921~ // (spl) Deathsong - causes fear - additional effects [includes attack penalty, school protection (?)] + ~cd003b~ // (spl) Deathsong - causes fear - additional effects [includes attack penalty, school protection (?)] // ~sppr517~ // (spl) Insect Plague - causes fear - portrait icon(s) 36 105 - animations(s) #insects - additional effects ~sppr706~ // (spl) Symbol, Fear - causes fear - portrait icon(s) 36 - sound(s) #eff_e04 [expiry sound] // ~spwi036~ // (spl) Horror - causes fear - portrait icon(s) 36 - additional effects @@ -618,7 +625,7 @@ COPY_EXISTING ~#palfear.spl~ ~override~ // - cures fear ~vampreg.itm~ ~override~ // Ring - cures fear - additional effects ~vampreg1.itm~ ~override~ // Ring - cures fear - additional effects ~virgin.itm~ ~override~ // Wailing of Virgins - cures fear - LPF ALTER_EFFECT INT_VAR match_opcode = 161 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curefer~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 161 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curefer~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_fear END BUT_ONLY @@ -632,7 +639,7 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curefbm.spl~ LPF ADD_SPELL_EFFECT INT_VAR opcode = 240 target = 2 timing = 1 parameter2 = 48 END // remove icon: feeblemind PATCH_FOR_EACH res IN // ~insanity~ // (spl) Insanity Gaze - causes confusion feeblemind - portrait icon(s) 47 48 - sound(s) #eff_e05 - additional effects [feeblemind has no ongoing effects] - ~potn23~ // (itm) Oil of Speed - causes feeblemind - portrait icon(s) 48 - sound(s) #eff_e07 [expiry sound] + ~cd0063~ // (itm) Oil of Speed - causes feeblemind - portrait icon(s) 48 - sound(s) #eff_e07 [expiry sound] ~sppr650~ // (spl) Spiritual Lock - causes feeblemind - portrait icon(s) 48 - sound(s) EFF_E05 [expiry sound] // ~spwi509~ // (spl) Feeblemind - causes feeblemind - portrait icon(s) 48 // ~spwi714~ // (spl) Prismatic Spray - causes blind feeblemind - portrait icon(s) 8 48 171 @@ -675,7 +682,7 @@ COPY_EXISTING ~arow07.itm~ ~override~ // Arrow of Dispelling - cures deafness ~spwish39.spl~ ~override~ // Heal - cures blind deafness disease drunkenness feeblemind poison ~spwish46.spl~ ~override~ // Greater Restoration - cures confusion disease fear feeblemind level drain poison ~spwm168.spl~ ~override~ // Heal - cures blind deafness disease drunkenness feeblemind poison - LPF ALTER_EFFECT INT_VAR match_opcode = 77 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curefbm~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 77 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curefbm~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_feeblemind END BUT_ONLY @@ -690,16 +697,16 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curehol.spl~ PATCH_FOR_EACH res IN // ~amulfle~ // (itm) Amulet of Dark Flesh - causes disease hold // ~basill1~ // (itm) Attack - causes hold - ~carrio1~ // (itm) Ghoul hand - causes hold - portrait icon(s) 13 - sound(s) #eff_e05 [expiry sound] + ~cd006r~ // (itm) Ghoul hand - causes hold - portrait icon(s) 13 - sound(s) #eff_e05 [expiry sound] // ~ghast1~ // (itm) Ghoul Touch - causes hold - portrait icon(s) 13 [hold routed to ghast1p.spl] - ~ghast1p~ // (spl) Ghoul Touch [paralyze subspell] - ~ghoul1~ // (itm) Ghoul Touch - causes hold - portrait icon(s) 13 - sound(s) #eff_e05 [expiry sound] - ~ghoult~ // (itm) Ghoul Touch - causes hold - portrait icon(s) 13 - sound(s) #eff_e05 [expiry sound] + ~cd006s~ // (spl) Ghoul Touch [paralyze subspell] + ~cd006t~ // (itm) Ghoul Touch - causes hold - portrait icon(s) 13 - sound(s) #eff_e05 [expiry sound] + ~cd006u~ // (itm) Ghoul Touch - causes hold - portrait icon(s) 13 - sound(s) #eff_e05 [expiry sound] // ~ltouch~ // (spl) - causes hold - portrait icon(s) 13 // ~spcl415~ // (spl) [special snare] - causes hold [hold shunted to spcl415h.spl] - ~spcl415h~ // (spl) [special snare] - causes hold [hold from spcl415.spl] + ~cd007v~ // (spl) [special snare] - causes hold [hold from spcl415.spl] ~spcl742~ // (spl) Hold Undead - causes hold - sound(s) #eff_e07 [expiry sound] -// ~spdr101~ // (spl) Chromatic Orb - causes blind hold stun [hold effects routed to spwi118f.spl] + ~cd007w~ // (spl) Chromatic Orb - causes blind hold stun [hold effects routed to spwi118f.spl] ~sppr208~ // (spl) Hold Person - causes hold - portrait icon(s) 13 - sound(s) #eff_e05 - animations(s) SPMINDAT [expiry sound, animation] ~sppr305~ // (spl) Hold Animal - causes hold - portrait icon(s) 13 - sound(s) #eff_e05 [expiry sound, animation] // ~sppr728~ // (spl) Implosion - causes hold @@ -710,13 +717,13 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curehol.spl~ // ~spwatt5~ // (itm) Attack - causes hold level drain // ~spwi028~ // (spl) - causes hold poison - portrait icon(s) 6 13 [hold moved into spwi028h.spl] // ~spwi118~ // (spl) Chromatic Orb - causes blind hold stun [hold effects routed to spwi118f.spl] - ~spwi118f~ // (spl) Chromatic Orb [hold effects routed here from spdr101.spl, spwi118.spl] + ~cd007y~ // (spl) Chromatic Orb [hold effects routed here from spdr101.spl, spwi118.spl] ~spwi306~ // (spl) Hold Person - causes hold - portrait icon(s) 13 - sound(s) #eff_e05 - animations(s) SPMINDAT [expiry sound, animation] ~spwi324~ // (spl) Hold Undead - causes hold - sound(s) EFF_E07 [expiry sound] ~spwi507~ // (spl) Hold Monster - causes hold - sound(s) #eff_e05 [expiry sound] // ~spwi711~ // (spl) Sphere of Chaos - causes confusion hold sleep - portrait icon(s) 38 - additional effects ~spwm122~ // (spl) Hold Person - causes hold - portrait icon(s) 13 - sound(s) EFF_E05 - animations(s) SPMINDAT [expiry sound, animation] - ~ulswd4a~ // (itm) Hold Fast +3 - causes hold - portrait icon(s) 13 - sound(s) #eff_e05 [expiry sound] + ~cd007z~ // (itm) Hold Fast +3 - causes hold - portrait icon(s) 13 - sound(s) #eff_e05 [expiry sound] BEGIN LPF ADD_SPELL_EFFECT INT_VAR opcode = 321 target = 2 timing = 1 parameter2 = 2 STR_VAR resource = EVAL ~%res%~ END END @@ -740,7 +747,7 @@ COPY_EXISTING ~bpdispel.spl~ ~override~ // - cures berserk b ~sprngs03.itm~ ~override~ // [1pp] - cures hold stun - additional effects ~sprngs04.itm~ ~override~ // [1pp] - cures hold stun - additional effects ~sprngz05.itm~ ~override~ // [1pp] - cures fear hold stun - additional effects - LPF ALTER_EFFECT INT_VAR match_opcode = 162 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curehol~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 162 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curehol~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_hold END BUT_ONLY @@ -823,7 +830,7 @@ COPY_EXISTING ~spcl232.spl~ ~override~ // True Sight - cures invisibility - por ~spwi515.spl~ ~override~ // Oracle - cures invisibility ~spwi609.spl~ ~override~ // True Sight - cures invisibility - portrait icon(s) 108 - sound(s) EFF_E02 - additional effects ~spwi609d.spl~ ~override~ // True Sight - cures invisibility - LPF ALTER_EFFECT INT_VAR match_opcode = 116 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#cureinv~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 116 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#cureinv~ END // LPF cd_apply_batch STR_VAR array_name = cd_cure_invisbility END // currently does nothing BUT_ONLY @@ -857,7 +864,7 @@ COPY_EXISTING ~cdpr417.spl~ ~override~ // Lesser Restoration - cures level drai ~sppr713.spl~ ~override~ // Greater Restoration - cures confusion disease fear feeblemind level drain poison ~spwish07.spl~ ~override~ // Greater Restoration - cures confusion disease fear feeblemind level drain poison ~spwish46.spl~ ~override~ // Greater Restoration - cures confusion disease fear feeblemind level drain poison - LPF ALTER_EFFECT INT_VAR match_opcode = 224 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#cureldr~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 224 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#cureldr~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_leveldrain END BUT_ONLY @@ -882,7 +889,7 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curendt.spl~ /* nothing "cures" nondetection in iwd COPY_EXISTING - LPF ALTER_EFFECT INT_VAR match_opcode = 70 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curendt~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 70 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curendt~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_nondetection END BUT_ONLY */ @@ -917,7 +924,7 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curepse.spl~ /* nothing "cures" pause in iwd COPY_EXISTING - LPF ALTER_EFFECT INT_VAR match_opcode = 270 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curepse~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 270 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curepse~ END // LPF cd_apply_batch STR_VAR array_name = cd_cure_pause END // currently does nothing BUT_ONLY */ @@ -999,7 +1006,7 @@ COPY_EXISTING ~bpdispel.spl~ ~override~ // - cures berserk b ~spwish46.spl~ ~override~ // Greater Restoration - cures confusion disease fear feeblemind level drain poison ~spwm168.spl~ ~override~ // Heal - cures blind deafness disease drunkenness feeblemind poison ~trollde.itm~ ~override~ // - cures disease poison - LPF ALTER_EFFECT INT_VAR match_opcode = 11 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curepsn~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 11 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curepsn~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_poison END BUT_ONLY @@ -1016,14 +1023,14 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curesil.spl~ ~sppr988~ // (spl) Silence, 15' Radius - causes silence - portrait icon(s) 34 - sound(s) #eff_e06 [expiry sound] // ~spwi612~ // (spl) Power Word, Silence - causes silence - portrait icon(s) 34 // ~spwish35~ // (spl) Power Word, Silence - causes silence - portrait icon(s) 34 - ~trnbolt~ // (itm) Tranquil Bolt +1 - causes silence - portrait icon(s) 34 - sound(s) #eff_e06 [expiry sound] -// ~wand19~ // (itm) Wand of Cursing - causes blind deafness silence [three effects are intertwined, curing one shouldn't dump combined expiry sound] + ~cd003g~ // (itm) Tranquil Bolt +1 - causes silence - portrait icon(s) 34 - sound(s) #eff_e06 [expiry sound] + ~cd003h~ // (itm) Wand of Cursing - causes blind deafness silence [three effects are intertwined, curing one shouldn't dump combined expiry sound] BEGIN LPF ADD_SPELL_EFFECT INT_VAR opcode = 321 target = 2 timing = 1 parameter2 = 2 STR_VAR resource = EVAL ~%res%~ END END COPY_EXISTING ~spwi219.spl~ ~override~ // Vocalize - cures silence - portrait icon(s) 103 - sound(s) EFF_E01 - additional effects - LPF ALTER_EFFECT INT_VAR match_opcode = 48 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curesil~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 48 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curesil~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_silence END BUT_ONLY @@ -1083,7 +1090,7 @@ COPY_EXISTING ~bpdispel.spl~ ~override~ // - cures berserk b ~ohsmode4.spl~ ~override~ // [story mode] - cures berserk blind confusion deafness disease fear feeblemind hold level drain poison sleep stun ~ohtyr1.spl~ ~override~ // Exaltation - cures berserk confusion drunkenness fear feeblemind sleep - portrait icon(s) 174 37 - additional effects ~sppr321.spl~ ~override~ // Exaltation - cures berserk confusion drunkenness fear feeblemind sleep - portrait icon(s) 174 37 - additional effects - LPF ALTER_EFFECT INT_VAR match_opcode = 2 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#cureslp~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 2 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#cureslp~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_sleep END BUT_ONLY @@ -1095,25 +1102,25 @@ COPY_EXISTING ~bpdispel.spl~ ~override~ // - cures berserk b COPY_EXISTING ~#curestn.spl~ ~override~ // (already has stun cure) LPF ADD_SPELL_EFFECT INT_VAR opcode = 240 target = 2 timing = 1 parameter2 = 55 END // remove icon: stun PATCH_FOR_EACH res IN - ~axemino~ // (itm) Axe of the Minotaur Lord +4 - causes stun [color glow] + ~cd003y~ // (itm) Axe of the Minotaur Lord +4 - causes stun [color glow] // ~bdsha06a~ // (spl) - causes stun - portrait icon(s) 55 // ~cwreve~ // (itm) Attack - causes stun - ~dart03~ // (itm) Dart of Stunning +1 - causes stun - portrait icon(s) 55 - additional effects [color glow] - ~dazer~ // (itm) Dazer - causes stun - portrait icon(s) 55 - additional effects [color glow] + ~cd0040~ // (itm) Dart of Stunning +1 - causes stun - portrait icon(s) 55 - additional effects [color glow] + ~cd0041~ // (itm) Dazer - causes stun - portrait icon(s) 55 - additional effects [color glow] // ~deva~ // (itm) Mace of Disruption +2 - causes stun - portrait icon(s) 55 // ~dwfpgs01~ // (spl) - causes deafness stun [shouldn't actually stun, fixed above] // ~dwfpgs02~ // (spl) - causes stun - portrait icon(s) 112 - ~gvalor2~ // (itm) Gauntlet of Valor - causes stun [color glow] - ~icegolem~ // (itm) Skull - causes stun [color glow] + ~cd0043~ // (itm) Gauntlet of Valor - causes stun [color glow] + ~cd0044~ // (itm) Skull - causes stun [color glow] // ~icetrl~ // (itm) Attack - causes stun - unknown long effect [stun effects moved to icetrolst.spl] - ~icetrlst~ // (spl) Attack - causes stun - unknown long effect [stun effects moved frp, icetrol.itm] - ~poq2-16~ // (itm) - causes stun - portrait icon(s) 55 - additional effects [color glow] + ~cd0045~ // (spl) Attack - causes stun - unknown long effect [stun effects moved frp, icetrol.itm] + ~cd0046~ // (itm) - causes stun - portrait icon(s) 55 - additional effects [color glow] // ~sareveff~ // (spl) - causes stun - portrait icon(s) 55 // ~sflail~ // (itm) Flail - causes stun - additional effects [stun moved to sflailst.spl] - ~sflailst~ // (spl) Flail - causes stun - additional effects [stun from sflail.itm] [color glow] - ~spcl118~ // (spl) The Siren's Yearning—Enthralls Creatures - causes stun - portrait icon(s) 181 - animations(s) SPMINDAT - additional effects [spmindat changed to color glow] + ~cd0048~ // (spl) Flail - causes stun - additional effects [stun from sflail.itm] [color glow] + ~cd0049~ // (spl) The Siren's Yearning—Enthralls Creatures - causes stun - portrait icon(s) 181 - animations(s) SPMINDAT - additional effects [spmindat changed to color glow] // ~spcl123~ // (spl) - causes stun - portrait icon(s) 41 55 - additional effects -// ~spdr101~ // (spl) Chromatic Orb - causes blind hold stun - portrait icon(s) 8 55 13 - sound(s) #eff_m05 #eff_e05 - additional effects [stun routed to spwi118e.spl] + ~cd004b~ // (spl) Chromatic Orb - causes blind hold stun - portrait icon(s) 8 55 13 - sound(s) #eff_m05 #eff_e05 - additional effects [stun routed to spwi118e.spl] ~spin115~ // (spl) Mournful Wail - causes stun - portrait icon(s) 44 - sound(s) #eff_e04 [expiry sound] // ~spin132~ // (spl) Wing Buffet - causes stun - portrait icon(s) 55 - additional effects // ~spin139~ // (spl) Harpy Wail - causes fear stun - portrait icon(s) 36 - additional effects [combined fear/stun] @@ -1129,32 +1136,32 @@ COPY_EXISTING ~#curestn.spl~ ~override~ // (already has stun cure) // ~spwi032~ // (spl) Color Spray - causes blind pause sleep stun - portrait icon(s) 8 55 - additional effects // ~spwi105~ // (spl) Color Spray - causes blind pause sleep stun - portrait icon(s) 8 - additional effects [has lingering colors, but unrelated to stun] // ~spwi118~ // (spl) Chromatic Orb - causes blind hold stun - portrait icon(s) 8 55 13 - sound(s) #eff_e05 - additional effects [stun routed to spwi118e.spl] - ~spwi118e~ // (spl) Chromatic Orb [stun effects from spwi118.spl and spdr101.spl] + ~cd004m~ // (spl) Chromatic Orb [stun effects from spwi118.spl and spdr101.spl] // ~spwi327~ // (spl) Icelance - causes stun ~spwi411~ // (spl) Emotion, Hopelessness - causes stun - portrait icon(s) 44 - sound(s) #eff_e05 [expiry sound, hopelesssness icon] ~spwi816~ // (spl) Symbol, Stun - causes stun - portrait icon(s) 55 - sound(s) #eff_e04 [expiry sound] ~spwi898~ // (spl) Symbol, Stun - causes stun - portrait icon(s) 55 - sound(s) #eff_e04 [expiry sound] // ~spwm152~ // (spl) Polymorph Other - causes stun - ~u1ham3b~ // (itm) War Hammer of Sparks +2 - causes stun [color glow] - ~u1hax2a~ // (itm) Charged Battle Axe +2 - causes stun [color glow] - ~u1hax4b~ // (itm) Benorg's Truth +3 - causes stun [color glow] - ~uarow3b~ // (itm) Hammer Arrow +1 - causes stun - portrait icon(s) 55 - additional effects [color glow] - ~ubswd5b~ // (itm) Bastard Sword +3: Incinerator - causes stun [color glow] - ~udart1a~ // (itm) Hammer Darts - causes stun - portrait icon(s) 55 - additional effects [color glow] - ~uflal2b~ // (itm) Hammer Flail +2 - causes stun [color glow] - ~uflal5a~ // (itm) Shocking Flail +4 - causes stun [color glow] - ~uhalb4a~ // (itm) Doom Halberd +3 - causes stun [color glow] - ~uhalb4b~ // (itm) Star-Forged Halberd +3 - causes stun [color glow] - ~ulswd5b~ // (itm) Bhaal's Fire +3 - causes stun - portrait icon(s) 55 - additional effects [color glow] - ~umstr2b~ // (itm) Lesser Static Star +1 - causes stun [color glow] - ~umstr3a~ // (itm) Morning Star +2: Hammer - causes stun [color glow] - ~umstr5a~ // (itm) Morning Star of Action +4 - causes stun [color glow] - ~usswd5b~ // (itm) Short Sword +4: Hammer - causes stun [color glow] - ~utswd2b~ // (itm) Two-Handed Sword +1: Hammering - causes stun [color glow] - ~utswd3a~ // (itm) Two-Handed Sword +2: Hammering - causes stun - portrait icon(s) 55 - additional effects [color glow] - ~utswd5a~ // (itm) Static Two-Handed Sword +4 - causes stun [color glow] + ~cd004p~ // (itm) War Hammer of Sparks +2 - causes stun [color glow] + ~cd004q~ // (itm) Charged Battle Axe +2 - causes stun [color glow] + ~cd004r~ // (itm) Benorg's Truth +3 - causes stun [color glow] + ~cd004s~ // (itm) Hammer Arrow +1 - causes stun - portrait icon(s) 55 - additional effects [color glow] + ~cd004t~ // (itm) Bastard Sword +3: Incinerator - causes stun [color glow] + ~cd004u~ // (itm) Hammer Darts - causes stun - portrait icon(s) 55 - additional effects [color glow] + ~cd004v~ // (itm) Hammer Flail +2 - causes stun [color glow] + ~cd004w~ // (itm) Shocking Flail +4 - causes stun [color glow] + ~cd004x~ // (itm) Doom Halberd +3 - causes stun [color glow] + ~cd004y~ // (itm) Star-Forged Halberd +3 - causes stun [color glow] + ~cd004z~ // (itm) Bhaal's Fire +3 - causes stun - portrait icon(s) 55 - additional effects [color glow] + ~cd0050~ // (itm) Lesser Static Star +1 - causes stun [color glow] + ~cd0051~ // (itm) Morning Star +2: Hammer - causes stun [color glow] + ~cd0052~ // (itm) Morning Star of Action +4 - causes stun [color glow] + ~cd0053~ // (itm) Short Sword +4: Hammer - causes stun [color glow] + ~cd0054~ // (itm) Two-Handed Sword +1: Hammering - causes stun [color glow] + ~cd0055~ // (itm) Two-Handed Sword +2: Hammering - causes stun - portrait icon(s) 55 - additional effects [color glow] + ~cd0056~ // (itm) Static Two-Handed Sword +4 - causes stun [color glow] // ~wand04~ // (itm) Wand of Paralyzation - causes stun - portrait icon(s) 55 - ~xclub~ // (itm) Dazer - causes stun - portrait icon(s) 55 - additional effects [color glow] + ~cd0058~ // (itm) Dazer - causes stun - portrait icon(s) 55 - additional effects [color glow] BEGIN LPF ADD_SPELL_EFFECT INT_VAR opcode = 321 target = 2 timing = 1 parameter2 = 2 STR_VAR resource = EVAL ~%res%~ END END @@ -1180,7 +1187,7 @@ COPY_EXISTING ~bpdispel.spl~ ~override~ // - cures berserk b ~sprngs03.itm~ ~override~ // [1pp] - cures hold stun - additional effects ~sprngs04.itm~ ~override~ // [1pp] - cures hold stun - additional effects ~sprngz05.itm~ ~override~ // [1pp] - cures fear hold stun - additional effects - LPF ALTER_EFFECT INT_VAR match_opcode = 46 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curestn~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 46 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curestn~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_stun END BUT_ONLY diff --git a/eefixpack/setup-eefixpack.tp2 b/eefixpack/setup-eefixpack.tp2 index cd885b34..b2e4a02d 100644 --- a/eefixpack/setup-eefixpack.tp2 +++ b/eefixpack/setup-eefixpack.tp2 @@ -30,7 +30,7 @@ ALWAYS OUTER_SET ~game_is_%game%~ = 1 LOAD_TRA ~eefixpack/languages/%LANGUAGE%/%game%.tra~ INCLUDE ~eefixpack/files/lib/cd_spell_ids.tpa~ // sets variables such as WIZARD_MAGIC_MISSILE based on spell.ids - //INCLUDE ~eefixpack/files/lib/gt_race_ids.tph~ // sets variables such as RACE_HUMAN based on race.ids -- unused + INCLUDE ~eefixpack/files/lib/gt_race_ids.tph~ // sets variables such as RACE_HUMAN based on race.ids INCLUDE ~eefixpack/files/lib/cd_functions.tpa~ INCLUDE ~eefixpack/files/lib/gt_functions.tph~ INCLUDE ~eefixpack/files/lib/dw_functions.tph~ From 7b23335d8fde848750c119f753078f09df59af5d Mon Sep 17 00:00:00 2001 From: 4Luke4 Date: Sat, 5 Apr 2025 18:57:42 +0200 Subject: [PATCH 03/12] bg2 subspells file names --- .../files/tph/luke/7eyes/bg2/petrify.2da | 3 +- eefixpack/files/tph/tbd_vfx_removal_bg2.tph | 272 +++++++++--------- 2 files changed, 139 insertions(+), 136 deletions(-) diff --git a/eefixpack/files/tph/luke/7eyes/bg2/petrify.2da b/eefixpack/files/tph/luke/7eyes/bg2/petrify.2da index c9ff3b32..eb975c79 100644 --- a/eefixpack/files/tph/luke/7eyes/bg2/petrify.2da +++ b/eefixpack/files/tph/luke/7eyes/bg2/petrify.2da @@ -18,4 +18,5 @@ 14 SPWI118.SPL CD00B0 15 SPWI604.SPL **** 16 SPWI714.SPL CD00B1 -17 WAND12.ITM CD00B3 +17 SW2H07.ITM CD00B2 +18 WAND12.ITM CD00B3 diff --git a/eefixpack/files/tph/tbd_vfx_removal_bg2.tph b/eefixpack/files/tph/tbd_vfx_removal_bg2.tph index dbdc8ef6..7835fa83 100644 --- a/eefixpack/files/tph/tbd_vfx_removal_bg2.tph +++ b/eefixpack/files/tph/tbd_vfx_removal_bg2.tph @@ -19,7 +19,7 @@ COPY_EXISTING ~sppr650.spl~ ~override~ // spiritual lock - causes feeblemind - BUT_ONLY // stuff that causes stun and plays spmindat should be updated to play cdstun instead -COPY_EXISTING ~fampsdat.itm~ ~override~ // skull - causes stun - plays spmindat +COPY_EXISTING ~cd006j.spl~ ~override~ // skull - causes stun - plays spmindat ~spin974.spl~ ~override~ // psionic blast - causes stun - plays spmindat LPF ALTER_EFFECT INT_VAR match_opcode = 215 STR_VAR match_resource = spmindat resource = cdstun END @@ -117,10 +117,10 @@ COPY_EXISTING ~carrio1.itm~ ~override~ // (itm) Attack - causes hold - portrait */ // elven immunity to ghoul attack should also block expiry sound -COPY_EXISTING ~ghoul1.itm~ ~override~ // Ghoul Touch - causes hold - plays sound EFF_E05 - portrait icon 13 [expiry sound] - LPF CLONE_EFFECT INT_VAR match_opcode = 324 opcode = 424 STR_VAR insert = first END - LPF DELETE_EFFECT INT_VAR match_opcode = 324 END - LPF ALTER_EFFECT INT_VAR match_opcode = 424 opcode = 324 END +// COPY_EXISTING ~ghoul1.itm~ ~override~ // Ghoul Touch - causes hold - plays sound EFF_E05 - portrait icon 13 [expiry sound] +// LPF CLONE_EFFECT INT_VAR match_opcode = 324 opcode = 424 STR_VAR insert = first END +// LPF DELETE_EFFECT INT_VAR match_opcode = 324 END +// LPF ALTER_EFFECT INT_VAR match_opcode = 424 opcode = 324 END /* // paralyze abilities missing their immunity checks @@ -131,8 +131,8 @@ COPY_EXISTING ~kaldw1.itm~ ~override~ // (itm) - causes ho */ // hold abilities missing their immunity checks -COPY_EXISTING ~ohnwand1.spl~ ~override~ // - causes hold - unknown long effect - plays animation OHNWAND1 - unknown long effect - unknown long effect - LPF CLONE_EFFECT INT_VAR match_opcode = 175 opcode = 324 parameter1 = hold_immunity parameter2 = 110 timing = 0 duration = 0 resist_dispel = 0 STR_VAR insert = above resource = EVAL ~%SOURCE_RES%~ END +// COPY_EXISTING ~ohnwand1.spl~ ~override~ // - causes hold - unknown long effect - plays animation OHNWAND1 - unknown long effect - unknown long effect +// LPF CLONE_EFFECT INT_VAR match_opcode = 175 opcode = 324 parameter1 = hold_immunity parameter2 = 110 timing = 0 duration = 0 resist_dispel = 0 STR_VAR insert = above resource = EVAL ~%SOURCE_RES%~ END // feeblemind immunity blocks *gulp* string COPY_EXISTING ~potn23.itm~ ~override~ // Oil of Speed - causes feeblemind - portrait icon(s) 48 - sound(s) #eff_e07 @@ -141,114 +141,116 @@ COPY_EXISTING ~potn23.itm~ ~override~ // Oil of Speed - causes feeblemind - po LPF ALTER_EFFECT INT_VAR match_opcode = 400 opcode = 139 END // correct opcode // confusion ability lacks immunity check -COPY_EXISTING ~wa2harp.itm~ ~override~ // (itm) Harp of Pandemonium - causes confusion - plays animation SPCONFUS - portrait icon 3 - LPF CLONE_EFFECT INT_VAR match_opcode = 215 opcode = 324 parameter1 = confusion_immunity parameter2 = 110 timing = 0 duration = 0 resist_dispel = 0 STR_VAR insert = above resource = EVAL ~%SOURCE_RES%~ END +// COPY_EXISTING ~wa2harp.itm~ ~override~ // (itm) Harp of Pandemonium - causes confusion - plays animation SPCONFUS - portrait icon 3 +// LPF CLONE_EFFECT INT_VAR match_opcode = 215 opcode = 324 parameter1 = confusion_immunity parameter2 = 110 timing = 0 duration = 0 resist_dispel = 0 STR_VAR insert = above resource = EVAL ~%SOURCE_RES%~ END // spell state ends up in wrong place, include thac0 penalty as part of fear -COPY_EXISTING ~spin536.spl~ ~override~ // (spl) Fear - causes fear - unknown long effect - portrait icon 36 - plays sound EFF_E05 [has expiry sound, thac0 penalty attached to fear] - ~spin772.spl~ ~override~ // (spl) [HELL_FEAR] - causes fear - unknown long effect - portrait icon 36 - plays sound EFF_E05 [has expiry sound, thac0 penalty attached to fear] - ~spin882.spl~ ~override~ // (spl) Vampire Fear - causes fear - portrait icon 36 - unknown long effect - portrait icon 36 [has expiry sound, thac0 penalty attached to fear] - ~spin895.spl~ ~override~ // (spl) Dragon Fear - causes fear - unknown long effect - portrait icon 36 - plays sound EFF_E05 [has expiry sound, thac0 penalty attached to fear] - LPF DELETE_EFFECT INT_VAR match_opcode = 324 END - LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 324 parameter1 = panic_immunity parameter2 = 110 timing = 0 duration = 0 resist_dispel = 0 STR_VAR insert = first resource = EVAL ~%SOURCE_RES%~ END +// COPY_EXISTING ~spin536.spl~ ~override~ // (spl) Fear - causes fear - unknown long effect - portrait icon 36 - plays sound EFF_E05 [has expiry sound, thac0 penalty attached to fear] +// ~spin772.spl~ ~override~ // (spl) [HELL_FEAR] - causes fear - unknown long effect - portrait icon 36 - plays sound EFF_E05 [has expiry sound, thac0 penalty attached to fear] +// ~spin882.spl~ ~override~ // (spl) Vampire Fear - causes fear - portrait icon 36 - unknown long effect - portrait icon 36 [has expiry sound, thac0 penalty attached to fear] +// ~spin895.spl~ ~override~ // (spl) Dragon Fear - causes fear - unknown long effect - portrait icon 36 - plays sound EFF_E05 [has expiry sound, thac0 penalty attached to fear] +// LPF DELETE_EFFECT INT_VAR match_opcode = 324 END +// LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 324 parameter1 = panic_immunity parameter2 = 110 timing = 0 duration = 0 resist_dispel = 0 STR_VAR insert = first resource = EVAL ~%SOURCE_RES%~ END // placement of panic 324 blocks insect animation and spell failure icon -COPY_EXISTING ~sppr517.spl~ ~override~ // Insect Plague - causes fear - unknown long effect - plays animation ICINHIT - portrait icon 83 - PATCH_FOR_EACH op IN 324 24 BEGIN - LPF CLONE_EFFECT INT_VAR match_opcode = op STR_VAR insert = last END // copy to end of stack - LPF DELETE_EFFECT INT_VAR match_opcode = op multi_match = 1 END // delete original - END +// COPY_EXISTING ~sppr517.spl~ ~override~ // Insect Plague - causes fear - unknown long effect - plays animation ICINHIT - portrait icon 83 +// PATCH_FOR_EACH op IN 324 24 BEGIN +// LPF CLONE_EFFECT INT_VAR match_opcode = op STR_VAR insert = last END // copy to end of stack +// LPF DELETE_EFFECT INT_VAR match_opcode = op multi_match = 1 END // delete original +// END ///// \\\\\ ///// subspell creation \\\\\ ///// \\\\\ // shunt ghast hold stuff to new ability -COPY_EXISTING ~ghast1.itm~ ~override~ // Attack - causes hold - portrait icon 13 - plays sound EFF_E05 - plays sound EFF_E07 - unknown long effect - portrait icon 126 - ~ghoullor.itm~ ~override~ // Ghoul Touch - causes disease - causes hold - portrait icon 13 - plays sound EFF_E05 - ~lacedo.itm~ ~override~ // Attack - causes disease - causes hold - portrait icon 13 - plays sound EFF_E05 - ~lacedo02.itm~ ~override~ // Ghoul Touch - causes disease - causes hold - portrait icon 13 - plays sound EFF_E05 - LPF ALTER_EFFECT INT_VAR match_opcode = 109 opcode = 146 target = 2 parameter1 = 0 parameter2 = 1 timing = 1 duration = 0 STR_VAR resource = ghast1p END // change paralyze to cast spells - LPF DELETE_EFFECT INT_VAR match_opcode = 141 END // delete related - LPF DELETE_EFFECT INT_VAR match_opcode = 61 END // delete related - LPF DELETE_EFFECT INT_VAR match_opcode = 142 match_parameter2 = 13 END // delete related - LPF DELETE_EFFECT INT_VAR match_opcode = 174 STR_VAR match_resource = eff_e05 END // delete related - LPF DELETE_EFFECT INT_VAR match_opcode = 174 STR_VAR match_resource = eff_p11 END // delete related +// COPY_EXISTING ~ghast1.itm~ ~override~ // Attack - causes hold - portrait icon 13 - plays sound EFF_E05 - plays sound EFF_E07 - unknown long effect - portrait icon 126 +// ~ghoullor.itm~ ~override~ // Ghoul Touch - causes disease - causes hold - portrait icon 13 - plays sound EFF_E05 +// ~lacedo.itm~ ~override~ // Attack - causes disease - causes hold - portrait icon 13 - plays sound EFF_E05 +// ~lacedo02.itm~ ~override~ // Ghoul Touch - causes disease - causes hold - portrait icon 13 - plays sound EFF_E05 +// LPF ALTER_EFFECT INT_VAR match_opcode = 109 opcode = 146 target = 2 parameter1 = 0 parameter2 = 1 timing = 1 duration = 0 STR_VAR resource = ghast1p END // change paralyze to cast spells +// LPF DELETE_EFFECT INT_VAR match_opcode = 141 END // delete related +// LPF DELETE_EFFECT INT_VAR match_opcode = 61 END // delete related +// LPF DELETE_EFFECT INT_VAR match_opcode = 142 match_parameter2 = 13 END // delete related +// LPF DELETE_EFFECT INT_VAR match_opcode = 174 STR_VAR match_resource = eff_e05 END // delete related +// LPF DELETE_EFFECT INT_VAR match_opcode = 174 STR_VAR match_resource = eff_p11 END // delete related // shunt ghoul lord hold stuff to new ability -COPY_EXISTING ~ghoullor.itm~ ~override~ // make one for ghoul lord (different duration) - LPF ALTER_EFFECT INT_VAR match_opcode = 146 STR_VAR resource = ghoullop END // item has different parlyze duration, so use one-off spell for it +// COPY_EXISTING ~ghoullor.itm~ ~override~ // make one for ghoul lord (different duration) +// LPF ALTER_EFFECT INT_VAR match_opcode = 146 STR_VAR resource = ghoullop END // item has different parlyze duration, so use one-off spell for it // shunt ghast/ghoul lord hold stuff to new ability -COPY ~eefixpack/files/spl/cdcure.spl~ ~override/ghast1p.spl~ - LPF ADD_SPELL_EFFECT INT_VAR opcode = 109 target = 2 parameter2 = 2 duration = 42 END // add paralyze - LPF CLONE_EFFECT INT_VAR match_opcode = 109 opcode = 142 parameter2 = 13 STR_VAR insert = below END // add 'held' icon - LPF CLONE_EFFECT INT_VAR match_opcode = 109 opcode = 141 timing = 1 duration = 0 parameter2 = 1 STR_VAR insert = below END // add 'necromancy earth' effect - LPF CLONE_EFFECT INT_VAR match_opcode = 141 opcode = 61 duration = 1 parameter1 = ((120 << 24) + (90 << 16) + (60 << 8)) parameter2 = (25 << 16) STR_VAR insert = below END - LPF CLONE_EFFECT INT_VAR match_opcode = 141 opcode = 174 duration = 0 parameter2 = 0 STR_VAR resource = eff_p11 insert = below END // immediate sound - LPF CLONE_EFFECT INT_VAR match_opcode = 174 timing = 4 duration = 42 STR_VAR resource = eff_e05 insert = below END // expiry sound +// COPY ~eefixpack/files/spl/cdcure.spl~ ~override/ghast1p.spl~ +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 109 target = 2 parameter2 = 2 duration = 42 END // add paralyze +// LPF CLONE_EFFECT INT_VAR match_opcode = 109 opcode = 142 parameter2 = 13 STR_VAR insert = below END // add 'held' icon +// LPF CLONE_EFFECT INT_VAR match_opcode = 109 opcode = 141 timing = 1 duration = 0 parameter2 = 1 STR_VAR insert = below END // add 'necromancy earth' effect +// LPF CLONE_EFFECT INT_VAR match_opcode = 141 opcode = 61 duration = 1 parameter1 = ((120 << 24) + (90 << 16) + (60 << 8)) parameter2 = (25 << 16) STR_VAR insert = below END +// LPF CLONE_EFFECT INT_VAR match_opcode = 141 opcode = 174 duration = 0 parameter2 = 0 STR_VAR resource = eff_p11 insert = below END // immediate sound +// LPF CLONE_EFFECT INT_VAR match_opcode = 174 timing = 4 duration = 42 STR_VAR resource = eff_e05 insert = below END // expiry sound // LPF CLONE_EFFECT INT_VAR match_opcode = 109 opcode = 324 parameter1 = hold_immunity parameter2 = 110 timing = 0 resist_dispel = 0 duration = 0 STR_VAR insert = first resource = EVAL ~%DEST_RES%~ END // shunt ghoul lord hold stuff to new ability -COPY_EXISTING ~ghast1p.spl~ ~override/ghoullop.spl~ // make one for ghoul lord (different duration) - LPF ALTER_EFFECT INT_VAR match_duration = 42 duration = 30 END +// COPY_EXISTING ~ghast1p.spl~ ~override/ghoullop.spl~ // make one for ghoul lord (different duration) +// LPF ALTER_EFFECT INT_VAR match_duration = 42 duration = 30 END // LPF ALTER_EFFECT INT_VAR match_opcode = 324 STR_VAR resource = EVAL ~%DEST_RES%~ END // shunt stun effects into spell -COPY_EXISTING ~icetrl.itm~ ~override~ // Attack - causes stun - unknown long effect - unknown long effect - LPF ALTER_EFFECT INT_VAR match_opcode = 139 opcode = 146 parameter1 = 0 parameter2 = 1 timing = 1 duration = 0 STR_VAR resource = icetrlst END - LPF DELETE_EFFECT INT_VAR match_duration = 18 END +// COPY_EXISTING ~icetrl.itm~ ~override~ // Attack - causes stun - unknown long effect - unknown long effect +// LPF ALTER_EFFECT INT_VAR match_opcode = 139 opcode = 146 parameter1 = 0 parameter2 = 1 timing = 1 duration = 0 STR_VAR resource = icetrlst END +// LPF DELETE_EFFECT INT_VAR match_duration = 18 END -COPY ~eefixpack/files/spl/cdcure.spl~ ~override/icetrlst.spl~ - LPF ADD_SPELL_EFFECT INT_VAR opcode = 324 parameter1 = stun_immunity parameter2 = 110 STR_VAR resource = EVAL ~%DEST_RES%~ END - LPF ADD_SPELL_EFFECT INT_VAR opcode = 45 target = 2 duration = 18 END - LPF ADD_SPELL_EFFECT INT_VAR opcode = 7 target = 2 parameter1 = 71 parameter2 = 3 duration = 18 END - LPF ADD_SPELL_EFFECT INT_VAR opcode = 139 target = 2 parameter1 = 1280 timing = 1 END +// COPY ~eefixpack/files/spl/cdcure.spl~ ~override/icetrlst.spl~ +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 324 parameter1 = stun_immunity parameter2 = 110 STR_VAR resource = EVAL ~%DEST_RES%~ END +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 45 target = 2 duration = 18 END +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 7 target = 2 parameter1 = 71 parameter2 = 3 duration = 18 END +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 139 target = 2 parameter1 = 1280 timing = 1 END // split hold from bounty hunter's special snare into own spell -COPY ~eefixpack/files/spl/spcl415h.spl~ ~override~ // just the hold ability farmed out into separate spell - LPF ALTER_EFFECT INT_VAR match_opcode = 324 parameter1 = hold_immunity END -COPY_EXISTING ~spcl415.spl~ ~override~ - LPF DELETE_EFFECT INT_VAR match_opcode = 177 END // deletes hold EFFs - LPF ALTER_EFFECT INT_VAR match_opcode = 175 opcode = 326 power = 0 parameter1 = 0 parameter2 = 5 timing = 1 duration = 0 resist_dispel = 0 savingthrow = 0 savebonus = 0 STR_VAR resource = spcl415h END // change hold to apply spell to humanoids - BUT_ONLY +// COPY ~eefixpack/files/spl/spcl415h.spl~ ~override~ // just the hold ability farmed out into separate spell +// LPF ALTER_EFFECT INT_VAR match_opcode = 324 parameter1 = hold_immunity END +// COPY_EXISTING ~spcl415.spl~ ~override~ +// LPF DELETE_EFFECT INT_VAR match_opcode = 177 END // deletes hold EFFs +// LPF ALTER_EFFECT INT_VAR match_opcode = 175 opcode = 326 power = 0 parameter1 = 0 parameter2 = 5 timing = 1 duration = 0 resist_dispel = 0 savingthrow = 0 savebonus = 0 STR_VAR resource = spcl415h END // change hold to apply spell to humanoids +// BUT_ONLY // chromatic orb blinds at levels 1 and 4, stuns at levels 5 and 7; don't want to roll back entire spell for two levels of blind so we subspell it -COPY_EXISTING ~spdr101.spl~ ~override~ // Chromatic Orb (druid) - ~spwi118.spl~ ~override~ // Chromatic Orb (arcane) - LPF DELETE_EFFECT INT_VAR match_opcode = 74 END // delete blind effect from headers 0 and 3 - LPF DELETE_EFFECT INT_VAR match_opcode = 45 END // delete stun effect from headers 4 and 6 - LPF DELETE_EFFECT INT_VAR match_opcode = 142 match_parameter2 = 8 END // delete blind icons - LPF DELETE_EFFECT INT_VAR match_opcode = 142 match_parameter2 = 55 END // delete stun icons - LPF DELETE_EFFECT INT_VAR match_opcode = 324 match_parameter1 = stun_immunity match_parameter2 = 110 END // delete stun immunity check (moved to subspell) - LPF DELETE_EFFECT INT_VAR header = 0 match_opcode = 139 END // uses strref 14674 "blinded" on header 0 - LPF DELETE_EFFECT INT_VAR header = 3 match_opcode = 139 END // uses strref 14674 "blindness: on header 3 - LPF DELETE_EFFECT INT_VAR match_opcode = 139 match_parameter1 = 14043 END // delete stun string from headers 4 and 6 - LPF ALTER_EFFECT INT_VAR header = 0 match_opcode = 174 match_timing = 4 opcode = 146 parameter2 = 2 timing = 1 duration = 0 STR_VAR match_resource = eff_e05 resource = spwi118a END // change expiry sounds to spell casts - LPF ALTER_EFFECT INT_VAR header = 3 match_opcode = 174 match_timing = 4 opcode = 146 parameter2 = 2 timing = 1 duration = 0 STR_VAR match_resource = eff_e05 resource = spwi118d END // change expiry sounds to spell casts - LPF ALTER_EFFECT INT_VAR header = 4 match_opcode = 174 match_timing = 4 opcode = 146 parameter2 = 2 timing = 1 duration = 0 STR_VAR match_resource = eff_e05 resource = spwi118e END // change expiry sounds to spell casts - LPF ALTER_EFFECT INT_VAR header = 6 match_opcode = 174 match_timing = 4 opcode = 146 parameter2 = 2 timing = 1 duration = 0 STR_VAR match_resource = eff_e05 resource = spwi118g END // change expiry sounds to spell casts +// COPY_EXISTING ~spdr101.spl~ ~override~ // Chromatic Orb (druid) +// ~spwi118.spl~ ~override~ // Chromatic Orb (arcane) +// LPF DELETE_EFFECT INT_VAR match_opcode = 74 END // delete blind effect from headers 0 and 3 +// LPF DELETE_EFFECT INT_VAR match_opcode = 45 END // delete stun effect from headers 4 and 6 +// LPF DELETE_EFFECT INT_VAR match_opcode = 142 match_parameter2 = 8 END // delete blind icons +// LPF DELETE_EFFECT INT_VAR match_opcode = 142 match_parameter2 = 55 END // delete stun icons +// LPF DELETE_EFFECT INT_VAR match_opcode = 324 match_parameter1 = stun_immunity match_parameter2 = 110 END // delete stun immunity check (moved to subspell) +// LPF DELETE_EFFECT INT_VAR header = 0 match_opcode = 139 END // uses strref 14674 "blinded" on header 0 +// LPF DELETE_EFFECT INT_VAR header = 3 match_opcode = 139 END // uses strref 14674 "blindness: on header 3 +// LPF DELETE_EFFECT INT_VAR match_opcode = 139 match_parameter1 = 14043 END // delete stun string from headers 4 and 6 +// LPF ALTER_EFFECT INT_VAR header = 0 match_opcode = 174 match_timing = 4 opcode = 146 parameter2 = 2 timing = 1 duration = 0 STR_VAR match_resource = eff_e05 resource = spwi118a END // change expiry sounds to spell casts +// LPF ALTER_EFFECT INT_VAR header = 3 match_opcode = 174 match_timing = 4 opcode = 146 parameter2 = 2 timing = 1 duration = 0 STR_VAR match_resource = eff_e05 resource = spwi118d END // change expiry sounds to spell casts +// LPF ALTER_EFFECT INT_VAR header = 4 match_opcode = 174 match_timing = 4 opcode = 146 parameter2 = 2 timing = 1 duration = 0 STR_VAR match_resource = eff_e05 resource = spwi118e END // change expiry sounds to spell casts +// LPF ALTER_EFFECT INT_VAR header = 6 match_opcode = 174 match_timing = 4 opcode = 146 parameter2 = 2 timing = 1 duration = 0 STR_VAR match_resource = eff_e05 resource = spwi118g END // change expiry sounds to spell casts // create blind subspells for chromatic orb -COPY ~eefixpack/files/spl/cdcure.spl~ ~override/spwi118a.spl~ // create blind subspell for header 0 - LPF ADD_SPELL_EFFECT INT_VAR opcode = 74 target = 2 duration = 6 END // add blind effect - LPF ADD_SPELL_EFFECT INT_VAR opcode = 142 target = 2 parameter2 = 8 duration = 6 END // add blind icon - LPF ADD_SPELL_EFFECT INT_VAR opcode = 139 target = 2 parameter1 = 14674 timing = 1 END // add blinded string - LPF ADD_SPELL_EFFECT INT_VAR opcode = 174 target = 2 parameter1 = 10 timing = 4 duration = 6 STR_VAR resource = eff_e05 END // add expiry sound -COPY_EXISTING ~spwi118a.spl~ ~override/spwi118d.spl~ // create blind subspell for header 3 - LPF ALTER_EFFECT INT_VAR match_duration = 6 duration = 60 END +// COPY ~eefixpack/files/spl/cdcure.spl~ ~override/spwi118a.spl~ // create blind subspell for header 0 +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 74 target = 2 duration = 6 END // add blind effect +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 142 target = 2 parameter2 = 8 duration = 6 END // add blind icon +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 139 target = 2 parameter1 = 14674 timing = 1 END // add blinded string +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 174 target = 2 parameter1 = 10 timing = 4 duration = 6 STR_VAR resource = eff_e05 END // add expiry sound +// COPY_EXISTING ~spwi118a.spl~ ~override/spwi118d.spl~ // create blind subspell for header 3 +// LPF ALTER_EFFECT INT_VAR match_duration = 6 duration = 60 END // create stun subspells for chromatic orb -COPY ~eefixpack/files/spl/cdcure.spl~ ~override/spwi118e.spl~ // create blind subspell for header 0 - LPF ADD_SPELL_EFFECT INT_VAR opcode = 324 parameter1 = stun_immunity parameter2 = 110 STR_VAR resource = EVAL ~%DEST_RES%~ END - LPF ADD_SPELL_EFFECT INT_VAR opcode = 45 target = 2 duration = 18 END // add stun effect - LPF ADD_SPELL_EFFECT INT_VAR opcode = 139 target = 2 parameter1 = 14043 timing = 1 END // add stun string - LPF ADD_SPELL_EFFECT INT_VAR opcode = 174 target = 2 timing = 4 duration = 18 STR_VAR resource = eff_e05 END // add expiry sound -COPY_EXISTING ~spwi118e.spl~ ~override/spwi118g.spl~ // create blind subspell for header 3 - LPF ALTER_EFFECT INT_VAR match_duration = 18 duration = 120 END +// COPY ~eefixpack/files/spl/cdcure.spl~ ~override/spwi118e.spl~ // create blind subspell for header 0 +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 324 parameter1 = stun_immunity parameter2 = 110 STR_VAR resource = EVAL ~%DEST_RES%~ END +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 45 target = 2 duration = 18 END // add stun effect +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 139 target = 2 parameter1 = 14043 timing = 1 END // add stun string +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 174 target = 2 timing = 4 duration = 18 STR_VAR resource = eff_e05 END // add expiry sound +// COPY_EXISTING ~spwi118e.spl~ ~override/spwi118g.spl~ // create blind subspell for header 3 +// LPF ALTER_EFFECT INT_VAR match_duration = 18 duration = 120 END // split moondog howl's fear bits into separate spell -COPY ~eefixpack/files/spl/cdcure.spl~ ~override/spin891a.spl~ +//COPY ~eefixpack/files/spl/cdcure.spl~ ~override/spin891a.spl~ +COPY_EXISTING "cd004u.spl" "override" + LPF DELETE_EFFECT END LPF ADD_SPELL_EFFECT INT_VAR opcode = 24 target = 2 duration = 18 END // add panic [moondog] LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 142 parameter2 = 36 END // add 'panic' icon [moond2] LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 215 parameter2 = 1 STR_VAR resource = cdhorror END // play animation [moond4] @@ -256,14 +258,14 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/spin891a.spl~ LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 106 duration = 1 parameter1 = 20 parameter2 = 1 END // set morale break [moond7] LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 139 timing = 1 duration = 0 parameter1 = 14007 END // add 'panic' string [moond1] LPF CLONE_EFFECT INT_VAR match_opcode = 139 opcode = 174 parameter2 = 0 STR_VAR resource = eff_m07 END // play sound [moond3] - LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 324 parameter1 = panic_immunity parameter2 = 110 timing = 0 duration = 0 resist_dispel = 0 STR_VAR insert = first resource = EVAL ~%DEST_RES%~ END + LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 318 parameter1 = panic_immunity parameter2 = 110 timing = 0 duration = 0 resist_dispel = 0 STR_VAR insert = first resource = EVAL ~%DEST_RES%~ END LPF CLONE_EFFECT INT_VAR match_opcode = 139 opcode = 12 parameter1 = 5 STR_VAR insert = first END // damage [moond8] LPF CLONE_EFFECT INT_VAR match_opcode = 12 match_timing = 1 timing = 4 duration = 6 END // delayed damage 1 [moond8] LPF CLONE_EFFECT INT_VAR match_opcode = 12 match_timing = 1 timing = 4 duration = 12 END // delayed damage 2 [moond8] // replace effs aimed at mask_evil to a single 326 that calls spin891a instead COPY_EXISTING ~spin891.spl~ ~override~ // Moon Dog Howl - cures fear - causes fear - LPF ALTER_EFFECT INT_VAR multi_match = 1 match_opcode = 177 match_parameter1 = 3 match_parameter2 = 8 opcode = 326 parameter1 = 0 parameter2 = 37 timing = 1 duration = 0 STR_VAR resource = spin891a END + LPF ALTER_EFFECT INT_VAR multi_match = 1 match_opcode = 326 match_parameter1 = panic_immunity match_parameter2 = 111 opcode = 326 parameter1 = 0 parameter2 = 37 timing = 1 duration = 0 STR_VAR resource = spin891a END LPF DELETE_EFFECT INT_VAR match_opcode = 177 match_parameter1 = 3 match_parameter2 = 8 END LPF DELETE_EFFECT INT_VAR match_opcode = 321 STR_VAR match_resource = spin891 END // delete out of stack LPF CLONE_EFFECT INT_VAR multi_match = 1 match_opcode = 161 opcode = 321 parameter2 = 0 STR_VAR insert = first resource = spin891 END // insert back at top of stack @@ -290,7 +292,7 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#cureber.spl~ PATCH_FOR_EACH res IN // ~berserk.itm~ ~override~ // - causes berserk // ~blun09.itm~ ~override~ // Kiel's Morning Star +3 - causes berserk - spin117 // (spl) Berserk - cures fear - causes berserk - [Minsc's berserk comes with many additional bonuses] + cd0000 // (spl) Berserk - cures fear - causes berserk - [Minsc's berserk comes with many additional bonuses] // ~sw1h19.itm~ ~override~ // The Vampire's Revenge +1 - causes berserk // ~sw2h03.itm~ ~override~ // Cursed Berserking Sword +3 - causes berserk BEGIN @@ -305,7 +307,7 @@ COPY_EXISTING ~bpdispel.spl~ ~override~ // - cures berserk, ~ohsmode4.spl~ ~override~ // [story mode] - cures berserk, blind, confusion, deafness, disease, feeblemind, hold, fear, level drain, poison, sleep, stun ~ohtyr1.spl~ ~override~ // Exaltation - cures berserk - cures confusion - cures drunkenness - cures feeblemind - cures fear - cures sleep ~trollreg.spl~ ~override~ // [generic troll revive spell] - cures berserk, blind, confusion, deafness, disease, feeblemind, hold, fear, poison, sleep, stun - causes sleep - LPF ALTER_EFFECT INT_VAR match_opcode = 4 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#cureber~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 4 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#cureber~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_berserk END BUT_ONLY @@ -320,14 +322,14 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curebld.spl~ PATCH_FOR_EACH res IN // ~chalcy2.itm~ ~override~ // The Shadow's Blade +3 - causes blind // ~gorwom4.itm~ ~override~ // Drow Flail +3 - causes blind - unknown long effect - unknown long effect - halb06 // (itm) Blackmist +4 - causes blind [has expiry sound] + cd008i // (itm) Blackmist +4 - causes blind [has expiry sound] // ~ohbwfog.spl~ ~override~ // I need rings, wands, and amulets. What do you have for sale? - causes blind - unknown long effect - unknown long effect // ~ohdwand1.itm~ ~override~ // Wand of Glitterdust - changed to cast spwi224 directly, above // ~ohrblind.spl~ ~override~ // - causes blind ohrdark // (spl) Darkness, 15' Radius - causes blind - plays sound EFF_E06 [expiry sound] // ~spcl239a.spl~ ~override~ // - causes blind spdm101 // (spl) Blindness - causes blind - plays sound EFF_E07 [expiry sound] -// ~spdr101.spl~ ~override~ // Chromatic Orb - has expiry sound for blind, which is shunted into subspell above + cd008m // ~spdr101.spl~ ~override~ // Chromatic Orb - has expiry sound for blind, which is shunted into subspell above // ~spin595.spl~ ~override~ // Yellow Dragon Scorching Sand - causes blind - unknown long effect // ~spin878.spl~ ~override~ // Level Drain - causes blind - causes level drain - unknown long effect // ~spin893.spl~ ~override~ // Shadow Dragon Breath - causes blind - causes level drain - unknown long effect @@ -339,9 +341,9 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curebld.spl~ // ~sppr707b.spl~ ~override~ // - causes blind spwi106 // Blindness - causes blind - plays sound EFF_E07 [expiry sound] // ~spwi118.spl~ ~override~ // Chromatic Orb - has expiry sound for blind, which is shunted into subspell above - spwi118a // new chromatic orb subspell with blindness expiry sound (for spwi118, spdr101) - spwi118d // new chromatic orb subspell with blindness expiry sound (for spwi118, spdr101) - spwi224 // (spl) Glitterdust - cures invisibility - causes blind [expiry sound] + cd008v // new chromatic orb subspell with blindness expiry sound (for spwi118, spdr101) +// spwi118d // new chromatic orb subspell with blindness expiry sound (for spwi118, spdr101) + cd008w // (spl) Glitterdust - cures invisibility - causes blind [expiry sound] // ~spwi714.spl~ ~override~ // Prismatic Spray - causes blind - causes feeblemind - unknown long effect spwi815 // (spl) Power Word, Blind - causes blind [expiry sound] spwi958 // (spl) Power Word, Blind - causes blind [expiry sound] @@ -374,7 +376,7 @@ COPY_EXISTING ~amsoul01.itm~ ~override~ // Malla's Soul Stone - cures blind - cu ~spwish28.spl~ ~override~ // Heal - cures blind - cures deafness - cures disease - cures drunkenness - cures feeblemind - cures poison ~spwm168.spl~ ~override~ // Heal - cures blind - cures deafness - cures disease - cures drunkenness - cures feeblemind - cures poison ~trollreg.spl~ ~override~ // [generic troll revive spell] - cures berserk, blind, confusion, deafness, disease, feeblemind, hold, fear, poison, sleep, stun - causes sleep - LPF ALTER_EFFECT INT_VAR match_opcode = 75 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curebld~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 75 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curebld~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_blind END BUT_ONLY @@ -390,9 +392,9 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curecon.spl~ LPF ADD_SPELL_EFFECT INT_VAR opcode = 240 target = 2 timing = 1 parameter2 = 47 END // remove icon: chaos PATCH_FOR_EACH res IN bdsha01a // (spl) - causes confusion - plays animation SPCONFUS - portrait icon 3 - dwfpdgcn // (spl) - causes confusion - portrait icon 47 - plays sound EFF_E05 - plays animation SPCONFUS + cd00ah // (spl) - causes confusion - portrait icon 47 - plays sound EFF_E05 - plays animation SPCONFUS // ~magiconf.itm~ ~override~ // Ghoul hand - causes confusion - unknown long effect - portrait icon 3 - misc3m // (itm) Harp of Discord - causes confusion - plays animation SPCONFUS [extended animation] + cd00aj // (itm) Harp of Discord - causes confusion - plays animation SPCONFUS [extended animation] ohbjoke1 // (spl) - causes confusion - plays animation SPCONFUS // ~sirine1.itm~ ~override~ // Ghoul hand - causes confusion - unknown long effect - portrait icon 3 - portrait icon 48 // ~spcl751a.spl~ ~override~ // - causes confusion - plays spconfus, but only lasts one round before it renews so leave it alone rather than painfully extracting @@ -403,14 +405,14 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curecon.spl~ spin839 // (spl) Confusion - causes confusion - plays animation SPCONFUS - portrait icon 3 - plays sound EFF_E05 spin976 // (spl) Confusion - causes confusion - plays animation SPCONFUS - portrait icon 3 - plays sound EFF_E05 sppr311 // (spl) Rigid Thinking - causes confusion - portrait icon 2 - plays sound EFF_E06 [expiry sound] - sppr609 // (spl) False Dawn - causes confusion - plays animation SPCONFUS via eff + cd00an // (spl) False Dawn - causes confusion - plays animation SPCONFUS via eff sppr709 // (spl) Confusion - causes confusion - portrait icon 3 - plays sound EFF_E05 - plays animation SPCONFUS sppr983 // (spl) Confusion - causes confusion - plays animation SPCONFUS - portrait icon 3 - plays sound EFF_E05 spwi401 // (spl) Confusion - causes confusion - portrait icon 3 - plays sound EFF_E05 - plays animation SPCONFUS spwi508 // (spl) Chaos - causes confusion - portrait icon 47 - plays sound EFF_E05 - plays animation SPCONFUS // ~spwi711.spl~ ~override~ // Sphere of Chaos - causes confusion - causes hold - causes sleep - unknown long effect - wa2harp // (itm) Harp of Pandemonium - causes confusion - plays animation SPCONFUS - portrait icon 3 - was2h // (itm) Joril's Dagger +3 - causes confusion - portrait icon 3 - plays animation SPCONFUS + cd00ap // (itm) Harp of Pandemonium - causes confusion - plays animation SPCONFUS - portrait icon 3 + cd00aq // (itm) Joril's Dagger +3 - causes confusion - portrait icon 3 - plays animation SPCONFUS BEGIN LPF ADD_SPELL_EFFECT INT_VAR opcode = 321 target = 2 timing = 1 parameter2 = 2 STR_VAR resource = EVAL ~%res%~ END END @@ -430,7 +432,7 @@ COPY_EXISTING ~bdbrd03.spl~ ~override~ // Dispel Confusion - cures confusion ~spwish07.spl~ ~override~ // Greater Restoration - cures confusion - cures disease - cures feeblemind - cures fear - cures level drain - cures poison ~spwish46.spl~ ~override~ // Greater Restoration - cures confusion - cures disease - cures feeblemind - cures fear - cures level drain - cures poison ~trollreg.spl~ ~override~ // [generic troll revive spell] - cures berserk, blind, confusion, deafness, disease, feeblemind, hold, fear, poison, sleep, stun - causes sleep - LPF ALTER_EFFECT INT_VAR match_opcode = 242 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curecon~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 242 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curecon~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_confusion END BUT_ONLY @@ -520,7 +522,7 @@ COPY_EXISTING ~amsoul01.itm~ ~override~ // Malla's Soul Stone - cures blind - cu ~sw2h10dm.spl~ ~override~ // Dispel Magic - cures deafness - cures feeblemind ~sw2h19.itm~ ~override~ // Carsomyr +6 - cures deafness - cures feeblemind ~trollreg.spl~ ~override~ // [generic troll revive spell] - cures berserk, blind, confusion, deafness, disease, feeblemind, hold, fear, poison, sleep, stun - causes sleep - LPF ALTER_EFFECT INT_VAR match_opcode = 81 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curedef~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 81 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curedef~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_deafness END BUT_ONLY @@ -590,7 +592,7 @@ COPY_EXISTING ~amsoul01.itm~ ~override~ // Malla's Soul Stone - cures blind - cu ~spwm168.spl~ ~override~ // Heal - cures blind - cures deafness - cures disease - cures drunkenness - cures feeblemind - cures poison ~staf10.itm~ ~override~ // Staff of Curing - cures disease - cures drunkenness - cures poison ~trollreg.spl~ ~override~ // [generic troll revive spell] - cures berserk, blind, confusion, deafness, disease, feeblemind, hold, fear, poison, sleep, stun - causes sleep - LPF ALTER_EFFECT INT_VAR match_opcode = 79 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curedis~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 79 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curedis~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_disease END BUT_ONLY @@ -636,7 +638,7 @@ COPY_EXISTING ~amul22.itm~ ~override~ // Periapt of Proof Against Poison - cur ~spwish28.spl~ ~override~ // Heal - cures blind - cures deafness - cures disease - cures drunkenness - cures feeblemind - cures poison ~spwm168.spl~ ~override~ // Heal - cures blind - cures deafness - cures disease - cures drunkenness - cures feeblemind - cures poison ~staf10.itm~ ~override~ // Staff of Curing - cures disease - cures drunkenness - cures poison - LPF ALTER_EFFECT INT_VAR match_opcode = 164 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curedrk~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 164 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curedrk~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_drunkenness END BUT_ONLY @@ -681,7 +683,7 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curefer.spl~ spin882 // (spl) Vampire Fear - causes fear - portrait icon 36 - unknown long effect - portrait icon 36 [has expiry sound, thac0 penalty attached to fear] spin890 // (spl) Demon Fear - causes fear - portrait icon 36 - plays sound EFF_E05 [expiry sound] // ~spin891.spl~ ~override~ // Moon Dog Howl - cures fear - causes fear - spin891a // (spl) Fear effects from moon dog howl have been shunted into this spell + cd004u // (spl) Fear effects from moon dog howl have been shunted into this spell spin895 // (spl) Dragon Fear - causes fear - unknown long effect - portrait icon 36 - plays sound EFF_E05 [has expiry sound, thac0 penalty attached to fear] // ~spin921.spl~ ~override~ // Deathsong - causes fear - unknown long effect - unknown long effect // ~spin981.spl~ ~override~ // Fear - causes fear - portrait icon 36 @@ -877,7 +879,7 @@ COPY_EXISTING ~abazring.itm~ ~override~ // Ring - cures fear ~vampreg.itm~ ~override~ // Ring - cures fear ~vampreg1.itm~ ~override~ // Ring - cures fear ~vampreg2.itm~ ~override~ // Ring - cures fear - LPF ALTER_EFFECT INT_VAR match_opcode = 161 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curefer~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 161 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curefer~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_fear END BUT_ONLY @@ -891,10 +893,10 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curefbm.spl~ LPF ADD_SPELL_EFFECT INT_VAR opcode = 240 target = 2 timing = 1 parameter2 = 48 END // remove icon: feeblemind PATCH_FOR_EACH res IN // ~dwfpdgfb.spl~ ~override~ // - causes feeblemind - portrait icon 48 - potn23 // (itm) Oil of Speed - causes feeblemind - portrait icon 3 - plays sound EFF_E07 [use confusion icon and other stuff, but main effect is feeblemind not confusion] + cd0091 // (itm) Oil of Speed - causes feeblemind - portrait icon 3 - plays sound EFF_E07 [use confusion icon and other stuff, but main effect is feeblemind not confusion] // ~ring23.itm~ ~override~ // Discipliner - causes feeblemind // ~scrl18.itm~ ~override~ // Cursed Scroll of Stupidity - causes feeblemind [has expiry sound but also uses whole bunch of other effects, so leave] - sirine // (itm) Ghoul hand - causes feeblemind - unknown long effect - plays sound EFF_E05 - portrait icon 48 + cd0093 // (itm) Ghoul hand - causes feeblemind - unknown long effect - plays sound EFF_E05 - portrait icon 48 sppr650 // (spl) Spiritual Lock - causes feeblemind - plays animation cdfeeble - portrait icon 48 - plays sound EFF_E05 [expiry sound, animation] // ~spwi509.spl~ ~override~ // Feeblemind - causes feeblemind [plays animation, but only for two seconds] // ~spwi714.spl~ ~override~ // Prismatic Spray - causes blind - causes feeblemind - unknown long effect @@ -968,7 +970,7 @@ COPY_EXISTING ~arow07.itm~ ~override~ // Arrow of Dispelling - cures deafness ~sw2h10dm.spl~ ~override~ // Dispel Magic - cures deafness - cures feeblemind ~sw2h19.itm~ ~override~ // Carsomyr +6 - cures deafness - cures feeblemind ~trollreg.spl~ ~override~ // [generic troll revive spell] - cures berserk, blind, confusion, deafness, disease, feeblemind, hold, fear, poison, sleep, stun - causes sleep - LPF ALTER_EFFECT INT_VAR match_opcode = 77 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curefbm~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 77 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curefbm~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_feeblemind END BUT_ONLY @@ -984,33 +986,33 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curehol.spl~ // ~basilg1.itm~ ~override~ // Attack - causes hold // ~basill1.itm~ ~override~ // Attack - causes hold // ~bazpatrg.itm~ ~override~ // Ring - cures fear - causes hold - carrio1 // (itm) Attack - causes hold - portrait icon 13 - plays sound EFF_E05 [expiry sound] + cd009q // (itm) Attack - causes hold - portrait icon 13 - plays sound EFF_E05 [expiry sound] // ~dagg17.itm~ ~override~ // Stiletto of Demarchess +2 - causes hold - portrait icon 13 - demmau01 // (itm) Skull - causes hold - portrait icon 13 - plays sound EFF_E05 [expiry sound] + cd009s // (itm) Skull - causes hold - portrait icon 13 - plays sound EFF_E05 [expiry sound] // ~ghast1.itm~ ~override~ // Attack - causes hold - portrait icon 13 - plays sound EFF_E05 - plays sound EFF_E07 - unknown long effect - portrait icon 126 - ghast1p // (spl) hold effects from ghast1.itm, lacedo.itm, lacedo02.itm have been moved here - ghoul1 // (itm) Ghoul Touch - causes hold - plays sound EFF_E05 - portrait icon 13 [expiry sound] + cd009t // (spl) hold effects from ghast1.itm, lacedo.itm, lacedo02.itm have been moved here + cd009u // (itm) Ghoul Touch - causes hold - plays sound EFF_E05 - portrait icon 13 [expiry sound] // ~ghoullor.itm~ ~override~ // Ghoul Touch - causes disease - causes hold - portrait icon 13 - plays sound EFF_E05 - ghoullop // (spl) hold effects from ghoullor.itm shunted into this spell - ghoult // (itm) Ghoul Touch - causes hold - portrait icon 13 - plays sound EFF_E05 [expiry sound] + cd009v // (spl) hold effects from ghoullor.itm shunted into this spell + cd009w // (itm) Ghoul Touch - causes hold - portrait icon 13 - plays sound EFF_E05 [expiry sound] // ~holdring.itm~ ~override~ // Ring - cures fear - causes hold - kaldw1 // (itm) - causes hold - portrait icon 13 - plays sound EFF_E03 [expiry sound] + cd009x // (itm) - causes hold - portrait icon 13 - plays sound EFF_E03 [expiry sound] // ~lacedo.itm~ ~override~ // Attack - causes disease - causes hold - portrait icon 13 - plays sound EFF_E05 // ~lacedo02.itm~ ~override~ // Ghoul Touch - causes disease - causes hold - portrait icon 13 - plays sound EFF_E05 // ~lich02.itm~ ~override~ // Ghoul Touch - causes hold - portrait icon 13 // ~ohbdagg1.itm~ ~override~ // Ornate Dagger - causes hold - portrait icon 13 ohbenvlp // (spl) Yoshimo's Katana +1 - causes hold - plays animation SPMINDAT - portrait icon 13 - ohnwand1 // (spl) - causes hold - unknown long effect - plays animation OHNWAND1 - unknown long effect - unknown long effect + cd00bp // (spl) - causes hold - unknown long effect - plays animation OHNWAND1 - unknown long effect - unknown long effect ohreyeb2 // (spl) Paralyze - causes hold - plays sound EFF_E08 [expiry sound] // ~parabasi.itm~ ~override~ // - causes hold - revent1 // (itm) - causes hold - portrait icon 13 - plays sound EFF_E05 [expiry sound] + cd00a5 // (itm) - causes hold - portrait icon 13 - plays sound EFF_E05 [expiry sound] // ~rodsword.itm~ ~override~ // Flaming Long Sword +1 - causes hold - unknown long effect - spcl415h // (spl) - causes hold - plays animation SPMINDAT - portrait icon 13 [animation] + cd00bq // (spl) - causes hold - plays animation SPMINDAT - portrait icon 13 [animation] spcl742 // (spl) Hold Undead - causes hold - plays animation CDUNHVIS - plays sound EFF_E06 [expiry sound, animation] spin648 // Hold Person - causes hold [plays spmindat permanently] // ~spin776.spl~ ~override~ // - causes hold // ~spin863.spl~ ~override~ // - causes hold - spin914 // (spl) Mimic Glue - causes hold - plays animation GREASED - portrait icon 13 [animation] + cd00a8 // (spl) Mimic Glue - causes hold - plays animation GREASED - portrait icon 13 [animation] // ~spin960.spl~ ~override~ // Paralyzation Ray - causes hold spin988 // (spl) Hold Person - causes hold - plays animation SPMINDAT - plays sound EFF_E08 [expiry sound, animation] spin990 // (spl) Paralyze - causes hold - plays sound EFF_E08 [expiry sound] @@ -1030,7 +1032,7 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curehol.spl~ // ~spwm114.spl~ ~override~ // Polymorph Other - causes hold spwm122 // (spl) Hold Person - causes hold - plays animation SPMINDAT - plays sound EFF_E05 [animation, expiry sound] // ~vampire.itm~ ~override~ // - causes hold - portrait icon 13 - wolfva1 // (itm) - causes hold - portrait icon 13 - plays sound EFF_E05 [expiry sound] + cd00ag // (itm) - causes hold - portrait icon 13 - plays sound EFF_E05 [expiry sound] BEGIN LPF ADD_SPELL_EFFECT INT_VAR opcode = 321 target = 2 timing = 1 parameter2 = 2 STR_VAR resource = EVAL ~%res%~ END END @@ -1062,7 +1064,7 @@ COPY_EXISTING ~blun30.itm~ ~override~ // Flail of Ages +5 - cures hold - cures ~sw2h06.itm~ ~override~ // Spider's Bane +2 - cures hold - cures stun ~sw2h13.itm~ ~override~ // Spider's Bane +2 - cures hold - cures stun ~trollreg.spl~ ~override~ // [generic troll revive spell] - cures berserk, blind, confusion, deafness, disease, feeblemind, hold, fear, poison, sleep, stun - causes sleep - LPF ALTER_EFFECT INT_VAR match_opcode = 162 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curehol~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 162 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curehol~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_hold END BUT_ONLY @@ -1196,7 +1198,7 @@ COPY_EXISTING ~jwtrue.spl~ ~override~ // - cures invisibil ~spwi609.spl~ ~override~ // True Sight - cures invisibility ~spwi609d.spl~ ~override~ // True Sight - cures invisibility // LPF ALTER_EFFECT INT_VAR match_opcode = 47 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#cureinv~ END - LPF ALTER_EFFECT INT_VAR match_opcode = 116 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#cureinv~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 116 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#cureinv~ END // LPF cd_apply_batch STR_VAR array_name = cd_cure_invisbility END // currently does nothing BUT_ONLY @@ -1269,7 +1271,7 @@ COPY_EXISTING ~cdpr417.spl~ ~override~ // Lesser Restoration - cures level drai ~sppr713.spl~ ~override~ // Greater Restoration - cures confusion - cures disease - cures feeblemind - cures fear - cures level drain - cures poison ~spwish07.spl~ ~override~ // Greater Restoration - cures confusion - cures disease - cures feeblemind - cures fear - cures level drain - cures poison ~spwish46.spl~ ~override~ // Greater Restoration - cures confusion - cures disease - cures feeblemind - cures fear - cures level drain - cures poison - LPF ALTER_EFFECT INT_VAR match_opcode = 224 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#cureldr~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 224 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#cureldr~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_leveldrain END BUT_ONLY @@ -1296,7 +1298,7 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curendt.spl~ END COPY_EXISTING ~ohbddeti.spl~ ~override~ // - cures invisibility - cures nondetection - LPF ALTER_EFFECT INT_VAR match_opcode = 70 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curendt~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 70 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curendt~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_nondetection END BUT_ONLY @@ -1329,7 +1331,7 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curepse.spl~ END COPY_EXISTING ~spin873.spl~ ~override~ // - cures pause - LPF ALTER_EFFECT INT_VAR match_opcode = 270 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curepse~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 270 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curepse~ END // LPF cd_apply_batch STR_VAR array_name = cd_cure_pause END // currently does nothing BUT_ONLY @@ -1470,7 +1472,7 @@ COPY_EXISTING ~amsoul01.itm~ ~override~ // Malla's Soul Stone - cures blind - cu ~spwm168.spl~ ~override~ // Heal - cures blind - cures deafness - cures disease - cures drunkenness - cures feeblemind - cures poison ~staf10.itm~ ~override~ // Staff of Curing - cures disease - cures drunkenness - cures poison ~trollreg.spl~ ~override~ // [generic troll revive spell] - cures berserk, blind, confusion, deafness, disease, feeblemind, hold, fear, poison, sleep, stun - causes sleep - LPF ALTER_EFFECT INT_VAR match_opcode = 11 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curepsn~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 11 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curepsn~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_poison END BUT_ONLY @@ -1500,7 +1502,7 @@ COPY_EXISTING ~amul21.itm~ ~override~ // Amulet of Power - cures silence ~bdhelm11.itm~ ~override~ // Bard Hat - cures deafness - cures silence ~spwi219.spl~ ~override~ // Vocalize - cures silence ~sw1h50.itm~ ~override~ // Shazzellim +1 - cures silence - LPF ALTER_EFFECT INT_VAR match_opcode = 48 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curesil~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 48 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curesil~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_silence END BUT_ONLY @@ -1597,7 +1599,7 @@ COPY_EXISTING ~bpdispel.spl~ ~override~ // - cures berserk, ~ohtyr1.spl~ ~override~ // Exaltation - cures berserk - cures confusion - cures drunkenness - cures feeblemind - cures fear - cures sleep ~ohwakeup.spl~ ~override~ // - cures sleep ~trollreg.spl~ ~override~ // [generic troll revive spell] - cures berserk, blind, confusion, deafness, disease, feeblemind, hold, fear, poison, sleep, stun - causes sleep - LPF ALTER_EFFECT INT_VAR match_opcode = 2 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#cureslp~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 2 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#cureslp~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_sleep END BUT_ONLY @@ -1622,13 +1624,13 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curestn.spl~ // ~dwbolt02.itm~ ~override~ // Drow Bolt of Stunning - causes stun // ~dwfpsmst.spl~ ~override~ // - causes stun // ~elemhydr.itm~ ~override~ // Skull - cures deafness - cures feeblemind - causes stun - plays animation SPFIRESB - plays animation SPFIRESA - unknown long effect - fampsdat // (itm) Skull - causes stun - plays animation cdstun + cd006j // (itm) Skull - causes stun - plays animation cdstun // ~ghoulc.itm~ ~override~ // Ghoul hand - causes stun // ~goltome4.itm~ ~override~ // Attack - causes stun - unknown long effect // ~gorcamb.itm~ ~override~ // Two-handed Sword +2 - causes stun - unknown long effect - unknown long effect - unknown long effect - portrait icon 91 // ~gorsnake.itm~ ~override~ // Skull - causes poison - causes stun // ~icetrl.itm~ ~override~ // Attack - causes stun - [stun and related effects shunted to spell] - icetrlst // (spl) Attack - causes stun - [stun effects from icetrl.itm routed here] + cd006o // (spl) Attack - causes stun - [stun effects from icetrl.itm routed here] // ~kuobolt.itm~ ~override~ // Kuo-toan Bolt - causes stun // ~kuobolt2.itm~ ~override~ // Kuo-toan Bolt - causes stun // ~mepsal.itm~ ~override~ // Skull - causes stun @@ -1645,7 +1647,7 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curestn.spl~ // ~sareveff.spl~ ~override~ // - causes stun // ~slng06.itm~ ~override~ // Sling of Arvoreen +4 - causes stun // ~spcl123.spl~ ~override~ // - causes stun - unknown long effect - unknown long effect - unknown long effect - unknown long effect - unknown long effect - unknown long effect - unknown long effect - unknown long effect - unknown long effect -// ~spdr101.spl~ ~override~ // Chromatic Orb - causes blind - causes stun - plays sound EFF_E05 [stun expiry sound shunted to spwi118c.spl] + cd0075 // ~spdr101.spl~ ~override~ // Chromatic Orb - causes blind - causes stun - plays sound EFF_E05 [stun expiry sound shunted to spwi118c.spl] // ~spin543.spl~ ~override~ // Inflict Pain - causes stun // ~spin727.spl~ ~override~ // Psionic Blast - causes stun // ~spin832.spl~ ~override~ // Silver Dragon Paralyzation - causes stun @@ -1659,10 +1661,10 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curestn.spl~ // ~sppr710.spl~ ~override~ // Holy Word - causes deafness - causes stun - [has multiple, unrelated effects] // ~sppr715.spl~ ~override~ // Unholy Word - causes deafness - causes stun - [has multiple, unrelated effects] sppr718 // (spl) Symbol, Stun - causes stun - plays sound EFF_E05 [expiry sound] - sppr984 // (spl) Chromatic Orb - causes stun - plays sound EFF_E05 [expiry sound; limited edition of chromatic orb] + cd007d // (spl) Chromatic Orb - causes stun - plays sound EFF_E05 [expiry sound; limited edition of chromatic orb] // ~spwi118.spl~ ~override~ // Chromatic Orb - causes blind - causes stun - plays sound EFF_E05 [stun expiry sound shunted to spwi118c.spl] - spwi118e // (spl) Chromatic Orb - causes blind - causes stun - plays sound EFF_E05 [stun expiry sound shunted here] - spwi118g // (spl) Chromatic Orb - causes blind - causes stun - plays sound EFF_E05 [stun expiry sound shunted here] + cd007e // (spl) Chromatic Orb - causes blind - causes stun - plays sound EFF_E05 [stun expiry sound shunted here] +// spwi118g // (spl) Chromatic Orb - causes blind - causes stun - plays sound EFF_E05 [stun expiry sound shunted here] spwi816 // (spl) Symbol, Stun - causes stun - plays sound EFF_E05 [expiry sound] spwi898 // (spl) Symbol, Stun - causes stun - plays sound EFF_E05 [expiry sound] // ~spwm152.spl~ ~override~ // Polymorph Other - causes stun @@ -1702,7 +1704,7 @@ COPY_EXISTING ~blun30.itm~ ~override~ // Flail of Ages +5 - cures hold - cures ~sw2h06.itm~ ~override~ // Spider's Bane +2 - cures hold - cures stun ~sw2h13.itm~ ~override~ // Spider's Bane +2 - cures hold - cures stun ~trollreg.spl~ ~override~ // [generic troll revive spell] - cures berserk, blind, confusion, deafness, disease, feeblemind, hold, fear, poison, sleep, stun - causes sleep - LPF ALTER_EFFECT INT_VAR match_opcode = 46 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curestn~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 46 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curestn~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_stun END BUT_ONLY From de1b0b4e9b9fdca7cf2446d0a436524c4a17a48d Mon Sep 17 00:00:00 2001 From: 4Luke4 Date: Sat, 5 Apr 2025 19:36:26 +0200 Subject: [PATCH 04/12] bg subspell file names --- eefixpack/files/tph/luke/7eyes/7eyes.tph | 2 +- eefixpack/files/tph/tbd_vfx_removal_bg.tph | 334 +++++++++++---------- 2 files changed, 169 insertions(+), 167 deletions(-) diff --git a/eefixpack/files/tph/luke/7eyes/7eyes.tph b/eefixpack/files/tph/luke/7eyes/7eyes.tph index 19c7a9a0..5c394541 100644 --- a/eefixpack/files/tph/luke/7eyes/7eyes.tph +++ b/eefixpack/files/tph/luke/7eyes/7eyes.tph @@ -30,7 +30,7 @@ BEGIN 12 , "piercing" , "" , "" , "Bleeding, Suffers Bleeding Wound, Bleeding Wound, Deathbringer Assault" , "102 137" , "" => "damage_piercing.2da" 13 , "null" , "DEATH_IMMUNITY" , "" , "Death, Vorpal Hit" , "51" , "" => "kill.2da" 16 , "null" , "HASTE_IMMUNITY" , "93 126 206 318" , "Haste, Hasted" , "38 110" , "" => "haste.2da" - 24 , "null" , "PANIC_IMMUNITY" , "23 54 106" , "Panic, Morale Failure: Panic, *flees in terror*" , "36" , "cdhorror spmindat ohrmind" => "panic.2da" + 24 , "null" , "PANIC_IMMUNITY" , "23 54 106 10 44" , "Panic, Morale Failure: Panic, *flees in terror*" , "36" , "cdhorror spmindat ohrmind" => "panic.2da" // NB.: CON/STR penalties seem tied to fear 38 , "null" , "SILENCE_IMMUNITY" , "" , "Silence, Silenced, Bard Song Silenced" , "34" , "" => "silence.2da" //39 , "null" , "" , "" , "Sleep, Unconscious" , "" , "" => "sleep.2da" 40 , "null" , "SLOW_IMMUNITY" , "0 54 240" , "Slow, Slowed" , "41" , "" => "slow.2da" diff --git a/eefixpack/files/tph/tbd_vfx_removal_bg.tph b/eefixpack/files/tph/tbd_vfx_removal_bg.tph index 54dde18d..ca4416b0 100644 --- a/eefixpack/files/tph/tbd_vfx_removal_bg.tph +++ b/eefixpack/files/tph/tbd_vfx_removal_bg.tph @@ -162,158 +162,160 @@ COPY_EXISTING ~potn23.itm~ ~override~ // Oil of Speed - causes feeblemind - po LPF ALTER_EFFECT INT_VAR match_opcode = 400 opcode = 139 END // correct opcode // fear abilities missing their immunity checks -COPY_EXISTING ~bdgfear.spl~ ~override~ // Ghost Fear - causes fear - [has expiry sound, animation, and CON/STR penalties--all seem tied to fear] - ~spin882.spl~ ~override~ // (spl) Vampire Fear - causes fear - portrait icon 36 - unknown long effect - portrait icon 36 [includes thac0 penalty] - ~spin921.spl~ ~override~ // Deathsong - causes fear - [expiry sound, includes damage penalty] - ~sppr717a.spl~ ~override~ // [creeping doom subspell] causes fear - portrait icon 36 - LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 324 parameter1 = panic_immunity parameter2 = 110 timing = 0 duration = 0 resist_dispel = 0 STR_VAR insert = first resource = EVAL ~%SOURCE_RES%~ END - IF_EXISTS // sod asset(s) +// COPY_EXISTING ~bdgfear.spl~ ~override~ // Ghost Fear - causes fear - [has expiry sound, animation, and CON/STR penalties--all seem tied to fear] +// ~spin882.spl~ ~override~ // (spl) Vampire Fear - causes fear - portrait icon 36 - unknown long effect - portrait icon 36 [includes thac0 penalty] +// ~spin921.spl~ ~override~ // Deathsong - causes fear - [expiry sound, includes damage penalty] +// ~sppr717a.spl~ ~override~ // [creeping doom subspell] causes fear - portrait icon 36 +// LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 324 parameter1 = panic_immunity parameter2 = 110 timing = 0 duration = 0 resist_dispel = 0 STR_VAR insert = first resource = EVAL ~%SOURCE_RES%~ END +// IF_EXISTS // sod asset(s) // feeblemind abilities missing their immunity checks -COPY_EXISTING ~dwfpsirf.spl~ ~override~ // - causes feeblemind - portrait icon 48 - LPF CLONE_EFFECT INT_VAR match_opcode = 76 opcode = 324 parameter1 = feeblemind_immunity parameter2 = 110 timing = 0 duration = 0 resist_dispel = 0 STR_VAR insert = first resource = EVAL ~%SOURCE_RES%~ END +// COPY_EXISTING ~dwfpsirf.spl~ ~override~ // - causes feeblemind - portrait icon 48 +// LPF CLONE_EFFECT INT_VAR match_opcode = 76 opcode = 324 parameter1 = feeblemind_immunity parameter2 = 110 timing = 0 duration = 0 resist_dispel = 0 STR_VAR insert = first resource = EVAL ~%SOURCE_RES%~ END // placement of panic 324 blocks insect animation and spell failure icon -COPY_EXISTING ~sppr517.spl~ ~override~ // Insect Plague - causes fear - unknown long effect - plays animation ICINHIT - portrait icon 83 - PATCH_FOR_EACH op IN 324 24 BEGIN - LPF CLONE_EFFECT INT_VAR match_opcode = op STR_VAR insert = last END // copy to end of stack - LPF DELETE_EFFECT INT_VAR match_opcode = op multi_match = 1 END // delete original - END +// COPY_EXISTING ~sppr517.spl~ ~override~ // Insect Plague - causes fear - unknown long effect - plays animation ICINHIT - portrait icon 83 +// PATCH_FOR_EACH op IN 324 24 BEGIN +// LPF CLONE_EFFECT INT_VAR match_opcode = op STR_VAR insert = last END // copy to end of stack +// LPF DELETE_EFFECT INT_VAR match_opcode = op multi_match = 1 END // delete original +// END ///// \\\\\ ///// subspell creation \\\\\ ///// \\\\\ // shunt ghast hold stuff to new ability -COPY_EXISTING ~ghast1.itm~ ~override~ // Attack - causes hold - portrait icon 13 - plays sound EFF_E05 - plays sound EFF_E07 - unknown long effect - portrait icon 126 - LPF ALTER_EFFECT INT_VAR match_opcode = 109 opcode = 146 target = 2 parameter1 = 0 parameter2 = 2 timing = 1 duration = 0 STR_VAR resource = ghast1p END // change paralyze to cast spells - LPF DELETE_EFFECT INT_VAR match_opcode = 141 match_parameter2 = 1 END // delete related - LPF DELETE_EFFECT INT_VAR match_opcode = 50 END // delete related - LPF DELETE_EFFECT INT_VAR match_opcode = 61 END // delete related - LPF DELETE_EFFECT INT_VAR match_opcode = 142 match_parameter2 = 13 END // delete related - LPF DELETE_EFFECT INT_VAR match_opcode = 174 STR_VAR match_resource = eff_e05 END // delete related - LPF DELETE_EFFECT INT_VAR match_opcode = 174 STR_VAR match_resource = eff_p11 END // delete related +// COPY_EXISTING ~ghast1.itm~ ~override~ // Attack - causes hold - portrait icon 13 - plays sound EFF_E05 - plays sound EFF_E07 - unknown long effect - portrait icon 126 +// LPF ALTER_EFFECT INT_VAR match_opcode = 109 opcode = 146 target = 2 parameter1 = 0 parameter2 = 2 timing = 1 duration = 0 STR_VAR resource = ghast1p END // change paralyze to cast spells +// LPF DELETE_EFFECT INT_VAR match_opcode = 141 match_parameter2 = 1 END // delete related +// LPF DELETE_EFFECT INT_VAR match_opcode = 50 END // delete related +// LPF DELETE_EFFECT INT_VAR match_opcode = 61 END // delete related +// LPF DELETE_EFFECT INT_VAR match_opcode = 142 match_parameter2 = 13 END // delete related +// LPF DELETE_EFFECT INT_VAR match_opcode = 174 STR_VAR match_resource = eff_e05 END // delete related +// LPF DELETE_EFFECT INT_VAR match_opcode = 174 STR_VAR match_resource = eff_p11 END // delete related // shunt ghast/ghoul lord hold stuff to new ability -COPY ~eefixpack/files/spl/cdcure.spl~ ~override/ghast1p.spl~ - LPF ADD_SPELL_EFFECT INT_VAR opcode = 109 target = 2 parameter2 = 2 duration = 42 END // add paralyze - LPF CLONE_EFFECT INT_VAR match_opcode = 109 opcode = 142 parameter2 = 13 STR_VAR insert = below END // add 'held' icon - LPF CLONE_EFFECT INT_VAR match_opcode = 109 opcode = 141 timing = 1 duration = 0 parameter2 = 1 STR_VAR insert = below END // add 'necromancy earth' effect - LPF CLONE_EFFECT INT_VAR match_opcode = 141 opcode = 61 duration = 1 parameter1 = ((120 << 24) + (90 << 16) + (60 << 8)) parameter2 = (25 << 16) STR_VAR insert = below END - LPF CLONE_EFFECT INT_VAR match_opcode = 141 opcode = 174 duration = 0 parameter2 = 0 STR_VAR resource = eff_p11 insert = below END // immediate sound - LPF CLONE_EFFECT INT_VAR match_opcode = 174 timing = 4 duration = 42 STR_VAR resource = eff_e05 insert = below END // expiry sound +// COPY ~eefixpack/files/spl/cdcure.spl~ ~override/ghast1p.spl~ +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 109 target = 2 parameter2 = 2 duration = 42 END // add paralyze +// LPF CLONE_EFFECT INT_VAR match_opcode = 109 opcode = 142 parameter2 = 13 STR_VAR insert = below END // add 'held' icon +// LPF CLONE_EFFECT INT_VAR match_opcode = 109 opcode = 141 timing = 1 duration = 0 parameter2 = 1 STR_VAR insert = below END // add 'necromancy earth' effect +// LPF CLONE_EFFECT INT_VAR match_opcode = 141 opcode = 61 duration = 1 parameter1 = ((120 << 24) + (90 << 16) + (60 << 8)) parameter2 = (25 << 16) STR_VAR insert = below END +// LPF CLONE_EFFECT INT_VAR match_opcode = 141 opcode = 174 duration = 0 parameter2 = 0 STR_VAR resource = eff_p11 insert = below END // immediate sound +// LPF CLONE_EFFECT INT_VAR match_opcode = 174 timing = 4 duration = 42 STR_VAR resource = eff_e05 insert = below END // expiry sound // LPF CLONE_EFFECT INT_VAR match_opcode = 109 opcode = 324 parameter1 = hold_immunity parameter2 = 110 timing = 0 resist_dispel = 0 duration = 0 STR_VAR insert = first resource = EVAL ~%DEST_RES%~ END // elven immunity to ghoul attack should also block expiry sound -COPY_EXISTING ~ghoul1.itm~ ~override~ // Ghoul Touch - causes hold - plays sound EFF_E05 - portrait icon 13 [expiry sound] - LPF CLONE_EFFECT INT_VAR match_opcode = 324 opcode = 424 STR_VAR insert = first END - LPF DELETE_EFFECT INT_VAR match_opcode = 324 END - LPF ALTER_EFFECT INT_VAR match_opcode = 424 opcode = 324 END +// COPY_EXISTING ~ghoul1.itm~ ~override~ // Ghoul Touch - causes hold - plays sound EFF_E05 - portrait icon 13 [expiry sound] +// LPF CLONE_EFFECT INT_VAR match_opcode = 324 opcode = 424 STR_VAR insert = first END +// LPF DELETE_EFFECT INT_VAR match_opcode = 324 END +// LPF ALTER_EFFECT INT_VAR match_opcode = 424 opcode = 324 END // shunt stun effects into spell -COPY_EXISTING ~icetrl.itm~ ~override~ // Attack - causes stun - unknown long effect - unknown long effect - LPF ALTER_EFFECT INT_VAR match_opcode = 139 opcode = 146 parameter1 = 0 parameter2 = 2 timing = 1 duration = 0 STR_VAR resource = icetrlst END - LPF DELETE_EFFECT INT_VAR match_duration = 18 END +// COPY_EXISTING ~icetrl.itm~ ~override~ // Attack - causes stun - unknown long effect - unknown long effect +// LPF ALTER_EFFECT INT_VAR match_opcode = 139 opcode = 146 parameter1 = 0 parameter2 = 2 timing = 1 duration = 0 STR_VAR resource = icetrlst END +// LPF DELETE_EFFECT INT_VAR match_duration = 18 END -COPY ~eefixpack/files/spl/cdcure.spl~ ~override/icetrlst.spl~ - LPF ADD_SPELL_EFFECT INT_VAR opcode = 324 parameter1 = stun_immunity parameter2 = 110 STR_VAR resource = EVAL ~%DEST_RES%~ END - LPF ADD_SPELL_EFFECT INT_VAR opcode = 45 target = 2 duration = 18 END - LPF ADD_SPELL_EFFECT INT_VAR opcode = 7 target = 2 parameter1 = 71 parameter2 = 3 duration = 18 END - LPF ADD_SPELL_EFFECT INT_VAR opcode = 139 target = 2 parameter1 = 14043 timing = 1 END +// COPY ~eefixpack/files/spl/cdcure.spl~ ~override/icetrlst.spl~ +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 324 parameter1 = stun_immunity parameter2 = 110 STR_VAR resource = EVAL ~%DEST_RES%~ END +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 45 target = 2 duration = 18 END +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 7 target = 2 parameter1 = 71 parameter2 = 3 duration = 18 END +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 139 target = 2 parameter1 = 14043 timing = 1 END ACTION_IF game_includes_sod BEGIN // sod asset // split fear part of dragon fear into subspell - COPY_EXISTING ~bddragg2.spl~ ~override/bddraggf.spl~ // Dragon Fear - causes fear - unknown long effect - portrait icon 36 - plays sound EFF_E05 - LPF DELETE_EFFECT INT_VAR match_savingthrow = BIT4 END // delete fatigue effects - LPM cd_make_subspell - LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 324 parameter1 = panic_immunity parameter2 = 110 timing = 0 duration = 0 resist_dispel = 0 STR_VAR insert = first resource = EVAL ~%DEST_RES%~ END + // COPY_EXISTING ~bddragg2.spl~ ~override/bddraggf.spl~ // Dragon Fear - causes fear - unknown long effect - portrait icon 36 - plays sound EFF_E05 + // LPF DELETE_EFFECT INT_VAR match_savingthrow = BIT4 END // delete fatigue effects + // LPM cd_make_subspell + // LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 324 parameter1 = panic_immunity parameter2 = 110 timing = 0 duration = 0 resist_dispel = 0 STR_VAR insert = first resource = EVAL ~%DEST_RES%~ END // split fear part of dragin fear into subspell - COPY_EXISTING ~bddragg2.spl~ ~override~ // Dragon Fear - causes fear - unknown long effect - portrait icon 36 - plays sound EFF_E05 - LPF ALTER_EFFECT INT_VAR match_opcode = 24 opcode = 146 parameter1 = 0 parameter2 = 2 timing = 1 duration = 0 savingthrow = 17 STR_VAR resource = bddraggf END - LPF DELETE_EFFECT INT_VAR match_savingthrow = BIT0 END // delete fear effects - LPF ALTER_EFFECT INT_VAR match_savingthrow = 17 savingthrow = BIT2 END + // COPY_EXISTING ~bddragg2.spl~ ~override~ // Dragon Fear - causes fear - unknown long effect - portrait icon 36 - plays sound EFF_E05 + // LPF ALTER_EFFECT INT_VAR match_opcode = 24 opcode = 146 parameter1 = 0 parameter2 = 2 timing = 1 duration = 0 savingthrow = 17 STR_VAR resource = bddraggf END + // LPF DELETE_EFFECT INT_VAR match_savingthrow = BIT0 END // delete fear effects + // LPF ALTER_EFFECT INT_VAR match_savingthrow = 17 savingthrow = BIT2 END // split deafness part of piercing shriek into its own spell - COPY_EXISTING ~bdshriek.spl~ ~override/bdshried.spl~ // Piercing Shriek - causes confusion deafness stun - LPF DELETE_EFFECT INT_VAR match_probability2 = 0 END // delete stun, other effects - LPF DELETE_EFFECT INT_VAR match_probability2 = 19 END // delete confusion - LPF DELETE_EFFECT INT_VAR match_opcode = 177 END // delete summons - LPF ALTER_EFFECT INT_VAR probability1 = 100 probability2 = 0 END - LPF ALTER_EFFECT INT_VAR match_opcode = 328 special = 1 END // fix while we're here: not properly setting spellstate - LPM cd_make_subspell + // COPY_EXISTING ~bdshriek.spl~ ~override/bdshried.spl~ // Piercing Shriek - causes confusion deafness stun + // LPF DELETE_EFFECT INT_VAR match_probability2 = 0 END // delete stun, other effects + // LPF DELETE_EFFECT INT_VAR match_probability2 = 19 END // delete confusion + // LPF DELETE_EFFECT INT_VAR match_opcode = 177 END // delete summons + // LPF ALTER_EFFECT INT_VAR probability1 = 100 probability2 = 0 END + // LPF ALTER_EFFECT INT_VAR match_opcode = 328 special = 1 END // fix while we're here: not properly setting spellstate + // LPM cd_make_subspell // split confusion part of piercing shriek into its own spell - COPY_EXISTING ~bdshriek.spl~ ~override/bdshriec.spl~ // Piercing Shriek - causes confusion deafness stun - LPF DELETE_EFFECT INT_VAR match_probability1 = 100 END // delete deafness effects - LPF DELETE_EFFECT INT_VAR match_probability1 = 28 END // delete stun effects - LPF DELETE_EFFECT INT_VAR match_opcode = 177 END // delete summons - LPF ALTER_EFFECT INT_VAR probability1 = 100 probability2 = 0 END - LPM cd_make_subspell - LPF CLONE_EFFECT INT_VAR match_opcode = 128 opcode = 324 parameter1 = confusion_immunity parameter2 = 110 timing = 0 duration = 0 STR_VAR insert = first resource = EVAL ~%DEST_RES%~ END + // COPY_EXISTING ~bdshriek.spl~ ~override/bdshriec.spl~ // Piercing Shriek - causes confusion deafness stun + // LPF DELETE_EFFECT INT_VAR match_probability1 = 100 END // delete deafness effects + // LPF DELETE_EFFECT INT_VAR match_probability1 = 28 END // delete stun effects + // LPF DELETE_EFFECT INT_VAR match_opcode = 177 END // delete summons + // LPF ALTER_EFFECT INT_VAR probability1 = 100 probability2 = 0 END + // LPM cd_make_subspell + // LPF CLONE_EFFECT INT_VAR match_opcode = 128 opcode = 324 parameter1 = confusion_immunity parameter2 = 110 timing = 0 duration = 0 STR_VAR insert = first resource = EVAL ~%DEST_RES%~ END // split stun part of piercing shriek into its own spell - COPY_EXISTING ~bdshriek.spl~ ~override/bdshries.spl~ // Piercing Shriek - causes confusion deafness stun - LPF DELETE_EFFECT INT_VAR match_probability1 = 100 END // delete deafness effects - LPF DELETE_EFFECT INT_VAR match_probability1 = 48 END // delete confusion effects - LPF DELETE_EFFECT INT_VAR match_opcode = 177 END // delete summons - LPF ALTER_EFFECT INT_VAR probability1 = 100 probability2 = 0 END - LPM cd_make_subspell - LPF CLONE_EFFECT INT_VAR match_opcode = 45 opcode = 324 parameter1 = stun_immunity parameter2 = 110 timing = 0 duration = 0 STR_VAR insert = first resource = EVAL ~%DEST_RES%~ END + // COPY_EXISTING ~bdshriek.spl~ ~override/bdshries.spl~ // Piercing Shriek - causes confusion deafness stun + // LPF DELETE_EFFECT INT_VAR match_probability1 = 100 END // delete deafness effects + // LPF DELETE_EFFECT INT_VAR match_probability1 = 48 END // delete confusion effects + // LPF DELETE_EFFECT INT_VAR match_opcode = 177 END // delete summons + // LPF ALTER_EFFECT INT_VAR probability1 = 100 probability2 = 0 END + // LPM cd_make_subspell + // LPF CLONE_EFFECT INT_VAR match_opcode = 45 opcode = 324 parameter1 = stun_immunity parameter2 = 110 timing = 0 duration = 0 STR_VAR insert = first resource = EVAL ~%DEST_RES%~ END // change confusion part to cast new subspell instead - COPY_EXISTING ~bdshriek.spl~ ~override~ // Piercing Shriek - causes confusion deafness stun - LPF DELETE_EFFECT INT_VAR match_probability1 = 48 END // delete confusion effects - LPF DELETE_EFFECT INT_VAR match_probability1 = 28 END // delete stun effects - LPF DELETE_EFFECT INT_VAR match_duration = 24 END // delete deaf effects - LPF ALTER_EFFECT INT_VAR match_opcode = 139 match_parameter1 = 25102 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = bdshried END // turn deaf into spell for deaf - LPF CLONE_EFFECT INT_VAR match_opcode = 146 probability1 = 48 probability2 = 19 STR_VAR match_resource = bdshried resource = bdshriec END // clone cast deaf into cast confusion - LPF CLONE_EFFECT INT_VAR match_opcode = 146 probability1 = 28 probability2 = 0 STR_VAR match_resource = bdshried resource = bdshries END // clone cast deaf into cast stun + // COPY_EXISTING ~bdshriek.spl~ ~override~ // Piercing Shriek - causes confusion deafness stun + // LPF DELETE_EFFECT INT_VAR match_probability1 = 48 END // delete confusion effects + // LPF DELETE_EFFECT INT_VAR match_probability1 = 28 END // delete stun effects + // LPF DELETE_EFFECT INT_VAR match_duration = 24 END // delete deaf effects + // LPF ALTER_EFFECT INT_VAR match_opcode = 139 match_parameter1 = 25102 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = bdshried END // turn deaf into spell for deaf + // LPF CLONE_EFFECT INT_VAR match_opcode = 146 probability1 = 48 probability2 = 19 STR_VAR match_resource = bdshried resource = bdshriec END // clone cast deaf into cast confusion + // LPF CLONE_EFFECT INT_VAR match_opcode = 146 probability1 = 28 probability2 = 0 STR_VAR match_resource = bdshried resource = bdshries END // clone cast deaf into cast stun END // split hold from bounty hunter's special snare into own spell -COPY ~eefixpack/files/spl/spcl415h.spl~ ~override~ // just the hold ability farmed out into separate spell - LPF ALTER_EFFECT INT_VAR match_opcode = 324 parameter1 = hold_immunity END -COPY_EXISTING ~spcl415.spl~ ~override~ - LPF DELETE_EFFECT INT_VAR match_opcode = 177 END // deletes hold EFFs - LPF ALTER_EFFECT INT_VAR match_opcode = 175 opcode = 326 power = 0 parameter1 = 0 parameter2 = 5 timing = 1 duration = 0 resist_dispel = 0 savingthrow = 0 savebonus = 0 STR_VAR resource = spcl415h END // change hold to apply spell to humanoids - BUT_ONLY +// COPY ~eefixpack/files/spl/spcl415h.spl~ ~override~ // just the hold ability farmed out into separate spell +// LPF ALTER_EFFECT INT_VAR match_opcode = 324 parameter1 = hold_immunity END +// COPY_EXISTING ~spcl415.spl~ ~override~ +// LPF DELETE_EFFECT INT_VAR match_opcode = 177 END // deletes hold EFFs +// LPF ALTER_EFFECT INT_VAR match_opcode = 175 opcode = 326 power = 0 parameter1 = 0 parameter2 = 5 timing = 1 duration = 0 resist_dispel = 0 savingthrow = 0 savebonus = 0 STR_VAR resource = spcl415h END // change hold to apply spell to humanoids +// BUT_ONLY // chromatic orb stuns at levels 5 and 7, blinds at 1 and 4; don't want to roll back entire spell for two levels of blind so we subspell it -COPY_EXISTING ~spdr101.spl~ ~override~ // Chromatic Orb (druid) - ~spwi118.spl~ ~override~ // Chromatic Orb (arcane) - LPF DELETE_EFFECT INT_VAR match_opcode = 74 END // delete blind effect from headers 0 and 3 - LPF DELETE_EFFECT INT_VAR match_opcode = 45 END // delete stun effect from headers 4 and 6 - LPF DELETE_EFFECT INT_VAR match_opcode = 142 match_parameter2 = 55 END // delete stun icons from headers 4 and 6 - LPF DELETE_EFFECT INT_VAR header = 0 match_opcode = 139 END // uses strref 14674 "blinded" on header 0 - LPF DELETE_EFFECT INT_VAR header = 3 match_opcode = 139 END // uses strref 14674 "blindness: on header 3 - LPF DELETE_EFFECT INT_VAR match_opcode = 139 match_parameter1 = 25862 END // delete stun string from headers 4 and 6 - LPF ALTER_EFFECT INT_VAR header = 0 match_opcode = 174 match_timing = 4 opcode = 146 parameter2 = 2 timing = 1 duration = 0 STR_VAR match_resource = eff_e05 resource = spwi118a END // change expiry sounds to spell casts - LPF ALTER_EFFECT INT_VAR header = 3 match_opcode = 174 match_timing = 4 opcode = 146 parameter2 = 2 timing = 1 duration = 0 STR_VAR match_resource = eff_e05 resource = spwi118d END // change expiry sounds to spell casts - LPF ALTER_EFFECT INT_VAR header = 4 match_opcode = 174 match_timing = 4 opcode = 146 parameter2 = 2 timing = 1 duration = 0 STR_VAR match_resource = eff_e05 resource = spwi118e END // change expiry sounds to spell casts - LPF ALTER_EFFECT INT_VAR header = 6 match_opcode = 174 match_timing = 4 opcode = 146 parameter2 = 2 timing = 1 duration = 0 STR_VAR match_resource = eff_e05 resource = spwi118g END // change expiry sounds to spell casts +// COPY_EXISTING ~spdr101.spl~ ~override~ // Chromatic Orb (druid) +// ~spwi118.spl~ ~override~ // Chromatic Orb (arcane) +// LPF DELETE_EFFECT INT_VAR match_opcode = 74 END // delete blind effect from headers 0 and 3 +// LPF DELETE_EFFECT INT_VAR match_opcode = 45 END // delete stun effect from headers 4 and 6 +// LPF DELETE_EFFECT INT_VAR match_opcode = 142 match_parameter2 = 55 END // delete stun icons from headers 4 and 6 +// LPF DELETE_EFFECT INT_VAR header = 0 match_opcode = 139 END // uses strref 14674 "blinded" on header 0 +// LPF DELETE_EFFECT INT_VAR header = 3 match_opcode = 139 END // uses strref 14674 "blindness: on header 3 +// LPF DELETE_EFFECT INT_VAR match_opcode = 139 match_parameter1 = 25862 END // delete stun string from headers 4 and 6 +// LPF ALTER_EFFECT INT_VAR header = 0 match_opcode = 174 match_timing = 4 opcode = 146 parameter2 = 2 timing = 1 duration = 0 STR_VAR match_resource = eff_e05 resource = spwi118a END // change expiry sounds to spell casts +// LPF ALTER_EFFECT INT_VAR header = 3 match_opcode = 174 match_timing = 4 opcode = 146 parameter2 = 2 timing = 1 duration = 0 STR_VAR match_resource = eff_e05 resource = spwi118d END // change expiry sounds to spell casts +// LPF ALTER_EFFECT INT_VAR header = 4 match_opcode = 174 match_timing = 4 opcode = 146 parameter2 = 2 timing = 1 duration = 0 STR_VAR match_resource = eff_e05 resource = spwi118e END // change expiry sounds to spell casts +// LPF ALTER_EFFECT INT_VAR header = 6 match_opcode = 174 match_timing = 4 opcode = 146 parameter2 = 2 timing = 1 duration = 0 STR_VAR match_resource = eff_e05 resource = spwi118g END // change expiry sounds to spell casts // create blind subspells for chromatic orb -COPY ~eefixpack/files/spl/cdcure.spl~ ~override/spwi118a.spl~ // create blind subspell for header 0 - LPF ADD_SPELL_EFFECT INT_VAR opcode = 74 target = 2 duration = 6 END // add blind effect - LPF ADD_SPELL_EFFECT INT_VAR opcode = 139 target = 2 parameter1 = 14674 timing = 1 END // add blinded string - LPF ADD_SPELL_EFFECT INT_VAR opcode = 174 target = 2 parameter1 = 10 timing = 4 duration = 6 STR_VAR resource = eff_e05 END // add expiry sound -COPY_EXISTING ~spwi118a.spl~ ~override/spwi118d.spl~ // create blind subspell for header 3 - LPF ALTER_EFFECT INT_VAR match_duration = 6 duration = 60 END +// COPY ~eefixpack/files/spl/cdcure.spl~ ~override/spwi118a.spl~ // create blind subspell for header 0 +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 74 target = 2 duration = 6 END // add blind effect +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 139 target = 2 parameter1 = 14674 timing = 1 END // add blinded string +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 174 target = 2 parameter1 = 10 timing = 4 duration = 6 STR_VAR resource = eff_e05 END // add expiry sound +// COPY_EXISTING ~spwi118a.spl~ ~override/spwi118d.spl~ // create blind subspell for header 3 +// LPF ALTER_EFFECT INT_VAR match_duration = 6 duration = 60 END // create stun subspells for chromatic orb -COPY ~eefixpack/files/spl/cdcure.spl~ ~override/spwi118e.spl~ // create stun subspell for header 0 - LPF ADD_SPELL_EFFECT INT_VAR opcode = 324 parameter1 = stun_immunity parameter2 = 110 STR_VAR resource = EVAL ~%DEST_RES%~ END - LPF ADD_SPELL_EFFECT INT_VAR opcode = 45 target = 2 duration = 18 END // add stun effect - LPF ADD_SPELL_EFFECT INT_VAR opcode = 139 target = 2 parameter1 = 14043 timing = 1 END // add stun string - LPF ADD_SPELL_EFFECT INT_VAR opcode = 174 target = 2 timing = 4 duration = 18 STR_VAR resource = eff_e05 END // add expiry sound -COPY_EXISTING ~spwi118e.spl~ ~override/spwi118g.spl~ // create stun subspell for header 3 - LPF ALTER_EFFECT INT_VAR match_duration = 18 duration = 120 END +// COPY ~eefixpack/files/spl/cdcure.spl~ ~override/spwi118e.spl~ // create stun subspell for header 0 +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 324 parameter1 = stun_immunity parameter2 = 110 STR_VAR resource = EVAL ~%DEST_RES%~ END +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 45 target = 2 duration = 18 END // add stun effect +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 139 target = 2 parameter1 = 14043 timing = 1 END // add stun string +// LPF ADD_SPELL_EFFECT INT_VAR opcode = 174 target = 2 timing = 4 duration = 18 STR_VAR resource = eff_e05 END // add expiry sound +// COPY_EXISTING ~spwi118e.spl~ ~override/spwi118g.spl~ // create stun subspell for header 3 +// LPF ALTER_EFFECT INT_VAR match_duration = 18 duration = 120 END // split moondog howl's fear bits into separate spell -COPY ~eefixpack/files/spl/cdcure.spl~ ~override/spin891a.spl~ +//COPY ~eefixpack/files/spl/cdcure.spl~ ~override/spin891a.spl~ +COPY_EXISTING "cd003g.spl" "override" + LPF DELETE_EFFECT END LPF ADD_SPELL_EFFECT INT_VAR opcode = 24 target = 2 duration = 18 END // add panic [moondog] LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 142 parameter2 = 36 END // add 'panic' icon [moond2] LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 215 parameter2 = 1 STR_VAR resource = cdhorror END // play animation [moond4] @@ -321,14 +323,14 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/spin891a.spl~ LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 106 duration = 1 parameter1 = 20 parameter2 = 1 END // set morale break [moond7] LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 139 timing = 1 duration = 0 parameter1 = 14007 END // add 'panic' string [moond1] LPF CLONE_EFFECT INT_VAR match_opcode = 139 opcode = 174 parameter2 = 0 STR_VAR resource = eff_m07 END // play sound [moond3] - LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 324 parameter1 = panic_immunity parameter2 = 110 timing = 0 duration = 0 resist_dispel = 0 STR_VAR insert = first resource = EVAL ~%DEST_RES%~ END + LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 318 parameter1 = panic_immunity parameter2 = 110 timing = 0 duration = 0 resist_dispel = 0 STR_VAR insert = first resource = EVAL ~%DEST_RES%~ END LPF CLONE_EFFECT INT_VAR match_opcode = 139 opcode = 12 parameter1 = 5 STR_VAR insert = first END // damage [moond8] LPF CLONE_EFFECT INT_VAR match_opcode = 12 match_timing = 1 timing = 4 duration = 6 END // delayed damage 1 [moond8] LPF CLONE_EFFECT INT_VAR match_opcode = 12 match_timing = 1 timing = 4 duration = 12 END // delayed damage 2 [moond8] // replace effs aimed at mask_evil to a single 326 that calls spin891a instead COPY_EXISTING ~spin891.spl~ ~override~ // Moon Dog Howl - cures fear - causes fear - LPF ALTER_EFFECT INT_VAR multi_match = 1 match_opcode = 177 match_parameter1 = 3 match_parameter2 = 8 opcode = 326 parameter1 = 0 parameter2 = 37 timing = 1 duration = 0 STR_VAR resource = spin891a END + LPF ALTER_EFFECT INT_VAR multi_match = 1 match_opcode = 326 match_parameter1 = panic_immunity match_parameter2 = 111 opcode = 326 parameter1 = 0 parameter2 = 37 timing = 1 duration = 0 STR_VAR resource = spin891a END LPF DELETE_EFFECT INT_VAR match_opcode = 177 match_parameter1 = 3 match_parameter2 = 8 END LPF DELETE_EFFECT INT_VAR match_opcode = 321 STR_VAR match_resource = spin891 END // delete out of stack LPF CLONE_EFFECT INT_VAR multi_match = 1 match_opcode = 161 opcode = 321 parameter2 = 0 STR_VAR insert = first resource = spin891 END // insert back at top of stack @@ -356,7 +358,7 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#cureber.spl~ // ~bdax1h03~ // (itm) Chill Axe +2 - causes berserk - portrait icon 4 // ~berserk~ // (itm) Berserk - causes berserk // ~blun09~ // (itm) Kiel's Morning Star +3 - causes berserk - ~spin117~ // (spl) Berserk - causes berserk - [Minsc's berserk comes with many additional bonuses] + ~cd0001~ // (spl) Berserk - causes berserk - [Minsc's berserk comes with many additional bonuses] // ~sw1h19~ // (itm) The Vampire's Revenge +1 - causes berserk // ~sw1p01~ // (itm) Viper's Edge +2 - causes berserk hold poison - unknown long effect // ~sw2h03~ // (itm) Cursed Berserking Sword +3 - causes berserk @@ -368,7 +370,7 @@ COPY_EXISTING ~ohsmode1.spl~ ~override~ // [story mode] - cures berserk blind co ~ohsmode4.spl~ ~override~ // [story mode] - cures berserk blind confusion deafness disease fear feeblemind hold level drain poison sleep stun ~ohtyr1.spl~ ~override~ // Exaltation - cures berserk confusion drunkenness fear feeblemind sleep - unknown long effect - portrait icon 37 - portrait icon 52 ~trollreg.spl~ ~override~ // [leftover troll revive spell] - cures berserk blind confusion deafness disease fear feeblemind hold poison sleep stun - LPF ALTER_EFFECT INT_VAR match_opcode = 4 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#cureber~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 4 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#cureber~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_berserk END BUT_ONLY @@ -383,13 +385,13 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curebld.spl~ PATCH_FOR_EACH res IN ~bdbbeaut~ // (spl) Blinding Beauty - causes blind - plays sound EFF_E07 [expiry sound] ~bdbrac01~ // (spl) - causes blind - plays sound EFF_E07 [expiry sound] - ~bdshld02~ // (spl) - causes blind - plays sound EFF_E07 [expiry sound] + ~cd005t~ // (spl) - causes blind - plays sound EFF_E07 [expiry sound] // ~bdvenoms~ // (spl) Venom Spit - causes blind poison - plays sound EFF_E06 [has expiry sound, but combined with poison effect] // ~chalcy2~ // (itm) The Shadow's Blade +3 - causes blind - unknown long effect // ~potn99~ // (itm) Blinding Powder - causes blind // ~spcl239a~ // (spl) - causes blind ~spdm101~ // (spl) Blindness - causes blind - plays sound EFF_E07 [expiry sound] -// ~spdr101~ // (spl) Chromatic Orb - causes blind at levels 1, 4 and stun at 5,7 + ~cd005z~ // (spl) Chromatic Orb - causes blind at levels 1, 4 and stun at 5,7 // ~spin878~ // (spl) Level Drain - causes blind level drain - unknown long effect - plays sound EFF_P69 // ~spin893~ // (spl) Shadow Dragon Breath - causes blind level drain - unknown long effect // ~spin929~ // (spl) Mist Ball - causes blind - unknown long effect @@ -400,10 +402,10 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curebld.spl~ // ~sppr707b~ // (spl) - causes blind ~spwi106~ // (spl) Blindness - causes blind - plays sound EFF_E07 [expiry sound] // ~spwi118~ // (spl) Chromatic Orb - causes blind at levels 1, 4 and stun at 5,7 - ~spwi118a~ // (spl) Chromatic Orb subspell for blind at level 1 - ~spwi118d~ // (spl) Chromatic Orb subspell for blind at level 4 - ~spwi224~ // (spl) Glitterdust - causes blind - unknown long effect - plays sound EFF_E07 [expiry sound] - ~spwi228~ // (spl) Darkness, 15' Radius - causes blind - unknown long effect [has self-stack protection] + ~cd0067~ // (spl) Chromatic Orb subspell for blind at level 1 +// ~spwi118d~ // (spl) Chromatic Orb subspell for blind at level 4 + ~cd0068~ // (spl) Glitterdust - causes blind - unknown long effect - plays sound EFF_E07 [expiry sound] + ~cd0069~ // (spl) Darkness, 15' Radius - causes blind - unknown long effect [has self-stack protection] // ~spwi714~ // (spl) Prismatic Spray - causes blind feeblemind - unknown long effect - portrait icon 48 ~spwi815~ // (spl) Power Word, Blind - causes blind - plays sound EFF_E06 [expiry sound] ~spwi958~ // (spl) Power Word, Blind - causes blind - plays sound EFF_E06 [expiry sound] @@ -424,7 +426,7 @@ COPY_EXISTING ~ohsmode1.spl~ ~override~ // [story mode] - cures berserk blind co ~sppr607.spl~ ~override~ // Heal - cures blind deafness disease drunkenness feeblemind poison ~spwm168.spl~ ~override~ // Heal - cures blind deafness disease drunkenness feeblemind poison ~trollreg.spl~ ~override~ // [leftover troll revive spell] - cures berserk blind confusion deafness disease fear feeblemind hold poison sleep stun - LPF ALTER_EFFECT INT_VAR match_opcode = 75 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curebld~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 75 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curebld~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_blind END BUT_ONLY @@ -443,7 +445,7 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curecon.spl~ ~bdmycsp1~ // (spl) Hallucinator Spores - causes confusion - plays animation SPCONFUS - portrait icon 3 - plays sound EFF_E05 [expiry sound, animation] ~bdsha01a~ // (spl) - causes confusion - plays animation SPCONFUS - portrait icon 3 [expiry sound, animation] // ~bdshriek~ // (spl) Piercing Shriek - causes confusion deafness stun - [confusion routed to bdshriec.spl, stun to bdshries.spl] - ~bdshriec~ // (spl) Piercing Shriek [subspell with confusion] + ~cd0070~ // (spl) Piercing Shriek [subspell with confusion] ~bdstink~ // (spl) Confusion - causes confusion - plays animation SPCONFUS - portrait icon 3 - plays sound EFF_E05 // ~magiconf~ // (itm) Ghoul hand - causes confusion - unknown long effect - portrait icon 3 // ~sirine1~ // (itm) Ghoul hand - causes confusion - portrait icon 3 @@ -456,7 +458,7 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curecon.spl~ ~spin839~ // (spl) Confusion - causes confusion - plays animation SPCONFUS - portrait icon 3 - plays sound EFF_E05 [expiry sound, animation] ~spin976~ // (spl) Confusion - causes confusion - plays animation SPCONFUS - portrait icon 3 - plays sound EFF_E05 [expiry sound, animation] ~sppr311~ // (spl) Rigid Thinking - causes confusion - portrait icon 2 - plays sound EFF_E06 [expiry sound] - ~sppr609~ // (spl) False Dawn - causes confusion - plays animation SPCONFUS [animation via eff] + ~cd007s~ // (spl) False Dawn - causes confusion - plays animation SPCONFUS [animation via eff] ~sppr709~ // (spl) Confusion - causes confusion - portrait icon 3 - plays sound EFF_E05 - plays animation SPCONFUS [expiry sound, animation] ~sppr983~ // (spl) Confusion - causes confusion - plays animation SPCONFUS - portrait icon 3 - plays sound EFF_E05 [expiry sound, animation] ~spwi401~ // (spl) Confusion - causes confusion - portrait icon 3 - plays sound EFF_E05 - plays animation SPCONFUS [expiry sound, animation] @@ -473,7 +475,7 @@ COPY_EXISTING ~bdbrd03.spl~ ~override~ // Dispel Confusion - cures confusion ~sppr350.spl~ ~override~ // Spiritual Clarity - cures confusion fear feeblemind ~sppr713.spl~ ~override~ // Greater Restoration - cures confusion disease fear feeblemind level drain poison ~trollreg.spl~ ~override~ // [leftover troll revive spell] - cures berserk blind confusion deafness disease fear feeblemind hold poison sleep stun - LPF ALTER_EFFECT INT_VAR match_opcode = 242 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curecon~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 242 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curecon~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_confusion END BUT_ONLY IF_EXISTS // sod asset(s) @@ -488,7 +490,7 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curedef.spl~ PATCH_FOR_EACH res IN // ~bdbrd04~ // (spl) Sound Burst - causes deafness - portrait icon 112 // ~bdshriek~ // (spl) Piercing Shriek - causes confusion deafness stun - [confusion routed to bdshriec.spl, stun to bdshries.spl, deaf to bdshried.spl] - ~bdshried~ // (spl) Piercing Shriek [subspell with deafness] + ~cd006v~ // (spl) Piercing Shriek [subspell with deafness] // ~melicamp~ // (spl) - causes deafness // ~spin191~ // (spl) - causes deafness stun - portrait icon 112 // ~sppr710~ // (spl) Holy Word - causes deafness stun - unknown long effect - portrait icon 105 - portrait icon 112 @@ -546,7 +548,7 @@ COPY_EXISTING ~arow07.itm~ ~override~ // Arrow of Dispelling - cures deafness ~spwm168.spl~ ~override~ // Heal - cures blind deafness disease drunkenness feeblemind poison ~sw2h10dm.spl~ ~override~ // Dispel Magic - cures deafness feeblemind ~trollreg.spl~ ~override~ // [leftover troll revive spell] - cures berserk blind confusion deafness disease fear feeblemind hold poison sleep stun - LPF ALTER_EFFECT INT_VAR match_opcode = 81 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curedef~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 81 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curedef~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_deafness END BUT_ONLY IF_EXISTS // sod asset(s) @@ -564,7 +566,7 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curedis.spl~ // ~bdbow01~ // (spl) - causes disease // ~bddraggh~ // (itm) Attack - causes disease level drain // ~bdfester~ // (spl) - causes disease - ~bdgibbbr~ // (itm) Attack - causes disease sleep [disease, sleep & color pulse tied together - threating as disease since 'infection' string used] + ~cd006i~ // (itm) Attack - causes disease sleep [disease, sleep & color pulse tied together - threating as disease since 'infection' string used] // ~bdisease~ // (spl) - causes disease // ~bdmumm01~ // (itm) Attack - causes disease // ~bdotyg01~ // (itm) Attack - causes disease - portrait icon 41 @@ -598,7 +600,7 @@ COPY_EXISTING ~bdpotn06.itm~ ~override~ // Slime Sickness Curative - cures disea ~sppr713.spl~ ~override~ // Greater Restoration - cures confusion disease fear feeblemind level drain poison ~spwm168.spl~ ~override~ // Heal - cures blind deafness disease drunkenness feeblemind poison ~trollreg.spl~ ~override~ // [leftover troll revive spell] - cures berserk blind confusion deafness disease fear feeblemind hold poison sleep stun - LPF ALTER_EFFECT INT_VAR match_opcode = 79 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curedis~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 79 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curedis~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_disease END BUT_ONLY IF_EXISTS // sod asset(s) @@ -641,7 +643,7 @@ COPY_EXISTING ~amul22.itm~ ~override~ // Periapt of Proof Against Poison - cur ~sppr514.spl~ ~override~ // Mass Cure - cures drunkenness ~sppr607.spl~ ~override~ // Heal - cures blind deafness disease drunkenness feeblemind poison ~spwm168.spl~ ~override~ // Heal - cures blind deafness disease drunkenness feeblemind poison - LPF ALTER_EFFECT INT_VAR match_opcode = 164 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curedrk~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 164 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curedrk~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_drunkenness END BUT_ONLY IF_EXISTS // sod asset(s) @@ -656,11 +658,11 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curefer.spl~ PATCH_FOR_EACH res IN ~bdaurafe~ // (spl) Aura of Fear - causes fear - portrait icon 36 - plays sound EFF_E05 - plays animation CDHORROR [expiry sound, animation] // ~bddragg2~ // (spl) Dragon Fear - causes fear - unknown long effect - portrait icon 36 - plays sound EFF_E05 [fear bits pushed into bddraggf.spl] - ~bddraggf~ // (spl) [fear bits from bddragg2.spl] + ~cd0032~ // (spl) [fear bits from bddragg2.spl] // ~bdfear~ // (spl) Panic - causes fear - unknown long effect - portrait icon 36 // ~bdfeyrwp~ // (itm) Attack - causes fear - ~bdgfear~ // (spl) Ghost Fear [has expiry sound, animation, and CON/STR penalties--all seem tied to fear] - ~bdhafear~ // (spl) - causes fear - unknown long effect - portrait icon 36 - plays animation CDHORROR - plays sound EFF_E05 [expiry sound, animation] + ~cd0034~ // (spl) Ghost Fear [has expiry sound, animation, and CON/STR penalties--all seem tied to fear] + ~cd0035~ // (spl) - causes fear - unknown long effect - portrait icon 36 - plays animation CDHORROR - plays sound EFF_E05 [expiry sound, animation] ~bdneoawe~ // (spl) - causes fear - portrait icon 36 - plays animation CDHORROR [expiry sound, animation] // ~bdpanic~ // (spl) Panic - causes fear // ~bdpotn01~ // (itm) Poison of Terror - causes fear - portrait icon 36 @@ -682,9 +684,9 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curefer.spl~ ~spin882~ // (spl) Vampire Fear - causes fear - portrait icon 36 - unknown long effect - portrait icon 36 [includes thac0 penalty] ~spin890~ // (spl) Demon Fear - causes fear - portrait icon 36 - plays sound EFF_E05 [expiry sound] // ~spin891~ // (spl) Moon Dog Howl [fear shunted to spin891.spl] - ~spin891a~ // (spl) Moon Dog Howl [fear from spin891.spl shunted here] + ~cd003g~ // (spl) Moon Dog Howl [fear from spin891.spl shunted here] ~spin895~ // (spl) Dragon Fear - causes fear - unknown long effect - portrait icon 36 - plays sound EFF_E05 [expiry sound, includes thac0 penalty] - ~spin921~ // (spl) Deathsong - causes fear - unknown long effect [expiry sound, includes damage penalty] + ~cd003h~ // (spl) Deathsong - causes fear - unknown long effect [expiry sound, includes damage penalty] // ~spin981~ // (spl) Fear - causes fear - portrait icon 36 ~sppr416~ // (spl) Cloak of Fear - causes fear - portrait icon 36 - plays sound EFF_E05 [expiry sound] // ~sppr517~ // (spl) Insect Plague - causes fear - unknown long effect - plays animation ICINHIT - portrait icon 83 @@ -791,7 +793,7 @@ COPY_EXISTING ~abazring.itm~ ~override~ // Ring - cures fear ~trollimm.itm~ ~override~ // Ring - cures fear ~trollreg.spl~ ~override~ // [leftover troll revive spell] - cures berserk blind confusion deafness disease fear feeblemind hold poison sleep stun ~vampreg.itm~ ~override~ // Ring - cures fear - unknown long effect - LPF ALTER_EFFECT INT_VAR match_opcode = 161 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curefer~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 161 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curefer~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_fear END BUT_ONLY IF_EXISTS // sod asset(s) @@ -806,10 +808,10 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curefbm.spl~ PATCH_FOR_EACH res IN ~bdmycsp2~ // (spl) Pacifier Spores - causes feeblemind - portrait icon 48 - plays animation SPMINDAT [animation] // ~dwfpsirf~ // (spl) - causes feeblemind - portrait icon 48 - ~potn23~ // (itm) Oil of Speed - causes feeblemind - portrait icon 3 - plays sound EFF_E07 [feeblemind effect with expiry sound, but icon and string say confusion] + ~cd006c~ // (itm) Oil of Speed - causes feeblemind - portrait icon 3 - plays sound EFF_E07 [feeblemind effect with expiry sound, but icon and string say confusion] // ~ring23~ // (itm) Discipliner - causes feeblemind // ~scrl18~ // (itm) Cursed Scroll of Stupidity - causes feeblemind - [has expiry sound, but has other effects] - ~sirine~ // (itm) Ghoul hand - causes feeblemind - unknown long effect - plays sound EFF_E05 - portrait icon 48 [expiry sound] + ~cd006e~ // (itm) Ghoul hand - causes feeblemind - unknown long effect - plays sound EFF_E05 - portrait icon 48 [expiry sound] ~sppr650~ // (spl) Spiritual Lock - causes feeblemind - plays animation SPMINDAT - portrait icon 48 - plays sound EFF_E05 [animation, expiry sound] // ~spwi509~ // (spl) Feeblemind - causes feeblemind [animation, but only for two seconds] // ~spwi714~ // (spl) Prismatic Spray - causes blind feeblemind - unknown long effect - portrait icon 48 @@ -863,7 +865,7 @@ COPY_EXISTING ~arow07.itm~ ~override~ // Arrow of Dispelling - cures deafness ~spwm168.spl~ ~override~ // Heal - cures blind deafness disease drunkenness feeblemind poison ~sw2h10dm.spl~ ~override~ // Dispel Magic - cures deafness feeblemind ~trollreg.spl~ ~override~ // [leftover troll revive spell] - cures berserk blind confusion deafness disease fear feeblemind hold poison sleep stun - LPF ALTER_EFFECT INT_VAR match_opcode = 77 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curefbm~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 77 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curefbm~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_feeblemind END BUT_ONLY IF_EXISTS // sod asset(s) @@ -879,31 +881,31 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curehol.spl~ // ~basilg1~ // (itm) Attack - causes hold // ~basill1~ // (itm) Attack - causes hold // ~bazpatrg~ // (itm) Ring - causes hold - ~bdbonbat~ // (itm) Attack - causes hold - plays sound EFF_E05 - portrait icon 13 [expiry sound] - ~bdccraw1~ // (itm) Attack - causes hold - portrait icon 13 - plays sound EFF_E05 [expiry sound] - ~bdghastg~ // (itm) Attack - causes hold - portrait icon 13 - plays sound EFF_E05 [expiry sound] + ~cd0071~ // (itm) Attack - causes hold - plays sound EFF_E05 - portrait icon 13 [expiry sound] + ~cd0072~ // (itm) Attack - causes hold - portrait icon 13 - plays sound EFF_E05 [expiry sound] + ~cd0073~ // (itm) Attack - causes hold - portrait icon 13 - plays sound EFF_E05 [expiry sound] ~bdmisc07~ // (spl) Ankheg Whistle - causes hold - plays animation SPMINDAT - plays sound EFF_E08 [expiry sound, animation] // ~bdspidga~ // (spl) Web Tangle - causes hold - unknown long effect - portrait icon 129 [includes web] - ~bdwolfva~ // (itm) Attack - causes hold - portrait icon 13 - plays sound EFF_E05 [expiry sound] - ~carrio1~ // (itm) Attack - causes hold - portrait icon 13 - plays sound EFF_E05 [expiry sound] - ~demmau01~ // (itm) Attack - causes hold - portrait icon 13 - plays sound EFF_E05 [expiry sound] + ~cd0074~ // (itm) Attack - causes hold - portrait icon 13 - plays sound EFF_E05 [expiry sound] + ~cd0075~ // (itm) Attack - causes hold - portrait icon 13 - plays sound EFF_E05 [expiry sound] + ~cd0076~ // (itm) Attack - causes hold - portrait icon 13 - plays sound EFF_E05 [expiry sound] // ~ghast1~ // (itm) Attack - causes hold - [hold & nausea; hold shunted to ghast1p.spl] - ~ghast1p~ // (spl) hold from various undead attacks - ~ghoul1~ // (itm) Ghoul Touch - causes hold - plays sound EFF_E05 - portrait icon 13 [expiry sound] - ~ghoult~ // (itm) Ghoul Touch - causes hold - portrait icon 13 - plays sound EFF_E05 [expiry sound] + ~cd0077~ // (spl) hold from various undead attacks + ~cd0078~ // (itm) Ghoul Touch - causes hold - plays sound EFF_E05 - portrait icon 13 [expiry sound] + ~cd0079~ // (itm) Ghoul Touch - causes hold - portrait icon 13 - plays sound EFF_E05 [expiry sound] // ~holdring~ // (itm) Ring - causes hold - ~kaldw1~ // (itm) - causes hold - portrait icon 13 - plays sound EFF_E03 [expiry sound] + ~cd007a~ // (itm) - causes hold - portrait icon 13 - plays sound EFF_E03 [expiry sound] // ~lich02~ // (itm) Ghoul Touch - causes hold - portrait icon 13 // ~parabasi~ // (itm) - causes hold - ~revent1~ // (itm) - causes hold - portrait icon 13 - plays sound EFF_E05 [expiry sound] + ~cd007e~ // (itm) - causes hold - portrait icon 13 - plays sound EFF_E05 [expiry sound] // ~shld07p~ // (itm) Sartessa's Vengeance +1 - causes hold // ~spcl415~ // (spl) [bounty hunter special snare] - causes hold - [hold shunted to spcl415h.spl subspell] - ~spcl415h~ // (spl) [bounty hunter special snare] - causes hold - [hold shunted to spcl415h.spl subspell] + ~cd008r~ // (spl) [bounty hunter special snare] - causes hold - [hold shunted to spcl415h.spl subspell] ~spcl742~ // (spl) Hold Undead - causes hold - plays sound EFF_E06 - plays animation cdunhvis [expiry sound] ~spin503~ // (spl) Control Body - causes hold - plays sound EFF_E08 - plays animation SPMINDAT [expiry sound, animation] // ~spin776~ // (spl) - causes hold // ~spin863~ // (spl) - causes hold - ~spin914~ // (spl) Mimic Glue - causes hold - plays animation GREASED - portrait icon 13 [expiry sound] + ~cd007g~ // (spl) Mimic Glue - causes hold - plays animation GREASED - portrait icon 13 [expiry sound] // ~spin960~ // (spl) Paralyzation Ray - causes hold ~spin988~ // (spl) Hold Person - causes hold - plays animation SPMINDAT - plays sound EFF_E08 [expiry sound, animation] ~spin990~ // (spl) Paralyze - causes hold - plays sound EFF_E08 [expiry sound] @@ -923,7 +925,7 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curehol.spl~ ~spwm122~ // (spl) Hold Person - causes hold - plays animation SPMINDAT - plays sound EFF_E05 [expiry sound, animation] // ~sw1p01~ // (itm) Viper's Edge +2 - causes berserk hold poison - unknown long effect // ~vampire~ // (itm) - causes hold - portrait icon 13 - ~wolfva1~ // (itm) Attack - causes hold - portrait icon 13 - plays sound EFF_E05 [expiry sound] + ~cd007n~ // (itm) Attack - causes hold - portrait icon 13 - plays sound EFF_E05 [expiry sound] BEGIN LPF ADD_SPELL_EFFECT INT_VAR opcode = 321 target = 2 timing = 1 parameter2 = 2 STR_VAR resource = EVAL ~%res%~ END END @@ -951,7 +953,7 @@ COPY_EXISTING ~bdring09.itm~ ~override~ // Ring of Free Action - cures hold stun ~sprngz05.itm~ ~override~ // Ring - cures fear hold stun - unknown long effect ~sw2h06.itm~ ~override~ // Spider's Bane +2 - cures hold stun ~trollreg.spl~ ~override~ // [leftover troll revive spell] - cures berserk blind confusion deafness disease fear feeblemind hold poison sleep stun - LPF ALTER_EFFECT INT_VAR match_opcode = 162 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curehol~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 162 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curehol~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_hold END BUT_ONLY IF_EXISTS // sod asset(s) @@ -1028,7 +1030,7 @@ COPY_EXISTING ~bdlemure.spl~ ~override~ // - cures invisibil ~spwi609d.spl~ ~override~ // True Sight - cures invisibility - unknown long effect ~sw1h34.itm~ ~override~ // Albruin +1 - cures invisibility // LPF ALTER_EFFECT INT_VAR match_opcode = 47 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#cureinv~ END - LPF ALTER_EFFECT INT_VAR match_opcode = 116 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#cureinv~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 116 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#cureinv~ END // LPF cd_apply_batch STR_VAR array_name = cd_cure_invisbility END // currently does nothing BUT_ONLY IF_EXISTS // sod asset(s) @@ -1083,7 +1085,7 @@ COPY_EXISTING ~bdrejuve.spl~ ~override~ // - cures deafness ~spbd002a.spl~ ~override~ // - cures level drain ~sppr417.spl~ ~override~ // Lesser Restoration - cures level drain ~sppr713.spl~ ~override~ // Greater Restoration - cures confusion disease fear feeblemind level drain poison - LPF ALTER_EFFECT INT_VAR match_opcode = 224 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#cureldr~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 224 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#cureldr~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_leveldrain END BUT_ONLY IF_EXISTS // sod asset(s) @@ -1108,9 +1110,9 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curendt.spl~ LPF ADD_SPELL_EFFECT INT_VAR opcode = 321 target = 2 timing = 1 parameter2 = 2 STR_VAR resource = EVAL ~%res%~ END END -/* nothing "cures" nondetection in iwd +/* nothing "cures" nondetection in bg COPY_EXISTING - LPF ALTER_EFFECT INT_VAR match_opcode = 70 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curendt~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 70 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curendt~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_nondetection END BUT_ONLY */ @@ -1145,7 +1147,7 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curepse.spl~ END COPY_EXISTING ~spin873.spl~ ~override~ // - cures pause - LPF ALTER_EFFECT INT_VAR match_opcode = 270 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curepse~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 270 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curepse~ END // LPF cd_apply_batch STR_VAR array_name = cd_cure_pause END // currently does nothing BUT_ONLY @@ -1268,7 +1270,7 @@ COPY_EXISTING ~amul22.itm~ ~override~ // Periapt of Proof Against Poison - cur ~sppr713.spl~ ~override~ // Greater Restoration - cures confusion disease fear feeblemind level drain poison ~spwm168.spl~ ~override~ // Heal - cures blind deafness disease drunkenness feeblemind poison ~trollreg.spl~ ~override~ // [leftover troll revive spell] - cures berserk blind confusion deafness disease fear feeblemind hold poison sleep stun - LPF ALTER_EFFECT INT_VAR match_opcode = 11 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curepsn~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 11 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curepsn~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_poison END BUT_ONLY @@ -1296,7 +1298,7 @@ COPY_EXISTING ~amul21.itm~ ~override~ // Amulet of Power - cures silence ~bdhelm11.itm~ ~override~ // Bard Hat - cures deafness silence ~bdrobe03.itm~ ~override~ // The Ghostdreamers' Robe - cures silence ~spwi219.spl~ ~override~ // Vocalize - cures silence - unknown long effect - portrait icon 103 - plays sound EFF_E01 - LPF ALTER_EFFECT INT_VAR match_opcode = 48 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curesil~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 48 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curesil~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_silence END BUT_ONLY IF_EXISTS // sod asset(s) @@ -1373,7 +1375,7 @@ COPY_EXISTING ~bdawake.spl~ ~override~ // - cures sleep ~ohsmode4.spl~ ~override~ // [story mode] - cures berserk blind confusion deafness disease fear feeblemind hold level drain poison sleep stun ~ohtyr1.spl~ ~override~ // Exaltation - cures berserk confusion drunkenness fear feeblemind sleep - unknown long effect - portrait icon 37 - portrait icon 52 ~trollreg.spl~ ~override~ // [leftover troll revive spell] - cures berserk blind confusion deafness disease fear feeblemind hold poison sleep stun - LPF ALTER_EFFECT INT_VAR match_opcode = 2 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#cureslp~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 2 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#cureslp~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_sleep END BUT_ONLY IF_EXISTS // sod asset(s) @@ -1391,7 +1393,7 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curestn.spl~ // ~bdhelm17~ // (spl) - causes stun // ~bdsha06a~ // (spl) - causes stun // ~bdshriek~ // (spl) Piercing Shriek - causes confusion deafness stun - [confusion routed to bdshriec.spl, stun to bdshries.spl] - ~bdshries~ // (spl) Piercing Shriek - causes confusion deafness stun - [confusion routed to bdshriec.spl, stun to bdshries.spl] + ~cd0049~ // (spl) Piercing Shriek - causes confusion deafness stun - [confusion routed to bdshriec.spl, stun to bdshries.spl] // ~blun41~ // (itm) The Stupefier +1 - causes stun // ~carrio~ // (itm) Ghoul hand - causes stun // ~cornugon~ // (itm) Attack - causes poison stun @@ -1404,13 +1406,13 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curestn.spl~ // ~goltome4~ // (itm) Attack - causes stun - unknown long effect // ~gorsnake~ // (itm) Skull - causes poison stun // ~icetrl~ // (itm) Attack - causes stun - unknown long effect [stun effects moved to icetrolst.spl] - ~icetrlst~ // (spl) Attack - causes stun - unknown long effect [stun effects moved frp, icetrol.itm] + ~cd004l~ // (spl) Attack - causes stun - unknown long effect [stun effects moved frp, icetrol.itm] // ~paracarr~ // (itm) Ghoul hand - causes stun // ~paraghas~ // (itm) Ghoul Touch - causes stun - unknown long effect - portrait icon 126 // ~paraghou~ // (itm) Ghoul Touch - causes stun // ~sahbolt~ // (itm) Paralytic Bolt +1 - causes stun // ~spcl123~ // (spl) - causes stun - unknown long effect -// ~spdr101~ // (spl) Chromatic Orb - causes blind at levels 1, 4 and stun at 5,7 + ~cd004r~ // (spl) Chromatic Orb - causes blind at levels 1, 4 and stun at 5,7 // ~spermel~ // (itm) Spear - causes stun - unknown long effect // ~spin191~ // (spl) - causes deafness stun - portrait icon 112 // ~spin543~ // (spl) Inflict Pain - causes stun @@ -1426,10 +1428,10 @@ COPY ~eefixpack/files/spl/cdcure.spl~ ~override/#curestn.spl~ // ~sppr710~ // (spl) Holy Word - causes deafness stun - unknown long effect - portrait icon 105 - portrait icon 112 // ~sppr715~ // (spl) Unholy Word - causes deafness stun - unknown long effect - portrait icon 105 - portrait icon 112 ~sppr718~ // (spl) Symbol, Stun - causes stun - plays sound EFF_E05 [expiry sound] - ~sppr984~ // (spl) Chromatic Orb - causes stun - plays sound EFF_E05 [expiry sound] + ~cd0050~ // (spl) Chromatic Orb - causes stun - plays sound EFF_E05 [expiry sound] // ~spwi118~ // (spl) Chromatic Orb - causes blind at levels 1, 4 and stun at 5,7 - ~spwi118e~ // (spl) Chromatic Orb - causes blind at levels 1, 4 and stun at 5,7 - ~spwi118g~ // (spl) Chromatic Orb - causes blind at levels 1, 4 and stun at 5,7 + ~cd0051~ // (spl) Chromatic Orb - causes blind at levels 1, 4 and stun at 5,7 +// ~spwi118g~ // (spl) Chromatic Orb - causes blind at levels 1, 4 and stun at 5,7 ~spwi816~ // (spl) Symbol, Stun - causes stun - plays sound EFF_E05 [expiry sound] ~spwi898~ // (spl) Symbol, Stun - causes stun - plays sound EFF_E05 [expiry sound] // ~spwm152~ // (spl) Polymorph Other - causes stun @@ -1462,7 +1464,7 @@ COPY_EXISTING ~bdring09.itm~ ~override~ // Ring of Free Action - cures hold stun ~sprngz05.itm~ ~override~ // Ring - cures fear hold stun - unknown long effect ~sw2h06.itm~ ~override~ // Spider's Bane +2 - cures hold stun ~trollreg.spl~ ~override~ // [leftover troll revive spell] - cures berserk blind confusion deafness disease fear feeblemind hold poison sleep stun - LPF ALTER_EFFECT INT_VAR match_opcode = 46 opcode = 146 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~#curestn~ END + LPF ALTER_EFFECT INT_VAR match_opcode = 46 opcode = 146 parameter1 = 0 parameter2 = 1 STR_VAR resource = ~#curestn~ END LPF cd_apply_batch STR_VAR array_name = cd_cure_stun END BUT_ONLY IF_EXISTS // sod asset(s) From 05ba1c4f5abae1e8d247e7d027d6ddb84e3968f9 Mon Sep 17 00:00:00 2001 From: 4Luke4 Date: Sat, 5 Apr 2025 20:07:37 +0200 Subject: [PATCH 05/12] Fix installation issues on iwd --- eefixpack/files/lib/gt_7eyes.tph | 2 +- eefixpack/files/tph/5943_mold_touch.tph | 6 +++--- eefixpack/files/tph/iwdee.tph | 4 +++- eefixpack/files/tph/luke/7eyes/iwd/disease.2da | 2 +- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/eefixpack/files/lib/gt_7eyes.tph b/eefixpack/files/lib/gt_7eyes.tph index a4a07a84..99cd39f2 100644 --- a/eefixpack/files/lib/gt_7eyes.tph +++ b/eefixpack/files/lib/gt_7eyes.tph @@ -359,7 +359,7 @@ BEGIN WRITE_SHORT "%fx_off%" 998 END END - 41 61 140 141 165 170 265 269 BEGIN END + 41 61 140 141 165 170 265 269 327 BEGIN END 206 318 324 BEGIN PATCH_IF ("%fx_ind%" == SHORT_AT ("%ab_off%" + 0x1E) - 1) AND ("%fx_resource%" STR_EQ "%DEST_RES%") BEGIN // if last in the effect stack... SET "found_other" = 1 diff --git a/eefixpack/files/tph/5943_mold_touch.tph b/eefixpack/files/tph/5943_mold_touch.tph index 4f72f46c..e2835282 100644 --- a/eefixpack/files/tph/5943_mold_touch.tph +++ b/eefixpack/files/tph/5943_mold_touch.tph @@ -5,9 +5,9 @@ COPY_EXISTING ~idmold.pro~ ~override~ COPY_EXISTING ~%CLERIC_MOLD_TOUCH%.spl~ ~override~ // sppr326 ~%CLERIC_MOLD_TOUCH%b.spl~ ~override~ // sppr326b - // LPF DELETE_EFFECT INT_VAR match_opcode = 142 END // delete portrait icons because... - // LPF ALTER_EFFECT INT_VAR match_opcode = 78 special = 7 END // we're attaching them directly to the disease effect - // LPF ALTER_EFFECT INT_VAR match_opcode = 78 match_parameter2 = 12 timing = 3 duration = 0 END // we're attaching them directly to the disease effect + LPF DELETE_EFFECT INT_VAR match_opcode = 142 END // delete portrait icons because... + LPF ALTER_EFFECT INT_VAR silent = 1 match_opcode = 78 special = 7 END // we're attaching them directly to the disease effect + LPF ALTER_EFFECT INT_VAR silent = 1 match_opcode = 78 match_parameter2 = 12 timing = 3 duration = 0 END // we're attaching them directly to the disease effect COPY_EXISTING ~%CLERIC_MOLD_TOUCH%.spl~ ~override~ // sppr326 LPF CLONE_EFFECT INT_VAR match_opcode = 324 match_parameter2 = 55 parameter2 = 68 END // prevent spread to someone who already has mold diff --git a/eefixpack/files/tph/iwdee.tph b/eefixpack/files/tph/iwdee.tph index fde4b518..64eedfa2 100644 --- a/eefixpack/files/tph/iwdee.tph +++ b/eefixpack/files/tph/iwdee.tph @@ -178,7 +178,7 @@ ACTION_FOR_EACH bam_resref IN guiostur storstor BEGIN END // there's another section of INCLUDEs at the bottom if it should be late in the process -INCLUDE ~eefixpack/files/tph/5943_mold_touch.tph~ // ie-5943 , cam: lots of mold touch fixes +//INCLUDE ~eefixpack/files/tph/5943_mold_touch.tph~ // ie-5943 , cam: lots of mold touch fixes INCLUDE ~eefixpack/files/tph/6018_lizardmen.tph~ // ie-6018 , cam: Summoned lizardmen lack visible weapons INCLUDE ~eefixpack/files/tph/6020_bullets.tph~ // ie-6020 , cam: Bullets +1 and Bullets +2 use the same projectile INCLUDE ~eefixpack/files/tph/6036_clostsbfbhnaeig.tph~ // ie-6036 , cam: Cam's List o' Stuff That Should Be Fixed But Has No Actual Effect In Game @@ -212,6 +212,8 @@ WITH_SCOPE BEGIN LAUNCH_ACTION_FUNCTION "7EYESification" END END +INCLUDE ~eefixpack/files/tph/5943_mold_touch.tph~ // ie-5943 , cam: lots of mold touch fixes + /* luke **Wing Buffet vs. MR** diff --git a/eefixpack/files/tph/luke/7eyes/iwd/disease.2da b/eefixpack/files/tph/luke/7eyes/iwd/disease.2da index 315aad1e..58962cbd 100644 --- a/eefixpack/files/tph/luke/7eyes/iwd/disease.2da +++ b/eefixpack/files/tph/luke/7eyes/iwd/disease.2da @@ -9,7 +9,7 @@ 5 SPIN190.SPL CD006B 6 SPPR320.SPL **** 7 SPPR326.SPL CD006C -8 SPPR326B.SPL CD006D +8 SPPR326B.SPL **** 9 SPWI018.SPL CD006E 10 SPWI409.SPL **** 11 U2HAX3A.ITM CD006F From 2e79824088987a4c37c4996dee36c4c9a4bf7587 Mon Sep 17 00:00:00 2001 From: 4Luke4 Date: Sat, 5 Apr 2025 21:05:37 +0200 Subject: [PATCH 06/12] More iwd fixes --- .../tph/bg_bg2_iwd_common_spell_fixes.tph | 20 ++++++++++-- eefixpack/files/tph/dw/immunities_via_324.tph | 12 +++---- eefixpack/files/tph/iwdee.tph | 32 +++++++++++++------ eefixpack/files/tph/luke/7eyes/7eyes.tph | 4 +-- eefixpack/files/tph/luke/sunray.tph | 1 + .../files/tph/luke/wizard_chill_touch.tph | 4 ++- .../files/tph/tbd_extraplanar_tieflings.tph | 2 +- eefixpack/files/tph/tbd_vfx_removal_iwd.tph | 6 ++-- 8 files changed, 56 insertions(+), 25 deletions(-) diff --git a/eefixpack/files/tph/bg_bg2_iwd_common_spell_fixes.tph b/eefixpack/files/tph/bg_bg2_iwd_common_spell_fixes.tph index 54d7faaa..ddbcd223 100644 --- a/eefixpack/files/tph/bg_bg2_iwd_common_spell_fixes.tph +++ b/eefixpack/files/tph/bg_bg2_iwd_common_spell_fixes.tph @@ -24,8 +24,24 @@ END WITH_SCOPE BEGIN COPY_EXISTING ~%CLERIC_NATURE_BEAUTY%.spl~ ~override~ // sppr704 LPF "ADD_SPELL_EFFECT" INT_VAR "insert_point" = 0 "opcode" = 324 "target" = 2 "power" = 7 "parameter2" = 6 "resist_dispel" = BIT1 STR_VAR "resource" = "%DEST_RES%" END // Immunity to resource and message (GENERAL != HUMANOID) - LAUNCH_PATCH_FUNCTION "ALTER_EFFECT" INT_VAR "match_opcode" = 74 "timing" = 0 "duration" = 0x7FFFFFFF END // Blindness - LAUNCH_PATCH_FUNCTION "DELETE_EFFECT" INT_VAR "check_globals" = 0 "match_opcode" = 142 "match_parameter2" = 8 END // op74 naturally provides the "Blind" portrait icon + // + GET_OFFSET_ARRAY "ab_array" SPL_V10_HEADERS + PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN + GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" ITM_V10_HEAD_EFFECTS + PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN + PATCH_MATCH SHORT_AT "%fx_off%" WITH + 326 WHEN SLONG_AT (0x4 + "%fx_off%") == IDS_OF_SYMBOL ("splstate" "blind_immunity") AND LONG_AT (0x8 + "%fx_off%") == 111 BEGIN + READ_ASCII (0x14 + "%fx_off%") "subspell" + END + DEFAULT + END + END + END + // + COPY_EXISTING "%subspell%.spl" "override" + LAUNCH_PATCH_FUNCTION "ALTER_EFFECT" INT_VAR "match_opcode" = 74 "timing" = 0 "duration" = 0x7FFFFFFF END // Blindness + LAUNCH_PATCH_FUNCTION "DELETE_EFFECT" INT_VAR "check_globals" = 0 "match_opcode" = 142 "match_parameter2" = 8 END // op74 naturally provides the "Blind" portrait icon + BUT_ONLY BUT_ONLY_IF_IT_CHANGES END diff --git a/eefixpack/files/tph/dw/immunities_via_324.tph b/eefixpack/files/tph/dw/immunities_via_324.tph index a7b3729b..12674afd 100644 --- a/eefixpack/files/tph/dw/immunities_via_324.tph +++ b/eefixpack/files/tph/dw/immunities_via_324.tph @@ -188,7 +188,7 @@ BEGIN PATCH_IF !in_fixpack BEGIN LPF DELETE_EFFECT INT_VAR match_opcode=324 match_parameter1=parameter1 match_parameter2=110 END END - LPF CLONE_EFFECT INT_VAR multi_match=1 duration=0 timing=0 match_opcode parameter1 parameter2=110 opcode=324 STR_VAR resource="%SOURCE_RES%" insert=first END + LPF CLONE_EFFECT INT_VAR silent=1 multi_match=1 duration=0 timing=0 match_opcode parameter1 parameter2=110 opcode=324 STR_VAR resource="%SOURCE_RES%" insert=first END PATCH_IF write BEGIN TO_LOWER resource SPRINT $processed("%resource%") "" @@ -364,8 +364,8 @@ BEGIN LPF DELETE_EFFECT INT_VAR match_opcode=328 match_parameter2=$opcode_splstate_map("minorglobe") END LPF DELETE_EFFECT INT_VAR match_opcode=328 match_parameter2=$opcode_splstate_map("majorglobe") END END - LPF CLONE_EFFECT INT_VAR match_opcode=102 multi_match=1 parameter2=$opcode_splstate_map("minorglobe") opcode=328 special=1 STR_VAR insert=first END - LPF CLONE_EFFECT INT_VAR match_opcode=102 multi_match=1 parameter2=$opcode_splstate_map("majorglobe") opcode=328 special=1 STR_VAR insert=first END + LPF CLONE_EFFECT INT_VAR silent=1 match_opcode=102 multi_match=1 parameter2=$opcode_splstate_map("minorglobe") opcode=328 special=1 STR_VAR insert=first END + LPF CLONE_EFFECT INT_VAR silent=1 match_opcode=102 multi_match=1 parameter2=$opcode_splstate_map("majorglobe") opcode=328 special=1 STR_VAR insert=first END IF_EXISTS END @@ -431,7 +431,7 @@ BEGIN PATCH_IF !in_fixpack BEGIN LPF DELETE_EFFECT INT_VAR match_opcode=328 match_parameter2=parameter2 END END - LPF CLONE_EFFECT INT_VAR match_opcode=101 match_parameter2=this_opcode opcode=328 special=1 parameter2 STR_VAR insert=first END + LPF CLONE_EFFECT INT_VAR silent=1 match_opcode=101 match_parameter2=this_opcode opcode=328 special=1 parameter2 STR_VAR insert=first END modified=1 END END @@ -556,12 +556,12 @@ BEGIN LPF DELETE_EFFECT INT_VAR header=ab_ind match_opcode=324 match_parameter1=parameter1 match_parameter2=110 END END PATCH_IF payload_is_177 BEGIN - LPF CLONE_EFFECT INT_VAR header=ab_ind multi_match=1 duration=0 timing=0 match_opcode=177 parameter1 parameter2=110 opcode=324 STR_VAR match_resource="%current_eff%" resource="%SOURCE_RES%" insert END + LPF CLONE_EFFECT INT_VAR silent=1 header=ab_ind multi_match=1 duration=0 timing=0 match_opcode=177 parameter1 parameter2=110 opcode=324 STR_VAR match_resource="%current_eff%" resource="%SOURCE_RES%" insert END PATCH_IF write BEGIN LPF fp_log_this INT_VAR repeat=0 STR_VAR file=177_offensive_for_immunity.txt input="%SOURCE_FILE%" END END END ELSE BEGIN - LPF CLONE_EFFECT INT_VAR header=ab_ind multi_match=1 duration=0 timing=0 match_opcode=current_opcode parameter1 parameter2=110 opcode=324 STR_VAR resource="%SOURCE_RES%" insert END + LPF CLONE_EFFECT INT_VAR silent=1 header=ab_ind multi_match=1 duration=0 timing=0 match_opcode=current_opcode parameter1 parameter2=110 opcode=324 STR_VAR resource="%SOURCE_RES%" insert END END PATCH_IF write BEGIN modified=1 diff --git a/eefixpack/files/tph/iwdee.tph b/eefixpack/files/tph/iwdee.tph index 64eedfa2..b31e6ee0 100644 --- a/eefixpack/files/tph/iwdee.tph +++ b/eefixpack/files/tph/iwdee.tph @@ -522,7 +522,7 @@ COPY_EXISTING ~ghoult.itm~ ~override~ // ghoul touch should last six rounds // tbd, cam // sword of days doesn't block all haste/slow spells -COPY_EXISTING ~days.itm~ ~override~ // round out slow/haste immunity; david's stuff will add the immunity spellstates +COPY_EXISTING ~cd003i.spl~ ~override~ // round out slow/haste immunity; david's stuff will add the immunity spellstates LPF CLONE_EFFECT INT_VAR check_headers = 0 match_opcode = 318 STR_VAR match_resource = spwi305 resource = spra301 insert = below END // clone haste to ranger haste LPF CLONE_EFFECT INT_VAR check_headers = 0 match_opcode = 318 STR_VAR match_resource = spwi312 resource = spin146 insert = below END // clone to beholder slow LPF CLONE_EFFECT INT_VAR check_headers = 0 match_opcode = 318 STR_VAR match_resource = spwi312 resource = spin977 insert = below END // clone to golem slow @@ -582,7 +582,7 @@ COPY_EXISTING ~u1ham5b.itm~ ~override~ // war hammer +4: defender: 20% heal // tbd, cam // disease icon duration doesn't match disease effect; just delete and attach icon to disease effect -COPY_EXISTING ~udagg4a.itm~ ~override~ // (itm) Chaos Dagger +3 - causes disease - portrait icon(s) 7 +COPY_EXISTING ~cd006h.spl~ ~override~ // (itm) Chaos Dagger +3 - causes disease - portrait icon(s) 7 LPF DELETE_EFFECT INT_VAR match_opcode = 142 END // deletes icon LPF ALTER_EFFECT INT_VAR match_opcode = 78 special = 7 END // attach icon to disease effect @@ -730,10 +730,13 @@ INCLUDE ~eefixpack/files/tph/tbd_324_traps_iwdee.tph~ // tbd, cam - game can cra // see also cwoslim.itm, spin132.spl, sppr617.spl, spin161.spl, sppr250.spl, spwi101/b/c.spl COPY_EXISTING ~#cofear.spl~ ~override~ LPF DELETE_EFFECT INT_VAR match_opcode = 206 END - LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 321 parameter2 = 0 timing = 0 duration = 0 STR_VAR resource = EVAL ~%SOURCE_RES%~ insert = above END + //LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 321 parameter2 = 0 timing = 0 duration = 0 STR_VAR resource = EVAL ~%SOURCE_RES%~ insert = above END +COPY_EXISTING "cd0030.spl" "override" + LPF ADD_SPELL_EFFECT INT_VAR insert_point = 0 opcode = 321 STR_VAR resource = EVAL ~%SOURCE_RES%~ END + // feedback with limited timing and/or duration -COPY_EXISTING ~#sunrund.spl~ ~override~ // (spl) - causes blind - portrait icon(s) 8 - additional effects +COPY_EXISTING ~cd005i.spl~ ~override~ // (spl) - causes blind - portrait icon(s) 8 - additional effects ~spin120.spl~ ~override~ // (spl) Retribution - causes sleep - additional effects ~sppr102.spl~ ~override~ // (spl) Command - causes sleep - additional effects ~spwi004.spl~ ~override~ // (spl) Stinking Cloud - causes sleep - portrait icon(s) 126 - additional effects @@ -767,7 +770,7 @@ COPY_EXISTING ~backstab.spl~ ~override~ // ie-5938, cam // Lich Touch should paralyze, not hold -COPY_EXISTING ~ltouch.spl~ ~override~ +COPY_EXISTING ~cd007u.spl~ ~override~ LPF ALTER_EFFECT INT_VAR match_opcode = 175 opcode = 109 END BUT_ONLY @@ -782,7 +785,7 @@ COPY_EXISTING ~ohtmps1.spl~ ~override~ // holy power // tbd, cam // stuns, but plays spmindat; iwd generally uses glows so change to that instead -COPY_EXISTING ~spcl118.spl~ ~override~ // the siren's yearning—enthralls creatures - plays spmindat +COPY_EXISTING ~cd0049.spl~ ~override~ // the siren's yearning—enthralls creatures - plays spmindat LPF ALTER_EFFECT INT_VAR match_opcode = 215 opcode = 8 parameter1 = ((46 << 8) + (56 << 16) + (0 << 24)) parameter2 = 255 STR_VAR match_resource = spmindat END BUT_ONLY @@ -836,11 +839,19 @@ COPY_EXISTING ~spin120.spl~ ~override~ // (spl) Retribution - causes sleep - ad COPY_EXISTING ~spin132.spl~ ~override~ ~sppr617.spl~ ~override~ LPF DELETE_EFFECT INT_VAR match_opcode = 206 END - LPF CLONE_EFFECT INT_VAR match_opcode = 13 opcode = 321 parameter2 = 0 timing = 0 duration = 0 STR_VAR resource = EVAL ~%SOURCE_RES%~ insert = above END + //LPF CLONE_EFFECT INT_VAR match_opcode = 13 opcode = 321 parameter2 = 0 timing = 0 duration = 0 STR_VAR resource = EVAL ~%SOURCE_RES%~ insert = above END + +COPY_EXISTING "cd004c.spl" "override" + "cd004h.spl" "override" + LPF ADD_SPELL_EFFECT INT_VAR opcode = 321 insert_point = 0 STR_VAR resource = EVAL ~%SOURCE_RES%~ END COPY_EXISTING ~spin139.spl~ ~override~ LPF DELETE_EFFECT INT_VAR match_opcode = 318 match_parameter2 = 0 END - LPF CLONE_EFFECT INT_VAR multi_match = 1 match_opcode = 146 opcode = 321 parameter2 = 0 timing = 0 duration = 0 STR_VAR resource = EVAL ~%SOURCE_RES%~ insert = above END +// LPF CLONE_EFFECT INT_VAR multi_match = 1 match_opcode = 146 opcode = 321 parameter2 = 0 timing = 0 duration = 0 STR_VAR resource = EVAL ~%SOURCE_RES%~ insert = above END + +COPY_EXISTING "cd0039.spl" "override" + "cd004d.spl" "override" + LPF ADD_SPELL_EFFECT INT_VAR opcode = 321 insert_point = 0 STR_VAR resource = EVAL ~%SOURCE_RES%~ END COPY_EXISTING ~spin161.spl~ ~override~ LPF DELETE_EFFECT INT_VAR match_opcode = 318 match_parameter2 = 0 END @@ -1075,7 +1086,8 @@ COPY_EXISTING ~%WIZARD_TENSERS_TRANSFORMATION%.spl~ ~override~ // spwi603 // tbd, cam // feeblemind and petrification are permanent, but icons are not -COPY_EXISTING ~spwi714.spl~ ~override~ // (spl) Prismatic Spray - causes blind feeblemind - portrait icon(s) 8 48 171 +COPY_EXISTING ~cd0066.spl~ ~override~ // (spl) Prismatic Spray - causes blind feeblemind - portrait icon(s) 8 48 171 + ~cd007b.spl~ ~override~ // (spl) Prismatic Spray - causes blind feeblemind - portrait icon(s) 8 48 171 LPF ALTER_EFFECT INT_VAR match_opcode = 142 match_duration = 308571 timing = 1 duration = 0 END // make permanent // tbd, cam @@ -1222,7 +1234,7 @@ luke WITH_SCOPE BEGIN WITH_SCOPE BEGIN COPY_EXISTING "spcl751a.spl" "override" - LPF "ALTER_EFFECT" INT_VAR "match_opcode" = 146 "savingthrow" = 0 "savebonus" = 0 STR_VAR "match_resource" = "cd0072" END // Cast spell + LPF "ALTER_EFFECT" INT_VAR "match_opcode" = 326 "savingthrow" = 0 "savebonus" = 0 STR_VAR "match_resource" = "cd0072" END // Cast spell BUT_ONLY_IF_IT_CHANGES END WITH_SCOPE BEGIN diff --git a/eefixpack/files/tph/luke/7eyes/7eyes.tph b/eefixpack/files/tph/luke/7eyes/7eyes.tph index 5c394541..9f5455bf 100644 --- a/eefixpack/files/tph/luke/7eyes/7eyes.tph +++ b/eefixpack/files/tph/luke/7eyes/7eyes.tph @@ -30,7 +30,7 @@ BEGIN 12 , "piercing" , "" , "" , "Bleeding, Suffers Bleeding Wound, Bleeding Wound, Deathbringer Assault" , "102 137" , "" => "damage_piercing.2da" 13 , "null" , "DEATH_IMMUNITY" , "" , "Death, Vorpal Hit" , "51" , "" => "kill.2da" 16 , "null" , "HASTE_IMMUNITY" , "93 126 206 318" , "Haste, Hasted" , "38 110" , "" => "haste.2da" - 24 , "null" , "PANIC_IMMUNITY" , "23 54 106 10 44" , "Panic, Morale Failure: Panic, *flees in terror*" , "36" , "cdhorror spmindat ohrmind" => "panic.2da" // NB.: CON/STR penalties seem tied to fear + 24 , "null" , "PANIC_IMMUNITY" , "23 54 106 10 44" , "Panic, Morale Failure: Panic, *flees in terror*" , "36 91" , "cdhorror spmindat ohrmind" => "panic.2da" // NB.: CON/STR penalties seem tied to fear 38 , "null" , "SILENCE_IMMUNITY" , "" , "Silence, Silenced, Bard Song Silenced" , "34" , "" => "silence.2da" //39 , "null" , "" , "" , "Sleep, Unconscious" , "" , "" => "sleep.2da" 40 , "null" , "SLOW_IMMUNITY" , "0 54 240" , "Slow, Slowed" , "41" , "" => "slow.2da" @@ -52,7 +52,7 @@ BEGIN 210 , "null" , "STUN_IMMUNITY" , "" , "Stun, Stunned" , "55" , "cdstun" => "power_word_stun.2da" 211 , "null" , "IMPRISONMENT_IMMUNITY" , "" , "" , "79" , "spmaze1 spmaze2" => "imprisonment.2da" 213 , "null" , "MAZE_IMMUNITY" , "" , "" , "78 190" , "spspmaze" => "maze.2da" - 238 , "null" , "DEATH_IMMUNITY" , "" , "Death, Vorpal Hit" , "51" , "" => "disintegrate.2da" + 238 , "null" , "DISINTEGRATE_IMMUNITY" , "" , "Death, Vorpal Hit" , "51" , "" => "disintegrate.2da" END // ACTION_PHP_EACH "7eyes-o-matic" AS "key" => "2daFile" BEGIN diff --git a/eefixpack/files/tph/luke/sunray.tph b/eefixpack/files/tph/luke/sunray.tph index 91927269..04d009ce 100644 --- a/eefixpack/files/tph/luke/sunray.tph +++ b/eefixpack/files/tph/luke/sunray.tph @@ -39,6 +39,7 @@ BEGIN READ_ASCII ("%fx_off%" + 0x14) "subspell" WRITE_LONG ("%fx_off%" + 0x24) BIT0 // save vs. spell END + DEFAULT END END END diff --git a/eefixpack/files/tph/luke/wizard_chill_touch.tph b/eefixpack/files/tph/luke/wizard_chill_touch.tph index 2a15d0a9..fc23aae9 100644 --- a/eefixpack/files/tph/luke/wizard_chill_touch.tph +++ b/eefixpack/files/tph/luke/wizard_chill_touch.tph @@ -64,6 +64,7 @@ BEGIN //// Subspell affecting GENERAL != UNDEAD //////////////////////////////////////////////////////////////////// + /* WITH_SCOPE BEGIN COPY_EXISTING "%WIZARD_CHILL_TOUCH%b.spl" "override" /*LPF "ALTER_EFFECT" @@ -71,7 +72,7 @@ BEGIN "check_globals" = 0 "resist_dispel" = 1 // Dispel/Not bypass MR "savingthrow" = BIT0 // Save vs. Spell - END*/ + END LPF "CLONE_EFFECT" INT_VAR "match_opcode" = 12 @@ -85,4 +86,5 @@ BEGIN END BUT_ONLY_IF_IT_CHANGES END + */ END \ No newline at end of file diff --git a/eefixpack/files/tph/tbd_extraplanar_tieflings.tph b/eefixpack/files/tph/tbd_extraplanar_tieflings.tph index bc9ce89c..1ebccf3f 100644 --- a/eefixpack/files/tph/tbd_extraplanar_tieflings.tph +++ b/eefixpack/files/tph/tbd_extraplanar_tieflings.tph @@ -48,7 +48,7 @@ COPY_EXISTING ~sppr612.spl~ ~override~ // bolt of glory // deleting item effs that target tieflings for the wrong reasons COPY_EXISTING ~debian.itm~ ~override~ // Debian's Rod of Smiting +3: does extra damage to outer-planars - ~doves.itm~ ~override~ // Three White Doves +3: double damage, chance to be destroyed for outer-planars + //~doves.itm~ ~override~ // Three White Doves +3: double damage, chance to be destroyed for outer-planars ~smcudge.itm~ ~override~ // Star Metal Cudgel: bonus damage vs. outer-planar LPF ALTER_EFFECT INT_VAR match_opcode = 177 match_parameter1 = 153 match_parameter2 = 4 parameter1 = 128 END // race: tiefling > rakshasa diff --git a/eefixpack/files/tph/tbd_vfx_removal_iwd.tph b/eefixpack/files/tph/tbd_vfx_removal_iwd.tph index bdb9cfc7..bd9bf4fe 100644 --- a/eefixpack/files/tph/tbd_vfx_removal_iwd.tph +++ b/eefixpack/files/tph/tbd_vfx_removal_iwd.tph @@ -35,9 +35,9 @@ COPY_EXISTING ~potn23.itm~ ~override~ // Oil of Speed - causes feeblemind - po LPF ALTER_EFFECT INT_VAR match_opcode = 400 opcode = 139 END // correct opcode // needs stun immunity, but can't block bonus damage -COPY_EXISTING ~uarow3b.spl~ ~override~ // (itm) Hammer Arrow +1 - causes stun - portrait icon(s) 55 - additional effects [color glow] - //LPF CLONE_EFFECT INT_VAR match_opcode = 45 opcode = 324 parameter1 = stun_immunity parameter2 = 110 timing = 0 resist_dispel = 0 duration = 0 STR_VAR insert = first resource = EVAL ~%SOURCE_RES%~ END -BUT_ONLY_IF_IT_CHANGES +// COPY_EXISTING ~uarow3b.spl~ ~override~ // (itm) Hammer Arrow +1 - causes stun - portrait icon(s) 55 - additional effects [color glow] +// //LPF CLONE_EFFECT INT_VAR match_opcode = 45 opcode = 324 parameter1 = stun_immunity parameter2 = 110 timing = 0 resist_dispel = 0 duration = 0 STR_VAR insert = first resource = EVAL ~%SOURCE_RES%~ END +// BUT_ONLY_IF_IT_CHANGES // needs stun immunity, but do special to avoid triple 324s COPY_EXISTING ~spin115.spl~ ~override~ // (spl) Mournful Wail - causes stun - portrait icon(s) 44 - sound(s) #eff_e04 [expiry sound] From 871e467e05f308a681c256359781e3cff1a425a5 Mon Sep 17 00:00:00 2001 From: 4Luke4 Date: Sat, 5 Apr 2025 23:17:43 +0200 Subject: [PATCH 07/12] more iwd fixes --- eefixpack/files/lib/gt_7eyes.tph | 20 +++++++++++++++---- eefixpack/files/tph/iwdee.tph | 7 ++++--- eefixpack/files/tph/luke/7eyes/7eyes.tph | 2 +- .../files/tph/luke/wizard_chill_touch.tph | 2 +- 4 files changed, 22 insertions(+), 9 deletions(-) diff --git a/eefixpack/files/lib/gt_7eyes.tph b/eefixpack/files/lib/gt_7eyes.tph index 99cd39f2..39735210 100644 --- a/eefixpack/files/lib/gt_7eyes.tph +++ b/eefixpack/files/lib/gt_7eyes.tph @@ -48,9 +48,15 @@ BEGIN READ_2DA_ENTRY_FORMER "read_2da_file" "%i%" 1 "file_to_patch" READ_2DA_ENTRY_FORMER "read_2da_file" "%i%" 2 "preferred_subspell_resref" INNER_ACTION BEGIN - COPY_EXISTING "%file_to_patch%" "override" - LPF "7EYES-O-MATIC#CORE" END - BUT_ONLY IF_EXISTS // skip SoD assets if needed + ACTION_MATCH "%file_to_patch%" WITH + "spin119\.spl" "doves\.itm" WHEN GAME_IS "iwdee" BEGIN + // these will be fixed manually later ... + END + DEFAULT + COPY_EXISTING "%file_to_patch%" "override" + LPF "7EYES-O-MATIC#CORE" END + BUT_ONLY IF_EXISTS // skip SoD assets if needed + END END END BUT_ONLY_IF_IT_CHANGES @@ -359,7 +365,13 @@ BEGIN WRITE_SHORT "%fx_off%" 998 END END - 41 61 140 141 165 170 265 269 327 BEGIN END + 41 61 140 141 170 265 269 327 BEGIN END + 165 BEGIN + PATCH_IF (("%opcode_extra%" STRING_CONTAINS_REGEXP "\b%fx_opcode%\b") == 0) BEGIN + TEXT_SPRINT $"7eyes-o-matic#ancillary"("%fx_opcode%" "%fx_target%" "%fx_power%" "%fx_parameter1%" "%fx_parameter2%" "%fx_timing%" "%fx_resist_dispel%" "%fx_duration%" "%fx_probability1%" "%fx_probability2%" "%fx_resource%" "%fx_dicenumber%" "%fx_dicesize%" "%fx_savetype%" "%fx_savebonus%" "%fx_special%" "%fx_ind%" "%ab_ind%" "%projectile_type%") "" + WRITE_SHORT "%fx_off%" 999 + END + END 206 318 324 BEGIN PATCH_IF ("%fx_ind%" == SHORT_AT ("%ab_off%" + 0x1E) - 1) AND ("%fx_resource%" STR_EQ "%DEST_RES%") BEGIN // if last in the effect stack... SET "found_other" = 1 diff --git a/eefixpack/files/tph/iwdee.tph b/eefixpack/files/tph/iwdee.tph index b31e6ee0..36c6da6b 100644 --- a/eefixpack/files/tph/iwdee.tph +++ b/eefixpack/files/tph/iwdee.tph @@ -522,7 +522,7 @@ COPY_EXISTING ~ghoult.itm~ ~override~ // ghoul touch should last six rounds // tbd, cam // sword of days doesn't block all haste/slow spells -COPY_EXISTING ~cd003i.spl~ ~override~ // round out slow/haste immunity; david's stuff will add the immunity spellstates +COPY_EXISTING ~days.itm~ ~override~ // round out slow/haste immunity; david's stuff will add the immunity spellstates LPF CLONE_EFFECT INT_VAR check_headers = 0 match_opcode = 318 STR_VAR match_resource = spwi305 resource = spra301 insert = below END // clone haste to ranger haste LPF CLONE_EFFECT INT_VAR check_headers = 0 match_opcode = 318 STR_VAR match_resource = spwi312 resource = spin146 insert = below END // clone to beholder slow LPF CLONE_EFFECT INT_VAR check_headers = 0 match_opcode = 318 STR_VAR match_resource = spwi312 resource = spin977 insert = below END // clone to golem slow @@ -827,6 +827,7 @@ COPY_EXISTING ~%CLERIC_SYMBOL_OF_HOPELESSNESS%.spl~ ~override~ // sppr716 Symbol // Great Roar has inconsistent durations COPY_EXISTING ~%INNATE_GREAT_ROAR%.spl~ ~override~ // spin119 great roar LPF ALTER_EFFECT INT_VAR match_duration = 120 duration = 30 END + LPF CLONE_EFFECT INT_VAR multi_match = 1 match_opcode = 324 parameter1 = IDS_OF_SYMBOL ("splstate" "panic_immunity") parameter2 = 110 STR_VAR resource = "%DEST_RES%" END BUT_ONLY // tbd, cam @@ -1632,10 +1633,10 @@ INCLUDE "%MOD_FOLDER%/files/tph/dw_fixes.tph" // tbd, davidw: 318/324 immunity, // fixes the hot mess of three white doves // death moved back below death messages; fixing HD targeting for undead destruction COPY_EXISTING ~doves.itm~ ~override~ // three white doves - LPF CLONE_EFFECT INT_VAR match_opcode = 177 STR_VAR match_resource = cddovdie insert = last END // copy die to last effects after messages + LPF CLONE_EFFECT INT_VAR match_opcode = 177 silent = 1 STR_VAR match_resource = cddovdie insert = last END // copy die to last effects after messages LPF DELETE_EFFECT INT_VAR multi_match = 18 match_opcode = 177 STR_VAR match_resource = cddovdie END // yes, 18 PATCH_FOR_EACH lev IN 5 6 7 8 10 11 BEGIN - LPF ALTER_EFFECT INT_VAR match_opcode = 177 match_parameter1 = 4 match_parameter2 = 3 match_dicesize = lev dicesize = 0 END + LPF ALTER_EFFECT INT_VAR silent = 1 match_opcode = 177 match_parameter1 = 4 match_parameter2 = 3 match_dicesize = lev dicesize = 0 END END WITH_SCOPE BEGIN diff --git a/eefixpack/files/tph/luke/7eyes/7eyes.tph b/eefixpack/files/tph/luke/7eyes/7eyes.tph index 9f5455bf..69319cf1 100644 --- a/eefixpack/files/tph/luke/7eyes/7eyes.tph +++ b/eefixpack/files/tph/luke/7eyes/7eyes.tph @@ -28,7 +28,7 @@ BEGIN 12 , "crushing" , "" , "" , "Bleeding, Suffers Bleeding Wound, Bleeding Wound, Deathbringer Assault" , "102 137" , "" => "damage_crushing.2da" 12 , "slashing" , "" , "" , "Bleeding, Suffers Bleeding Wound, Bleeding Wound, Deathbringer Assault" , "102 137" , "" => "damage_slashing.2da" 12 , "piercing" , "" , "" , "Bleeding, Suffers Bleeding Wound, Bleeding Wound, Deathbringer Assault" , "102 137" , "" => "damage_piercing.2da" - 13 , "null" , "DEATH_IMMUNITY" , "" , "Death, Vorpal Hit" , "51" , "" => "kill.2da" + 13 , "null" , "DEATH_IMMUNITY" , "66 287 165" , "Death, Vorpal Hit" , "51" , "" => "kill.2da" 16 , "null" , "HASTE_IMMUNITY" , "93 126 206 318" , "Haste, Hasted" , "38 110" , "" => "haste.2da" 24 , "null" , "PANIC_IMMUNITY" , "23 54 106 10 44" , "Panic, Morale Failure: Panic, *flees in terror*" , "36 91" , "cdhorror spmindat ohrmind" => "panic.2da" // NB.: CON/STR penalties seem tied to fear 38 , "null" , "SILENCE_IMMUNITY" , "" , "Silence, Silenced, Bard Song Silenced" , "34" , "" => "silence.2da" diff --git a/eefixpack/files/tph/luke/wizard_chill_touch.tph b/eefixpack/files/tph/luke/wizard_chill_touch.tph index fc23aae9..5b091cbc 100644 --- a/eefixpack/files/tph/luke/wizard_chill_touch.tph +++ b/eefixpack/files/tph/luke/wizard_chill_touch.tph @@ -67,7 +67,7 @@ BEGIN /* WITH_SCOPE BEGIN COPY_EXISTING "%WIZARD_CHILL_TOUCH%b.spl" "override" - /*LPF "ALTER_EFFECT" + LPF "ALTER_EFFECT" INT_VAR "check_globals" = 0 "resist_dispel" = 1 // Dispel/Not bypass MR From 9f40a7a8e58579f1c9748b281d9b04f7f53f117b Mon Sep 17 00:00:00 2001 From: 4Luke4 Date: Sun, 6 Apr 2025 10:46:07 +0200 Subject: [PATCH 08/12] more bg2 tweaks --- eefixpack/files/lib/gt_7eyes.tph | 3 ++ eefixpack/files/tph/bg2ee.tph | 43 +++++++++++-------- .../tph/dw/ghoul_touch_elven_immunity.tph | 3 +- eefixpack/files/tph/dw/paralyzation_fixes.tph | 2 +- eefixpack/files/tph/luke/7eyes/7eyes.tph | 2 +- 5 files changed, 32 insertions(+), 21 deletions(-) diff --git a/eefixpack/files/lib/gt_7eyes.tph b/eefixpack/files/lib/gt_7eyes.tph index 39735210..500e31c2 100644 --- a/eefixpack/files/lib/gt_7eyes.tph +++ b/eefixpack/files/lib/gt_7eyes.tph @@ -52,6 +52,9 @@ BEGIN "spin119\.spl" "doves\.itm" WHEN GAME_IS "iwdee" BEGIN // these will be fixed manually later ... END + "ohdwand1\.itm" WHEN GAME_IS "bg2ee" BEGIN + // these will be fixed manually later ... + END DEFAULT COPY_EXISTING "%file_to_patch%" "override" LPF "7EYES-O-MATIC#CORE" END diff --git a/eefixpack/files/tph/bg2ee.tph b/eefixpack/files/tph/bg2ee.tph index e0cbc01a..e8c77291 100644 --- a/eefixpack/files/tph/bg2ee.tph +++ b/eefixpack/files/tph/bg2ee.tph @@ -722,14 +722,18 @@ COPY_EXISTING ~flind1.itm~ ~override~ OUTER_SET charm_immunity = IDS_OF_SYMBOL (~splstate~ ~CHARM_IMMUNITY~) COPY_EXISTING ~gorwom1.itm~ ~override~ // Nalmissra's attack LPF DELETE_EFFECT INT_VAR match_opcode = 324 END // delete existing 324s - LPF ALTER_EFFECT INT_VAR match_opcode = 142 match_parameter2 = 1 probability1 = 50 END // charm is 50%, but icon is 100% + LPF ALTER_EFFECT INT_VAR silent = 1 match_opcode = 142 match_parameter2 = 1 probability1 = 50 END // charm is 50%, but icon is 100% PATCH_FOR_EACH op IN 5 215 142 BEGIN - LPF CLONE_EFFECT INT_VAR match_opcode = op match_probability1 = 50 STR_VAR insert = last END + LPF CLONE_EFFECT INT_VAR silent = 1 match_opcode = op match_probability1 = 50 STR_VAR insert = last END LPF DELETE_EFFECT INT_VAR match_opcode = op match_probability1 = 50 multi_match = 1 END END // LPF CLONE_EFFECT INT_VAR match_opcode = 5 opcode = 324 timing = 0 duration = 0 resist_dispel = 0 savingthrow = 0 savebonus = 0 parameter1 = charm_immunity parameter2 = 110 END // charm immunity - LPF CLONE_EFFECT INT_VAR match_opcode = 5 opcode = 324 timing = 0 duration = 0 resist_dispel = 0 savingthrow = 0 savebonus = 0 parameter1 = 0 parameter2 = 19 probability1 = 15 END // half-elf immunity - LPF CLONE_EFFECT INT_VAR match_opcode = 5 opcode = 324 timing = 0 duration = 0 resist_dispel = 0 savingthrow = 0 savebonus = 0 parameter1 = 0 parameter2 = 15 probability1 = 45 END // elf immunity + LPF CLONE_EFFECT INT_VAR silent = 1 match_opcode = 5 opcode = 324 timing = 0 duration = 0 resist_dispel = 0 savingthrow = 0 savebonus = 0 parameter1 = 0 parameter2 = 19 probability1 = 15 END // half-elf immunity + LPF CLONE_EFFECT INT_VAR silent = 1 match_opcode = 5 opcode = 324 timing = 0 duration = 0 resist_dispel = 0 savingthrow = 0 savebonus = 0 parameter1 = 0 parameter2 = 15 probability1 = 45 END // elf immunity + +COPY_EXISTING ~cd0004.spl~ ~override~ // Nalmissra's attack + LPF CLONE_EFFECT INT_VAR match_opcode = 5 opcode = 318 timing = 0 duration = 0 resist_dispel = 0 savingthrow = 0 savebonus = 0 parameter1 = 0 parameter2 = 19 probability1 = 15 END // half-elf immunity + LPF CLONE_EFFECT INT_VAR match_opcode = 5 opcode = 318 timing = 0 duration = 0 resist_dispel = 0 savingthrow = 0 savebonus = 0 parameter1 = 0 parameter2 = 15 probability1 = 45 END // elf immunity // tbd, cam // blackmist plays two sounds when it blinds targets; one of them is the expirty sound and should be delayed @@ -759,12 +763,12 @@ COPY_EXISTING ~helm33.itm~ ~override~ // Gold Horned Helm // tbd, cam // combat feedback used with instant/limited timing and durations COPY_EXISTING ~helm32.itm~ ~override~ // Helm of the Rock - causes fear - portrait icon 36 - unknown long effect - ~spin595.spl~ ~override~ // Yellow Dragon Scorching Sand - causes blind - unknown long effect + ~cd008n.spl~ ~override~ // Yellow Dragon Scorching Sand - causes blind - unknown long effect ~spin878.spl~ ~override~ // Level Drain - causes blind - causes level drain - unknown long effect ~spin893.spl~ ~override~ // Shadow Dragon Breath - causes blind - causes level drain - unknown long effect - ~spin929.spl~ ~override~ // Mist Ball - causes blind - unknown long effect - ~spin931.spl~ ~override~ // Sooty Ball - causes blind - unknown long effect - ~spwi714.spl~ ~override~ // Prismatic Spray - causes blind - causes feeblemind - unknown long effect + ~cd008q.spl~ ~override~ // Mist Ball - causes blind - unknown long effect + ~cd008r.spl~ ~override~ // Sooty Ball - causes blind - unknown long effect + ~cd008x.spl~ ~override~ // Prismatic Spray - causes blind - causes feeblemind - unknown long effect ~spwi815.spl~ ~override~ // Power Word, Blind - causes blind - unknown long effect - plays sound EFF_E06 ~spwi958.spl~ ~override~ // Power Word, Blind - causes blind - unknown long effect - plays sound EFF_E06 LPF ALTER_EFFECT INT_VAR match_opcode = 139 timing = 1 duration = 0 END @@ -785,8 +789,8 @@ COPY_EXISTING //~dragring.itm~ ~override~ // ring - immune to stun - immune to h BUT_ONLY // tie slow icon to slow-via-disease effect so it gets cleared by disease cures -COPY_EXISTING ~iotyugh.itm~ ~override~ // (itm) Attack - causes disease - portrait icon 41 - ~ohrslng1.itm~ ~override~ // (itm) Lupine Sling +2 - causes disease - portrait icon 41 [uses slow icon with its disease] +COPY_EXISTING ~cd0098.spl~ ~override~ // (itm) Attack - causes disease - portrait icon 41 + ~cd009e.spl~ ~override~ // (itm) Lupine Sling +2 - causes disease - portrait icon 41 [uses slow icon with its disease] ~otyugh.itm~ ~override~ // (itm) Attack - causes disease - portrait icon 41 LPF DELETE_EFFECT INT_VAR match_opcode = 142 match_parameter2 = 41 END // delete slow effect LPF ALTER_EFFECT INT_VAR match_opcode = 78 match_parameter2 = 10 special = 41 END // change slow-via-disease to use slow icon instead of disease (other disease effect already uses disease icon) @@ -872,7 +876,7 @@ COPY_EXISTING ~quiver01.itm~ ~override~ // quiver of plenty +1 BUT_ONLY // rod of terror's fear affect lasts 5 rounds instead of the stated 4 -COPY_EXISTING ~rods05.itm~ ~override~ +COPY_EXISTING ~cd004m.spl~ ~override~ LPF ALTER_EFFECT INT_VAR match_duration = 30 duration = 24 END // tbd, cam @@ -893,9 +897,9 @@ COPY_EXISTING ~sirine.itm~ ~override~ // Ghoul hand - causes feeblemind - unkn // tbd, cam // elemental staves' sound effect should only target the specified creature OUTER_SET elemental_destroyed = RESOLVE_STR_REF (@100) -COPY_EXISTING ~staf15.itm~ ~override~ // staff of air +2 - ~staf16.itm~ ~override~ // staff of earth +2 - ~staf17.itm~ ~override~ // staff of fire +2 +COPY_EXISTING ~cd0088.spl~ ~override~ // staff of air +2 + ~cd0089.spl~ ~override~ // staff of earth +2 + ~cd008a.spl~ ~override~ // staff of fire +2 LPF CLONE_EFFECT INT_VAR match_opcode = 55 opcode = 318 power = 0 parameter2 = 115 timing = 0 savingthrow = 0 STR_VAR insert = first resource = EVAL ~%SOURCE_RES%~ END LPF CLONE_EFFECT INT_VAR match_opcode = 55 opcode = 139 parameter1 = elemental_destroyed parameter2 = 0 END // add 'elemental destroyed' message LPF ALTER_EFFECT INT_VAR match_opcode = 55 parameter1 = 0 parameter2 = 2 END // now gated by a 318, make 55 universal @@ -1360,6 +1364,7 @@ luke **Wand of Glitterdust** - Make sure all effects are dispellable/do not bypass Magic Resistance (so as to match the corresponding spell) */ +/* WITH_SCOPE BEGIN COPY_EXISTING - "ohdwand1.itm" "override" GET_OFFSET_ARRAY "ab_array" ITM_V10_HEADERS @@ -1377,8 +1382,9 @@ WITH_SCOPE BEGIN BUT_ONLY_IF_IT_CHANGES COPY_EXISTING "%subspell%.spl" "override" LPF "ALTER_EFFECT" INT_VAR "check_globals" = 0 "resist_dispel" = BIT0 BOR BIT1 END // MR already checked on the parent file - END + BUT_ONLY_IF_IT_CHANGES END +*/ /* luke @@ -1528,7 +1534,7 @@ luke - "eefixpack\files\tph\luke\7eyes\7eyes.tph" follow-up */ WITH_SCOPE BEGIN - COPY_EXISTING "spin891a.spl" "override" // panic subspell + COPY_EXISTING "cd004u.spl" "override" // panic subspell LPF "ALTER_EFFECT" INT_VAR "match_opcode" = 177 "opcode" = 24 "parameter1" = 0 "parameter2" = 0 STR_VAR "match_resource" = "moondog" "resource" = "" END LPF "ALTER_EFFECT" INT_VAR "match_opcode" = 177 "opcode" = 142 "parameter1" = 0 "parameter2" = 36 STR_VAR "match_resource" = "moond2" "resource" = "" END LPF "ALTER_EFFECT" INT_VAR "match_opcode" = 177 "opcode" = 139 "parameter1" = 14007 "parameter2" = 0 STR_VAR "match_resource" = "moond1" "resource" = "" END @@ -1614,10 +1620,11 @@ COPY_EXISTING ~ax1h10.itm~ ~override~ // azuredge ~dwfpohdv.spl~ ~override~ // used by ohbdeva.itm for, you guessed it, disruption ~hamm10.itm~ ~override~ // runehammer +4 ~hamm11.itm~ ~override~ // runehammer +5 - LPF CLONE_EFFECT INT_VAR match_opcode = 177 STR_VAR match_resource = mesdie insert = last END // copy mesdie, die to last effects - LPF CLONE_EFFECT INT_VAR match_opcode = 177 STR_VAR match_resource = die insert = last END + LPF CLONE_EFFECT INT_VAR match_opcode = 177 silent = 1 STR_VAR match_resource = mesdie insert = last END // copy mesdie, die to last effects + LPF CLONE_EFFECT INT_VAR match_opcode = 177 silent = 1 STR_VAR match_resource = die insert = last END LPF DELETE_EFFECT INT_VAR multi_match = 1 match_opcode = 177 STR_VAR match_resource = mesdie END // then delete the source of the copied effects LPF DELETE_EFFECT INT_VAR multi_match = 1 match_opcode = 177 STR_VAR match_resource = die END +BUT_ONLY IF_EXISTS WITH_SCOPE BEGIN INCLUDE "eefixpack/files/tph/luke/redundant_effects.tph" diff --git a/eefixpack/files/tph/dw/ghoul_touch_elven_immunity.tph b/eefixpack/files/tph/dw/ghoul_touch_elven_immunity.tph index 0033e273..2f1f945e 100644 --- a/eefixpack/files/tph/dw/ghoul_touch_elven_immunity.tph +++ b/eefixpack/files/tph/dw/ghoul_touch_elven_immunity.tph @@ -3,7 +3,8 @@ DEFINE_ACTION_FUNCTION ghoul_touch_elven_immunity BEGIN ACTION_FOR_EACH item IN ghoult ghoul1 BEGIN COPY_EXISTING "%item%.itm" override - LPF CLONE_EFFECT INT_VAR match_opcode=109 opcode=324 timing=0 duration=0 parameter1=0 parameter2=15 STR_VAR resource="%SOURCE_RES%" END + //LPF CLONE_EFFECT INT_VAR match_opcode=109 opcode=324 timing=0 duration=0 parameter1=0 parameter2=15 STR_VAR resource="%SOURCE_RES%" END + LPF ADD_ITEM_EFFECT INT_VAR insert_point=0 opcode=324 parameter2=15 type=1 STR_VAR resource="%SOURCE_RES%" END BUT_ONLY END diff --git a/eefixpack/files/tph/dw/paralyzation_fixes.tph b/eefixpack/files/tph/dw/paralyzation_fixes.tph index 37c032f9..e3412bfd 100644 --- a/eefixpack/files/tph/dw/paralyzation_fixes.tph +++ b/eefixpack/files/tph/dw/paralyzation_fixes.tph @@ -392,7 +392,7 @@ ACTION_IF GAME_IS "bg2ee iwdee" BEGIN //bgee already uses 185 END ACTION_IF GAME_IS BG2EE BEGIN - COPY_EXISTING "sppr728.spl" override + COPY_EXISTING "cd00bs.spl" override LPF ALTER_EFFECT INT_VAR match_opcode=175 opcode=185 END END diff --git a/eefixpack/files/tph/luke/7eyes/7eyes.tph b/eefixpack/files/tph/luke/7eyes/7eyes.tph index 69319cf1..08e0853e 100644 --- a/eefixpack/files/tph/luke/7eyes/7eyes.tph +++ b/eefixpack/files/tph/luke/7eyes/7eyes.tph @@ -38,7 +38,7 @@ BEGIN 55 , "null" , "DEATH_IMMUNITY" , "" , "Death, Vorpal Hit" , "51" , "" => "slay.2da" 74 , "null" , "BLIND_IMMUNITY" , "54" , "Blind, Blinded, Blindness" , "8" , "" => "blind.2da" 76 , "null" , "FEEBLEMIND_IMMUNITY" , "" , "Feeblemind, Feebleminded, Feeblemindedness, Mind Locked Away" , "48" , "cdfeeble spmindat" => "feeblemind.2da" - 78 , "null" , "DISEASE_IMMUNITY" , "328" , "Gibberslug Infection, Diseased, Stricken by a foul disease" , "7" , "" => "disease.2da" + 78 , "null" , "DISEASE_IMMUNITY" , "328" , "Gibberslug Infection, Diseased, Stricken by a foul disease" , "7 41" , "" => "disease.2da" 80 , "null" , "DEAF_IMMUNITY" , "" , "Deaf, Deafened, Deafness" , "112" , "" => "deaf.2da" 109 , "null" , "PARALYZE_IMMUNITY" , "157" , "Paralyzed, Paralysed, Held" , "13" , "" => "paralyze.2da" 128 , "null" , "CONFUSION_IMMUNITY" , "" , "Confused, Rigid Thinking, Chaos" , "2 3 47" , "spconfus" => "confusion.2da" From 1f14ce3505ac33f32f0b36f2ea8c978593296eed Mon Sep 17 00:00:00 2001 From: 4Luke4 Date: Sun, 6 Apr 2025 11:08:58 +0200 Subject: [PATCH 09/12] more bg2 tweaks --- eefixpack/files/tph/bg2ee.tph | 8 ++++++++ eefixpack/files/tph/bg_bg2_common_spell_fixes.tph | 2 ++ eefixpack/files/tph/luke/7eyes/7eyes.tph | 4 ++-- eefixpack/files/tph/tbd_vfx_removal_bg2.tph | 2 +- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/eefixpack/files/tph/bg2ee.tph b/eefixpack/files/tph/bg2ee.tph index e8c77291..f79dacb2 100644 --- a/eefixpack/files/tph/bg2ee.tph +++ b/eefixpack/files/tph/bg2ee.tph @@ -178,6 +178,14 @@ WITH_SCOPE BEGIN END END +// luke +// Mimic Glue should not set the GREASE stat (moved here so as not to trick the 7eyes routine) +WITH_SCOPE BEGIN + COPY_EXISTING ~%MIMIC_GLUE%.spl~ ~override~ // Mimic Glue spin914 + LAUNCH_PATCH_FUNCTION "ALTER_EFFECT" INT_VAR "match_opcode" = 158 "opcode" = 215 "parameter2" = 1 STR_VAR "resource" = "GREASED" END // Grease overlay => Play visual effect, Mode: Over target (attached) + BUT_ONLY_IF_IT_CHANGES +END + /* luke "7eyes.2da" vs. SPL/ITM files diff --git a/eefixpack/files/tph/bg_bg2_common_spell_fixes.tph b/eefixpack/files/tph/bg_bg2_common_spell_fixes.tph index d2e34fe9..8fb5460a 100644 --- a/eefixpack/files/tph/bg_bg2_common_spell_fixes.tph +++ b/eefixpack/files/tph/bg_bg2_common_spell_fixes.tph @@ -23,11 +23,13 @@ END // luke // Mimic Glue should not set the GREASE stat +/* WITH_SCOPE BEGIN COPY_EXISTING ~%MIMIC_GLUE%.spl~ ~override~ // Mimic Glue spin914 LAUNCH_PATCH_FUNCTION "ALTER_EFFECT" INT_VAR "match_opcode" = 158 "opcode" = 215 "parameter2" = 1 STR_VAR "resource" = "GREASED" END // Grease overlay => Play visual effect, Mode: Over target (attached) BUT_ONLY_IF_IT_CHANGES END +*/ // luke // Lesser Fire Spirit - Suppress misleading "One of the spell has failed" message diff --git a/eefixpack/files/tph/luke/7eyes/7eyes.tph b/eefixpack/files/tph/luke/7eyes/7eyes.tph index 08e0853e..281a66fb 100644 --- a/eefixpack/files/tph/luke/7eyes/7eyes.tph +++ b/eefixpack/files/tph/luke/7eyes/7eyes.tph @@ -28,7 +28,7 @@ BEGIN 12 , "crushing" , "" , "" , "Bleeding, Suffers Bleeding Wound, Bleeding Wound, Deathbringer Assault" , "102 137" , "" => "damage_crushing.2da" 12 , "slashing" , "" , "" , "Bleeding, Suffers Bleeding Wound, Bleeding Wound, Deathbringer Assault" , "102 137" , "" => "damage_slashing.2da" 12 , "piercing" , "" , "" , "Bleeding, Suffers Bleeding Wound, Bleeding Wound, Deathbringer Assault" , "102 137" , "" => "damage_piercing.2da" - 13 , "null" , "DEATH_IMMUNITY" , "66 287 165" , "Death, Vorpal Hit" , "51" , "" => "kill.2da" + 13 , "null" , "DEATH_IMMUNITY" , "66 287 165" , "Death, Vorpal Hit, Undead destroyed" , "51" , "" => "kill.2da" 16 , "null" , "HASTE_IMMUNITY" , "93 126 206 318" , "Haste, Hasted" , "38 110" , "" => "haste.2da" 24 , "null" , "PANIC_IMMUNITY" , "23 54 106 10 44" , "Panic, Morale Failure: Panic, *flees in terror*" , "36 91" , "cdhorror spmindat ohrmind" => "panic.2da" // NB.: CON/STR penalties seem tied to fear 38 , "null" , "SILENCE_IMMUNITY" , "" , "Silence, Silenced, Bard Song Silenced" , "34" , "" => "silence.2da" @@ -40,7 +40,7 @@ BEGIN 76 , "null" , "FEEBLEMIND_IMMUNITY" , "" , "Feeblemind, Feebleminded, Feeblemindedness, Mind Locked Away" , "48" , "cdfeeble spmindat" => "feeblemind.2da" 78 , "null" , "DISEASE_IMMUNITY" , "328" , "Gibberslug Infection, Diseased, Stricken by a foul disease" , "7 41" , "" => "disease.2da" 80 , "null" , "DEAF_IMMUNITY" , "" , "Deaf, Deafened, Deafness" , "112" , "" => "deaf.2da" - 109 , "null" , "PARALYZE_IMMUNITY" , "157" , "Paralyzed, Paralysed, Held" , "13" , "" => "paralyze.2da" + 109 , "null" , "PARALYZE_IMMUNITY" , "157" , "Paralyzed, Paralysed, Held" , "13" , "greased" => "paralyze.2da" 128 , "null" , "CONFUSION_IMMUNITY" , "" , "Confused, Rigid Thinking, Chaos" , "2 3 47" , "spconfus" => "confusion.2da" 134 , "null" , "PETRIFY_IMMUNITY" , "" , "Petrification, Petrified" , "171" , "" => "petrify.2da" 142 , "null" , "" , "" , "" , "" , "" => "special.2da" diff --git a/eefixpack/files/tph/tbd_vfx_removal_bg2.tph b/eefixpack/files/tph/tbd_vfx_removal_bg2.tph index 7835fa83..558d68b4 100644 --- a/eefixpack/files/tph/tbd_vfx_removal_bg2.tph +++ b/eefixpack/files/tph/tbd_vfx_removal_bg2.tph @@ -1455,7 +1455,7 @@ COPY_EXISTING ~amsoul01.itm~ ~override~ // Malla's Soul Stone - cures blind - cu ~potnmare.itm~ ~override~ // Marek's Potion of Antidote - cures poison ~scrl08.itm~ ~override~ // Protection From Poison - cures poison ~senspihe.spl~ ~override~ // Heal - cures blind - cures deafness - cures disease - cures drunkenness - cures feeblemind - cures poison - ~spin102.spl~ ~override~ // Slow Poison - cures drunkenness - cures poison + //~spin102.spl~ ~override~ // Slow Poison - cures drunkenness - cures poison [Luke: changed from cure poison to slow poison] ~spin201.spl~ ~override~ // Neutralize Poison - cures blind - cures deafness - cures disease - cures poison ~spin599.spl~ ~override~ // - cures disease - cures poison ~spin679.spl~ ~override~ // Heal - cures blind - cures deafness - cures disease - cures drunkenness - cures feeblemind - cures poison From 6683c72ec88609a62866cc1febeab4af3139d9ad Mon Sep 17 00:00:00 2001 From: 4Luke4 Date: Sun, 6 Apr 2025 11:54:51 +0200 Subject: [PATCH 10/12] more bg1 tweaks --- eefixpack/files/tph/bgee.tph | 44 ++++++++++++------- .../files/tph/luke/polymorph_overhaul.tph | 6 +-- eefixpack/files/tph/tbd_fireshields.tph | 15 ++++++- eefixpack/files/tph/tbd_vfx_removal_bg.tph | 2 +- 4 files changed, 44 insertions(+), 23 deletions(-) diff --git a/eefixpack/files/tph/bgee.tph b/eefixpack/files/tph/bgee.tph index b169be8f..28071bed 100644 --- a/eefixpack/files/tph/bgee.tph +++ b/eefixpack/files/tph/bgee.tph @@ -1017,15 +1017,15 @@ ACTION_IF game_includes_sod BEGIN END // tie otyugh slow icon to slow-via-disease effect so it gets cleared by curing disease -COPY_EXISTING ~bddraggh.itm~ ~override~ // (itm) Attack - causes disease level drain - ~pudden01.itm~ ~override~ // (itm) - causes disease +COPY_EXISTING ~cd006h.spl~ ~override~ // (itm) Attack - causes disease level drain + ~cd006s.spl~ ~override~ // (itm) - causes disease LPF ALTER_EFFECT INT_VAR match_opcode = 78 match_parameter2 = 10 special = 41 END // change slow-via-disease to use slow icon instead of disease (other disease effect already uses disease icon) IF_EXISTS // sod asset(s) // tie otyugh slow icon to slow-via-disease effect so it gets cleared by curing disease -COPY_EXISTING ~bdotyg01.itm~ ~override~ // (itm) Attack - causes disease - portrait icon 41 - ~bdotyg02.itm~ ~override~ // (itm) Attack - causes disease - portrait icon 41 - ~otyugh.itm~ ~override~ // (itm) Attack - causes disease - portrait icon 41 +COPY_EXISTING ~cd006k.spl~ ~override~ // (itm) Attack - causes disease - portrait icon 41 + ~cd006l.spl~ ~override~ // (itm) Attack - causes disease - portrait icon 41 + ~cd006r.spl~ ~override~ // (itm) Attack - causes disease - portrait icon 41 LPF DELETE_EFFECT INT_VAR match_opcode = 142 match_parameter2 = 41 END // delete separate slow icon (not present on bddraggh and pudden01) LPF ALTER_EFFECT INT_VAR match_opcode = 78 match_parameter2 = 10 special = 41 END // change slow-via-disease to use slow icon instead of disease (other disease effect already uses disease icon) IF_EXISTS // sod asset(s) @@ -1044,14 +1044,18 @@ COPY_EXISTING ~bprng1.itm~ ~override~ // non-swords can still break due to iron OUTER_SET charm_immunity = IDS_OF_SYMBOL (~splstate~ ~CHARM_IMMUNITY~) COPY_EXISTING ~gorwom1.itm~ ~override~ // Nalmissra's attack LPF DELETE_EFFECT INT_VAR match_opcode = 324 END // delete existing 324s - LPF ALTER_EFFECT INT_VAR match_opcode = 142 match_parameter2 = 1 probability1 = 50 END // charm is 50%, but icon is 100% + LPF ALTER_EFFECT INT_VAR silent = 1 match_opcode = 142 match_parameter2 = 1 probability1 = 50 END // charm is 50%, but icon is 100% PATCH_FOR_EACH op IN 5 215 142 BEGIN - LPF CLONE_EFFECT INT_VAR match_opcode = op match_probability1 = 50 STR_VAR insert = last END + LPF CLONE_EFFECT INT_VAR silent = 1 match_opcode = op match_probability1 = 50 STR_VAR insert = last END LPF DELETE_EFFECT INT_VAR match_opcode = op match_probability1 = 50 multi_match = 1 END END - LPF CLONE_EFFECT INT_VAR match_opcode = 5 opcode = 324 timing = 0 duration = 0 resist_dispel = 0 savingthrow = 0 savebonus = 0 parameter1 = charm_immunity parameter2 = 110 END // charm immunity - LPF CLONE_EFFECT INT_VAR match_opcode = 5 opcode = 324 timing = 0 duration = 0 resist_dispel = 0 savingthrow = 0 savebonus = 0 parameter1 = 0 parameter2 = 19 probability1 = 15 END // half-elf immunity - LPF CLONE_EFFECT INT_VAR match_opcode = 5 opcode = 324 timing = 0 duration = 0 resist_dispel = 0 savingthrow = 0 savebonus = 0 parameter1 = 0 parameter2 = 15 probability1 = 45 END // elf immunity + LPF CLONE_EFFECT INT_VAR silent = 1 match_opcode = 5 opcode = 324 timing = 0 duration = 0 resist_dispel = 0 savingthrow = 0 savebonus = 0 parameter1 = charm_immunity parameter2 = 110 END // charm immunity + LPF CLONE_EFFECT INT_VAR silent = 1 match_opcode = 5 opcode = 324 timing = 0 duration = 0 resist_dispel = 0 savingthrow = 0 savebonus = 0 parameter1 = 0 parameter2 = 19 probability1 = 15 END // half-elf immunity + LPF CLONE_EFFECT INT_VAR silent = 1 match_opcode = 5 opcode = 324 timing = 0 duration = 0 resist_dispel = 0 savingthrow = 0 savebonus = 0 parameter1 = 0 parameter2 = 15 probability1 = 45 END // elf immunity + +COPY_EXISTING ~cd0006.spl~ ~override~ // Nalmissra's attack + LPF CLONE_EFFECT INT_VAR match_opcode = 5 opcode = 318 timing = 0 duration = 0 resist_dispel = 0 savingthrow = 0 savebonus = 0 parameter1 = 0 parameter2 = 19 probability1 = 15 END // half-elf immunity + LPF CLONE_EFFECT INT_VAR match_opcode = 5 opcode = 318 timing = 0 duration = 0 resist_dispel = 0 savingthrow = 0 savebonus = 0 parameter1 = 0 parameter2 = 15 probability1 = 45 END // elf immunity COPY_EXISTING ~helm14.itm~ ~override~ // don't leave a bunch of op23's laying around on the creature LPF ALTER_EFFECT INT_VAR match_opcode = 23 special = 0 END @@ -1090,7 +1094,7 @@ COPY_EXISTING ~potn99.itm~ ~override~ // blinding powder lacks description, mino SAY 0x50 @107 SAY 0x54 @107 LPF ALTER_EFFECT INT_VAR power = 0 END // flesh out effects below - LPF ALTER_EFFECT INT_VAR match_opcode = 139 timing = 1 resist_dispel = 1 END // flesh out effects below + LPF ALTER_EFFECT INT_VAR silent = 1 match_opcode = 139 timing = 1 resist_dispel = 1 END // flesh out effects below IF_EXISTS // sod item // immune to confusion, but missing spconfus immunity @@ -1153,9 +1157,15 @@ WITH_SCOPE BEGIN /* Header */ WRITE_LONG 0x4C 0 /* Feature blocks */ - LAUNCH_PATCH_FUNCTION ~ALTER_EFFECT~ INT_VAR ~check_globals~ = 0 ~match_opcode~ = 45 ~duration~ = 30 END + LAUNCH_PATCH_FUNCTION ~ALTER_EFFECT~ INT_VAR "silent" = 1 ~check_globals~ = 0 ~match_opcode~ = 45 ~duration~ = 30 END LAUNCH_PATCH_FUNCTION ~ALTER_EFFECT~ INT_VAR ~check_globals~ = 0 ~savingthrow~ = BIT2 ~resist_dispel~ = 0 END BUT_ONLY IF_EXISTS // sod + // + COPY_EXISTING "cd004p.spl" "override" + /* Feature blocks */ + LAUNCH_PATCH_FUNCTION ~ALTER_EFFECT~ INT_VAR ~check_globals~ = 0 ~match_duration~ = 36 ~duration~ = 30 END + LAUNCH_PATCH_FUNCTION ~ALTER_EFFECT~ INT_VAR ~check_globals~ = 0 ~resist_dispel~ = 0 END + BUT_ONLY IF_EXISTS // sod END // luke @@ -1345,12 +1355,12 @@ COPY_EXISTING ~bdfear.spl~ ~override~ // Panic - causes fear - unknown long eff // tbd, cam // combat feedback used with instant/limited timing and durations -COPY_EXISTING ~bdshriek.spl~ ~override~ // Piercing Shriek - causes confusion deafness stun +COPY_EXISTING ~cd006v.spl~ ~override~ // Piercing Shriek - causes confusion deafness stun ~spin878.spl~ ~override~ // Level Drain - causes blind - causes level drain - unknown long effect ~spin893.spl~ ~override~ // Shadow Dragon Breath - causes blind - causes level drain - unknown long effect - ~spin929.spl~ ~override~ // Mist Ball - causes blind - unknown long effect - ~spin931.spl~ ~override~ // Sooty Ball - causes blind - unknown long effect - ~spwi714.spl~ ~override~ // Prismatic Spray - causes blind - causes feeblemind - unknown long effect + ~cd0062.spl~ ~override~ // Mist Ball - causes blind - unknown long effect + ~cd0063.spl~ ~override~ // Sooty Ball - causes blind - unknown long effect + ~cd006a.spl~ ~override~ // Prismatic Spray - causes blind - causes feeblemind - unknown long effect ~spwm178.spl~ ~override~ // Blindness - causes blind - unknown long effect - plays sound EFF_E07 [expiry sound] LPF ALTER_EFFECT INT_VAR match_opcode = 139 timing = 1 duration = 0 END IF_EXISTS // bdshriek is sod asset @@ -1361,7 +1371,7 @@ COPY_EXISTING ~shoal.spl~ ~override~ LPF CLONE_EFFECT INT_VAR match_opcode = 55 opcode = 324 parameter1 = 3 parameter2 = 113 STR_VAR resource = shoal insert = below END // change survivable shoal kiss to use magic damage, not acid -COPY_EXISTING ~shoal1.spl~ ~override~ +COPY_EXISTING ~cd000v.spl~ ~override~ LPF ALTER_EFFECT INT_VAR match_opcode = 12 parameter2 = (1 + (64 << 16)) END // tbd, cam (from jmerry) diff --git a/eefixpack/files/tph/luke/polymorph_overhaul.tph b/eefixpack/files/tph/luke/polymorph_overhaul.tph index 76b34b5f..9da1c214 100644 --- a/eefixpack/files/tph/luke/polymorph_overhaul.tph +++ b/eefixpack/files/tph/luke/polymorph_overhaul.tph @@ -431,13 +431,13 @@ BEGIN ACTION_MATCH 1 WITH GAME_IS "bgee" BEGIN ACTION_DEFINE_ASSOCIATIVE_ARRAY "magically_created_weapon" BEGIN - "figure01.itm" => "" // Shakti Figurine + //"figure01.itm" => "" // Shakti Figurine // - "ohbpr608.spl" => "" // Harm + //"ohbpr608.spl" => "" // Harm "%HELM_SEEKING_SWORD%.spl" => "" "spdm103.spl" => "" // Ghoul Touch "spin113.spl" => "" // Spiritual Hammer - "spin202.spl" => "" // Cause Serious Wounds + //"spin202.spl" => "" // Cause Serious Wounds "%CREATE_YOSHIMO_BLADE%.spl" => "" "%CLERIC_SHILLELAGH%.spl" => "" "%CLERIC_FLAME_BLADE%.spl" => "" diff --git a/eefixpack/files/tph/tbd_fireshields.tph b/eefixpack/files/tph/tbd_fireshields.tph index 2e243a51..2ae946dc 100644 --- a/eefixpack/files/tph/tbd_fireshields.tph +++ b/eefixpack/files/tph/tbd_fireshields.tph @@ -21,8 +21,19 @@ END ACTION_PHP_EACH cd_fireshields AS spell => pow BEGIN COPY_EXISTING ~%spell%.spl~ ~override~ - LPF ALTER_EFFECT INT_VAR match_opcode = 12 power = pow END - LPF CLONE_EFFECT INT_VAR match_opcode = 12 opcode = 206 parameter1 = 0 parameter2 = 0 timing = 10 duration = 2 dicenumber = 0 dicesize = 0 STR_VAR insert = last resource = EVAL ~%SOURCE_RES%~ END // clone damage into 2 ticks of immunity + PATCH_MATCH "%DEST_RES%" WITH + "bdshld02" BEGIN + INNER_ACTION BEGIN + COPY_EXISTING "cd000e.spl" "override" + LPF ALTER_EFFECT INT_VAR match_opcode = 12 power = pow END + LPF CLONE_EFFECT INT_VAR match_opcode = 12 opcode = 206 parameter1 = 0 parameter2 = 0 timing = 10 duration = 2 dicenumber = 0 dicesize = 0 STR_VAR insert = last resource = EVAL ~%SOURCE_RES%~ END // clone damage into 2 ticks of immunity + BUT_ONLY + END + END + DEFAULT + LPF ALTER_EFFECT INT_VAR match_opcode = 12 power = pow END + LPF CLONE_EFFECT INT_VAR match_opcode = 12 opcode = 206 parameter1 = 0 parameter2 = 0 timing = 10 duration = 2 dicenumber = 0 dicesize = 0 STR_VAR insert = last resource = EVAL ~%SOURCE_RES%~ END // clone damage into 2 ticks of immunity + END BUT_ONLY IF_EXISTS END \ No newline at end of file diff --git a/eefixpack/files/tph/tbd_vfx_removal_bg.tph b/eefixpack/files/tph/tbd_vfx_removal_bg.tph index ca4416b0..e7e0eec0 100644 --- a/eefixpack/files/tph/tbd_vfx_removal_bg.tph +++ b/eefixpack/files/tph/tbd_vfx_removal_bg.tph @@ -1259,7 +1259,7 @@ COPY_EXISTING ~amul22.itm~ ~override~ // Periapt of Proof Against Poison - cur ~potn47.itm~ ~override~ // Marek's Potion of Antidote - cures poison ~potnmare.itm~ ~override~ // Marek's Potion of Antidote - cures poison ~scrl08.itm~ ~override~ // Protection From Poison - cures poison - unknown long effect - portrait icon 30 - unknown long effect - plays sound EFF_E04 - ~spin102.spl~ ~override~ // Slow Poison - cures drunkenness poison + //~spin102.spl~ ~override~ // Slow Poison - cures drunkenness poison [Luke: changed from cure poison to slow poison] ~spin679.spl~ ~override~ // Heal - cures blind deafness disease drunkenness feeblemind poison ~spin699.spl~ ~override~ // Healing Lick - cures blind deafness disease poison ~spin711.spl~ ~override~ // Heal - cures blind deafness disease drunkenness feeblemind poison From d03f7b195dd3fa75d5b1f5cae69a08f66dd2db51 Mon Sep 17 00:00:00 2001 From: 4Luke4 Date: Mon, 7 Apr 2025 18:15:02 +0200 Subject: [PATCH 11/12] Update tbd_vfx_removal_bg.tph --- eefixpack/files/tph/tbd_vfx_removal_bg.tph | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/eefixpack/files/tph/tbd_vfx_removal_bg.tph b/eefixpack/files/tph/tbd_vfx_removal_bg.tph index e7e0eec0..36536bda 100644 --- a/eefixpack/files/tph/tbd_vfx_removal_bg.tph +++ b/eefixpack/files/tph/tbd_vfx_removal_bg.tph @@ -317,12 +317,12 @@ END COPY_EXISTING "cd003g.spl" "override" LPF DELETE_EFFECT END LPF ADD_SPELL_EFFECT INT_VAR opcode = 24 target = 2 duration = 18 END // add panic [moondog] - LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 142 parameter2 = 36 END // add 'panic' icon [moond2] - LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 215 parameter2 = 1 STR_VAR resource = cdhorror END // play animation [moond4] - LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 50 duration = 1 parameter1 = ((255 >> 32) + (195 >> 16) + 123) parameter2 = 1 END // color pulse [moond5] - LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 106 duration = 1 parameter1 = 20 parameter2 = 1 END // set morale break [moond7] - LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 139 timing = 1 duration = 0 parameter1 = 14007 END // add 'panic' string [moond1] - LPF CLONE_EFFECT INT_VAR match_opcode = 139 opcode = 174 parameter2 = 0 STR_VAR resource = eff_m07 END // play sound [moond3] + LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 142 parameter2 = 36 STR_VAR insert = below END // add 'panic' icon [moond2] + LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 215 parameter2 = 1 STR_VAR resource = cdhorror insert = below END // play animation [moond4] + LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 50 duration = 1 parameter1 = ((255 >> 32) + (195 >> 16) + 123) parameter2 = 1 STR_VAR insert = below END // color pulse [moond5] + LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 106 duration = 1 parameter1 = 20 parameter2 = 1 STR_VAR insert = below END // set morale break [moond7] + LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 139 timing = 1 duration = 0 parameter1 = 14007 STR_VAR insert = below END // add 'panic' string [moond1] + LPF CLONE_EFFECT INT_VAR match_opcode = 139 opcode = 174 parameter2 = 0 STR_VAR resource = eff_m07 insert = below END // play sound [moond3] LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 318 parameter1 = panic_immunity parameter2 = 110 timing = 0 duration = 0 resist_dispel = 0 STR_VAR insert = first resource = EVAL ~%DEST_RES%~ END LPF CLONE_EFFECT INT_VAR match_opcode = 139 opcode = 12 parameter1 = 5 STR_VAR insert = first END // damage [moond8] LPF CLONE_EFFECT INT_VAR match_opcode = 12 match_timing = 1 timing = 4 duration = 6 END // delayed damage 1 [moond8] @@ -330,7 +330,7 @@ COPY_EXISTING "cd003g.spl" "override" // replace effs aimed at mask_evil to a single 326 that calls spin891a instead COPY_EXISTING ~spin891.spl~ ~override~ // Moon Dog Howl - cures fear - causes fear - LPF ALTER_EFFECT INT_VAR multi_match = 1 match_opcode = 326 match_parameter1 = panic_immunity match_parameter2 = 111 opcode = 326 parameter1 = 0 parameter2 = 37 timing = 1 duration = 0 STR_VAR resource = spin891a END + LPF ALTER_EFFECT INT_VAR multi_match = 1 match_opcode = 326 match_parameter1 = panic_immunity match_parameter2 = 111 opcode = 326 parameter1 = 0 parameter2 = 37 timing = 1 duration = 0 STR_VAR resource = cd003g END LPF DELETE_EFFECT INT_VAR match_opcode = 177 match_parameter1 = 3 match_parameter2 = 8 END LPF DELETE_EFFECT INT_VAR match_opcode = 321 STR_VAR match_resource = spin891 END // delete out of stack LPF CLONE_EFFECT INT_VAR multi_match = 1 match_opcode = 161 opcode = 321 parameter2 = 0 STR_VAR insert = first resource = spin891 END // insert back at top of stack From ec9af84373730538e28c1b259dba0807b4bb62fc Mon Sep 17 00:00:00 2001 From: 4Luke4 Date: Mon, 7 Apr 2025 18:15:05 +0200 Subject: [PATCH 12/12] Update tbd_vfx_removal_bg2.tph --- eefixpack/files/tph/tbd_vfx_removal_bg2.tph | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/eefixpack/files/tph/tbd_vfx_removal_bg2.tph b/eefixpack/files/tph/tbd_vfx_removal_bg2.tph index 558d68b4..3c0baf4f 100644 --- a/eefixpack/files/tph/tbd_vfx_removal_bg2.tph +++ b/eefixpack/files/tph/tbd_vfx_removal_bg2.tph @@ -252,12 +252,12 @@ COPY_EXISTING ~potn23.itm~ ~override~ // Oil of Speed - causes feeblemind - po COPY_EXISTING "cd004u.spl" "override" LPF DELETE_EFFECT END LPF ADD_SPELL_EFFECT INT_VAR opcode = 24 target = 2 duration = 18 END // add panic [moondog] - LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 142 parameter2 = 36 END // add 'panic' icon [moond2] - LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 215 parameter2 = 1 STR_VAR resource = cdhorror END // play animation [moond4] - LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 50 duration = 1 parameter1 = ((255 >> 32) + (195 >> 16) + 123) parameter2 = 1 END // color pulse [moond5] - LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 106 duration = 1 parameter1 = 20 parameter2 = 1 END // set morale break [moond7] - LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 139 timing = 1 duration = 0 parameter1 = 14007 END // add 'panic' string [moond1] - LPF CLONE_EFFECT INT_VAR match_opcode = 139 opcode = 174 parameter2 = 0 STR_VAR resource = eff_m07 END // play sound [moond3] + LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 142 parameter2 = 36 STR_VAR insert = below END // add 'panic' icon [moond2] + LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 215 parameter2 = 1 STR_VAR resource = cdhorror insert = below END // play animation [moond4] + LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 50 duration = 1 parameter1 = ((255 >> 32) + (195 >> 16) + 123) parameter2 = 1 STR_VAR insert = below END // color pulse [moond5] + LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 106 duration = 1 parameter1 = 20 parameter2 = 1 STR_VAR insert = below END // set morale break [moond7] + LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 139 timing = 1 duration = 0 parameter1 = 14007 STR_VAR insert = below END // add 'panic' string [moond1] + LPF CLONE_EFFECT INT_VAR match_opcode = 139 opcode = 174 parameter2 = 0 STR_VAR resource = eff_m07 insert = below END // play sound [moond3] LPF CLONE_EFFECT INT_VAR match_opcode = 24 opcode = 318 parameter1 = panic_immunity parameter2 = 110 timing = 0 duration = 0 resist_dispel = 0 STR_VAR insert = first resource = EVAL ~%DEST_RES%~ END LPF CLONE_EFFECT INT_VAR match_opcode = 139 opcode = 12 parameter1 = 5 STR_VAR insert = first END // damage [moond8] LPF CLONE_EFFECT INT_VAR match_opcode = 12 match_timing = 1 timing = 4 duration = 6 END // delayed damage 1 [moond8] @@ -265,7 +265,7 @@ COPY_EXISTING "cd004u.spl" "override" // replace effs aimed at mask_evil to a single 326 that calls spin891a instead COPY_EXISTING ~spin891.spl~ ~override~ // Moon Dog Howl - cures fear - causes fear - LPF ALTER_EFFECT INT_VAR multi_match = 1 match_opcode = 326 match_parameter1 = panic_immunity match_parameter2 = 111 opcode = 326 parameter1 = 0 parameter2 = 37 timing = 1 duration = 0 STR_VAR resource = spin891a END + LPF ALTER_EFFECT INT_VAR multi_match = 1 match_opcode = 326 match_parameter1 = panic_immunity match_parameter2 = 111 opcode = 326 parameter1 = 0 parameter2 = 37 timing = 1 duration = 0 STR_VAR resource = cd004u END LPF DELETE_EFFECT INT_VAR match_opcode = 177 match_parameter1 = 3 match_parameter2 = 8 END LPF DELETE_EFFECT INT_VAR match_opcode = 321 STR_VAR match_resource = spin891 END // delete out of stack LPF CLONE_EFFECT INT_VAR multi_match = 1 match_opcode = 161 opcode = 321 parameter2 = 0 STR_VAR insert = first resource = spin891 END // insert back at top of stack