mirror of
https://github.com/JezuzLizard/BO2-Reimagined.git
synced 2025-06-11 15:48:05 -05:00
Zombie Blood changes
This commit is contained in:
@ -318,6 +318,10 @@
|
||||
### Carpenter
|
||||
* Removed
|
||||
|
||||
### Zombie Blood
|
||||
* No longer makes zombies ignore the player
|
||||
* Makes the player invulnerable to zombie melee swipes
|
||||
|
||||
### Meat
|
||||
* All zombies go after player holding the meat
|
||||
* 60% move speed while holding the meat
|
||||
|
@ -4,6 +4,7 @@
|
||||
#include maps\mp\gametypes_zm\_hud_util;
|
||||
|
||||
#include scripts\zm\replaced\utility;
|
||||
#include scripts\zm\replaced\zm_melee;
|
||||
#include scripts\zm\replaced\_zm;
|
||||
#include scripts\zm\replaced\_zm_playerhealth;
|
||||
#include scripts\zm\replaced\_zm_utility;
|
||||
@ -27,6 +28,7 @@
|
||||
main()
|
||||
{
|
||||
replaceFunc(common_scripts\utility::struct_class_init, scripts\zm\replaced\utility::struct_class_init);
|
||||
replaceFunc(maps\mp\animscripts\zm_melee::meleecombat, scripts\zm\replaced\zm_melee::meleecombat);
|
||||
replaceFunc(maps\mp\zombies\_zm::check_quickrevive_for_hotjoin, scripts\zm\replaced\_zm::check_quickrevive_for_hotjoin);
|
||||
replaceFunc(maps\mp\zombies\_zm::ai_calculate_health, scripts\zm\replaced\_zm::ai_calculate_health);
|
||||
replaceFunc(maps\mp\zombies\_zm::onallplayersready, scripts\zm\replaced\_zm::onallplayersready);
|
||||
|
121
scripts/zm/replaced/_zm_powerup_zombie_blood.gsc
Normal file
121
scripts/zm/replaced/_zm_powerup_zombie_blood.gsc
Normal file
@ -0,0 +1,121 @@
|
||||
#include common_scripts\utility;
|
||||
#include maps\mp\_utility;
|
||||
#include maps\mp\zombies\_zm_powerups;
|
||||
#include maps\mp\zombies\_zm_utility;
|
||||
#include maps\mp\_visionset_mgr;
|
||||
#include maps\mp\zombies\_zm_powerup_zombie_blood;
|
||||
|
||||
zombie_blood_powerup( m_powerup, e_player )
|
||||
{
|
||||
e_player notify( "zombie_blood" );
|
||||
e_player endon( "zombie_blood" );
|
||||
e_player endon( "disconnect" );
|
||||
e_player thread powerup_vo( "zombie_blood" );
|
||||
e_player._show_solo_hud = 1;
|
||||
e_player.zombie_vars["zombie_powerup_zombie_blood_time"] = 30;
|
||||
e_player.zombie_vars["zombie_powerup_zombie_blood_on"] = 1;
|
||||
level notify( "player_zombie_blood", e_player );
|
||||
maps\mp\_visionset_mgr::vsmgr_activate( "visionset", "zm_powerup_zombie_blood_visionset", e_player );
|
||||
maps\mp\_visionset_mgr::vsmgr_activate( "overlay", "zm_powerup_zombie_blood_overlay", e_player );
|
||||
e_player setclientfield( "player_zombie_blood_fx", 1 );
|
||||
__new = [];
|
||||
|
||||
foreach ( __key, __value in level.a_zombie_blood_entities )
|
||||
{
|
||||
if ( isdefined( __value ) )
|
||||
{
|
||||
if ( isstring( __key ) )
|
||||
{
|
||||
__new[__key] = __value;
|
||||
continue;
|
||||
}
|
||||
|
||||
__new[__new.size] = __value;
|
||||
}
|
||||
}
|
||||
|
||||
level.a_zombie_blood_entities = __new;
|
||||
|
||||
foreach ( e_zombie_blood in level.a_zombie_blood_entities )
|
||||
{
|
||||
if ( isdefined( e_zombie_blood.e_unique_player ) )
|
||||
{
|
||||
if ( e_zombie_blood.e_unique_player == e_player )
|
||||
e_zombie_blood setvisibletoplayer( e_player );
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
e_zombie_blood setvisibletoplayer( e_player );
|
||||
}
|
||||
|
||||
if ( !isdefined( e_player.m_fx ) )
|
||||
{
|
||||
v_origin = e_player gettagorigin( "J_Eyeball_LE" );
|
||||
v_angles = e_player gettagangles( "J_Eyeball_LE" );
|
||||
m_fx = spawn( "script_model", v_origin );
|
||||
m_fx setmodel( "tag_origin" );
|
||||
m_fx.angles = v_angles;
|
||||
m_fx linkto( e_player, "J_Eyeball_LE", ( 0, 0, 0 ), ( 0, 0, 0 ) );
|
||||
m_fx thread fx_disconnect_watch( e_player );
|
||||
playfxontag( level._effect["zombie_blood"], m_fx, "tag_origin" );
|
||||
e_player.m_fx = m_fx;
|
||||
e_player.m_fx playloopsound( "zmb_zombieblood_3rd_loop", 1 );
|
||||
|
||||
if ( isdefined( level.str_zombie_blood_model ) )
|
||||
{
|
||||
e_player.hero_model = e_player.model;
|
||||
e_player setmodel( level.str_zombie_blood_model );
|
||||
}
|
||||
}
|
||||
|
||||
e_player thread watch_zombie_blood_early_exit();
|
||||
|
||||
while ( e_player.zombie_vars["zombie_powerup_zombie_blood_time"] >= 0 )
|
||||
{
|
||||
wait 0.05;
|
||||
e_player.zombie_vars["zombie_powerup_zombie_blood_time"] -= 0.05;
|
||||
}
|
||||
|
||||
e_player notify( "zombie_blood_over" );
|
||||
|
||||
if ( isdefined( e_player.characterindex ) )
|
||||
e_player playsound( "vox_plr_" + e_player.characterindex + "_exert_grunt_" + randomintrange( 0, 3 ) );
|
||||
|
||||
e_player.m_fx delete();
|
||||
maps\mp\_visionset_mgr::vsmgr_deactivate( "visionset", "zm_powerup_zombie_blood_visionset", e_player );
|
||||
maps\mp\_visionset_mgr::vsmgr_deactivate( "overlay", "zm_powerup_zombie_blood_overlay", e_player );
|
||||
e_player.zombie_vars["zombie_powerup_zombie_blood_on"] = 0;
|
||||
e_player.zombie_vars["zombie_powerup_zombie_blood_time"] = 30;
|
||||
e_player._show_solo_hud = 0;
|
||||
e_player setclientfield( "player_zombie_blood_fx", 0 );
|
||||
|
||||
e_player.early_exit = undefined;
|
||||
|
||||
__new = [];
|
||||
|
||||
foreach ( __key, __value in level.a_zombie_blood_entities )
|
||||
{
|
||||
if ( isdefined( __value ) )
|
||||
{
|
||||
if ( isstring( __key ) )
|
||||
{
|
||||
__new[__key] = __value;
|
||||
continue;
|
||||
}
|
||||
|
||||
__new[__new.size] = __value;
|
||||
}
|
||||
}
|
||||
|
||||
level.a_zombie_blood_entities = __new;
|
||||
|
||||
foreach ( e_zombie_blood in level.a_zombie_blood_entities )
|
||||
e_zombie_blood setinvisibletoplayer( e_player );
|
||||
|
||||
if ( isdefined( e_player.hero_model ) )
|
||||
{
|
||||
e_player setmodel( e_player.hero_model );
|
||||
e_player.hero_model = undefined;
|
||||
}
|
||||
}
|
117
scripts/zm/replaced/zm_melee.gsc
Normal file
117
scripts/zm/replaced/zm_melee.gsc
Normal file
@ -0,0 +1,117 @@
|
||||
#include common_scripts\utility;
|
||||
#include maps\mp\animscripts\shared;
|
||||
#include maps\mp\animscripts\utility;
|
||||
#include maps\mp\animscripts\zm_utility;
|
||||
#include maps\mp\animscripts\zm_combat;
|
||||
#include maps\mp\animscripts\zm_melee;
|
||||
|
||||
meleecombat()
|
||||
{
|
||||
self endon( "end_melee" );
|
||||
self endon( "killanimscript" );
|
||||
assert( canmeleeanyrange() );
|
||||
self orientmode( "face enemy" );
|
||||
|
||||
if ( is_true( self.sliding_on_goo ) )
|
||||
self animmode( "slide" );
|
||||
else
|
||||
self animmode( "zonly_physics" );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
if ( isdefined( self.marked_for_death ) )
|
||||
return;
|
||||
|
||||
if ( isdefined( self.enemy ) )
|
||||
{
|
||||
angles = vectortoangles( self.enemy.origin - self.origin );
|
||||
self orientmode( "face angle", angles[1] );
|
||||
}
|
||||
|
||||
if ( isdefined( self.zmb_vocals_attack ) )
|
||||
self playsound( self.zmb_vocals_attack );
|
||||
|
||||
if ( isdefined( self.nochangeduringmelee ) && self.nochangeduringmelee )
|
||||
self.safetochangescript = 0;
|
||||
|
||||
if ( isdefined( self.is_inert ) && self.is_inert )
|
||||
return;
|
||||
|
||||
set_zombie_melee_anim_state( self );
|
||||
|
||||
if ( isdefined( self.melee_anim_func ) )
|
||||
self thread [[ self.melee_anim_func ]]();
|
||||
|
||||
while ( true )
|
||||
{
|
||||
self waittill( "melee_anim", note );
|
||||
|
||||
if ( note == "end" )
|
||||
break;
|
||||
else if ( note == "fire" )
|
||||
{
|
||||
if ( !isdefined( self.enemy ) )
|
||||
break;
|
||||
|
||||
if ( isdefined( self.dont_die_on_me ) && self.dont_die_on_me )
|
||||
break;
|
||||
|
||||
if ( is_true( self.enemy.zombie_vars["zombie_powerup_zombie_blood_on"] ) )
|
||||
break;
|
||||
|
||||
self.enemy notify( "melee_swipe", self );
|
||||
oldhealth = self.enemy.health;
|
||||
self melee();
|
||||
|
||||
if ( !isdefined( self.enemy ) )
|
||||
break;
|
||||
|
||||
if ( self.enemy.health >= oldhealth )
|
||||
{
|
||||
if ( isdefined( self.melee_miss_func ) )
|
||||
self [[ self.melee_miss_func ]]();
|
||||
else if ( isdefined( level.melee_miss_func ) )
|
||||
self [[ level.melee_miss_func ]]();
|
||||
}
|
||||
}
|
||||
else if ( note == "stop" )
|
||||
{
|
||||
if ( !cancontinuetomelee() )
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ( is_true( self.sliding_on_goo ) )
|
||||
self orientmode( "face enemy" );
|
||||
else
|
||||
self orientmode( "face default" );
|
||||
|
||||
if ( isdefined( self.nochangeduringmelee ) && self.nochangeduringmelee || is_true( self.sliding_on_goo ) )
|
||||
{
|
||||
if ( isdefined( self.enemy ) )
|
||||
{
|
||||
dist_sq = distancesquared( self.origin, self.enemy.origin );
|
||||
|
||||
if ( dist_sq > self.meleeattackdist * self.meleeattackdist )
|
||||
{
|
||||
self.safetochangescript = 1;
|
||||
wait 0.1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
self.safetochangescript = 1;
|
||||
wait 0.1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( is_true( self.sliding_on_goo ) )
|
||||
self animmode( "slide" );
|
||||
else
|
||||
self animmode( "none" );
|
||||
|
||||
self thread maps\mp\animscripts\zm_combat::main();
|
||||
}
|
@ -3,18 +3,20 @@
|
||||
#include maps\mp\zombies\_zm_utility;
|
||||
#include maps\mp\zombies\_zm_craftables;
|
||||
|
||||
#include scripts\zm\replaced\_zm_craftables;
|
||||
#include scripts\zm\replaced\_zm_riotshield_tomb;
|
||||
#include scripts\zm\replaced\_zm_weap_riotshield_tomb;
|
||||
#include scripts\zm\replaced\zm_tomb_main_quest;
|
||||
#include scripts\zm\replaced\zm_tomb_quest_air;
|
||||
#include scripts\zm\replaced\zm_tomb_quest_elec;
|
||||
#include scripts\zm\replaced\zm_tomb_quest_fire;
|
||||
#include scripts\zm\replaced\zm_tomb_quest_ice;
|
||||
#include scripts\zm\replaced\_zm_ai_mechz;
|
||||
#include scripts\zm\replaced\zm_tomb_challenges;
|
||||
#include scripts\zm\replaced\zm_tomb_craftables;
|
||||
#include scripts\zm\replaced\zm_tomb_dig;
|
||||
#include scripts\zm\replaced\zm_tomb_tank;
|
||||
#include scripts\zm\replaced\_zm_ai_mechz;
|
||||
#include scripts\zm\replaced\_zm_craftables;
|
||||
#include scripts\zm\replaced\_zm_powerup_zombie_blood;
|
||||
#include scripts\zm\replaced\_zm_riotshield_tomb;
|
||||
#include scripts\zm\replaced\_zm_weap_riotshield_tomb;
|
||||
|
||||
main()
|
||||
{
|
||||
@ -29,14 +31,15 @@ main()
|
||||
replaceFunc(maps\mp\zm_tomb_ee_main_step_2::create_robot_head_trigger, scripts\zm\replaced\zm_tomb_ee_main_step_2::create_robot_head_trigger);
|
||||
replaceFunc(maps\mp\zm_tomb_ee_main_step_2::remove_plinth, scripts\zm\replaced\zm_tomb_ee_main_step_2::remove_plinth);
|
||||
replaceFunc(maps\mp\zm_tomb_ee_main_step_3::fire_link_cooldown, scripts\zm\replaced\zm_tomb_ee_main_step_3::fire_link_cooldown);
|
||||
replaceFunc(maps\mp\zm_tomb_challenges::challenges_init, scripts\zm\replaced\zm_tomb_challenges::challenges_init);
|
||||
replaceFunc(maps\mp\zm_tomb_craftables::quadrotor_control_thread, scripts\zm\replaced\zm_tomb_craftables::quadrotor_control_thread);
|
||||
replaceFunc(maps\mp\zm_tomb_craftables::quadrotor_set_unavailable, scripts\zm\replaced\zm_tomb_craftables::quadrotor_set_unavailable);
|
||||
replaceFunc(maps\mp\zm_tomb_challenges::challenges_init, scripts\zm\replaced\zm_tomb_challenges::challenges_init);
|
||||
replaceFunc(maps\mp\zm_tomb_dig::increment_player_perk_purchase_limit, scripts\zm\replaced\zm_tomb_dig::increment_player_perk_purchase_limit);
|
||||
replaceFunc(maps\mp\zm_tomb_dig::dig_disconnect_watch, scripts\zm\replaced\zm_tomb_dig::dig_disconnect_watch);
|
||||
replaceFunc(maps\mp\zm_tomb_tank::players_on_tank_update, scripts\zm\replaced\zm_tomb_tank::players_on_tank_update);
|
||||
replaceFunc(maps\mp\zombies\_zm_ai_mechz::mechz_set_starting_health, scripts\zm\replaced\_zm_ai_mechz::mechz_set_starting_health);
|
||||
replaceFunc(maps\mp\zombies\_zm_craftables::choose_open_craftable, scripts\zm\replaced\_zm_craftables::choose_open_craftable);
|
||||
replaceFunc(maps\mp\zombies\_zm_powerup_zombie_blood::zombie_blood_powerup, scripts\zm\replaced\_zm_powerup_zombie_blood::zombie_blood_powerup);
|
||||
replaceFunc(maps\mp\zombies\_zm_riotshield_tomb::doriotshielddeploy, scripts\zm\replaced\_zm_riotshield_tomb::doriotshielddeploy);
|
||||
replaceFunc(maps\mp\zombies\_zm_riotshield_tomb::trackriotshield, scripts\zm\replaced\_zm_riotshield_tomb::trackriotshield);
|
||||
replaceFunc(maps\mp\zombies\_zm_weap_riotshield_tomb::init, scripts\zm\replaced\_zm_weap_riotshield_tomb::init);
|
||||
|
Reference in New Issue
Block a user