1
0
mirror of https://github.com/JezuzLizard/BO2-Reimagined.git synced 2025-06-07 21:59:49 -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

@ -488,6 +488,8 @@
#### Storm PSR
* Added on Tranzit
* Kills on any round fully charged
* Infinite penetration
### Wonder Weapons

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))

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long