378 lines
19 KiB
Plaintext
378 lines
19 KiB
Plaintext
#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;
|
|
}
|