Missing adequate monster switching logic

This section is created for developers and non-developers who think that he/she has a good (and realistic) idea that might contribute to the OpenKore community.

Moderator: Moderators

Message
Author
Cozzie
Spam Generator
Spam Generator
Posts: 499
Joined: 04 Apr 2008, 09:30
Noob?: No
Location: Melbourne, City of beer and awful sushis

Missing adequate monster switching logic

#1 Post by Cozzie »

Situation:
Novice is botting for orange gooey mushroom and orange net mushroom at job_thief1 and map has fabre (aggro), chonchon (aggro), spore and mushroom.
Mon_control is set to:

Code: Select all

mushroom 1 0 0
fabre 0 0 0
chonchon 0 0 0
spore 0 0 0
Problem:
When the bot is attacking the mushroom and an aggressive monster attacks me, the bot will not switch to the aggressive monsters and I die. This problem is only apparent when the bot is attacking monsters without an attack (eg: mushroom, pupa, plants) and another aggressive monsters engage it.

Suggested solutions:
Understandably this is a bug that is only replicated under a very specific circumstances and that the way the bot is designed is so that it does not switch from monsters to monsters when engaged by multiple aggressive monsters.

However discussing on IRC, a few of us have come up with a few ideas, from simple to complicated.

Solution 1: switching only when first monster dealt 0 damage in total.
Harvest suggested that kore be coded in a way that it will only switch to the new aggressive target when the first monster does not attack back (ie: dealt 0 damage in total).

While this would fix this specific problem, it might produce undesirable effects when the bot is engaged in situation where the monsters can attack back but does not engage the bot itself (ie: when someone is tanking for it). This might not be the effect we are looking for.

Solution 2: Respecting priority.txt after engaging monster
Harvest also suggested that kore can respect priority.txt after engaging the monster.

This also have an effect where the bot can become inefficient. Example 1: Kore is engaging Vadon and the vadon is 2 hits from dying. Hydra spawns and attacks kore. Kore switches to the hydra but the vadon follows and attacks the bot. The bot takes more damage than necessary.

It might:
  • use more pots
  • sit more often
  • in worst case senario, die.
Solution 3: New kore logic where it calculates the most efficient time-to-kill.
This is a complicated method but ultimately provides the most efficient solution universally. Kore takes the delta_hp of the monsters, the damage of the character and calculates a time-to-kill ratio based on those two variables on the monsters that are engaging it. It then attacks the monsters which has the lowest time-to-kill.

Issues surrounding this are:
  • what I believe there is a lack of delta_hp database for monsters
  • increase in processing power, especially when being mobbed by many monsters
  • substantial effort in producing a bug free code
Make Openkore Awesome. Join the team.

EternalHarvest
Developers
Developers
Posts: 1798
Joined: 05 Dec 2008, 05:42
Noob?: Yes

Re: Missing adequate monster switching logic

#2 Post by EternalHarvest »

Note: that's all about attackChangeTarget.

That's more like a feature request.

Post Reply