From e8f761555c25cb4de9f38c32875468622edb1ca5 Mon Sep 17 00:00:00 2001 From: Robert Fritzen Date: Fri, 30 Jun 2017 22:52:31 -0500 Subject: [PATCH] Boss Balancing Pass Another balancing pass to the bosses in TWM2. --- README.md | 42 ++++++++++++++++---- scripts/TWM2/Bosses/GhostOfFire.cs | 25 +++++++----- scripts/TWM2/Bosses/LordRog.cs | 26 ++++-------- scripts/TWM2/Bosses/LordYvex.cs | 14 +++---- scripts/TWM2/ModObjects/UAMS.cs | 12 ++++-- scripts/TWM2/Systems/HarbingersWrath.cs | 23 +++++------ scripts/player.cs | 2 +- scripts/vehicles/vehicle_TacticalMissile.cs | 8 +--- scripts/vehicles/vehicle_ac130.cs | 2 +- scripts/vehicles/vehicle_harbingerGunship.cs | 2 +- 10 files changed, 86 insertions(+), 70 deletions(-) diff --git a/README.md b/README.md index 60f653a..64a49bb 100644 --- a/README.md +++ b/README.md @@ -89,7 +89,7 @@ PLEASE NOTE: For the Legacy (Pre-GitHub Versions) Changelogs, please see LEGACY * Adjusted the daily challenge script to point to the correct link, effectively re-enabling the system * Addressed the bug preventing weapon challenge progress from recording * Flipped the /help public and /help additional roles, now using /help will provide the list of accessors -* Removed all aspects of daily exp recording as we are no longer capping progression in the mod +* Removed all remaining EXP capping codes as the cap was removed in 3.9 * Re-did the Challenge Menus in the F2 Menu * Renamed Weapon Challenges to just Challenges * From this menu, players now select General Tasks or Weapon Challenges @@ -100,7 +100,7 @@ PLEASE NOTE: For the Legacy (Pre-GitHub Versions) Changelogs, please see LEGACY * TWM2 Challenge System Changes * Depricated the Blacklist Challenges, and replaced it with Wargames challenges, which are focused on PvP tasks across all modes. * Let's see who can complete some of those "tough" ones :) - * Completed the Zombie Slaying Challenges, allowing players to earn some nice healthy batches of EXP for slaying zombies + * "Finally" completed the Zombie Slaying Challenges category, zombie hunters rejoice for bonus EXP! * Added boss challenges for the bosses that did not have any: * Shade Lord * Ghost of Fire @@ -111,24 +111,52 @@ PLEASE NOTE: For the Legacy (Pre-GitHub Versions) Changelogs, please see LEGACY * Addressed the bug preventing the four Vardison challenges for specific difficulty completions from actually completing * Internally, Redid the entire challenge system to automate most of it, allowing for eally easy deployment of future challenges * Added in some cool new features for these as well for things such as hidden challenges, and embedded additional requirements -* Added in the necessary hooks to enable officer ranks 10 - 15 - * Have fun! -* Re-did the Officer Promotion windows to preview the rewards upcoming at that level + * All menus are now generated via script instead of hardcoded, making fixing issues with the system much easier +* Enabled officer ranks 10 - 15 +* Re-did the Officer Promotion windows to preview the rewards upcoming at that officer level * Added in the capability to "reset" your entire TWM2 progression upon hitting max level of Officer 15 (Max Level) - * I'm currently considering replacing this with a different system, will be decided as a 3.92 feature + * This is a temporary feature that will be replaced in 3.9.2 * Depricated the Store and Money systems, these systems will become progression based unlocks for "higher" officer levels (10 - 15) * Armor effects will not return * Armor flags will return in 3.92 * Fixed the bug with Demon Lord zombies not targeting properly * Fixed a console warning bug caused by zombie objects despawning and then calling a scan method * Shifter Zombies now have a randomzied element in their teleport method -* Plasma Torpedo Cannon now requires officer level 9 (Phantom) +* Fixed a code bug with Lord Yvex which caused his death pulse to be replaced by nightmare missiles +* Plasma Torpedo Cannon now requires officer level 9 (Was 4) * Addressed the bug preventing the challenges for reaching officer ranks from completing * Weapon Balancing Pass * Grapple Hook * Slowed down the attacher projectile a bit, lowering the range * Grapple hook now requires 60% armor energy and consumes this when firing * There is now a 5 second cooldown when firing to prevent for quick escapes +* Boss Balancing Pass + * Lord Yvex + * Health reduced to 40,000 (Was 50,000) + * Nightmare time reduced to 33% of what it was (NOTE: This change also applies to Lord Vardison) + * Nightmare damage taken is unchanged + * Yvex Healing from Nightmares reduced by 50% + * Lord Rog + * Health reduced to 50,000 (Was 65,000) + * Rog's Blade of Vengeance now only restores 1000HP (Was 2500HP) + * Removed Elite Demons from his spawning pool (These minions are reserved for Lord Vardison) + * Reduced Lord Rog's Meteor Attacks to 1 and 5 meteors respectively (Was 3 and 15) + * Static Discharge Attack + * Lord Rog freeze time increased to 8.5 seconds (Was 7 seconds) + * Inflicted freeze time reduced to 10 seconds (Was 15 seconds) + * Damage per second increased to 0.6 (Was 0.5) + * This equates to a 20% damage reduction when considering the attack duration decrease + * Laser attack now only fires 25 pulses instead of 40 + * Ghost of Fire + * Now immune to death by falling under the map + * Sorry TWM1 Vets, but this strategy is no longer going to work ;) + * 1000% armor increase to all fire damage types + * This should hammer home the point to not use fire weapons on the Ghost of Fire + * Mt. Death no longer instantly triggers (No more ear rape) + * There is now a three second delay between his attack trigger and the first pulse + * Added four additional bursts to compensate + * Reduced the amount of cursed flames spawned to 1 and 3 (Was 3 and 5) + * As a reminder folks, you can block these with Flare Grenades ;) 3.8 -> 3.9: * Progression System Adjustments diff --git a/scripts/TWM2/Bosses/GhostOfFire.cs b/scripts/TWM2/Bosses/GhostOfFire.cs index 4af2f8f..2021173 100644 --- a/scripts/TWM2/Bosses/GhostOfFire.cs +++ b/scripts/TWM2/Bosses/GhostOfFire.cs @@ -374,8 +374,9 @@ datablock PlayerData(GhostFireArmor) : MediumPlayerDamageProfile maxGrenades = 1; // Max number of different grenades the player can have maxMines = 1; // Max number of different mines the player can have - damageScale[$DamageType::plasma] = 0.05; - damageScale[$DamageType::Burn] = 0.05; + damageScale[$DamageType::plasma] = 0.001; + damageScale[$DamageType::Burn] = 0.001; + damageScale[$DamageType::Fire] = 0.001; damageScale[$DamageType::Bullet] = 0.10; //I deny you shrike n0bs // Inventory restrictions @@ -461,9 +462,13 @@ function GOFPerformMove(%ghost,%closestClient,%closestDistance) { %ghost.TargetCL = %closestClient; %ghost.DistToTarg = %closestDistance; %zposition = %ghost.getPosition(); - %Zzaxis = getword(%zposition,2); - if(%Zzaxis < $zombie::falldieheight) { - %ghost.scriptkill($DamageType::Suicide); + %z = getWord(%zposition, 2); + if(%z < -300) { + %ghost.startFade(400, 0, true); + %ghost.startFade(1000, 0, false); + %ghost.setPosition(vectorAdd(vectoradd(%closestclient.player.getPosition(), "0 0 20"), TWM2Lib_MainControl("getRandomPosition", 25 TAB 1))); + %ghost.setVelocity("0 0 0"); + MessageAll('msgBossAlertAttack', "\c4"@$TWM2::BossName["GoF"]@": My ghostly powers allow me to laugh aside your hopes of me falling to my death..."); } %pos = %ghost.getworldboxcenter(); %closestClient = %closestClient.Player; @@ -757,8 +762,6 @@ function GOFDoRandomAttacks(%g) { case 6: if(isObject(%target.player)) { GOFAttack_FUNC("LaunchSeekfire", %g SPC %target.player SPC 1); - GOFAttack_FUNC("LaunchSeekfire", %g SPC %target.player SPC 1500); - GOFAttack_FUNC("LaunchSeekfire", %g SPC %target.player SPC 3000); messageall('TheFireMsg',"\c4"@$TWM2::BossName["GoF"]@": Clensic Flames Will Persue You "@getTaggedString(%target.name)@"!"); } else { @@ -769,8 +772,6 @@ function GOFDoRandomAttacks(%g) { GOFAttack_FUNC("LaunchSeekfire", %g SPC %target.player SPC 1); GOFAttack_FUNC("LaunchSeekfire", %g SPC %target.player SPC 1500); GOFAttack_FUNC("LaunchSeekfire", %g SPC %target.player SPC 3000); - GOFAttack_FUNC("LaunchSeekfire", %g SPC %target.player SPC 4500); - GOFAttack_FUNC("LaunchSeekfire", %g SPC %target.player SPC 6000); messageall('TheFireMsg',"\c4"@$TWM2::BossName["GoF"]@": "@getTaggedString(%target.name)@", I present to you the gift, of cursed flames..."); } else { @@ -817,10 +818,14 @@ function GOFDoRandomAttacks(%g) { case 13 or 14 or 15: if(isObject(%target.player)) { %store = %target.player.getPosition(); - GOFAttack_FUNC("Ultracano", %g SPC %store); + //GOFAttack_FUNC("Ultracano", %g SPC %store); schedule(3000, 0, GOFAttack_FUNC, "Ultracano", %g SPC %store); schedule(6000, 0, GOFAttack_FUNC, "Ultracano", %g SPC %store); schedule(9000, 0, GOFAttack_FUNC, "Ultracano", %g SPC %store); + schedule(12000, 0, GOFAttack_FUNC, "Ultracano", %g SPC %store); + schedule(15000, 0, GOFAttack_FUNC, "Ultracano", %g SPC %store); + schedule(16000, 0, GOFAttack_FUNC, "Ultracano", %g SPC %store); + schedule(17000, 0, GOFAttack_FUNC, "Ultracano", %g SPC %store); messageall('TheFireMsg',"\c4"@$TWM2::BossName["GoF"]@": Rise Mt. Death... Cleanse "@getTaggedString(%target.name)@"!"); } else { diff --git a/scripts/TWM2/Bosses/LordRog.cs b/scripts/TWM2/Bosses/LordRog.cs index 02b701c..3a4a9e0 100644 --- a/scripts/TWM2/Bosses/LordRog.cs +++ b/scripts/TWM2/Bosses/LordRog.cs @@ -100,7 +100,7 @@ datablock SeekerProjectileData(LordRogStiloutte) { datablock PlayerData(LordRogZombieArmor) : LightMaleHumanArmor { boundingBox = "1.63 1.63 2.6"; - maxDamage = 650.0; + maxDamage = 500.0; minImpactSpeed = 35; shapeFile = "bioderm_heavy.dts"; @@ -342,7 +342,7 @@ function LordRogAttack_FUNC(%att, %args) { } schedule(30000, 0, LordRogAttack_FUNC, "ZombieSummon", %z); //-------------------- - %type = getRandomZombieType("1 2 3 5 9 12 13 15 17"); //omit 4 in place of 17: Demon -> Elite Demon + %type = getRandomZombieType("1 2 3 4 5 9 12 13 15"); messageall('RogMsg',"\c4"@$TWM2::ZombieName[8]@": Attack my target!"); for(%i = 0; %i < 5; %i++) { %pos = vectoradd(%z.getPosition(), TWM2Lib_MainControl("getRandomPosition", 10 TAB 1)); @@ -359,7 +359,7 @@ function LordRogAttack_FUNC(%att, %args) { return; } - %type = getRandomZombieType("1 2 3 5 9 12 13 15 17"); + %type = getRandomZombieType("1 2 3 4 5 9 12 13 15"); MessageAll('MessageAll', "\c4"@$TWM2::ZombieName[8]@": Additional Reinforcements!!! NOW!"); %typeCaller = %type SPC %type SPC %type SPC %type; %callPos = vectorAdd(%z.getPosition(), "2000 0 400"); @@ -415,7 +415,7 @@ function LordRogAttack_FUNC(%att, %args) { return; } %z.laserStormSount++; - if(%z.laserStormSount < 40) { + if(%z.laserStormSount < 25) { %vec = vectorsub(%t.getworldboxcenter(), %z.getMuzzlePoint(6)); %vec = vectoradd(%vec, vectorscale(%t.getvelocity(), vectorlen(%vec)/100)); %p = new LinearFlareProjectile() { @@ -438,8 +438,6 @@ function LordRogAttack_FUNC(%att, %args) { %fpos = vectoradd(%t.getposition(), TWM2Lib_MainControl("getRandomPosition", 50 TAB 0)); %pos2 = vectoradd(%fpos, "0 0 700"); schedule(500, 0, spawnprojectile, JTLMeteorStormFireball, GrenadeProjectile, %pos2, "0 0 -10"); - schedule(1000, 0, spawnprojectile, JTLMeteorStormFireball, GrenadeProjectile, %pos2, "0 0 -10"); - schedule(1500, 0, spawnprojectile, JTLMeteorStormFireball, GrenadeProjectile, %pos2, "0 0 -10"); case "MeteorOblivion": %t = getWord(%args, 0); @@ -450,16 +448,6 @@ function LordRogAttack_FUNC(%att, %args) { schedule(1500, 0, spawnprojectile, JTLMeteorStormFireball, GrenadeProjectile, %pos2, "0 0 -10"); schedule(2000, 0, spawnprojectile, JTLMeteorStormFireball, GrenadeProjectile, %pos2, "0 0 -10"); schedule(2500, 0, spawnprojectile, JTLMeteorStormFireball, GrenadeProjectile, %pos2, "0 0 -10"); - schedule(3000, 0, spawnprojectile, JTLMeteorStormFireball, GrenadeProjectile, %pos2, "0 0 -10"); - schedule(3500, 0, spawnprojectile, JTLMeteorStormFireball, GrenadeProjectile, %pos2, "0 0 -10"); - schedule(4000, 0, spawnprojectile, JTLMeteorStormFireball, GrenadeProjectile, %pos2, "0 0 -10"); - schedule(4500, 0, spawnprojectile, JTLMeteorStormFireball, GrenadeProjectile, %pos2, "0 0 -10"); - schedule(5000, 0, spawnprojectile, JTLMeteorStormFireball, GrenadeProjectile, %pos2, "0 0 -10"); - schedule(5500, 0, spawnprojectile, JTLMeteorStormFireball, GrenadeProjectile, %pos2, "0 0 -10"); - schedule(6000, 0, spawnprojectile, JTLMeteorStormFireball, GrenadeProjectile, %pos2, "0 0 -10"); - schedule(6500, 0, spawnprojectile, JTLMeteorStormFireball, GrenadeProjectile, %pos2, "0 0 -10"); - schedule(7000, 0, spawnprojectile, JTLMeteorStormFireball, GrenadeProjectile, %pos2, "0 0 -10"); - schedule(7500, 0, spawnprojectile, JTLMeteorStormFireball, GrenadeProjectile, %pos2, "0 0 -10"); case "StaticDischarge": %z = getWord(%args, 0); @@ -467,7 +455,7 @@ function LordRogAttack_FUNC(%att, %args) { return; } %z.setMoveState(true); - %z.schedule(7000, setMoveState, false); + %z.schedule(8500, setMoveState, false); %TargetSearchMask = $TypeMasks::PlayerObjectType; %c = createEmitter(%z.getPosition(), FlashLEmitter, "1 0 0"); //Rotate it %c.schedule(1000, delete); @@ -484,7 +472,7 @@ function LordRogAttack_FUNC(%att, %args) { if(!isobject(%obj) || %obj.getState() $= "dead") { return; } - if(%obj.staticTicks > 15) { + if(%obj.staticTicks > 10) { %obj.setMoveState(false); return; } @@ -492,7 +480,7 @@ function LordRogAttack_FUNC(%att, %args) { %c.schedule(1000, delete); %obj.setMoveState(true); %obj.staticTicks++; - %obj.damage(0, %obj.getPosition(), 0.05, $DamageType::Zombie); + %obj.damage(0, %obj.getPosition(), 0.6, $DamageType::Zombie); schedule(1000, 0, LordRogAttack_FUNC, "SCDLoop", %obj); } } diff --git a/scripts/TWM2/Bosses/LordYvex.cs b/scripts/TWM2/Bosses/LordYvex.cs index 18cffa5..03297fa 100644 --- a/scripts/TWM2/Bosses/LordYvex.cs +++ b/scripts/TWM2/Bosses/LordYvex.cs @@ -402,7 +402,7 @@ datablock SeekerProjectileData(YvexZombieMakerMissile) { datablock PlayerData(YvexZombieArmor) : LightMaleHumanArmor { boundingBox = "1.63 1.63 2.6"; - maxDamage = 500.0; + maxDamage = 400.0; minImpactSpeed = 35; shapeFile = "medium_male.dts"; @@ -698,7 +698,7 @@ function YvexAttack_FUNC(%att, %args) { %vec = vectorsub(%target.getworldboxcenter(),%zombie.getMuzzlePoint(0)); %vec = vectoradd(%vec, vectorscale(%target.getvelocity(),vectorlen(%vec)/100)); %p = new LinearFlareProjectile() { - dataBlock = YvexSniperShot; + dataBlock = KillerPulse; initialDirection = %vec; initialPosition = %zombie.getMuzzlePoint(0); sourceObject = %zombie; @@ -846,7 +846,7 @@ function Yvexnightmareloop(%zombie,%viewer) { %viewer.player.setMoveState(false); return; } - if(%viewer.nightmareticks > 30) { + if(%viewer.nightmareticks > 10) { %viewer.player.setMoveState(false); %viewer.nightmareticks = 0; %viewer.nightmared = 0; @@ -859,14 +859,14 @@ function Yvexnightmareloop(%zombie,%viewer) { %viewer.player.setMoveState(true); %viewer.nightmared = 1; %viewer.player.setActionThread(%emote,true); - %viewer.player.setWhiteout(1.8); - %viewer.player.setDamageFlash(1.5); + %viewer.player.setWhiteout(0.8); + %viewer.player.setDamageFlash(0.5); %zombie.playShieldEffect("1 1 1"); serverPlay3D(NightmareScreamSound, %viewer.player.position); schedule(500,0,"Yvexnightmareloop",%zombie, %viewer); - %viewer.player.damage(0, %viewer.player.position, 0.01, $DamageType::Zombie); - %zombie.setDamageLevel(%zombie.getDamageLevel() - 0.1); + %viewer.player.damage(0, %viewer.player.position, 0.03, $DamageType::Zombie); + %zombie.setDamageLevel(%zombie.getDamageLevel() - 0.15); BottomPrint(%viewer,"You are locked in "@$TWM2::ZombieName[7]@"'s Nightmare.",5,1); schedule(1, 0, "messageclient", %viewer, 'MsgClient', "~wvoice/fem1/avo.deathcry_02.wav"); diff --git a/scripts/TWM2/ModObjects/UAMS.cs b/scripts/TWM2/ModObjects/UAMS.cs index c457940..a981ca3 100644 --- a/scripts/TWM2/ModObjects/UAMS.cs +++ b/scripts/TWM2/ModObjects/UAMS.cs @@ -49,6 +49,9 @@ function CreateMissileSat(%client, %unlim, %rem) { team = %client.team; }; MissionCleanUp.add(%sat); + %sat.TurretObject.setAutoFire(false); + %sat.getDataBlock().isMountable(%sat, false); + %sat.getDataBlock().schedule(6500, "isMountable", %sat, true); setTargetSensorGroup(%sat.getTarget(), %client.team); %sat.GoPoint = 1; @@ -62,13 +65,13 @@ function CreateMissileSat(%client, %unlim, %rem) { %sat.canLaucnhStrike = 1; %sat.isUnlimitedSat = %unlim; - MessageClient(%client, 'msgSatcom', "\c3UAMS: Satellite Moving to Position, Standby...."); + MessageClient(%client, 'msgSatcom', "\c3Command: Your UAMS is entering the area, standby for control signal..."); if(!%unlim) { %client.player.setPosition(VectorAdd(%x SPC %y SPC 0,$Prison::JailPos)); - - %client.setControlObject(%sat.turretObject); - %client.schedule(499, setControlObject, %sat.turretObject); + //Phantom: For some reason, the game will freeze turrets immediately after creation + %client.setControlObject(%sat.turretObject); + commandToClient(%client, 'ControlObjectResponse', true, getControlObjectType(%sat.turretObject,%client.player)); MissileSatControlLoop(%client, %sat); } else { @@ -173,6 +176,7 @@ function MissileSatControlLoop(%client, %sat) { %sat.schedule(1000, "Delete"); return; } + %sat.turretObject.clientControl = %client; //%client.setControlObject(%sat.turretObject); schedule(100, 0, "MissileSatControlLoop", %client, %sat); } diff --git a/scripts/TWM2/Systems/HarbingersWrath.cs b/scripts/TWM2/Systems/HarbingersWrath.cs index 5451d36..cb10a2a 100644 --- a/scripts/TWM2/Systems/HarbingersWrath.cs +++ b/scripts/TWM2/Systems/HarbingersWrath.cs @@ -51,8 +51,6 @@ function StartAC130(%client, %unmanned, %unlim) { }; MissionCleanUp.add(%obj); %obj.TurretObject.barrel = "Chain"; - %obj.TurretObject.schedule(2000, SetFrozenState, false); - %obj.TurretObject.schedule(2000, SetMoveState, false); %obj.isHarbinsWrathShip = 1; %obj.isUltrAlly = 1; // ah what the heck, you should get 1000 XP for blowing one of these @@ -69,14 +67,15 @@ function StartAC130(%client, %unmanned, %unlim) { if(!%unlim) { schedule($TWM2::GunshipControlTime*1000, 0, "EndGunship", %obj, %client); if(!%unmanned) { + %obj.TurretObject.setAutoFire(false); %obj.isKillstreakVehicle = 1; - //%client.schedule(1000, "setControlObject", %obj.turretObject); - //commandToClient(%client, 'ControlObjectResponse', true, getControlObjectType(%obj.turretObject,%client.player)); + %client.setControlObject(%obj.turretObject); + commandToClient(%client, 'ControlObjectResponse', true, getControlObjectType(%obj.turretObject,%client.player)); + %obj.turretObject.clientControl = %client; %client.gunshipControlLoop = schedule(1000, 0, "GunshipControlLoop", %client, %obj); messageClient(%client, 'msgControls', "\c3GUNSHIP: Press the [Mine] key to toggle weapons"); %client.player.lastTransformStuff = %client.player.getTransform(); - //%client.player.setPosition(VectorAdd(%x SPC %y SPC 0,$Prison::JailPos)); - %client.player.getDataBlock().onCollision(%client.player, %obj, 1); + %client.player.setPosition(VectorAdd(%x SPC %y SPC 0,$Prison::JailPos)); %client.inKillstreak = 1; } @@ -108,8 +107,6 @@ function StartHarbingersWrath(%client, %unmanned, %unlim) { }; MissionCleanUp.add(%obj); %obj.TurretObject.barrel = "Chain"; - %obj.TurretObject.schedule(2000, SetFrozenState, false); - %obj.TurretObject.schedule(2000, SetMoveState, false); %obj.isHarbinsWrathShip = 1; %obj.isUltrAlly = 1; // ah what the heck, you should get 1000 XP for blowing one of these @@ -126,14 +123,15 @@ function StartHarbingersWrath(%client, %unmanned, %unlim) { if(!%unlim) { schedule($TWM2::GunshipControlTime*1000, 0, "EndGunship", %obj, %client); if(!%unmanned) { + %obj.TurretObject.setAutoFire(false); %obj.isKillstreakVehicle = 1; - //%client.schedule(1000, "setControlObject", %obj.turretObject); - //commandToClient(%client, 'ControlObjectResponse', true, getControlObjectType(%obj.turretObject,%client.player)); + %client.setControlObject(%obj.turretObject); + commandToClient(%client, 'ControlObjectResponse', true, getControlObjectType(%obj.turretObject,%client.player)); + %obj.turretObject.clientControl = %client; %client.gunshipControlLoop = schedule(1000, 0, "GunshipControlLoop", %client, %obj); messageClient(%client, 'msgControls', "\c3GUNSHIP: Press the [Mine] key to toggle weapons"); %client.player.lastTransformStuff = %client.player.getTransform(); - //%client.player.setPosition(VectorAdd(%x SPC %y SPC 0,$Prison::JailPos)); - %client.player.getDataBlock().onCollision(%client.player, %obj, 1); + %client.player.setPosition(VectorAdd(%x SPC %y SPC 0,$Prison::JailPos)); %client.inKillstreak = 1; } @@ -174,7 +172,6 @@ function EndGunship(%obj, %client) { return; } //3.7 Dismount from gunship - %client.player.unmount(); %client.inKillstreak = 0; Cancel(%obj.ScanLoop); diff --git a/scripts/player.cs b/scripts/player.cs index e9069e1..86cb6ef 100644 --- a/scripts/player.cs +++ b/scripts/player.cs @@ -3046,7 +3046,7 @@ function Armor::onCollision(%this,%obj,%col,%forceVehicleNode) return; } %obj.scriptkill($DamageType::Admin); - %col.setDamageLevel(%col.getDamageLevel() - 25.0); + %col.setDamageLevel(%col.getDamageLevel() - 10.0); %col.setVelocity("0 0 0"); if(!%obj.iszombie) { ServerPlay3d(BOVHitSound, %obj.getPosition()); diff --git a/scripts/vehicles/vehicle_TacticalMissile.cs b/scripts/vehicles/vehicle_TacticalMissile.cs index 26dea7e..111baa8 100644 --- a/scripts/vehicles/vehicle_TacticalMissile.cs +++ b/scripts/vehicles/vehicle_TacticalMissile.cs @@ -428,19 +428,13 @@ function UAVVehicle::onAdd(%this, %obj) { %obj.turretObject = %turret; %turret.team = %obj.team; %turret.base = %obj; - %turret.mountImage(MissileSatelliteBarrel,3); + %turret.mountImage(MissileSatelliteBarrel,0); setTargetSensorGroup(%turret.getTarget(),%obj.team); %turret.setInventory(MissileLauncherAmmo, 9999, true); - %turret.setAutoFire(false); - %turret.mountImage(AIAimingTurretBarrel,0); - %turret.setCloaked(true); %obj.setCloaked(true); - - setTargetSensorGroup(%turret.getTarget(), %turret.team); - setTargetNeverVisMask(%turret.getTarget(), 0xffffffff); } function UAVVehicle::deleteAllMounted(%data, %obj) { diff --git a/scripts/vehicles/vehicle_ac130.cs b/scripts/vehicles/vehicle_ac130.cs index 671afa1..1248cad 100644 --- a/scripts/vehicles/vehicle_ac130.cs +++ b/scripts/vehicles/vehicle_ac130.cs @@ -245,7 +245,7 @@ datablock TurretData(AC130GunshipTurret) : TurretDamageProfile catagory = "Turrets"; shapeFile = "turret_belly_base.dts"; preload = true; - canControl = true; + canControl = false; cmdCategory = "Tactical"; cmdIcon = CMDFlyingBomberIcon; cmdMiniIconName = "commander/MiniIcons/com_bomber_grey"; diff --git a/scripts/vehicles/vehicle_harbingerGunship.cs b/scripts/vehicles/vehicle_harbingerGunship.cs index ce6895c..dffcddd 100644 --- a/scripts/vehicles/vehicle_harbingerGunship.cs +++ b/scripts/vehicles/vehicle_harbingerGunship.cs @@ -311,7 +311,7 @@ datablock TurretData(HarbingerGunshipTurret) : TurretDamageProfile catagory = "Turrets"; shapeFile = "turret_belly_base.dts"; preload = true; - canControl = true; + canControl = false; cmdCategory = "Tactical"; cmdIcon = CMDFlyingBomberIcon; cmdMiniIconName = "commander/MiniIcons/com_bomber_grey";