mirror of
https://github.com/JezuzLizard/BO2-Reimagined.git
synced 2025-06-10 15:17:57 -05:00
222 lines
6.6 KiB
Plaintext
222 lines
6.6 KiB
Plaintext
#include maps\mp\zm_tomb_utility;
|
|
#include common_scripts\utility;
|
|
#include maps\mp\_utility;
|
|
#include maps\mp\zombies\_zm_utility;
|
|
#include maps\mp\zombies\_zm_net;
|
|
#include maps\mp\zombies\_zm_spawner;
|
|
#include maps\mp\zombies\_zm_craftables;
|
|
#include maps\mp\zombies\_zm_equipment;
|
|
#include maps\mp\zm_tomb_teleporter;
|
|
#include maps\mp\zm_tomb_vo;
|
|
#include maps\mp\zombies\_zm_ai_basic;
|
|
#include maps\mp\animscripts\zm_shared;
|
|
#include maps\mp\zombies\_zm_unitrigger;
|
|
#include maps\mp\zombies\_zm_zonemgr;
|
|
#include maps\mp\zm_tomb_chamber;
|
|
#include maps\mp\zombies\_zm_challenges;
|
|
#include maps\mp\zm_tomb_challenges;
|
|
#include maps\mp\zm_tomb_tank;
|
|
#include maps\mp\zm_tomb_craftables;
|
|
|
|
capture_zombie_spawn_init( animname_set = 0 )
|
|
{
|
|
self.targetname = "capture_zombie_ai";
|
|
|
|
if ( !animname_set )
|
|
self.animname = "zombie";
|
|
|
|
self.sndname = "capzomb";
|
|
|
|
if ( isdefined( get_gamemode_var( "pre_init_zombie_spawn_func" ) ) )
|
|
self [[ get_gamemode_var( "pre_init_zombie_spawn_func" ) ]]();
|
|
|
|
self thread play_ambient_zombie_vocals();
|
|
self.zmb_vocals_attack = "zmb_vocals_capzomb_attack";
|
|
self.no_damage_points = 1;
|
|
self.deathpoints_already_given = 1;
|
|
self.ignore_enemy_count = 1;
|
|
self.ignoreall = 1;
|
|
self.ignoreme = 1;
|
|
self.allowdeath = 1;
|
|
self.force_gib = 1;
|
|
self.is_zombie = 1;
|
|
self.has_legs = 1;
|
|
self allowedstances( "stand" );
|
|
self.zombie_damaged_by_bar_knockdown = 0;
|
|
self.gibbed = 0;
|
|
self.head_gibbed = 0;
|
|
self.disablearrivals = 1;
|
|
self.disableexits = 1;
|
|
self.grenadeawareness = 0;
|
|
self.badplaceawareness = 0;
|
|
self.ignoresuppression = 1;
|
|
self.suppressionthreshold = 1;
|
|
self.nododgemove = 1;
|
|
self.dontshootwhilemoving = 1;
|
|
self.pathenemylookahead = 0;
|
|
self.badplaceawareness = 0;
|
|
self.chatinitialized = 0;
|
|
self.a.disablepain = 1;
|
|
self disable_react();
|
|
|
|
if ( isdefined( level.zombie_health ) )
|
|
{
|
|
self.maxhealth = level.zombie_health;
|
|
|
|
if ( isdefined( level.zombie_respawned_health ) && level.zombie_respawned_health.size > 0 )
|
|
{
|
|
self.health = level.zombie_respawned_health[0];
|
|
arrayremovevalue( level.zombie_respawned_health, level.zombie_respawned_health[0] );
|
|
}
|
|
else
|
|
self.health = level.zombie_health;
|
|
}
|
|
else
|
|
{
|
|
self.maxhealth = level.zombie_vars["zombie_health_start"];
|
|
self.health = self.maxhealth;
|
|
}
|
|
|
|
self.freezegun_damage = 0;
|
|
self.dropweapon = 0;
|
|
level thread zombie_death_event( self );
|
|
self set_zombie_run_cycle();
|
|
self thread dug_zombie_think();
|
|
self thread zombie_gib_on_damage();
|
|
self thread zombie_damage_failsafe();
|
|
self thread enemy_death_detection();
|
|
|
|
if ( !isdefined( self.no_eye_glow ) || !self.no_eye_glow )
|
|
{
|
|
if ( !( isdefined( self.is_inert ) && self.is_inert ) )
|
|
self thread delayed_zombie_eye_glow();
|
|
}
|
|
|
|
self.deathfunction = ::zombie_death_animscript;
|
|
self.flame_damage_time = 0;
|
|
self.meleedamage = 50;
|
|
self.no_powerups = 1;
|
|
self zombie_history( "zombie_spawn_init -> Spawned = " + self.origin );
|
|
self.thundergun_knockdown_func = level.basic_zombie_thundergun_knockdown;
|
|
self.tesla_head_gib_func = ::zombie_tesla_head_gib;
|
|
self.team = level.zombie_team;
|
|
|
|
if ( isdefined( get_gamemode_var( "post_init_zombie_spawn_func" ) ) )
|
|
self [[ get_gamemode_var( "post_init_zombie_spawn_func" ) ]]();
|
|
|
|
self.zombie_init_done = 1;
|
|
self notify( "zombie_init_done" );
|
|
}
|
|
|
|
update_staff_accessories( n_element_index )
|
|
{
|
|
cur_weapon = self get_player_melee_weapon();
|
|
|
|
if ( !issubstr( cur_weapon, "one_inch_punch" ) )
|
|
{
|
|
weapon_to_keep = "knife_zm";
|
|
self.use_staff_melee = 0;
|
|
|
|
if ( n_element_index != 0 )
|
|
{
|
|
staff_info = maps\mp\zm_tomb_craftables::get_staff_info_from_element_index( n_element_index );
|
|
|
|
if ( staff_info.charger.is_charged )
|
|
staff_info = staff_info.upgrade;
|
|
|
|
if ( isdefined( staff_info.melee ) )
|
|
{
|
|
weapon_to_keep = staff_info.melee;
|
|
self.use_staff_melee = 1;
|
|
}
|
|
}
|
|
|
|
melee_changed = 0;
|
|
|
|
if ( cur_weapon != weapon_to_keep )
|
|
{
|
|
self takeweapon( cur_weapon );
|
|
self giveweapon( weapon_to_keep );
|
|
self set_player_melee_weapon( weapon_to_keep );
|
|
melee_changed = 1;
|
|
}
|
|
}
|
|
else if ( issubstr( cur_weapon, "one_inch_punch" ) && is_true( self.b_punch_upgraded ) )
|
|
{
|
|
self.str_punch_element = get_punch_element_from_index(n_element_index);
|
|
weapon_to_keep = "one_inch_punch_" + self.str_punch_element + "_zm";
|
|
|
|
if ( cur_weapon != weapon_to_keep )
|
|
{
|
|
self takeweapon( cur_weapon );
|
|
self giveweapon( weapon_to_keep );
|
|
self set_player_melee_weapon( weapon_to_keep );
|
|
}
|
|
}
|
|
|
|
has_revive = self hasweapon( "staff_revive_zm" );
|
|
has_upgraded_staff = 0;
|
|
a_weapons = self getweaponslistprimaries();
|
|
staff_info = maps\mp\zm_tomb_craftables::get_staff_info_from_element_index( n_element_index );
|
|
|
|
foreach ( str_weapon in a_weapons )
|
|
{
|
|
if ( is_weapon_upgraded_staff( str_weapon ) )
|
|
has_upgraded_staff = 1;
|
|
}
|
|
|
|
if ( has_revive && !has_upgraded_staff )
|
|
{
|
|
self setactionslot( 3, "altmode" );
|
|
self takeweapon( "staff_revive_zm" );
|
|
}
|
|
else if ( !has_revive && has_upgraded_staff )
|
|
{
|
|
self setactionslot( 3, "weapon", "staff_revive_zm" );
|
|
self giveweapon( "staff_revive_zm" );
|
|
|
|
if ( isdefined( staff_info ) && isdefined( staff_info.upgrade.revive_ammo_stock ) )
|
|
{
|
|
if ( staff_info.upgrade.revive_ammo_clip < 1 && staff_info.upgrade.revive_ammo_stock >= 1 )
|
|
{
|
|
staff_info.upgrade.revive_ammo_clip += 1;
|
|
staff_info.upgrade.revive_ammo_stock -= 1;
|
|
}
|
|
|
|
self setweaponammostock( "staff_revive_zm", staff_info.upgrade.revive_ammo_stock );
|
|
self setweaponammoclip( "staff_revive_zm", staff_info.upgrade.revive_ammo_clip );
|
|
}
|
|
else
|
|
{
|
|
self setweaponammostock( "staff_revive_zm", 3 );
|
|
self setweaponammoclip( "staff_revive_zm", 1 );
|
|
}
|
|
}
|
|
}
|
|
|
|
get_punch_element_from_index(ind)
|
|
{
|
|
if ( ind == 1 )
|
|
{
|
|
return "fire";
|
|
}
|
|
else if ( ind == 2 )
|
|
{
|
|
return "air";
|
|
}
|
|
else if ( ind == 3 )
|
|
{
|
|
return "lightning";
|
|
}
|
|
else if ( ind == 4 )
|
|
{
|
|
return "ice";
|
|
}
|
|
|
|
return "upgraded";
|
|
}
|
|
|
|
check_solo_status()
|
|
{
|
|
level.is_forever_solo_game = 0;
|
|
} |