Skip to content

Commit ac698f2

Browse files
committed
Update function library
1 parent cfdf122 commit ac698f2

31 files changed

+2157
-2349
lines changed

eefixpack/files/lib/gt_7eyes-o-matic.tph

-901
This file was deleted.

eefixpack/files/lib/gt_7eyes.tph

+377-387
Large diffs are not rendered by default.

eefixpack/files/lib/gt_functions.tph

+93
Original file line numberDiff line numberDiff line change
@@ -481,4 +481,97 @@ BEGIN
481481
END
482482
OUTER_SET "count" += 1
483483
END
484+
END
485+
486+
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
487+
// Language-independant version of WeiDU's native GET_STRREF
488+
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
489+
490+
DEFINE_DIMORPHIC_FUNCTION "GT_GET_STRING"
491+
INT_VAR
492+
"strref" = 0
493+
RET
494+
"string"
495+
BEGIN
496+
OUTER_TEXT_SPRINT "string" ""
497+
COPY - "lang\en_us\dialog.tlk" "override"
498+
READ_LONG 0xE "base_off" // Offset to base data
499+
READ_LONG (0x12 + 0x12 + ("%strref%" * 0x1A)) "off" // Relative offset of current string
500+
READ_LONG (0x12 + 0x16 + ("%strref%" * 0x1A)) "length" // Length of this string
501+
READ_ASCII ("%base_off%" + "%off%") "string" ("%length%")
502+
BUT_ONLY_IF_IT_CHANGES
503+
END
504+
505+
////////////////////////////////////////////////////////////////////////
506+
////////////////////////////////////////////////////////////////////////
507+
////////////////////////////////////////////////////////////////////////
508+
509+
DEFINE_PATCH_FUNCTION ~ADD_SPELL_ABILITY~
510+
INT_VAR
511+
~type~ = 1 // Melee (should be irrelevant for `spl` files...)
512+
~location~ = 4 // Ability (F13 button)
513+
~target~ = 1 // Living actor
514+
~#_targets~ = 0
515+
~range~ = 30 // Default visual range
516+
~minimum_level~ = 1
517+
~casting_speed~ = 0
518+
~projectile~ = IDS_OF_SYMBOL ("MISSILE" "None")
519+
//
520+
~copy_header~ = 0
521+
~insert_point~ = ~-1~ // insert last
522+
STR_VAR
523+
~icon~ = ~~
524+
RET
525+
~insert_point~
526+
BEGIN
527+
//LPF ~FJ_SPL_ITM_REINDEX~ END
528+
~hs~ = 0x28
529+
530+
READ_LONG 0x64 ~ho~
531+
READ_SHORT 0x68 ~hc~
532+
READ_LONG 0x6a ~eo~
533+
~insert_point~ = ("%insert_point%" > "%hc%" || "%insert_point%" < 0) ? "%hc%" : "%insert_point%"
534+
~copy_header~ = ("%copy_header%" < 0) ? 0 : "%copy_header%"
535+
536+
PATCH_IF "%copy_header%" > "%hc%" BEGIN
537+
PATCH_WARN ~Unable to copy %copy_header%th header, "%DEST_FILE%" contains only %hc% headers!~
538+
END ELSE BEGIN
539+
INSERT_BYTES ("%ho%" + "%insert_point%" * "%hs%") "%hs%"
540+
"hc" += 1
541+
"eo" += "%hs%"
542+
PATCH_IF "%copy_header%" BEGIN
543+
READ_SHORT ("%ho%" + ("%copy_header%" - 1) * "%hs%" + 0x1e) "ec"
544+
READ_SHORT ("%ho%" + ("%copy_header%" - 1) * "%hs%" + 0x20) "ei"
545+
READ_ASCII ("%eo%" + "%ei%" * 0x30) "effs" ("%ec%" * 0x30)
546+
READ_ASCII ("%ho%" + ("%copy_header%" - 1) * "%hs%") "copy" ("%hs%")
547+
WRITE_ASCII ("%ho%" + "%insert_point%" * "%hs%") ~%copy%~ ("%hs%")
548+
END
549+
WRITE_SHORT 0x68 "%hc%"
550+
WRITE_LONG 0x6a "%eo%"
551+
552+
READ_SHORT 0x70 "ei" // technically, it is a counter
553+
FOR ("i" = "%ho%" ; "%i%" < "%ho%" + "%hc%" * "%hs%" ; "i" += "%hs%") BEGIN
554+
READ_SHORT "%i%" + 0x1e "ec"
555+
WRITE_SHORT "%i%" + 0x20 "%ei%"
556+
"ei" += "%ec%"
557+
END
558+
559+
PATCH_IF "%copy_header%" BEGIN
560+
READ_SHORT ("%ho%" + "%insert_point%" * "%hs%" + 0x1e) "ec"
561+
READ_SHORT ("%ho%" + "%insert_point%" * "%hs%" + 0x20) "ei"
562+
INSERT_BYTES ("%eo%" + "%ei%" * 0x30) ("%ec%" * 0x30)
563+
WRITE_ASCII ("%eo%" + "%ei%" * 0x30) ~%effs%~ ("%ec%" * 0x30)
564+
END ELSE BEGIN
565+
"off" = "%ho%" + "%insert_point%" * "%hs%"
566+
WRITE_BYTE "%off%" "%type%"
567+
WRITE_SHORT ("%off%" + 0x2) "%location%"
568+
WRITE_ASCII ("%off%" + 0x4) ~%icon%~ #8
569+
WRITE_BYTE ("%off%" + 0xc) "%target%"
570+
WRITE_BYTE ("%off%" + 0xd) "%#_targets%"
571+
WRITE_SHORT ("%off%" + 0xe) "%range%"
572+
WRITE_SHORT ("%off%" + 0x10) "%minimum_level%"
573+
WRITE_SHORT ("%off%" + 0x12) "%casting_speed%"
574+
WRITE_SHORT ("%off%" + 0x26) "%projectile%"
575+
END
576+
END
484577
END

eefixpack/files/tph/bg2ee.tph

+26-15
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,15 @@ WITH_SCOPE BEGIN
129129
END
130130
END
131131

132+
/*
133+
luke
134+
"7eyes.2da" vs. SPL/ITM files
135+
*/
136+
WITH_SCOPE BEGIN
137+
INCLUDE "eefixpack/files/tph/luke/7eyes/7eyes.tph"
138+
LAUNCH_ACTION_FUNCTION "7EYES" END
139+
END
140+
132141
/*
133142
luke
134143
**Wing Buffet vs. MR**
@@ -1449,11 +1458,23 @@ WITH_SCOPE BEGIN
14491458
/* Extended Header */
14501459
LPF "ALTER_SPELL_HEADER" INT_VAR "projectile" = IDS_OF_SYMBOL ("MISSILE" "Chain_Insect") END
14511460
PATCH_WITH_SCOPE BEGIN
1452-
SET "parameter2" = IDS_OF_SYMBOL ("STATS" "CLERIC_INSECT_PLAGUE")
14531461
GET_OFFSET_ARRAY "ab_array" SPL_V10_HEADERS
1454-
PHP_EACH "ab_array" AS "hdr" => "ab_off" BEGIN
1455-
LPF "COUNT_V10_HEAD_EFFECTS" STR_VAR "opcode" = "233" "parameter2" RET "count" END
1456-
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
1462+
PHP_EACH "ab_array" AS "ab_ind" => "ab_off" BEGIN
1463+
SET "found" = 0
1464+
GET_OFFSET_ARRAY2 "fx_array" "%ab_off%" SPL_V10_HEAD_EFFECTS
1465+
PHP_EACH "fx_array" AS "fx_ind" => "fx_off" BEGIN
1466+
PATCH_MATCH SHORT_AT "%fx_off%" WITH
1467+
233 WHEN (LONG_AT ("%fx_off%" + 0x8) == IDS_OF_SYMBOL ("STATS" "CLERIC_INSECT_PLAGUE")) BEGIN
1468+
PATCH_IF !("%found%") BEGIN
1469+
SET "found" = 1
1470+
END ELSE BEGIN
1471+
WRITE_SHORT "%fx_off%" 999 // mark it for later deletion
1472+
END
1473+
END
1474+
DEFAULT
1475+
END
1476+
END
1477+
LPF ~DELETE_EFFECT~ INT_VAR ~match_opcode~ = 999 ~check_globals~ = 0 ~header~ = ~%ab_ind%~ END
14571478
END
14581479
END
14591480
BUT_ONLY_IF_IT_CHANGES
@@ -1585,14 +1606,4 @@ END
15851606

15861607
INCLUDE ~eefixpack/files/lib/cd_effect_batches_functions.tpa~ // function for effect batches
15871608
INCLUDE ~eefixpack/files/lib/cd_effect_batches_arrays_bg_bg2_iwd.tpa~ // array definitions for effect batches
1588-
INCLUDE ~eefixpack/files/tph/tbd_vfx_removal_bg2.tph~ // use effect batches to remove vfx from effects which have been removed
1589-
1590-
/*
1591-
luke
1592-
**"7eyes.2da" vs. SPL/ITM files**
1593-
- See "https://github.com/Gibberlings3/EE_Fixpack/pull/23" for further details
1594-
*/
1595-
WITH_SCOPE BEGIN
1596-
INCLUDE "eefixpack\files\lib\gt_7eyes-o-matic.tph"
1597-
LAF "GT_7EYES-O-MATIC" END
1598-
END
1609+
INCLUDE ~eefixpack/files/tph/tbd_vfx_removal_bg2.tph~ // use effect batches to remove vfx from effects which have been removed

eefixpack/files/tph/bgee.tph

+10-11
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,15 @@ WITH_SCOPE BEGIN
218218
END
219219
END
220220

221+
/*
222+
luke
223+
"7eyes.2da" vs. SPL/ITM files
224+
*/
225+
WITH_SCOPE BEGIN
226+
INCLUDE "eefixpack/files/tph/luke/7eyes/7eyes.tph"
227+
LAUNCH_ACTION_FUNCTION "7EYES" END
228+
END
229+
221230
/*
222231
luke
223232
**Wing Buffet vs. MR**
@@ -1923,14 +1932,4 @@ END
19231932

19241933
INCLUDE ~eefixpack/files/lib/cd_effect_batches_functions.tpa~ // function for effect batches
19251934
INCLUDE ~eefixpack/files/lib/cd_effect_batches_arrays_bg_bg2_iwd.tpa~ // array definitions for effect batches
1926-
INCLUDE ~eefixpack/files/tph/tbd_vfx_removal_bg.tph~ // use effect batches to remove vfx from effects which have been removed
1927-
1928-
/*
1929-
luke
1930-
**"7eyes.2da" vs. SPL/ITM files**
1931-
- See "https://github.com/Gibberlings3/EE_Fixpack/pull/23" for further details
1932-
*/
1933-
WITH_SCOPE BEGIN
1934-
INCLUDE "eefixpack\files\lib\gt_7eyes-o-matic.tph"
1935-
LAF "GT_7EYES-O-MATIC" END
1936-
END
1935+
INCLUDE ~eefixpack/files/tph/tbd_vfx_removal_bg.tph~ // use effect batches to remove vfx from effects which have been removed

eefixpack/files/tph/dw_fixes.tph

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ LAF declutter INT_VAR write END
2525
// Rearrange various orderings of effects; extract various effect blocks to subspells
2626
// (Prepares for other changes, notably immunities_via_324)
2727

28-
INCLUDE "%library_path%/rearrange_itm_spl.tph"
29-
LAF rearrange_itm_spl END
28+
//INCLUDE "%library_path%/rearrange_itm_spl.tph"
29+
//LAF rearrange_itm_spl END
3030

3131
// Sort out the various issues with 109/175/185 (this is the conservative bit)
3232

eefixpack/files/tph/iwdee.tph

+14-13
Original file line numberDiff line numberDiff line change
@@ -124,10 +124,10 @@ END
124124
luke
125125
"7eyes.2da" vs. SPL/ITM files
126126
*/
127-
/*WITH_SCOPE BEGIN
127+
WITH_SCOPE BEGIN
128128
INCLUDE "eefixpack/files/tph/luke/7eyes/7eyes.tph"
129129
LAUNCH_ACTION_FUNCTION "7EYES" END
130-
END*/
130+
END
131131

132132
/*
133133
luke
@@ -479,6 +479,17 @@ WITH_SCOPE BEGIN
479479
BUT_ONLY_IF_IT_CHANGES
480480
END
481481

482+
/*
483+
luke
484+
**Three White Doves +3**
485+
- Redone from scratch via op326 (instead of op177)
486+
- Fixed incorrect probability values
487+
*/
488+
WITH_SCOPE BEGIN
489+
INCLUDE "eefixpack/files/tph/luke/three_white_doves.tph"
490+
LAUNCH_ACTION_FUNCTION "THREE_WHITE_DOVES" END
491+
END
492+
482493
///// \\\\\
483494
///// spell fixes \\\\\
484495
///// \\\\\
@@ -989,14 +1000,4 @@ END
9891000

9901001
INCLUDE ~eefixpack/files/lib/cd_effect_batches_functions.tpa~ // function for effect batches
9911002
INCLUDE ~eefixpack/files/lib/cd_effect_batches_arrays_bg_bg2_iwd.tpa~ // array definitions for effect batches
992-
INCLUDE ~eefixpack/files/tph/tbd_vfx_removal_iwd.tph~ // use effect batches to remove vfx from effects which have been removed
993-
994-
/*
995-
luke
996-
**"7eyes.2da" vs. SPL/ITM files**
997-
- See "https://github.com/Gibberlings3/EE_Fixpack/pull/23" for further details
998-
*/
999-
WITH_SCOPE BEGIN
1000-
INCLUDE "eefixpack\files\lib\gt_7eyes-o-matic.tph"
1001-
LAF "GT_7EYES-O-MATIC" END
1002-
END
1003+
INCLUDE ~eefixpack/files/tph/tbd_vfx_removal_iwd.tph~ // use effect batches to remove vfx from effects which have been removed
+61-59
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,68 @@
1-
DEFINE_ACTION_FUNCTION "7EYES"
1+
DEFINE_ACTION_FUNCTION "7EYESification"
22
BEGIN
33
// Include function library
44
INCLUDE "eefixpack/files/lib/gt_7eyes.tph"
5-
// Main
6-
WITH_SCOPE BEGIN
7-
INCLUDE "eefixpack/files/tph/luke/7eyes/berserk.tph"
8-
LAF "BERSERK" END
5+
//
6+
ACTION_MATCH 1 WITH
7+
GAME_IS "bgee" BEGIN
8+
OUTER_TEXT_SPRINT "game_folder" "bg1"
9+
END
10+
GAME_IS "bg2ee eet" BEGIN
11+
OUTER_TEXT_SPRINT "game_folder" "bg2"
12+
END
13+
GAME_IS "iwdee" BEGIN
14+
OUTER_TEXT_SPRINT "game_folder" "iwd"
15+
END
16+
DEFAULT
17+
FAIL "Game not supported (should not happen)"
918
END
10-
WITH_SCOPE BEGIN
11-
INCLUDE "eefixpack/files/tph/luke/7eyes/charm_creature.tph"
12-
LAF "CHARM_CREATURE" END
19+
ACTION_DEFINE_ASSOCIATIVE_ARRAY "7eyes-o-matic" BEGIN
20+
// effectID , damageType , splState , opcodeExtra , feedbackString , feedbackIcon , feedbackVfx => 2daFile
21+
3 , "null" , "BERSERK_IMMUNITY" , "" , "Berzerk, Berserk" , "4" , "" => "berserk.2da"
22+
5 , "null" , "CHARM_IMMUNITY" , "" , "Charmed, Dire Charmed, Dominated, Turned" , "0 1 43" , "" => "charm.2da"
23+
12 , "fire" , "" , "" , "Bleeding, Suffers Bleeding Wound, Bleeding Wound, Deathbringer Assault" , "102 137" , "fireh firel" => "damage_fire.2da"
24+
12 , "cold" , "" , "" , "Bleeding, Suffers Bleeding Wound, Bleeding Wound, Deathbringer Assault" , "102 137" , "coldh coldl" => "damage_cold.2da"
25+
12 , "electricity" , "" , "" , "Bleeding, Suffers Bleeding Wound, Bleeding Wound, Deathbringer Assault" , "102 137" , "electrh electrl" => "damage_electricity.2da"
26+
12 , "acid" , "" , "" , "Bleeding, Suffers Bleeding Wound, Bleeding Wound, Deathbringer Assault" , "102 137" , "acidh" => "damage_acid.2da"
27+
12 , "missile" , "" , "" , "Bleeding, Suffers Bleeding Wound, Bleeding Wound, Deathbringer Assault" , "102 137" , "" => "damage_missile.2da"
28+
12 , "crushing" , "" , "" , "Bleeding, Suffers Bleeding Wound, Bleeding Wound, Deathbringer Assault" , "102 137" , "" => "damage_crushing.2da"
29+
12 , "slashing" , "" , "" , "Bleeding, Suffers Bleeding Wound, Bleeding Wound, Deathbringer Assault" , "102 137" , "" => "damage_slashing.2da"
30+
12 , "piercing" , "" , "" , "Bleeding, Suffers Bleeding Wound, Bleeding Wound, Deathbringer Assault" , "102 137" , "" => "damage_piercing.2da"
31+
24 , "null" , "PANIC_IMMUNITY" , "23 106" , "Panic, Morale Failure: Panic, *flees in terror*" , "36" , "cdhorror" => "panic.2da"
32+
38 , "null" , "SILENCE_IMMUNITY" , "" , "Silence, Silenced, Bard Song Silenced" , "34" , "" => "silence.2da"
33+
45 , "null" , "STUN_IMMUNITY" , "" , "Stun, Stunned" , "55" , "spflayer" => "stun.2da"
34+
74 , "null" , "BLIND_IMMUNITY" , "54" , "Blind, Blinded, Blindness" , "8" , "" => "blind.2da"
35+
76 , "null" , "FEEBLEMIND_IMMUNITY" , "" , "Feeblemind, Feebleminded, Feeblemindedness" , "48" , "" => "feeblemind.2da"
36+
80 , "null" , "DEAF_IMMUNITY" , "" , "Deaf, Deafened, Deafness" , "112" , "" => "deaf.2da"
37+
109 , "null" , "PARALYZE_IMMUNITY" , "157" , "Paralyzed, Paralysed, Held" , "13" , "" => "paralyze.2da"
38+
128 , "null" , "CONFUSION_IMMUNITY" , "" , "Confused, Rigid Thinking, Chaos" , "2 3 47" , "spconfus confush" => "confusion.2da"
39+
134 , "null" , "PETRIFY_IMMUNITY" , "" , "Petrification, Petrified" , "171" , "" => "petrify.2da"
40+
154 , "null" , "ENTANGLE_IMMUNITY" , "0 126" , "Entangle, Entangled" , "144" , "spentaci entangc" => "entangle.2da"
41+
157 , "null" , "WEB_IMMUNITY" , "109" , "Webbed, Held" , "129" , "webentd webc" => "web.2da"
42+
158 , "null" , "GREASE_IMMUNITY" , "126" , "Grease, Greased" , "145" , "greased greaseb" => "grease.2da"
43+
175 , "null" , "HOLD_IMMUNITY" , "" , "Held" , "13" , "spmindat ohnwand1" => "hold.2da"
44+
210 , "null" , "STUN_IMMUNITY" , "" , "Stun, Stunned" , "55" , "" => "power_word_stun.2da"
1345
END
14-
WITH_SCOPE BEGIN
15-
INCLUDE "eefixpack/files/tph/luke/7eyes/damage.tph"
16-
LAF "DAMAGE" END
17-
END
18-
WITH_SCOPE BEGIN
19-
INCLUDE "eefixpack/files/tph/luke/7eyes/panic.tph"
20-
LAF "PANIC" END
21-
END
22-
WITH_SCOPE BEGIN
23-
INCLUDE "eefixpack/files/tph/luke/7eyes/poison.tph"
24-
LAF "POISON" END
25-
END
26-
WITH_SCOPE BEGIN
27-
INCLUDE "eefixpack/files/tph/luke/7eyes/silence.tph"
28-
LAF "SILENCE" END
29-
END
30-
WITH_SCOPE BEGIN
31-
INCLUDE "eefixpack/files/tph/luke/7eyes/stun.tph"
32-
LAF "STUN" END
33-
END
34-
WITH_SCOPE BEGIN
35-
INCLUDE "eefixpack/files/tph/luke/7eyes/blindness.tph"
36-
LAF "BLINDNESS" END
37-
END
38-
WITH_SCOPE BEGIN
39-
INCLUDE "eefixpack/files/tph/luke/7eyes/feeblemindedness.tph"
40-
LAF "FEEBLEMINDEDNESS" END
41-
END
42-
WITH_SCOPE BEGIN
43-
INCLUDE "eefixpack/files/tph/luke/7eyes/deafness.tph"
44-
LAF "DEAFNESS" END
45-
END
46-
WITH_SCOPE BEGIN
47-
INCLUDE "eefixpack/files/tph/luke/7eyes/paralyze.tph"
48-
LAF "PARALYZE" END
49-
END
50-
WITH_SCOPE BEGIN
51-
INCLUDE "eefixpack/files/tph/luke/7eyes/confusion.tph"
52-
LAF "CONFUSION" END
53-
END
54-
WITH_SCOPE BEGIN
55-
INCLUDE "eefixpack/files/tph/luke/7eyes/petrification.tph"
56-
LAF "PETRIFICATION" END
57-
END
58-
WITH_SCOPE BEGIN
59-
INCLUDE "eefixpack/files/tph/luke/7eyes/hold_creature.tph"
60-
LAF "HOLD_CREATURE" END
61-
END
62-
WITH_SCOPE BEGIN
63-
INCLUDE "eefixpack/files/tph/luke/7eyes/power_word_stun.tph"
64-
LAF "POWER_WORD_STUN" END
46+
//
47+
ACTION_PHP_EACH "7eyes-o-matic" AS "key" => "2daFile" BEGIN
48+
ACTION_IF ("%key_2%" STRING_COMPARE_CASE "") BEGIN
49+
LAF "ADD_IDS_ENTRY" STR_VAR "idsFile" = "splstate" "identifier" = "%key_2%" RET "value" END
50+
END ELSE BEGIN
51+
OUTER_SET "value" = "-1"
52+
END
53+
//
54+
LAF "7EYES-O-MATIC"
55+
INT_VAR
56+
"splstate" = "%value%"
57+
"effectID" = "%key_0%"
58+
"damage_type" = IDS_OF_SYMBOL ("dmgtype" "%key_1%")
59+
STR_VAR
60+
"opcode_extra" = "%key_3%"
61+
"feedback_string" = "%key_4%"
62+
"feedback_icon" = "%key_5%"
63+
"feedback_vfx" = "%key_6%"
64+
//
65+
"2da_filespec" = "eefixpack\files\tph\luke\7eyes\%game_folder%\%2daFile%"
66+
END
6567
END
6668
END

0 commit comments

Comments
 (0)