Checked _zm_riotshield_prison.gsc

This commit is contained in:
JezuzLizard
2021-03-14 11:20:53 -07:00
parent 86f24361a4
commit ca798eb1f5

View File

@ -1,3 +1,4 @@
//checked includes match cerberus output
#include maps/mp/zombies/_zm_weapons; #include maps/mp/zombies/_zm_weapons;
#include maps/mp/zombies/_zm_equipment; #include maps/mp/zombies/_zm_equipment;
#include maps/mp/zombies/_zm_buildables; #include maps/mp/zombies/_zm_buildables;
@ -6,7 +7,7 @@
#include maps/mp/zombies/_zm_utility; #include maps/mp/zombies/_zm_utility;
#include maps/mp/_utility; #include maps/mp/_utility;
init() init() //checked matches cerberus output
{ {
level.riotshield_name = "alcatraz_shield_zm"; level.riotshield_name = "alcatraz_shield_zm";
level.deployedshieldmodel = []; level.deployedshieldmodel = [];
@ -36,7 +37,7 @@ init()
level.riotshield_placement_zoffset = 26; level.riotshield_placement_zoffset = 26;
} }
attachriotshield( model, tag ) attachriotshield( model, tag ) //checked matches cerberus output
{ {
if ( isDefined( self.prev_shield_model ) && isDefined( self.prev_shield_tag ) ) if ( isDefined( self.prev_shield_model ) && isDefined( self.prev_shield_tag ) )
{ {
@ -50,7 +51,7 @@ attachriotshield( model, tag )
} }
} }
removeriotshield() removeriotshield() //checked matches cerberus output
{ {
if ( isDefined( self.prev_shield_model ) && isDefined( self.prev_shield_tag ) ) if ( isDefined( self.prev_shield_model ) && isDefined( self.prev_shield_tag ) )
{ {
@ -65,7 +66,7 @@ removeriotshield()
self setheldweaponmodel( 0 ); self setheldweaponmodel( 0 );
} }
setriotshieldviewmodel( modelnum ) setriotshieldviewmodel( modelnum ) //checked matches cerberus output
{ {
self.prev_shield_viewmodel = modelnum; self.prev_shield_viewmodel = modelnum;
if ( self getcurrentweapon() != level.riotshield_name ) if ( self getcurrentweapon() != level.riotshield_name )
@ -82,7 +83,7 @@ setriotshieldviewmodel( modelnum )
} }
} }
specialriotshieldviewmodel() specialriotshieldviewmodel() //checked matches cerberus output
{ {
if ( self getcurrentweapon() != level.riotshield_name ) if ( self getcurrentweapon() != level.riotshield_name )
{ {
@ -91,7 +92,7 @@ specialriotshieldviewmodel()
self setheldweaponmodel( 3 ); self setheldweaponmodel( 3 );
} }
restoreriotshieldviewmodel() restoreriotshieldviewmodel() //checked matches cerberus output
{ {
if ( self getcurrentweapon() != level.riotshield_name ) if ( self getcurrentweapon() != level.riotshield_name )
{ {
@ -107,7 +108,7 @@ restoreriotshieldviewmodel()
} }
} }
updateriotshieldmodel() updateriotshieldmodel() //checked changed to match cerberus output
{ {
if ( !isDefined( self.shield_damage_level ) ) if ( !isDefined( self.shield_damage_level ) )
{ {
@ -132,34 +133,28 @@ updateriotshieldmodel()
if ( self.prev_shield_placement == 0 ) if ( self.prev_shield_placement == 0 )
{ {
self attachriotshield(); self attachriotshield();
return;
} }
else if ( self.prev_shield_placement == 1 ) else if ( self.prev_shield_placement == 1 )
{ {
self attachriotshield( level.carriedshieldmodel[ self.prev_shield_damage_level ], "tag_weapon_left" ); self attachriotshield( level.carriedshieldmodel[ self.prev_shield_damage_level ], "tag_weapon_left" );
self setriotshieldviewmodel( self.prev_shield_damage_level ); self setriotshieldviewmodel( self.prev_shield_damage_level );
return;
} }
else if ( self.prev_shield_placement == 2 ) else if ( self.prev_shield_placement == 2 )
{ {
self attachriotshield( level.stowedshieldmodel[ self.prev_shield_damage_level ], "tag_stowed_back" ); self attachriotshield( level.stowedshieldmodel[ self.prev_shield_damage_level ], "tag_stowed_back" );
return;
} }
else else if ( self.prev_shield_placement == 3 )
{ {
if ( self.prev_shield_placement == 3 ) self attachriotshield();
if ( isDefined( self.shield_ent ) )
{ {
self attachriotshield(); self.shield_ent setmodel( level.deployedshieldmodel[ self.prev_shield_damage_level ] );
if ( isDefined( self.shield_ent ) )
{
self.shield_ent setmodel( level.deployedshieldmodel[ self.prev_shield_damage_level ] );
}
} }
} }
} }
} }
updatestandaloneriotshieldmodel() updatestandaloneriotshieldmodel() //checked matches cerberus output
{ {
update = 0; update = 0;
if ( !isDefined( self.prev_shield_damage_level ) || self.prev_shield_damage_level != self.shield_damage_level ) if ( !isDefined( self.prev_shield_damage_level ) || self.prev_shield_damage_level != self.shield_damage_level )
@ -173,7 +168,7 @@ updatestandaloneriotshieldmodel()
} }
} }
watchshieldlaststand() watchshieldlaststand() //checked matches cerberus output used is_true() instead
{ {
self endon( "death" ); self endon( "death" );
self endon( "disconnect" ); self endon( "disconnect" );
@ -183,7 +178,7 @@ watchshieldlaststand()
{ {
self waittill( "weapons_taken_for_last_stand" ); self waittill( "weapons_taken_for_last_stand" );
self.riotshield_hidden = 0; self.riotshield_hidden = 0;
if ( isDefined( self.hasriotshield ) && self.hasriotshield ) if ( is_true( self.hasriotshield ) )
{ {
if ( self.prev_shield_placement == 1 || self.prev_shield_placement == 2 ) if ( self.prev_shield_placement == 1 || self.prev_shield_placement == 2 )
{ {
@ -209,12 +204,21 @@ watchshieldlaststand()
} }
} }
trackriotshield()
trackriotshield() //checked changed to match cerberus output
{ {
self endon( "death" ); self endon( "death" );
self endon( "disconnect" ); self endon( "disconnect" );
self.hasriotshield = self hasweapon( level.riotshield_name ); self.hasriotshield = self hasweapon( level.riotshield_name );
self.hasriotshieldequipped = self getcurrentweapon() == level.riotshield_name; if ( self getcurrentweapon() == level.riotshield_name )
{
self.hasriotshieldequipped = 1;
}
else
{
self.hasriotshieldequipped = 0;
}
self.shield_placement = 0; self.shield_placement = 0;
if ( self.hasriotshield ) if ( self.hasriotshield )
{ {
@ -238,7 +242,7 @@ trackriotshield()
{ {
continue; continue;
} }
else if ( isDefined( self.riotshieldentity ) ) if ( isDefined( self.riotshieldentity ) )
{ {
self notify( "destroy_riotshield" ); self notify( "destroy_riotshield" );
} }
@ -252,79 +256,74 @@ trackriotshield()
self.hasriotshieldequipped = 1; self.hasriotshieldequipped = 1;
continue; continue;
} }
else if ( self ismantling() && newweapon == "none" ) if ( self ismantling() && newweapon == "none" )
{ {
continue; continue;
} }
else if ( self.hasriotshieldequipped )
{ {
if ( self.hasriotshieldequipped ) /*
/#
assert( self.hasriotshield );
#/
*/
self.hasriotshield = self hasweapon( level.riotshield_name );
if ( isDefined( self.riotshield_hidden ) && self.riotshield_hidden )
{ {
/#
assert( self.hasriotshield );
#/
self.hasriotshield = self hasweapon( level.riotshield_name );
if ( isDefined( self.riotshield_hidden ) && self.riotshield_hidden )
{
}
else
{
if ( self.hasriotshield )
{
self.shield_placement = 2;
break;
}
else if ( isDefined( self.shield_ent ) )
{
/#
assert( self.shield_placement == 3 );
#/
break;
}
else
{
self.shield_placement = 0;
}
}
self updateriotshieldmodel();
self.hasriotshieldequipped = 0;
break;
} }
else if ( self.hasriotshield ) else if ( self.hasriotshield )
{ {
if ( !self hasweapon( level.riotshield_name ) ) self.shield_placement = 2;
{ break;
self.shield_placement = 0; }
self updateriotshieldmodel(); else if ( isDefined( self.shield_ent ) )
self.hasriotshield = 0; {
} /*
/#
assert( self.shield_placement == 3 );
#/
*/
break; break;
} }
else else
{ {
if ( self hasweapon( level.riotshield_name ) ) self.shield_placement = 0;
{
self.shield_placement = 2;
self updateriotshieldmodel();
self.hasriotshield = 1;
}
} }
self updateriotshieldmodel();
self.hasriotshieldequipped = 0;
break;
}
if ( self.hasriotshield )
{
if ( !self hasweapon( level.riotshield_name ) )
{
self.shield_placement = 0;
self updateriotshieldmodel();
self.hasriotshield = 0;
}
continue;
}
if ( self hasweapon( level.riotshield_name ) )
{
self.shield_placement = 2;
self updateriotshieldmodel();
self.hasriotshield = 1;
} }
} }
} }
trackequipmentchange() trackequipmentchange() //checked changed to match cerberus output
{ {
self endon( "death" ); self endon( "death" );
self endon( "disconnect" ); self endon( "disconnect" );
for ( ;; ) for ( ;; )
{ {
self waittill( "equipment_dropped", equipname ); self waittill( "equipment_dropped", equipname );
self notify( "weapon_change" ); self notify( "weapon_change", self getcurrentweapon() );
} }
} }
updateriotshieldplacement() updateriotshieldplacement() //checked matches cerberus output
{ {
self endon( "death" ); self endon( "death" );
self endon( "disconnect" ); self endon( "disconnect" );
@ -344,18 +343,18 @@ updateriotshieldplacement()
self specialriotshieldviewmodel(); self specialriotshieldviewmodel();
self setplacementhint( 0 ); self setplacementhint( 0 );
} }
wait 0,05; wait 0.05;
} }
} }
startriotshielddeploy() startriotshielddeploy() //checked matches cerberus output
{ {
self notify( "start_riotshield_deploy" ); self notify( "start_riotshield_deploy" );
self thread updateriotshieldplacement(); self thread updateriotshieldplacement();
self thread watchriotshielddeploy(); self thread watchriotshielddeploy();
} }
spawnriotshieldcover( origin, angles ) spawnriotshieldcover( origin, angles ) //checked matches cerberus output
{ {
shield_ent = spawn( "script_model", origin, 1 ); shield_ent = spawn( "script_model", origin, 1 );
shield_ent.angles = angles; shield_ent.angles = angles;
@ -371,7 +370,7 @@ spawnriotshieldcover( origin, angles )
return shield_ent; return shield_ent;
} }
watchriotshielddeploy() watchriotshielddeploy() //checked matches cerberus output
{ {
self endon( "death" ); self endon( "death" );
self endon( "disconnect" ); self endon( "disconnect" );
@ -404,7 +403,7 @@ watchriotshielddeploy()
} }
} }
check_plant_position( origin, angles ) check_plant_position( origin, angles ) //checked matches cerberus output
{ {
if ( isDefined( level.equipment_safe_to_drop ) ) if ( isDefined( level.equipment_safe_to_drop ) )
{ {
@ -412,7 +411,7 @@ check_plant_position( origin, angles )
test_ent = spawn( "script_model", origin ); test_ent = spawn( "script_model", origin );
test_ent setmodel( level.deployedshieldmodel[ 0 ] ); test_ent setmodel( level.deployedshieldmodel[ 0 ] );
test_ent.angles = angles; test_ent.angles = angles;
if ( !( self [[ level.equipment_safe_to_drop ]]( test_ent ) ) ) if ( !self [[ level.equipment_safe_to_drop ]]( test_ent ) )
{ {
ret = 0; ret = 0;
} }
@ -422,7 +421,7 @@ check_plant_position( origin, angles )
return 1; return 1;
} }
doriotshielddeploy( origin, angles ) doriotshielddeploy( origin, angles ) //checked matches cerberus output
{ {
self endon( "death" ); self endon( "death" );
self endon( "disconnect" ); self endon( "disconnect" );
@ -437,11 +436,13 @@ doriotshielddeploy( origin, angles )
shield_ent = self spawnriotshieldcover( origin + ( 0, 0, zoffset ), angles ); shield_ent = self spawnriotshieldcover( origin + ( 0, 0, zoffset ), angles );
item_ent = deployriotshield( self, shield_ent ); item_ent = deployriotshield( self, shield_ent );
primaries = self getweaponslistprimaries(); primaries = self getweaponslistprimaries();
/*
/# /#
assert( isDefined( item_ent ) ); assert( isDefined( item_ent ) );
assert( !isDefined( self.riotshieldretrievetrigger ) ); assert( !isDefined( self.riotshieldretrievetrigger ) );
assert( !isDefined( self.riotshieldentity ) ); assert( !isDefined( self.riotshieldentity ) );
#/ #/
*/
self maps/mp/zombies/_zm_weapons::switch_back_primary_weapon( primaries[ 0 ] ); self maps/mp/zombies/_zm_weapons::switch_back_primary_weapon( primaries[ 0 ] );
if ( isDefined( level.equipment_planted ) ) if ( isDefined( level.equipment_planted ) )
{ {
@ -449,7 +450,7 @@ doriotshielddeploy( origin, angles )
} }
if ( isDefined( level.equipment_safe_to_drop ) ) if ( isDefined( level.equipment_safe_to_drop ) )
{ {
if ( !( self [[ level.equipment_safe_to_drop ]]( shield_ent ) ) ) if ( !self [[ level.equipment_safe_to_drop ]]( shield_ent ) )
{ {
self notify( "destroy_riotshield" ); self notify( "destroy_riotshield" );
shield_ent delete(); shield_ent delete();
@ -468,11 +469,13 @@ doriotshielddeploy( origin, angles )
return shield_ent; return shield_ent;
} }
riotshielddistancetest( origin ) riotshielddistancetest( origin ) //checked matches cerberus output
{ {
/*
/# /#
assert( isDefined( origin ) ); assert( isDefined( origin ) );
#/ #/
*/
min_dist_squared = getDvarFloat( "riotshield_deploy_limit_radius" ); min_dist_squared = getDvarFloat( "riotshield_deploy_limit_radius" );
min_dist_squared *= min_dist_squared; min_dist_squared *= min_dist_squared;
i = 0; i = 0;
@ -483,9 +486,11 @@ riotshielddistancetest( origin )
dist_squared = distancesquared( level.players[ i ].riotshieldentity.origin, origin ); dist_squared = distancesquared( level.players[ i ].riotshieldentity.origin, origin );
if ( min_dist_squared > dist_squared ) if ( min_dist_squared > dist_squared )
{ {
/*
/# /#
println( "Shield placement denied! Failed distance check to other riotshields." ); println( "Shield placement denied! Failed distance check to other riotshields." );
#/ #/
*/
return 0; return 0;
} }
} }
@ -494,12 +499,14 @@ riotshielddistancetest( origin )
return 1; return 1;
} }
watchdeployedriotshieldents() watchdeployedriotshieldents() //checked matches cerberus output
{ {
/*
/# /#
assert( isDefined( self.riotshieldretrievetrigger ) ); assert( isDefined( self.riotshieldretrievetrigger ) );
assert( isDefined( self.riotshieldentity ) ); assert( isDefined( self.riotshieldentity ) );
#/ #/
*/
riotshieldretrievetrigger = self.riotshieldretrievetrigger; riotshieldretrievetrigger = self.riotshieldretrievetrigger;
riotshieldentity = self.riotshieldentity; riotshieldentity = self.riotshieldentity;
self waittill_any( "destroy_riotshield", "disconnect", "alcatraz_shield_zm_taken" ); self waittill_any( "destroy_riotshield", "disconnect", "alcatraz_shield_zm_taken" );
@ -518,7 +525,7 @@ watchdeployedriotshieldents()
} }
} }
watchdeployedriotshielddamage() watchdeployedriotshielddamage() //checked changed to match cerberus output
{ {
self endon( "death" ); self endon( "death" );
damagemax = getDvarInt( "riotshield_deployed_health" ); damagemax = getDvarInt( "riotshield_deployed_health" );
@ -542,7 +549,7 @@ watchdeployedriotshielddamage()
assert( isDefined( self.owner.team ) ); assert( isDefined( self.owner.team ) );
} }
#/ #/
while ( is_encounter() && attacker.team == self.owner.team && attacker != self.owner ) if ( is_encounter() && attacker.team == self.owner.team && attacker != self.owner )
{ {
continue; continue;
} }
@ -551,41 +558,32 @@ watchdeployedriotshielddamage()
self.owner [[ level.riotshield_damage_callback ]]( damage, 0 ); self.owner [[ level.riotshield_damage_callback ]]( damage, 0 );
continue; continue;
} }
else else if ( type == "MOD_MELEE" )
{ {
if ( type == "MOD_MELEE" ) damage *= getDvarFloat( "riotshield_melee_damage_scale" );
{ }
damage *= getDvarFloat( "riotshield_melee_damage_scale" ); else if ( type == "MOD_PISTOL_BULLET" || type == "MOD_RIFLE_BULLET" )
} {
else if ( type == "MOD_PISTOL_BULLET" || type == "MOD_RIFLE_BULLET" ) damage *= getDvarFloat( "riotshield_bullet_damage_scale" );
{ }
damage *= getDvarFloat( "riotshield_bullet_damage_scale" ); if ( type == "MOD_GRENADE" || type == "MOD_GRENADE_SPLASH" || type == "MOD_EXPLOSIVE" || type == "MOD_EXPLOSIVE_SPLASH" || type == "MOD_PROJECTILE" || type == "MOD_PROJECTILE_SPLASH" )
} {
else damage *= getDvarFloat( "riotshield_explosive_damage_scale" );
{ break;
if ( type != "MOD_GRENADE" && type != "MOD_GRENADE_SPLASH" && type != "MOD_EXPLOSIVE" && type != "MOD_EXPLOSIVE_SPLASH" || type == "MOD_PROJECTILE" && type == "MOD_PROJECTILE_SPLASH" ) }
{ else if ( type == "MOD_IMPACT" )
damage *= getDvarFloat( "riotshield_explosive_damage_scale" ); {
break; damage *= getDvarFloat( "riotshield_projectile_damage_scale" );
} }
else self.damagetaken += damage;
{ if ( self.damagetaken >= damagemax )
if ( type == "MOD_IMPACT" ) {
{ self damagethendestroyriotshield();
damage *= getDvarFloat( "riotshield_projectile_damage_scale" );
}
}
}
self.damagetaken += damage;
if ( self.damagetaken >= damagemax )
{
self damagethendestroyriotshield();
}
} }
} }
} }
damagethendestroyriotshield() damagethendestroyriotshield() //checked matches cerberus output
{ {
self endon( "death" ); self endon( "death" );
self.owner.riotshieldretrievetrigger delete(); self.owner.riotshieldretrievetrigger delete();
@ -595,13 +593,13 @@ damagethendestroyriotshield()
self.owner notify( "destroy_riotshield" ); self.owner notify( "destroy_riotshield" );
} }
deleteshieldondamage( shield_ent ) deleteshieldondamage( shield_ent ) //checked matches cerberus output
{ {
shield_ent waittill( "death" ); shield_ent waittill( "death" );
self notify( "destroy_riotshield" ); self notify( "destroy_riotshield" );
} }
deleteshieldmodelonweaponpickup( shield_trigger ) deleteshieldmodelonweaponpickup( shield_trigger ) //checked matches cerberus output
{ {
shield_trigger waittill( "trigger", player ); shield_trigger waittill( "trigger", player );
self maps/mp/zombies/_zm_equipment::equipment_from_deployed( level.riotshield_name ); self maps/mp/zombies/_zm_equipment::equipment_from_deployed( level.riotshield_name );
@ -615,18 +613,15 @@ deleteshieldmodelonweaponpickup( shield_trigger )
} }
} }
watchshieldtriggervisibility( trigger ) watchshieldtriggervisibility( trigger ) //checked partially changed to match cerberus output see compiler_limitations.md No. 2
{ {
self endon( "death" ); self endon( "death" );
trigger endon( "death" ); trigger endon( "death" );
while ( isDefined( trigger ) ) while ( isDefined( trigger ) )
{ {
players = get_players(); players = get_players();
_a759 = players; foreach ( player in players )
_k759 = getFirstArrayKey( _a759 );
while ( isDefined( _k759 ) )
{ {
player = _a759[ _k759 ];
pickup = 1; pickup = 1;
if ( !isDefined( player ) ) if ( !isDefined( player ) )
{ {
@ -634,7 +629,7 @@ watchshieldtriggervisibility( trigger )
else if ( is_true( player.afterlife ) ) else if ( is_true( player.afterlife ) )
{ {
trigger setinvisibletoplayer( player ); trigger setinvisibletoplayer( player );
wait 0,05; wait 0.05;
} }
else else
{ {
@ -654,15 +649,14 @@ watchshieldtriggervisibility( trigger )
{ {
trigger setinvisibletoplayer( player ); trigger setinvisibletoplayer( player );
} }
wait 0,05; wait 0.05;
} }
_k759 = getNextArrayKey( _a759, _k759 );
} }
wait 0,05; wait 0.05;
} }
} }
deleteriotshieldonplayerdeath() deleteriotshieldonplayerdeath() //checked matches cerberus output
{ {
self.riotshieldentity endon( "death" ); self.riotshieldentity endon( "death" );
self waittill( "death" ); self waittill( "death" );