Random roaming monsters
From NWNWiki
Contents |
[edit] Random Roaming Monsters
[edit] What It Does
Random mosnterspawns in the area that has the script(and only in that area). This is a modification of a script i found here...this lets you set different monsterspawns for different areas.
[edit] The Script, part 1
//Area on Enter
void main()
{
int gotime=0;
}
[edit] The Script, part 2
//Area on Heartbeat
void RandomMonster(object oTarget)
{
object oTarget = GetFirstPC();
object oArea = GetArea(oTarget);
if (oArea == OBJECT_SELF)
{
if (d6()==6)
{
int iDirection=d4();
float fX;
float fY;
switch(iDirection)
{
case 1:
fX=0.0;
fY=15.0;
break;
case 2:
fX=15.0;
fY=0.0;
break;
case 3:
fX=0.0;
fY=-15.0;
break;
case 4:
fX=-15.0;
fY=0.0;
break;
}
vector vStart = GetPosition(GetFirstPC());
vector vOffset = Vector(fX,fY);
vector vEndvector=vStart+vOffset;
location lEnd=Location(GetArea(GetFirstPC()),vEndvector,GetFacing(GetFirstPC()));
int iEncRoll = d6();
int iEncNumber;
int iEncCount = 1;
switch(iEncRoll)
{
case 1:
iEncNumber=d8();
while (iEncCount<=iEncNumber)
{
CreateObject(OBJECT_TYPE_CREATURE,"random_zombie",lEnd);
iEncCount++;
};
break;
case 2:
iEncNumber=d6();
while (iEncCount<=iEncNumber)
{
CreateObject(OBJECT_TYPE_CREATURE,"random_orc",lEnd);
iEncCount++;
};
break;
case 3:
iEncNumber=1;
while (iEncCount<=iEncNumber)
{
CreateObject(OBJECT_TYPE_CREATURE,"random_spider",lEnd);
iEncCount++;
};
break;
case 4:
iEncNumber=d12();
while (iEncCount<=iEncNumber)
{
CreateObject(OBJECT_TYPE_CREATURE,"random_stirge",lEnd);
iEncCount++;
};
break;
case 5:
iEncNumber=d2();
while (iEncCount<=iEncNumber)
{
CreateObject(OBJECT_TYPE_CREATURE,"random_bugbear",lEnd);
iEncCount++;
};
break;
case 6:
iEncNumber=d4();
while (iEncCount<=iEncNumber)
{
CreateObject(OBJECT_TYPE_CREATURE,"random_bandit",lEnd);
iEncCount++;
};
break;
}
}
}
}
void main()
{
object oTarget = GetFirstPC();
int monstertime=GetLocalInt(OBJECT_SELF, "gotime") ;
if (monstertime < 100)
{
//SendMessageToPC(oTarget, "Nothing yet");
//SendMessageToPC(oTarget,IntToString(monstertime) );
monstertime++;
SetLocalInt(OBJECT_SELF, "gotime", monstertime);
}
else if (monstertime >99)
{
//SendMessageToPC(oTarget, "Here they come");
//SendMessageToPC(oTarget,IntToString(monstertime) );
RandomMonster(oTarget);
monstertime=0;
SetLocalInt(OBJECT_SELF, "gotime", monstertime);
}
}
