#include "dmfi_db_inc" object DMFI_NextTarget(object oTarget, object oUser) { object oNew; if (GetIsPC(oTarget)) { if (GetIsObjectValid(GetNextFactionMember(oTarget))) oNew = GetNextFactionMember(oTarget); else oNew = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC, oTarget, 1); } else oNew = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_NOT_PC, oTarget, 1); if (!GetIsObjectValid(oNew)) { SendMessageToPC(oUser, "No valid target to transfer to."); oNew = oTarget; } SetLocalObject(oUser, "dmfi_univ_target", oNew); SetCustomToken(20680, GetName(oNew)); FloatingTextStringOnCreature("Target changed to: "+ GetName(oNew), oUser); return oNew; } //DMFI Creates the "settings" creature void CreateSetting(object oUser) { object oSetting = CreateObject(OBJECT_TYPE_CREATURE, "dmfi_setting", GetLocation(oUser)); DelayCommand(0.5f, AssignCommand(oSetting, ActionSpeakString(GetLocalString(oUser, "EffectSetting") + " is currently set at " + FloatToString(GetLocalFloat(oUser, GetLocalString(oUser, "EffectSetting")))))); SetLocalObject(oSetting, "MyMaster", oUser); SetListenPattern(oSetting, "**", LISTEN_PATTERN); //listen to all text SetLocalInt(oSetting, "hls_Listening", 1); //listen to all text SetListening(oSetting, TRUE); //be sure NPC is listening } //This function is for the DMFI Affliction Wand void ReportImmunity(object oT, object oUser) { SendMessageToPC(oUser, "Immunities Reported: (blank if none)"); if (GetIsImmune(oT, IMMUNITY_TYPE_ABILITY_DECREASE)) SendMessageToPC(oUser, GetName(oT) + " IMMUNE Ability Decrease"); if (GetIsImmune(oT, IMMUNITY_TYPE_AC_DECREASE)) SendMessageToPC(oUser, GetName(oT) + " IMMUNE AC Decrease"); if (GetIsImmune(oT, IMMUNITY_TYPE_ATTACK_DECREASE)) SendMessageToPC(oUser, GetName(oT) + " IMMUNE Attack Decrease"); if (GetIsImmune(oT, IMMUNITY_TYPE_BLINDNESS)) SendMessageToPC(oUser, GetName(oT) + " IMMUNE Blindness"); if (GetIsImmune(oT, IMMUNITY_TYPE_CHARM)) SendMessageToPC(oUser, GetName(oT) + " IMMUNE Charm"); if (GetIsImmune(oT, IMMUNITY_TYPE_CONFUSED)) SendMessageToPC(oUser, GetName(oT) + " IMMUNE Confusion"); if (GetIsImmune(oT, IMMUNITY_TYPE_CRITICAL_HIT)) SendMessageToPC(oUser, GetName(oT) + " IMMUNE Critical Hit"); if (GetIsImmune(oT, IMMUNITY_TYPE_CURSED)) SendMessageToPC(oUser, GetName(oT) + " IMMUNE Cursed"); if (GetIsImmune(oT, IMMUNITY_TYPE_DAMAGE_DECREASE)) SendMessageToPC(oUser, GetName(oT) + " IMMUNE Damage Decrease"); if (GetIsImmune(oT, IMMUNITY_TYPE_DAMAGE_IMMUNITY_DECREASE)) SendMessageToPC(oUser, GetName(oT) + " IMMUNE Damage Immunity Decrease"); if (GetIsImmune(oT, IMMUNITY_TYPE_DAZED)) SendMessageToPC(oUser, GetName(oT) + " IMMUNE Dazed"); if (GetIsImmune(oT, IMMUNITY_TYPE_DEAFNESS)) SendMessageToPC(oUser, GetName(oT) + " IMMUNE Deafness"); if (GetIsImmune(oT, IMMUNITY_TYPE_DEATH)) SendMessageToPC(oUser, GetName(oT) + " IMMUNE Death"); if (GetIsImmune(oT, IMMUNITY_TYPE_DISEASE)) SendMessageToPC(oUser, GetName(oT) + " IMMUNE Disease"); if (GetIsImmune(oT, IMMUNITY_TYPE_DOMINATE)) SendMessageToPC(oUser, GetName(oT) + " IMMUNE Dominate"); if (GetIsImmune(oT, IMMUNITY_TYPE_ENTANGLE)) SendMessageToPC(oUser, GetName(oT) + " IMMUNE Entangle"); if (GetIsImmune(oT, IMMUNITY_TYPE_FEAR)) SendMessageToPC(oUser, GetName(oT) + " IMMUNE Fear"); if (GetIsImmune(oT, IMMUNITY_TYPE_KNOCKDOWN)) SendMessageToPC(oUser, GetName(oT) + " IMMUNE Knockdown"); if (GetIsImmune(oT, IMMUNITY_TYPE_MIND_SPELLS)) SendMessageToPC(oUser, GetName(oT) + " IMMUNE Mind Spells"); if (GetIsImmune(oT, IMMUNITY_TYPE_MOVEMENT_SPEED_DECREASE)) SendMessageToPC(oUser, GetName(oT) + " IMMUNE Movement Speed Decrease"); if (GetIsImmune(oT, IMMUNITY_TYPE_NEGATIVE_LEVEL)) SendMessageToPC(oUser, GetName(oT) + " IMMUNE Negative Level"); if (GetIsImmune(oT, IMMUNITY_TYPE_PARALYSIS)) SendMessageToPC(oUser, GetName(oT) + " IMMUNE Paralysis"); if (GetIsImmune(oT, IMMUNITY_TYPE_POISON)) SendMessageToPC(oUser, GetName(oT) + " IMMUNE Poison"); if (GetIsImmune(oT, IMMUNITY_TYPE_SAVING_THROW_DECREASE)) SendMessageToPC(oUser, GetName(oT) + " IMMUNE Saving Throw Decrease"); if (GetIsImmune(oT, IMMUNITY_TYPE_SILENCE)) SendMessageToPC(oUser, GetName(oT) + " IMMUNE Silence"); if (GetIsImmune(oT, IMMUNITY_TYPE_SKILL_DECREASE)) SendMessageToPC(oUser, GetName(oT) + " IMMUNE Skill Decrease"); if (GetIsImmune(oT, IMMUNITY_TYPE_SLEEP)) SendMessageToPC(oUser, GetName(oT) + " IMMUNE Sleep"); if (GetIsImmune(oT, IMMUNITY_TYPE_SLOW)) SendMessageToPC(oUser, GetName(oT) + " IMMUNE Slow"); if (GetIsImmune(oT, IMMUNITY_TYPE_SNEAK_ATTACK)) SendMessageToPC(oUser, GetName(oT) + " IMMUNE Sneak Attack"); if (GetIsImmune(oT, IMMUNITY_TYPE_SPELL_RESISTANCE_DECREASE)) SendMessageToPC(oUser, GetName(oT) + " IMMUNE Spell Resistance Decrease"); if (GetIsImmune(oT, IMMUNITY_TYPE_STUN)) SendMessageToPC(oUser, GetName(oT) + " IMMUNE Stun"); if (GetIsImmune(oT, IMMUNITY_TYPE_TRAP)) SendMessageToPC(oUser, GetName(oT) + " IMMUNE Trap"); } void CheckForEffect(effect eA, object oT, object oUser) { int Result = FALSE; effect Check = GetFirstEffect(oT); while (GetIsEffectValid(Check)) { if (Check == eA) Result = TRUE; Check = GetNextEffect(oT); } if (Result) FloatingTextStringOnCreature("Affliction Wand Saving Throw Failure: " + GetName(oT), oUser); else FloatingTextStringOnCreature("Affliction Wand Saving Throw Success: No Effect: " + GetName(oT), oUser); } void main() { int iAfflict = GetLocalInt(OBJECT_SELF, "dmfi_univ_int"); object oUser = OBJECT_SELF; effect eEffect; object oTarget = GetLocalObject(oUser, "dmfi_univ_target"); float fDuration; int nDNum; effect eD; effect eA; effect eT; effect eVis; int nBug = 0; int nSaveAmount; float fSaveAmount; nDNum = GetLocalInt(oUser, "dmfi_damagemodifier"); fDuration = GetLocalFloat(oUser, "dmfi_stunduration"); fSaveAmount = GetLocalFloat(oUser, "dmfi_saveamount"); nSaveAmount = FloatToInt(fSaveAmount); if (!(GetObjectType(oTarget) == OBJECT_TYPE_CREATURE) || GetIsDM(oTarget)) { FloatingTextStringOnCreature("You must target a valid creature!", oUser, FALSE); return; } switch(iAfflict) { case 11: eD= EffectDamage(d4(nDNum), DAMAGE_TYPE_MAGICAL, DAMAGE_POWER_PLUS_TWENTY); eVis = EffectVisualEffect(VFX_COM_BLOOD_SPARK_SMALL); break; case 12: eD = EffectDamage(d6(nDNum), DAMAGE_TYPE_MAGICAL, DAMAGE_POWER_PLUS_TWENTY); eVis = EffectVisualEffect(VFX_COM_BLOOD_LRG_RED); break; case 13: eD = EffectDamage(d8(nDNum), DAMAGE_TYPE_MAGICAL, DAMAGE_POWER_PLUS_TWENTY); eVis = EffectVisualEffect(VFX_COM_BLOOD_LRG_RED); break; case 14: eD = EffectDamage(d10(nDNum), DAMAGE_TYPE_MAGICAL, DAMAGE_POWER_PLUS_TWENTY); eVis = EffectVisualEffect(VFX_COM_BLOOD_SPARK_SMALL); break; case 15: eD = EffectDamage(d12(nDNum), DAMAGE_TYPE_MAGICAL, DAMAGE_POWER_PLUS_TWENTY); eVis = EffectVisualEffect(VFX_COM_BLOOD_SPARK_SMALL); break; case 16: eD = EffectDamage(GetCurrentHitPoints(oTarget)/4, DAMAGE_TYPE_MAGICAL, DAMAGE_POWER_PLUS_TWENTY); eVis = EffectVisualEffect(VFX_COM_BLOOD_LRG_RED); break; case 17: eD = EffectDamage(GetCurrentHitPoints(oTarget)/2, DAMAGE_TYPE_MAGICAL, DAMAGE_POWER_PLUS_TWENTY); eVis = EffectVisualEffect(VFX_COM_BLOOD_LRG_RED); break; case 18: eD = EffectDamage(GetCurrentHitPoints(oTarget) * 3 / 4, DAMAGE_TYPE_MAGICAL, DAMAGE_POWER_PLUS_TWENTY); eVis =EffectVisualEffect(VFX_COM_CHUNK_RED_SMALL); break; case 19: eD = EffectDamage(GetCurrentHitPoints(oTarget)-1, DAMAGE_TYPE_MAGICAL, DAMAGE_POWER_PLUS_TWENTY); eVis =EffectVisualEffect(VFX_COM_CHUNK_RED_SMALL); break; case 21: eA =EffectDisease(DISEASE_FILTH_FEVER); break; case 22: eA =EffectDisease(DISEASE_MINDFIRE); break; case 23: eA =EffectDisease(DISEASE_DREAD_BLISTERS); break; case 24: eA =EffectDisease(DISEASE_SHAKES); break; case 25: eA =EffectDisease(DISEASE_VERMIN_MADNESS); break; case 26: eA =EffectDisease(DISEASE_DEVIL_CHILLS); break; case 27: eA =EffectDisease(DISEASE_SLIMY_DOOM); break; case 28: eA =EffectDisease(DISEASE_RED_ACHE); break; case 29: eA =EffectDisease(DISEASE_ZOMBIE_CREEP); break; case 31: eA =EffectDisease(DISEASE_BLINDING_SICKNESS); break; case 32: eA =EffectDisease(DISEASE_CACKLE_FEVER); break; case 33: eA =EffectDisease(DISEASE_BURROW_MAGGOTS); break; case 34: eA =EffectDisease(DISEASE_RED_SLAAD_EGGS); break; case 35: eA =EffectDisease(DISEASE_DEMON_FEVER); break; case 36: eA =EffectDisease(DISEASE_GHOUL_ROT); break; case 37: eA =EffectDisease(DISEASE_MUMMY_ROT); break; case 38: eA =EffectDisease(DISEASE_SOLDIER_SHAKES); break; case 39: eA =EffectDisease(DISEASE_SOLDIER_SHAKES); break; case 41: eA =EffectPoison(POISON_TINY_SPIDER_VENOM); break; case 42: eA =EffectPoison(POISON_ARANEA_VENOM); break; case 43: eA =EffectPoison(POISON_MEDIUM_SPIDER_VENOM); break; case 44: eA = EffectPoison(POISON_CARRION_CRAWLER_BRAIN_JUICE); break; case 45: eA = EffectPoison(POISON_OIL_OF_TAGGIT); break; case 46: eA = EffectPoison(POISON_ARSENIC); break; case 47: eA = EffectPoison(POISON_GREENBLOOD_OIL); break; case 48: eA = EffectPoison(POISON_NITHARIT); break; case 49: eA = EffectPoison(POISON_PHASE_SPIDER_VENOM); break; case 51: eA = EffectPoison(POISON_LICH_DUST); break; case 52: eA = EffectPoison(POISON_SHADOW_ESSENCE); break; case 53: eA = EffectPoison(POISON_LARGE_SPIDER_VENOM); break; case 54: eA = EffectPoison(POISON_PURPLE_WORM_POISON); break; case 55: eA = EffectPoison(POISON_IRON_GOLEM); break; case 56: eA = EffectPoison(POISON_PIT_FIEND_ICHOR); break; case 57: eA = EffectPoison(POISON_WYVERN_POISON); break; case 58: eA = EffectPoison(POISON_BLACK_LOTUS_EXTRACT); break; case 59: eA = EffectPoison(POISON_GARGANTUAN_SPIDER_VENOM); break; case 60: eT = EffectPetrify(); break; case 61: eT = EffectBlindness(); break; case 62: eT = EffectCurse(4,4,4,4,4,4); break; case 63: eT = EffectFrightened(); break; case 64: eT = EffectStunned(); break; case 65: eT = EffectSilence(); break; case 66: eT = EffectSleep(); break; case 67: eT = EffectSlow(); break; case 68: eT = EffectKnockdown(); nBug = 1; break; case 69: eD = EffectDamage( GetCurrentHitPoints(oTarget)-1, DAMAGE_TYPE_MAGICAL, DAMAGE_POWER_NORMAL); AssignCommand( oTarget, ClearAllActions()); AssignCommand( oTarget, ActionPlayAnimation( ANIMATION_LOOPING_DEAD_FRONT, 1.0, 99999.0)); DelayCommand(0.5, SetCommandable( FALSE, oTarget)); break; case 71: eA = EffectCutsceneDominated();break; case 72: eA = EffectCutsceneGhost(); break; case 73: eA = EffectCutsceneImmobilize(); break; case 74: eA = EffectCutsceneParalyze(); break; case 75: nBug = -1; break; //special case for combo death effect case 81: eEffect = GetFirstEffect(oTarget); while (GetIsEffectValid(eEffect)) { if (GetEffectType(eEffect) == EFFECT_TYPE_POISON) RemoveEffect(oTarget, eEffect); eEffect = GetNextEffect(oTarget); } break; case 82: eEffect = GetFirstEffect(oTarget); while (GetIsEffectValid(eEffect)) { if (GetEffectType(eEffect) == EFFECT_TYPE_DISEASE) RemoveEffect(oTarget, eEffect); eEffect = GetNextEffect(oTarget); } break; case 83: eEffect = GetFirstEffect(oTarget); while (GetIsEffectValid(eEffect)) { if (GetEffectType(eEffect) == EFFECT_TYPE_BLINDNESS) RemoveEffect(oTarget, eEffect); eEffect = GetNextEffect(oTarget); } break; case 84: eEffect = GetFirstEffect(oTarget); while (GetIsEffectValid(eEffect)) { if (GetEffectType(eEffect) == EFFECT_TYPE_CURSE) RemoveEffect(oTarget, eEffect); eEffect = GetNextEffect(oTarget); } break; case 85: eEffect = GetFirstEffect(oTarget); while (GetIsEffectValid(eEffect)) { if (GetEffectType(eEffect) == EFFECT_TYPE_FRIGHTENED) RemoveEffect(oTarget, eEffect); eEffect = GetNextEffect(oTarget); } break; case 86: eEffect = GetFirstEffect(oTarget); while (GetIsEffectValid(eEffect)) { if (GetEffectType(eEffect) == EFFECT_TYPE_STUNNED) RemoveEffect(oTarget, eEffect); eEffect = GetNextEffect(oTarget); } break; case 87: eEffect = GetFirstEffect(oTarget); while (GetIsEffectValid(eEffect)) { if (GetEffectType(eEffect) == EFFECT_TYPE_SILENCE) RemoveEffect(oTarget, eEffect); eEffect = GetNextEffect(oTarget); } break; case 88: eEffect = GetFirstEffect(oTarget); while (GetIsEffectValid(eEffect)) { RemoveEffect(oTarget, eEffect); eEffect = GetNextEffect(oTarget); } break; case 89: SetCommandable(TRUE, oTarget); AssignCommand(oTarget, ClearAllActions()); break; case 80: eEffect = GetFirstEffect(oTarget); while (GetIsEffectValid(eEffect)) { if (GetEffectType(eEffect) == EFFECT_TYPE_PETRIFY) RemoveEffect(oTarget, eEffect); eEffect = GetNextEffect(oTarget); } break;//Added July 5, 2003 // 99 is a duplicate instance - simple copy. - Demetrious case 91: SetLocalString(oUser, "EffectSetting", "dmfi_stunduration"); CreateSetting(oUser); case 92: SetDMFIPersistentInt("dmfi", "DamageModifier", nDNum+1); SetCustomToken(20780, IntToString(nDNum+1));; break; case 93: if (nDNum==1) { FloatingTextStringOnCreature("Illegal operation: Minimum modifier is 1.", oUser); break; } else { SetDMFIPersistentInt("dmfi", "DamageModifier", nDNum-1); SetCustomToken(20780, IntToString(nDNum-1)); ;break; break; } case 94: ReportImmunity(oTarget, oUser); break; case 95: DMFI_NextTarget(oTarget, oUser); break; case 99: SetLocalString(oUser, "EffectSetting", "SaveEffectAmount"); CreateSetting(oUser); break; case 101: eT = EffectSavingThrowDecrease(SAVING_THROW_FORT, nSaveAmount); break; case 102: eT = EffectSavingThrowDecrease(SAVING_THROW_REFLEX, nSaveAmount); break; case 103: eT = EffectSavingThrowDecrease(SAVING_THROW_WILL, nSaveAmount); break; case 104: eT = EffectSavingThrowIncrease(SAVING_THROW_FORT, nSaveAmount); break; case 105: eT = EffectSavingThrowIncrease(SAVING_THROW_REFLEX, nSaveAmount); break; case 106: eT = EffectSavingThrowIncrease(SAVING_THROW_WILL, nSaveAmount); break; case 107: eT = EffectSavingThrowDecrease(SAVING_THROW_ALL, nSaveAmount); break; case 108: eT = EffectSavingThrowIncrease(SAVING_THROW_ALL, nSaveAmount); break; case 109: SetLocalString(oUser, "EffectSetting", "SaveEffectAmount"); CreateSetting(oUser); case 100: eEffect = GetFirstEffect(oTarget); while (GetIsEffectValid(eEffect)) { if ((GetEffectType(eEffect) == EFFECT_TYPE_SAVING_THROW_INCREASE) ||(GetEffectType(eEffect) == EFFECT_TYPE_SAVING_THROW_DECREASE)) RemoveEffect(oTarget, eEffect); eEffect = GetNextEffect(oTarget); } break;//Added July 5, 2003 default: break; } //code down here to apply the effects an then go back and see if the //player successfully saved or did not for the diseases and poisons. if ((GetEffectType(eD)!= EFFECT_TYPE_INVALIDEFFECT) || (GetEffectType(eVis) != EFFECT_TYPE_INVALIDEFFECT)) { ApplyEffectToObject(DURATION_TYPE_PERMANENT, eD, oTarget); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eVis, oTarget); return; } if (GetEffectType(eA)!= EFFECT_TYPE_INVALIDEFFECT) { ApplyEffectToObject(DURATION_TYPE_PERMANENT, eA, oTarget); DelayCommand(5.0, CheckForEffect(eA, oTarget, oUser)); return; } if ((GetEffectType(eT)!= EFFECT_TYPE_INVALIDEFFECT) || (nBug ==1)) { ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eT, oTarget, fDuration); if ((GetEffectType(eT)==EFFECT_TYPE_SAVING_THROW_INCREASE) || (GetEffectType(eT)==EFFECT_TYPE_SAVING_THROW_DECREASE)) { DelayCommand(1.0, FloatingTextStringOnCreature("Target Saves: Fortitude " + IntToString(GetFortitudeSavingThrow(oTarget)) + " Reflex " + IntToString(GetReflexSavingThrow(oTarget)) + " Will " + IntToString(GetWillSavingThrow(oTarget)), oUser)); } return; } if (nBug == -1) { object oFollowMe = GetFirstFactionMember(oTarget, TRUE); if (!GetIsObjectValid(oFollowMe)) oFollowMe = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC, oTarget, 1,CREATURE_TYPE_IS_ALIVE, TRUE); if (GetIsDM(oFollowMe) || GetIsDMPossessed(oFollowMe)) oFollowMe = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC, oTarget, 2,CREATURE_TYPE_IS_ALIVE, TRUE); if (!GetIsObjectValid(oFollowMe)) oFollowMe = oUser; AssignCommand(oFollowMe, ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectCutsceneDominated(), oTarget)); ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectCutsceneGhost(), oTarget); ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY), oTarget); } return; }