1
0
mirror of https://github.com/JezuzLizard/BO2-Reimagined.git synced 2025-06-07 21:59:49 -05:00

Staffs (upgraded): do alt weapon reload changes from weapon file

Staffs (upgraded): move all alt weapon ammo to clip
Staffs (upgraded): fix issues with melee weapons
This commit is contained in:
Jbleezy 2023-12-28 21:35:03 -08:00
parent fdd62975cc
commit 60258d0a95
6 changed files with 63 additions and 83 deletions

View File

@ -365,7 +365,7 @@
* Max ammo no longer fills clip ammo
* Upgraded: kill on any round
* Upgraded: charged shots damage Panzersoldat
* Upgraded: decreased alt weapon reload time to 0.4 seconds
* Upgraded: decreased alt weapon fire time from 3 seconds to 0.5 seconds
* Fire upgraded: charged shots no longer deal additional damage to Panzersoldat
* Ice upgraded: fixed melee sound

View File

@ -1,67 +0,0 @@
#include maps\mp\zombies\_zm_weap_staff_revive;
#include common_scripts\utility;
#include maps\mp\_utility;
#include maps\mp\zombies\_zm_utility;
#include maps\mp\zombies\_zm_net;
#include maps\mp\zm_tomb_utility;
#include maps\mp\zombies\_zm_laststand;
watch_staff_revive_fired()
{
self endon("disconnect");
while (true)
{
self waittill("missile_fire", e_projectile, str_weapon);
if (!(str_weapon == "staff_revive_zm"))
continue;
self thread staff_revive_impact_wait();
self thread staff_revive_reload(str_weapon);
}
}
staff_revive_impact_wait()
{
self waittill("projectile_impact", e_ent, v_explode_point, n_radius, str_name, n_impact);
self thread staff_revive_impact(v_explode_point);
}
staff_revive_reload(str_weapon)
{
self endon("disconnect");
wait 0.4;
ammo_clip = self getWeaponAmmoClip(str_weapon);
ammo_stock = self getWeaponAmmoStock(str_weapon);
if (ammo_clip < 1 && ammo_stock >= 1)
{
self setWeaponAmmoClip(str_weapon, ammo_clip + 1);
self setWeaponAmmoStock(str_weapon, ammo_stock - 1);
return;
}
while (1)
{
self waittill("weapon_change");
if (self getCurrentWeapon() == str_weapon)
{
ammo_clip = self getWeaponAmmoClip(str_weapon);
ammo_stock = self getWeaponAmmoStock(str_weapon);
if (ammo_clip < 1 && ammo_stock >= 1)
{
self setWeaponAmmoClip(str_weapon, ammo_clip + 1);
self setWeaponAmmoStock(str_weapon, ammo_stock - 1);
}
return;
}
}
}

View File

@ -668,5 +668,20 @@ run_gramophone_door(str_vinyl_record)
watch_staff_ammo_reload()
{
// removed max ammo clip fill
self endon( "disconnect" );
while ( true )
{
self waittill( "zmb_max_ammo" );
a_weapons = self getweaponslist();
foreach ( weapon in a_weapons )
{
if ( issubstr( weapon, "staff_revive" ) )
{
self setweaponammoclip( weapon, weaponclipsize( weapon ) );
}
}
}
}

View File

@ -111,12 +111,11 @@ capture_zombie_spawn_init(animname_set = 0)
update_staff_accessories(n_element_index)
{
cur_melee = self get_player_melee_weapon();
melee_to_keep = "knife_zm";
melee_to_keep = get_melee_weapon_from_held();
self.use_staff_melee = 0;
if (!issubstr(cur_melee, "one_inch_punch"))
{
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);
@ -142,19 +141,23 @@ update_staff_accessories(n_element_index)
current_weapon = self getcurrentweapon();
self takeweapon(cur_melee);
self takeweapon("held_" + cur_melee);
self giveweapon(melee_to_keep);
self set_player_melee_weapon(melee_to_keep);
self giveweapon("held_" + melee_to_keep);
if (!self hasweapon("equip_dieseldrone_zm"))
if (!self.use_staff_melee)
{
self setactionslot(2, "weapon", "held_" + melee_to_keep);
}
self takeweapon("held_" + cur_melee);
self giveweapon("held_" + melee_to_keep);
if (is_melee_weapon(current_weapon))
{
self switchtoweapon("held_" + melee_to_keep);
if (!self hasweapon("equip_dieseldrone_zm"))
{
self setactionslot(2, "weapon", "held_" + melee_to_keep);
}
if (is_melee_weapon(current_weapon))
{
self switchtoweapon("held_" + melee_to_keep);
}
}
}
@ -192,12 +195,29 @@ update_staff_accessories(n_element_index)
}
else
{
self setweaponammostock("staff_revive_zm", 3);
self setweaponammoclip("staff_revive_zm", 1);
self setweaponammostock("staff_revive_zm", weaponmaxammo("staff_revive_zm") - weaponclipsize("staff_revive_zm"));
self setweaponammoclip("staff_revive_zm", weaponclipsize("staff_revive_zm"));
}
}
}
get_melee_weapon_from_held()
{
melee_to_keep = "knife_zm";
foreach (weapon in self getweaponslist())
{
if (getsubstr(weapon, 0, 5) == "held_")
{
melee_to_keep = getsubstr(weapon, 5);
break;
}
}
return melee_to_keep;
}
get_punch_element_from_index(ind)
{
if (ind == 1)

View File

@ -60,7 +60,6 @@ main()
replaceFunc(maps\mp\zombies\_zm_weap_staff_fire::flame_damage_fx, scripts\zm\replaced\_zm_weap_staff_fire::flame_damage_fx);
replaceFunc(maps\mp\zombies\_zm_weap_staff_fire::get_impact_damage, scripts\zm\replaced\_zm_weap_staff_fire::get_impact_damage);
replaceFunc(maps\mp\zombies\_zm_weap_staff_lightning::staff_lightning_ball_kill_zombies, scripts\zm\replaced\_zm_weap_staff_lightning::staff_lightning_ball_kill_zombies);
replaceFunc(maps\mp\zombies\_zm_weap_staff_revive::watch_staff_revive_fired, scripts\zm\replaced\_zm_weap_staff_revive::watch_staff_revive_fired);
}
init()

File diff suppressed because one or more lines are too long