Aantioch_Infernum/_module/nss/area_cold_frost2.nss
Jaysyn904 22947ad4b6 Initial Upload
Initial Upload
2023-08-08 16:22:17 -04:00

81 lines
2.8 KiB
Plaintext

/////////////////////////////////////////////////////////////////
////:: Cold Frost Damage OnAreaEnter Script ///////////////
////:: Created By: Mathew Edwards - aka DCMage ///////////////
////:: Created On: 11 July 2003 ///////////////
/////////////////////////////////////////////////////////////////
// This script deals d2 of Positive Energy Damage OnEnter and 1 Damage every 10 seconds
// there after to any persons in the specified Area/Areas. The higher the level
// area the higher the damage will need to be to counter act any resistances a
// PC may have.
void RunColdFrost(int nSecondsRemaining, object oTarget);
void main()
{
//Declare major variables
object oTarget = GetEnteringObject();
if (!GetIsPC(oTarget)) return;
object oGear = GetItemPossessedBy(oTarget,"GemofWarming");
int nDamage;
effect eDam;
string sImmuneItem = "GemofWarming"; // Place ITEM ResRef here that negates effects
effect eVis = EffectVisualEffect(VFX_IMP_HEAD_COLD);
int nDuration = GetHitDice(oTarget) / 5;
//figure out timing
float fDelay = 10.0f;
//Check that there is at least one payload damage
if (nDuration < 1)
{
nDuration = 1;
}
{
// Check to see if PC has said item in invo if so avoids effects of Cold Frost
if (GetItemPossessedBy(oTarget, "GemofWarming")!= OBJECT_INVALID)
{
SendMessageToPC(oTarget, "The cold does not effect you");
}
else
{
//Roll initial damage
nDamage = d2(); // CHANGE THIS FROM d2 TO WHAT EVER DICE ROLL YOU WANT FOR DAMAGE E.G d6(2) IS 2d6
//Set the initial damage effect
eDam = EffectDamage(nDamage, DAMAGE_TYPE_COLD);
//Apply the inital VFX impact and damage effect
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
//Apply the bonus damage
nDuration = nDuration * 6;
DelayCommand(6.0, RunColdFrost(nDuration, oTarget));
}
}
}
void RunColdFrost(int nSecondsRemaining, object oTarget)
{
object oTarget = GetEnteringObject();
if (GetIsDead(oTarget) == FALSE)
{
if (nSecondsRemaining % 6 == 0)
{
//Roll damage
int nDamage = 55; // CHANGE THIS FROM 1 DAM TO WHATEVER YOU NEED DO NOT USE DICE ROLLS ONLY NUMBERS
effect eDam = EffectDamage(nDamage, DAMAGE_TYPE_COLD);
effect eVis = EffectVisualEffect(VFX_IMP_HEAD_COLD);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
SendMessageToPC(oTarget, "You are slowly freezing to death");
}
--nSecondsRemaining;
if (nSecondsRemaining > 0)
{
DelayCommand(1.0f, RunColdFrost(nSecondsRemaining, oTarget));
}
}
}