Added Skullkeep's dynamic loot generation system
Added Skullkeep's PRC8 compatible dynamic loot generation system. Full compile. Updated release archive.
This commit is contained in:
138
_module/nss/sd_reset_inc.nss
Normal file
138
_module/nss/sd_reset_inc.nss
Normal file
@@ -0,0 +1,138 @@
|
||||
//////////////////////////////////////////////////////////
|
||||
//::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() {}
|
Reference in New Issue
Block a user