diff --git a/Classic/scripts/LakRabbitGame.cs b/Classic/scripts/LakRabbitGame.cs index 6481263..528523f 100644 --- a/Classic/scripts/LakRabbitGame.cs +++ b/Classic/scripts/LakRabbitGame.cs @@ -920,287 +920,6 @@ function Player::setKnockback(%this, %val) // } //} -//Old Behavior -function ShapeBaseImageData::onFire(%data, %obj, %slot) -{ - // --------------------------------------------------------------------------- - // z0dd - ZOD, 9/3/02. Anti rapid fire mortar/missile fix. - // if (%obj.cantFire !$= "") - // { - // return 0; - // } - - // %wpnName = %data.getName(); - // if((%wpnName $= "MortarImage") || (%wpnName $= "MissileLauncherImage")) - // { - // %obj.cantFire = 1; - // %preventTime = %data.stateTimeoutValue[4]; - // //%preventTime = (%data.stateTimeoutValue[4] + %data.stateTimeoutValue[3]) - 0.032; - // %obj.reloadSchedule = schedule(%preventTime * 1000, %obj, resetFire, %obj); - // } - // --------------------------------------------------------------------------- - %obj.lfireTime[%data.getName()] = getSimTime(); - - %data.lightStart = getSimTime(); - - if( %obj.station $= "" && %obj.isCloaked() ) - { - if( %obj.respawnCloakThread !$= "" ) - { - Cancel(%obj.respawnCloakThread); - %obj.setCloaked( false ); - %obj.respawnCloakThread = ""; - } - else - { - if( %obj.getEnergyLevel() > 20 ) - { - %obj.setCloaked( false ); - %obj.reCloak = %obj.schedule( 500, "setCloaked", true ); - } - - //We check if the player is still cloaked now. So no need to limit to 20% energy for the cloak in/out animation - //%obj.setCloaked( false ); - //%obj.reCloak = schedule( 500, 0, "checkCloakState", %obj); - } - } - - if( %obj.client > 0 ) - { - %obj.setInvincibleMode(0 ,0.00); - %obj.setInvincible( false ); // fire your weapon and your invincibility goes away. - } - - %vehicle = 0; - if(%data.usesEnergy) - { - if(%data.useMountEnergy) - { - %useEnergyObj = %obj.getObjectMount(); - if(!%useEnergyObj) - %useEnergyObj = %obj; - %energy = %useEnergyObj.getEnergyLevel(); - %vehicle = %useEnergyObj; - } - else - %energy = %obj.getEnergyLevel(); - - if(%data.useCapacitor && %data.usesEnergy) - { - if( %useEnergyObj.turretObject.getCapacitorLevel() < %data.minEnergy ) - { - return; - } - } - else if(%energy < %data.minEnergy) - return; - } - // --------------------------------------------------------------------- - // z0dd - ZOD, 4/24/02. Code optimization - if(%data.projectileSpread) - { - %vec = %obj.getMuzzleVector(%slot); - %x = (getRandom() - 0.5) * 2 * 3.1415926 * %data.projectileSpread; - %y = (getRandom() - 0.5) * 2 * 3.1415926 * %data.projectileSpread; - %z = (getRandom() - 0.5) * 2 * 3.1415926 * %data.projectileSpread; - %mat = MatrixCreateFromEuler(%x @ " " @ %y @ " " @ %z); - %vector = MatrixMulVector(%mat, %vec); - } - else - { - // z0dd - ZOD, 4/10/02. Founder - fixes off center projectile drift. - //%vector = %obj.getMuzzleVector(%slot); - %vector = MatrixMulVector("0 0 0 0 0 1 0", %obj.getMuzzleVector(%slot)); - } - - %p = new (%data.projectileType)() { - dataBlock = %data.projectile; - initialDirection = %vector; - initialPosition = %obj.getMuzzlePoint(%slot); - sourceObject = %obj; - sourceSlot = %slot; - vehicleObject = %vehicle; - }; - // End streamlining - // --------------------------------------------------------------------- - if (isObject(%obj.lastProjectile) && %obj.deleteLastProjectile) - %obj.lastProjectile.delete(); - - %obj.lastProjectile = %p; - %obj.deleteLastProjectile = %data.deleteLastProjectile; - MissionCleanup.add(%p); - - // AI hook - if(%obj.client) - %obj.client.projectile = %p; - - if(%data.usesEnergy) - { - if(%data.useMountEnergy) - { - if( %data.useCapacitor ) - { - %vehicle.turretObject.setCapacitorLevel( %vehicle.turretObject.getCapacitorLevel() - %data.fireEnergy ); - } - else - %useEnergyObj.setEnergyLevel(%energy - %data.fireEnergy); - } - else - %obj.setEnergyLevel(%energy - %data.fireEnergy); - } - else - %obj.decInventory(%data.ammo,1); - return %p; -} - -//Old Behavior -function ShockLanceImage::onFire(%this, %obj, %slot) -{ - // Added Spawn Invinciblity check - if(%obj.client > 0) - { - %obj.setInvincibleMode(0, 0.00); - %obj.setInvincible( false ); - } - - // z0dd - ZOD, 4/10/04. ilys - Added rapidfire shocklance fix - if(%obj.cantfire !$= "") - return; - - %obj.cantfire = 1; - %preventTime = %this.stateTimeoutValue[4]; - %obj.reloadSchedule = schedule(%preventTime * 1000, %obj, resetFire, %obj); - - if( %obj.getEnergyLevel() < %this.minEnergy ) // z0dd - ZOD, 5/22/03. Check energy level first - { - %obj.playAudio(0, ShockLanceMissSound); - return; - } - if( %obj.isCloaked() ) - { - if( %obj.respawnCloakThread !$= "" ) - { - Cancel(%obj.respawnCloakThread); - %obj.setCloaked( false ); - } - else - { - if( %obj.getEnergyLevel() > 20 ) - { - %obj.setCloaked( false ); - %obj.reCloak = %obj.schedule( 500, "setCloaked", true ); - } - - //We check if the player is still cloaked now. So no need to limit to 20% energy for the cloak in/out animation - //%obj.setCloaked( false ); - //%obj.reCloak = schedule( 500, 0, "checkCloakState", %obj); - } - } - - %muzzlePos = %obj.getMuzzlePoint(%slot); - %muzzleVec = %obj.getMuzzleVector(%slot); - %endPos = VectorAdd(%muzzlePos, VectorScale(%muzzleVec, %this.projectile.extension)); - %damageMasks = $TypeMasks::PlayerObjectType | $TypeMasks::VehicleObjectType | - $TypeMasks::StationObjectType | $TypeMasks::GeneratorObjectType | - $TypeMasks::SensorObjectType | $TypeMasks::TurretObjectType; - - %everythingElseMask = $TypeMasks::TerrainObjectType | - $TypeMasks::InteriorObjectType | - $TypeMasks::ForceFieldObjectType | - $TypeMasks::StaticObjectType | - $TypeMasks::MoveableObjectType | - $TypeMasks::DamagableItemObjectType; - - // did I miss anything? players, vehicles, stations, gens, sensors, turrets - %hit = ContainerRayCast(%muzzlePos, %endPos, %damageMasks | %everythingElseMask, %obj); - %noDisplay = true; - - if(%hit !$= "0") - { - %obj.setEnergyLevel(%obj.getEnergyLevel() - %this.hitEnergy); - %hitobj = getWord(%hit, 0); - %hitpos = getWord(%hit, 1) @ " " @ getWord(%hit, 2) @ " " @ getWord(%hit, 3); - - if(%hitObj.getType() & %damageMasks) - { - // z0dd - ZOD, 5/18/03. Do not apply impulse to MPB. - if(%hitObj.getDataBlock().classname !$= WheeledVehicleData) - %hitobj.applyImpulse(%hitpos, VectorScale(%muzzleVec, %this.projectile.impulse)); - - %obj.playAudio(0, ShockLanceHitSound); - - // This is truly lame, but we need the sourceobject property present... - %p = new ShockLanceProjectile() { - dataBlock = %this.projectile; - initialDirection = %obj.getMuzzleVector(%slot); - initialPosition = %obj.getMuzzlePoint(%slot); - sourceObject = %obj; - sourceSlot = %slot; - targetId = %hit; - }; - MissionCleanup.add(%p); - - %damageMultiplier = 1.0; - - if(%hitObj.getDataBlock().getClassName() $= "PlayerData") - { - // Now we see if we hit from behind... - %forwardVec = %hitobj.getForwardVector(); - %objDir2D = getWord(%forwardVec, 0) @ " " @ getWord(%forwardVec,1) @ " " @ "0.0"; - %objPos = %hitObj.getPosition(); - %dif = VectorSub(%objPos, %muzzlePos); - %dif = getWord(%dif, 0) @ " " @ getWord(%dif, 1) @ " 0"; - %dif = VectorNormalize(%dif); - %dot = VectorDot(%dif, %objDir2D); - - // 120 Deg angle test... - // 1.05 == 60 degrees in radians - if (%dot >= mCos(1.05)) - { - // Rear hit - %damageMultiplier = 3.0; - if(!%hitObj.getOwnerClient().isAIControlled()) - %hitObj.getOwnerClient().rearshot = 1; // z0dd - ZOD, 8/25/02. Added Lance rear shot messages - } - // -------------------------------------------------------------- - // z0dd - ZOD, 8/25/02. Added Lance rear shot messages - else - { - if(!%hitObj.getOwnerClient().isAIControlled()) - %hitObj.getOwnerClient().rearshot = 0; - } - // -------------------------------------------------------------- - } - - %totalDamage = %this.Projectile.DirectDamage * %damageMultiplier; - %hitObj.getDataBlock().damageObject(%hitobj, %p.sourceObject, %hitpos, %totalDamage, $DamageType::ShockLance); - - %noDisplay = false; - } - } - - if( %noDisplay ) - { - // Miss - %obj.setEnergyLevel(%obj.getEnergyLevel() - %this.missEnergy); - %obj.playAudio(0, ShockLanceMissSound); - - %p = new ShockLanceProjectile() { - dataBlock = %this.projectile; - initialDirection = %obj.getMuzzleVector(%slot); - initialPosition = %obj.getMuzzlePoint(%slot); - sourceObject = %obj; - sourceSlot = %slot; - }; - MissionCleanup.add(%p); - } - // z0dd - ZOD, 4/10/04. AI hook - if(%obj.client != -1) - %obj.client.projectile = %p; - - return %p; -} - }; //Put everyone on NonRabbit Team