diff --git a/README.md b/README.md index 68e0817b..b1e7d094 100644 --- a/README.md +++ b/README.md @@ -228,5 +228,7 @@ * 0.5 second zombie spawn rate * Only sprinting zombies * Every player starts with 10000 points +* Decreased stun time by enemy players from 0.75 seconds to 0.5 seconds +* Players can be stunned by enemy players while already stunned * Teams win rounds by getting all enemy players down * First team to win 3 rounds wins the game \ No newline at end of file diff --git a/scripts/zm/_zm_reimagined_grief.gsc b/scripts/zm/_zm_reimagined_grief.gsc index 0d3b8e17..c0e5318e 100644 --- a/scripts/zm/_zm_reimagined_grief.gsc +++ b/scripts/zm/_zm_reimagined_grief.gsc @@ -135,6 +135,7 @@ set_grief_vars() level.zombie_vars["zombie_health_start"] = 2000; level.zombie_vars["zombie_spawn_delay"] = 0.5; level.custom_end_screen = ::custom_end_screen; + level._game_module_player_damage_callback = ::game_module_player_damage_callback; level.grief_winning_score = 3; level.grief_score = []; @@ -343,6 +344,73 @@ custom_end_screen() } } +game_module_player_damage_callback( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime ) +{ + self.last_damage_from_zombie_or_player = 0; + if ( isDefined( eattacker ) ) + { + if ( isplayer( eattacker ) && eattacker == self ) + { + return; + } + if ( isDefined( eattacker.is_zombie ) || eattacker.is_zombie && isplayer( eattacker ) ) + { + self.last_damage_from_zombie_or_player = 1; + } + } + + if ( is_true( self._being_shellshocked ) || self maps/mp/zombies/_zm_laststand::player_is_in_laststand() ) + { + return; + } + + if ( isplayer( eattacker ) && isDefined( eattacker._encounters_team ) && eattacker._encounters_team != self._encounters_team ) + { + if ( is_true( self.hasriotshield ) && isDefined( vdir ) ) + { + if ( is_true( self.hasriotshieldequipped ) ) + { + if ( self maps/mp/zombies/_zm::player_shield_facing_attacker( vdir, 0.2 ) && isDefined( self.player_shield_apply_damage ) ) + { + return; + } + } + else if ( !isdefined( self.riotshieldentity ) ) + { + if ( !self maps/mp/zombies/_zm::player_shield_facing_attacker( vdir, -0.2 ) && isdefined( self.player_shield_apply_damage ) ) + { + return; + } + } + } + + if ( isDefined( level._game_module_player_damage_grief_callback ) ) + { + self [[ level._game_module_player_damage_grief_callback ]]( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime ); + } + + if ( isDefined( level._effect[ "butterflies" ] ) ) + { + if ( isDefined( sweapon ) && weapontype( sweapon ) == "grenade" ) + { + playfx( level._effect[ "butterflies" ], self.origin + vectorScale( ( 1, 1, 1 ), 40 ) ); + } + else + { + playfx( level._effect[ "butterflies" ], vpoint, vdir ); + } + } + + self thread do_game_mode_shellshock(); + self playsound( "zmb_player_hit_ding" ); + } +} + +do_game_mode_shellshock() +{ + self shellshock( "grief_stab_zm", 0.5 ); +} + unlimited_zombies() { while(1)