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.
51 lines
2.6 KiB
Plaintext
51 lines
2.6 KiB
Plaintext
#include "prc_alterations"
|
|
|
|
void main()
|
|
{
|
|
int nEvent = GetRunningEvent();
|
|
if(DEBUG) DoDebug("prc_sacpur_strike running, event: " + IntToString(nEvent));
|
|
|
|
// Get the PC.
|
|
object oPC = OBJECT_SELF;
|
|
object oItem = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC);
|
|
|
|
// We're being called from the OnHit eventhook, so deal the damage
|
|
// Once a round only, must have a turn undead attempt left
|
|
if(nEvent == EVENT_ITEM_ONHIT && !GetLocalInt(oPC, "SacredPurifierDelay") && GetHasFeat(FEAT_TURN_UNDEAD,oPC))
|
|
{
|
|
DecrementRemainingFeatUses(oPC,FEAT_TURN_UNDEAD); // Burn a use
|
|
oItem = GetSpellCastItem();
|
|
object oTarget = PRCGetSpellTargetObject();
|
|
if(DEBUG) DoDebug("prc_sacpur_strike: OnHit:\n" + "oPC = " + DebugObject2Str(oPC) + "\n" + "oItem = " + DebugObject2Str(oItem) + "\n" + "oTarget = " + DebugObject2Str(oTarget) + "\n");
|
|
|
|
// Only applies to melee weapons and undead
|
|
if(IPGetIsMeleeWeapon(oItem) && (MyPRCGetRacialType(oTarget) == RACIAL_TYPE_UNDEAD
|
|
|| (GetHasFeat(FEAT_TOMB_TAINTED_SOUL, oTarget) && GetAlignmentGoodEvil(oTarget) != ALIGNMENT_GOOD)))
|
|
{
|
|
// Calculate damage and apply
|
|
effect eDam = EffectDamage(d6(2),DAMAGE_TYPE_POSITIVE,DAMAGE_POWER_ENERGY);
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
|
|
FloatingTextStringOnCreature("Sacred Strike Hit", oPC, FALSE);
|
|
SetLocalInt(oPC, "SacredPurifierDelay", TRUE);
|
|
DelayCommand(6.0f, DeleteLocalInt(oPC, "SacredPurifierDelay")); // Once a round
|
|
|
|
// Clean Up - user needs to reactivate feat
|
|
RemoveEventScript(oItem, EVENT_ITEM_ONHIT, "prc_sacpur_strike", TRUE, FALSE);
|
|
RemoveSpecificProperty(oItem, ITEM_PROPERTY_ONHITCASTSPELL, IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER, 0, 1, "", -1, DURATION_TYPE_TEMPORARY);
|
|
return;
|
|
}// end if - Item is a melee weapon
|
|
}// end if - Running OnHit event
|
|
|
|
// We aren't being called from any event, but from the class feat
|
|
// Hook in the OnHit event for Sacred Strike
|
|
if(DEBUG) DoDebug("prc_sacpur_strike: Adding eventhooks");
|
|
|
|
if (IPGetIsMeleeWeapon(oItem)) // Melee weapons only
|
|
{
|
|
FloatingTextStringOnCreature("Sacred Strike Activated", oPC, FALSE);
|
|
SetLocalInt(oPC, "SacredPurifierStrike", TRUE);
|
|
IPSafeAddItemProperty(oItem, ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER, 1), 99999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
|
AddEventScript(oItem, EVENT_ITEM_ONHIT, "prc_sacpur_strike", TRUE, FALSE);
|
|
}
|
|
}
|