Pet AI Scripting

Pet AI scripts can execute as server scripts when saved in project_folder/ServerScripts with the file name Hello.lua.

pet: Represents the unit (ScriptUnit) of the pet.
ai: Represents the action(ScriptPetUnitAI) to be performed.
event: Identifies the logic to be executed.
AI_INIT(-1) : Runs when pet AI is first initialized, AI_UPDATE (0): Executes every 2 seconds.

Example) Server script - Setting Pet AI

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 Server.SetPetAI( 21, --the index of pet function(pet,ai,event) --executes on first PetAI initialization if(event == AI_INIT) then ai.customData.timer = 1; end --executes every 2 seconds if(event == AI_UPDATE) then --If distance value becomes 200, follows master. --If distance value becomes 400, teleports to master. --ai.SetFollowMaster(true,200,400) --If no target, follows master. if(ai.GetTargetUnit() == nil) then ai.SetFollowMaster(true,200,400) end --basic 100,200 --ai.SetFollowMaster(true) --sets the target as the closest enemy unit ai.SetNearTarget(2,200) --Uses skill if target of pet exists --Skills are fired towards the target by default. if(ai.GetTargetUnit() ~= nil) then --Stops tracking when targets are set ai.SetFollowMaster(false) ai.StopMove() --moves to target and attack once target is set ai.MoveToPosition(ai.GetTargetUnit().x,ai.GetTargetUnit().y) --adds buff to master ai.AddMasterBuff(15) -- fires in the direction of the target ai.UseSkill(23) -- Sets firing from the pet's master position to the target ai.UseSkill( 22 ,nil ,Point(ai.GetMasterUnit().x,ai.GetMasterUnit().y)) end --Acquires nearby dropped items once every 6 seconds using the custom data timer ai.customData.timer = ai.customData.timer + 1; if(ai.customData.timer == 3) then -- Obtain a drop item within a radius of 100 ai.AcquireNearDropItem(100) ai.customData.timer = 0; end end end )