Aschbourne_PRC8/_module/nss/werewolf_cure.nss
Jaysyn904 5d27edafba Major update
Fixed CCOH, Fixed starting GP, Fixed DMFI languages, Fix cep weapon appearances, Fixed new player start up system.  Added PC deleter.  Added ACP 4.1.  Full compile.  Updated release archive.
2024-09-16 23:40:48 -04:00

153 lines
4.7 KiB
Plaintext

#include "prc_inc_spells"
void werewolf()
{
object oTarget = PRCGetSpellTargetObject();
object oCaster = OBJECT_SELF;
//SendMessageToPC(oTarget,"DEBUG: Cure Script fired.");
int iWolfDays = GetLocalInt(oTarget,"WOLF_PERM");
int iYesWolf = GetLocalInt(oTarget,"AFF_WEREWOLF");
int iCureSpell = PRCGetSpellId();
int iCasterLevel = GetLevelByClass(CLASS_TYPE_CLERIC,oCaster);
if((iCureSpell == SPELL_HEAL) && (!(iWolfDays)) && (iCasterLevel >= 12))
{
if(iYesWolf)
{
object oTool = GetFirstItemInInventory(oTarget);
object oWolfTool = GetFirstItemInInventory(oTarget);
string sTool = ("controlshapetool");
string sWolfTool = ("wolfformtool");
while(GetIsObjectValid(oTool))
{
string sDestroy=GetTag(oTool);
if(sDestroy==sTool)
{
DestroyObject(oTool);
}
oTool = GetNextItemInInventory(oTarget);
}
while(GetIsObjectValid(oWolfTool))
{
string sDestroy=GetTag(oWolfTool);
if(sDestroy==sWolfTool)
{
DestroyObject(oWolfTool);
}
oWolfTool = GetNextItemInInventory(oTarget);
}
SendMessageToPC(oTarget,"You feel refreshed; the curse was lifted.");
SetCampaignInt("WWData", "AFF_WEREWOLF",0, oTarget);
SetLocalInt(oTarget, "AFF_WEREWOLF",0);
}
}
if((iCureSpell == SPELL_MASS_HEAL) && (!(iWolfDays)) && (iCasterLevel >= 12))
{
if(iYesWolf)
{
object oTool = GetFirstItemInInventory(oTarget);
object oWolfTool = GetFirstItemInInventory(oTarget);
string sTool = ("controlshapetool");
string sWolfTool = ("wolfformtool");
while(GetIsObjectValid(oTool))
{
string sDestroy=GetTag(oTool);
if(sDestroy==sTool)
{
DestroyObject(oTool);
}
oTool = GetNextItemInInventory(oTarget);
}
while(GetIsObjectValid(oWolfTool))
{
string sDestroy=GetTag(oWolfTool);
if(sDestroy==sWolfTool)
{
DestroyObject(oWolfTool);
}
oWolfTool = GetNextItemInInventory(oTarget);
}
SendMessageToPC(oTarget,"You feel refreshed; the curse was lifted.");
SetCampaignInt("WWData", "AFF_WEREWOLF",0, oTarget);
SetLocalInt(oTarget, "AFF_WEREWOLF",0);
}
}
if((iCureSpell == SPELL_REMOVE_DISEASE) && (!(iWolfDays)) && (iCasterLevel >= 12) && (iYesWolf))
{
if(iYesWolf)
{
object oTool = GetFirstItemInInventory(oTarget);
object oWolfTool = GetFirstItemInInventory(oTarget);
string sTool = ("controlshapetool");
string sWolfTool = ("wolfformtool");
while(GetIsObjectValid(oTool))
{
string sDestroy=GetTag(oTool);
if(sDestroy==sTool)
{
DestroyObject(oTool);
}
oTool = GetNextItemInInventory(oTarget);
}
while(GetIsObjectValid(oWolfTool))
{
string sDestroy=GetTag(oWolfTool);
if(sDestroy==sWolfTool)
{
DestroyObject(oWolfTool);
}
oWolfTool = GetNextItemInInventory(oTarget);
}
SendMessageToPC(oTarget,"You feel refreshed; the curse was lifted.");
SetCampaignInt("WWData", "AFF_WEREWOLF",0, oTarget);
SetLocalInt(oTarget, "AFF_WEREWOLF",0);
}
}
object oMod = GetModule();
int iFullMoon1 = GetLocalInt(oMod,"FullMoon1");
int iFullMoon2 = GetLocalInt(oMod,"FullMoon2");
int iFullMoon3 = GetLocalInt(oMod,"FullMoon3");
int iCurrentDay = GetCalendarDay();
if((iCureSpell == SPELL_REMOVE_CURSE) && ((iCurrentDay == iFullMoon1) || (iCurrentDay == iFullMoon2) || (iCurrentDay == iFullMoon3)))
{
int iWillSave = WillSave(oTarget,20);
if((iWillSave)&& (iYesWolf))
{
object oTool = GetFirstItemInInventory(oTarget);
object oWolfTool = GetFirstItemInInventory(oTarget);
string sTool = ("controlshapetool");
string sWolfTool = ("wolfformtool");
while(GetIsObjectValid(oTool))
{
string sDestroy=GetTag(oTool);
if(sDestroy==sTool)
{
DestroyObject(oTool);
}
oTool = GetNextItemInInventory(oTarget);
}
while(GetIsObjectValid(oWolfTool))
{
string sDestroy=GetTag(oWolfTool);
if(sDestroy==sWolfTool)
{
DestroyObject(oWolfTool);
}
oWolfTool = GetNextItemInInventory(oTarget);
}
SendMessageToPC(oTarget,"You feel refreshed; the curse was lifted.");
SetCampaignInt("WWData", "AFF_WEREWOLF",0, oTarget);
SetLocalInt(oTarget, "AFF_WEREWOLF",0);
}
}
}