Initial upload. PRC8 has been added. Module compiles, PRC's default AI & treasure scripts have been integrated. Started work on top hak for SLA / Ability / Scripting modifications.
73 lines
1.7 KiB
Plaintext
73 lines
1.7 KiB
Plaintext
// chair sitting script by Jhenne
|
|
|
|
void main()
|
|
{
|
|
// get the User
|
|
object oPC=GetLastSpeaker();
|
|
// get the closest chair, couch and/or throne
|
|
object oChair = GetNearestObjectByTag("Chair", OBJECT_SELF);
|
|
object oCouch = GetNearestObjectByTag("Couch", OBJECT_SELF);
|
|
object oThroneGood = GetNearestObjectByTag("ThroneGood", OBJECT_SELF);
|
|
object oStool=GetNearestObjectByTag("Stool", OBJECT_SELF);
|
|
// get the distance between the user and each object (-1.0 is the result if no
|
|
// object is found
|
|
float fDistanceChair = GetDistanceToObject(oChair);
|
|
float fDistanceGood = GetDistanceToObject(oThroneGood);
|
|
float fDistanceCouch = GetDistanceToObject(oCouch);
|
|
float fDistanceStool = GetDistanceToObject(oStool);
|
|
|
|
object oSit;
|
|
|
|
// if any of the objects are invalid (not there), change the return value
|
|
// to a high number so the distance math can work
|
|
if (fDistanceChair == -1.0)
|
|
{
|
|
fDistanceChair =1000.0;
|
|
}
|
|
|
|
if (fDistanceGood == -1.0)
|
|
{
|
|
fDistanceGood = 1000.0;
|
|
}
|
|
|
|
if (fDistanceCouch == -1.0)
|
|
{
|
|
fDistanceCouch = 1000.0;
|
|
}
|
|
if (fDistanceStool == -1.0)
|
|
{
|
|
fDistanceStool = 1000.0;
|
|
}
|
|
|
|
|
|
// find out which object is closest to the PC
|
|
|
|
if (fDistanceChair<fDistanceGood && fDistanceChair<fDistanceCouch && fDistanceChair<fDistanceStool)
|
|
{
|
|
oSit=oChair;
|
|
}
|
|
|
|
if (fDistanceGood<fDistanceChair && fDistanceGood<fDistanceCouch && fDistanceGood<fDistanceStool)
|
|
{
|
|
oSit=oThroneGood;
|
|
}
|
|
|
|
if (fDistanceCouch<fDistanceChair && fDistanceCouch<fDistanceGood && fDistanceCouch<fDistanceStool)
|
|
{
|
|
oSit=oCouch;
|
|
}
|
|
if (fDistanceStool<fDistanceChair && fDistanceStool<fDistanceGood && fDistanceStool<fDistanceCouch)
|
|
{
|
|
oSit=oStool;
|
|
}
|
|
|
|
|
|
// if no one is sitting in the object the PC is closest to, have him sit in it
|
|
if (GetIsObjectValid(GetSittingCreature(oSit)) == FALSE)
|
|
{
|
|
ActionSit(oSit);
|
|
}
|
|
|
|
}
|
|
|