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.
87 lines
3.2 KiB
Plaintext
87 lines
3.2 KiB
Plaintext
/*
|
|
----------------
|
|
Flame of the Shadow Sun
|
|
|
|
tob_ssn_flamess.nss
|
|
----------------
|
|
|
|
18 MAR 09 by GC
|
|
*/ /** @file
|
|
|
|
*/
|
|
#include "tob_inc_move"
|
|
#include "tob_movehook"
|
|
////#include "prc_alterations"
|
|
#include "prc_inc_sp_tch"
|
|
|
|
void main()
|
|
{
|
|
int nEvent = GetRunningEvent();
|
|
int nID = GetSpellId();
|
|
object oInitiator = OBJECT_SELF;
|
|
object oTarget = PRCGetSpellTargetObject();
|
|
object oItem = GetItemInSlot(INVENTORY_SLOT_CHEST, oInitiator);
|
|
|
|
if(nID == SSN_FLAMESS_ATTACK)
|
|
{
|
|
if(!GetLocalInt(oInitiator, "SSN_FLAMESS_PASS"))
|
|
{
|
|
FloatingTextStringOnCreature("*Your protection has not yet been breached*", oInitiator, FALSE);
|
|
return;
|
|
}
|
|
int nAttackRoll = PRCDoRangedTouchAttack(oTarget, TRUE, oInitiator);
|
|
if(nAttackRoll > 0)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S);
|
|
ApplyTouchAttackDamage(oInitiator, oTarget, 1, d6(2), DAMAGE_TYPE_FIRE);
|
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
|
DeleteLocalInt(oInitiator, "SSN_FLAMESS_PASS");
|
|
}
|
|
|
|
return; // Skip the rest
|
|
}
|
|
if(nEvent == FALSE)
|
|
{// Called as spell
|
|
if(!TakeSwiftAction(oInitiator)) return;
|
|
if (!PreManeuverCastCode())
|
|
{
|
|
// If code within the PreManeuverCastCode (i.e. UMD) reports FALSE, do not run this spell
|
|
return;
|
|
}
|
|
// End of Spell Cast Hook
|
|
|
|
struct maneuver move = EvaluateManeuver(oInitiator, oTarget, TRUE);
|
|
effect eLink;
|
|
|
|
if(move.bCanManeuver)
|
|
{
|
|
//eLink = EffectDamageResistance(DAMAGE_TYPE_COLD, 10);
|
|
eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_DUR_PARALYZED));
|
|
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oInitiator, 6.0);
|
|
|
|
// The OnHit
|
|
IPSafeAddItemProperty(oItem, ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER, 1), 6.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
|
AddEventScript(oItem, EVENT_ITEM_ONHIT, "tob_ssn_flamess", TRUE, FALSE);
|
|
DelayCommand(6.0, RemoveEventScript(oItem, EVENT_ITEM_ONHIT, "tob_ssn_flamess", TRUE, FALSE));
|
|
DelayCommand(6.0, RemoveSpecificProperty(oItem, ITEM_PROPERTY_ONHITCASTSPELL, IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER, 0, 1, "", -1, DURATION_TYPE_TEMPORARY));
|
|
}
|
|
}
|
|
else if(nEvent == EVENT_ITEM_ONHIT)
|
|
{
|
|
oItem = GetSpellCastItem();
|
|
if(GetBaseItemType(oItem) == BASE_ITEM_ARMOR)
|
|
{
|
|
int nCold = min(10, GetDamageDealtByType(DAMAGE_TYPE_COLD));
|
|
if(nCold > 0)
|
|
{
|
|
effect eHeal = EffectHeal(nCold);
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, oInitiator);
|
|
SetLocalInt(oInitiator, "SSN_FLAMESS_PASS", TRUE);
|
|
DelayCommand(6.0, DeleteLocalInt(oInitiator, "SSN_FLAMESS_PASS"));
|
|
// Cleanup
|
|
RemoveSpecificProperty(oItem, ITEM_PROPERTY_ONHITCASTSPELL, IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER, 0, 1, "", -1, DURATION_TYPE_TEMPORARY);
|
|
RemoveEventScript(oItem, EVENT_ITEM_ONHIT, "tob_ssn_flamess", TRUE, FALSE);
|
|
}
|
|
}
|
|
}
|
|
} |