PoA_PRC8/_module/nss/sd_reset_inc.nss

139 lines
3.5 KiB
Plaintext
Raw Permalink Normal View History

//////////////////////////////////////////////////////////
//::use: #include"sd_reset_inc"
//::
//::
//:: Slayers of Darkmoon
//:: Dungeon Resetting Toolkit
//::
//::
//:: Commche 2014
//::
const string COLORTOKEN = " ##################$%&'()*+,-./0123456789:;;==?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[[]^_`abcdefghijklmnopqrstuvwxyz{|}~~<7E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
string ColorString(string sText, int nRed=255, int nGreen=255, int nBlue=255)
{
return "<c" + GetSubString(COLORTOKEN, nRed, 1) + GetSubString(COLORTOKEN, nGreen, 1) + GetSubString(COLORTOKEN, nBlue, 1) + ">" + sText + "</c>";
}
int GetIsEmpty() // empty chest check routine
{
int iCount;
object oItem = GetFirstItemInInventory();
while (GetIsObjectValid(oItem))
{
++iCount;
oItem = GetNextItemInInventory();
}
if (iCount==0)return TRUE;
return FALSE;
}
void SD_PURGE(string sCont, int iName = 0)
{
int iCount;
object oItem;
object oArea = OBJECT_SELF;
object oCont = GetFirstObjectInArea(oArea);
while (GetIsObjectValid(oCont))
{
if (iName==1)
{
if (GetName(oCont)=="Remains")
{
oItem = GetFirstItemInInventory(oCont);
while (GetIsObjectValid(oItem))
{
DestroyObject(oItem);
oItem = GetNextItemInInventory(oCont);
}
DestroyObject(oCont);
}
oCont = GetNextObjectInArea(oArea);
}
else
{
if (GetTag(oCont)==sCont)
{
oItem = GetFirstItemInInventory(oCont);
while (GetIsObjectValid(oItem))
{
DestroyObject(oItem);
oItem = GetNextItemInInventory(oCont);
}
DestroyObject(oCont);
}
oCont = GetNextObjectInArea(oArea);
}
}
}
void SD_DESTROY(string sTag)
{
object oArea = OBJECT_SELF;
object oPlc = GetFirstObjectInArea(oArea);
while (GetIsObjectValid(oPlc))
{
if (GetTag(oPlc)==sTag)
{
DestroyObject(oPlc);
}
oPlc =GetNextObjectInArea(oArea);
}
}
void SD_CLEAN(object oPC)
{
object oItem;
object oArea = OBJECT_SELF;
object oCont = GetFirstObjectInArea(oArea);
while (GetIsObjectValid(oCont))
{
if (GetObjectType(oCont)==OBJECT_TYPE_CREATURE)
{
if (GetIsEnemy(oCont, oPC))
{
AssignCommand(oCont, SetIsDestroyable(TRUE));
DestroyObject(oCont);
}
}
if (GetTag(oCont)=="Bloodstain")DestroyObject(oCont);
oCont = GetNextObjectInArea(oArea);
}
}
void AREA_CLEAR(object oPC)
{
effect eDeath = EffectDeath(TRUE);
object oMob, oArea, oTrig;
oArea = GetArea(OBJECT_SELF);
oMob = GetFirstObjectInArea(oArea);
while (GetIsObjectValid(oMob))
{
if (GetObjectType(oMob)== OBJECT_TYPE_CREATURE)
{
if (GetIsEnemy(oMob, oPC) && GetIsDead(oMob)==FALSE)
{
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oMob);
AssignCommand(oMob, SetIsDestroyable(TRUE));
DestroyObject(oMob, 60.0);
}
}
oMob = GetNextObjectInArea(oArea);
}
SD_PURGE("rr_sack");
SD_CLEAN(oPC);
}
//void main() {}