141 lines
4.5 KiB
Plaintext
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);
|
|
}
|