summaryrefslogtreecommitdiff
path: root/src/map/battle.c
AgeCommit message (Collapse)AuthorFilesLines
2014-10-24pc_isriding* / pc_setriding* cleanupHaru1-3/+3
- pc_isriding is now renamed to pc_isridingpeco, since that's what it checks (to avoid confusion). - pc_hasmount is added, to check for any of Peco, Dragon, Mado Gear, Wug Rider. - pc->setridingdragon is added. - pc->setridingwug is added. - pc->setfalcon type is changed. - pc->setmadogear type is changed. - pc->setridign is changed to pc->setridingpeco to avoid confusion. - Changed direct accesses to sd->sd.option to the proper pc_is* accessors, where applicable. - Special thanks to Kisuka. Signed-off-by: Haru <haru@dotalux.com>
2014-10-18Fix bug:7454Michieru1-1/+2
* 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)
2014-10-13* Monster skill use behavior, ranges, position lag fixesMichieru1-2/+8
- Updated monster skill use behavior so monsters use skills the same way and at the same rhythm as official servers (bugreport:009326), the changes include: * Unified the "monster can't move by default" and the "monster trapped" code as it really should behave exactly the same * Fixed a bug that caused the "monster skill use" routine to be called 20 times more often than it should in some situations * When a monster attacks you and you run away from it, the monster will now check if it has a ranged skill on "attack" state before switching to chase state * Monsters will now always do a normal attack before using "attack" state skills * Fixed a bug that caused monsters to switch to idle mode and never use their chase skills when they get hit continuously * Changed default for skillrange_from_weapon from 30 (all but player) to 0 (none); monsters will now use all skills at the skill range and not at their own attack range, if they get tanked from farther away than skill range, they won't use these skills - Updated ranges to work as on official servers (bugreport:009326), the changes include: * Implemented new functions "check_distance_client" and "distance_client", that instead of the server-sided square range system use the circular one that the client uses; these functions should be used for units that send their commands via the client (players mostly) * Applied the new distance algorithm to some player-specific range checks, players will now have a circular attack range that reflects their attack range on the client; this makes it impossible to hack the client for more diagonal range * Removed the arbitrary +1 range bonus at range checks; as monsters now react fluently, they won't need it anymore, that means a monster with for example 4 attack range will now only attack targets within a 9x9 area around it, the moment you step out of this area, the attacks will stop (if the monster can move it will follow you); as for players, the extra cell attack range when on a linear line to the target now is integrated into the distance algorithm, that means a player with attack range 4 can attack from 5 cells away when directly on line with a monster, but no longer diagonally as range is circular for players now * Implemented a new "step action" feature to reflect official chase range behavior; when an attack or skill is used inside the attack range, it will act exactly as now, the skill is used once the signal from the client was received; however, if an attack or skill is used outside the attack range, the player should move into the chase area which is 1 cell inside the attack range border; the client actually sends us where to use the attack / skill from, but previously we just dropped that information the moment an attack request came; now instead of stopping the player instantly on an attack request, the player will continue moving to the target cell and then automatically use the command received earlier (it will be remembered); this change was absolutely necessary as the client sends the attack request slightly before attack range is reached, execution on official servers only takes place on every full cell moved; the new system copies this behavior - Implemented an improved hit-lock system (bugreport:007460), the changes include: * MVPs are no longer immune to being stopped by a hit unless they used Endure * When hitting any unit, it will stop for its "dMotion" interval, exactly at the end of "dMotion" it will continue walking (official behavior); this helps getting more "move" packets to be displayed * The unit that was hit will be immune to being stopped for another "dMotion" interval, this allows to slow down any units by hitting them frequently, but makes it almost impossible to completely stop them forever (depends a lot of ASPD and dMotion value); this does not affect special hit-lock properties (some skills and events should set delay anyway) * The unit that was hit will no longer be "pulled" to the next cell; this caused a lot of position lag, it should be much better now * Random walking, monster target dropping - Implemented official behavior for random walking of monsters (bugreport:9340) * Updated the interval between walks from 3-6 seconds to 4-5 seconds * Added a define MIN_RANDOMWALKTIME that is now used anywhere the interval is applied so it's easier to change * Monsters will no longer attempt to walk to the cell they are currently standing on (note: still requires a proper "no cell stacking" implementation) * Monsters will only target a cell within a 15x15 area around them - Moved the "mob_ai" 0x008 configuration setting to mob_unlocktarget, so it applies to all cases of monsters unlocking targets - Cleaned up the unit_stop_attack and unit_stop_stepaction functions * unit_stop_attack now makes sure that the target is always set to 0, even if no attack timer currently exists * replaced several calls of unit_set_target that set target to 0 with unit_stop_attack, this is important because the attack timer should always be deleted at the same time the target is set to 0 * this also fixes the problem that caused monsters to sometimes drop their target after an attack * Minor monster walk and skill use fixes - Fixed a bug that caused monsters to never use their idle skills even if the define MOB_LAZYSKILLPERC was set * The default value of the define is now 100% for spotted mobs and 0% for non-spotted mobs as on official servers - Monsters now use complex path searching for their random walk, so they can also walk around corners now (OFFICIAL_WALKPATH still applies!) - Fixed spotted monsters using their "walk" skills even if nobody is on the map - Monsters will no longer stop when using "walk" skills (they are supposed to be used while walking) * Monster idle skills, chase, final cleanups - Spotted monsters will now use their idle skills even if no players are on the map * This is official behavior and allows them to metamorph and heal up even if nobody is on the map * I originally had concerns about the performance, but as the dynamic mobs option is enabled by default and set to 5 minutes, monsters will only stay "spotted" for 5 minutes when nobody is on the map anyway, this doesn't cost much extra performance - Increased chase range of monsters by 2 * Tested this thoroughly and the effective chase range is actually 2 cells larger than listed in the "Range3" column * Special thanks to ultramage and Michieru for helping me testing this - Some final cleanups in the unit_stop_attack and unit_stop_stepaction functions * Special thanks to icxbb-xx for pointing these out Super ultra mega thanks to Playtester (rAthena 2c86ee435670168,ebd3dc97bc7e,f3916c1baf1,b1330a4c6,c2377c8f54,464dd4586380)
2014-10-08Update Hovering to it's official formula. (bug:8384)Michieru1-5/+1
2014-10-02* Rewrote the hard monster AI. Monsters will now behave a lot closer to ↵Michieru1-0/+1
official servers: * Monsters will now attack immediately when they are chasing a target and it comes into attack range (bugreport:7370) * Monsters will now chase their target during their aDelay, but they still have to wait for aMotion to be able to move again (bugreport:9269) * Monsters will now rethink their chase in a configurable interval (see monster_chase_refresh in monster.conf), official value is once per cell, previously it was once per 3 cells * Monsters will now stop when they rethink their chase and their target is gone (player hides or target loot was picked), regardless of the monster_ai setting (note: if you want the old, stupid behavior, just increase monster_chase_refresh instead) Thanks to Playtester (rathena: cfef8a0088c3)
2014-09-29Emperium can not be move by vacuum (bug:8372)Michieru1-1/+2
On renewal only double attack work on emperium
2014-09-23Fixes card increment damage on Renewal. Bug 8364csnv1-1/+2
http://hercules.ws/board/tracker/issue-8364-about-damage-on-race-card/
2014-09-21Fixed Bug 8294shennetsind1-2/+2
Asura can now issue damage regardless of distance (including map-transfer) Special Thanks to kyeme! <3 videos http://hercules.ws/board/tracker/issue-8294-no-damage-when-warped-out/ Signed-off-by: shennetsind <ind@henn.et>
2014-09-19Fix some skills reduction. Follow update (bug:8329) ↵Michieru1-6/+0
https://github.com/HerculesWS/Hercules/commit/9a15ccdbfb2c48d6eb73999ad2a61701d7abd6f4
2014-09-19Update official Homunculus renewal stats (bug:6970) ↵Michieru1-5/+5
http://hercules.ws/board/tracker/issue-6970-homunculus-renewal-stats/ Follow up (bug 8348): https://github.com/HerculesWS/Hercules/commit/ddc52570a9bf694cdba6445bc02350a94856a583 Update official overbrand damage (special thanks to Rytech) The skill damage is no longer affected by your base level. It is now affected by the enemy's base level (special thanks to Rytech) Updated the list of skills usable while mounted on a mado. (special thanks to Rytech)
2014-09-19Fixes damage missing. Snap dodging bug.csnv1-6/+11
- Fixes damage miss on out of range Devotion. Follow-up: 964b47351ef2156423f6e0a68bfd3361283936c1 - Fixes snap dodge bug. Added setting snap_dodge to return to old behavior. Bug report: http://hercules.ws/board/tracker/issue-3510-snap-dodge-bug/
2014-09-18Follow-up: 9a15ccdbfb2c48d6eb73999ad2a61701d7abd6f4csnv1-2/+1
2014-09-18Fixed weapon skills reduction card damage (bug:8329)Michieru1-1/+1
Mega thanks to csnv
2014-09-17Devotion statuses fixed. Cleaned some warnings. Unit range shortened!csnv1-15/+31
- Now SC_AUTOGUARD and SC_REFLECTSHIELD won't have effect if the devotion range is too big. Bug report http://hercules.ws/board/tracker/issue-8345-about-devotion-status-tra/ - Cleaned some warnings - Due to the exploit of some client edits and with the feedback of some users, I can say it's safe to change back the range extra cell to 1. Thanks Juvia, KeyWorld.
2014-09-16Follow rev: ↵Michieru1-9/+9
https://github.com/HerculesWS/Hercules/commit/0a24a4bb6340459a6128c39d13ab1bf37a5bc6b8 Fix bug: 7891: http://hercules.ws/board/tracker/issue-7891-estin-estun-breakfall-and-kick-stance/
2014-09-15Fixed song display, changed devotion conditionscsnv1-3/+4
- Fixed bug report http://hercules.ws/board/tracker/issue-8338-apple-of-iduns/?gopid=23558#entry23558 - Changes devotion check to work with reflect equipment of the target
2014-09-14Storm Gust freeze chance is only 150% and not 300% (Thanks to Playtester)Michieru1-1/+1
Spiral Pierce should hitlock to 100% but not work on bosses (Thanks to Playtester) Implemented the official formula for Potion Pitcher when used by monsters (Thanks to Playtester) Golden Thief Bug card should not immune masquerades Desperado should not be reflect by Shield Reflect (bug:7624)
2014-09-14Fixes taekwon mild wind skills on renewall. Bug 8234 ↵csnv1-2/+7
http://hercules.ws/board/tracker/issue-8234-bug-tk-sevenwind/
2014-09-13Fix Soul Breaker not affect by Lex Aeterna (bug:7712)Michieru1-1/+5
Fix Throwing Mysterious Powder with Sling Item. Thanks to Rikter (bug:8333)
2014-09-13Update formula of Vulcan Arm, Flame Laucher and Cold Slower.Michieru1-8/+36
Add Hesperuslit formula effect. Banding now count the caster. Fix a bug with Lex Aeterna that not double the damage of Acid Demo. (bug:8098) Update to official formula Reproduce skill. Fix Mind Breaker Matk. (bug:8328) Fix a map crash with Gentle Touch change. (bug:8326) Special Thanks to Ind
2014-09-11Added option for song timers behaviour. Fixes bug 8265csnv1-0/+1
- Fixes bug 8265: http://hercules.ws/board/tracker/issue-8265-bragis-poem-overlapped-20-seconds-effect/ - Added setting in /conf/battle/skill.conf song_timer_reset: switch between official behaviour (songs don't reset time from prior songs) or eathena (every song resets the timer)
2014-09-01Fixed a compile warning on old gcc versions in battle_calc_damageHaru1-16/+15
- Improves code readability - Fixes bugreport:8312, thanks to Ancyker http://hercules.ws/board/tracker/issue-8312-warning-in-latest-hercules/ Signed-off-by: Haru <haru@dotalux.com>
2014-08-30Follow-up to d45cf975aab39d04bd43dabaa455fde35b61b8daHaru1-2/+2
- Fixed faulty / misleading indentation of a closing curly brace Signed-off-by: Haru <haru@dotalux.com>
2014-08-30Merge pull request #330 from AnnieRuru/request_1Michieru1-0/+1
New Optional Configuration for unequipped disabled equipments
2014-08-29Fix status def calculation (bug:8306)Michieru1-4/+3
Updated script command 'sc_start' to allow for more variables and options rAthena 17326 (bug:8217) Fix Cart Tornado damage to official elemental crashing/memory error (thanks to Ind)
2014-08-28New Optional Configuration for unequipped disabled equipmentsAnnieRuru1-0/+1
http://hercules.ws/board/topic/334-suggestion-for-restricted-equipment-making-a-new-conf-for-it/?p=31003
2014-08-23Fixed official devotion behaviour, various cleanupsnadiyama1-11/+20
Fixed devotion behaviour according to bug report 8292 http://hercules.ws/board/tracker/issue-8292-devotion (precast conditions pending) Cleaned non existing flag from status->change_start calls. Removed redundant condition in battle->check_range.
2014-08-12Battle config option for knockback style when on same tile.Taylor Locke1-0/+1
2014-08-08HPM Hooks UpdateHercules.ws1-2/+2
Signed-off-by: HerculesWSAPI <Hercules@efficiently.awesome>
2014-08-08- Update Fire Cloack to official formulaMichieru1-0/+7
- Update Water Barrier to official formula - Insignia end status for everyone but spirits - Neutral Barrier def/mdef bonus should not be show in status window - Striking should be show in status window (bug:7945) - Reverberation should be cast on the caster (bug:8291)
2014-08-07HPM Hooks UpdateHercules.ws1-4/+4
Signed-off-by: HerculesWSAPI <Hercules@efficiently.awesome>
2014-08-07- Acid Demo is now reduce by Defender (bug: 8287)Michieru1-4/+6
- Fix a behavior with Fog Wall
2014-08-06HPM Hooks UpdateHercules.ws1-16/+16
Signed-off-by: HerculesWSAPI <Hercules@efficiently.awesome>
2014-08-06- Fix 3rd class skills on pre-renewal.Michieru1-16/+23
- When under Mind Break Matk Effect and Mdef reduction should not show on ALT Q(bug:7915) - Plagiarism should not copy New 3rd class skills. Thanks to OmegaRed (bug:8118) - Update Runstone Lux Anima to official formula (bug:8285) - Add official formula for Demonic Fire - Update damage formula for Unlimit, apply Def and Mdef to 1 during the skill and adjust the cooldown to official. (bug:8227) - Flash Combo should not consume hp-sp and the skill not ignore the distance. - Fix a bug with Full Throttle that not consuming sp correctly and adjust the cooldown to official. - All WoE items are inactive outside WoE or PVP - Add bonus3 bSPVanishRate for Vellum Items. - Script Vellum Items. - Add 2 new bonus bSetDefRace and bSetMDefRace for the Vellum Items. (rAthena c046668034) - Fixed Bowling Bash, Brandish Spear, Grand Darkness and Meteor Assault reducing def during cast; the only skill that does this officially is Grand Cross (rAthena 694719048e) - Implemented official Bowling Bash with all its special behaviors including the gutter line * As many servers probably want to remove the gutter line problem, it is configurable; just adjust the bowling_bash_area setting in skill.conf (Bug:4209) - Sonic Blow now has a fixed range of 1, even for monsters; a monster can't use this skill if you tank it from farther away (rAthena a15cee063d)
2014-07-11Fixed reserved __identifier violationsHaru1-1/+1
- Complies with CERT DCL37-C - Fixes issue #293 (special thanks to elfring) Signed-off-by: Haru <haru@dotalux.com>
2014-07-08Removed redundant data from guardian_data, saving up to 40 bytes per ↵panikon1-2/+4
guardian (10240 bytes total)
2014-06-06Fix bug 8225Michieru1-2/+1
http://hercules.ws/board/tracker/issue-8225-gentle-touch-revitalize/ Complete Sorcerer Elemental Skills.
2014-05-30Fixed typos inside src/Shido1-33/+33
2014-05-29Added guild_castle_invite and guild_castle_expulsion to guild.conf, they ↵panikon1-0/+2
determine how invite/expel work inside castles during WoE/GvG See: http://hercules.ws/board/topic/1623-additional-settings-in-guildconf/
2014-05-23Fixed Bug#8215malufett1-1/+1
-http://hercules.ws/board/tracker/issue-8215-raido-rune-crushing-strike/?gopid=22895#entry22895 Signed-off-by: malufett <malufett.eat.my.binaries@gmail.com>
2014-05-13Removed trailing whitespace (sources)Haru1-17/+18
Signed-off-by: Haru <haru@dotalux.com>
2014-05-10Re-commit of "Fixed order of includes in all source files"Haru1-29/+32
This reverts commit 94657284973f4037596bae468ebfbee5c217e02b.
2014-05-10Revert "Fixed order of includes in all source files"panikon1-32/+29
This reverts commit b6b3f58795288701d0e162d43fa6f0a47af913b3. Fixes issue 8184 http://hercules.ws/board/tracker/issue-8184-cart-related/
2014-05-09Fixed order of includes in all source filesHaru1-29/+32
- Changed order according to the (upcoming) code style guidelines. - Fixes several issues caused by missing headers when their include order is changed or in plugins. Signed-off-by: Haru <haru@dotalux.com>
2014-05-08Homonculus S Updatemalufett1-21/+20
-Updated and fixed Eira skills to official behavior. Fixed Bug#8168 -http://hercules.ws/board/tracker/issue-8168-crush-strike/?gopid=22703#entry22703 Signed-off-by: malufett <malufett.eat.my.binaries@gmail.com>
2014-04-28Follow-up to 6af9ad3Haru1-1/+1
- Fixes bugreport:8167, thanks to Frost http://hercules.ws/board/tracker/issue-8167-packetver-re-small-issue/ Signed-off-by: Haru <haru@dotalux.com>
2014-04-19Add official support for lvl 175Michieru1-2/+3
- Add official Job stats bonus and fix old class (pre-re and re got same stats bonus) - Add official stats points for lvl 150 to 175 - Add new max_parameter for Extend Classes max stats 125 - Change max stats points for the 3rd classes to 130 - Add official Experience table for all classes Add Star Gladiator official renewal exp table Special thanks to Yommy and Muad_Dib for official info
2014-04-17Follow-up to 916aa169daeda32c823c0c704b86d1be1fb831b7Haru1-26/+44
- Stat server update to go along with the sysinfo changes Signed-off-by: Haru <haru@dotalux.com>
2014-04-17Added sysinfo (System Information) functionalitiesHaru1-3/+5
- More informative messages are displayed during startup, to make it easier to identify what system and environment Hercules is running. - Git/SVN revision detection is improved, separating the source version (cached at compile time) from the runtime version, in case the user updated their working copy without recompiling the server. Git version detection is also more reliable, in case a non-default branch is used. - The get_revision script command has been removed (as it was useless to begin with, after the switch to git). An alternative will be provided later, for feature-probing purposes. - The patch was tested under Linux (Gentoo / gcc 4.7 on i686 and x86_64, Debian 6 / gcc 4.4 on i686, Raspbian / gcc 4.6 on armv6l, CentOS 5 / gcc 4.1 on i686, CentOS 6 / gcc 4.4 on x86_64, Linux Mint 15 / gcc 4.7 on x86_64, OS X Mountain Lion / clang 5.0 and gcc 4.8 on x86_64, Cygwin-NT-5.1/gcc 4.8 on i686, FreeBSD 8 / gcc 4.2 on i386, FreeBSD 9 / gcc 4.2 on amd64, FreeBSD 10 / clang 3.3 on amd64, NetBSD 5 / gcc 4.1 on i386, NetBSD 6 / gcc 4.5 on amd64, OpenBSD 5 / gcc 4.2 on amd64, Solaris 11 / gcc 4.5 on i86pc, Windows 7 / Visual Studio 2012 on x86, Windows 8 / Visual Studio 2010 on WOW64, Windows 8.1 / Visual Studio 2013 on WOW64. Signed-off-by: Haru <haru@dotalux.com>
2014-03-23Fix Bug 8106Michieru1-3/+3
http://hercules.ws/board/tracker/issue-8106-crescent-elbow-knockback-range/ Increase reflect damage make by crescent elbow Fix Bug 8099 http://hercules.ws/board/tracker/issue-8099-renewal-acid-bomb-damage/ Cart Revolution will now always knock targets to the West - rAthena:1f26499994af9b64aa96d5ed46f6e7cdefdb025b Fix a bug with Backslide that let you continue to move even if you hit a wall on some case. Thanks to Ind