diff --git a/README.md b/README.md index ab532ea6..b08a5264 100644 --- a/README.md +++ b/README.md @@ -311,6 +311,7 @@ * Zombies no longer attack (except Zombie Shield) * Destroyed by taking 1500 damage * No longer destroyed by 2 grenades +* Can no longer be picked up after being destroyed ### Electric Trap * No longer needs to be powered by a Turbine diff --git a/scripts/zm/replaced/_zm_equipment.gsc b/scripts/zm/replaced/_zm_equipment.gsc index f4f91cdb..881c1187 100644 --- a/scripts/zm/replaced/_zm_equipment.gsc +++ b/scripts/zm/replaced/_zm_equipment.gsc @@ -64,7 +64,6 @@ placed_equipment_think( model, equipname, origin, angles, tradius, toffset ) pickupmodel.stub.model = pickupmodel; pickupmodel.stub.equipname = equipname; pickupmodel.equipname = equipname; - //pickupmodel thread maps\mp\zombies\_zm_equipment::item_attract_zombies(); pickupmodel thread item_watch_damage(); if ( maps\mp\zombies\_zm_equipment::is_limited_equipment( equipname ) ) { @@ -90,6 +89,52 @@ item_watch_damage() { self.health = 1000000; self waittill( "damage", amount ); - self maps\mp\zombies\_zm_equipment::item_damage( amount ); + self item_damage( amount ); } +} + +item_damage( damage ) +{ + if ( isdefined( self.isriotshield ) && self.isriotshield ) + { + if ( isdefined( level.riotshield_damage_callback ) && isdefined( self.owner ) ) + self.owner [[ level.riotshield_damage_callback ]]( damage, 0 ); + else if ( isdefined( level.deployed_riotshield_damage_callback ) ) + self [[ level.deployed_riotshield_damage_callback ]]( damage ); + } + else if ( isdefined( self.owner ) ) + self.owner player_damage_equipment( self.equipname, damage, self.origin, self.stub ); + else + { + if ( !isdefined( self.damage ) ) + self.damage = 0; + + self.damage += damage; + + if ( self.damage > 1500 ) + self thread maps\mp\zombies\_zm_equipment::dropped_equipment_destroy( 1 ); + } +} + +player_damage_equipment( equipment, damage, origin, stub ) +{ + if ( !isdefined( self.equipment_damage ) ) + self.equipment_damage = []; + + if ( !isdefined( self.equipment_damage[equipment] ) ) + self.equipment_damage[equipment] = 0; + + self.equipment_damage[equipment] += damage; + + if ( self.equipment_damage[equipment] > 1500 ) + { + thread maps\mp\zombies\_zm_unitrigger::unregister_unitrigger( stub ); + + if ( isdefined( level.placeable_equipment_destroy_fn[equipment] ) ) + self [[ level.placeable_equipment_destroy_fn[equipment] ]](); + else + equipment_disappear_fx( origin ); + + self equipment_release( equipment ); + } } \ No newline at end of file