From 5e9cbcceecbf55c716f51ba911328a33a34ac2d0 Mon Sep 17 00:00:00 2001 From: Jbleezy Date: Sun, 12 Mar 2023 01:06:40 -0800 Subject: [PATCH] Meat powerup: thrower can meat themself --- README.md | 1 + scripts/zm/replaced/zgrief.gsc | 60 ++++++++++++++++------------------ 2 files changed, 29 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index 542347fc..749766ef 100644 --- a/README.md +++ b/README.md @@ -302,6 +302,7 @@ ### Meat * All zombies go after player holding the meat * 60% move speed while holding the meat +* Player who threw the meat can meat themself * Decreased time on ground from 16 seconds to 10 seconds * Bounces off walls when thrown * Able to drop when players are down diff --git a/scripts/zm/replaced/zgrief.gsc b/scripts/zm/replaced/zgrief.gsc index 89940b09..067aaa4a 100644 --- a/scripts/zm/replaced/zgrief.gsc +++ b/scripts/zm/replaced/zgrief.gsc @@ -20,22 +20,19 @@ game_mode_spawn_player_logic() meat_bounce_override( pos, normal, ent, bounce ) { - if ( isdefined( ent ) && isplayer( ent ) ) + if ( isdefined( ent ) && isplayer( ent ) && is_player_valid(ent) && !ent hasWeapon("item_meat_zm") && !is_true(ent.dont_touch_the_meat) ) { - if ( is_player_valid(ent) ) - { - level thread meat_stink_player( ent ); + level thread meat_stink_player( ent ); - if ( isdefined( self.owner ) ) - { - maps\mp\_demo::bookmark( "zm_player_meat_stink", gettime(), ent, self.owner, 0, self ); - self.owner maps\mp\zombies\_zm_stats::increment_client_stat( "contaminations_given" ); - } + if ( isdefined( self.owner ) ) + { + maps\mp\_demo::bookmark( "zm_player_meat_stink", gettime(), ent, self.owner, 0, self ); + self.owner maps\mp\zombies\_zm_stats::increment_client_stat( "contaminations_given" ); + } - self delete(); + self delete(); - return; - } + return; } else { @@ -45,12 +42,15 @@ meat_bounce_override( pos, normal, ent, bounce ) foreach (player in players) { - if ( self.owner == player ) - continue; - if ( !is_player_valid(player) ) continue; + if ( player hasWeapon("item_meat_zm") ) + continue; + + if ( is_true(player.dont_touch_the_meat) ) + continue; + distsq = distancesquared( pos, player.origin ); if ( distsq < closest_player_dist ) @@ -74,10 +74,10 @@ meat_bounce_override( pos, normal, ent, bounce ) return; } - - playfx( level._effect["meat_impact"], self.origin ); } + playfx( level._effect["meat_impact"], self.origin ); + if (is_true(bounce)) { landed_on = self getgroundent(); @@ -88,29 +88,25 @@ meat_bounce_override( pos, normal, ent, bounce ) } } - if (!isDefined(level.meat_powerup) && !isDefined(level.meat_player)) + valid_poi = check_point_in_enabled_zone( pos, undefined, undefined ); + + if ( valid_poi ) { - valid_poi = check_point_in_enabled_zone( pos, undefined, undefined ); + self hide(); - if ( valid_poi ) + if (level.scr_zm_ui_gametype_obj == "zmeat") { - self hide(); - - if (level.scr_zm_ui_gametype_obj == "zmeat") - { - level notify("meat_powerup_drop"); - level.meat_powerup = maps\mp\zombies\_zm_powerups::specific_powerup_drop( "meat_stink", self.origin ); - } - else - { - level thread meat_stink_on_ground( self.origin ); - } + level.meat_powerup = maps\mp\zombies\_zm_powerups::specific_powerup_drop( "meat_stink", self.origin ); } else { - level notify("meat_inactive"); + level thread meat_stink_on_ground( self.origin ); } } + else + { + level notify("meat_inactive"); + } self delete(); }