mirror of
https://github.com/JezuzLizard/BO2-Reimagined.git
synced 2025-06-23 13:40:22 -05:00
Meat powerup: add back melee moving meat throws it
This commit is contained in:
@ -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) )
|
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 ) )
|
if ( isdefined( self.owner ) )
|
||||||
{
|
{
|
||||||
@ -62,7 +71,16 @@ meat_bounce_override( pos, normal, ent, bounce )
|
|||||||
|
|
||||||
if ( isdefined( closest_player ) )
|
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 ) )
|
if ( isdefined( self.owner ) )
|
||||||
{
|
{
|
||||||
|
@ -1,164 +1,8 @@
|
|||||||
#include maps\mp\_utility;
|
#include maps\mp\_utility;
|
||||||
#include common_scripts\utility;
|
#include common_scripts\utility;
|
||||||
#include maps\mp\zombies\_zm_utility;
|
#include maps\mp\zombies\_zm_utility;
|
||||||
|
|
||||||
#include maps\mp\zombies\_zm_game_module_meat_utility;
|
#include maps\mp\zombies\_zm_game_module_meat_utility;
|
||||||
|
#include maps\mp\gametypes_zm\zmeat;
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
item_meat_on_spawn_retrieve_trigger( watcher, player, weaponname )
|
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 )
|
if ( isdefined( level.dont_allow_meat_interaction ) && level.dont_allow_meat_interaction )
|
||||||
self.item_meat_pick_up_trigger setinvisibletoall();
|
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;
|
self._respawned_meat = undefined;
|
||||||
}
|
}
|
||||||
@ -333,13 +171,3 @@ player_wait_take_meat( meat_name )
|
|||||||
|
|
||||||
self.dont_touch_the_meat = 0;
|
self.dont_touch_the_meat = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
kick_meat_monitor()
|
|
||||||
{
|
|
||||||
// no kick
|
|
||||||
}
|
|
||||||
|
|
||||||
last_stand_meat_nudge()
|
|
||||||
{
|
|
||||||
// no kick
|
|
||||||
}
|
|
@ -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::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\_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, 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_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()
|
init()
|
||||||
@ -717,7 +710,7 @@ grief_onplayerconnect()
|
|||||||
self thread obj_waypoint();
|
self thread obj_waypoint();
|
||||||
self thread headstomp_watcher();
|
self thread headstomp_watcher();
|
||||||
self thread smoke_grenade_cluster_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.killsconfirmed = 0;
|
||||||
self.killsdenied = 0;
|
self.killsdenied = 0;
|
||||||
self.captures = 0;
|
self.captures = 0;
|
||||||
|
Reference in New Issue
Block a user