-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathjoinable_npc_array.tpa
More file actions
45 lines (44 loc) · 1.53 KB
/
Copy pathjoinable_npc_array.tpa
File metadata and controls
45 lines (44 loc) · 1.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
//Action macro that generates JOINABLE_NPC_ARRAY table that can be used to patch joinable NPC CRE files
//Example usage:
//LAM JOINABLE_NPC_ARRAY
//ACTION_PHP_EACH JOINABLE_NPC_ARRAY AS cre => dv BEGIN
// PRINT ~%cre% => %dv%~
// COPY_EXISTING ~%cre%~ ~override~
//your patching code
//END
DEFINE_ACTION_MACRO JOINABLE_NPC_ARRAY BEGIN
//PDIALOG.2DA exists in all games
ACTION_DEFINE_ASSOCIATIVE_ARRAY JOINABLE_NPC_ARRAY_2da BEGIN ~PDIALOG~ => ~~ END
//Check PDIALOG.2DA file variants referenced in CAMPAIGN.2DA
ACTION_IF FILE_EXISTS_IN_GAME ~CAMPAIGN.2DA~ BEGIN
COPY_EXISTING ~CAMPAIGN.2DA~ ~CAMPAIGN.2DA~
COUNT_2DA_ROWS 32 "cntrow"
FOR (i = 0; i < cntrow; i = i + 1) BEGIN
READ_2DA_ENTRY i 11 32 file
TO_UPPER file
DEFINE_ASSOCIATIVE_ARRAY JOINABLE_NPC_ARRAY_2da BEGIN ~%file%~ => ~~ END
END
BUT_ONLY
END
//Generate array with joinable NPC DV
ACTION_PHP_EACH JOINABLE_NPC_ARRAY_2da AS file => ~~ BEGIN
ACTION_IF FILE_EXISTS_IN_GAME ~%file%.2da~ BEGIN
COPY_EXISTING ~%file%.2da~ ~override~
COUNT_2DA_ROWS 3 "cntrow"
FOR (i = 1; i < cntrow; i = i + 1) BEGIN
READ_2DA_ENTRY i 0 3 "dv"
TO_UPPER dv
DEFINE_ASSOCIATIVE_ARRAY JOINABLE_NPC_ARRAY_dv BEGIN ~%dv%~ => ~~ END
END
BUT_ONLY
END
END
//Generate array with joinable NPC cre files
COPY_EXISTING_REGEXP GLOB ~.+\.CRE~ ~override~
READ_ASCII DEATHVAR "dv" (32) NULL
TO_UPPER dv
PATCH_IF VARIABLE_IS_SET $JOINABLE_NPC_ARRAY_dv(~%dv%~) BEGIN
DEFINE_ASSOCIATIVE_ARRAY JOINABLE_NPC_ARRAY BEGIN ~%SOURCE_FILE%~ => ~%dv%~ END
END
BUT_ONLY
END