PRC8/nwn/nwnprc/trunk/scripts/prc_taltia_brth.nss
Jaysyn904 6ec137a24e Updated AMS marker feats
Updated AMS marker feats.  Removed arcane & divine marker feats.  Updated Dread Necromancer for epic progression. Updated weapon baseitem models.  Updated new weapons for crafting & npc equip.
 Updated prefix.  Updated release archive.
2024-02-11 14:01:05 -05:00

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));
}