258 lines
5.5 KiB
Plaintext
258 lines
5.5 KiB
Plaintext
#ifndef _mr_api_
|
|
#define _mr_api_
|
|
objectdef MRBotApi
|
|
{
|
|
variable string test = "test MRAPI";
|
|
member:bool IsForMe(string forWhoTarget)
|
|
{
|
|
variable string target = ${forWhoTarget}
|
|
variable string prefix = ${forWhoTarget.Token[1, ":"]}
|
|
variable bool negate = FALSE
|
|
|
|
echo "IsForMe ${forWhoTarget} ${prefix} ${target}"
|
|
|
|
|
|
if ${target.Count[":"]} > 0
|
|
{
|
|
negate:Set[${prefix.Equal["not"]}]
|
|
target:Set[${forWhoTarget.Token[2, ":"]}];
|
|
}
|
|
|
|
if ${prefix.Equal["igw"]}
|
|
{
|
|
return ${Me.Group["${target}"](exists)}
|
|
}
|
|
|
|
if ${prefix.Equal["igwbn"]}
|
|
{
|
|
|
|
return !${Me.Name.Equal["${target}"]) && ${Me.Group["${target}"](exists)}
|
|
}
|
|
|
|
if ${prefix.Equal["irw"]}
|
|
{
|
|
return ${Me.Raid["${target}"](exists)}
|
|
}
|
|
|
|
if ${prefix.Equal["irwbn"]}
|
|
{
|
|
return !${Me.Name.Equal["${target}"]) && ${Me.Raid["${target}"](exists)}
|
|
}
|
|
|
|
if ${target.Equal["${Me.Name}"]} || ${target.Equal["all"]}
|
|
{
|
|
echo "Name match ${negate.Not}"
|
|
return ${negate.Not};
|
|
}
|
|
|
|
if ${target.Equal["${Me.Class}"]} || ${target.Equal["${Me.SubClass}"]} || ${target.Equal["${Me.Archetype}"]}
|
|
{
|
|
return ${negate.Not};
|
|
}
|
|
|
|
if ${target.Equal["melee"]} && (${Me.Archetype.Equal["fighter"]} || ${Me.Archetype.Equal["scout"]})
|
|
{
|
|
echo "melee match"
|
|
return ${negate.Not};
|
|
}
|
|
|
|
if ${target.Equal["caster"]} && (${Me.Archetype.Equal["mage"]} || ${Me.Archetype.Equal["priest"]})
|
|
{
|
|
return ${negate.Not};
|
|
}
|
|
|
|
|
|
return ${negate}
|
|
}
|
|
|
|
function MoveTo(string forWho, point3f location, float minDistance = 0)
|
|
{
|
|
echo "Moving to ${location}"
|
|
if ${This.IsForMe["${forWho}"]}
|
|
{
|
|
MRNav:MoveTo["${location}"]
|
|
}
|
|
else
|
|
{
|
|
echo "${forWho} NotForMe"
|
|
}
|
|
}
|
|
|
|
function WaitForMoveTo(string forWho, point3f location, float minDistance = 0)
|
|
{
|
|
echo "Waiting for move to ${location}"
|
|
while ${Math.Distance[${Me.X},${Me.Y},${Me.Z},${location.X},${location.Y},${location.Z}]} > ${minDistance}
|
|
{
|
|
echo "waiting for path to complete ${Math.Distance[${Me.X},${Me.Y},${Me.Z},${location.X},${location.Y},${location.Z}]}"
|
|
wait 5
|
|
}
|
|
}
|
|
|
|
function ActivateSpecial(string ActorName, float X, float Y, float Z)
|
|
{
|
|
call TestArrivalCoord ${X} ${Y} ${Z}
|
|
if (!${Return})
|
|
call MoveTo "${ActorName}" ${X} ${Y} ${Z}
|
|
MR:Special["${Me.Name}"]
|
|
wait 50
|
|
}
|
|
|
|
function ActivateVerbOn(string ActorName, string verb, bool UseID)
|
|
{
|
|
echo do ${verb} on ${ActorName} (${UseID})
|
|
if ${UseID}
|
|
eq2execute apply_verb ${Actor[Query,Name=="${ActorName}"].ID} "${verb}"
|
|
else
|
|
MR:ApplyVerbForWho["${Me.Name}","${ActorName}","${verb}"]
|
|
wait 50
|
|
}
|
|
|
|
;===================================================================================
|
|
;long list below
|
|
;
|
|
|
|
function DescribeActor(int ActorID)
|
|
{
|
|
echo ID: ${ActorID}
|
|
echo Name: ${Actor[${ActorID}].Name}
|
|
echo LastName: ${Actor[${ActorID}].LastName}
|
|
echo Health: ${Actor[${ActorID}].Health}
|
|
echo Power: ${Actor[${ActorID}].Power}
|
|
echo Level: ${Actor[${ActorID}].Level}
|
|
echo EffectiveLevel: ${Actor[${ActorID}].EffectiveLevel}
|
|
echo TintFlags: ${Actor[${ActorID}].TintFlags}
|
|
echo VisualVariant: ${Actor[${ActorID}].VisualVariant}
|
|
echo Mood: ${Actor[${ActorID}].Mood}
|
|
echo CurrentAnimation: ${Actor[${ActorID}].CurrentAnimation}
|
|
echo Overlay: ${Actor[${ActorID}].Overlay}
|
|
echo Aura: ${Actor[${ActorID}].Aura}
|
|
echo Gender: ${Actor[${ActorID}].Gender}
|
|
echo Race: ${Actor[${ActorID}].Race}
|
|
echo Class: ${Actor[${ActorID}].Class}
|
|
echo Guild: ${Actor[${ActorID}].Guild}
|
|
echo Type: ${Actor[${ActorID}].Type}
|
|
echo SuffixTitle: ${Actor[${ActorID}].SuffixTitle}
|
|
echo ConColor: ${Actor[${ActorID}].ConColor}
|
|
echo Distance: ${Actor[${ActorID}].Distance}
|
|
echo X ${Actor[${ActorID}].Loc.X}
|
|
echo Y ${Actor[${ActorID}].Loc.Y}
|
|
echo Z ${Actor[${ActorID}].Loc.Z}
|
|
}
|
|
|
|
;===================================================================================
|
|
;long list below
|
|
;
|
|
|
|
function get_Archetype(string ToonClass)
|
|
{
|
|
switch ${ToonClass}
|
|
{
|
|
case warrior
|
|
{
|
|
return fighter
|
|
break
|
|
}
|
|
case berserker
|
|
{
|
|
return fighter
|
|
break
|
|
}
|
|
case guardian
|
|
{
|
|
return fighter
|
|
break
|
|
}
|
|
case paladin
|
|
{
|
|
return fighter
|
|
break
|
|
}
|
|
case shadowknight
|
|
{
|
|
return fighter
|
|
break
|
|
}
|
|
case monk
|
|
{
|
|
return fighter
|
|
break
|
|
}
|
|
case bruiser
|
|
{
|
|
return fighter
|
|
break
|
|
}
|
|
case warden
|
|
{
|
|
return priest
|
|
break
|
|
}
|
|
case mystic
|
|
{
|
|
return priest
|
|
break
|
|
}
|
|
case defiler
|
|
{
|
|
return priest
|
|
break
|
|
}
|
|
case fury
|
|
{
|
|
return priest
|
|
break
|
|
}
|
|
case templar
|
|
{
|
|
return priest
|
|
break
|
|
}
|
|
case inquisitor
|
|
{
|
|
return priest
|
|
break
|
|
}
|
|
case conjuror
|
|
{
|
|
return mage
|
|
break
|
|
}
|
|
case necromancer
|
|
{
|
|
return mage
|
|
break
|
|
}
|
|
case warlock
|
|
{
|
|
return mage
|
|
break
|
|
}
|
|
case wizard
|
|
{
|
|
return mage
|
|
break
|
|
}
|
|
case illusionist
|
|
{
|
|
return mage
|
|
break
|
|
}
|
|
case coercer
|
|
{
|
|
return mage
|
|
break
|
|
}
|
|
Default
|
|
{
|
|
return scout
|
|
break
|
|
}
|
|
}
|
|
}
|
|
|
|
;===================================================================================
|
|
}
|
|
|
|
|
|
#endif
|