Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
144 lines
4.2 KiB
Plaintext
144 lines
4.2 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Talon of Tiamat Breath Weapons
|
|
//:: prc_taltia_brth.nss
|
|
//::///////////////////////////////////////////////
|
|
/*
|
|
Handles the breath weapons of the Talon of Tiamat
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Fox
|
|
//:: Created On: Nov 22, 2007
|
|
//:://////////////////////////////////////////////
|
|
#include "prc_inc_spells"
|
|
#include "prc_inc_breath"
|
|
|
|
//internal function to reset the breath used marker
|
|
void RechargeBreath(object oPC)
|
|
{
|
|
SendMessageToPC(oPC, "Breath recharged!");
|
|
SetLocalInt(oPC, "UsedTalonBreath", FALSE);
|
|
}
|
|
|
|
void main()
|
|
{
|
|
object oPC = OBJECT_SELF;
|
|
|
|
//check to see if 1d4 rounds have passed
|
|
if(GetLocalInt(oPC, "UsedTalonBreath"))
|
|
{
|
|
FloatingTextStringOnCreature("Your breath is still recharging.", oPC, FALSE);
|
|
return;
|
|
}
|
|
|
|
int nSpellID = GetSpellId();
|
|
int nClass = GetLevelByClass(CLASS_TYPE_TALON_OF_TIAMAT, oPC);
|
|
struct breath TalonBreath;
|
|
|
|
//Acid cone
|
|
if(nSpellID == SPELL_TOT_ACID_LINE)
|
|
{
|
|
if(nClass < 3)
|
|
{
|
|
FloatingTextStringOnCreature("This breath requires 3rd level Talon of Tiamat.", oPC, FALSE);
|
|
return;
|
|
}
|
|
|
|
if (GetLocalInt(oPC, "TalonBreath1"))
|
|
{
|
|
FloatingTextStringOnCreature("You have used your Acid Line Breath for the day.", oPC, FALSE);
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
SetLocalInt(oPC, "TalonBreath1", TRUE);
|
|
TalonBreath = CreateBreath(oPC, TRUE, 60.0, DAMAGE_TYPE_ACID, 4, 8, ABILITY_CONSTITUTION, nClass);
|
|
}
|
|
}
|
|
|
|
//Acid line
|
|
if(nSpellID == SPELL_TOT_ACID_CONE)
|
|
{
|
|
if(nClass < 5)
|
|
{
|
|
FloatingTextStringOnCreature("This breath requires 5th level Talon of Tiamat.", oPC, FALSE);
|
|
return;
|
|
}
|
|
|
|
if (GetLocalInt(oPC, "TalonBreath2"))
|
|
{
|
|
FloatingTextStringOnCreature("You have used your Acid Cone Breath for the day.", oPC, FALSE);
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
SetLocalInt(oPC, "TalonBreath2", TRUE);
|
|
TalonBreath = CreateBreath(oPC, FALSE, 30.0, DAMAGE_TYPE_ACID, 6, 10, ABILITY_CONSTITUTION, nClass);
|
|
}
|
|
}
|
|
|
|
//Cold
|
|
if(nSpellID == SPELL_TOT_COLD_CONE)
|
|
{
|
|
if (GetLocalInt(oPC, "TalonBreath3"))
|
|
{
|
|
FloatingTextStringOnCreature("You have used your Cold Breath for the day.", oPC, FALSE);
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
SetLocalInt(oPC, "TalonBreath3", TRUE);
|
|
TalonBreath = CreateBreath(oPC, FALSE, 30.0, DAMAGE_TYPE_COLD, 6, 3, ABILITY_CONSTITUTION, nClass);
|
|
}
|
|
}
|
|
|
|
//Electric
|
|
if(nSpellID == SPELL_TOT_ELEC_LINE)
|
|
{
|
|
if(nClass < 7)
|
|
{
|
|
FloatingTextStringOnCreature("This breath requires 7th level Talon of Tiamat.", oPC, FALSE);
|
|
return;
|
|
}
|
|
|
|
if (GetLocalInt(oPC, "TalonBreath4"))
|
|
{
|
|
FloatingTextStringOnCreature("You have used your Lightning Breath for the day.", oPC, FALSE);
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
SetLocalInt(oPC, "TalonBreath4", TRUE);
|
|
TalonBreath = CreateBreath(oPC, TRUE, 60.0, DAMAGE_TYPE_ELECTRICAL, 8, 12, ABILITY_CONSTITUTION, nClass);
|
|
}
|
|
}
|
|
|
|
//Fire
|
|
if(nSpellID == SPELL_TOT_FIRE_CONE)
|
|
{
|
|
if(nClass < 9)
|
|
{
|
|
FloatingTextStringOnCreature("This breath requires 9th level Talon of Tiamat.", oPC, FALSE);
|
|
return;
|
|
}
|
|
|
|
if (GetLocalInt(oPC, "TalonBreath5"))
|
|
{
|
|
FloatingTextStringOnCreature("You have used your Fire Breath for the day.", oPC, FALSE);
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
SetLocalInt(oPC, "TalonBreath5", TRUE);
|
|
TalonBreath = CreateBreath(oPC, FALSE, 30.0, DAMAGE_TYPE_FIRE, 8, 14, ABILITY_CONSTITUTION, nClass);
|
|
}
|
|
}
|
|
|
|
//apply the breath to the affected area
|
|
ApplyBreath(TalonBreath, PRCGetSpellTargetLocation());
|
|
|
|
//apply the recharge delay
|
|
int nBreathDelay = TalonBreath.nRoundsUntilRecharge;
|
|
SetLocalInt(oPC, "UsedTalonBreath", TRUE);
|
|
SendMessageToPC(oPC, IntToString(nBreathDelay) + " rounds until you can use your breath.");
|
|
DelayCommand(RoundsToSeconds(nBreathDelay), RechargeBreath(oPC));
|
|
} |