diff options
author | Michieru <Michieru@users.noreply.github.com> | 2014-10-18 17:52:17 +0200 |
---|---|---|
committer | Michieru <Michieru@users.noreply.github.com> | 2014-10-18 17:52:17 +0200 |
commit | 6a6e3bb8e69890ee69981467f1e5e3591c0f9356 (patch) | |
tree | 552347425d9575b423617326ab3cbdf257479728 /src/map/battle.c | |
parent | 4ac673941714032ada6d26fb60936ec510bbe496 (diff) | |
download | hercules-6a6e3bb8e69890ee69981467f1e5e3591c0f9356.tar.gz hercules-6a6e3bb8e69890ee69981467f1e5e3591c0f9356.tar.bz2 hercules-6a6e3bb8e69890ee69981467f1e5e3591c0f9356.tar.xz hercules-6a6e3bb8e69890ee69981467f1e5e3591c0f9356.zip |
Fix bug:7454
* Official Icewall implementation and other fixes
- Reverted all the icewall-related changes done in SVN r15777 and following as testing shows they aren't official and are actually pretty exploitable (bugreport:7412)
- Instead implemented the official icewall characteristic that monsters can only leave an icewall cell to the west or south, the changes include:
* The "sight" path check no longer checks for the current cell so standing on an icewall allows you to see/attack into any direction
* The path finding will still ignore the current cell as before but the walk routine will not allow to walk east or north while standing on an icewall cell
* This leads monsters in the situation where they go through an AI loop not allowing them to escape the icewall (if their target is north or east of them)
* Monster in this situation will use idle skills and if they get attacked will use their rudeattacked skills if available, similar to traps like Spiderweb
* Added a configuration icewall_walk_block that allows to configure how long a monster should go through the AI loop before the server allows it any movement, this "safety" system is official and seems to equal about 75 AI loops; if you want to disable the whole icewall system so that monsters don't get stuck in icewall at all, just set this to 0
* Here are videos from jRO showing how this system works: http://ragdo.blog56.fc2.com/blog-entry-763.html
- Implemented the official calculation for "direction"; now you will be considered horizontal/vertical/diagonally aligned with a target cell in the exact same way as on official servers, this is for example used to determine whether an icewall or a firewall should be horizontal, vertical or diagonal; the only thing that is still unofficial is the default direction (officially always "west"); effectively now there are more situations considered diagonal than before
- Further cleanups on the idle skill use code for immobile monsters and monsters near a player but without a target (now skill using will always go via mob_unlocktarget)
* This also fixes that monsters switched to idle mode and start to use idle skills one second too late
Mega thanks to Playtester (rathena 5540d89cb0e)
Diffstat (limited to 'src/map/battle.c')
-rw-r--r-- | src/map/battle.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/map/battle.c b/src/map/battle.c index 3b50d3507..6844d8bda 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -6830,7 +6830,8 @@ static const struct battle_data { { "guild_castle_expulsion", &battle_config.guild_castle_expulsion, 0, 0, 1, }, { "song_timer_reset", &battle_config.song_timer_reset, 0, 0, 1, }, { "snap_dodge", &battle_config.snap_dodge, 0, 0, 1, }, - { "monster_chase_refresh", &battle_config.mob_chase_refresh, 1, 0, 30, } + { "monster_chase_refresh", &battle_config.mob_chase_refresh, 1, 0, 30, }, + { "icewall_walk_block", &battle_config.icewall_walk_block, 75, 0, 255, } }; #ifndef STATS_OPT_OUT /** |