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.
84 lines
3.5 KiB
Plaintext
84 lines
3.5 KiB
Plaintext
/*
|
||
1/03/21 by Stratovarius
|
||
|
||
Haagenti, Mother of Minotaurs
|
||
|
||
Haagenti tricked the god of frost giants and paid a terrible price for that deed. She girds her summoners for battle and gives them the power to confuse foes.
|
||
|
||
Granted Abilities:
|
||
Haagenti grants you some of Thrym’s skill with arms and armor, plus her own aversion to transformation and the ability to inflict a state of confusion upon others.
|
||
|
||
Confusing Touch: You can confuse by touch. The target of your touch attack must succeed on a Will save or become confused for 1 round per three effective binder
|
||
levels you possess. When you attain an effective binder level of 19th, this ability functions as a maze spell. Once you have used this ability,
|
||
you cannot do so again for 5 rounds.
|
||
*/
|
||
|
||
#include "bnd_inc_bndfunc"
|
||
#include "prc_inc_sp_tch"
|
||
#include "spinc_maze"
|
||
|
||
void main()
|
||
{
|
||
object oBinder = OBJECT_SELF;
|
||
object oTarget = PRCGetSpellTargetObject();
|
||
int nBinderLevel = GetBinderLevel(oBinder, VESTIGE_HAAGENTI);
|
||
int nDC = GetBinderDC(oBinder, VESTIGE_HAAGENTI);
|
||
if(!BindAbilCooldown(oBinder, GetSpellId(), VESTIGE_HAAGENTI)) return;
|
||
int nAttack = PRCDoMeleeTouchAttack(oTarget);;
|
||
|
||
// PvP check.
|
||
if(spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, oBinder))
|
||
{
|
||
if (nAttack > 0)
|
||
{
|
||
if(nBinderLevel >= 19)
|
||
{
|
||
// Get the maze area
|
||
object oMazeArea = GetObjectByTag("prc_maze_01");
|
||
|
||
if(DEBUG && !GetIsObjectValid(oMazeArea))
|
||
DoDebug("Maze: ERROR: Cannot find maze area!", oBinder);
|
||
|
||
// Determine which entry to use
|
||
int nMaxEntry = GetLocalInt(oMazeArea, "PRC_Maze_Entries_Count");
|
||
int nEntry = Random(nMaxEntry) + 1;
|
||
object oEntryWP = GetWaypointByTag("PRC_MAZE_ENTRY_WP_" + IntToString(nEntry));
|
||
location lTarget = GetLocation(oEntryWP);
|
||
|
||
// Validity check
|
||
if(DEBUG && !GetIsObjectValid(oEntryWP))
|
||
DoDebug("Maze: ERROR: Selected waypoint does not exist!");
|
||
|
||
// Make sure the target can be teleported
|
||
if(GetCanTeleport(oTarget, lTarget, TRUE))
|
||
{
|
||
// Store the target's current location for return
|
||
SetLocalLocation(oTarget, "PRC_Maze_Return_Location", GetLocation(oTarget));
|
||
|
||
// Jump the target to the maze - the maze's scripts will handle the rest
|
||
DelayCommand(1.5f, AssignCommand(oTarget, JumpToLocation(lTarget)));
|
||
|
||
// Clear the action queue, so there's less chance of getting to abuse the ghost effect
|
||
AssignCommand(oTarget, ClearAllActions());
|
||
|
||
// Make the character ghost for the duration of the maze. Apply here so the effect gets a spellID association
|
||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectCutsceneGhost(), oTarget, 600.0f);
|
||
|
||
// Apply some VFX
|
||
DoMazeVFX(GetLocation(oTarget));
|
||
}
|
||
else
|
||
SendMessageToPCByStrRef(oBinder, 16825702); // "The spell fails - the target cannot be teleported."
|
||
}
|
||
else
|
||
{
|
||
if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_NONE))
|
||
{
|
||
float fDur = RoundsToSeconds(nBinderLevel / 3);
|
||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, SupernaturalEffect(PRCEffectConfused()), oTarget, fDur);
|
||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, SupernaturalEffect(EffectVisualEffect(VFX_DUR_MIND_AFFECTING_NEGATIVE)), oTarget, fDur);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
} |