--[[
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 <http://www.gnu.org/licenses/>.
]]--
--THIS FILE ONLY AFFECTS MERCENARY WHEN YOU USE /merai AND GET "Mercenary Soldier
will follow basic 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 always be
used if nearby song is detected, or set to in config
--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 = 1
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 of immobility before timerrecovery
assumes you are statused and tries to cure you. 1000 miliseconds = 1 second
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 = 0 --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 = 2 --follow distance when idle or not chasing
FollowMax = 10 --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 = ENEMY
ManAtkType = PRIORITYTARGET
--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= ENEMY
ManSkillType = PRIORITYTARGET
--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 =0
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 =1 --if a bard song is being used, move toward the bard every
20 seconds to refresh song. cannot detect what type of song.
KiteHostiles =0 --enable kiting. specific monsters, players, and types can
be set in Actor_Presets.lua
KiteAllEnemies =0 --run away from everything!
KiteDistance =2 --kite to this distance before doing anything else. note
that kiting ignores followmax, moveradius, but not maxdistance.
CheatMode = 1 --only for cheaters (you wouldn't cheat would you?)
MiscWait = 6 --seconds
PatrolDistance = 0 -- 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