--[[ This file is part of ThothAI. ThothAI is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. ThothAI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with ThothAI. If not, see . ]]-- --THIS FILE ONLY AFFECTS MERCENARY WHEN YOU USE /merai AND GET "Mercenary Soldier will follow custom AI" MESSAGE! -----------------------configurables --"defense" skills are. Defense // Amistr Bulwark, Accelerated Flight // Overspeed, parrying, autoguard, reflect shield, Mental Change(good offense is good defense heh) --because lif skill deleays interfere with each other, mental change will only be used if nearby song is detected. --song detection is not perfect, if the bard moves while singing, AI will no longer detect a song. --mental change will only be used if enemy is detected UseDefenseSkill = 1 --Lif Urgent Escape, Filir Fleet Move, Mercenary 2 hand quicken, Amistr BloodLust(bloodlust will only be used if an enemy is detected --urgent escape will only be used near a bard song unless LifAlwaysSpeed = true UseQuicken = 1 --Lif Urgent Escape, Filir Fleet Move, Mercenary 2 hand quicken, Amistr BloodLust(bloodlust will only activate with onscreen enemies) UseBerserk = 1 --autoberserk on some mercenaries, and frenzy on lvl 10 fencer(why would you waste points on lvl 10?) UseMagni = 0 --will use magnificat on lvl 4 bow mercenary --Attempt to decloak an enemy who just disappeared within range for cloak, chasewalk, hide. mercenary doesnt know the difference. --will not work if enemy cloaks first and then moves within range. skills are: sight, arrowshower, magnumbreak, freezing trap, sandman, landmine. --also, sight and magnum break will automatically be used on a "move" command. sight immediately, and magnum twice upon reaching destination. AttemptDecloak = 1 UseProvoke = 1 --will use provoke to break casts on CASTERTARGETS and buff Plant summons. must use with homunculus and WriteActorInfo to ID plants. --will attempt to pushback enemies from mercenary based on distance. --PushBack skills are: charge arrow, skidtrap, arrow shower, brandish spear, magnum break, bowling bash. to pushback from owner, lower followdistance and keep mercenary close. UsePushback = 0 PushbackDistance= 2 --if this many cells or closer, try to push enemy away UseTraps = 1 --disabling will stop trap use for everything except decloaking --for trapping when idle, TrapForms 1-3 are from compact to spread out. form4 is SS guild graffiti. TrapFollowForm =0 --to be used when following owner TrapFollowSP =70 -- % of maxsp before idletrapping TrapMoveForm =0 -- to be used after move command. has an additional form 5 based on move location direction from owner. TrapMoveSP =30 --attempt to use lex divina to silence enemies. mercenary cannot detect silence status, so it will assume it succeeded unless enemy uses a skill --CasterTargets get priority. if enemy is already silenced by another source (like another mercenary user!), mercenary may end up unsilencing them. UseDivina = 1 UseDecAgi = 1 --use decrease agility on enemies. QUICKENTARGET or QUICKEN2TARGET get priority and will have it cast multiple times. --use Mercenarystatus recovery skills on ALLYSTATUS or OWNERSTATUS alliance targets. will also be used once on owner immediately on summoning//AI loading. --Benediction, Compress, Recuperate, MentalCure, LexDivina(to cure silence) will be used when ALLYSTATUS or OWNERSTATUS targets sit down --Tender,Regain can use timers and estimate if targets are statused or not based on inactivity (will assume you were frozen/stoned/stunned) --for regain, sleep status is the only status that can be detected by AI and sleep cure will be nearly instantaneous. UseRecovery = 1 --use status recovery skills at all? UseTimerRecovery = 1 --attempt to detect stun, stone curse, freeze status based time between motion changes? if you move or sit, won't cure you RecoveryTimer = 1000 --miliseconds before timerrecovery assumes you are statused and tries to cure you SRecoveryOwner = 1 --whether or not to use status recovery skills on owner ProvokeOwner = 0 --whether or not to attempt to buff owner using provoke, doesnt work on private servers. other targets can be set with "PROVOKETARGET" type. --AI will automatically choose AOE targets. note that only known enemies are accounted for, players or monsters who have not been attacking you --or attacked by you or ALLYPROTECT//ALLYSTATUS ally will not be counted. unless a non-support type has been specified, player casts will not specify as an enemy. --homunculus can help with type detection. UseAOESkills = 1 --whether or not to use AOE skills at all. arrowshower, brandish spear, bowling bash, magnum break AOEMinMobCount = 2 --the amount of known enemies within aoe before using aoe skill. UseAtkSkills = 1 --attack skills are caprice, moonlight, doublestrafe, pierce, bash, spiralpierce UseDefender = 1 --lvl 9 spear uses lvl 3 defender when enemies near. lvl 4 spear doesnt use, too many drawbacks to lvl 1 defender. --"defense" skills are. Defense // Amistr Bulwark, Accelerated Flight // Overspeed, parrying, autoguard, reflect shield, Mental Change(good offense is good defense heh) UseDefenseSkill = 1 UseCrash = 1 --not yet enabled. its actually pretty worthless because of the cast time. but if someone comes up with a good reason I may code it. UseDevotion = 1 --Attempt to automatically use Mercenary Devotion on owner --Use rescue skills based on remaining Owner HP. rescue skills are Castling, Touch of Heal // Healing Hands, ScapeGoat. UseRescueSkill = 1 RescueHpPercent = 50 --what Owner HP % is before using rescue skill --AI starts in follow mode and switches to it when standby key is pressed once. move mode is triggered when you tell homun/merc to move a location. FollowChaseDown = 1 --when in follow mode, chase after enemies? MoveChaseDown = 1 --when in move mode, chase after enemies? AIDecideChase = 1 --overrides and prevents weaker mercenaries from chasing (lvl 1-6 bow, spear, fencer). --how long to wait before taking action on spawning or mapchange. even if alch is invulnerable, homun/merc is not. don't ever put this above 3000 (3 seconds) SpawnWait = 0 --3000 MaxDistance = 13 --when beyond this distance, drops everything, switches to follow mode, and returns to owner. if set above 14, will leave homun/merc offscreen. --note that the below settings will be ignored when kiting FollowDistance = 0 --follow distance when idle or not chasing FollowMax = 8 --maximum distance while in follow mode. also affects chasing down enemies in follow mode MoveRadius = 7 --once you tell homun/merc to move, the maximum distance it will move from that point IdleDistance = 1 -- if you hit the standby key 3 times, doing anything but sitting, homun will become idle and do nothing except emergency actions. this is the follow distance for idlestate. --owner uses single target spells on allies, which have a cast time. for mercenary users, incorrectly setting to 0 will cause AI to set allies as enemies and be stupid. -- examples include agi up, soul exchange, devotion, kaupe. if you use any of these, set to 1. -- support skills like blessing, aid slim potion, heal, windwalk, safetywall, enchant poison do not count. -- this setting makes it so when you cast spells on someone, they do not become enemies. attacking, being attack, throw stone etc still count. --if you are support type and want a way to set enemies quickly and easily, strongly consider using stapo card/throw stone. ISupportCast = 1 -- any value but "NONE" or "NEUTRAL" will change the alliance or type. for usable values, see Const.lua -- the below can be used to make an "attack" command tell your pet to ignore the guild mindbreaker, or such. -- note that setting the incorrect values on a target can cause odd behavior. especially if the mercenary uses cast time spells. -- on manually attacking a target, (alt + left click on target), set alliance and type as: ManAtkAlliance = IGNORE ManAtkType = IGNORETARGET --manually using a skill will set the target as the following alliance and type except for "NONE" or "NEUTRAL" as above --recovery skills are the exception, will set alliance to ALLYSTATUS --if neither is set to IGNORE, will use the skill ManSkillAlliance= IGNORE ManSkillType = IGNORETARGET --priority to attack certain targets, based on distance, who they attack, and who they are attacked by. higher values = higher relative priority. --Types and manually set alliance values also have effects on priority. --the default values will make homun try to protect your mercenary more than itself, as homun can be resurrected easily. -- a value of zero means distance, targeting or being targeted by them has no effect on priority. OwnerPriority =15 MercPriority =10 HomunPriority =7 FriendPriority =5 --limited only to whom they are being targeted by. allies, etc --when no known enemies, try to attack anything it can. useful pvm, this can be good or bad in a crowded pvp room... SuperAggro =1 AggroHP = 0 --% of homun/merc hp before becoming aggressive. will still attack if attacked. set to 0 to always be aggressive AggroSP = 0 --% of sp before becoming aggressive SuperPassive =0 --totally ignore all enemies. overrides SuperAggro AtkDLP =0 --best used with and overrides superpassive, this will atk "DLPTARGET" with the purpose of breaking animation delay --whether or not to write actor data to ActorList.lua. this is useful for preserving enemy list between deaths, summonings, and sharing data between mercenary/homun --note that only one client can use this at a time or VERY BAD THINGS HAPPEN and you will have to erase the contents --to set a value for an enemy or ally player permanently, place it in Actor_Presets.lua --to set all players on screen to ally (useful for your guild or teammates), sit down and press standby 3 times within 5 seconds. --doing so will greatly speed up checking for enemies, and enable status cure on sitting --to erase the contents of the actorlist, sit down and press standby 5 times within 5 seconds. you will get a popup. IMPORTANT with changing BG teams. WriteActorInfo =0 MoveToSingers =0 --if a bard song is being used, move toward the bard every 20 seconds to refresh song. cannot detect what type of song. KiteHostiles =1 --enable kiting. specific monsters, players, and types can be set in Actor_Presets.lua KiteAllEnemies =0 --run away from everything! KiteDistance =3 --kite to this distance before doing anything else. note that kiting ignores followmax, moveradius, but not maxdistance. CheatMode = 0 --only for cheaters (you wouldn't cheat would you?) MiscWait = 6 --seconds PatrolDistance = 2 -- distance to patrol around owner when idle. if 0, Patrolling is disabled PatrolType = 2 --1 =box, 2 = diamond. box more practical, diamond more annoying. yes, I made this feature to be annoying