diff --git a/TomeAndBlood/TomeAndBlood.tp2 b/TomeAndBlood/TomeAndBlood.tp2 index aac04ff..9d2a897 100755 --- a/TomeAndBlood/TomeAndBlood.tp2 +++ b/TomeAndBlood/TomeAndBlood.tp2 @@ -1,6 +1,6 @@ BACKUP ~TomeAndBlood/backup~ AUTHOR ~aquadrizzt~ -VERSION ~0.9.28~ +VERSION ~0.9.29~ ALWAYS diff --git a/TomeAndBlood/lib/fnp_compat.tpa b/TomeAndBlood/lib/fnp_compatibility.tpa similarity index 67% rename from TomeAndBlood/lib/fnp_compat.tpa rename to TomeAndBlood/lib/fnp_compatibility.tpa index 2eb0d91..c908545 100644 --- a/TomeAndBlood/lib/fnp_compat.tpa +++ b/TomeAndBlood/lib/fnp_compatibility.tpa @@ -1,4 +1,6 @@ +// 0.83.0 + //REMOVE BLANK LINES MACRO___________________________________________________________ // DEFINE_PATCH_MACRO ~remove_blank_lines~ BEGIN @@ -38,7 +40,7 @@ ACTION_DEFINE_ASSOCIATIVE_ARRAY d5_fnp_spheres BEGIN Light => 0 Shadow => 0 Magic => 0 - Perdition => 0 + Astral => 0 END ACTION_DEFINE_ASSOCIATIVE_ARRAY d5_fnp_usable BEGIN @@ -144,7 +146,7 @@ DEFINE_ACTION_FUNCTION ~DEFINE_FNP_KIT_INFO~ s_Light = ~x~ s_Shadow = ~x~ s_Magic = ~x~ - s_Perdition = ~x~ + s_Astral = ~x~ BEGIN PRINT ~Defining Faiths and Powers info for kit %clab_name% ...~ @@ -198,10 +200,15 @@ ALL <<<<<<<< d5/d5_spher.2da 2DA V1.0 0 - Life Death Benediction Destruction Protection War Exploration Knowledge Deception Thought Dread Vigor Affliction Animal Plant Earth Water Air Fire Light Shadow Magic Perdition + Life Death Benediction Destruction Protection War Exploration Knowledge Deception Thought Dread Vigor Affliction Animal Plant Earth Water Air Fire Light Shadow Magic Astral >>>>>>>> COPY ~d5/d5_spher.2da~ ~override/d5_spher.2da~ END + ACTION_IF (FILE_EXISTS_IN_GAME ~d5_spher.2da~) BEGIN + COPY_EXISTING ~d5_spher.2da~ ~override~ + REPLACE_TEXTUALLY ~[ %TAB%]Perdition~ ~%TAB%Astral~ + BUT_ONLY + END ACTION_IF !(FILE_CONTAINS_EVALUATED (~d5_class.2da~ ~%clab_name%~)) BEGIN ACTION_IF !(~%sphere_list%~ STRING_EQUAL_CASE ~custom~) BEGIN @@ -334,9 +341,9 @@ ALL OUTER_SPRINT s_Magic ~%kit_access%~ END END - ACTION_IF (~%new_variable%~ STRING_EQUAL_CASE ~Perdition~) BEGIN - ACTION_IF (~%s_Perdition%~ STRING_EQUAL_CASE ~x~) BEGIN - OUTER_SPRINT s_Perdition ~%kit_access%~ + ACTION_IF (~%new_variable%~ STRING_EQUAL_CASE ~Astral~) BEGIN + ACTION_IF (~%s_Astral%~ STRING_EQUAL_CASE ~x~) BEGIN + OUTER_SPRINT s_Astral ~%kit_access%~ END END END @@ -346,7 +353,7 @@ ALL // define the text that will be added to the files OUTER_TEXT_SPRINT class_text ~%clab_name% %class% %sphere_list% %multiclass%~ OUTER_TEXT_SPRINT usable_text ~%clab_name% %u_leather_armor% %u_chain_armor% %u_plate_armor% %u_club_staff% %u_hammers% %u_maces% %u_flails% %u_axes% %u_daggers% %u_short_swords% %u_long_swords% %u_scimitars% %u_katanas% %u_bastard_swords% %u_2hand_swords% %u_halberds% %u_spears% %u_darts% %u_slings% %u_bows% %u_crossbows%~ - OUTER_TEXT_SPRINT sphere_text ~%clab_name% %s_Life% %s_Death% %s_Benediction% %s_Destruction% %s_Protection% %s_War% %s_Exploration% %s_Knowledge% %s_Deception% %s_Thought% %s_Dread% %s_Vigor% %s_Affliction% %s_Animal% %s_Plant% %s_Earth% %s_Water% %s_Air% %s_Fire% %s_Light% %s_Shadow% %s_Magic% %s_Perdition%~ + OUTER_TEXT_SPRINT sphere_text ~%clab_name% %s_Life% %s_Death% %s_Benediction% %s_Destruction% %s_Protection% %s_War% %s_Exploration% %s_Knowledge% %s_Deception% %s_Thought% %s_Dread% %s_Vigor% %s_Affliction% %s_Animal% %s_Plant% %s_Earth% %s_Water% %s_Air% %s_Fire% %s_Light% %s_Shadow% %s_Magic% %s_Astral%~ // uppercase text ACTION_TO_UPPER class_text @@ -390,7 +397,7 @@ DEFINE_ACTION_MACRO ~READ_FNP_KIT_INFO~ BEGIN FOR (col = 0; col < (num_cols - 1); col += 1) BEGIN READ_2DA_ENTRY_FORMER ~r2en_d5_usable~ 0 col usable READ_2DA_ENTRY_FORMER ~r2en_d5_usable~ row (col + 1) access - TEXT_SPRINT $d5_fnp_kit_usable_access(~%kit%~ ~%usable%~) ~%access%~ + TEXT_SPRINT $d5_fnp_kit_usable_access(~%usable%~ ~%kit%~) ~%access%~ END END @@ -417,9 +424,9 @@ DEFINE_ACTION_FUNCTION ~DISPLAY_FNP_KIT_INFO~ BEGIN PRINT ~ CLASS: %class%~ PRINT ~ USABILITY:~ ACTION_PHP_EACH d5_fnp_usable AS usable => val BEGIN - ACTION_IF (VARIABLE_IS_SET $d5_fnp_kit_usable_access(~%kit%~ ~%usable%~)) BEGIN - OUTER_TEXT_SPRINT access $d5_fnp_kit_usable_access(~%kit%~ ~%usable%~) - ACTION_IF (IS_AN_INT access && access == 1) BEGIN + ACTION_IF (VARIABLE_IS_SET $d5_fnp_kit_usable_access(~%usable%~ ~%kit%~)) BEGIN + OUTER_TEXT_SPRINT access $d5_fnp_kit_usable_access(~%usable%~ ~%kit%~) + ACTION_IF (IS_AN_INT access && access > 0) BEGIN PRINT ~ %usable%: %access%~ END END @@ -440,8 +447,20 @@ END //ADD FnP SPHERES TO MOD KIT_________________________________________________________ // -DEFINE_ACTION_MACRO apply_fnp_spheres BEGIN - INCLUDE ~faiths_and_powers/lib/qd_multiclass.tpa~ +DEFINE_ACTION_FUNCTION apply_fnp_spheres STR_VAR clab_name = ~x~ BEGIN + + LAM ~READ_FNP_KIT_INFO~ + + COPY_EXISTING ~d5_class.2da~ ~override~ + READ_2DA_ENTRIES_NOW ~r2en_d5_class~ 2 + FOR (row = 1; row < r2en_d5_class; row += 1) BEGIN + READ_2DA_ENTRY_FORMER ~r2en_d5_class~ row 0 kit + READ_2DA_ENTRY_FORMER ~r2en_d5_class~ row 1 type + TEXT_SPRINT $d5_fnp_kit_caster_type(~%kit%~) ~%type%~ + END + BUT_ONLY + + INCLUDE ~%MOD_FOLDER%/lib/qd_multiclass.tpa~ OUTER_SPRINT sphere_access ~- Access to the spheres of:~ OUTER_SPRINT focus_access ~- Focus access to the spheres of:~ OUTER_SPRINT major_access ~- Major access to the spheres of:~ @@ -457,16 +476,29 @@ DEFINE_ACTION_MACRO apply_fnp_spheres BEGIN OUTER_TEXT_SPRINT ranger_sphere_list ~~ OUTER_TEXT_SPRINT total_sphere_list ~~ - ACTION_IF (NOT VARIABLE_IS_SET ~mod_clab~) BEGIN + ACTION_IF (VARIABLE_IS_SET %clab_name%) AND !(~%clab_name%~ STRING_EQUAL_CASE ~x~) BEGIN + OUTER_SPRINT mod_clab ~%clab_name%~ + END + ACTION_IF !(VARIABLE_IS_SET %mod_clab%) BEGIN COPY_EXISTING ~d5_class.2da~ ~override~ COUNT_2DA_ROWS 2 rows READ_2DA_ENTRY (rows - 1) 0 2 last_clab BUT_ONLY - OUTER_TEXT_SPRINT mod_clab ~%last_clab%~ + PRINT ~%last_clab%~ + OUTER_SPRINT mod_clab ~%last_clab%~ END + COPY_EXISTING ~d5_class.2da~ ~override~ + READ_2DA_ENTRIES_NOW ~r2en_d5_class~ 2 + FOR (row = 1; row < r2en_d5_class; row += 1) BEGIN + READ_2DA_ENTRY_FORMER ~r2en_d5_class~ row 0 kit + PATCH_IF (~%kit%~ STRING_EQUAL_CASE ~%mod_clab%~) BEGIN + READ_2DA_ENTRY_FORMER ~r2en_d5_class~ row 1 caster_type + END + END + BUT_ONLY + COPY_EXISTING ~kitlist.2da~ ~override~ -// COUNT_2DA_COLS cols READ_2DA_ENTRIES_NOW ~r2en_kitlist~ 10 FOR (row = 3; row < r2en_kitlist; row += 1) BEGIN READ_2DA_ENTRY_FORMER ~r2en_kitlist~ row 5 kit_clab @@ -479,12 +511,6 @@ DEFINE_ACTION_MACRO apply_fnp_spheres BEGIN END END BUT_ONLY - ACTION_IF (%kit_class% = 3) BEGIN - ACTION_IF (FILE_EXISTS_IN_GAME ~d5__cleric_umd.d5~) && !(FILE_CONTAINS_EVALUATED (~%mod_clab%.2da~ ~AP_D5_UMD~)) BEGIN - APPEND ~%mod_clab%.2da~ ~UMD AP_D5_NUMD **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ~ - UNLESS ~AP_D5_NUMD~ - END - END ACTION_IF (%kit_class% = 3) OR (%kit_class% = 11) OR (%kit_class% = 8) OR @@ -495,165 +521,205 @@ DEFINE_ACTION_MACRO apply_fnp_spheres BEGIN REPLACE_TEXTUALLY ~^\(%kit_label%[ %TAB%]+\).+$~ ~\1b_%kit_index%~ BUT_ONLY END - COPY ~faiths_and_powers/spheres/hlas/luclxyz.2da~ ~override/lub_%kit_index%.2da~ + COPY ~faiths_and_powers/data/hlas/luclxyz.2da~ ~override/lub_%kit_index%.2da~ ACTION_IF (%kit_class% = 11) BEGIN // druid - COPY ~faiths_and_powers/spheres/hlas/ludrxyz.2da~ ~override/lub_%kit_index%.2da~ + COPY ~faiths_and_powers/data/hlas/ludrxyz.2da~ ~override/lub_%kit_index%.2da~ END ACTION_IF (%kit_class% = 8) BEGIN // f/c - COPY ~faiths_and_powers/spheres/hlas/lufcxyz.2da~ ~override/lub_%kit_index%.2da~ + COPY ~faiths_and_powers/data/hlas/lufcxyz.2da~ ~override/lub_%kit_index%.2da~ END ACTION_IF (%kit_class% = 18) BEGIN // c/r - COPY ~faiths_and_powers/spheres/hlas/lucrxyz.2da~ ~override/lub_%kit_index%.2da~ + COPY ~faiths_and_powers/data/hlas/lucrxyz.2da~ ~override/lub_%kit_index%.2da~ END ACTION_IF (%kit_class% = 15) BEGIN // c/t - COPY ~faiths_and_powers/spheres/hlas/luctxyz.2da~ ~override/lub_%kit_index%.2da~ + COPY ~faiths_and_powers/data/hlas/luctxyz.2da~ ~override/lub_%kit_index%.2da~ END ACTION_IF (%kit_class% = 14) BEGIN // c/m - COPY ~faiths_and_powers/spheres/hlas/lucmxyz.2da~ ~override/lub_%kit_index%.2da~ + COPY ~faiths_and_powers/data/hlas/lucmxyz.2da~ ~override/lub_%kit_index%.2da~ END - ACTION_PHP_EACH d5_fnp_spheres AS sphere => val BEGIN - ACTION_IF !(FILE_EXISTS_IN_GAME ~d5altsph.2da~) BEGIN - OUTER_SPRINT ~text_sphere~ ~%sphere%~ - END - ACTION_IF (FILE_EXISTS_IN_GAME ~d5altsph.2da~) BEGIN - COPY_EXISTING ~d5altsph.2da~ ~override~ - READ_2DA_ENTRIES_NOW rows 2 - FOR (row = 0; row < rows; ++row) BEGIN - READ_2DA_ENTRY_FORMER rows row 0 ~fnp_sphere~ - READ_2DA_ENTRY_FORMER rows row 1 ~alt_sphere~ - PATCH_IF (~%sphere%~ STRING_EQUAL_CASE ~%fnp_sphere%~) BEGIN - SPRINT ~text_sphere~ ~%alt_sphere%~ + ACTION_PHP_EACH d5_fnp_kits AS ind => kit BEGIN + ACTION_IF (~%kit%~ STRING_EQUAL_CASE ~%mod_clab%~) BEGIN + ACTION_PHP_EACH d5_fnp_spheres AS sphere => val BEGIN + COPY_EXISTING ~d5altsph.2da~ ~override~ + READ_2DA_ENTRIES_NOW rows 2 + FOR (row = 0; row < rows; ++row) BEGIN + READ_2DA_ENTRY_FORMER rows row 0 ~fnp_sphere~ + READ_2DA_ENTRY_FORMER rows row 1 ~alt_sphere~ + PATCH_IF (~%sphere%~ STRING_EQUAL_CASE ~%fnp_sphere%~) BEGIN + SPRINT ~text_sphere~ ~%alt_sphere%~ + END END - END - BUT_ONLY - END - ACTION_IF (VARIABLE_IS_SET $d5_fnp_kit_sphere_access(~%sphere%~ ~%mod_clab%~)) BEGIN - OUTER_TEXT_SPRINT access $d5_fnp_kit_sphere_access(~%sphere%~ ~%mod_clab%~) - OUTER_INNER_PATCH ~%sphere%~ BEGIN - SNPRINT 3 ~shortsphere~ ~%sphere%~ - END - ACTION_IF (VARIABLE_IS_SET $d5_fnp_sphere_access(~%access%~) && ~%access%~ STRING_EQUAL_CASE ~FOCUS~) BEGIN - COPY_EXISTING ~lub_%kit_index%.2da~ ~override~ - LPM remove_blank_lines - APPEND_FILE ~faiths_and_powers/spheres/hlas/%sphere%/hlas_%sphere%.txt~ - BUT_ONLY - COPY_EXISTING ~lub_%kit_index%.2da~ ~override~ - REPLACE_TEXTUALLY ~[%LNL%%MNL%%WNL%]zzz~ ~~ - BUT_ONLY - APPEND ~%mod_clab%.2da~ ~SPHERES AP_D5SF%shortsphere% **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ~ - OUTER_TEXT_SPRINT focus_sphere_list ~%focus_sphere_list% %text_sphere%~ - END - ACTION_IF (VARIABLE_IS_SET $d5_fnp_sphere_access(~%access%~) && ~%access%~ STRING_EQUAL_CASE ~MAJOR~) BEGIN - COPY_EXISTING ~lub_%kit_index%.2da~ ~override~ - LPM remove_blank_lines - APPEND_FILE ~faiths_and_powers/spheres/hlas/%sphere%/hlas_%sphere%.txt~ - BUT_ONLY - COPY_EXISTING ~lub_%kit_index%.2da~ ~override~ - REPLACE_TEXTUALLY ~[%LNL%%MNL%%WNL%]zzz~ ~~ BUT_ONLY - APPEND ~%mod_clab%.2da~ ~SPHERES AP_D5SP%shortsphere% **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ~ - OUTER_TEXT_SPRINT major_sphere_list ~%major_sphere_list% %text_sphere%,~ - END - ACTION_IF (VARIABLE_IS_SET $d5_fnp_sphere_access(~%access%~) && ~%access%~ STRING_EQUAL_CASE ~MINOR~) BEGIN - APPEND ~%mod_clab%.2da~ ~SPHERES AP_D5SM%shortsphere% **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ~ - OUTER_TEXT_SPRINT minor_sphere_list ~%minor_sphere_list% %text_sphere%,~ - END - ACTION_IF (VARIABLE_IS_SET $d5_fnp_sphere_access(~%access%~) && ~%access%~ STRING_EQUAL_CASE ~PALADIN~) BEGIN - APPEND ~%mod_clab%.2da~ ~SPHERES AP_D5SP%shortsphere% **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ~ - OUTER_TEXT_SPRINT minor_sphere_list ~%minor_sphere_list% %text_sphere%,~ - END - ACTION_IF (VARIABLE_IS_SET $d5_fnp_sphere_access(~%access%~) && ~%access%~ STRING_EQUAL_CASE ~RANGER~) BEGIN - APPEND ~%mod_clab%.2da~ ~SPHERES AP_D5SP%shortsphere% **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ~ - OUTER_TEXT_SPRINT minor_sphere_list ~%minor_sphere_list% %text_sphere%,~ - END - END - END - ACTION_IF NOT (~%focus_sphere_list%~ STRING_EQUAL_CASE ~~) BEGIN - OUTER_TEXT_SPRINT focus_sphere_list ~%WNL%%focus_access%%focus_sphere_list%~ - END - OUTER_TEXT_SPRINT total_sphere_list ~%total_sphere_list%%focus_sphere_list%~ - ACTION_IF NOT (~%major_sphere_list%~ STRING_EQUAL_CASE ~~) BEGIN - OUTER_TEXT_SPRINT major_sphere_list ~%WNL%%major_access%%major_sphere_list%~ - END - OUTER_TEXT_SPRINT total_sphere_list ~%total_sphere_list%%major_sphere_list%~ - ACTION_IF NOT (~%minor_sphere_list%~ STRING_EQUAL_CASE ~~) BEGIN - OUTER_TEXT_SPRINT minor_sphere_list ~%WNL%%minor_access%%minor_sphere_list%~ - END - OUTER_TEXT_SPRINT total_sphere_list ~%total_sphere_list%%minor_sphere_list%~ - OUTER_TEXT_SPRINT kit_sphere_list ~Abilities: %total_sphere_list%~ - ACTION_IF IS_AN_INT ~%kit_desc%~ BEGIN - ACTION_GET_STRREF %kit_desc% kit_description - OUTER_PATCH_SAVE kit_description ~%kit_description%~ BEGIN - REPLACE_TEXTUALLY ~%disadvantages%~ ~%restrictions%~ -// REPLACE_TEXTUALLY ~%abilities%~ ~%kit_sphere_list%~ - REPLACE_TEXTUALLY ~%advantages%~ ~%kit_sphere_list%~ - END - STRING_SET_EVALUATE %kit_desc% ~%kit_description%~ - END - OUTER_TEXT_SPRINT focus_sphere_list ~~ - OUTER_TEXT_SPRINT major_sphere_list ~~ - OUTER_TEXT_SPRINT minor_sphere_list ~~ - OUTER_TEXT_SPRINT total_sphere_list ~~ - ACTION_IF (%kit_class% = 3) OR - (%kit_class% = 11) OR - (%kit_class% = 6) OR - (%kit_class% = 12) BEGIN - APPEND ~%mod_clab%.2da~ ~SPHERES AP_D5SPMEM **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ~ - UNLESS ~AP_D5SPMEM~ - END - ACTION_IF (%kit_class% = 8) OR - (%kit_class% = 14) OR - (%kit_class% = 15) OR - (%kit_class% = 18) OR - (%kit_class% = 16) BEGIN - ACTION_IF (%kit_class% = 8) OR - (%kit_class% = 14) OR - (%kit_class% = 15) OR - (%kit_class% = 18) BEGIN - OUTER_TEXT_SPRINT class_letter ~P~ - END - ACTION_IF (%kit_class% = 16) BEGIN - OUTER_TEXT_SPRINT class_letter ~D~ - END - ACTION_IF IS_AN_INT ~%kit_code%~ BEGIN - COPY_EXISTING ~%mod_clab%.2da~ ~override~ - COUNT_2DA_COLS cols - READ_2DA_ENTRIES_NOW rows cols - FOR (row = 3; row < rows; ++row) BEGIN - READ_2DA_ENTRY_FORMER rows row 0 sphere - PATCH_IF (~%sphere%~ STRING_EQUAL_CASE ~SPHERES~) BEGIN - FOR (col = 1; col < cols; ++col) BEGIN - READ_2DA_ENTRY_FORMER rows row col ability - PATCH_IF (NOT ~%ability%~ STRING_EQUAL ~****~) BEGIN - SET string_length = (STRING_LENGTH ~%ability%~) - 3 - LPF SUBSTRING INT_VAR start = 3 length = EVAL %string_length% STR_VAR string = EVAL ~%ability%~ RET abil_new = substring END - INNER_ACTION BEGIN - ACTION_IF !(FILE_EXISTS_IN_GAME ~QD_MC_AP.eff~) BEGIN - CREATE EFF ~QD_MC_AP~ - WRITE_LONG 0x10 146 //cast spell - WRITE_LONG 0x14 2 //preset target - WRITE_LONG 0x20 1 //cast instantly (ignore level) - WRITE_SHORT 0x24 1 //permament until death - WRITE_SHORT 0x2c 100 //probability 100% + ACTION_IF (VARIABLE_IS_SET $d5_fnp_kit_sphere_access(~%sphere%~ ~%kit%~)) BEGIN + OUTER_TEXT_SPRINT access $d5_fnp_kit_sphere_access(~%sphere%~ ~%kit%~) + OUTER_INNER_PATCH ~%sphere%~ BEGIN + SNPRINT 3 ~shortsphere~ ~%sphere%~ + END + ACTION_IF (VARIABLE_IS_SET $d5_fnp_sphere_access(~%access%~)) && (~%access%~ STRING_EQUAL_CASE ~FOCUS~) BEGIN + ACTION_IF !(FILE_EXISTS_IN_GAME ~d5__v_plus_spheres.d5~) BEGIN + COPY_EXISTING ~lub_%kit_index%.2da~ ~override~ + PATCH_IF (FILE_EXISTS ~weidu_external/faiths_and_powers/hlas/hlas_%text_sphere%.txt~) BEGIN + LPM remove_blank_lines + APPEND_FILE ~weidu_external/faiths_and_powers/hlas/hlas_%text_sphere%.txt~ + END + BUT_ONLY + END + COPY_EXISTING ~lub_%kit_index%.2da~ ~override~ + REPLACE_TEXTUALLY ~[%LNL%%MNL%%WNL%]zzz~ ~~ + BUT_ONLY + ACTION_PHP_EACH d5_fnp_kit_caster_type AS this_kit => caster_type BEGIN + ACTION_IF (~%this_kit%~ STRING_EQUAL_CASE ~%mod_clab%~) && !(~%caster_type%~ STRING_EQUAL_CASE ~mystic~) BEGIN + ACTION_IF !(FILE_EXISTS_IN_GAME ~d5__5E_casting_divine.d5~) /*AND !(FILE_EXISTS_IN_GAME ~d5__fnp_spont_casting.d5~)*/ BEGIN + APPEND ~%mod_clab%.2da~ ~SPHERES AP_D5SF%shortsphere% **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ~ + END + ACTION_IF (FILE_EXISTS_IN_GAME ~d5__5E_casting_divine.d5~) OR (FILE_EXISTS_IN_GAME ~d5__fnp_spont_casting.d5~) BEGIN + APPEND ~%mod_clab%.2da~ ~SPHERES AP_D5ZF%shortsphere% **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ~ + END + END + END + ACTION_PHP_EACH d5_fnp_kit_caster_type AS this_kit => caster_type BEGIN + ACTION_IF (~%this_kit%~ STRING_EQUAL_CASE ~%mod_clab%~) && (~%caster_type%~ STRING_EQUAL_CASE ~mystic~) BEGIN + APPEND ~%mod_clab%.2da~ ~SPHERES AP_D5SP%shortsphere% **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ~ + END + END + OUTER_TEXT_SPRINT focus_sphere_list ~%focus_sphere_list%, %text_sphere%~ + END + ACTION_IF (VARIABLE_IS_SET $d5_fnp_sphere_access(~%access%~)) && (~%access%~ STRING_EQUAL_CASE ~MAJOR~) BEGIN + ACTION_IF !(FILE_EXISTS_IN_GAME ~d5__v_plus_spheres.d5~) BEGIN + COPY_EXISTING ~lub_%kit_index%.2da~ ~override~ + PATCH_IF (FILE_EXISTS ~weidu_external/faiths_and_powers/hlas/hlas_%text_sphere%.txt~) BEGIN + LPM remove_blank_lines + APPEND_FILE ~weidu_external/faiths_and_powers/hlas/hlas_%text_sphere%.txt~ + END + BUT_ONLY + END + COPY_EXISTING ~lub_%kit_index%.2da~ ~override~ + REPLACE_TEXTUALLY ~[%LNL%%MNL%%WNL%]zzz~ ~~ + BUT_ONLY + ACTION_PHP_EACH d5_fnp_kit_caster_type AS this_kit => caster_type BEGIN + ACTION_IF (~%this_kit%~ STRING_EQUAL_CASE ~%mod_clab%~) && !(~%caster_type%~ STRING_EQUAL_CASE ~mystic~) BEGIN + APPEND ~%mod_clab%.2da~ ~SPHERES AP_D5SP%shortsphere% **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ~ + END + END + OUTER_TEXT_SPRINT major_sphere_list ~%major_sphere_list%, %text_sphere%~ + END + ACTION_IF (VARIABLE_IS_SET $d5_fnp_sphere_access(~%access%~)) && (~%access%~ STRING_EQUAL_CASE ~MINOR~) BEGIN + ACTION_PHP_EACH d5_fnp_kit_caster_type AS this_kit => caster_type BEGIN + ACTION_IF (~%this_kit%~ STRING_EQUAL_CASE ~%mod_clab%~) && !(~%caster_type%~ STRING_EQUAL_CASE ~mystic~) BEGIN + APPEND ~%mod_clab%.2da~ ~SPHERES AP_D5SM%shortsphere% **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ~ + END + END + OUTER_TEXT_SPRINT minor_sphere_list ~%minor_sphere_list%, %text_sphere%~ + END + ACTION_IF (VARIABLE_IS_SET $d5_fnp_sphere_access(~%access%~)) && (~%access%~ STRING_EQUAL_CASE ~PALADIN~) BEGIN + ACTION_PHP_EACH d5_fnp_kit_caster_type AS this_kit => caster_type BEGIN + ACTION_IF (~%this_kit%~ STRING_EQUAL_CASE ~%mod_clab%~) && !(~%caster_type%~ STRING_EQUAL_CASE ~mystic~) BEGIN + APPEND ~%mod_clab%.2da~ ~SPHERES AP_D5SP%shortsphere% **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ~ + END + END + OUTER_TEXT_SPRINT minor_sphere_list ~%minor_sphere_list%, %text_sphere%~ + END + ACTION_IF (VARIABLE_IS_SET $d5_fnp_sphere_access(~%access%~)) && (~%access%~ STRING_EQUAL_CASE ~RANGER~) BEGIN + ACTION_PHP_EACH d5_fnp_kit_caster_type AS this_kit => caster_type BEGIN + ACTION_IF (~%this_kit%~ STRING_EQUAL_CASE ~%mod_clab%~) && !(~%caster_type%~ STRING_EQUAL_CASE ~mystic~) BEGIN + APPEND ~%mod_clab%.2da~ ~SPHERES AP_D5SP%shortsphere% **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ~ + END + END + OUTER_TEXT_SPRINT minor_sphere_list ~%minor_sphere_list%, %text_sphere%~ + END + END + END + ACTION_IF !(~%focus_sphere_list%~ STRING_EQUAL_CASE ~~) BEGIN + OUTER_TEXT_SPRINT focus_sphere_list ~%WNL%%focus_access%%focus_sphere_list%~ + END + OUTER_TEXT_SPRINT total_sphere_list ~%total_sphere_list%%focus_sphere_list%~ + ACTION_IF !(~%major_sphere_list%~ STRING_EQUAL_CASE ~~) BEGIN + OUTER_TEXT_SPRINT major_sphere_list ~%WNL%%major_access%%major_sphere_list%~ + END + OUTER_TEXT_SPRINT total_sphere_list ~%total_sphere_list%%major_sphere_list%~ + ACTION_IF !(~%minor_sphere_list%~ STRING_EQUAL_CASE ~~) BEGIN + OUTER_TEXT_SPRINT minor_sphere_list ~%WNL%%minor_access%%minor_sphere_list%~ + END + OUTER_TEXT_SPRINT total_sphere_list ~%total_sphere_list%%minor_sphere_list%~ + OUTER_INNER_PATCH_SAVE total_sphere_list ~%total_sphere_list%~ BEGIN + REPLACE_TEXTUALLY ~:,~ ~:~ + END + OUTER_TEXT_SPRINT kit_sphere_list ~Abilities: %total_sphere_list%~ + ACTION_IF IS_AN_INT ~%kit_desc%~ BEGIN + ACTION_GET_STRREF %kit_desc% kit_description + OUTER_PATCH_SAVE kit_description ~%kit_description%~ BEGIN + REPLACE_TEXTUALLY ~%disadvantages%~ ~%restrictions%~ + // REPLACE_TEXTUALLY ~%abilities%~ ~%kit_sphere_list%~ + REPLACE_TEXTUALLY ~%advantages%~ ~%kit_sphere_list%~ + END + STRING_SET_EVALUATE %kit_desc% ~%kit_description%~ + END + OUTER_TEXT_SPRINT focus_sphere_list ~~ + OUTER_TEXT_SPRINT major_sphere_list ~~ + OUTER_TEXT_SPRINT minor_sphere_list ~~ + OUTER_TEXT_SPRINT total_sphere_list ~~ + ACTION_IF (%kit_class% = 3) OR + (%kit_class% = 11) OR + (%kit_class% = 6) OR + (%kit_class% = 12) BEGIN + APPEND ~%mod_clab%.2da~ ~SPHERES AP_D5SPMEM **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ~ + UNLESS ~AP_D5SPMEM~ + END + ACTION_IF (%kit_class% = 8) OR + (%kit_class% = 14) OR + (%kit_class% = 15) OR + (%kit_class% = 18) OR + (%kit_class% = 16) BEGIN + ACTION_IF (%kit_class% = 8) OR + (%kit_class% = 14) OR + (%kit_class% = 15) OR + (%kit_class% = 18) BEGIN + OUTER_TEXT_SPRINT class_letter ~P~ + END + ACTION_IF (%kit_class% = 16) BEGIN + OUTER_TEXT_SPRINT class_letter ~D~ + END + ACTION_IF IS_AN_INT ~%kit_code%~ BEGIN + COPY_EXISTING ~%mod_clab%.2da~ ~override~ + COUNT_2DA_COLS cols + READ_2DA_ENTRIES_NOW rows cols + FOR (row = 3; row < rows; ++row) BEGIN + READ_2DA_ENTRY_FORMER rows row 0 sphere + PATCH_IF (~%sphere%~ STRING_EQUAL_CASE ~SPHERES~) BEGIN + FOR (col = 1; col < cols; ++col) BEGIN + READ_2DA_ENTRY_FORMER rows row col ability + PATCH_IF (NOT ~%ability%~ STRING_EQUAL ~****~) BEGIN + SET string_length = (STRING_LENGTH ~%ability%~) - 3 + LPF SUBSTRING INT_VAR start = 3 length = EVAL %string_length% STR_VAR string = EVAL ~%ability%~ RET abil_new = substring END + INNER_ACTION BEGIN + ACTION_IF !(FILE_EXISTS_IN_GAME ~QD_MC_AP.eff~) BEGIN + CREATE EFF ~QD_MC_AP~ + WRITE_LONG 0x10 146 //cast spell + WRITE_LONG 0x14 2 //preset target + WRITE_LONG 0x20 1 //cast instantly (ignore level) + WRITE_SHORT 0x24 1 //permament until death + WRITE_SHORT 0x2c 100 //probability 100% + END + COPY_EXISTING ~QD_MC_AP.eff~ ~override/%abil_new%#.eff~ + WRITE_EVALUATED_ASCII 0x30 ~%abil_new%~ + SET col_length = STRING_LENGTH ~%col%~ + LAF QD_ENSURE_QDMC_SPL STR_VAR base_class = EVAL ~%class_letter%~ END + ACTION_IF (%col_length% = 1) BEGIN + COPY_EXISTING ~override/QD_MC%class_letter%0%col%.spl~ ~override~ + LPF ADD_SPELL_EFFECT INT_VAR insert_point = 0 opcode = 177 target = 1 timing = 9 resist_dispel = 0 power = 0 parameter1 = %kit_code% parameter2 = 9 STR_VAR resource = EVAL ~%abil_new%#~ END + END + ACTION_IF (%col_length% = 2) BEGIN + COPY_EXISTING ~override/QD_MC%class_letter%%col%.spl~ ~override~ + LPF ADD_SPELL_EFFECT INT_VAR insert_point = 0 opcode = 177 target = 1 timing = 9 resist_dispel = 0 power = 0 parameter1 = %kit_code% parameter2 = 9 STR_VAR resource = EVAL ~%abil_new%#~ END + END + END END - COPY_EXISTING ~QD_MC_AP.eff~ ~override/%abil_new%#.eff~ - WRITE_EVALUATED_ASCII 0x30 ~%abil_new%~ - SET col_length = STRING_LENGTH ~%col%~ - LAF QD_ENSURE_QDMC_SPL STR_VAR base_class = EVAL ~%class_letter%~ END - ACTION_IF (%col_length% = 1) BEGIN - COPY_EXISTING ~override/QD_MC%class_letter%0%col%.spl~ ~override~ - LPF ADD_SPELL_EFFECT INT_VAR opcode = 177 target = 1 timing = 9 resist_dispel = 0 power = 0 parameter1 = %kit_code% parameter2 = 9 STR_VAR resource = EVAL ~%abil_new%#~ END - END - ACTION_IF (%col_length% = 2) BEGIN - COPY_EXISTING ~override/QD_MC%class_letter%%col%.spl~ ~override~ - LPF ADD_SPELL_EFFECT INT_VAR opcode = 177 target = 1 timing = 9 resist_dispel = 0 power = 0 parameter1 = %kit_code% parameter2 = 9 STR_VAR resource = EVAL ~%abil_new%#~ END - END END - END - END - END + END + END + BUT_ONLY END - BUT_ONLY + END END END @@ -663,7 +729,9 @@ END //APPLY FnP USABILITY RULES__________________________________________________________ // -DEFINE_ACTION_MACRO apply_fnp_usability BEGIN +DEFINE_ACTION_FUNCTION apply_fnp_usability STR_VAR clab_name = ~x~ BEGIN + + LAM ~READ_FNP_KIT_INFO~ OUTER_TEXT_SPRINT hex_lat ~04000000~ OUTER_TEXT_SPRINT hex_helm ~02000000~ @@ -672,77 +740,81 @@ DEFINE_ACTION_MACRO apply_fnp_usability BEGIN OUTER_TEXT_SPRINT hex_shapeshifter ~10000000~ OUTER_TEXT_SPRINT hex_avenger ~20000000~ - ACTION_IF (NOT VARIABLE_IS_SET ~mod_clab~) BEGIN + ACTION_IF (VARIABLE_IS_SET %clab_name%) AND !(~%clab_name%~ STRING_EQUAL_CASE ~x~) BEGIN + OUTER_SPRINT mod_clab ~%clab_name%~ + END + ACTION_IF !(VARIABLE_IS_SET %mod_clab%) BEGIN COPY_EXISTING ~d5_class.2da~ ~override~ COUNT_2DA_ROWS 2 rows READ_2DA_ENTRY (rows - 1) 0 2 last_clab BUT_ONLY PRINT ~%last_clab%~ - OUTER_TEXT_SPRINT mod_clab ~%last_clab%~ + OUTER_SPRINT mod_clab ~%last_clab%~ END COPY_EXISTING ~d5_usabl.2da~ ~override~ COUNT_2DA_COLS cols - READ_2DA_ENTRIES_NOW ~r2en_d5_usable~ (cols - 1) - FOR (row = 1; row < r2en_d5_usable; ++row) BEGIN - READ_2DA_ENTRY_FORMER ~r2en_d5_usable~ row 0 kit + COUNT_2DA_ROWS (cols - 1) rows +// READ_2DA_ENTRIES_NOW ~r2en_d5_usable~ (cols - 1) + FOR (row = 1; row < rows; ++row) BEGIN + READ_2DA_ENTRY row 0 (cols - 1) kit PATCH_IF (~%kit%~ STRING_EQUAL_CASE ~%mod_clab%~) BEGIN FOR (col = 0; col < (cols - 1); ++col) BEGIN - READ_2DA_ENTRY_FORMER ~r2en_d5_usable~ 0 col usable - READ_2DA_ENTRY_FORMER ~r2en_d5_usable~ row (col + 1) access - TEXT_SPRINT $d5_fnp_kit_use_access(~%kit%~ ~%usable%~) ~%access%~ + READ_2DA_ENTRY 0 col (cols - 1) usable + READ_2DA_ENTRY row (col + 1) (cols - 1) access + TEXT_SPRINT $d5_fnp_mod_kit_use(~%usable%~ ~%kit%~) ~%access%~ END END END - ACTION_PHP_EACH d5_fnp_kit_use_access AS clab => val BEGIN - ACTION_IF (~%clab_1%~ STRING_EQUAL_CASE ~CHAIN_ARMOR~) BEGIN + ACTION_PHP_EACH d5_fnp_mod_kit_use AS use => val BEGIN + ACTION_IF (~%use%~ STRING_EQUAL_CASE ~CHAIN_ARMOR~) BEGIN ACTION_IF (%val% = 1) BEGIN -// PRINT ~ %clab% : %clab_1% : %val%~ + PRINT ~ %use_1% : %use% : %val%~ COPY_EXISTING ~kitlist.2da~ ~override~ // COUNT_2DA_COLS cols READ_2DA_ENTRIES_NOW ~r2en_kitlist~ 10 FOR (row = 3; row < r2en_kitlist; row += 1) BEGIN READ_2DA_ENTRY_FORMER ~r2en_kitlist~ row 5 kit_clab READ_2DA_ENTRY_FORMER ~r2en_kitlist~ row 8 kit_class - PATCH_IF (~%kit_clab%~ STRING_EQUAL_CASE ~%clab%~) BEGIN - PATCH_IF (%kit_class% = 3 || %kit_class% = 11 || %kit_class% = 21 || %kit_class% = 8 || %kit_class% = 14 || %kit_class% = 15 || %kit_class% = 18 || %kit_class% = 16) BEGIN + PATCH_IF (~%kit_clab%~ STRING_EQUAL_CASE ~%use_1%~) BEGIN +// PATCH_IF (%kit_class% = 3 || %kit_class% = 11 || %kit_class% = 21 || %kit_class% = 8 || %kit_class% = 14 || %kit_class% = 15 || %kit_class% = 18 || %kit_class% = 16) BEGIN SET_2DA_ENTRY row 7 10 ~0x%hex_helm%~ - END +// END END END BUT_ONLY END ELSE BEGIN -// PRINT ~ %clab% : %clab_1% : %val%~ + PRINT ~ %use_1% : %use% : %val%~ COPY_EXISTING ~kitlist.2da~ ~override~ // COUNT_2DA_COLS cols READ_2DA_ENTRIES_NOW ~r2en_kitlist~ 10 FOR (row = 3; row < r2en_kitlist; row += 1) BEGIN READ_2DA_ENTRY_FORMER ~r2en_kitlist~ row 5 kit_clab READ_2DA_ENTRY_FORMER ~r2en_kitlist~ row 8 kit_class - PATCH_IF (~%kit_clab%~ STRING_EQUAL_CASE ~%clab%~) BEGIN - PATCH_IF (%kit_class% = 3 || %kit_class% = 11 || %kit_class% = 21 || %kit_class% = 8 || %kit_class% = 14 || %kit_class% = 15 || %kit_class% = 18 || %kit_class% = 16) BEGIN + PATCH_IF (~%kit_clab%~ STRING_EQUAL_CASE ~%use_1%~) BEGIN +// PATCH_IF (%kit_class% = 3 || %kit_class% = 11 || %kit_class% = 21 || %kit_class% = 8 || %kit_class% = 14 || %kit_class% = 15 || %kit_class% = 18 || %kit_class% = 16) BEGIN SET_2DA_ENTRY row 7 10 ~0x%hex_lat%~ - END +// END END END BUT_ONLY END END - ACTION_IF (~%clab_1%~ STRING_EQUAL_CASE ~PLATE_ARMOR~) BEGIN + ACTION_IF (~%use%~ STRING_EQUAL_CASE ~PLATE_ARMOR~) BEGIN ACTION_IF (%val% = 1) BEGIN -// PRINT ~ %clab% : %clab_1% : %val%~ + PRINT ~ %use_1% : %use% : %val%~ COPY_EXISTING ~kitlist.2da~ ~override~ // COUNT_2DA_COLS cols READ_2DA_ENTRIES_NOW ~r2en_kitlist~ 10 FOR (row = 3; row < r2en_kitlist; row += 1) BEGIN READ_2DA_ENTRY_FORMER ~r2en_kitlist~ row 5 kit_clab READ_2DA_ENTRY_FORMER ~r2en_kitlist~ row 8 kit_class - PATCH_IF (~%kit_clab%~ STRING_EQUAL_CASE ~%clab%~) BEGIN - PATCH_IF (%kit_class% = 3 || %kit_class% = 11 || %kit_class% = 21 || %kit_class% = 8 || %kit_class% = 14 || %kit_class% = 15 || %kit_class% = 18 || %kit_class% = 16) BEGIN + PATCH_IF (~%kit_clab%~ STRING_EQUAL_CASE ~%use_1%~) BEGIN +// PATCH_IF (%kit_class% = 3 || %kit_class% = 11 || %kit_class% = 21 || %kit_class% = 8 || %kit_class% = 14 || %kit_class% = 15 || %kit_class% = 18 || %kit_class% = 16) BEGIN SET_2DA_ENTRY row 7 10 ~0x%hex_talos%~ - END +// END END END BUT_ONLY @@ -755,18 +827,20 @@ DEFINE_ACTION_MACRO apply_fnp_usability BEGIN READ_2DA_ENTRIES_NOW ~r2en_kitlist~ 10 FOR (row = 3; row < r2en_kitlist; row += 1) BEGIN READ_2DA_ENTRY_FORMER ~r2en_kitlist~ row 5 kit_clab + READ_2DA_ENTRY_FORMER ~r2en_kitlist~ row 0 kit_index + READ_2DA_ENTRY_FORMER ~r2en_kitlist~ row 1 kit_label + READ_2DA_ENTRY_FORMER ~r2en_kitlist~ row 8 kit_class + READ_2DA_ENTRY_FORMER ~r2en_kitlist~ row 9 kit_code PATCH_IF (~%kit_clab%~ STRING_EQUAL_CASE ~%mod_clab%~) BEGIN - SET patch_row = %row% - READ_2DA_ENTRY_FORMER ~r2en_kitlist~ patch_row 0 kit_index - READ_2DA_ENTRY_FORMER ~r2en_kitlist~ patch_row 1 kit_label - READ_2DA_ENTRY_FORMER ~r2en_kitlist~ patch_row 8 kit_class - PATCH_IF (%kit_class% = 3 || %kit_class% = 11 || %kit_class% = 21 || %kit_class% = 8 || %kit_class% = 14 || %kit_class% = 15 || %kit_class% = 18 || %kit_class% = 16) BEGIN +// SET patch_row = %row% +// PATCH_IF (%kit_class% = 3 || %kit_class% = 11 || %kit_class% = 21 || %kit_class% = 8 || %kit_class% = 14 || %kit_class% = 15 || %kit_class% = 18 || %kit_class% = 16) BEGIN INNER_ACTION BEGIN - COPY ~faiths_and_powers/kits/misc/d5fnpuse.spl~ ~override/d5_u%kit_index%.spl~ + COPY ~faiths_and_powers/data/misc/d5fnpuse.spl~ ~override/d5_u%kit_index%.spl~ END - PHP_EACH d5_fnp_usable AS usable => ind BEGIN - PATCH_IF (VARIABLE_IS_SET $d5_fnp_kit_usable_access(~%mod_clab%~ ~%usable%~)) BEGIN - SPRINT access $d5_fnp_kit_usable_access(~%mod_clab%~ ~%usable%~) + PHP_EACH d5_fnp_mod_kit_use AS usable => access BEGIN + PATCH_IF (IS_AN_INT %access%) BEGIN +// PATCH_IF (VARIABLE_IS_SET $d5_fnp_kit_usable_access(~%usable%~ ~%mod_clab%~)) BEGIN +// SPRINT access $d5_fnp_kit_usable_access(~%usable%~ ~%mod_clab%~) PATCH_IF (~%usable%~ STRING_EQUAL_CASE ~CLUB_STAFF~) BEGIN // club, staff INNER_ACTION BEGIN COPY_EXISTING ~weapprof.2da~ override @@ -1165,15 +1239,15 @@ DEFINE_ACTION_MACRO apply_fnp_usability BEGIN END COPY_EXISTING ~QD_MC_AP.eff~ ~override/d5_u%kit_index%#.eff~ WRITE_EVALUATED_ASCII 0x30 ~d5_u%kit_index%~ + LAF QD_ENSURE_QDMC_SPL STR_VAR base_class = EVAL ~%class_letter%~ END COPY_EXISTING ~QD_MC%class_letter%01.spl~ ~override~ - LPF ADD_SPELL_EFFECT INT_VAR opcode = 177 target = 1 timing = 9 resist_dispel = 0 power = 0 parameter1 = %kit_code% parameter2 = 9 STR_VAR resource = EVAL ~d5_u%kit_index%#~ END + LPF ADD_SPELL_EFFECT INT_VAR insert_point = 0 opcode = 177 target = 1 timing = 9 resist_dispel = 0 power = 0 parameter1 = %kit_code% parameter2 = 9 STR_VAR resource = EVAL ~d5_u%kit_index%#~ END END END END - END +// END END END BUT_ONLY - CLEAR_ARRAYS END //___________________________________________________________________________________ diff --git a/TomeAndBlood/lib/semi_spontaneous.tpa b/TomeAndBlood/lib/semi_spontaneous.tpa index a51ecd1..03380b4 100755 --- a/TomeAndBlood/lib/semi_spontaneous.tpa +++ b/TomeAndBlood/lib/semi_spontaneous.tpa @@ -1,58 +1,58 @@ -// v9.9 - identify fix +// v9.11 - fix fatigue effects /* functions in this file: -- semi_spontaneous_casting +- semi_spontaneous_casting - line 225 sets up structure of the 5E casting system, covers both arcane and divine spells -- semi_armor_casting +- semi_armor_casting - line 1410 sets armor to block arcane 5E casting -- semi_divine_spells +- semi_divine_spells - line 1758 adds all spells valid for divine casters to the 5E system NB: this works for vanilla cleric/druid spells, and for Faiths & Powers sphere systems ...therefore this should be run the first time *after* Faiths & Powers is installed -- semi_arcane_spells +- semi_arcane_spells - line 1864 adds all spells learnable from scrolls and valid for sorcerers to the 5E system NB: this also runs semi_armor_casting -- process_semi_spells +- process_semi_spells - line 2057 applies 5E memorization and casting mechanics to the relevant spells -- add_semi_spells +- add_semi_spells - line 2340 add a spell to the 5E system if it was not already captured by the functions above NB: if 5E has already been processed, must "LAF process_semi_spells" again after this -- find_zclons_spell - input a spell that gets memorized, output its 5E index #, the spell it casts, and type - ...just a little helper function - -- free_cast_spells +- free_cast_spells - line 2416 input a free_spell (can run multiple free_spells for the same list_spell) outputs a list_spell that makes the free_spells castable regardless of being memorized list-spell can then be applied in a kit ability table -- free_known_spells +- free_known_spells - line 2416 input a free_spell (can run multiple free_spells for the same list_spell) outputs a list_spell that add the free_spells to one's spellbook list-spell can then be applied in a kit ability table -- arcane_casting_slots +- find_zclons_spell - line 2447 + input a spell that gets memorized, output its 5E index #, the spell it casts, and type + ...just a little helper function + +- arcane_casting_slots - line 2473 patch and action functions input a table structured like MXSPLWIZ.2da outputs table_spl with 40 headers that converts the table into proficiency increases apply table_spl at every level to simulate spellcasting slots -- divine_casting_slots +- divine_casting_slots - line 2780 patch and action functions input a table structured like MXSPLWIZ.2da outputs table_spl with 40 headers that converts the table into proficiency increases apply table_spl at every level to simulate spellcasting slots -- sorcerer_spell_learning +- sorcerer_spell_learning - line 3017 creates spell & item to learn any sorcerer-valid spell via kjeron's spell-learning UI NB: this is in use and also works for alternate, coexisting versions @@ -324,6 +324,7 @@ APPEND ~splprot.2da~ ~D5_DIV_1_7%TAB%134%TAB%-1%TAB%7~ UNLESS ~D5_DIV_1_7~ APPEND ~splprot.2da~ ~D5_DIV=1_7%TAB%134%TAB%-1%TAB%8~ UNLESS ~D5_DIV=1_7~ APPEND ~splprot.2da~ ~D5_FATIGUE_0%TAB%30%TAB%0%TAB%1~ UNLESS ~D5_FATIGUE_0~ APPEND ~splprot.2da~ ~D5_FATIGUE_1%TAB%30%TAB%1%TAB%4~ UNLESS ~D5_FATIGUE_1~ +APPEND ~splprot.2da~ ~D5_FATIGUE_3%TAB%30%TAB%3%TAB%4~ UNLESS ~D5_FATIGUE_3~ APPEND ~splprot.2da~ ~D5_PREP_SPLZ%TAB%0x112%TAB%%prepared_spells_state%%TAB%1~ UNLESS ~D5_PREP_SPLZ~ APPEND ~splprot.2da~ ~D5_NOT_PREP%TAB%0x112%TAB%%prepared_spells_state%%TAB%5~ UNLESS ~D5_NOT_PREP~ APPEND ~splprot.2da~ ~D5_KIT_IS%TAB%152%TAB%-1%TAB%1~ UNLESS ~D5_KIT_IS~ @@ -357,6 +358,9 @@ COPY_EXISTING ~splprot.2da~ ~override~ PATCH_IF (~%stat%~ STRING_EQUAL_CASE ~D5_FATIGUE_1~) BEGIN SET fatigue_one = %row% END + PATCH_IF (~%stat%~ STRING_EQUAL_CASE ~D5_FATIGUE_3~) BEGIN + SET fatigue_three = %row% + END PATCH_IF (~%stat%~ STRING_EQUAL_CASE ~D5_PREP_SPLZ~) BEGIN SET prep_spells_row = %row% END @@ -1304,6 +1308,65 @@ IF_EXISTS BUT_ONLY //____________________________________________________________________________________ +//fix external fatigue effects________________________________________________________ +// +CREATE EFF ~d5zifat9~ + WRITE_LONG 0x10 232 + WRITE_LONG 0x14 1 + WRITE_LONG 0x1c 0 + WRITE_LONG 0x20 20 + WRITE_LONG 0x24 9 + WRITE_SHORT 0x2c 100 + WRITE_ASCII 0x30 ~d5zifat~ #8 + WRITE_LONG 0x48 102 + +CREATE EFF ~d5zifat2~ + WRITE_LONG 0x10 232 + WRITE_LONG 0x14 1 + WRITE_LONG 0x1c 0 + WRITE_LONG 0x20 20 + WRITE_LONG 0x24 2 + WRITE_SHORT 0x2c 100 + WRITE_ASCII 0x30 ~d5zifat~ #8 + WRITE_LONG 0x48 102 + + +COPY ~%MOD_FOLDER%/lib/semi_spont/d5_base.spl~ ~override/d5zifat.spl~ + LPF ALTER_SPELL_HEADER INT_VAR target = 5 END + LPF ADD_SPELL_EFFECT INT_VAR opcode = 93 target = 1 parameter1 = 2 parameter2 = 1 timing = 1 END + LPF ADD_SPELL_EFFECT INT_VAR insert_point = 0 opcode = 321 target = 1 timing = 1 STR_VAR resource = ~d5zifat~ END + LPF ADD_SPELL_EFFECT INT_VAR insert_point = 0 opcode = 318 target = 1 parameter2 = %fatigue_three% timing = 0 duration = 1 STR_VAR resource = ~d5zifat~ END + + +ACTION_FOR_EACH fatigue_spell IN ~spcl939~ ~cdidrif~ BEGIN + ACTION_IF (FILE_EXISTS_IN_GAME ~%fatigue_spell%.spl~) BEGIN + COPY_EXISTING ~%fatigue_spell%.spl~ ~override~ + LPF ALTER_EFFECT INT_VAR silent = 1 match_opcode = 93 match_parameter1 = 0 match_paramater2 = 1 parameter1 = 2 END + LPF ALTER_EFFECT INT_VAR silent = 1 match_opcode = 101 match_parameter2 = 93 match_timing = 9 opcode = 177 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~d5zifat9~ END + BUT_ONLY + END +END + +ACTION_FOR_EACH fatigue_item IN ~bdamul12~ BEGIN + ACTION_IF (FILE_EXISTS_IN_GAME ~%fatigue_item%.itm~) BEGIN + COPY_EXISTING ~%fatigue_item%.itm~ ~override~ + LPF ALTER_EFFECT INT_VAR silent = 1 match_opcode = 93 match_parameter1 = 0 match_paramater2 = 1 parameter1 = 2 END + LPF ALTER_EFFECT INT_VAR silent = 1 match_opcode = 101 match_parameter2 = 93 match_timing = 2 opcode = 177 parameter1 = 0 parameter2 = 2 STR_VAR resource = ~d5zifat2~ END + BUT_ONLY + END +END + +OUTER_SET spell_ids = IDS_OF_SYMBOL (~spell~ ~CLERIC_UNFAILING_ENDURANCE~) +ACTION_IF !(spell_ids = 0 - 1) BEGIN + LAF RES_NUM_OF_SPELL_NAME STR_VAR spell_name = ~CLERIC_UNFAILING_ENDURANCE~ RET spell_res END + COPY_EXISTING ~%spell_res%.spl~ ~override~ + LPF ALTER_EFFECT INT_VAR silent = 1 match_opcode = 93 match_parameter1 = 0 match_paramater2 = 1 parameter1 = 1 END + BUT_ONLY +END + +//____________________________________________________________________________________ + + COPY ~%MOD_FOLDER%/lib/semi_spont/d5_marker.d5~ ~override/d5__semi_spont.d5~