#include "nw_o0_itemmaker" const string BANISHING_OF_THE_CURSE = "banishing_of_the_curse"; void SetLocalArrayLocation(object oidObject, string sVarName, int nVarNum, location lValue); void SetLocalArrayLocation(object oidObject, string sVarName, int nVarNum, location lValue) { string sFullVarName = sVarName + IntToString(nVarNum); SetLocalLocation(oidObject, sFullVarName, lValue); } location GetLocalArrayLocation(object oidObject, string sVarName, int nVarNum); location GetLocalArrayLocation(object oidObject, string sVarName, int nVarNum) { string sFullVarName = sVarName + IntToString(nVarNum); return GetLocalLocation(oidObject, sFullVarName); } void main() { object oStaff = GetInventoryDisturbItem(); if(GetTag(oStaff) == "bh_holystaafofm") { DestroyObject(oStaff); int nPlaceableAmmonut = 0; object oPartyArea; object oChangeable; location lChangeable; location lReward; string sTag; object oArea = GetArea(OBJECT_SELF); object oPartyM = GetFirstFactionMember(GetLastUsedBy()); while(GetIsObjectValid(oPartyM)) { oPartyArea = GetArea(oPartyM); if(!GetIsDM(oPartyM) && oArea == oPartyArea) { DelayCommand(0.7f, FadeToBlack(oPartyM)); DelayCommand(2.7f, FadeFromBlack(oPartyM)); } oPartyM = GetNextFactionMember(GetLastUsedBy()); } oChangeable = GetFirstObjectInArea(oArea); while(GetIsObjectValid(oChangeable)) { sTag = GetTag(oChangeable); if(sTag == "MagicSparksRed") { lChangeable = GetLocation(oChangeable); DestroyObject(oChangeable); SetLocalArrayString(OBJECT_SELF, BANISHING_OF_THE_CURSE, nPlaceableAmmonut, "plc_magiccyan"); SetLocalArrayLocation(OBJECT_SELF, BANISHING_OF_THE_CURSE, nPlaceableAmmonut, lChangeable); nPlaceableAmmonut++; } else if(sTag == "bh_hasove1" || sTag == "ImpalingSpearwHumanCorpse" || sTag == "Arrowfilledcorpse" || sTag == "Bloodstain" || sTag == "FlyCladPlagueVictimCorpse" || sTag == "SpearSwordfilledCorpse" || sTag == "SkullPole") { DestroyObject(oChangeable); } //Reward. else if(sTag == "bh_axoranoi") { lChangeable = GetLocation(oChangeable); lReward = lChangeable; SetLocalArrayString(OBJECT_SELF, BANISHING_OF_THE_CURSE, nPlaceableAmmonut, "plc_solcyan"); SetLocalArrayLocation(OBJECT_SELF, BANISHING_OF_THE_CURSE, nPlaceableAmmonut, lChangeable); nPlaceableAmmonut++; ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SUMMON_CELESTIAL), oChangeable); DelayCommand(0.2f, AssignCommand(oChangeable, ActionSpeakString("Thank you great champion. Now we are free at last."))); DelayCommand(1.0f, DestroyObject(oChangeable)); } oChangeable = GetNextObjectInArea(oArea); } DelayCommand(2.0f, SetFogColor(FOG_TYPE_ALL, FOG_COLOR_CYAN)); DelayCommand(2.0f, SetFogAmount(FOG_TYPE_ALL, 2)); DelayCommand(2.0f, MusicBackgroundChangeNight(oArea, TRACK_TEMPLEGOOD)); DelayCommand(2.0f, MusicBackgroundChangeDay(oArea, TRACK_TEMPLEGOOD)); int nCount; string sResRef; location lPlace; for(nCount = 0; nCount < nPlaceableAmmonut; nCount++) { sResRef = GetLocalArrayString(OBJECT_SELF, BANISHING_OF_THE_CURSE, nCount); lPlace = GetLocalArrayLocation(OBJECT_SELF, BANISHING_OF_THE_CURSE, nCount); CreateObject(OBJECT_TYPE_PLACEABLE, sResRef, lPlace); } CreateObject(OBJECT_TYPE_ITEM, "bt_xqcbba", lReward); CreateObject(OBJECT_TYPE_ITEM, "bi_asoltoken", lReward); } }