diff --git a/scripts/zm/replaced/zgrief.gsc b/scripts/zm/replaced/zgrief.gsc index c9faa9ed..3cc13479 100644 --- a/scripts/zm/replaced/zgrief.gsc +++ b/scripts/zm/replaced/zgrief.gsc @@ -22,7 +22,16 @@ meat_bounce_override( pos, normal, ent, bounce ) { if ( isdefined( ent ) && isplayer( ent ) && is_player_valid(ent) && !ent hasWeapon("item_meat_zm") && !is_true(ent.dont_touch_the_meat) ) { - level thread meat_stink_player( ent ); + if (ent isMeleeing()) // && ent is_player_looking_at(pos, 0.5, 0) + { + ent thread maps\mp\gametypes_zm\zmeat::spike_the_meat(self); + + return; + } + else + { + level thread meat_stink_player( ent ); + } if ( isdefined( self.owner ) ) { @@ -62,7 +71,16 @@ meat_bounce_override( pos, normal, ent, bounce ) if ( isdefined( closest_player ) ) { - level thread meat_stink_player( closest_player ); + if (closest_player isMeleeing()) // && ent is_player_looking_at(pos, 0.5, 0) + { + closest_player thread maps\mp\gametypes_zm\zmeat::spike_the_meat(self); + + return; + } + else + { + level thread meat_stink_player( closest_player ); + } if ( isdefined( self.owner ) ) { diff --git a/scripts/zm/replaced/zmeat.gsc b/scripts/zm/replaced/zmeat.gsc index 4cc4b3cc..14f8112d 100644 --- a/scripts/zm/replaced/zmeat.gsc +++ b/scripts/zm/replaced/zmeat.gsc @@ -1,164 +1,8 @@ #include maps\mp\_utility; #include common_scripts\utility; #include maps\mp\zombies\_zm_utility; - #include maps\mp\zombies\_zm_game_module_meat_utility; - -item_meat_watch_trigger( meat_id, trigger, callback, playersoundonuse, npcsoundonuse ) -{ - self endon( "death" ); - self thread maps\mp\gametypes_zm\zmeat::item_quick_trigger( meat_id, trigger ); - while ( 1 ) - { - trigger waittill( "usetrigger", player ); - if ( !isalive( player ) ) - { - continue; - } - if ( !is_player_valid( player ) ) - { - continue; - } - if ( player has_powerup_weapon() ) - { - continue; - } - if ( player maps\mp\zombies\_zm_laststand::is_reviving_any() ) - { - continue; - } - volley = 0; - if ( self.meat_is_flying ) - { - if ( player isMeleeing() ) - { - volley = 1; - } - } - player.volley_meat = volley; - if ( is_true( self._fake_meat ) ) - { - maps\mp\gametypes_zm\zmeat::add_meat_event( "player_fake_take", player, self ); - } - else if ( volley ) - { - maps\mp\gametypes_zm\zmeat::add_meat_event( "player_volley", player, self ); - } - else if ( self.meat_is_moving ) - { - maps\mp\gametypes_zm\zmeat::add_meat_event( "player_catch", player, self ); - } - else - { - maps\mp\gametypes_zm\zmeat::add_meat_event( "player_take", player, self ); - } - if ( is_true( self._fake_meat ) ) - { - player playlocalsound( level.zmb_laugh_alias ); - wait_network_frame(); - if ( !isDefined( self ) ) - { - return; - } - self maps\mp\gametypes_zm\zmeat::cleanup_meat(); - return; - } - curr_weap = player getcurrentweapon(); - if ( !maps\mp\gametypes_zm\zmeat::is_meat( curr_weap ) ) - { - player.pre_meat_weapon = curr_weap; - } - if ( self.meat_is_moving ) - { - if ( volley ) - { - self maps\mp\gametypes_zm\zmeat::item_meat_volley( player ); - } - else - { - self maps\mp\gametypes_zm\zmeat::item_meat_caught( player, self.meat_is_flying ); - } - } - self maps\mp\gametypes_zm\zmeat::item_meat_pickup(); - if ( isDefined( playersoundonuse ) ) - { - player playlocalsound( playersoundonuse ); - } - if ( isDefined( npcsoundonuse ) ) - { - player playsound( npcsoundonuse ); - } - if ( volley ) - { - player thread spike_the_meat( self ); - } - else - { - self thread [[ callback ]]( player ); - if ( !isDefined( player._meat_hint_shown ) ) - { - player thread maps\mp\gametypes_zm\zmeat::show_meat_throw_hint(); - player._meat_hint_shown = 1; - } - } - } -} - -spike_the_meat( meat ) -{ - if ( is_true( self._kicking_meat ) ) - { - return; - } - fake_meat = 0; - self._kicking_meat = 1; - self._spawning_meat = 1; - org = self getweaponmuzzlepoint(); - vel = meat getvelocity(); - if ( !is_true( meat._fake_meat ) ) - { - meat maps\mp\gametypes_zm\zmeat::cleanup_meat(); - level._last_person_to_throw_meat = self; - level._last_person_to_throw_meat_time = getTime(); - level._meat_splitter_activated = 0; - } - else - { - fake_meat = 1; - meat maps\mp\gametypes_zm\zmeat::cleanup_meat(); - } - kickangles = self.angles; - launchdir = anglesToForward( kickangles ); - speed = length( vel ); - launchvel = vectorScale( launchdir, speed ); - grenade = self magicgrenadetype( get_gamemode_var( "item_meat_name" ), org, ( launchvel[ 0 ], launchvel[ 1 ], 120 ) ); - grenade playsound( "zmb_meat_meat_tossed" ); - grenade thread maps\mp\gametypes_zm\zmeat::waittill_loopstart(); - if ( fake_meat ) - { - grenade._fake_meat = 1; - grenade thread maps\mp\gametypes_zm\zmeat::delete_on_real_meat_pickup(); - level._kicked_meat = grenade; - } - wait 0.1; - self._spawning_meat = 0; - self._kicking_meat = 0; - if ( !fake_meat ) - { - level notify( "meat_thrown", self ); - level notify( "meat_kicked" ); - } -} - -create_item_meat_watcher() -{ - wait 0.05; - watcher = self maps\mp\gametypes_zm\_weaponobjects::createuseweaponobjectwatcher( "item_meat", get_gamemode_var( "item_meat_name" ), self.team ); - watcher.pickup = ::item_meat_on_pickup; - watcher.onspawn = ::item_meat_spawned; - watcher.onspawnretrievetriggers = ::play_item_meat_on_spawn_retrieve_trigger; - watcher.headicon = 0; -} +#include maps\mp\gametypes_zm\zmeat; item_meat_on_spawn_retrieve_trigger( watcher, player, weaponname ) { @@ -255,12 +99,6 @@ item_meat_on_spawn_retrieve_trigger( watcher, player, weaponname ) if ( isdefined( level.dont_allow_meat_interaction ) && level.dont_allow_meat_interaction ) self.item_meat_pick_up_trigger setinvisibletoall(); - else - { - self thread item_meat_watch_trigger( self.meat_id, self.item_meat_pick_up_trigger, ::item_meat_on_pickup, level.meat_pickupsoundplayer, level.meat_pickupsound ); - self thread kick_meat_monitor(); - self thread last_stand_meat_nudge(); - } self._respawned_meat = undefined; } @@ -332,14 +170,4 @@ player_wait_take_meat( meat_name ) self decrement_is_drinking(); self.dont_touch_the_meat = 0; -} - -kick_meat_monitor() -{ - // no kick -} - -last_stand_meat_nudge() -{ - // no kick } \ No newline at end of file diff --git a/scripts/zm/zgrief/zgrief_reimagined.gsc b/scripts/zm/zgrief/zgrief_reimagined.gsc index 484b4433..44c662e3 100644 --- a/scripts/zm/zgrief/zgrief_reimagined.gsc +++ b/scripts/zm/zgrief/zgrief_reimagined.gsc @@ -27,14 +27,7 @@ main() replaceFunc(maps\mp\gametypes_zm\_zm_gametype::onplayerspawned, scripts\zm\replaced\_zm_gametype::onplayerspawned); replaceFunc(maps\mp\gametypes_zm\_zm_gametype::hide_gump_loading_for_hotjoiners, scripts\zm\replaced\_zm_gametype::hide_gump_loading_for_hotjoiners); replaceFunc(maps\mp\gametypes_zm\zgrief::meat_stink, scripts\zm\replaced\zgrief::meat_stink); - replaceFunc(maps\mp\gametypes_zm\zgrief::meat_stink_on_ground, scripts\zm\replaced\zgrief::meat_stink_on_ground); - replaceFunc(maps\mp\gametypes_zm\zgrief::meat_stink_player, scripts\zm\replaced\zgrief::meat_stink_player); - replaceFunc(maps\mp\gametypes_zm\zmeat::item_meat_watch_trigger, scripts\zm\replaced\zmeat::item_meat_watch_trigger); replaceFunc(maps\mp\gametypes_zm\zmeat::item_meat_on_spawn_retrieve_trigger, scripts\zm\replaced\zmeat::item_meat_on_spawn_retrieve_trigger); - replaceFunc(maps\mp\gametypes_zm\zmeat::item_meat_watch_bounce, scripts\zm\replaced\zmeat::item_meat_watch_bounce); - replaceFunc(maps\mp\gametypes_zm\zmeat::player_wait_take_meat, scripts\zm\replaced\zmeat::player_wait_take_meat); - replaceFunc(maps\mp\gametypes_zm\zmeat::kick_meat_monitor, scripts\zm\replaced\zmeat::kick_meat_monitor); - replaceFunc(maps\mp\gametypes_zm\zmeat::last_stand_meat_nudge, scripts\zm\replaced\zmeat::last_stand_meat_nudge); } init() @@ -717,7 +710,7 @@ grief_onplayerconnect() self thread obj_waypoint(); self thread headstomp_watcher(); self thread smoke_grenade_cluster_watcher(); - self thread scripts\zm\replaced\zmeat::create_item_meat_watcher(); + self thread maps\mp\gametypes_zm\zmeat::create_item_meat_watcher(); self.killsconfirmed = 0; self.killsdenied = 0; self.captures = 0;