‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
archetype_thrasher.gsh
Go to the documentation of this file.
1 //
3 // THRASHER TUNABLES
4 //
6 
7 // Initial thrasher health, NOT USED IN ZOMBIES
8 #define THRASHER_TOTAL_HEALTH 1000
9 
10 // Total health is based on level.zombie_health multiplied by this multiplier, increases per round
11 #define THRASHER_EARLY_ROUND_HEALTH_MULTIPLIER 10
12 #define THRASHER_LATE_ROUND_HEALTH_MULTIPLIER 3
13 
14 // Initial pustule health, NOT USED IN ZOMBIES
15 #define THRASHER_PUSTULE_HEALTH 100
16 
17 // Total pustule health is based on level.zombie_health multiplied by this multiplier, increases per round
18 #define THRASHER_PUSTULE_HEALTH_MULTIPLIER 2
19 
20 // Initial head health
21 #define THRASHER_HEAD_HEALTH 10
22 
23 // Additional health added when enraged
24 #define THRASHER_RAGE_HEALTH_BONUS 1500
25 
26 // Amount of rage added when hit in a particular location
27 #define THRASHER_RAGE_INC_NONVITAL 10
28 #define THRASHER_RAGE_INC_HEADSHOT 200
29 #define THRASHER_RAGE_INC_PUSTULE 10
30 
31 // Amount of rage added per second
32 #define THRASHER_RAGE_AUTO 1
33 
34 // Additional rage added on top "THRASHER_RAGE_AUTO" per second multiplied by current level
35 #define THRASHER_RAGE_AUTO_MULTIPLIER 1
36 
37 // Amount of rage added when performing behavior
38 #define THRASHER_RAGE_INC_INGEST_ZOMBIE 50
39 #define THRASHER_RAGE_INC_INGEST_PLAYER 200
40 
41 // Amount of rage before pushing the thrasher into berserk mode
42 #define THRASHER_RAGE_THRESHOLD 200
43 
44 // How often a thrasher can consume a zombie
45 #define THRASHER_CONSUME_COOLDOWN 3000
46 
47 // How many times a thrasher can consume a zombie
48 #define THRASHER_CONSUME_MAX 2
49 
50 // How often a thrasher can teleport to close the distance in milliseconds
51 #define THRASHER_TELEPORT_COOLDOWN 10000
52 
53 // How close a thrasher can teleport to another thrasher's position
54 #define THRASHER_TELEPORT_OVERLAP 240
55 
56 // How far a thrasher will consider a downed player to consume
57 #define THRASHER_CONSUME_PLAYER_DISTANCE 2400
58 
59 // How long stuns lasts in milliseconds
60 #define THRASHER_STUN_TIME 1000
61 
62 // How much normal damage before the thrasher is stunned
63 #define THRASHER_STUN_HEALTH 3000
64 
65 // How long the thrasher stays invulnerable after becoming enraged
66 #define THRASHER_RAGE_INVULNERABLE_TIME 2.5
67 
68 // Distance from enemy before the thrasher will teleport
69 #define THRASHER_TELEPORT_MIN_DISTANCE 1200
70 
71 // How long the thrasher's spore inflate FX will play for.
72 #define THRASHER_SPORE_INFLATE_TIME 2000
73 
74 // How long the spore cloud released from a popped pustule lasts
75 #define THRASHER_SPORE_CLOUD_TIME 5000
76 
77 // How far away from the center of a spore cloud zombies can be affected
78 #define THRASHER_SPORE_CLOUD_RADIUS 60
79 
80 // Maximum number of zombies a single spore cloud can convert to thrashers
81 #define THRASHER_SPORE_CLOUD_MAX_CONVERT 2
82 
83 // Maximum number of zombies that can be converted per round into thrashers
84 #define THRASHER_SPORE_CLOUD_ROUND_MAX_CONVERT 2
85 
86 // Chance a single zombie will be converted into a thrasher (0, 1)
87 #define THRASHER_SPORE_CLOUD_CONVERT_CHANCE 0.2
88 
89 // How often all zombies within a spore cloud will be tested to turn into a thrasher
90 #define THRASHER_SPORE_CLOUD_EVALUATE 0.5
91 
92 // How long a player must be in laststand before being able to be eatten
93 #define THRASHER_LASTSTAND_SAFETY 5000
94 
95 // How long of a time must pass before a new thrasher can consume a player that was just freed from a thrasher.
96 #define THRASHER_FREED_SAFETY 10000
97 
99 //
100 // THRASHER DEFINES
101 //
103 
104 #define ASM_THRASHER_MELEE_NOTETRACK "thrasher_melee"
105 
106 // Melee
107 #define THRASHER_MELEE_DIST 96
108 #define THRASHER_MELEE_DIST_SQ THRASHER_MELEE_DIST * THRASHER_MELEE_DIST
109 #define THRASHER_MELEE_YAW 60
110 #define THRASHER_MELEE_ENRAGED "thrasher_melee_enraged"
111 
112 // Consume
113 #define THRASHER_CONSUME_DIST 48
114 #define THRASHER_CONSUME_DIST_SQ THRASHER_CONSUME_DIST * THRASHER_CONSUME_DIST
115 
116 // Consume Zombie
117 #define THRASHER_CONSUME_ZOMBIE_HEIGHT 18
118 #define THRASHER_CONSUME_ZOMBIE_MAX_DIST 96
119 #define THRASHER_CONSUME_ZOMBIE_MIN_DIST 50
120 
121 // Navmesh
122 #define THRASHER_NAVMESH_RADIUS 128
123 #define THRASHER_NAVMESH_BOUNDARY_DIST 30
124 
125 #define THRASHER_FOOTSTEP_EARTHQUAKE_MAX_RADIUS 1000
126 
127 // Spores
128 #define THRASHER_SPORE_CHEST "tag_spore_chest"
129 #define THRASHER_SPORE_BACK "tag_spore_back"
130 #define THRASHER_SPORE_LEG "tag_spore_leg"
131 #define THRASHER_SPORES array( THRASHER_SPORE_CHEST, THRASHER_SPORE_BACK, THRASHER_SPORE_LEG )
132 #define THRASHER_SPORE_DAMAGE_DISTS array( 12, 18, 12 )
133 
134 #define THRASHER_SPORE_STATE_DESTROYED "state_destroyed"
135 #define THRASHER_SPORE_STATE_HEALTHY "state_healthly"
136 #define THRASHER_SPORE_DESTROY_FX1 "fx_thrash_pustule_burst"
137 #define THRASHER_SPORE_DESTROY_FX1_FILE "dlc2/island/fx_thrash_pustule_burst"
138 #define THRASHER_SPORE_DESTROY_FX2 "fx_thrash_pustule_spore_exp"
139 #define THRASHER_SPORE_DESTROY_FX2_FILE "dlc2/island/fx_thrash_pustule_spore_exp"
140 
141 #define THRASHER_SPORE_CLOUD_SM_FX "fx_spores_cloud_ambient_sm"
142 #define THRASHER_SPORE_CLOUD_SM_FX_FILE "dlc2/island/fx_spores_cloud_ambient_sm"
143 #define THRASHER_SPORE_CLOUD_MD_FX "fx_spores_cloud_ambient_md"
144 #define THRASHER_SPORE_CLOUD_MD_FX_FILE "dlc2/island/fx_spores_cloud_ambient_md"
145 #define THRASHER_SPORE_CLOUD_LRG_FX "fx_spores_cloud_ambient_lrg"
146 #define THRASHER_SPORE_CLOUD_LRG_FX_FILE "dlc2/island/fx_spores_cloud_ambient_lrg"
147 
148 #define THRASHER_SPORE_INFLATE_FX "fx_thrash_pustule_reinflate"
149 #define THRASHER_SPORE_INFLATE_FX_FILE "dlc2/island/fx_thrash_pustule_reinflate"
150 
151 #define THRASHER_SPORE_IMPACT_CF "thrasher_spore_impact"
152 #define THRASHER_SPORE_IMPACT_CF_TYPE "counter"
153 #define THRASHER_SPORE_IMPACT_CF_BITS 1
154 #define THRASHER_SPORE_IMPACT_FX "fx_thrash_pustule_impact"
155 #define THRASHER_SPORE_IMPACT_FX_FILE "dlc2/island/fx_thrash_pustule_impact"
156 
157 #define THRASHER_SPORE_CF "thrasher_spore_state"
158 #define THRASHER_SPORE_CF_TYPE "int"
159 #define THRASHER_SPORE_CF_BITS 3
160 #define THRASHER_SPORE_CF_SPORE1 1
161 #define THRASHER_SPORE_CF_SPORE2 2
162 #define THRASHER_SPORE_CF_SPORE3 4
163 #define THRASHER_SPORE_CF_SPORES array( THRASHER_SPORE_CF_SPORE1, THRASHER_SPORE_CF_SPORE2, THRASHER_SPORE_CF_SPORE3 )
164 
165 // Thrasher First Person Mouth
166 #define THRASHER_MOUTH_CF "thrasher_mouth_cf"
167 #define THRASHER_MOUTH_CF_TYPE "int"
168 // 2 bits per player
169 #define THRASHER_MOUTH_CF_BITS 8
170 #define THRASHER_MOUTH_CF_DELETE 0
171 #define THRASHER_MOUTH_CF_IDLE 1
172 #define THRASHER_MOUTH_CF_OPEN 2
173 #define THRASHER_MOUTH_CF_CLOSE 3
174 
175 #define THRASHER_MOUTH_IDLE_ANIM "p7_fxanim_zm_island_thrasher_stomach_idle_anim"
176 #define THRASHER_MOUTH_CLOSE_ANIM "p7_fxanim_zm_island_thrasher_stomach_close_anim"
177 #define THRASHER_MOUTH_OPEN_ANIM "p7_fxanim_zm_island_thrasher_stomach_open_anim"
178 
179 // Berserk Mode
180 #define THRASHER_BERSERK_CF "thrasher_berserk_state"
181 #define THRASHER_BERSERK_CF_TYPE "int"
182 #define THRASHER_BERSERK_CF_BITS 1
183 #define THRASHER_BERSERK_CF_NORMAL 0
184 #define THRASHER_BERSERK_CF_BERSERK 1
185 
186 // Spikes
187 #define THRASHER_SPIKE_COUNT 24
188 
189 // FX
190 #define THRASHER_FOOTSTEP_FX "fx_mech_foot_step"
191 #define THRASHER_FOOTSTEP_FX_FILE "dlc1/castle/fx_mech_foot_step"
192 
193 #define THRASHER_BERSERK_FX1 "fx_thrash_rage_gas_torso"
194 #define THRASHER_BERSERK_FX1_TAG "j_spinelower"
195 #define THRASHER_BERSERK_FX1_FILE "dlc2/island/fx_thrash_rage_gas_torso"
196 
197 #define THRASHER_BERSERK_FX2 "fx_thrash_rage_gas_leg_lft"
198 #define THRASHER_BERSERK_FX2_TAG "j_hip_le"
199 #define THRASHER_BERSERK_FX2_FILE "dlc2/island/fx_thrash_rage_gas_leg_lft"
200 
201 #define THRASHER_BERSERK_FX3 "fx_thrash_rage_gas_leg_rgt"
202 #define THRASHER_BERSERK_FX3_TAG "j_hip_ri"
203 #define THRASHER_BERSERK_FX3_FILE "dlc2/island/fx_thrash_rage_gas_leg_rgt"
204 
205 #define THRASHER_EYE_TAG "j_eyeball_le"
206 #define THRASHER_EYE_FX "fx_thrash_eye_glow"
207 #define THRASHER_EYE_FX_FILE "dlc2/island/fx_thrash_eye_glow"
208 #define THRASHER_BERSERK_EYE_FX "fx_thrash_eye_glow_rage"
209 #define THRASHER_BERSERK_EYE_FX_FILE "dlc2/island/fx_thrash_eye_glow_rage"
210 
211 #define THRASHER_CONSUMED_PLAYER_FX "fx_thrash_chest_mouth_drool"
212 #define THRASHER_CONSUMED_PLAYER_FX_FILE "dlc2/island/fx_thrash_chest_mouth_drool_1p"
213 
214 #define THRASHER_CONSUMED_PLAYER_POSTFX "pstfx_thrasher_stomach"
215 #define THRASHER_CONSUMED_PLAYER_VISIONSET_FILE "zm_isl_thrasher_stomach"
216 #define THRASHER_CONSUMED_PLAYER_VISIONSET_ALIAS "zm_isl_thrasher_stomach_visionset"
217 #define THRASHER_CONSUMED_PLAYER_VISIONSET_LERP_STEP_COUNT 16
218 #define THRASHER_CONSUMED_PLAYER_VISIONSET_RAMP_IN_DURATION 2
219 #define THRASHER_CONSUMED_PLAYER_VISIONSET_PRIORITY 30
220 
221 // Head Damage
222 #define THRASHER_HEAD_TAG "j_head"
223 #define THRASHER_HEAD_HITLOC "head"
224 
225 // Teleport
226 #define THRASHER_TELERPOT_MIN_DISTANCE_SQ THRASHER_TELEPORT_MIN_DISTANCE * THRASHER_TELEPORT_MIN_DISTANCE
227 #define THRASHER_TELEPORT_DESTINATION_SAFE_RADIUS 128
228 #define THRASHER_TELEPORT_DESTINATION_MAX_RADIUS 256