55 lines
1.7 KiB
Plaintext
55 lines
1.7 KiB
Plaintext
// Create Mage Guild Assassin
|
|
#include "antistuck_h"
|
|
void fnEscort(object oMage)
|
|
{
|
|
object oMe=OBJECT_SELF;
|
|
SetAILevel(oMe,AI_LEVEL_NORMAL);
|
|
if (GetIsInCombat(oMe)==FALSE)
|
|
{ // escort
|
|
if (oMage!=OBJECT_INVALID)
|
|
{ // mage lives
|
|
if (GetArea(oMage)!=GetArea(oMe))
|
|
{ // jump
|
|
AssignCommand(oMe,ClearAllActions(TRUE));
|
|
AssignCommand(oMe,JumpToObject(oMage));
|
|
} // jump
|
|
else if (GetDistanceBetween(oMage,oMe)>3.0)
|
|
{ // move
|
|
AssignCommand(oMe,ASActionMoveToObject(oMage,TRUE,2.0));
|
|
} // move
|
|
DelayCommand(12.0,fnEscort(oMage));
|
|
} // mage lives
|
|
else
|
|
{ // mage is dead - go hostile
|
|
ChangeToStandardFaction(oMe,STANDARD_FACTION_HOSTILE);
|
|
} // mage is dead - go hostile
|
|
} // escort
|
|
else
|
|
{ // combat
|
|
DelayCommand(12.0,fnEscort(oMage));
|
|
} // combat
|
|
} // fnEscort()
|
|
|
|
void main()
|
|
{
|
|
object oSpawn=GetWaypointByTag("MAGEASS_SPAWN");
|
|
object oAss;
|
|
string sRes="mageass1";
|
|
int nTarget=GetLocalInt(OBJECT_SELF,"nMAGEASST");
|
|
int nFee=GetLocalInt(OBJECT_SELF,"nMAGEASSFEE");
|
|
object oEscort;
|
|
if (nFee==500) sRes="mageass2";
|
|
else if (nFee==1000) sRes="mageass3";
|
|
else if (nFee==5000) sRes="mageass4";
|
|
oAss=CreateObject(OBJECT_TYPE_CREATURE,sRes,GetLocation(oSpawn));
|
|
SetLocalObject(GetPCSpeaker(),"oMGAssassin",oAss);
|
|
SetLocalInt(oAss,"nSpeed",8);
|
|
SetLocalInt(oAss,"nTarget",nTarget);
|
|
SetAILevel(oAss,AI_LEVEL_NORMAL);
|
|
oEscort=CreateObject(OBJECT_TYPE_CREATURE,"mg_guard1",GetLocation(oSpawn));
|
|
AssignCommand(oEscort,fnEscort(oAss));
|
|
oEscort=CreateObject(OBJECT_TYPE_CREATURE,"mg_guard2",GetLocation(oSpawn));
|
|
AssignCommand(oEscort,fnEscort(oAss));
|
|
ExecuteScript("mage_assassin",oAss);
|
|
}
|