///////////////////////////////////
/////////////POISON////////////////
///////////////////////////////////
datablock ParticleData(PurplePosion)
{
   dragCoeffiecient     = 0.4;
   gravityCoefficient   = -0.4;   // rises slowly
   inheritedVelFactor   = 0.025;

   lifetimeMS           = 550;
   lifetimeVarianceMS   = 0;


   textureName = "special/bubbles";

   colors[0]     = "0.3 0.0 0.3 1.0";
   colors[1]     = "0.5 0.0 0.5 1.0";
   colors[2]     = "1.0 0.0 1.0 0.0";
   sizes[0]      = 1.6;
   sizes[1]      = 1.3;
   sizes[2]      = 1.1;
   times[0]      = 0.0;
   times[1]      = 0.5;
   times[2]      = 1.0;

};

datablock ParticleEmitterData(PurplePosionEmitter)
{
   ejectionPeriodMS = 10;
   periodVarianceMS = 0;

   ejectionVelocity = 3.25;
   velocityVariance = 0;

   thetaMin         = 0.0;
   thetaMax         = 90.0;

   lifetimeMS       = 6000;

   particles = "PurplePosion";
};
////////////////////////////////
/////////////EMP////////////////
////////////////////////////////
datablock ParticleData(EMPSpark)
{
   dragCoeffiecient     = 0.4;
   gravityCoefficient   = -0.0;   // rises slowly
   inheritedVelFactor   = 0.025;

   lifetimeMS           = 550;
   lifetimeVarianceMS   = 0;

   spinRandomMin = -900.0;
   spinRandomMax =  900.0;


   textureName = "special/ELFLightning";

   colors[0]     = "0.0 0.0 1.0 1.0";
   colors[1]     = "0.5 0.5 1.0 1.0";
   colors[2]     = "0.8 0.8 1.0 0.0";
   sizes[0]      = 0.6;
   sizes[1]      = 0.3;
   sizes[2]      = 0.1;
   times[0]      = 0.0;
   times[1]      = 0.5;
   times[2]      = 1.0;

};

datablock ParticleEmitterData(EMPSparkEmitter)
{
   ejectionPeriodMS = 10;
   periodVarianceMS = 0;

   ejectionVelocity = 3.25;
   velocityVariance = 0;

   thetaMin         = 0.0;
   thetaMax         = 90.0;

   orientParticles  = true;
   orientOnVelocity = false;

   lifetimeMS       = 6000;

   particles = "EMPSpark";
};

// -----------------------------------------------------------------------
// Fire Damage And Flame Emitter
// -----------------------------------------------------------------------
//------------------------------------------
// Flames Created By CaptnPower
//-----------------------------------------
datablock ParticleData(FireDamageParticle)
{
   dragCoeffiecient     = 0.4;
   gravityCoefficient   = -0.5;   // rises slowly
   inheritedVelFactor   = 0.025;

   lifetimeMS           = 550;
   lifetimeVarianceMS   = 0;

   textureName          = "particleTest";
   animateTexture = true;
   framesPerSec = 20;

   animTexName[00]       = "special/Explosion/exp_0002";
   animTexName[01]       = "special/Explosion/exp_0004";
   animTexName[02]       = "special/Explosion/exp_0006";
   animTexName[03]       = "special/Explosion/exp_0008";
   animTexName[04]       = "special/Explosion/exp_0010";
   animTexName[05]       = "special/Explosion/exp_0012";
   animTexName[06]       = "special/Explosion/exp_0014";
   animTexName[07]       = "special/Explosion/exp_0016";
   animTexName[08]       = "special/Explosion/exp_0018";
   animTexName[09]       = "special/Explosion/exp_0020";
   animTexName[10]       = "special/Explosion/exp_0022";
   animTexName[11]       = "special/Explosion/exp_0024";
   animTexName[12]       = "special/Explosion/exp_0026";
   animTexName[13]       = "special/Explosion/exp_0028";
   animTexName[14]       = "special/Explosion/exp_0030";
   animTexName[15]       = "special/Explosion/exp_0032";
   animTexName[16]       = "special/Explosion/exp_0034";
   animTexName[17]       = "special/Explosion/exp_0036";
   animTexName[18]       = "special/Explosion/exp_0038";
   animTexName[19]       = "special/Explosion/exp_0040";
   animTexName[20]       = "special/Explosion/exp_0042";
   animTexName[21]       = "special/Explosion/exp_0044";
   animTexName[22]       = "special/Explosion/exp_0046";
   animTexName[23]       = "special/Explosion/exp_0048";
   animTexName[24]       = "special/Explosion/exp_0050";
   animTexName[25]       = "special/Explosion/exp_0052";


   colors[0]     = "1.0 0.7 0.5 1.0";
   colors[1]     = "1.0 0.5 0.2 1.0";
   colors[2]     = "1.0 0.25 0.1 1.0";
   colors[3]     = "0.6 0.7 0.4 1.0";
   sizes[0]      = 4;
   sizes[1]      = 2;
   sizes[2]      = 1;
   sizes[3]      = 0.5;
   times[0]      = 0.0;
   times[1]      = 0.2;
   times[2]      = 0.5;
   times[3]      = 1.0;
};

datablock ParticleEmitterData(FireDamageEmitter)
{
   ejectionPeriodMS = 7;
   periodVarianceMS = 0;

   ejectionVelocity = 2;
   velocityVariance = 0;

   thetaMin         = 0.0;
   thetaMax         = 90.0;

   lifetimeMS       = 6000;

   particles = "FireDamageParticle";
};
//--------------------------------------------
// Thanx Drain Bramage :)
//--------------------------------------------


//--------------------------------------------
// fire
//--------------------------------------------
function setBurnEmitter(%obj)
{
   if(!isObject(%obj))
{
echo("NO position for function: setBurnEmitter(%obj)");
}
  %fire = new ParticleEmissionDummy()
{
   position = %obj.getWorldBoxCenter();
   rotation = "1 0 0 0";
   dataBlock = "defaultEmissionDummy";
   lockCount = "0";
   homingCount = "0";
   emitter = "FireDamageEmitter";
   velocity = "1";
};

  MissionCleanup.add(%fire);


%fire.schedule(500, "delete");
}

function ShapeBase::setBurnEmitter(%obj)
{
     setBurnEmitter(%obj);
}

function BurnObject(%obj)
{
   if(%obj.FireCounter > 1)
    {
     if(%obj.FireCounter > 30)
     return false;

     %obj.FireCounter += 15;
     if(isPlayer(%obj))
      {
       messageClient(%obj.client, 'msgMoreFire', '\c2The fire just got hotter.');
      }
     return;
     }
   else
    {
     %obj.FireCounter = 25;
     %obj.setBurnEmitter();
     %obj.isBurning = true;
     if(isPlayer(%obj))
     {
      %obj.setDamageFlash(0.3);
      messageClient(%obj.client, 'msgFire', "You were set on fire!!");
     }
    schedule(500, %obj, "fireOff", %obj, %sourceObject);
   }
}

function ShapeBase::BurnObject(%obj)
{
     BurnObject(%obj);
}

function putOutFire(%obj)
{
     if(isObject(%obj) && %obj.isBurning)
     {
          %obj.FireCounter = 0;
          %obj.isBurning = false;
     }
}

function fireOff(%obj, %src)
{
  if (%obj.FireCounter == 0)
   {
    messageClient(%obj.client, 'msgClient', "The fire has gone out.");
    %obj.isBurning = false;
   }
  else
   {
    %obj.FireCounter--;
    %obj.setBurnEmitter();
    schedule(500, %obj, "fireOff", %obj,%src); // Every 0.5 seconds, repeat the damage
    %obj.getDatablock().damageObject(%obj, %src, "0 0 0", 0.02, $DamageType:Repeatfire);
    %obj.setDamageFlash(0.3);
    %obj.isBurning = true;
   }

}
//----------------------------------------------
//Poison
//----------------------------------------------
function setPoisonEmitter(%obj)
{
   if(!isObject(%obj))
{
echo("NO position for function: setPoisonEmitter(%obj)");
}
  %Poison = new ParticleEmissionDummy()
{
   position = %obj.getWorldBoxCenter();
   rotation = "1 0 0 0";
   dataBlock = "defaultEmissionDummy";
   lockCount = "0";
   homingCount = "0";
   emitter = "PurplePosionEmitter";
   velocity = "1";
};

  MissionCleanup.add(%Poison);


%Poison.schedule(500, "delete");
}

function ShapeBase::setPoisonEmitter(%obj)
{
     setPoisonEmitter(%obj);
}

function PoisonObject(%obj)
{
   if(%obj.PoisonCounter > 1)
    {
     if(%obj.PoisonCounter > 30)
     return false;

     %obj.PoisonCounter += 15;
     if(isPlayer(%obj))
      {
       messageClient(%obj.client, 'msgMorePoison', '\c2The Poison just got worst.');
      }
     return;
     }
   else
    {
     %obj.PoisonCounter = 25;
     %obj.setPoisonEmitter();
     %obj.isPoisoned = true;
     if(isPlayer(%obj))
     {
      %obj.setDamageFlash(0.3);
      messageClient(%obj.client, 'msgFire', "You were Poisoned!!");
     }
    schedule(500, %obj, "PoisonOff", %obj, %sourceObject);
   }
}

function ShapeBase::PoisonObject(%obj)
{
     PoisonObject(%obj);
}

function putOutPoison(%obj)
{
     if(isObject(%obj) && %obj.isPoisoned)
     {
          %obj.PoisonCounter = 0;
          %obj.isPoisoned = false;
     }
}

function PoisonOff(%obj, %src)
{
  if (%obj.PoisonCounter == 0)
   {
    messageClient(%obj.client, 'msgClient', "The Poison has died out.");
    %obj.isPoisoned = false;
   }
  else
   {
    %obj.PoisonCounter--;
    %obj.setPoisonEmitter();
    schedule(500, %obj, "PoisonOff", %obj,%src); // Every 0.5 seconds, repeat the damage
    %obj.getDatablock().damageObject(%obj, %src, "0 0 0", 0.02, $DamageType:Repeatpoison);
    %obj.setDamageFlash(0.3);
    %obj.isPoison = true;
   }

}
//-----------------------------------------------
// Emp Damage
//-----------------------------------------------
function setEMPEmitter(%obj)
{
   if(!isObject(%obj))
{
echo("NO position for function: setEMPEmitter(%obj)");
}
  %EMP = new ParticleEmissionDummy()
{
   position = %obj.getWorldBoxCenter();
   rotation = "1 0 0 0";
   dataBlock = "defaultEmissionDummy";
   lockCount = "0";
   homingCount = "0";
   emitter = "EMPEmitter";
   velocity = "1";
};

  MissionCleanup.add(%fire);


%EMP.schedule(500, "delete");
}
function ShapeBase::setEMPEmitter(%obj)
{
     setEMPEmitter(%obj);
}

function empOff(%obj, %EMPCounter, %oldRecharge)
{
%obj.setEMPEmitter();
%targetObject.setEnergyLevel(0); // Sets the victim`s energy level to 0
if (%EMPCounter == 0)
{
%obj.setRechargeRate(%oldRecharge);
messageClient(%obj.client, 'msgClient', "The effects of the EMP wear off."); // If there are no counters left, display message
}
else
{
%EMPCounter--; // Remove a counter
//%obj.setEMPEmitter();
schedule(1000, %obj, "empOff", %obj, %EMPCounter, %oldRecharge); // Set the recharge to the same as before the EMP
%obj.setDamageFlash(0.2); // Flash the victim for 0.2 seconds
}

}


