EN4_PRC8/_module/nss/rd_door.nss
Jaysyn904 b464d8da05 Initial Commit
Initial Commit [v1.32PRC8]
2025-04-03 13:38:45 -04:00

141 lines
4.5 KiB
Plaintext

#include "rd_spawnmobs"
void HouseLevelUp(object oCreature, int iLevel);
void main()
{
object oSpawnPoint;
object oCreature;
location lLoc;
string sWPTag;
string sTreasureTag;
string sHouseTag;
int iLock;
int iMod;
int iRandom;
int iLevel;
int iHouse;
string sHouse;
if (GetLocalInt(OBJECT_SELF,"EN4Entered") == 0)
{
DelayCommand(10.0f,SetLocalInt(OBJECT_SELF,"EN4Used",1));
SetLocalInt(OBJECT_SELF,"EN4Entered",1);
iHouse = Random(3)+1;
if (iHouse == 1 && GetLocalInt(GetModule(),"House1InUse") == 1)
iHouse = 2;
if (iHouse == 2 && GetLocalInt(GetModule(),"House2InUse") == 1)
iHouse = 3;
if (iHouse == 3 && GetLocalInt(GetModule(),"House3InUse") == 1)
iHouse = 3;
sHouse = "House" + IntToString(iHouse);
if (iHouse == 1)
SetLocalInt(GetModule(),"House1InUse",1);
if (iHouse == 2)
SetLocalInt(GetModule(),"House2InUse",1);
if (iHouse == 3)
SetLocalInt(GetModule(),"House3InUse",1);
sTreasureTag = sHouse + "_Treasure" + IntToString(Random(2)+1);
SetLocalInt(GetObjectByTag(sHouse + "_Treasure1"),"Treasure",0);
SetLocalInt(GetObjectByTag(sHouse + "_Treasure2"),"Treasure",0);
SetLocalInt(GetObjectByTag(sHouse + "_Treasure1"),"TreasureMod",0);
SetLocalInt(GetObjectByTag(sHouse + "_Treasure2"),"TreasureMod",0);
SetLocalInt(GetObjectByTag(sTreasureTag),"Treasure",1);
iLock=GetLockUnlockDC(OBJECT_SELF);
iMod = 0;
if (iLock > 20 && iLock < 31)
iMod = 1;
else if (iLock >30 && iLock < 35)
iMod = 2;
else if (iLock < 40)
iMod = 4;
else
iMod = 6;
SetLocalInt(GetObjectByTag(sTreasureTag),"TreasureMod",iMod);
sWPTag = sHouse + "_WP" + IntToString(Random(4)+1);
lLoc = GetLocation(GetObjectByTag(sWPTag));
iLevel = GetHitDice(GetEnteringObject());
iRandom = Random(8)+1;
if (iRandom<3)
{
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"en4_comhostile1",lLoc,FALSE,"HouseSpawn");
}
else if (iRandom == 3)
{
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"en4_hostilewiz",lLoc,FALSE,"HouseSpawn");
HouseLevelUp(oCreature,iLevel);
}
else if (iRandom == 4)
{
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"en4_hostilefig",lLoc,FALSE,"HouseSpawn");
HouseLevelUp(oCreature,iLevel);
}
else if (iRandom == 5)
{
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"en4_hostilemonk",lLoc,FALSE,"HouseSpawn");
HouseLevelUp(oCreature,iLevel);
}
else if (iRandom == 6)
{
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"en4_hostileclr",lLoc,FALSE,"HouseSpawn");
HouseLevelUp(oCreature,iLevel);
}
else if (iRandom == 7)
{
if (Random(2)==0)
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"en4_hostilefig",lLoc,FALSE,"HouseSpawn");
else
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"en4_hostilemonk",lLoc,FALSE,"HouseSpawn");
HouseLevelUp(oCreature,iLevel);
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"en4_hostileclr",lLoc,FALSE,"HouseSpawn");
HouseLevelUp(oCreature,iLevel);
}
else if (iRandom == 8)
{
if (Random(2)==0)
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"en4_hostilefig",lLoc,FALSE,"HouseSpawn");
else
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"en4_hostilemonk",lLoc,FALSE,"HouseSpawn");
HouseLevelUp(oCreature,iLevel);
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"en4_hostilewiz",lLoc,FALSE,"HouseSpawn");
HouseLevelUp(oCreature,iLevel);
}
SetActionMode(oCreature,ACTION_MODE_DETECT,TRUE);
SetLocalString(GetEnteringObject(),"EN4Return",GetTag(OBJECT_SELF));
SetLocalInt(GetEnteringObject(),"EN4House",iHouse);
sHouseTag = "WP_" + sHouse;
SetLocalString(OBJECT_SELF,"SpawnTo",sHouseTag);
oSpawnPoint = GetObjectByTag(sHouseTag);
AssignCommand(GetEnteringObject(),JumpToLocation(GetLocation(oSpawnPoint)));
} else {
if (GetLocalInt(OBJECT_SELF,"EN4Used") == 0)
{
sHouseTag= GetLocalString(OBJECT_SELF,"SpawnTo");
oSpawnPoint = GetObjectByTag(sHouseTag);
AssignCommand(GetEnteringObject(),JumpToLocation(GetLocation(oSpawnPoint)));
} else {
SendMessageToPC(GetEnteringObject(),"This house has already been entered.");
}
}
}
void HouseLevelUp(object oCreature, int iLevel)
{
int iLevelUp;
iLevelUp = Random(5)-2;
iLevelUp = iLevelUp + iLevel;
if (iLevelUp < 1)
iLevelUp = 1;
LevelMob(oCreature,iLevelUp);
EquipMob(oCreature);
}