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

Storm PSR: add scripted bullet penetration

Storm PSR: decrease minimum damage
Storm PSR: scale damage
Storm PSR: decrease charge time
This commit is contained in:
Jbleezy
2024-04-18 20:44:46 -07:00
parent 674ca8713e
commit 9eecebf2fb
13 changed files with 106 additions and 10 deletions

View File

@ -379,6 +379,7 @@ on_player_connect()
player thread on_player_revived();
player thread on_player_fake_revive();
player thread weapon_fire_watcher();
player thread grenade_fire_watcher();
player thread player_hide_turrets_from_other_players();
player thread sndmeleewpnsound();
@ -608,10 +609,12 @@ set_dvars()
if (level.script == "zm_transit")
{
setDvar("bg_chargeShotMaxBulletsInQueue", 5);
setDvar("bg_chargeShotQueueTime", 250);
}
else
{
setDvar("bg_chargeShotMaxBulletsInQueue", 3);
setDvar("bg_chargeShotQueueTime", 500);
}
}
@ -647,10 +650,12 @@ set_client_dvars()
if (level.script == "zm_transit")
{
self setClientDvar("bg_chargeShotMaxBulletsInQueue", 5);
self setClientDvar("bg_chargeShotQueueTime", 250);
}
else
{
self setClientDvar("bg_chargeShotMaxBulletsInQueue", 3);
self setClientDvar("bg_chargeShotQueueTime", 500);
}
}
@ -1896,6 +1901,22 @@ wallbuy_cost_changes()
}
}
weapon_fire_watcher()
{
level endon("end_game");
self endon("disconnect");
while (1)
{
self waittill("weapon_fired", weapname);
if (issubstr(weapname, "metalstorm"))
{
self thread metalstorm_fired(weapname);
}
}
}
grenade_fire_watcher()
{
level endon("end_game");
@ -1917,6 +1938,67 @@ grenade_fire_watcher()
}
}
metalstorm_fired(weapname)
{
forward_angles = self getweaponforwarddir();
fire_origin = self getweaponmuzzlepoint();
end_origin = fire_origin + (forward_angles * 10000);
cylinder_dist_squared = 12 * 12;
height_dist = 36;
targets = getaispeciesarray(level.zombie_team, "all");
targets = arraycombine(targets, get_players(), 1, 0);
foreach (target in targets)
{
if (isdefined(self.team) && isdefined(target.team) && self.team == target.team)
{
continue;
}
if (target damageconetrace(fire_origin, self) == 0)
{
continue;
}
test_origin = target getcentroid();
normal = vectornormalize(test_origin - fire_origin);
dot = vectordot(forward_angles, normal);
if (dot < 0)
{
continue;
}
radial_origin = pointonsegmentnearesttopoint(fire_origin, end_origin, test_origin);
if (distance2dsquared(test_origin, radial_origin) > cylinder_dist_squared)
{
continue;
}
if (abs(test_origin[2] - radial_origin[2]) > height_dist)
{
continue;
}
damage = self metalstorm_get_damage(weapname);
target dodamage(damage, target.origin, self, self, "none", "MOD_RIFLE_BULLET", 0, weapname);
}
}
metalstorm_get_damage(weapname)
{
base_damage = 1000;
if (issubstr(weapname, "upgraded"))
{
base_damage = 2000;
}
return base_damage * self.chargeshotlevel;
}
temp_disable_offhand_weapons()
{
self endon("disconnect");

View File

@ -1572,6 +1572,18 @@ actor_damage_override(inflictor, attacker, damage, flags, meansofdeath, weapon,
}
}
if (issubstr(weapon, "metalstorm"))
{
if (issubstr(weapon, "upgraded"))
{
final_damage = scale_damage(final_damage, 10000);
}
else
{
final_damage = scale_damage(final_damage, 5000);
}
}
if (weapon == "staff_revive_zm")
{
if (!is_true(self.is_mechz))