45 lines
2.0 KiB
Plaintext
45 lines
2.0 KiB
Plaintext
////////////////////////////////////////////////////////////////////////////////
|
|
// Deva's Random Actions - This is used with encounters for something better than
|
|
// actionrandomwalk();
|
|
// By Deva Bryson Winblood. 12/24/2003
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
#include "antistuck_h"
|
|
|
|
void main()
|
|
{
|
|
object oMe=OBJECT_SELF;
|
|
object oOb;
|
|
int nR=d6();
|
|
if (nR<5)
|
|
{ // wander
|
|
oOb=GetNearestObject(OBJECT_TYPE_WAYPOINT,oMe,d20());
|
|
if (oOb==OBJECT_INVALID) oOb=GetNearestObject(OBJECT_TYPE_PLACEABLE,oMe,d4());
|
|
if (oOb==OBJECT_INVALID) oOb=GetNearestObject(OBJECT_TYPE_WAYPOINT,oMe,d6());
|
|
if (oOb==OBJECT_INVALID) oOb=GetNearestObject(OBJECT_TYPE_WAYPOINT,oMe,1);
|
|
AssignCommand(oMe,ASActionMoveToObject(oOb,FALSE,1.0));
|
|
} // wander
|
|
else if (nR==5)
|
|
{ // act environment
|
|
nR=d6();
|
|
AssignCommand(oMe,ClearAllActions());
|
|
if (nR==1) ActionPlayAnimation(ANIMATION_FIREFORGET_DRINK,1.0,3.0);
|
|
else if (nR==2) ActionPlayAnimation(ANIMATION_FIREFORGET_PAUSE_BORED,1.0,5.0);
|
|
else if (nR==3) ActionPlayAnimation(ANIMATION_FIREFORGET_PAUSE_SCRATCH_HEAD,1.0,5.0);
|
|
else if (nR==4) ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW,1.0,6.0);
|
|
else if (nR==5) ActionPlayAnimation(ANIMATION_LOOPING_SIT_CROSS,1.0,20.0);
|
|
else { ActionPlayAnimation(ANIMATION_LOOPING_PAUSE_TIRED,1.0,8.0); }
|
|
} // act environment
|
|
else if (nR==6)
|
|
{ // act NPC
|
|
oOb=GetNearestCreature(CREATURE_TYPE_PERCEPTION,PERCEPTION_SEEN,oMe,1,CREATURE_TYPE_REPUTATION,REPUTATION_TYPE_FRIEND);
|
|
if (oOb==OBJECT_INVALID) oOb=GetNearestCreature(CREATURE_TYPE_PERCEPTION,PERCEPTION_SEEN,oMe,1,CREATURE_TYPE_REPUTATION,REPUTATION_TYPE_NEUTRAL);
|
|
if (oOb!=OBJECT_INVALID)
|
|
{ // talk to target
|
|
AssignCommand(oMe,ClearAllActions());
|
|
AssignCommand(oMe,ActionMoveToObject(oOb,FALSE,3.0));
|
|
AssignCommand(oMe,ActionPlayAnimation(ANIMATION_LOOPING_TALK_NORMAL,1.0,8.0));
|
|
} // talk to target
|
|
} // act NPC
|
|
DelayCommand(24.0,ExecuteScript("dbw_randomact",oMe));
|
|
}
|