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.
94 lines
3.7 KiB
Plaintext
94 lines
3.7 KiB
Plaintext
#include "tob_inc_move"
|
|
#include "tob_movehook"
|
|
////#include "prc_alterations"
|
|
#include "inc_newspellbook"
|
|
|
|
// Helper functions
|
|
void DoDamage(object oInitiator, int nDice, int nClass)
|
|
{
|
|
location lTarget = GetLocation(oInitiator);
|
|
float fRange = FeetToMeters(10.0);
|
|
object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, fRange, lTarget, FALSE, OBJECT_TYPE_CREATURE, GetPosition(oInitiator));
|
|
|
|
while(GetIsObjectValid(oTarget))
|
|
{
|
|
if(oTarget != oInitiator)
|
|
{
|
|
int nDamage = d6(nDice);
|
|
int nDC = 14 + GetDCAbilityModForClass(nClass, oInitiator);
|
|
|
|
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_FIRE);
|
|
|
|
effect eLink = EffectDamage(nDamage/2, DAMAGE_TYPE_FIRE);
|
|
eLink = EffectLinkEffects(eLink, EffectDamage(nDamage/2, DAMAGE_TYPE_MAGICAL));
|
|
eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_IMP_FLAME_M));
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eLink, oTarget);
|
|
}
|
|
oTarget = MyNextObjectInShape(SHAPE_SPHERE, fRange, lTarget, FALSE, OBJECT_TYPE_CREATURE, GetPosition(oInitiator));
|
|
}
|
|
}
|
|
|
|
void DoLoop(object oInitiator, int nDice, int nClass)
|
|
{
|
|
if(DEBUG) DoDebug("Dice: " + IntToString(nDice));
|
|
DelayCommand(RoundsToSeconds(9), DoDamage(oInitiator, nDice, nClass));
|
|
DelayCommand(RoundsToSeconds(8), DoDamage(oInitiator, nDice, nClass));
|
|
DelayCommand(RoundsToSeconds(7), DoDamage(oInitiator, nDice, nClass));
|
|
DelayCommand(RoundsToSeconds(6), DoDamage(oInitiator, nDice, nClass));
|
|
DelayCommand(RoundsToSeconds(5), DoDamage(oInitiator, nDice, nClass));
|
|
DelayCommand(RoundsToSeconds(4), DoDamage(oInitiator, nDice, nClass));
|
|
DelayCommand(RoundsToSeconds(3), DoDamage(oInitiator, nDice, nClass));
|
|
DelayCommand(RoundsToSeconds(2), DoDamage(oInitiator, nDice, nClass));
|
|
DelayCommand(RoundsToSeconds(1), DoDamage(oInitiator, nDice, nClass));
|
|
DoDamage(oInitiator, nDice, nClass);
|
|
}
|
|
|
|
void main()
|
|
{
|
|
if(!PreManeuverCastCode()) return;
|
|
|
|
object oInitiator = OBJECT_SELF;
|
|
object oTarget = PRCGetSpellTargetObject();
|
|
struct maneuver move = EvaluateManeuver(oInitiator, oTarget);
|
|
|
|
if(move.bCanManeuver)
|
|
{
|
|
// See if they want augmented stance
|
|
if(GetSpellId() == JPM_SPELL_FIREBIRD_AUGMENTED)
|
|
{
|
|
int nSpellID = GetLocalInt(oInitiator, "JPM_SPELL_CURRENT");
|
|
string sArray = GetLocalString(oInitiator, "JPM_SPELL_CURRENT");
|
|
|
|
int nUses = sArray == "" ? GetHasSpell(nSpellID, oInitiator) :
|
|
persistant_array_get_int(oInitiator, sArray, nSpellID);
|
|
|
|
if(nUses)
|
|
{
|
|
int nClass = GetPrimaryArcaneClass(oInitiator);
|
|
int nLevel = GetLocalInt(oInitiator, "JPM_SPELL_CURRENT_LVL");
|
|
|
|
if(sArray == "")
|
|
{
|
|
DecrementRemainingSpellUses(oInitiator, nSpellID);
|
|
}
|
|
else
|
|
{
|
|
nUses--;
|
|
persistant_array_set_int(oInitiator, sArray, nSpellID, nUses);
|
|
}
|
|
|
|
DoLoop(oInitiator, nLevel, nClass);
|
|
}
|
|
}
|
|
// This adds 3 caster levels when using a fire spell
|
|
SetLocalInt(oInitiator, "ToB_JPM_FireB", TRUE);
|
|
|
|
if(GetLocalInt(oInitiator, "ReserveFeatsRunning"))
|
|
DelayCommand(0.1f, ExecuteScript("prc_reservefeat", oInitiator));
|
|
|
|
effect eLink = EffectLinkEffects(EffectDamageResistance(DAMAGE_TYPE_FIRE, 10), EffectVisualEffect(VFX_DUR_ELEMENTAL_SHIELD));
|
|
eLink = ExtraordinaryEffect(eLink);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oTarget);
|
|
}
|
|
} |