SKELIES!!

This commit is contained in:
Jaysyn904 2023-10-26 22:05:43 -04:00
parent aba81d8b83
commit b236c6d871
3 changed files with 120 additions and 2 deletions

Binary file not shown.

Binary file not shown.

View File

@ -6,7 +6,125 @@
*/
//:://////////////////////////////////////////////////
#include "NW_I0_GENERIC"
#include "nw_i0_plot"
#include "rd_level"
#include "inc_sqlite_time"
void ReallyEquipItemInSlot(object oNPC, object oItem, int nSlot);
void main()
{
ExecuteScript("prc_npc_spawn", OBJECT_SELF);
}
//:: Initialize Major Variables
effect eVFX;
int nTotalPCs;
int nTotalPCLevel;
int nAveragePCLevel;
string sCurrentDate = SQLite_GetSystemDate();
string sMonthDay = GetSubString(sCurrentDate, 0, 5);
object oArea = GetArea(OBJECT_SELF);
object oSkelly;
object oPC = GetFirstObjectInArea(oArea);
ExecuteScript("prc_npc_spawn", OBJECT_SELF);
//: Don't spawn skeletons from skeletons
if (GetResRef(OBJECT_SELF) == "nw_skeleton")
return;
//:: Get average PC level for area
//:: Cycle through PCs in Area
while (oPC != OBJECT_INVALID)
{
if (GetIsPC(oPC) == TRUE)
{
nTotalPCs++;
nTotalPCLevel = nTotalPCLevel + GetHitDice(oPC);
}
oPC = GetNextObjectInArea(oArea);
}
if (nTotalPCs > 0)
{
nAveragePCLevel = nTotalPCLevel / nTotalPCs;
}
else
{
nAveragePCLevel = 3;
}
//:: Only active during Halloween week.
if ((sMonthDay == "10/24") ||
(sMonthDay == "10/25") ||
(sMonthDay == "10/26") ||
(sMonthDay == "10/27") ||
(sMonthDay == "10/28") ||
(sMonthDay == "10/29") ||
(sMonthDay == "10/30") ||
(sMonthDay == "10/31") ||
(sMonthDay == "11/01"))
{
//:: 50% chance to spawn
if ( Random(100) < 50 )
{
//:: Spawn Skeleton.
eVFX = EffectVisualEffect(VFX_IMP_EVIL_HELP);
oSkelly = CreateObject(OBJECT_TYPE_CREATURE, "nw_skeleton", GetLocation(OBJECT_SELF));
LevelMob(oSkelly, nAveragePCLevel);
//:: Assign Weapon
int nResult = d6(1);
int nStackSize = 1; // Create 1 items;
string sItem;
if (nResult == 1)
{
sItem = "nw_wplhb001"; //:: Halberd
}
else if(nResult == 2)
{
sItem = "nw_wplsc001"; //:: Scythe
}
else if(nResult == 3)
{
sItem = "nw_wplss001"; //:: Spear
}
else if(nResult ==4)
{
sItem = "nw_wblfh001"; //:: Heavy Flail
}
else if(nResult == 5)
{
sItem = "nw_wswgs001"; //:: Greatsword
}
else
sItem = "nw_waxgr001"; //:: Greataxe
object oWeapon = CreateItemOnObject(sItem, oSkelly, nStackSize);
ReallyEquipItemInSlot(oSkelly, oWeapon, INVENTORY_SLOT_RIGHTHAND);
//:: Apply VFX & Attack
AssignCommand(oSkelly, DetermineCombatRound(OBJECT_SELF));
DelayCommand(0.3, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVFX, oSkelly));
}
}
}
void ReallyEquipItemInSlot(object oNPC, object oItem, int nSlot)
{
if (GetItemInSlot(nSlot) != oItem)
{
ClearAllActions();
ActionEquipItem(oItem, nSlot);
DelayCommand(1.0, ReallyEquipItemInSlot(oNPC, oItem, nSlot));
}
}