1 #using scripts\codescripts\struct;
3 #using scripts\shared\array_shared;
4 #using scripts\shared\callbacks_shared;
5 #using scripts\shared\clientfield_shared;
6 #using scripts\shared\flag_shared;
7 #using scripts\shared\flagsys_shared;
8 #using scripts\shared\system_shared;
9 #using scripts\shared\util_shared;
10 #using scripts\shared\visionset_mgr_shared;
12 #insert scripts\shared\shared.gsh;
13 #insert scripts\shared\version.gsh;
15 #using scripts\zm\_zm_devgui;
16 #using scripts\zm\_zm_equipment;
17 #using scripts\zm\_zm_unitrigger;
18 #using scripts\zm\_zm_utility;
19 #using scripts\zm\_zm_weap_riotshield;
20 #using scripts\zm\craftables\_zm_craftables;
21 #using scripts\zm\_zm_powerup_shield_charge;
23 #using scripts\shared\ai\zombie_utility;
25 #insert scripts\zm\craftables\_zm_craftables.gsh;
26 #insert scripts\zm\_zm_utility.gsh;
28 #precache( "string", "ZOMBIE_CRAFT_RIOT" );
29 #precache( "string", "ZOMBIE_GRAB_RIOTSHIELD" );
30 #precache( "triggerstring", "ZOMBIE_CRAFT_RIOT" );
31 #precache( "triggerstring", "ZOMBIE_GRAB_RIOTSHIELD" );
32 #precache( "triggerstring", "ZOMBIE_BOUGHT_RIOT" );
33 #precache( "string", "ZOMBIE_EQUIP_RIOTSHIELD_HOWTO" );
36 #define CLIENTFIELD_CRAFTABLE_PIECE_RIOTSHIELD_DOLLY "piece_riotshield_dolly"
37 #define CLIENTFIELD_CRAFTABLE_PIECE_RIOTSHIELD_DOOR "piece_riotshield_door"
38 #define CLIENTFIELD_CRAFTABLE_PIECE_RIOTSHIELD_CLAMP "piece_riotshield_clamp"
39 #define ZMUI_SHIELD_PART_PICKUP "ZMUI_SHIELD_PART_PICKUP"
40 #define ZMUI_SHIELD_CRAFTED "ZMUI_SHIELD_CRAFTED"
42 #define ZM_CRAFTABLES_NOT_ENOUGH_PIECES_UI_DURATION 3.5
43 #define ZM_CRAFTABLES_FULLY_CRAFTED_UI_DURATION 3.5
45 #define GROUND_LEVEL 0
46 #define RIOTSHIELD_OFFSET 26
48 #namespace zm_craft_shield;
61 function init( shield_equipment, shield_weapon, shield_model, str_to_craft = &
"ZOMBIE_CRAFT_RIOT", str_taken = &
"ZOMBIE_BOUGHT_RIOT", str_grab = &
"ZOMBIE_GRAB_RIOTSHIELD" )
63 level.craftable_shield_equipment = shield_equipment;
64 level.craftable_shield_weapon = shield_weapon;
65 level.craftable_shield_model = shield_model;
67 level.craftable_shield_grab = str_grab;
69 level.riotshield_supports_deploy =
false;
71 riotShield_dolly =
zm_craftables::generate_zombie_craftable_piece( level.craftable_shield_equipment,
"dolly", 32, 64,
GROUND_LEVEL, undefined, &
on_pickup_common, &
on_drop_common, undefined, undefined, undefined, undefined,
CLIENTFIELD_CRAFTABLE_PIECE_RIOTSHIELD_DOLLY,
CRAFTABLE_IS_SHARED,
"build_zs" );
72 riotShield_door =
zm_craftables::generate_zombie_craftable_piece( level.craftable_shield_equipment,
"door", 48, 15, 25, undefined, &
on_pickup_common, &
on_drop_common, undefined, undefined, undefined, undefined,
CLIENTFIELD_CRAFTABLE_PIECE_RIOTSHIELD_DOOR,
CRAFTABLE_IS_SHARED,
"build_zs" );
73 riotShield_clamp =
zm_craftables::generate_zombie_craftable_piece( level.craftable_shield_equipment,
"clamp", 48, 15, 25, undefined, &
on_pickup_common, &
on_drop_common, undefined, undefined, undefined, undefined,
CLIENTFIELD_CRAFTABLE_PIECE_RIOTSHIELD_CLAMP,
CRAFTABLE_IS_SHARED,
"build_zs" );
82 riotShield = SpawnStruct();
83 riotShield.name = level.craftable_shield_equipment;
84 riotShield.weaponname = level.craftable_shield_weapon;
124 player playsound(
"zmb_craftable_pickup" );
126 if( isdefined( level.craft_shield_piece_pickup_vo_override ) )
128 player thread [[level.craft_shield_piece_pickup_vo_override]]();
131 foreach( e_player
in level.players )
138 self.piece_owner = player;
148 self.piece_owner = undefined;
154 if( isdefined( level.craft_shield_pickup_override ) )
156 [[level.craft_shield_pickup_override]]();
162 players = level.players;
163 foreach( e_player
in players )
178 if( isdefined( level.craft_shield_drop_override ) )
180 [[level.craft_shield_drop_override]]();
186 if ( isdefined(player.player_shield_reset_health))
188 player [[player.player_shield_reset_health]]();
190 if ( isdefined(player.player_shield_reset_location))
192 player [[player.player_shield_reset_location]]();
196 player playsound(
"zmb_craftable_buy_shield" );
197 level notify(
"shield_built", player );