diff --git a/Setup-WarslingSniperKit.exe b/Setup-WarslingSniperKit.exe index 8898545..0493397 100644 Binary files a/Setup-WarslingSniperKit.exe and b/Setup-WarslingSniperKit.exe differ diff --git a/Readme-WarslingSniperKit.txt b/WarslingSniperKit/Readme-WarslingSniperKit.txt similarity index 100% rename from Readme-WarslingSniperKit.txt rename to WarslingSniperKit/Readme-WarslingSniperKit.txt diff --git a/WarslingSniperKit/lib/fl#add_kit_ee.tpa b/WarslingSniperKit/lib/fl#add_kit_ee.tpa index 7061369..3b4b347 100644 --- a/WarslingSniperKit/lib/fl#add_kit_ee.tpa +++ b/WarslingSniperKit/lib/fl#add_kit_ee.tpa @@ -1,11 +1,11 @@ /* * fl#add_kit_ee - An ADD_KIT supplement for EE-type games - * Author: Fredrik Lindgren, a.k.a., Wisp + * Authors: Fredrik Lindgren (Wisp), Argent77 * Licence: public domain - * Date: 2014-09-28 + * Date: 2017-10-21 */ -OUTER_SPRINT fl#add_kit_ee#version "1.1.0" +OUTER_SPRINT fl#add_kit_ee#version "1.1.5" DEFINE_ACTION_FUNCTION fl#add_kit_ee#get_row STR_VAR @@ -100,6 +100,47 @@ BEGIN END END +DEFINE_ACTION_FUNCTION fl#add_kit_ee#swap_columns + STR_VAR + file = "" + column_name1 = "" + column_name2 = "" +BEGIN + ACTION_IF NOT "%column_name1%" STR_EQ "" && + NOT "%column_name1%" STR_EQ "%column_name2%" BEGIN + COPY_EXISTING "%file%.2da" override + COUNT_2DA_COLS num_col + READ_2DA_ENTRIES_NOW file num_col - 1 + SET col1 = "-1" + SET col2 = "-1" + FOR (i = 0; i < num_col - 1; ++i) BEGIN + READ_2DA_ENTRY_FORMER file 0 i label + PATCH_IF "%label%" STR_EQ "%column_name1%" BEGIN + SET col1 = i + END ELSE PATCH_IF "%label%" STR_EQ "%column_name2%" BEGIN + SET col2 = i + END + END + PATCH_IF (col1 >= 0 && col2 >= 0) BEGIN + READ_2DA_ENTRY_FORMER file 0 col1 value1 + READ_2DA_ENTRY_FORMER file 0 col2 value2 + SET_2DA_ENTRY_LATER file_out 0 col1 ~%value2%~ + SET_2DA_ENTRY_LATER file_out 0 col2 ~%value1%~ + + SET col1 += 1 + SET col2 += 1 + FOR (j = 1; j < file; ++j) BEGIN + READ_2DA_ENTRY_FORMER file j col1 value1 + READ_2DA_ENTRY_FORMER file j col2 value2 + SET_2DA_ENTRY_LATER file_out j col1 ~%value2%~ + SET_2DA_ENTRY_LATER file_out j col2 ~%value1%~ + END + SET_2DA_ENTRIES_NOW file_out num_col - 1 + END + BUT_ONLY + END +END + DEFINE_ACTION_FUNCTION fl#add_kit_ee#validate INT_VAR kit_number = 0 @@ -118,6 +159,7 @@ DEFINE_ACTION_FUNCTION fl#add_kit_ee#validate thiefscl = "" sneakatt = "" crippstr = "" + bdstweap = "" RET backstab thiefskl @@ -125,11 +167,16 @@ DEFINE_ACTION_FUNCTION fl#add_kit_ee#validate sneakatt crippstr BEGIN - ACTION_IF kit_class != 4 AND ("%backstab%" STR_CMP "" OR - "%thiefskl%" STR_CMP "" OR - "%traplimt%" STR_CMP "" OR - "%sneakatt%" STR_CMP "" OR - "%crippstr%" STR_CMP "") + ACTION_IF kit_class != 4 AND + kit_class != 9 AND + kit_class != 10 AND + kit_class != 13 AND + kit_class != 15 AND + ("%backstab%" STR_CMP "" OR + "%thiefskl%" STR_CMP "" OR + "%traplimt%" STR_CMP "" OR + "%sneakatt%" STR_CMP "" OR + "%crippstr%" STR_CMP "") BEGIN WARN ~WARNING: the arguments for thief-only 2DAs should only be provided for thief kits~ OUTER_SPRINT backstab "" @@ -165,6 +212,42 @@ BEGIN END END END + PATCH_IF "%value%" STRING_EQUAL "" BEGIN + PATCH_FAIL "ERROR: fl#add_kit_ee failed to retrieve a value for column %column% and row %row% in %SOURCE_FILE%" + END +END + +DEFINE_PATCH_MACRO fl#add_kit_ee#validate_kitlist_values BEGIN + PATCH_IF IS_AN_INT kit_number AND kit_number < 0 BEGIN + PATCH_FAIL ~ERROR: fl#add_kit_ee could not find the kit %kit_name% in kitlist.2da~ + END + PATCH_IF !IS_AN_INT kit_number BEGIN + PATCH_FAIL ~ERROR: fl#add_kit_ee could not read a valid kit number for kit %kit_name% from kitlist.2da~ + END + PATCH_IF !IS_AN_INT kit_lower BEGIN + PATCH_FAIL ~ERROR: fl#add_kit_ee could not read a valid lower strref for kit %kit_name% from kitlist.2da~ + END + PATCH_IF !IS_AN_INT kit_mixed BEGIN + PATCH_FAIL ~ERROR: fl#add_kit_ee could not read a valid mixed strref for kit %kit_name% from kitlist.2da~ + END + PATCH_IF !IS_AN_INT kit_desc BEGIN + PATCH_FAIL ~ERROR: fl#add_kit_ee could not read a valid help strref for kit %kit_name% from kitlist.2da~ + END + PATCH_IF !IS_AN_INT kit_class BEGIN + PATCH_FAIL ~ERROR: fl#add_kit_ee could not read a valid class for kit %kit_name% from kitlist.2da~ + END +END + +DEFINE_PATCH_MACRO fl#add_kit_ee#validate_kitids_value BEGIN + PATCH_IF !"%number%" STRING_MATCHES_REGEXP "0x\([0-9a-f]+\)" = 0 BEGIN + PATCH_FAIL ~ERROR: fl#add_kit_ee could not read a valid kit number for %kit_name% from kit.ids~ + END +END + +DEFINE_PATCH_MACRO fl#add_kit_ee#validate_clastext_value BEGIN + PATCH_IF !IS_AN_INT value BEGIN + PATCH_FAIL ~ERROR: fl#add_kit_ee could not read a valid value for column %column% for class %class% from clastext.2da~ + END END DEFINE_ACTION_FUNCTION fl#add_kit_ee @@ -188,8 +271,9 @@ DEFINE_ACTION_FUNCTION fl#add_kit_ee thiefscl = "" sneakatt = "" crippstr = "" + bdstweap = "" BEGIN - ACTION_IF GAME_IS ~bgee bg2ee iwdee~ BEGIN + ACTION_IF FILE_EXISTS_IN_GAME monkfist.2da BEGIN // "Rule" file as-of-yet unique to EE games PRINT "Doing EE-type kit extensions for kit %kit_name%" OUTER_SET kit_number = "-1" @@ -206,12 +290,9 @@ BEGIN READ_2DA_ENTRY_FORMER kitlist i 8 kit_class END END + LPM fl#add_kit_ee#validate_kitlist_values BUT_ONLY - ACTION_IF kit_number < 0 BEGIN - FAIL ~ERROR: the kit %kit_name% was not found in kitlist.2da~ - END - LAF fl#add_kit_ee#validate INT_VAR kit_number @@ -231,6 +312,7 @@ BEGIN thiefscl sneakatt crippstr + bdstweap RET backstab thiefskl @@ -249,16 +331,18 @@ BEGIN READ_2DA_ENTRY_FORMER file i 0 number END END + LPM fl#add_kit_ee#validate_kitids_value BUT_ONLY END INNER_PATCH_SAVE kitids "%number%" BEGIN - REPLACE_TEXTUALLY "0x\([0-9]+\)" "0x0000\1" + REPLACE_TEXTUALLY "0x\([0-9a-f]+\)" "0x0000\1" END SPRINT w "[ %TAB%]+" SPRINT ow "[ %TAB%]*" SPRINT d "[0-9]+" - SPRINT h "[0-9x]+" - REPLACE_TEXTUALLY ~\(%d%%w%%kit_name%%w%%d%%w%%d%%w%%d%%w%.+%w%%d%%w%%h%%w%%d%%ow%$\)~ ~\1 %kitids%~ + SPRINT h "0x[0-9a-f]+" + REPLACE_TEXTUALLY ~\(%d%%w%%kit_name%%w%%d%%w%%d%%w%%d%%w%.+%w%%d%%w%%h%%w%%d%%ow%$\)~ + ~\1 %kitids%~ BUT_ONLY OUTER_PATCH 0 BEGIN @@ -268,7 +352,9 @@ BEGIN ACTION_IF biography < "-1" OR briefdesc < "-1" OR fallen_notice < "-1" BEGIN COPY_EXISTING clastext.2da override PATCH_FOR_EACH column IN biography briefdesc fallen_notice BEGIN - PATCH_IF EVAL "%column%" < "-1" AND FILE_CONTAINS_EVALUATED (clastext.2da "%column%") BEGIN + PATCH_IF EVAL "%column%" < "-1" AND + FILE_CONTAINS_EVALUATED (clastext.2da "%column%") + BEGIN LPF fl#add_kit_ee#get_2da_value STR_VAR row = EVAL "%class%" @@ -277,13 +363,50 @@ BEGIN RET value END + LPM fl#add_kit_ee#validate_clastext_value SET EVAL "%column%" = value END END BUT_ONLY END - OUTER_SPRINT clastext "%kit_name% %kit_class% %kit_number% %kit_lower% %kit_desc% %kit_mixed% %biography% %fallen% %briefdesc%" + OUTER_SPRINT sod_clastext "" + OUTER_SPRINT sod_stweapon "" + ACTION_IF FILE_EXISTS_IN_GAME ~campaign.2da~ BEGIN + COPY_EXISTING ~campaign.2da~ ~override~ + COUNT_2DA_COLS num_col + COUNT_2DA_ROWS num_col num_row + COUNT_2DA_ROWS (num_col - 1) num_row2 + PATCH_IF num_row2 > num_row BEGIN + FOR (i = 0; i < num_row; ++i) BEGIN + READ_2DA_ENTRY i 0 num_col name + PATCH_IF ~%name%~ STRING_EQUAL_CASE ~sod~ BEGIN + PATCH_IF num_col > 17 BEGIN + READ_2DA_ENTRY i 17 num_col sod_stweapon + END + PATCH_IF num_col > 30 BEGIN + READ_2DA_ENTRY i 30 num_col sod_clastext + END + SET i = num_row + END + END + END + BUT_ONLY + END + + OUTER_SPRINT clastext "" + ACTION_FOR_EACH var IN kit_name + kit_class + kit_number + kit_lower + kit_desc + kit_mixed + biography + fallen + briefdesc + BEGIN + OUTER_SPRINT clastext EVAL "%clastext% %%var%%" + END ACTION_IF FILE_CONTAINS_EVALUATED (clastext.2da "FALLEN_NOTICE") BEGIN OUTER_SPRINT clastext "%clastext% %fallen_notice%" @@ -291,6 +414,10 @@ BEGIN APPEND clastext.2da "%clastext%" UNLESS "%kit_name%" + ACTION_IF FILE_EXISTS_IN_GAME ~%sod_clastext%.2da~ BEGIN + APPEND ~%sod_clastext%.2da~ "%clastext%" UNLESS "%kit_name%" + END + ACTION_DEFINE_ARRAY row_files BEGIN backstab clsrcreq @@ -312,7 +439,9 @@ BEGIN ACTION_PHP_EACH row_files AS _ => item BEGIN ACTION_IF FILE_EXISTS_IN_GAME "%item%.2da" BEGIN - ACTION_IF FILE_CONTAINS_EVALUATED ("%item%.2da" "^[ %TAB%]*%class%[ %TAB%]+") BEGIN + ACTION_IF FILE_CONTAINS_EVALUATED ("%item%.2da" + "^[ %TAB%]*%class%[ %TAB%]+") + BEGIN OUTER_SPRINT clone "%class%" END ELSE BEGIN OUTER_SPRINT clone "" @@ -339,8 +468,31 @@ BEGIN END END - ACTION_DEFINE_ARRAY cleanup BEGIN kitlist END - OUTER_SET index = 1 + ACTION_IF FILE_EXISTS_IN_GAME ~%sod_stweapon%.2da~ BEGIN + LAF fl#add_kit_ee#add_column + STR_VAR + kit_name + input = EVAL "%bdstweap%" + file = EVAL "%sod_stweapon%" + END + // DEFAULT must be last column! + LAF fl#add_kit_ee#swap_columns + STR_VAR + file = EVAL "%sod_stweapon%" + column_name1 = "DEFAULT" + column_name2 = EVAL "%kit_name%" + END + END + + OUTER_SET index = 0 + ACTION_FOR_EACH file IN kitlist + clastext + "%sod_clastext%" + "%sod_stweapon%" + BEGIN + OUTER_SPRINT $cleanup("%index%") "%file%" + OUTER_SET ++index + END ACTION_PHP_EACH row_files AS _ => file BEGIN OUTER_SPRINT $cleanup("%index%") "%file%"