Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2019
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.73 KB | None | 0 0
  1. #using scripts\zm\_zm_devgui;
  2. #using scripts\shared\ai_shared;
  3. #using scripts\shared\fx_shared;
  4. #using scripts\shared\util_shared;
  5. #using scripts\shared\flag_shared;
  6. #using scripts\codescripts\struct;
  7. #using scripts\shared\_burnplayer;
  8. #using scripts\shared\math_shared;
  9. #using scripts\shared\scene_shared;
  10. #using scripts\shared\array_shared;
  11. #using scripts\shared\system_shared;
  12. #using scripts\shared\flagsys_shared;
  13. #using scripts\shared\spawner_shared;
  14. #using scripts\shared\ai\systems\gib;
  15. #using scripts\shared\animation_shared;
  16. #using scripts\shared\callbacks_shared;
  17. #using scripts\shared\ai\systems\debug;
  18. #using scripts\shared\ai\zombie_utility;
  19. #using scripts\shared\clientfield_shared;
  20. #using scripts\shared\ai\archetype_utility;
  21. #using scripts\shared\ai\systems\blackboard;
  22. #using scripts\shared\ai\systems\behavior_tree_utility;
  23.  
  24. #precache( "fx", "fire/fx_embers_burst_optim" );
  25. #precache( "fx", "light/fx_light_spark_chest_zombie_optim" );
  26. #precache( "fx", "electric/fx_elec_sparks_burst_blue_optim" );
  27. #precache( "fx", "explosions/fx_ability_exp_ravage_core_optim" );
  28. #precache( "fx", "electric/fx_ability_elec_surge_short_robot_optim" );
  29. #precache( "fx", "explosions/fx_exp_dest_barrel_concussion_sm_optim" );
  30.  
  31. #namespace zm_elemental_zombie;
  32.  
  33. /*
  34. Name: __init__sytem__
  35. Namespace: zm_elemental_zombie
  36. Checksum: 0x1A2C8A6
  37. Offset: 0x5B0
  38. Size: 0x33
  39. Parameters: 0
  40. Flags: AutoExec
  41. */
  42. function autoexec __init__sytem__()
  43. {
  44. system::register( "zm_elemental_zombie", &__init__, undefined, undefined );
  45. }
  46.  
  47. /*
  48. Name: __init__
  49. Namespace: zm_elemental_zombie
  50. Checksum: 0xCF092CC1
  51. Offset: 0x5F0
  52. Size: 0x43
  53. Parameters: 0
  54. Flags: None
  55. */
  56. function __init__()
  57. {
  58. register_clientfields();
  59. }
  60.  
  61. /*
  62. Name: register_clientfields
  63. Namespace: zm_elemental_zombie
  64. Checksum: 0x7253FBC5
  65. Offset: 0x640
  66. Size: 0x123
  67. Parameters: 0
  68. Flags: Private
  69. */
  70. function private register_clientfields()
  71. {
  72. clientfield::register( "actor", "napalm_sfx", 11000, 1, "int" );
  73. clientfield::register( "actor", "sparky_damaged_fx", 1, 1, "counter" );
  74. clientfield::register( "actor", "napalm_damaged_fx", 1, 1, "counter" );
  75. clientfield::register( "actor", "sparky_zombie_spark_fx", 1, 1, "int" );
  76. clientfield::register( "actor", "sparky_zombie_death_fx", 1, 1, "int" );
  77. clientfield::register( "actor", "napalm_zombie_death_fx", 1, 1, "int" );
  78. }
  79.  
  80. /*
  81. Name: function_1b1bb1b
  82. Namespace: zm_elemental_zombie
  83. Checksum: 0xF0110717
  84. Offset: 0x770
  85. Size: 0x263
  86. Parameters: 0
  87. Flags: None
  88. */
  89. function function_1b1bb1b()
  90. {
  91. ai_zombie = self;
  92. if( !isalive( ai_zombie ) )
  93. {
  94. return;
  95. }
  96.  
  97. var_199ecc3a = function_4aeed0a5( "sparky" );
  98. if( !isdefined( level.var_1ae26ca5 ) || var_199ecc3a < level.var_1ae26ca5 )
  99. {
  100. if( !isdefined( ai_zombie.is_elemental_zombie ) || ai_zombie.is_elemental_zombie == 0 )
  101. {
  102. ai_zombie.is_elemental_zombie = 1;
  103. ai_zombie.var_9a02a614 = "sparky";
  104. ai_zombie thread function_d9226011();
  105. ai_zombie thread function_2987b6dc();
  106. ai_zombie.health = Int( ai_zombie.health * 1.5 );
  107. ai_zombie.maxhealth = Int( ai_zombie.maxhealth * 1.5 );
  108. ai_zombie clientfield::set( "sparky_zombie_spark_fx", 1 );
  109.  
  110. if( ai_zombie.iscrawler === 1 )
  111. {
  112. var_f4a5c99 = array( "ai_zm_dlc1_zombie_crawl_turn_sparky_a", "ai_zm_dlc1_zombie_crawl_turn_sparky_b", "ai_zm_dlc1_zombie_crawl_turn_sparky_c", "ai_zm_dlc1_zombie_crawl_turn_sparky_d", "ai_zm_dlc1_zombie_crawl_turn_sparky_e" );
  113. }
  114. else
  115. {
  116. var_f4a5c99 = array( "ai_zm_dlc1_zombie_turn_sparky_a", "ai_zm_dlc1_zombie_turn_sparky_b", "ai_zm_dlc1_zombie_turn_sparky_c", "ai_zm_dlc1_zombie_turn_sparky_d", "ai_zm_dlc1_zombie_turn_sparky_e" );
  117. }
  118.  
  119. if( isdefined( ai_zombie ) && !isdefined( ai_zombie.traversestartnode ) && ( !isdefined( self.var_bb98125f ) && self.var_bb98125f ) )
  120. {
  121. ai_zombie animation::play( array::random( var_f4a5c99 ), ai_zombie, undefined, 1, 0.2, 0.2 );
  122. }
  123. }
  124. }
  125. }
  126.  
  127. /*
  128. Name: function_f4defbc2
  129. Namespace: zm_elemental_zombie
  130. Checksum: 0x9D8B369A
  131. Offset: 0x9E0
  132. Size: 0x173
  133. Parameters: 0
  134. Flags: None
  135. */
  136. function function_f4defbc2()
  137. {
  138. if( isdefined( self ) )
  139. {
  140. ai_zombie = self;
  141. var_ac4641b = function_4aeed0a5( "napalm" );
  142. if( !isdefined( level.var_bd64e31e ) || var_ac4641b < level.var_bd64e31e )
  143. {
  144. if( !isdefined( ai_zombie.is_elemental_zombie ) || ai_zombie.is_elemental_zombie == 0 )
  145. {
  146. ai_zombie.is_elemental_zombie = 1;
  147. ai_zombie.var_9a02a614 = "napalm";
  148. ai_zombie thread function_e94aef80();
  149. ai_zombie thread function_d070bfba();
  150. ai_zombie clientfield::set( "napalm_sfx", 1 );
  151. ai_zombie.health = Int( ai_zombie.health * 0.75 );
  152. ai_zombie clientfield::set( "arch_actor_fire_fx", 1 );
  153. ai_zombie.maxhealth = Int( ai_zombie.maxhealth * 0.75 );
  154. ai_zombie thread zombie_utility::set_zombie_run_cycle( "sprint" );
  155. }
  156. }
  157. }
  158. }
  159.  
  160. /*
  161. Name: function_2987b6dc
  162. Namespace: zm_elemental_zombie
  163. Checksum: 0xD74A2C3F
  164. Offset: 0xB60
  165. Size: 0x77
  166. Parameters: 0
  167. Flags: None
  168. */
  169. function function_2987b6dc()
  170. {
  171. self endon( "death" );
  172. self endon( "entityshutdown" );
  173.  
  174. while( 1 )
  175. {
  176. self waittill( "damage" );
  177. if( RandomInt( 100 ) <= 50 )
  178. {
  179. self clientfield::increment( "sparky_damaged_fx" );
  180. }
  181.  
  182. wait( 0.05 );
  183. }
  184. }
  185.  
  186. /*
  187. Name: function_d070bfba
  188. Namespace: zm_elemental_zombie
  189. Checksum: 0x8E85BD04
  190. Offset: 0xBE0
  191. Size: 0x77
  192. Parameters: 0
  193. Flags: None
  194. */
  195. function function_d070bfba()
  196. {
  197. self endon( "death" );
  198. self endon( "entityshutdown" );
  199.  
  200. while( 1 )
  201. {
  202. self waittill( "damage" );
  203. if( RandomFloat( 100 ) <= 50 )
  204. {
  205. self clientfield::increment( "napalm_damaged_fx" );
  206. }
  207.  
  208. wait( 0.05 );
  209. }
  210. }
  211.  
  212. /*
  213. Name: function_d9226011
  214. Namespace: zm_elemental_zombie
  215. Checksum: 0x4F30462B
  216. Offset: 0xC60
  217. Size: 0xEB
  218. Parameters: 0
  219. Flags: None
  220. */
  221. function function_d9226011()
  222. {
  223. ai_zombie = self;
  224.  
  225. ai_zombie waittill( "death", attacker );
  226.  
  227. if( !isdefined( ai_zombie ) || ai_zombie.nuked === 1 )
  228. {
  229. return;
  230. }
  231.  
  232. gibserverutils::annihilate( ai_zombie );
  233. ai_zombie zombie_utility::gib_random_parts();
  234. ai_zombie clientfield::set( "sparky_zombie_death_fx", 1 );
  235. RadiusDamage( ai_zombie.origin + vectorscale( ( 0, 0, 1 ), 35 ), 128, 70, 30, attacker, "MOD_EXPLOSIVE" );
  236. }
  237.  
  238. /*
  239. Name: function_e94aef80
  240. Namespace: zm_elemental_zombie
  241. Checksum: 0x3B319540
  242. Offset: 0xD58
  243. Size: 0x13B
  244. Parameters: 0
  245. Flags: None
  246. */
  247. function function_e94aef80()
  248. {
  249. ai_zombie = self;
  250.  
  251. ai_zombie waittill( "death", attacker );
  252.  
  253. if( !isdefined( ai_zombie ) || ai_zombie.nuked === 1 )
  254. {
  255. return;
  256. }
  257.  
  258. gibserverutils::annihilate( ai_zombie );
  259. ai_zombie zombie_utility::gib_random_parts();
  260. ai_zombie clientfield::set( "napalm_zombie_death_fx", 1 );
  261.  
  262. if( isdefined( level.var_36b5dab ) && level.var_36b5dab || ( isdefined( ai_zombie.var_36b5dab ) && ai_zombie.var_36b5dab ) )
  263. {
  264. ai_zombie.custom_player_shellshock = &function_e6cd7e78;
  265. }
  266.  
  267. RadiusDamage( ai_zombie.origin + vectorscale( ( 0, 0, 1 ), 35 ), 128, 70, 30, attacker, "MOD_EXPLOSIVE" );
  268. }
  269.  
  270. /*
  271. Name: function_e6cd7e78
  272. Namespace: zm_elemental_zombie
  273. Checksum: 0x4B4A28FC
  274. Offset: 0xEA0
  275. Size: 0x73
  276. Parameters: 5
  277. Flags: None
  278. */
  279. function function_e6cd7e78( damage, attacker, direction_vec, point, mod )
  280. {
  281. if( GetDvarString( "blurpain" ) == "on" )
  282. {
  283. self ShellShock( "pain_zm", 0.5 );
  284. }
  285. }
  286.  
  287. /*
  288. Name: function_d41418b8
  289. Namespace: zm_elemental_zombie
  290. Checksum: 0x72BB41C7
  291. Offset: 0xF20
  292. Size: 0x63
  293. Parameters: 0
  294. Flags: None
  295. */
  296. function function_d41418b8()
  297. {
  298. a_zombies = GetAIArchetypeArray( "zombie" );
  299. a_filtered_zombies = array::filter( a_zombies, 0, &function_b804eb62 );
  300. return a_filtered_zombies;
  301. }
  302.  
  303. /*
  304. Name: function_c50e890f
  305. Namespace: zm_elemental_zombie
  306. Checksum: 0xDC4C9F9A
  307. Offset: 0xF90
  308. Size: 0x6B
  309. Parameters: 1
  310. Flags: None
  311. */
  312. function function_c50e890f( type )
  313. {
  314. a_zombies = GetAIArchetypeArray( "zombie" );
  315. a_filtered_zombies = Array::filter( a_zombies, 0, &function_361f6caa, type );
  316. return a_filtered_zombies;
  317. }
  318.  
  319. /*
  320. Name: function_4aeed0a5
  321. Namespace: zm_elemental_zombie
  322. Checksum: 0x96918936
  323. Offset: 0x1008
  324. Size: 0x35
  325. Parameters: 1
  326. Flags: None
  327. */
  328. function function_4aeed0a5( type )
  329. {
  330. a_zombies = function_c50e890f( type );
  331. return a_zombies.size;
  332. }
  333.  
  334. /*
  335. Name: function_361f6caa
  336. Namespace: zm_elemental_zombie
  337. Checksum: 0x2F762EF0
  338. Offset: 0x1048
  339. Size: 0x27
  340. Parameters: 2
  341. Flags: None
  342. */
  343. function function_361f6caa( ai_zombie, type )
  344. {
  345. return ai_zombie.var_9a02a614 === type;
  346. }
  347.  
  348. /*
  349. Name: function_b804eb62
  350. Namespace: zm_elemental_zombie
  351. Checksum: 0x735F2321
  352. Offset: 0x1078
  353. Size: 0x1F
  354. Parameters: 1
  355. Flags: None
  356. */
  357. function function_b804eb62( ai_zombie )
  358. {
  359. return ai_zombie.is_elemental_zombie !== 1;
  360. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement