--------------------------------------------------------------------------------------------------------------- // GodHammerPack: Credit gos to the hammer team, Used their code // Got the idea from shifter.. --------------------------------------------------------------------------------------------------------------- This creates a GodHammer Pack.. credit go's to team hammer, Not Dynablade Sorry.. Most every thing els he get's credit for.. Step #1 // ------------------------------------------ // inventoryHud.cs // ------------------------------------------ Add this near the top of the file: $InvPack[13] = "God Hammer Pack"; // set the right number $NTInvPack[13] = "God Hammer Pack"; // set the right number $NameToInv["God Hammer Pack"] = "GodHammerPack1"; Step #2 // ------------------------------------------ // pack.cs // ------------------------------------------ exec("scripts/packs/GodHammer.cs"); Step #3 // ------------------------------------------ // player.cs // ------------------------------------------ // In each player datablock add this, Only heavies need it. max[GodHammerPack1] = 1; Step #4 Create a file in the packs folder, Copy and past the code below.. GodHammer.cs //--------------------------------------------------------------------------- // GodHammerPack: Credit gos to the hammer team, Used there code // Got the idea from shifter.. //--------------------------------------------------------------------------- datablock AudioProfile(GodHammerNoFireSound) { filename = "fx/vehicles/bomber_turret_dryfire.wav"; description = AudioClosest3d; preload = true; }; datablock AudioProfile(GodHammerFireSound) { filename = "fx/powered/turret_plasma_fire.wav"; description = AudioDefault3d; preload = true; }; //-------------------------------------------------------------------------- // Projectile //-------------------------------------- datablock LinearFlareProjectileData(GodHammerBolt) { doDynamicClientHits = true; directDamage = 0; hasDamageRadius = true; indirectDamage = 0.10; damageRadius = 10.0; kickBackStrength = 500; radiusDamageType = $DamageType::Plasma; explosion = PlasmaBarrelBoltExplosion; splash = PlasmaSplash; sound = GodHammerFireSound; dryVelocity = 100.0; wetVelocity = 50; velInheritFactor = 1.0; fizzleTimeMS = 4000; lifetimeMS = 6000; explodeOnDeath = false; reflectOnWaterImpactAngle = 0.0; explodeOnWaterImpact = true; deflectionOnWaterImpact = 0.0; fizzleUnderwaterMS = -1; activateDelayMS = 100; scale = "1.5 1.5 1.5"; numFlares = 30; flareColor = "0.1 0.3 1.0"; flareModTexture = "flaremod"; flareBaseTexture = "flarebase"; }; datablock ShapeBaseImageData(GodHammerPackImage1) { shapeFile = "turret_fusion_large.dts"; item = GodHammerPack1; mountPoint = 1; offset = "-0.5 0 0.5"; rechargeRateBoost = 0.30; //0.15 explodeOnDeath = true; // State transitions stateName[0] = "Activate"; stateTransitionOnNotLoaded[0] = "Dead"; stateTransitionOnLoaded[0] = "ActivateReady"; stateName[1] = "ActivateReady"; stateSequence[1] = "Activate"; stateSound[1] = AASwitchSound; stateTimeoutValue[1] = 1.0; stateTransitionOnTimeout[1] = "Ready"; stateTransitionOnNotLoaded[1] = "Deactivate"; stateTransitionOnNoAmmo[1] = "NoAmmo"; stateScript[1] = "AAActivateReady"; stateName[2] = "Ready"; stateTransitionOnNotLoaded[2] = "Deactivate"; stateTransitionOnTriggerDown[2] = "Fire1"; stateTransitionOnNoAmmo[2] = "NoAmmo"; stateScript[2] = "AAReady"; stateName[3] = "Fire1"; stateTransitionOnTimeout[3] = "Reload1"; stateTimeoutValue[3] = 0.15; stateFire[3] = true; stateRecoil[3] = LightRecoil; stateAllowImageChange[3] = false; stateSequence[3] = "Fire1"; //stateSound[3] = AAFireSound; stateScript[3] = "onFire"; stateName[4] = "Reload1"; stateTimeoutValue[4] = 0.2; stateAllowImageChange[4] = false; stateSequence[4] = "Reload"; stateTransitionOnTimeout[4] = "Fire2"; stateTransitionOnNotLoaded[4] = "Deactivate"; stateTransitionOnNoAmmo[4] = "NoAmmo"; stateName[5] = "Fire2"; stateTransitionOnTimeout[5] = "Reload2"; stateTimeoutValue[5] = 0.15; stateFire[5] = true; stateRecoil[5] = LightRecoil; stateAllowImageChange[5] = false; stateSequence[5] = "Fire2"; //stateSound[5] = GodHammerFireSound; stateScript[5] = "onFire"; stateName[6] = "Reload2"; stateTimeoutValue[6] = 0.2; stateAllowImageChange[6] = false; stateSequence[6] = "Reload"; stateTransitionOnTimeout[6] = "Ready"; stateTransitionOnNotLoaded[6] = "Deactivate"; stateTransitionOnNoAmmo[6] = "NoAmmo"; stateName[7] = "Deactivate"; stateSequence[7] = "Activate"; stateDirection[7] = false; stateTimeoutValue[7] = 1.0; stateTransitionOnLoaded[7] = "ActivateReady"; stateTransitionOnTimeout[7] = "Dead"; stateName[8] = "Dead"; stateTransitionOnLoaded[8] = "ActivateReady"; stateName[9] = "NoAmmo"; stateTransitionOnAmmo[9] = "Reload2"; stateSequence[9] = "NoAmmo"; }; datablock ItemData(GodHammerPack1) { className = Pack; catagory = "Packs"; shapeFile = "pack_barrel_missile.dts"; explodeOnDeath = true; mass = 4; elasticity = 0.2; friction = 0.6; pickupRadius = 2; rotate = true; image = "GodHammerPackImage1"; pickUpName = "a God Hammer pack"; heatSignature = 0.5;//was computeCRC = true; }; datablock ShapeBaseImageData(GodHammerPackImage2) : GodHammerPackImage1 { item = GodHammerPack2; offset = "0.5 0 0.5"; shapeFile = "turret_fusion_large.dts"; }; datablock ItemData(GodHammerPack2) { className = Pack; catagory = "Packs"; shapeFile = "pack_barrel_missile.dts"; mass = 1; elasticity = 0.2; friction = 0.6; pickupRadius = 2; rotate = true; image = "GodHammerPackImage2"; pickUpName = "a God Hammer pack"; computeCRC = true; }; // --- functions function GodHammerPack1::onAdd(%this) { echo("added!"); } function GodHammerPackImage1::onMount(%this, %obj, %slot) { if(%obj.getMountedImage($AuxiliarySlot) != 0) %obj.unmountImage($AuxiliarySlot); %obj.mountImage(GodHammerPackImage2, $AuxiliarySlot); if(!%obj.cooling) schedule(5000, %obj, "CoolOff", %obj); %obj.cooling = true; } function GodHammerPackImage1::onUnmount(%this, %obj, %slot) { Parent::onUnmount(%this, %obj, %slot); if(%obj.getMountedImage($AuxiliarySlot) != 0) %obj.unmountImage($AuxiliarySlot); } function GodHammerPackImage1::onDrop(%this, %obj, %slot) { echo("drop!!"); } function GodHammerPack1::onInventory(%this,%player,%value) { Parent::onInventory(%this,%player,%value); } function GodHammerPack1::onPickup(%this, %obj, %shape, %amount) { echo("pickup!"); // created to prevent console errors } function GodHammerPack1::onUse(%data, %obj) { %energy = %obj.getEnergyLevel(); %obj.setImageTrigger($BackpackSlot, false); if(%obj.heatLevel < 199) // was < 88) { %obj.heatLevel += (10 + mFloor(5 * getRandom())); } else { echo("ultimate pain"); messageClient(%obj.client, '', "\c5Your God Hammer reached critical temperature, this is going to hurt!"); bottomPrint(%obj.client, "\nGod Hammer Reached Critical Temperature!", 1, 3); echo("op" SPC %obj.getPosition()); RadiusExplosion(%obj, %obj.getWorldBoxCenter(), 10, 3, 2000, %obj, $DamageType::Explosion); if(%obj.getMountedImage($BackpackSlot) != 0) %obj.unmountImage($BackpackSlot); if(%obj.getMountedImage($AuxiliarySlot) != 0) %obj.unmountImage($AuxiliarySlot); %obj.decInventory(%data, 1); //blow up the packs! return; } if(%obj.heatLevel >= 50) bottomPrint(%obj.client, "\nGod Hammer Temperature :" SPC %obj.heatLevel @ "\%", 1, 3); else if(%energy < 10) RadiusExplosion(%obj, %obj.getWorldBoxCenter(), 5, 0.2, 1000, %obj, $DamageType::Explosion); if(%obj.heatLevel >= 68 && %obj.heatLevel < 199) // was < 88) { if(%obj.getEnergyPercent() < 0.5) { echo("minor pain"); messageClient(%obj.client, '', "\c3Your God Hammer is running hot! (" @ %obj.heatLevel @"\%)"); %obj.playAudio(0, GodHammerNoFireSound); RadiusExplosion(%obj, %obj.getWorldBoxCenter(), 5, 0.2, 1000, %obj, $DamageType::Explosion); } } if(%obj.heatLevel >= 199) // was < 88 { echo("medium pain"); %obj.playAudio(0, GodHammerNoFireSound); messageClient(%obj.client, '', "\c5Your God Hammer has reached a dangerous temperature! (" @ %obj.heatLevel @"\%)"); RadiusExplosion(%obj, %obj.getWorldBoxCenter(), 5, 0.6, 1000, %obj, $DamageType::Explosion); if(%obj.heatLevel > 199) // was > 90) //dont fire if we're too hot return; } %obj.setEnergyLevel(%energy - 25); %vec = %obj.getMuzzleVector($BackPackSlot); %obj.God1 = new (LinearFlareProjectile)() { dataBlock = GodHammerBolt; initialDirection = %vec; initialPosition = %obj.getMuzzlePoint($BackPackSlot); sourceObject = %obj; damageFactor = 0.05; sourceSlot = %BackPackSlot; }; %vec = %obj.getMuzzleVector($AuxiliarySlot); %obj.God2 = new (LinearFlareProjectile)() { dataBlock = GodHammerBolt; initialDirection = %vec; initialPosition = %obj.getMuzzlePoint($AuxiliarySlot); sourceObject = %obj; damageFactor = 0.05; sourceSlot = $AuxiliarySlot; }; } function CoolOff(%obj) { %oldheat = %obj.heatLevel; %obj.heatLevel = (%obj.heatLevel > 4) ? %obj.heatLevel - 5 : 0; if(%obj.getMountedImage($BackpackSlot) != 0) %img = %obj.getMountedImage($BackpackSlot).getName(); else %img = ""; if(%obj.heatLevel >= 40 && %img $= "GodHammerPackImage1") { if(%oldheat >= 50 && %oldheat <= 55) messageClient(%obj.client, '', "\c3Your God Hammer has cooled to a stable temperature."); bottomPrint(%obj.client, "\nGod Hammer Temperature :" SPC %obj.heatLevel @ "\%", 2.5, 3); } schedule(4000, %obj, "CoolOff", %obj); }