WoR_PRC8/_module/nss/drow_sorcere_dum.nss

76 lines
2.9 KiB
Plaintext
Raw Permalink Normal View History

2025-04-03 11:49:34 -04:00
// Made to detect whether a PC nearby has cast Divine Favor, Resistance and Light.
/************************ [On Spell Cast At] ***********************************
Filename: j_ai_onspellcast or nw_c2_defaultb
************************* [On Spell Cast At] ***********************************
************************* [On Spell Cast At] **********************************/
void main()
{
object oCaster = GetLastSpellCaster();
int iHarmful = GetLastSpellHarmful();
int iSpellCast = GetLastSpell();
object oAttackerOfCaster;
object oMaster = GetNearestObjectByTag("SHA_SORCERE_MASTER");
if(GetLocalInt(oCaster, "PROVE_CASTING")== TRUE)
{
if(iSpellCast == SPELL_MELFS_ACID_ARROW)
{
if(GetLocalInt(oCaster, "PROVED_MELFS_ACID_ARROW"))
{
AssignCommand(oMaster, SpeakString("Fool you have already showed me your mastery of that spell!"));
}
else
{
AssignCommand(oMaster, SpeakString("Hmm... not too bad..."));
SetLocalInt(oCaster, "PROVED_MELFS_ACID_ARROW", TRUE);
}
}
if(iSpellCast == SPELL_MAGIC_MISSILE)
{
if(GetLocalInt(oCaster, "PROVED_MAGIC_MISSILE"))
{
AssignCommand(oMaster, SpeakString("How many times are you going to cast the same spell over and over again....?"));
}
else
{
AssignCommand(oMaster, SpeakString("So you have successfully executed the maneuvers for Magic missiles..."));
SetLocalInt(oCaster, "PROVED_MAGIC_MISSILE", TRUE);
}
}
if(iSpellCast == SPELL_ELECTRIC_JOLT)
{
if(GetLocalInt(oCaster, "PROVED_DAZE"))
{
AssignCommand(oMaster, SpeakString("Foolish drow! What do you hope to do by repeatedly shocking a dummy?!"));
}
else
{
AssignCommand(oMaster, SpeakString("Potent jolt!"));
SetLocalInt(oCaster, "PROVED_DAZE", TRUE);
}
}
if(iSpellCast == SPELL_LIGHT)
{
if(GetLocalInt(oCaster, "PROVED_LIGHT"))
{
AssignCommand(oMaster, SpeakString("Foolish drow! What do you hope to do by lighting up the school of Lolth?!"));
}
else
{
AssignCommand(oMaster, SpeakString("Hmm... that is bright!"));
SetLocalInt(oCaster, "PROVED_LIGHT", TRUE);
}
}
if(GetLocalInt(oCaster, "PROVED_LIGHT") && GetLocalInt(oCaster, "PROVED_DAZE") && GetLocalInt(oCaster, "PROVED_MAGIC_MISSILE") && GetLocalInt(oCaster, "PROVED_MELFS_ACID_ARROW"))
{
SetLocalInt(oCaster, "PASSED_MAGIC_TEST", TRUE);
DelayCommand(2.0, AssignCommand(oMaster, SpeakString("Enough! Come speak to me!")));
}
}
}