diff --git a/README.md b/README.md index 93dac2f..f4270db 100644 --- a/README.md +++ b/README.md @@ -99,9 +99,9 @@ PLEASE NOTE: I've moved all old changelogs into the version_history folder. This * Shifter * Reduced HP from 280 (2.8) to 225 (2.25) * The change to the shifter teleportation in 3.91 made these zombies ridiculously overpowered, they will be tuned down - * Increased the maximum targeting range of the teleport attack from 200m to 400m - * Increased the cooldown of the teleport attack from 7 seconds to 12.5 seconds - * Shifter zombies will now have to "lock down" for a 1.5 seconds before teleporting, during this time they will be easily targetable + * Increased the maximum targeting range of the teleport attack from 200m to 400m + * Increased the cooldown of the teleport attack from 7 seconds to 12.5 seconds + * Shifter zombies will now have to "lock down" for 1.5 seconds before teleporting, during this time they will be easily targetable * Sniper * The sniper zombie is now armed with two new weapons. * The first is an acid sniper rifle which infects players on striking @@ -154,6 +154,7 @@ PLEASE NOTE: I've moved all old changelogs into the version_history folder. This * Adjusted the mod's XP table: * The final rank (Master Commander) now only requires 2,500,000 XP * The earlier ranks will now progress much more quickly, with the mid-point now occuring at 14,000 XP instead of 20,000 XP + * Perks are no longer locked by rank, and all non-game mode / boss related perks are unlocked to all players at the start. * General Bug Fixes * Addressed the issue when gaining more than 1 million EXP that would result in your total EXP being reset by the difference between 1 million exp and your current exp. * Fixed the bug in which picking up weapon clips with an empty weapon would not automatically trigger weapon reload on that weapon. @@ -303,4 +304,92 @@ PLEASE NOTE: I've moved all old changelogs into the version_history folder. This * In 3.9.2, players will find the Acid Cannon as an officer promotion award, so therefore some adjustments were made to this weapon * Moved the Zombie Acid pulse out of this weapon, and replaced it with it's own custom projectile * The projectile will flash enemy players when stuck by it, and cause an effective radial damage to serve as a lockdown tool - * The weapon projectile has been given a 3.0 damage modifier across all zombie types to be highly effective against zombies \ No newline at end of file + * The weapon projectile has been given a 3.0 damage modifier across all zombie types to be highly effective against zombies +* Perk Balancing / Rework Pass (3.9.2) + * The next batch of balance / reworks comes to the perk system. + * A highly "outdated clone" approach for additional player bonuses, perks in TWM2 have been very disjointed in many cases, offering significant bonuses to the point that things become best-in-slot by a long mile leaving everything else to be binned. + * While the "future" (If one ever does come about for this mod) would likely see the entire system removed, the goal here is to bring things down from the Over 9000 power level they exist at now to a more "reasonable" 6 or 7. + * Primary Perks + * Primary Perks provide direct bonuses to player gear (Gear defined as weapons and equipment). + * AP Bullets + * Old Perk: Bullets do 50% More Damage + * New Perk: Bullets deal 15% increased damage, damage to armored targets increased by 33%. + * Discussion: AP Bullets was one of those "BIS" perks that was almost always grabbed because of the flat damage buff to literally "everything". Now this perk gives a small damage buff and a bonus to armored targets (Vehicles / Turrets) to focus more-so on those. + * Advanced Grip + * Old Perk: Improves Weapon Accuracy by 250% + * New Perk: [Renamed: Handling Expert] Reduces weapon spread by a varying amount (Dependent on the weapon) + * Discussion: This perk was kind of "strangely" worded as a "mega accuracy" increase, when in reality it just significantly cut down "spread" on weapons, I still think a spread reduction perk is neat, but this perk is much more toned down now. + * An example: The S3 Rifle's Spread Reduction has been reduced from 250% to 133% + * Wind Break Beacon + * Unchanged + * Discussion: This one has one of those "niche" places in the mod, good for those "oh sh*t" moments when Major Insignia / Lord Vardison launches you to Orbit + * 3 Second C4 + * Unchanged + * Discussion: For now I don't think anything is needed here, but I am exploring potentially making usage of this perk reduce the maximum number of C4s you can hold at once. + * Blade Sweep + * Removed From Mod + * Discussion: Blade Sweep is one of those really strange perks I made just "for the hell of it", that never sees any use because it quite literally is pointless, and thus, it is gone. + * Martydom + * Old Perk: Your armor explodes 4 seconds after death + * New Perk: Upon death, drop a live grenade or C4 charge (if available) (Dependent on which grenade type you have equipped). + * Discussion: This one was so much fun to play around with in the sandbox, but I always felt like it was just the "No U" perk for Shotgun Countering, so now it will instead be a bit more counterable, while still being funny when that C4 explosion goes off. + * Pistol God + * Removed From Mod + * Discussion: This one's kind of unnecessary given the adjustment to Advanced Grip, plus I want Sidearms to not be a completely dominant weapon, so Advanced Grip does not apply to them. + * Double Down + * Removed From Mod + * Discussion: A relic from the old days of PGD Connect with EXP events and "rank ups", given the other big adjustment to perks mentioned earlier, this is no longer needed. + * New Perks: + * Powder Keg + * Increases explosion damage you deal by 25% + * Discussion: A good addition to go alongside AP Bullets for players who prefer explosive weapons. + * Secondary Perks + * Secondary Perks are seen as "defensive" in nature, providing direct bonuses to your player object, for the most part these perks are fairly well made, and just need minor tuning. + * Kevlar Armor + * Old Perk: Increase Shielding to 150% + * New Perk: Reduce incoming damage from bullets by 20%, explosions by 25% + * Discussion: The values on this perk were just a "wee bit" high for damage reduction, so I've brought them down a little. + * Head Guard + * Old Perk: Prevents you from being Headshot Killed + * New Perk: [Renamed: Armored Helmet] Removes the headshot multiplier on incoming rounds + * Discussion: Ah yes, the days of old where Sniper Rifles were godly weapons in PvP on our long range maps. Then I made smaller close quarters maps and people stopped using snipers in everything except wartower. This perk completely nullified an aspect of the projectile targeting game and I think that should be avoided, so sorry but no more blocking those OSK sniper hits, but this will help in rifle fights. + * Yes, I just made sniper zombies that much more lethal... enjoy ;) + * Storm Barrier + * Unchanged + * Discussion: This perk is meant to be a counter to The Ghost of Lightning and the Ion Weapons earned from it, no need to adjust what isn't broken. + * Lim Zombie Shield + * Old Perk: 20% Chance that Zombies Will Be Repeled upon attack + * New Perk: Enhanced your armor with a specialized Lim-Zombie barrier, repelling incoming attackers before requiring a recharge + * Note: This functionality only applies to 'Normal', 'Ravager', and 'Shifter' Zombies. + * Discussion: A bit of an oddity here that few people used because of the RNG element on it, Lim was meant to be a bit of a "get out of jail" card in hectic moments, but it was a bit weak, so now I've changed the functionality to repel a few (2) incoming hits before requiring a 25 second recharge + * No-Infect Armor + * Unchanged: Perk Renamed to 'Undead Resistant Plating' + * Discussion: In the new age of perks, 'No-Infect Armor' sounds like a "cheat-code", so I'm just giving it a slight name alteration without changing the functioning. + * Radar Phantom + * Unchanged + * Discussion: Nothing to do here, this just wraps up the Tribes 2 Jamming Pack into a perk. + * Bomb Shadower & Second Chance + * These two perks used to belong to the Tertiary category, but I've decided to move them to the secondary category. + * Tertiary Perks + * This category is where the bets kind of went all over the map in terms of things, These perks were meant to be your "wildcard" bonus, but instead just became these crazy as hell buffs that had strange "growth" mechanics to them, this category needed the most work. + * These changes are kind of a "start", but I'm looking to hit this category a bit harder later down the line. + * Clip Boxes, Double Time, Ammo Vet + * These three perks did the same thing but had a growth of bonus mechanic as you leveled up, but the old perks stayed in your toolbox, making them completely irrelevant. + * I want to eventually change these perks to be category based (IE: Clip Boxes would give a reload benefit to large-mag guns, like machine guns), but this requires a big rework of the weapon reload system. + * So for now, I'm going to just absolve these three perks into one perk... + * Removed 'Clip Boxes', 'Double Time', and 'Ammo Vet' from the mod + * Added 'Reflexive Reloader': Reduces reload time by 33%. + * UAV Disabler + * Unchanged + * Discussion: This one's fine as is. This perk counters the UAV strike package. + * Team Gain + * Unchanged (For Now) + * Discussion: I'm looking at a rework of this perk, right now it functions as an "assist" perk where your kills grant nearby allies XP for your actions. I like this concept, but want to tweak how the perk considers you to be "nearby". + * Bandolier + * Description Change: Increases Clips To 200% > Doubles your maximum clip capacity + * Discussion: Just being a bit more descriptive as to what this perk does. + * Hardline + * Upcoming Removal + * Discussion: For now this perk will remain in the mod, but I'm going to be "doing away" with Killstreaks in 3.9.3, this will be wrapped up into a new system called Strike Packages, but much more on this later. + * Notes + * Tertiary Perks will be getting another pass later on, seeing as I've effectively reduced this category to 3, maybe 4 usable options, I'm going to likely add more choices here. \ No newline at end of file diff --git a/scripts/RankStuff.cs b/scripts/RankStuff.cs index 4d33d34..ec96cfa 100644 --- a/scripts/RankStuff.cs +++ b/scripts/RankStuff.cs @@ -19,7 +19,7 @@ $Prestige::Name[14] = "Masterful "; $Prestige::Name[15] = "Harbinger "; $Prestige::Rewards[0] = ""; -$Prestige::Rewards[1] = "Fission Bomb Strike, Double Down Perk"; +$Prestige::Rewards[1] = "Fission Bomb Strike"; $Prestige::Rewards[2] = "Pulse Rifle"; $Prestige::Rewards[3] = "Pulse SMG"; $Prestige::Rewards[4] = "XVD4 Acid Launcher"; diff --git a/scripts/TWM2/Systems/MainControl.cs b/scripts/TWM2/Systems/MainControl.cs index 58a44bd..5859d67 100644 --- a/scripts/TWM2/Systems/MainControl.cs +++ b/scripts/TWM2/Systems/MainControl.cs @@ -443,12 +443,7 @@ function GameConnection::AwardZombieKill(%client, %zombie, %implement) { %xpGain = $TWM2::ZombieXPAward[%zombieType]; } // - if(%client.IsActivePerk("Double Down")) { - GainExperience(%client, %xpGain*2, "[D-D]"@$TWM2::ZombieName[%zombieType]@" Killed "); - } - else { - GainExperience(%client, %xpGain, ""@$TWM2::ZombieName[%zombieType]@" Killed "); - } + GainExperience(%client, %xpGain, ""@$TWM2::ZombieName[%zombieType]@" Killed "); //Team Gain Perk if(%client.IsActivePerk("Team Gain")) { %TargetSearchMask = $TypeMasks::PlayerObjectType; diff --git a/scripts/TWM2/Systems/ObjectDamage.cs b/scripts/TWM2/Systems/ObjectDamage.cs index dd9fce3..f869a2e 100644 --- a/scripts/TWM2/Systems/ObjectDamage.cs +++ b/scripts/TWM2/Systems/ObjectDamage.cs @@ -36,12 +36,15 @@ function CalculateProjectileDamage(%projectile, %target, %amount, %dType, %damLo //Projectiles... case "projectile": %target.headShot = 0; //Reset first - if(%sourceClient.ActivePerk["AP Bullets"]) { - %total *= 1.5; + if(%sourceClient.IsActivePerk("AP Bullets")) { + %total *= 1.15; + if(strStr(%TDB.getClassName() $= "Turret") != -1 || && %TDB.getClassName() $= "VehicleData") { + %total *= 1.33; + } } if(%targetClient != 0) { if(%targetClient.IsActivePerk("Kevlar Armor")) { - %total *= 0.5; + %total *= 0.8; } } if(%target.isZombie) { @@ -74,6 +77,11 @@ function CalculateProjectileDamage(%projectile, %target, %amount, %dType, %damLo if(%damLoc $= "head" && %TDB.getClassName() $= "PlayerData") { if(%data.HeadMultiplier !$= "") { %modifier *= %data.HeadMultiplier; + if(%targetClient !$= "") { + if(%targetClient.IsActivePerk("Armored Helmet")) { + %modifier /= %data.HeadMultiplier; + } + } } if(%data.HeadShotKill && $TWM2::HeadshotKill) { %target.headShot = 1; @@ -84,44 +92,39 @@ function CalculateProjectileDamage(%projectile, %target, %amount, %dType, %damLo } } if(%target.headShot) { - if(%targetClient != 0 && %targetClient.ActivePerk["Head Guard"]) { - %target.headShot = 0; - } - else { - if((!%target.isBoss && !%target.noHS) && !(%target.getShieldHealth() > 0)) { - if(%target.isZombie) { - if(%TDB $= "FZombieArmor") { - AwardClient(%sourceClient, "16"); - } - // - if(Game.CheckModifier("WheresMyHead") == 1) { - %target.headShot = 0; - } - else { - %total *= 1000; - } + if((!%target.isBoss && !%target.noHS) && !(%target.getShieldHealth() > 0)) { + if(%target.isZombie) { + if(%TDB $= "FZombieArmor") { + AwardClient(%sourceClient, "16"); + } + // + if(Game.CheckModifier("WheresMyHead") == 1) { + %target.headShot = 0; } else { - if(%target.isPilot() || %target.vehicleMounted) { - %target.headShot = 0; - } - else { - %total *= 1000; - if(%targetClient != 0) { - BottomPrint(%targetClient, "You Lost Your Head!!!", 3, 1); - //Recording... - if(%sourceClient !$= "") { - %sourceClient.TWM2Core.PvPHeadshotKills++; - if(%sourceClient.TWM2Core.PvPHeadshotKills >= 100) { - CompleteNWChallenge(%sourceClient, "HSHoncho1"); - if(%sourceClient.TWM2Core.PvPHeadshotKills >= 200) { - CompleteNWChallenge(%sourceClient, "HSHoncho2"); - if(%sourceClient.TWM2Core.PvPHeadshotKills >= 300) { - CompleteNWChallenge(%sourceClient, "HSHoncho3"); - } + %total *= 1000; + } + } + else { + if(%target.isPilot() || %target.vehicleMounted) { + %target.headShot = 0; + } + else { + %total *= 1000; + if(%targetClient != 0) { + BottomPrint(%targetClient, "You Lost Your Head!!!", 3, 1); + //Recording... + if(%sourceClient !$= "") { + %sourceClient.TWM2Core.PvPHeadshotKills++; + if(%sourceClient.TWM2Core.PvPHeadshotKills >= 100) { + CompleteNWChallenge(%sourceClient, "HSHoncho1"); + if(%sourceClient.TWM2Core.PvPHeadshotKills >= 200) { + CompleteNWChallenge(%sourceClient, "HSHoncho2"); + if(%sourceClient.TWM2Core.PvPHeadshotKills >= 300) { + CompleteNWChallenge(%sourceClient, "HSHoncho3"); } - } - } + } + } } } } @@ -137,6 +140,14 @@ function CalculateProjectileDamage(%projectile, %target, %amount, %dType, %damLo case "explosion": %total = 1; + if(%sourceClient.IsActivePerk("Powder Keg")) { + %total *= 1.25; + } + if(%targetClient != 0) { + if(%targetClient.IsActivePerk("Kevlar Armor")) { + %total *= 0.75; + } + } if(%dType == $DamageType::RapierShield) { if(%target == %sourceObject || %target.isZombie || %target.isBoss) { %total = 0; @@ -394,8 +405,12 @@ function postObjectDestroyed(%source, %targetObject, %dType, %dLoc) { //doChallengeKillRecording(%sourceObject, %targetObject); //martydom if(%targetClient !$= "" && %targetClient != 0 && %targetClient.IsActivePerk("Martydom")) { - serverPlay3d(SatchelChargeActivateSound, %targetObject.getPosition()); - schedule(2200, 0, "MartydomExplode", %targetObject.getPosition(), %targetClient); + if(%targetObject.inv[Grenade] > 0 || %targetObject.inv[ConcussionGrenade] > 0 || %targetObject.inv[FlashGrenade] > 0 || %targetObject.inv[StaticGrenade] > 0) { + %targetObject.use(Grenade); + } + if(%targetObject.inv[C4] > 0) { + %targetObject.use(Mine); + } } } diff --git a/scripts/TWM2/Systems/Perks.cs b/scripts/TWM2/Systems/Perks.cs index a8e5248..6cd2f50 100644 --- a/scripts/TWM2/Systems/Perks.cs +++ b/scripts/TWM2/Systems/Perks.cs @@ -1,151 +1,121 @@ -//The Perks -//LIST -$PerkRequire[1] = $Ranks::MinPoints[32]; -$PerkRequire[2] = $Ranks::MinPoints[40]; -$PerkRequire[7] = $Ranks::MinPoints[54]; -$PerkRequire[9] = $Ranks::MinPoints[43]; -$PerkRequire[10] = $Ranks::MinPoints[18]; -$PerkRequire[11] = $Ranks::MinPoints[36]; -$PerkRequire[15] = $Ranks::MinPoints[60]; -$PerkRequire[16] = $Ranks::MinPoints[46]; -$PerkRequire[21] = $Ranks::MinPoints[4]; -$PerkRequire[22] = $Ranks::MinPoints[45]; +// Perks.cs +// 3.9.2 =: Major Rework //PRIMARY - Weapon Modifications -// AP Bullets [c] - Increase Damage to 150% -// Advanced Grip [c] - Increase Accuracy On All Guns with Spread +// AP Bullets [c] - Bullets deal 15% increased damage, damage to armored targets increased by 33% +// Handling Expert [c] - Reduces weapon spread by a varying amount (Dependent on the weapon) // Wind Brake Beacon [c] - Beacon Key Stops Your Fall Instantly // 3 Second C4 [c] - C4 Detonates in 3 Seconds, not 10 -// Blade Sweep [c] - BoV Affects a small area instead of a single attack -// Martydom [c] - Your armor explodes 4 seconds after death -// Pistol God [c] - Removes All Spread On Certain Pistols -// Double Down [c] - Gain double EXP for non boss Kills. +// Martydom [c] - Upon death, drop a live grenade or C4 charge (if available) +// Powder Keg [c] - Explosions deal 25% increased damage //SECONDARY - Armor And Defense -// OverKill [b] - Replaces your Pistol Slot with an Additional Weapon Slot -// Kevlar Armor [c] - Increase Shielding to 150% -// Head Guard [c] - Blocks Headshot Kills +// Kevlar Armor [c] - Reduce incoming damage from bullets by 20%, explosions by 25% +// Armored Helmet [c] - Removes the headshot multiplier on incoming rounds // Storm Barrier [c] - Reduce Electrical Damage, blocks lightning -// Lim Zombie Shield [c] - 20% Chance that Zombies Will Be Repeled upon attack -// No-Infect Armor [c] - Zombie Attacks will not infect you +// Lim Zombie Shield [c] - Enhanced your armor with a specialized Lim-Zombie barrier, repelling incoming attackers before requiring a recharge +// Undead Resistant Plating [c] - Zombie Attacks will not infect you // Radar Phantom [c] - Jam enemy sensors - -//TERTIARY - Assets -// Clip Boxes [c] - Cuts Reload Time By 33% -// UAV Disabler [c] - You will not show on enemy UAVs -// Team Gain [c] - All Teammates within 20M Of the Killer Gain XP -// Double Time [c] - Cuts Reload Time By 50% -// Ammo Vet [c] - Cuts Reload Time By 75% -// Bandolier [c] - Increases Clips To 200% -// Hardline [c] - Killstreaks require 1 less kill // Bomb Shadower [c] - You do not show a Sabotage Waypoint // Second Chance [c] - Spend a team revive to respawn in horde -$Perk::PerkCount[1] = 8; -$Perk::PerkCount[2] = 6; -$Perk::PerkCount[3] = 9; +//TERTIARY - Assets +// Reflexive Reloader [c] - Reduces weapon reload time by 33% +// UAV Disabler [c] - You will not show on enemy UAVs +// Team Gain [c] - All Teammates within 20M Of the Killer Gain XP +// Bandolier [c] - Doubles your maximum clip capacity +// Hardline [c] - Killstreaks require 1 less kill + +$Perk::PerkCount[1] = 6; +$Perk::PerkCount[2] = 8; +$Perk::PerkCount[3] = 5; $Perk::TotalPerks = $Perk::PerkCount[1] + $Perk::PerkCount[2] + $Perk::PerkCount[3]; $Perk::Perk[1] = "AP Bullets"; -$Perk::Perk[2] = "Advanced Grip"; +$Perk::Perk[2] = "Handling Expert"; $Perk::Perk[3] = "Wind Brake Beacon"; $Perk::Perk[4] = "3 Second C4"; -$Perk::Perk[5] = "Blade Sweep"; -$Perk::Perk[6] = "Martydom"; -$Perk::Perk[7] = "Pistol God"; -$Perk::Perk[8] = "Double Down"; -//$Perk::Perk[9] = "OverKill"; -$Perk::Perk[9] = "Kevlar Armor"; -$Perk::Perk[10] = "Head Guard"; -$Perk::Perk[11] = "Storm Barrier"; -$Perk::Perk[12] = "Lim Zombie Shield"; -$Perk::Perk[13] = "No-Infect Armor"; -$Perk::Perk[14] = "Radar Phantom"; -$Perk::Perk[15] = "Clip Boxes"; +$Perk::Perk[5] = "Martydom"; +$Perk::Perk[6] = "Powder Keg"; +$Perk::Perk[7] = "Kevlar Armor"; +$Perk::Perk[8] = "Armored Helmet"; +$Perk::Perk[9] = "Storm Barrier"; +$Perk::Perk[10] = "Lim Zombie Shield"; +$Perk::Perk[11] = "Undead Resistant Plating"; +$Perk::Perk[12] = "Radar Phantom"; +$Perk::Perk[13] = "Bomb Shadower"; +$Perk::Perk[14] = "Second Chance"; +$Perk::Perk[15] = "Reflexive Reloader"; $Perk::Perk[16] = "UAV Disabler"; $Perk::Perk[17] = "Team Gain"; -$Perk::Perk[18] = "Double Time"; -$Perk::Perk[19] = "Ammo Vet"; -$Perk::Perk[20] = "Bandolier"; -$Perk::Perk[21] = "Hardline"; -$Perk::Perk[22] = "Bomb Shadower"; -$Perk::Perk[23] = "Second Chance"; +$Perk::Perk[18] = "Bandolier"; +$Perk::Perk[19] = "Hardline"; $Perk::PerkToID["AP Bullets"] = 1; -$Perk::PerkToID["Advanced Grip"] = 2; +$Perk::PerkToID["Handling Expert"] = 2; $Perk::PerkToID["Wind Brake Beacon"] = 3; $Perk::PerkToID["3 Second C4"] = 4; -$Perk::PerkToID["Blade Sweep"] = 5; -$Perk::PerkToID["Martydom"] = 6; -$Perk::PerkToID["Pistol God"] = 7; -$Perk::PerkToID["Double Down"] = 8; -//$Perk::PerkToID["OverKill"] = 9; -$Perk::PerkToID["Kevlar Armor"] = 9; -$Perk::PerkToID["Head Guard"] = 10; -$Perk::PerkToID["Storm Barrier"] = 11; -$Perk::PerkToID["Lim Zombie Shield"] = 12; -$Perk::PerkToID["No-Infect Armor"] = 13; -$Perk::PerkToID["Radar Phantom"] = 14; -$Perk::PerkToID["Clip Boxes"] = 15; +$Perk::PerkToID["Martydom"] = 5; +$Perk::PerkToID["Powder Keg"] = 6; +$Perk::PerkToID["Kevlar Armor"] = 7; +$Perk::PerkToID["Armored Helmet"] = 8; +$Perk::PerkToID["Storm Barrier"] = 9; +$Perk::PerkToID["Lim Zombie Shield"] = 10; +$Perk::PerkToID["Undead Resistant Plating"] = 11; +$Perk::PerkToID["Radar Phantom"] = 12; +$Perk::PerkToID["Bomb Shadower"] = 13; +$Perk::PerkToID["Second Chance"] = 14; +$Perk::PerkToID["Reflexive Reloader"] = 15; $Perk::PerkToID["UAV Disabler"] = 16; $Perk::PerkToID["Team Gain"] = 17; -$Perk::PerkToID["Double Time"] = 18; -$Perk::PerkToID["Ammo Vet"] = 19; -$Perk::PerkToID["Bandolier"] = 20; -$Perk::PerkToID["Hardline"] = 21; -$Perk::PerkToID["Bomb Shadower"] = 22; -$Perk::PerkToID["Second Chance"] = 23; +$Perk::PerkToID["Bandolier"] = 18; +$Perk::PerkToID["Hardline"] = 19; -$Perk::Descrip[1] = "Bullets do 50% More Damage"; -$Perk::Descrip[2] = "Improves Weapon Accuracy by 250%"; + +$Perk::Descrip[1] = "Bullets deal 15% increased damage, damage to armored targets increased by 33%"; +$Perk::Descrip[2] = "Reduces weapon spread by a varying amount (Dependent on the weapon)"; $Perk::Descrip[3] = "Instantly Stop a fall with your beacon key"; -$Perk::Descrip[4] = "Your C4 Detonates in 3 Seconds, not 10"; -$Perk::Descrip[5] = "The BoV Affects a small area, not 1 target"; -$Perk::Descrip[6] = "Your armor explodes 4 seconds after death"; -$Perk::Descrip[7] = "Makes certain pistols 100% accurate"; -$Perk::Descrip[8] = "Gain Double EXP for non boss kills"; -//$Perk::Descrip[9] = "Adds an additional weapon slot to your armor"; -$Perk::Descrip[9] = "Increases your armor by 50%"; -$Perk::Descrip[10] = "Prevents you from being Headshot Killed"; -$Perk::Descrip[11] = "Protects you from electrical attacks"; -$Perk::Descrip[12] = "20% chance to deflect zombie attackers"; -$Perk::Descrip[13] = "Prevents you from being infected"; -$Perk::Descrip[14] = "Jam enemy sensors"; -$Perk::Descrip[15] = "Reduces reload time by 33%"; +$Perk::Descrip[4] = "Your C4 Detonates in 3 seconds instead of 10 seconds"; +$Perk::Descrip[5] = "Upon death, drop a live grenade or C4 charge (if available)"; +$Perk::Descrip[6] = "Explosions deal 25% increased damage"; +$Perk::Descrip[7] = "Reduce incoming damage from bullets by 20%, explosions by 25%"; +$Perk::Descrip[8] = "Removes the headshot multiplier on incoming rounds"; +$Perk::Descrip[9] = "Protects you from electrical attacks"; +$Perk::Descrip[10] = "Enhanced your armor with a specialized Lim-Zombie barrier, repelling incoming attackers before requiring a recharge"; +$Perk::Descrip[11] = "Prevents you from being infected"; +$Perk::Descrip[12] = "Jam enemy sensors"; +$Perk::Descrip[13] = "You do not show a Sabotage Waypoint"; +$Perk::Descrip[14] = "Spend a team revive to respawn in horde"; +$Perk::Descrip[15] = "Reduces weapon reload time by 33%"; $Perk::Descrip[16] = "You will not show on enemy UAVs"; $Perk::Descrip[17] = "Allies near you will gain XP for your kills"; -$Perk::Descrip[18] = "Reduces reload time by 50%"; -$Perk::Descrip[19] = "Reduces reload time by 75%"; -$Perk::Descrip[20] = "Doubles your initial clip count"; -$Perk::Descrip[21] = "Killstreaks require 1 less kill to earn"; -$Perk::Descrip[22] = "You do not show a Sabotage Waypoint"; -$Perk::Descrip[23] = "Spend a team revive to respawn in horde"; +$Perk::Descrip[18] = "Doubles your maximum clip capacity"; +$Perk::Descrip[19] = "Killstreaks require 1 less kill to earn"; + $Perk::PerkToGroup["AP Bullets"] = 1; -$Perk::PerkToGroup["Advanced Grip"] = 1; +$Perk::PerkToGroup["Handling Expert"] = 1; $Perk::PerkToGroup["Wind Brake Beacon"] = 1; $Perk::PerkToGroup["3 Second C4"] = 1; -$Perk::PerkToGroup["Blade Sweep"] = 1; $Perk::PerkToGroup["Martydom"] = 1; -$Perk::PerkToGroup["Pistol God"] = 1; -$Perk::PerkToGroup["Double Down"] = 1; -//$Perk::PerkToGroup["OverKill"] = 2; +$Perk::PerkToGroup["Powder Keg"] = 1; +//---------------------------------------- $Perk::PerkToGroup["Kevlar Armor"] = 2; -$Perk::PerkToGroup["Head Guard"] = 2; +$Perk::PerkToGroup["Armored Helmet"] = 2; $Perk::PerkToGroup["Storm Barrier"] = 2; $Perk::PerkToGroup["Lim Zombie Shield"] = 2; -$Perk::PerkToGroup["No-Infect Armor"] = 2; +$Perk::PerkToGroup["Undead Resistant Plating"] = 2; $Perk::PerkToGroup["Radar Phantom"] = 2; -$Perk::PerkToGroup["Clip Boxes"] = 3; +$Perk::PerkToGroup["Bomb Shadower"] = 2; +$Perk::PerkToGroup["Second Chance"] = 2; +//---------------------------------------- +$Perk::PerkToGroup["Reflexive Reloader"] = 3; $Perk::PerkToGroup["UAV Disabler"] = 3; $Perk::PerkToGroup["Team Gain"] = 3; -$Perk::PerkToGroup["Double Time"] = 3; -$Perk::PerkToGroup["Ammo Vet"] = 3; $Perk::PerkToGroup["Bandolier"] = 3; $Perk::PerkToGroup["Hardline"] = 3; -$Perk::PerkToGroup["Bomb Shadower"] = 3; -$Perk::PerkToGroup["Second Chance"] = 3; + //Asset Function function GameConnection::IsActivePerk(%client, %perk) { @@ -197,20 +167,6 @@ function GameConnection::CanUsePerk(%client, %perkVal) { %scriptController = %client.TWM2Core; %xp = getCurrentEXP(%client); switch(%perkVal) { - case 1: - if(%xp >= $PerkRequire[1]) { - return true; - } - else { - return false; - } - case 2: - if(%xp >= $PerkRequire[2]) { - return true; - } - else { - return false; - } case 3: if(%client.hasMedal(8)) { return true; @@ -218,133 +174,21 @@ function GameConnection::CanUsePerk(%client, %perkVal) { else { return false; } - case 4 or 5: - if(%client.hasMedal(11)) { - return true; - } - else { - return false; - } - case 6: - if(%client.hasMedal(13)) { - return true; - } - else { - return false; - } - case 7: - if(%xp >= $PerkRequire[7]) { - return true; - } - else { - return false; - } - case 8: - if(%scriptController.officer >= 1) { - return true; - } - else { - return false; - } -// case 9: -// if(%xp >= $PerkRequire[9]) { -// return true; -// } -// else { -// return false; -// } case 9: - if(%xp >= $PerkRequire[10]) { - return true; - } - else { - return false; - } - case 10: - if(%xp >= $PerkRequire[11]) { - return true; - } - else { - return false; - } - case 11: if(%client.hasMedal(9)) { return true; } else { return false; } - case 12: - if(%client.hasMedal(10)) { - return true; - } - else { - return false; - } case 13: - if(%client.hasMedal(12)) { - return true; - } - else { - return false; - } - case 14: - if(%xp >= $PerkRequire[15]) { - return true; - } - else { - return false; - } - case 15: - if(%xp >= $PerkRequire[16]) { - return true; - } - else { - return false; - } - case 16: - if(%client.hasMedal(14)) { - return true; - } - else { - return false; - } - case 17 or 19: - if(%client.hasMedal(5)) { - return true; - } - else { - return false; - } - case 18: - if(%client.hasMedal(7)) { - return true; - } - else { - return false; - } - case 20: - if(%xp >= $PerkRequire[21]) { - return true; - } - else { - return false; - } - case 21: - if(%xp >= $PerkRequire[22]) { - return true; - } - else { - return false; - } - case 22: if(%client.CheckNWChallengeCompletion("3For5Sabo")) { return true; } else { return false; } - case 23: + case 14: if(%client.CheckNWChallengeCompletion("ArmyOf50Stopped")) { return true; } @@ -445,6 +289,9 @@ function DoPerksStuff(%client, %player) { if(%client.IsActivePerk("Wind Brake Beacon")) { %client.player.AirBrakes = 3; } + if(%client.IsActivePerk("Lim Zombie Shield")) { + %client.player.LimHits = 2; + } } @@ -463,18 +310,9 @@ function RepelZombie(%zombie, %player) { %zombie.playShieldEffect("1 1 1"); } -function MartydomExplode(%position, %client) { - ServerPlay3D("SatchelChargeExplosionSound", %position); - %c4 = new Item() { - datablock = C4Deployed; - position = %position; - scale = ".1 .1 .1"; - owner = %client; - }; - MissionCleanup.add(%c4); - %c4.theClient = %client; - - //echo("DEBUG: C4 mine dropped: "@%position TAB %client TAB %c4@""); - - schedule(770, 0, "C4GoBoom", %c4); -} +function resetLimCharges(%player) { + if(!isObject(%player) || %player.getState() $= "dead") { + return; + } + %player.LimHits = 2; +} \ No newline at end of file diff --git a/scripts/TWM2/WeaponFunctions.cs b/scripts/TWM2/WeaponFunctions.cs index 0bea69a..b0b7206 100644 --- a/scripts/TWM2/WeaponFunctions.cs +++ b/scripts/TWM2/WeaponFunctions.cs @@ -170,15 +170,9 @@ function AttemptReload(%WImg, %Plyr, %slot) { %plyr.ClipCount[%WImg.ClipName]--; } %Plyr.Reloading[%WImg] = 1; - if(%client.IsActivePerk("Clip Boxes")) { + if(%client.IsActivePerk("Reflexive Reloader")) { %ReloadTime = %WImg.ClipReloadTime - (%WImg.ClipReloadTime * 0.33); } - else if(%client.IsActivePerk("Double Time")) { - %ReloadTime = %WImg.ClipReloadTime - (%WImg.ClipReloadTime * 0.5); - } - else if(%client.IsActivePerk("Ammo Vet")) { - %ReloadTime = %WImg.ClipReloadTime - (%WImg.ClipReloadTime * 0.75); - } else { %ReloadTime = %WImg.ClipReloadTime; } diff --git a/scripts/TWM2/Zombie/ZombieCore.cs b/scripts/TWM2/Zombie/ZombieCore.cs index be316c2..d476425 100644 --- a/scripts/TWM2/Zombie/ZombieCore.cs +++ b/scripts/TWM2/Zombie/ZombieCore.cs @@ -237,7 +237,7 @@ function TWM2Lib_Zombie_Core(%functionName, %arg1, %arg2, %arg3, %arg4) { } //Additional checks... if(%arg1.client !$= "") { - if(%arg1.client.isActivePerk("No-Infect Armor")) { + if(%arg1.client.isActivePerk("Undead Resistant Plating")) { %arg1.playShieldEffect("1 1 1"); %arg1.infected = 0; return; diff --git a/scripts/TWM2/Zombie/ZombieTypes/Normal.cs b/scripts/TWM2/Zombie/ZombieTypes/Normal.cs index 6374b42..3cdacdd 100644 --- a/scripts/TWM2/Zombie/ZombieTypes/Normal.cs +++ b/scripts/TWM2/Zombie/ZombieTypes/Normal.cs @@ -49,6 +49,19 @@ function ZombieArmor::armorCollisionFunction(%datablock, %zombie, %colPlayer) { if(%colPlayer.isBoss || %colPlayer.isZombie || %colPlayer.rapierShield) { return; } + + if(%colPlayer.client !$= "") { + if(%colPlayer.client.IsActivePerk("Lim Zombie Shield")) { + if(%colPlayer.limHits > 0) { + RepelZombie(%zombie, %colPlayer); + %colPlayer.limHits--; + } + if(%colPlayer.limHits == 0) { + schedule(25000, 0, "resetLimCharges", %colPlayer); + } + } + } + //Damage. %causeInfect = %zombie.damage_infectOnTouch; %baseDamage = %zombie.damage_amountOnTouch; diff --git a/scripts/TWM2/Zombie/ZombieTypes/Ravager.cs b/scripts/TWM2/Zombie/ZombieTypes/Ravager.cs index 98fe28f..f4443c3 100644 --- a/scripts/TWM2/Zombie/ZombieTypes/Ravager.cs +++ b/scripts/TWM2/Zombie/ZombieTypes/Ravager.cs @@ -30,6 +30,19 @@ function RavagerZombieArmor::armorCollisionFunction(%datablock, %zombie, %colPla if(%colPlayer.isBoss || %colPlayer.isZombie || %colPlayer.rapierShield) { return; } + + if(%colPlayer.client !$= "") { + if(%colPlayer.client.IsActivePerk("Lim Zombie Shield")) { + if(%colPlayer.limHits > 0) { + RepelZombie(%zombie, %colPlayer); + %colPlayer.limHits--; + } + if(%colPlayer.limHits == 0) { + schedule(25000, 0, "resetLimCharges", %colPlayer); + } + } + } + //Damage. %causeInfect = %zombie.damage_infectOnTouch; %baseDamage = %zombie.damage_amountOnTouch; diff --git a/scripts/TWM2/Zombie/ZombieTypes/Shifter.cs b/scripts/TWM2/Zombie/ZombieTypes/Shifter.cs index 1bdcb41..8ced1e9 100644 --- a/scripts/TWM2/Zombie/ZombieTypes/Shifter.cs +++ b/scripts/TWM2/Zombie/ZombieTypes/Shifter.cs @@ -49,6 +49,19 @@ function ShifterZombieArmor::armorCollisionFunction(%datablock, %zombie, %colPla if(%colPlayer.isBoss || %colPlayer.isZombie || %colPlayer.rapierShield) { return; } + + if(%colPlayer.client !$= "") { + if(%colPlayer.client.IsActivePerk("Lim Zombie Shield")) { + if(%colPlayer.limHits > 0) { + RepelZombie(%zombie, %colPlayer); + %colPlayer.limHits--; + } + if(%colPlayer.limHits == 0) { + schedule(25000, 0, "resetLimCharges", %colPlayer); + } + } + } + //Damage. %causeInfect = %zombie.damage_infectOnTouch; %baseDamage = %zombie.damage_amountOnTouch; diff --git a/scripts/projectiles.cs b/scripts/projectiles.cs index 77443ad..b6c5f4e 100644 --- a/scripts/projectiles.cs +++ b/scripts/projectiles.cs @@ -144,12 +144,15 @@ function ShapeBaseImageData::onFire(%data, %obj, %slot) { // %spread = %data.projectileSpread; if(%obj.client !$= "") { - if(%obj.client.IsActivePerk("Advanced Grip")) { - %spread = %spread / 2.5; - } if(%obj.client.UpgradeOn("Grip", %data.getName())) { %spread = %spread / 1.7; } + %handleExpertReduce = %data.handleExpertReduce; + if(%handleExpertReduce !$= "") { + if(%obj.client.IsActivePerk("Handling Expert")) { + %spread = %spread / 1.33; + } + } } // %vec = %obj.getMuzzleVector(%slot); @@ -158,14 +161,6 @@ function ShapeBaseImageData::onFire(%data, %obj, %slot) { %z = (getRandom() - 0.5) * 2 * 3.1415926 * %spread; %mat = MatrixCreateFromEuler(%x @ " " @ %y @ " " @ %z); %vector = MatrixMulVector(%mat, %vec); - - if(%obj.client !$= "") { - if(%obj.client.IsActivePerk("Pistol God")) { - if(%data.getName() $= "PistolImage" || %data.getName() $= "DeagleImage") { - %vector = %obj.getMuzzleVector(%slot); - } - } - } } else { %vector = %obj.getMuzzleVector(%slot); diff --git a/scripts/weapons/MGs/MG42.cs b/scripts/weapons/MGs/MG42.cs index 1c2a0dc..31bca64 100644 --- a/scripts/weapons/MGs/MG42.cs +++ b/scripts/weapons/MGs/MG42.cs @@ -108,6 +108,7 @@ datablock ShapeBaseImageData(MG42Image) { RankRequire = $TWM2::RankRequire["MG42"]; projectileSpread = 12.5 / 1000.0; + handleExpertReduce = 1.5; //-------------------------------------- stateName[0] = "Activate"; diff --git a/scripts/weapons/MGs/MRXX.cs b/scripts/weapons/MGs/MRXX.cs index 80326e9..46ac978 100644 --- a/scripts/weapons/MGs/MRXX.cs +++ b/scripts/weapons/MGs/MRXX.cs @@ -100,6 +100,7 @@ datablock ShapeBaseImageData(MRXXImage) { shellVelocity = 4.5; projectileSpread = 10.0 / 1000.0; + handleExpertReduce = 1.75; //-------------------------------------- diff --git a/scripts/weapons/MGs/RP432.cs b/scripts/weapons/MGs/RP432.cs index 2f5c953..b63c362 100644 --- a/scripts/weapons/MGs/RP432.cs +++ b/scripts/weapons/MGs/RP432.cs @@ -110,6 +110,7 @@ datablock ShapeBaseImageData(RP432Image) { shellVelocity = 4.5; projectileSpread = 10.0 / 1000.0; + handleExpertReduce = 1.4; //-------------------------------------- diff --git a/scripts/weapons/Rifles/G41.cs b/scripts/weapons/Rifles/G41.cs index ca9a003..2050947 100644 --- a/scripts/weapons/Rifles/G41.cs +++ b/scripts/weapons/Rifles/G41.cs @@ -100,6 +100,7 @@ datablock ShapeBaseImageData(G41RifleImage) { shellVelocity = 3.0; projectileSpread = 3.0 / 1000.0; + handleExpertReduce = 1.25; stateName[0] = "Activate"; stateTransitionOnTimeout[0] = "ActivateReady"; diff --git a/scripts/weapons/Rifles/M4A1.cs b/scripts/weapons/Rifles/M4A1.cs index effc83c..c520827 100644 --- a/scripts/weapons/Rifles/M4A1.cs +++ b/scripts/weapons/Rifles/M4A1.cs @@ -114,6 +114,7 @@ datablock ShapeBaseImageData(M4A1Image) { shellVelocity = 3.0; projectileSpread = 8.0 / 1000.0; + handleExpertReduce = 1.25; //-------------------------------------- stateName[0] = "Activate"; diff --git a/scripts/weapons/Rifles/PulseRifle.cs b/scripts/weapons/Rifles/PulseRifle.cs index 60a74c4..c26255d 100644 --- a/scripts/weapons/Rifles/PulseRifle.cs +++ b/scripts/weapons/Rifles/PulseRifle.cs @@ -93,6 +93,7 @@ datablock ShapeBaseImageData(PulseRifleImage) { shellVelocity = 3.0; projectileSpread = 2.0 / 1000.0; + handleExpertReduce = 1.15; stateName[0] = "Activate"; stateTransitionOnTimeout[0] = "ActivateReady"; diff --git a/scripts/weapons/Rifles/RSALaserRifle.cs b/scripts/weapons/Rifles/RSALaserRifle.cs index 174f8a3..82dc604 100644 --- a/scripts/weapons/Rifles/RSALaserRifle.cs +++ b/scripts/weapons/Rifles/RSALaserRifle.cs @@ -157,6 +157,7 @@ datablock ShapeBaseImageData(lasergunImage) { RankRequire = $TWM2::RankRequire["RSALaserRifle"]; maxSpread = 10.0 / 1000.0; + handleExpertReduce = 1.5; stateName[0] = "Activate"; stateTransitionOnTimeout[0] = "ActivateReady"; diff --git a/scripts/weapons/Rifles/S3.cs b/scripts/weapons/Rifles/S3.cs index f491424..070bc5b 100644 --- a/scripts/weapons/Rifles/S3.cs +++ b/scripts/weapons/Rifles/S3.cs @@ -108,6 +108,7 @@ datablock ShapeBaseImageData(S3RifleImage) { shellVelocity = 3.0; projectileSpread = 5.0 / 1000.0; + handleExpertReduce = 1.33; stateName[0] = "Activate"; stateTransitionOnTimeout[0] = "ActivateReady"; @@ -179,8 +180,8 @@ function S3RifleImage::OnFire(%data, %obj, %slot) { if(%obj.client.UpgradeOn("Burst Clip", %data.getName())) { %spread = %data.projectileSpread; if(%obj.client !$= "") { - if(%obj.client.IsActivePerk("Advanced Grip")) { - %spread = %spread / 2.5; + if(%obj.client.IsActivePerk("Handling Expert")) { + %spread = %spread / 1.33; } } %vec2 = %obj.getMuzzleVector(%slot); diff --git a/scripts/weapons/Rifles/S3S.cs b/scripts/weapons/Rifles/S3S.cs index bbcf6e1..8eb4a40 100644 --- a/scripts/weapons/Rifles/S3S.cs +++ b/scripts/weapons/Rifles/S3S.cs @@ -84,6 +84,7 @@ datablock ShapeBaseImageData(S3SRifleImage) { shellVelocity = 3.0; projectileSpread = 4.0 / 1000.0; + handleExpertReduce = 1.33; stateName[0] = "Activate"; stateTransitionOnTimeout[0] = "ActivateReady"; diff --git a/scripts/weapons/SMGs/MP26.cs b/scripts/weapons/SMGs/MP26.cs index 9b58bbd..f731853 100644 --- a/scripts/weapons/SMGs/MP26.cs +++ b/scripts/weapons/SMGs/MP26.cs @@ -110,6 +110,7 @@ datablock ShapeBaseImageData(Mp26Image) shellVelocity = 3.0; projectileSpread = 4.0 / 1000.0; + handleExpertReduce = 1.33; //-------------------------------------- stateName[0] = "Activate"; diff --git a/scripts/weapons/SMGs/MP26CMDO.cs b/scripts/weapons/SMGs/MP26CMDO.cs index aa82cab..0a03e6e 100644 --- a/scripts/weapons/SMGs/MP26CMDO.cs +++ b/scripts/weapons/SMGs/MP26CMDO.cs @@ -101,6 +101,7 @@ datablock ShapeBaseImageData(Mp26CMDOImage) shellVelocity = 3.0; projectileSpread = 3.2 / 1000.0; + handleExpertReduce = 1.33; //-------------------------------------- stateName[0] = "Activate"; diff --git a/scripts/weapons/SMGs/P90.cs b/scripts/weapons/SMGs/P90.cs index 09e67d5..3e0f764 100644 --- a/scripts/weapons/SMGs/P90.cs +++ b/scripts/weapons/SMGs/P90.cs @@ -112,6 +112,7 @@ datablock ShapeBaseImageData(P90Image) shellVelocity = 3.0; projectileSpread = 4.0 / 1000.0; + handleExpertReduce = 1.15; //-------------------------------------- stateName[0] = "Activate"; diff --git a/scripts/weapons/SMGs/Pg700.cs b/scripts/weapons/SMGs/Pg700.cs index 306187a..1933ece 100644 --- a/scripts/weapons/SMGs/Pg700.cs +++ b/scripts/weapons/SMGs/Pg700.cs @@ -117,6 +117,7 @@ datablock ShapeBaseImageData(Pg700Image) shellVelocity = 3.0; projectileSpread = 3.0 / 1000.0; + handleExpertReduce = 1.40; //-------------------------------------- stateName[0] = "Activate"; diff --git a/scripts/weapons/SMGs/PulseSMG.cs b/scripts/weapons/SMGs/PulseSMG.cs index 90f2967..dc26ab2 100644 --- a/scripts/weapons/SMGs/PulseSMG.cs +++ b/scripts/weapons/SMGs/PulseSMG.cs @@ -104,6 +104,7 @@ datablock ShapeBaseImageData(PulseSMGImage) shellVelocity = 3.0; projectileSpread = 3.0 / 1000.0; + handleExpertReduce = 1.20; //-------------------------------------- stateName[0] = "Activate"; diff --git a/scripts/weapons/SMGs/chaingun.cs b/scripts/weapons/SMGs/chaingun.cs index ca7f094..24d8cae 100644 --- a/scripts/weapons/SMGs/chaingun.cs +++ b/scripts/weapons/SMGs/chaingun.cs @@ -486,6 +486,7 @@ datablock ShapeBaseImageData(MiniChaingunImage) shellVelocity = 3.0; projectileSpread = 8.0 / 1000.0; + handleExpertReduce = 1.5; //-------------------------------------- stateName[0] = "Activate"; diff --git a/scripts/weapons/Shotguns/M1700.cs b/scripts/weapons/Shotguns/M1700.cs index 95d7637..9118fdb 100644 --- a/scripts/weapons/Shotguns/M1700.cs +++ b/scripts/weapons/Shotguns/M1700.cs @@ -111,6 +111,7 @@ datablock ShapeBaseImageData(M1700Image) { // projectileSpread = 11.0 / 1000.0; + handleExpertReduce = 1.2; stateName[0] = "Activate"; stateTransitionOnTimeout[0] = "ActivateReady"; diff --git a/scripts/weapons/Shotguns/Model1887.cs b/scripts/weapons/Shotguns/Model1887.cs index 49aaf34..7c308b6 100644 --- a/scripts/weapons/Shotguns/Model1887.cs +++ b/scripts/weapons/Shotguns/Model1887.cs @@ -110,6 +110,7 @@ datablock ShapeBaseImageData(Model1887Image) { // projectileSpread = 7.0 / 1000.0; + handleExpertReduce = 1.33; stateName[0] = "Activate"; stateTransitionOnTimeout[0] = "ActivateReady"; diff --git a/scripts/weapons/Shotguns/SA2400.cs b/scripts/weapons/Shotguns/SA2400.cs index aa221f4..34d4f02 100644 --- a/scripts/weapons/Shotguns/SA2400.cs +++ b/scripts/weapons/Shotguns/SA2400.cs @@ -141,6 +141,7 @@ datablock ShapeBaseImageData( SA2400Image ) { // projectileSpread = 3.0 / 1000.0; + handleExpertReduce = 2.0 //----------------------------------------------------------------------------\\ //State Data\\ //----------------------------------------------------------------------------\\ diff --git a/scripts/weapons/Shotguns/SCD343.cs b/scripts/weapons/Shotguns/SCD343.cs index 6096c2a..c783be2 100644 --- a/scripts/weapons/Shotguns/SCD343.cs +++ b/scripts/weapons/Shotguns/SCD343.cs @@ -106,6 +106,7 @@ datablock ShapeBaseImageData(SCD343Image) { // projectileSpread = 10.0 / 1000.0; + handleExpertReduce = 1.3; stateName[0] = "Activate"; stateTransitionOnTimeout[0] = "ActivateReady"; diff --git a/scripts/weapons/Shotguns/Wp400.cs b/scripts/weapons/Shotguns/Wp400.cs index b34a378..6fce372 100644 --- a/scripts/weapons/Shotguns/Wp400.cs +++ b/scripts/weapons/Shotguns/Wp400.cs @@ -106,6 +106,7 @@ datablock ShapeBaseImageData(Wp400Image) { // projectileSpread = 15.0 / 1000.0; + handleExpertReduce = 1.33; stateName[0] = "Activate"; stateTransitionOnTimeout[0] = "ActivateReady";