Skip to content

Commit

Permalink
Uprade fl#add_kit_ee
Browse files Browse the repository at this point in the history
Uprade weidu v24900
  • Loading branch information
11jo committed Jul 21, 2022
1 parent e0dd835 commit 2ac567e
Show file tree
Hide file tree
Showing 3 changed files with 173 additions and 21 deletions.
Binary file modified Setup-WarslingSniperKit.exe
Binary file not shown.
File renamed without changes.
194 changes: 173 additions & 21 deletions 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
Expand Down Expand Up @@ -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
Expand All @@ -118,18 +159,24 @@ DEFINE_ACTION_FUNCTION fl#add_kit_ee#validate
thiefscl = ""
sneakatt = ""
crippstr = ""
bdstweap = ""
RET
backstab
thiefskl
traplimt
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 ""
Expand Down Expand Up @@ -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
Expand All @@ -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"
Expand All @@ -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
Expand All @@ -231,6 +312,7 @@ BEGIN
thiefscl
sneakatt
crippstr
bdstweap
RET
backstab
thiefskl
Expand All @@ -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
Expand All @@ -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%"
Expand All @@ -277,20 +363,61 @@ 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%"
END

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
Expand All @@ -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 ""
Expand All @@ -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%"
Expand Down

0 comments on commit 2ac567e

Please sign in to comment.