360 lines
11 KiB
Plaintext
360 lines
11 KiB
Plaintext
//Script Name: exc_speedcast
|
|
//////////////////////////////////////////
|
|
// Created By: Genisys (Guile)
|
|
// Created On: 8/13/08
|
|
// Updated On: 4/05/09
|
|
/////////////////////////////////////////
|
|
/*
|
|
This script must be executed from another
|
|
script, utilizing the ExecuteScript("exc_speedcast", oPC);
|
|
function, basically this script will,
|
|
if PC is a spell caster, they
|
|
will cast all of their buffs instantly, if
|
|
they have the spells to cast.
|
|
|
|
*/
|
|
////////////////////////////////////////
|
|
#include "prc_class_const"
|
|
|
|
/////////////////////////////////////////////////////////////////////////
|
|
|
|
//PROTOTYPE DEFINED
|
|
int GetHasBetter(object oTarget, int nInt)
|
|
{
|
|
int b = 0;
|
|
|
|
//If the current spell (which might be cast) is the lesser,
|
|
//then lets see if they have a great version!
|
|
|
|
if(nInt ==10) //Bulls' Strength
|
|
{
|
|
if(GetHasSpell(SPELL_GREATER_BULLS_STRENGTH, oTarget))
|
|
b = 1;
|
|
}
|
|
|
|
else if(nInt == 12) //Cat Grace
|
|
{
|
|
//Improved Invisibility has 50% concealment!
|
|
if(GetHasSpell(SPELL_GREATER_CATS_GRACE, oTarget))
|
|
b = 1;
|
|
}
|
|
|
|
else if(nInt == 19) //Displacement
|
|
{
|
|
//Improved Invisibility has 50% concealment!
|
|
if(GetHasSpell(SPELL_IMPROVED_INVISIBILITY, oTarget))
|
|
b = 1;
|
|
}
|
|
|
|
else if(nInt == 22) //Eagle's Splender
|
|
{
|
|
//Improved Invisibility has 50% concealment!
|
|
if(GetHasSpell(SPELL_GREATER_EAGLE_SPLENDOR, oTarget))
|
|
b = 1;
|
|
}
|
|
|
|
else if(nInt == 24) //Endurance
|
|
{
|
|
//Improved Invisibility has 50% concealment!
|
|
if(GetHasSpell(SPELL_GREATER_ENDURANCE, oTarget))
|
|
b = 1;
|
|
}
|
|
|
|
else if(nInt ==27) //SPELL_EXPEDITIOUS_RETREAT
|
|
{
|
|
if(GetHasSpell(SPELL_HASTE, oTarget))
|
|
b = 1;
|
|
}
|
|
else if(nInt ==30) //SPELL_EXPEDITIOUS_RETREAT
|
|
{
|
|
if(GetHasSpell(SPELL_HASTE, oTarget))
|
|
b = 1;
|
|
}
|
|
|
|
else if(nInt == 32) //Fox Cunning
|
|
{
|
|
//Improved Invisibility has 50% concealment!
|
|
if(GetHasSpell(SPELL_GREATER_FOXS_CUNNING, oTarget))
|
|
b = 1;
|
|
}
|
|
|
|
else if(nInt ==45)//SPELL_GREATER_STONESKIN
|
|
{
|
|
if(GetHasSpell(SPELL_PREMONITION, oTarget))
|
|
b = 1;
|
|
}
|
|
|
|
else if(nInt ==46) //SPELL_HASTE
|
|
{
|
|
if(GetHasSpell(SPELL_MASS_HASTE, oTarget))
|
|
b = 1;
|
|
}
|
|
|
|
else if(nInt ==50)//SPELL_INVISIBILITY
|
|
{
|
|
if(GetHasSpell(SPELL_IMPROVED_INVISIBILITY, oTarget) ||
|
|
GetHasSpell(SPELL_INVISIBILITY_SPHERE, oTarget))
|
|
b = 1;
|
|
}
|
|
|
|
else if(nInt ==51)//SPELL_INVISIBILITY_SPHERE
|
|
{
|
|
if(GetHasSpell(SPELL_IMPROVED_INVISIBILITY, oTarget))
|
|
b = 1;
|
|
}
|
|
|
|
else if(nInt ==53)//SPELL_LESSER_MIND_BLANK
|
|
{
|
|
if(GetHasSpell(SPELL_MIND_BLANK, oTarget))
|
|
b = 1;
|
|
}
|
|
|
|
else if(nInt ==54)//SPELL_LESSER_SPELL_MANTLE
|
|
{
|
|
if(GetHasSpell(SPELL_SPELL_MANTLE, oTarget) ||
|
|
GetHasSpell(SPELL_GREATER_SPELL_MANTLE, oTarget))
|
|
b = 1;
|
|
}
|
|
|
|
else if(nInt ==60)//SPELL_MAGIC_WEAPON
|
|
{
|
|
if(GetHasSpell(SPELL_GREATER_MAGIC_WEAPON, oTarget))
|
|
b = 1;
|
|
}
|
|
|
|
else if(nInt ==65)//SPELL_MINOR_GLOBE_OF_INVULNERABILITY
|
|
{
|
|
if(GetHasSpell(SPELL_GLOBE_OF_INVULNERABILITY, oTarget))
|
|
b = 1;
|
|
}
|
|
|
|
else if(nInt == 69) //Owl's Wisdom
|
|
{
|
|
//Improved Invisibility has 50% concealment!
|
|
if(GetHasSpell(SPELL_GREATER_OWLS_WISDOM, oTarget))
|
|
b = 1;
|
|
}
|
|
|
|
else if(nInt ==81)//SPELL_SEE_INVISIBILITY
|
|
{
|
|
if(GetHasSpell(SPELL_TRUE_SEEING, oTarget))
|
|
b = 1;
|
|
}
|
|
|
|
else if(nInt ==87)//SPELL_SPELL_MANTLE
|
|
{
|
|
if(GetHasSpell(SPELL_GREATER_SPELL_MANTLE, oTarget))
|
|
b = 1;
|
|
}
|
|
|
|
else if(nInt ==90)//SPELL_STONESKIN
|
|
{
|
|
if(GetHasSpell(SPELL_GREATER_STONESKIN, oTarget) ||
|
|
GetHasSpell(SPELL_PREMONITION, oTarget))
|
|
b = 1;
|
|
}
|
|
//Otherwise, if it's not a spell in one of these categories
|
|
//Tell the script to have the player cast the spell...
|
|
else
|
|
{
|
|
b = 2;
|
|
}
|
|
|
|
return b;
|
|
|
|
/*
|
|
//If they have a better spell don't allow them to cast this spell
|
|
if(b==1)
|
|
{ return 1;}
|
|
|
|
//Otherwise allow them to cast the spell..
|
|
else
|
|
{ return 2;}
|
|
*/
|
|
|
|
//PROTOTYPE END
|
|
}
|
|
|
|
void CastSpell(int nSpell, int i, object oPC)
|
|
{
|
|
//If they have the spell memorized make them cast quickly!
|
|
if(GetHasSpell(nSpell, oPC)>0)
|
|
{
|
|
int nGs = GetHasBetter(oPC, i);
|
|
//If the user doesn't have a better spell memorized...
|
|
if(nGs==2)
|
|
{
|
|
AssignCommand(oPC, ActionCastSpellAtObject
|
|
(nSpell, oPC
|
|
, METAMAGIC_ANY
|
|
, FALSE
|
|
, 0
|
|
, PROJECTILE_PATH_TYPE_DEFAULT
|
|
, TRUE));
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void Buff()
|
|
{
|
|
object oPC;
|
|
int nSpellId;
|
|
int nSpell;
|
|
int i;
|
|
int nGs;
|
|
|
|
oPC = OBJECT_SELF;
|
|
|
|
//They must be a caster to use the item!
|
|
if ((GetLevelByClass(CLASS_TYPE_BARD, oPC)>0)||
|
|
(GetLevelByClass(CLASS_TYPE_CLERIC, oPC)>0)||
|
|
(GetLevelByClass(CLASS_TYPE_DRUID, oPC)>0)||
|
|
(GetLevelByClass(CLASS_TYPE_PALADIN, oPC)>0)||
|
|
(GetLevelByClass(CLASS_TYPE_RANGER, oPC)>0)||
|
|
(GetLevelByClass(CLASS_TYPE_SORCERER, oPC)>0)||
|
|
(GetLevelByClass(CLASS_TYPE_BLACKGUARD, oPC)>0)||
|
|
(GetLevelByClass(CLASS_TYPE_OCULAR, oPC)>0)||
|
|
(GetLevelByClass(CLASS_TYPE_HEALER, oPC)>0)||
|
|
(GetLevelByClass(CLASS_TYPE_CULTIST_SHATTERED_PEAK, oPC)>0)||
|
|
(GetLevelByClass(CLASS_TYPE_KNIGHT_CHALICE, oPC)>0)||
|
|
(GetLevelByClass(CLASS_TYPE_VIGILANT, oPC)>0)||
|
|
(GetLevelByClass(CLASS_TYPE_VASSAL, oPC)>0)||
|
|
(GetLevelByClass(CLASS_TYPE_SOLDIER_OF_LIGHT, oPC)>0)||
|
|
(GetLevelByClass(CLASS_TYPE_KNIGHT_MIDDLECIRCLE, oPC)>0)||
|
|
(GetLevelByClass(CLASS_TYPE_ARCHIVIST, oPC)>0)||
|
|
(GetLevelByClass(CLASS_TYPE_SHAMAN, oPC)>0)||
|
|
(GetLevelByClass(CLASS_TYPE_SOHEI, oPC)>0)||
|
|
(GetLevelByClass(CLASS_TYPE_SHADOWLORD, oPC)>0)||
|
|
(GetLevelByClass(CLASS_TYPE_SLAYER_OF_DOMIEL, oPC)>0)||
|
|
(GetLevelByClass(CLASS_TYPE_NENTYAR_HUNTER, oPC)>0)||
|
|
(GetLevelByClass(CLASS_TYPE_BLIGHTER, oPC)>0)||
|
|
(GetLevelByClass(CLASS_TYPE_WIZARD, oPC)>0))
|
|
{
|
|
// for(i = 0; i<87; i++)
|
|
{
|
|
//This tells us which spell we are looking at..
|
|
//We look at each one in turn, and IF the caster can cast it
|
|
//then we assign them a command to cast it at thier level..
|
|
// switch (i)
|
|
{
|
|
CastSpell(SPELL_AID, 1, oPC);
|
|
CastSpell(SPELL_AMPLIFY, 2, oPC);
|
|
CastSpell(SPELL_AURA_OF_VITALITY, 3, oPC);
|
|
CastSpell(SPELL_AURAOFGLORY, 4, oPC);
|
|
CastSpell(SPELL_BARKSKIN, 5, oPC);
|
|
CastSpell(SPELL_BATTLETIDE, 6, oPC);
|
|
CastSpell(SPELL_BLESS, 7, oPC);
|
|
CastSpell(SPELL_BLESS_WEAPON, 8, oPC);
|
|
CastSpell(SPELL_BLOOD_FRENZY, 9, oPC);
|
|
CastSpell(SPELL_BULLS_STRENGTH, 10, oPC);
|
|
CastSpell(SPELL_CAMOFLAGE, 11, oPC);
|
|
CastSpell(SPELL_CATS_GRACE, 12, oPC);
|
|
CastSpell(SPELL_CLAIRAUDIENCE_AND_CLAIRVOYANCE, 13, oPC);
|
|
CastSpell(SPELL_CLARITY, 14, oPC);
|
|
CastSpell(SPELL_DARKFIRE, 15, oPC);
|
|
CastSpell(SPELL_DARKVISION, 16, oPC);
|
|
CastSpell(SPELL_DEATH_ARMOR, 17, oPC);
|
|
CastSpell(SPELL_DEATH_WARD, 18, oPC);
|
|
CastSpell(SPELL_DISPLACEMENT, 19, oPC);
|
|
CastSpell(SPELL_DIVINE_FAVOR, 20, oPC);
|
|
CastSpell(SPELL_DIVINE_POWER, 21, oPC);
|
|
CastSpell(SPELL_EAGLE_SPLEDOR, 22, oPC);
|
|
CastSpell(SPELL_ELEMENTAL_SHIELD, 23, oPC);
|
|
CastSpell(SPELL_ENDURANCE, 24, oPC);
|
|
CastSpell(SPELL_ENDURE_ELEMENTS, 25, oPC);
|
|
CastSpell(SPELL_ENERGY_BUFFER, 26, oPC);
|
|
CastSpell(SPELL_ENTROPIC_SHIELD, 27, oPC);
|
|
CastSpell(SPELL_ETHEREAL_VISAGE, 28, oPC);
|
|
CastSpell(SPELL_ETHEREALNESS, 29, oPC);
|
|
CastSpell(SPELL_EXPEDITIOUS_RETREAT, 30, oPC);
|
|
CastSpell(SPELL_FLAME_WEAPON, 31, oPC);
|
|
CastSpell(SPELL_FOXS_CUNNING, 32, oPC);
|
|
CastSpell(SPELL_FREEDOM_OF_MOVEMENT, 33, oPC);
|
|
CastSpell(SPELL_GHOSTLY_VISAGE, 34, oPC);
|
|
CastSpell(SPELL_GLOBE_OF_INVULNERABILITY, 35, oPC);
|
|
CastSpell(SPELL_GREATER_BULLS_STRENGTH, 36, oPC);
|
|
CastSpell(SPELL_GREATER_CATS_GRACE, 37, oPC);
|
|
CastSpell(SPELL_GREATER_DISPELLING, 38, oPC);
|
|
CastSpell(SPELL_GREATER_EAGLE_SPLENDOR, 39, oPC);
|
|
CastSpell(SPELL_GREATER_ENDURANCE, 40, oPC);
|
|
CastSpell(SPELL_GREATER_FOXS_CUNNING, 41, oPC);
|
|
CastSpell(SPELL_GREATER_MAGIC_WEAPON, 42, oPC);
|
|
CastSpell(SPELL_GREATER_OWLS_WISDOM, 43, oPC);
|
|
CastSpell(SPELL_GREATER_SPELL_MANTLE, 44, oPC);
|
|
CastSpell(SPELL_GREATER_STONESKIN, 45, oPC);
|
|
CastSpell(SPELL_HASTE, 46, oPC);
|
|
CastSpell(SPELL_HOLY_AURA, 47, oPC);
|
|
CastSpell(SPELL_HOLY_SWORD, 48, oPC);
|
|
CastSpell(SPELL_IMPROVED_INVISIBILITY, 49, oPC);
|
|
CastSpell(SPELL_INVISIBILITY, 50, oPC);
|
|
CastSpell(SPELL_INVISIBILITY_SPHERE, 51, oPC);
|
|
CastSpell(SPELL_KEEN_EDGE, 52, oPC);
|
|
CastSpell(SPELL_LESSER_MIND_BLANK, 53, oPC);
|
|
CastSpell(SPELL_LESSER_SPELL_MANTLE, 54, oPC);
|
|
CastSpell(SPELL_LIGHT, 55, oPC);
|
|
CastSpell(SPELL_MAGE_ARMOR, 56, oPC);
|
|
CastSpell(SPELL_MAGIC_CIRCLE_AGAINST_CHAOS, 57, oPC);
|
|
CastSpell(SPELL_MAGIC_CIRCLE_AGAINST_EVIL, 58, oPC);
|
|
CastSpell(SPELL_MAGIC_VESTMENT, 59, oPC);
|
|
CastSpell(SPELL_MAGIC_WEAPON, 60, oPC);
|
|
CastSpell(SPELL_MASS_CAMOFLAGE, 61, oPC);
|
|
CastSpell(SPELL_MASS_HASTE, 62, oPC);
|
|
CastSpell(SPELL_MESTILS_ACID_SHEATH, 63, oPC);
|
|
CastSpell(SPELL_MIND_BLANK, 64, oPC);
|
|
CastSpell(SPELL_MINOR_GLOBE_OF_INVULNERABILITY, 65, oPC);
|
|
CastSpell(SPELL_NEGATIVE_ENERGY_PROTECTION, 66, oPC);
|
|
CastSpell(SPELL_ONE_WITH_THE_LAND, 67, oPC);
|
|
CastSpell(SPELL_OWLS_INSIGHT, 68, oPC);
|
|
CastSpell(SPELL_OWLS_WISDOM, 69, oPC);
|
|
CastSpell(SPELL_PRAYER, 70, oPC);
|
|
CastSpell(SPELL_PREMONITION, 71, oPC);
|
|
CastSpell(SPELL_PROTECTION__FROM_CHAOS, 72, oPC);
|
|
CastSpell(SPELL_PROTECTION_FROM_ELEMENTS, 73, oPC);
|
|
CastSpell(SPELL_PROTECTION_FROM_EVIL, 74, oPC);
|
|
CastSpell(SPELL_PROTECTION_FROM_SPELLS, 75, oPC);
|
|
CastSpell(SPELL_REGENERATE, 76, oPC);
|
|
CastSpell(SPELL_RESIST_ELEMENTS, 77, oPC);
|
|
CastSpell(SPELL_RESISTANCE, 78, oPC);
|
|
CastSpell(SPELL_SEE_INVISIBILITY, 79, oPC);
|
|
CastSpell(SPELL_SHADES_STONESKIN, 80, oPC);
|
|
CastSpell(SPELL_SHADOW_CONJURATION_INIVSIBILITY, 81, oPC);
|
|
CastSpell(SPELL_SHADOW_CONJURATION_MAGE_ARMOR, 82, oPC);
|
|
CastSpell(SPELL_SHADOW_SHIELD, 83, oPC);
|
|
CastSpell(SPELL_SHIELD, 84, oPC);
|
|
CastSpell(SPELL_SHIELD_OF_FAITH, 85, oPC);
|
|
CastSpell(SPELL_SHIELD_OF_LAW, 86, oPC);
|
|
CastSpell(SPELL_SPELL_MANTLE, 87, oPC);
|
|
CastSpell(SPELL_SPELL_RESISTANCE, 88, oPC);
|
|
CastSpell(SPELL_SPELLSTAFF, 89, oPC);
|
|
CastSpell(SPELL_STONESKIN, 90, oPC);
|
|
CastSpell(SPELL_TRUE_SEEING, 91, oPC);
|
|
CastSpell(SPELL_TRUE_STRIKE, 92, oPC);
|
|
CastSpell(SPELL_UNHOLY_AURA, 93, oPC);
|
|
CastSpell(SPELL_VINE_MINE_CAMOUFLAGE, 94, oPC);
|
|
CastSpell(SPELL_VIRTUE, 95, oPC);
|
|
CastSpell(SPELL_WOUNDING_WHISPERS, 96, oPC);
|
|
|
|
|
|
}
|
|
}
|
|
}
|
|
//Otherwise Tell the PC why they can't use the item..
|
|
else
|
|
{
|
|
FloatingTextStringOnCreature("You must be a Spell Caster to use this option!", oPC, FALSE);
|
|
}
|
|
}
|
|
|
|
//Main Script
|
|
void main()
|
|
{
|
|
|
|
Buff();
|
|
|
|
}
|
|
|
|
/////////////THE END, WOOHOO!!!///////////
|
|
|