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