1
0
mirror of https://github.com/JezuzLizard/BO2-Reimagined.git synced 2025-06-10 23:27:57 -05:00

Meat powerup: fix not working after fast_restart

Meat powerup: optimize Meat weapon init code
This commit is contained in:
Jbleezy
2023-12-27 22:41:26 -08:00
parent 3fffb47e34
commit e59883db37
5 changed files with 76 additions and 38 deletions

View File

@ -21,10 +21,50 @@ init_item_meat(gametype)
set_gamemode_var_once("item_meat_model", "t6_wpn_zmb_meat_world");
}
level._effect["meat_impact"] = loadfx( "maps/zombie/fx_zmb_meat_impact" );
level._effect["spawn_cloud"] = loadfx( "maps/zombie/fx_zmb_race_zombie_spawn_cloud" );
level._effect["meat_stink_camera"] = loadfx( "maps/zombie/fx_zmb_meat_stink_camera" );
level._effect["meat_stink_torso"] = loadfx( "maps/zombie/fx_zmb_meat_stink_torso" );
include_powerup( "meat_stink" );
maps\mp\zombies\_zm_powerups::add_zombie_powerup( "meat_stink", get_gamemode_var("item_meat_model"), &"ZOMBIE_POWERUP_MAX_AMMO", ::func_should_drop_meat, 1, 0, 0 );
precacheitem(get_gamemode_var("item_meat_name"));
set_gamemode_var_once("start_item_meat_name", get_gamemode_var("item_meat_name"));
level.meat_weaponidx = getweaponindexfromname(get_gamemode_var("item_meat_name"));
level.meat_pickupsound = getweaponpickupsound(level.meat_weaponidx);
level.meat_pickupsoundplayer = getweaponpickupsoundplayer(level.meat_weaponidx);
level.item_meat_name = get_gamemode_var("item_meat_name");
}
func_should_drop_meat()
{
if (level.scr_zm_ui_gametype_obj == "zmeat")
{
return 0;
}
foreach (powerup in level.active_powerups)
{
if (powerup.powerup_name == "meat_stink")
{
return 0;
}
}
players = get_players();
foreach (player in players)
{
if (player hasWeapon(level.item_meat_name))
{
return 0;
}
}
if (isDefined(level.item_meat) || is_true(level.meat_on_ground) || isDefined(level.meat_player))
{
return 0;
}
return 1;
}

View File

@ -2,6 +2,26 @@
#include common_scripts\utility;
#include maps\mp\zombies\_zm_utility;
postinit_func()
{
level.min_humans = 1;
level.zombie_ai_limit = 24;
level.prevent_player_damage = ::player_prevent_damage;
level.lock_player_on_team_score = 1;
level._zombiemode_powerup_grab = ::meat_stink_powerup_grab;
level.meat_bounce_override = ::meat_bounce_override;
level._zombie_spawning = 0;
level._get_game_module_players = undefined;
level.powerup_drop_count = 0;
level.is_zombie_level = 1;
setmatchtalkflag( "DeadChatWithDead", 1 );
setmatchtalkflag( "DeadChatWithTeam", 1 );
setmatchtalkflag( "DeadHearTeamLiving", 1 );
setmatchtalkflag( "DeadHearAllLiving", 1 );
setmatchtalkflag( "EveryoneHearsEveryone", 1 );
}
game_mode_spawn_player_logic()
{
if (isDefined(level.should_respawn_func) && [[level.should_respawn_func]]())

View File

@ -4,6 +4,20 @@
#include maps\mp\zombies\_zm_utility;
#include maps\mp\zombies\_zm_game_module_meat_utility;
create_item_meat_watcher()
{
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;
}
play_item_meat_on_spawn_retrieve_trigger( watcher, player )
{
self item_meat_on_spawn_retrieve_trigger( watcher, player, get_gamemode_var( "item_meat_name" ) );
}
item_meat_on_spawn_retrieve_trigger(watcher, player, weaponname)
{
self endon("death");