HoS_PRC8/_mod/_module/nss/hos_place_hench.nss
Jaysyn904 04165202c0 Initial upload
Initial upload
2024-11-25 19:36:07 -05:00

81 lines
2.5 KiB
Plaintext

////////////////////////
// hos_place_hench - place 9 henchmen out of 16 randomly
///////////////////////
void main()
{
object oWP;
object oHench;
object oMod=GetModule();
int nR;
int nC;
int nL;
int nAGE;
string sRes;
int nEvil=FALSE; // has the evil conversation been handled?
// Place Mage Guild downstairs first
nR=d4();
nC=5;
if (nR==2) nC=3;
else if (nR==3) { nC=16; nEvil=TRUE; }
else if (nR==4) nC=4;
sRes="hench"+IntToString(nC);
SetLocalInt(oMod,"n"+sRes,TRUE);
oWP=GetWaypointByTag("HENCH_SPAWN6");
nR=d8();
if (nEvil==TRUE) nR=1;
else { nR++; }
oHench=CreateObject(OBJECT_TYPE_CREATURE,sRes,GetLocation(oWP),FALSE);
SetLocalInt(oHench,"nHenchConv",nR);
SetLocalObject(oHench,"oSpawnLoc",oWP);
nL=1;
while(nL<10)
{ // place henchmen
if (nL==6) nL=7;
oWP=GetWaypointByTag("HENCH_SPAWN"+IntToString(nL));
nR=Random(16)+1;
sRes="hench"+IntToString(nR);
while(GetLocalInt(oMod,"n"+sRes)==TRUE)
{ // find unused henchman
nR=Random(16)+1;
sRes="hench"+IntToString(nR);
} // find unused henchman
SetLocalInt(oMod,"n"+sRes,TRUE);
oHench=CreateObject(OBJECT_TYPE_CREATURE,sRes,GetLocation(oWP),FALSE);
SetLocalObject(oHench,"oSpawnLoc",oWP);
nAGE=GetAlignmentGoodEvil(oHench);
nC=0;
if (nAGE==ALIGNMENT_EVIL&&nEvil!=TRUE) { nC=1; nEvil=TRUE; }
else
{
nC=d8()+1;
nAGE=0;
while(GetLocalInt(oMod,"nHenchConv"+IntToString(nC))==TRUE&&nAGE<6)
{ // find unused conversation
nC=d8()+1;
nAGE++;
} // find unused conversation
if (GetLocalInt(oMod,"nHenchConv"+IntToString(nC))==TRUE)
{ // traverse in order
nC=0;
nAGE=2;
while(GetLocalInt(oMod,"nHenchConv"+IntToString(nAGE))==TRUE&&nAGE<10)
{ // find unused conversation
nAGE++;
} // find unused conversation
if (nAGE<10&&GetLocalInt(oMod,"nHenchConv"+IntToString(nAGE))==FALSE)
{ // found one
nC=nAGE;
} // found one
else if (nEvil==FALSE) { // use evil conversation
nC=1;
nEvil=TRUE;
} // use evil conversation
} // traverse in order
SetLocalInt(oMod,"nHenchConv"+IntToString(nC),TRUE);
}
SetLocalInt(oHench,"nHenchConv",nC);
nL++;
} // place henchmen
}