mirror of
https://github.com/JezuzLizard/BO2-Reimagined.git
synced 2025-06-10 15:17:57 -05:00
Bouncing Betty: replace Claymore on Origins
Claymore: increase explosion radius Move certain vars to not exceed canonical string table limit
This commit is contained in:
@ -27,8 +27,8 @@ screecher_spawning_logic()
|
||||
while (!isdefined(level.zombie_screecher_locations) || level.zombie_screecher_locations.size <= 0)
|
||||
wait 0.1;
|
||||
|
||||
// while ( getdvarint( _hash_B0C0D38F ) )
|
||||
// wait 0.1;
|
||||
while (getdvarint("scr_screecher_ignore_player"))
|
||||
wait 0.1;
|
||||
|
||||
if (!flag("spawn_zombies"))
|
||||
flag_wait("spawn_zombies");
|
||||
@ -115,6 +115,43 @@ screecher_spawning_logic()
|
||||
}
|
||||
}
|
||||
|
||||
screecher_attacking()
|
||||
{
|
||||
player = self.favoriteenemy;
|
||||
|
||||
if (!isdefined(player))
|
||||
{
|
||||
self thread screecher_detach(player);
|
||||
return;
|
||||
}
|
||||
|
||||
if (screecher_should_runaway(player))
|
||||
{
|
||||
self thread screecher_detach(player);
|
||||
player thread do_player_general_vox("general", "screecher_jumpoff");
|
||||
return;
|
||||
}
|
||||
|
||||
if (self.attack_time < gettime())
|
||||
{
|
||||
scratch_score = 5;
|
||||
players = get_players();
|
||||
self.screecher_score = self.screecher_score + scratch_score;
|
||||
killed_player = self screecher_check_score();
|
||||
|
||||
if (player.health > 0 && !(isdefined(killed_player) && killed_player))
|
||||
{
|
||||
self.attack_delay = self.attack_delay_base + randomint(self.attack_delay_offset);
|
||||
self.attack_time = gettime() + self.attack_delay;
|
||||
self thread claw_fx(player, self.attack_delay * 0.001);
|
||||
self playsound("zmb_vocals_screecher_attack");
|
||||
player playsoundtoplayer("zmb_screecher_scratch", player);
|
||||
player thread do_player_general_vox("general", "screecher_attack");
|
||||
players = get_players();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
screecher_melee_damage(player)
|
||||
{
|
||||
melee_score = 0;
|
||||
|
26
scripts/zm/replaced/_zm_ffotd.gsc
Normal file
26
scripts/zm/replaced/_zm_ffotd.gsc
Normal file
@ -0,0 +1,26 @@
|
||||
#include maps\mp\zombies\_zm_ffotd;
|
||||
#include common_scripts\utility;
|
||||
#include maps\mp\_utility;
|
||||
#include maps\mp\zombies\_zm_utility;
|
||||
#include maps\mp\zombies\_zm_stats;
|
||||
|
||||
ffotd_melee_miss_func()
|
||||
{
|
||||
if (isdefined(self.enemy))
|
||||
{
|
||||
if (isplayer(self.enemy) && is_placeable_mine(self.enemy getcurrentweapon()))
|
||||
{
|
||||
dist_sq = distancesquared(self.enemy.origin, self.origin);
|
||||
melee_dist_sq = self.meleeattackdist * self.meleeattackdist;
|
||||
|
||||
if (dist_sq < melee_dist_sq)
|
||||
{
|
||||
self.enemy dodamage(self.meleedamage, self.origin, self, self, "none", "MOD_MELEE");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isdefined(level.original_melee_miss_func))
|
||||
self [[level.original_melee_miss_func]]();
|
||||
}
|
@ -233,16 +233,4 @@ claymore_detonation()
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
claymore_setup()
|
||||
{
|
||||
if (!isdefined(self.claymores))
|
||||
self.claymores = [];
|
||||
|
||||
self thread claymore_watch();
|
||||
self giveweapon("claymore_zm");
|
||||
self set_player_placeable_mine("claymore_zm");
|
||||
self setactionslot(4, "weapon", "claymore_zm");
|
||||
self setweaponammostock("claymore_zm", 2);
|
||||
}
|
@ -149,6 +149,11 @@ init_spawnable_weapon_upgrade()
|
||||
unitrigger_stub.prompt_and_visibility_func = scripts\zm\replaced\_zm_weap_claymore::claymore_unitrigger_update_prompt;
|
||||
maps\mp\zombies\_zm_unitrigger::register_static_unitrigger(unitrigger_stub, scripts\zm\replaced\_zm_weap_claymore::buy_claymores);
|
||||
}
|
||||
else if (unitrigger_stub.zombie_weapon_upgrade == "bouncingbetty_zm")
|
||||
{
|
||||
unitrigger_stub.prompt_and_visibility_func = scripts\zm\reimagined\_zm_weap_bouncingbetty::betty_unitrigger_update_prompt;
|
||||
maps\mp\zombies\_zm_unitrigger::register_static_unitrigger(unitrigger_stub, scripts\zm\reimagined\_zm_weap_bouncingbetty::buy_betties);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (is_lethal_grenade(unitrigger_stub.zombie_weapon_upgrade))
|
||||
@ -220,7 +225,7 @@ add_dynamic_wallbuy(weapon, wallbuy, pristine)
|
||||
|
||||
if (!is_melee_weapon(weapon))
|
||||
{
|
||||
if (pristine || weapon == "claymore_zm")
|
||||
if (pristine || weapon == "claymore_zm" || weapon == "bouncingbetty_zm")
|
||||
unitrigger_stub.hint_string = get_weapon_hint(weapon);
|
||||
else
|
||||
unitrigger_stub.hint_string = get_weapon_hint_ammo();
|
||||
@ -249,6 +254,11 @@ add_dynamic_wallbuy(weapon, wallbuy, pristine)
|
||||
unitrigger_stub.prompt_and_visibility_func = maps\mp\zombies\_zm_weap_claymore::claymore_unitrigger_update_prompt;
|
||||
maps\mp\zombies\_zm_unitrigger::register_static_unitrigger(unitrigger_stub, maps\mp\zombies\_zm_weap_claymore::buy_claymores);
|
||||
}
|
||||
else if (weapon == "bouncingbetty_zm")
|
||||
{
|
||||
unitrigger_stub.prompt_and_visibility_func = scripts\zm\reimagined\_zm_weap_bouncingbetty::betty_unitrigger_update_prompt;
|
||||
maps\mp\zombies\_zm_unitrigger::register_static_unitrigger(unitrigger_stub, scripts\zm\reimagined\_zm_weap_bouncingbetty::buy_betties);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (is_lethal_grenade(unitrigger_stub.zombie_weapon_upgrade))
|
||||
@ -444,6 +454,12 @@ weapon_give(weapon, is_upgrade, magic_box, nosound)
|
||||
self play_weapon_vo(weapon, magic_box);
|
||||
return;
|
||||
}
|
||||
else if (weapon == "bouncingbetty_zm")
|
||||
{
|
||||
self thread scripts\zm\reimagined\_zm_weap_bouncingbetty::betty_setup();
|
||||
self play_weapon_vo(weapon, magic_box);
|
||||
return;
|
||||
}
|
||||
|
||||
if (isDefined(level.zombie_weapons_callbacks) && isDefined(level.zombie_weapons_callbacks[weapon]))
|
||||
{
|
||||
@ -851,6 +867,73 @@ makegrenadedudanddestroy()
|
||||
}
|
||||
}
|
||||
|
||||
weaponobjects_on_player_connect_override_internal()
|
||||
{
|
||||
self maps\mp\gametypes_zm\_weaponobjects::createbasewatchers();
|
||||
self createclaymorewatcher_zm();
|
||||
self createbettywatcher_zm();
|
||||
|
||||
for (i = 0; i < level.retrievable_knife_init_names.size; i++)
|
||||
self createballisticknifewatcher_zm(level.retrievable_knife_init_names[i], level.retrievable_knife_init_names[i] + "_zm");
|
||||
|
||||
self maps\mp\gametypes_zm\_weaponobjects::setupretrievablewatcher();
|
||||
|
||||
if (!isdefined(self.weaponobjectwatcherarray))
|
||||
self.weaponobjectwatcherarray = [];
|
||||
|
||||
self thread maps\mp\gametypes_zm\_weaponobjects::watchweaponobjectspawn();
|
||||
self thread maps\mp\gametypes_zm\_weaponobjects::watchweaponprojectileobjectspawn();
|
||||
self thread maps\mp\gametypes_zm\_weaponobjects::deleteweaponobjectson();
|
||||
self.concussionendtime = 0;
|
||||
self.hasdonecombat = 0;
|
||||
self.lastfiretime = 0;
|
||||
self thread watchweaponusagezm();
|
||||
self thread maps\mp\gametypes_zm\_weapons::watchgrenadeusage();
|
||||
self thread maps\mp\gametypes_zm\_weapons::watchmissileusage();
|
||||
self thread watchweaponchangezm();
|
||||
self thread maps\mp\gametypes_zm\_weapons::watchturretuse();
|
||||
self thread trackweaponzm();
|
||||
self notify("weapon_watchers_created");
|
||||
}
|
||||
|
||||
createbettywatcher_zm()
|
||||
{
|
||||
watcher = self maps\mp\gametypes_zm\_weaponobjects::createuseweaponobjectwatcher("bouncingbetty", "bouncingbetty_zm", self.team);
|
||||
watcher.onspawnretrievetriggers = scripts\zm\reimagined\_zm_weap_bouncingbetty::on_spawn_retrieve_trigger;
|
||||
watcher.adjusttriggerorigin = scripts\zm\reimagined\_zm_weap_bouncingbetty::adjust_trigger_origin;
|
||||
watcher.pickup = level.pickup_betties;
|
||||
watcher.pickup_trigger_listener = level.pickup_betties_trigger_listener;
|
||||
watcher.skip_weapon_object_damage = 1;
|
||||
watcher.headicon = 0;
|
||||
watcher.watchforfire = 1;
|
||||
watcher.detonate = ::bettydetonate;
|
||||
watcher.ondamage = level.betties_on_damage;
|
||||
}
|
||||
|
||||
bettydetonate(attacker, weaponname)
|
||||
{
|
||||
from_emp = isempweapon(weaponname);
|
||||
|
||||
if (from_emp)
|
||||
{
|
||||
self delete();
|
||||
return;
|
||||
}
|
||||
|
||||
if (isdefined(attacker))
|
||||
self detonate(attacker);
|
||||
else if (isdefined(self.owner) && isplayer(self.owner))
|
||||
self detonate(self.owner);
|
||||
else
|
||||
self detonate();
|
||||
}
|
||||
|
||||
setupretrievablehintstrings()
|
||||
{
|
||||
maps\mp\gametypes_zm\_weaponobjects::createretrievablehint("claymore", &"ZOMBIE_CLAYMORE_PICKUP");
|
||||
maps\mp\gametypes_zm\_weaponobjects::createretrievablehint("bouncingbetty", &"ZOMBIE_BOUNCINGBETTY_PICKUP");
|
||||
}
|
||||
|
||||
createballisticknifewatcher_zm(name, weapon)
|
||||
{
|
||||
watcher = self maps\mp\gametypes_zm\_weaponobjects::createuseweaponobjectwatcher(name, weapon, self.team);
|
||||
|
@ -176,7 +176,7 @@ dig_up_weapon(digger)
|
||||
a_rare_weapons = array("dsr50_zm", "srm1216_zm");
|
||||
|
||||
if (digger.dig_vars["has_upgraded_shovel"])
|
||||
a_rare_weapons = combinearrays(a_rare_weapons, array("claymore_zm", "vector_zm", "ksg_zm", "mp40_zm", "mp44_zm"));
|
||||
a_rare_weapons = combinearrays(a_rare_weapons, array("bouncingbetty_zm", "vector_zm", "ksg_zm", "mp40_zm", "mp44_zm"));
|
||||
|
||||
str_weapon = undefined;
|
||||
|
||||
@ -189,9 +189,9 @@ dig_up_weapon(digger)
|
||||
v_spawnang = (0, 0, 0);
|
||||
str_spec_model = undefined;
|
||||
|
||||
if (str_weapon == "claymore_zm")
|
||||
if (str_weapon == "bouncingbetty_zm")
|
||||
{
|
||||
str_spec_model = "t6_wpn_claymore_world";
|
||||
str_spec_model = "t6_wpn_bouncing_betty_world";
|
||||
v_spawnang += vectorscale((0, 1, 0), 90.0);
|
||||
}
|
||||
|
||||
@ -199,9 +199,9 @@ dig_up_weapon(digger)
|
||||
v_angles = (0, v_angles[1], 0) + vectorscale((0, 1, 0), 90.0) + v_spawnang;
|
||||
m_weapon = spawn_weapon_model(str_weapon, str_spec_model, v_spawnpt, v_angles);
|
||||
|
||||
if (str_weapon == "claymore_zm")
|
||||
if (str_weapon == "bouncingbetty_zm")
|
||||
{
|
||||
m_weapon setmodel("t6_wpn_claymore_world");
|
||||
m_weapon setmodel("t6_wpn_bouncing_betty_world");
|
||||
v_spawnang += vectorscale((0, 0, 1), 90.0);
|
||||
}
|
||||
|
||||
@ -246,12 +246,12 @@ swap_weapon(str_weapon, e_player)
|
||||
{
|
||||
str_current_weapon = e_player getcurrentweapon();
|
||||
|
||||
if (str_weapon == "claymore_zm")
|
||||
if (str_weapon == "bouncingbetty_zm")
|
||||
{
|
||||
if (!e_player hasweapon(str_weapon))
|
||||
{
|
||||
e_player thread maps\mp\zombies\_zm_weap_claymore::show_claymore_hint("claymore_purchased");
|
||||
e_player thread maps\mp\zombies\_zm_weap_claymore::claymore_setup();
|
||||
e_player thread scripts\zm\reimagined\_zm_weap_bouncingbetty::show_betty_hint("betty_purchased");
|
||||
e_player thread scripts\zm\reimagined\_zm_weap_bouncingbetty::betty_setup();
|
||||
e_player thread maps\mp\zombies\_zm_audio::create_and_play_dialog("weapon_pickup", "grenade");
|
||||
}
|
||||
else
|
||||
|
Reference in New Issue
Block a user