summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2014-10-28Added preliminary support for login and char server in the HPMDataCheckHaru18-119/+362
- Special thanks to Ind Signed-off-by: Haru <haru@dotalux.com>
2014-10-28Removed some temporary case-check error messages.Haru3-49/+3
- Control flow statements (break, case, continue, default, do, for, if, switch, whilei, else) and sub-function declarations (function) will no longer show a custom error message when they are incorrectly capitalized. - Note: This does not mean that they are no longer case-sensitive. This only means that no special message will be shown in case such an error is detected. The script engine will throw a normal error, as it would with any other kind of typo, rather than treating this as a special case. Enough time was given to update third party scripts, and it is now time to clean up our parsing code and get rid of these special warnings. - Variables, labels and commands will still show a warning for the time being, since the side-effects of silently ignoring it could be quite dangerous. An alternative approach to the case-check will be presented in future. For now, those who want to disable it (and save a bit on execution time and memory use), can simply comment out the #define ENABLE_CASE_CHECK line in script.h, as usual. Signed-off-by: Haru <haru@dotalux.com>
2014-10-28Removed some temporary case-check error messages.Haru2-20/+0
- Top level commands (function, warp, shop, cashshop, script, trader, duplicate, monster, boss_monster, mapflag) will no longer show a custom error message when they are incorrectly capitalized. - Note: This does not mean that the commands are no longer case-sensitive. This only means that no special message will be shown in case such an error is detected. The script engine will throw a normal error, as it would with any other kind of typo, rather than treating this as a special case. Enough time was given to update third party scripts, and it is now time to clean up our parsing code and get rid of these special warnings. Signed-off-by: Haru <haru@dotalux.com>
2014-10-28Marked command 'checkquest' as deprecatedHaru2-2/+8
Use questprogress instead. - Note: The command will be completely removed after about a month. Custom, third party scripts will require updates, in case they were using this command. It is recommended to use questprogress instead. Please see the checkquest documentation for more information. Signed-off-by: Haru <haru@dotalux.com>
2014-10-28Removed use of 'checkquest' from scripts (re folder)Haru39-784/+790
Signed-off-by: Haru <haru@dotalux.com>
2014-10-28Removed use of 'checkquest' from scripts (pre-re folder)Haru21-106/+106
Signed-off-by: Haru <haru@dotalux.com>
2014-10-28Removed use of 'checkquest' from scripts (common folder)Haru42-835/+657
Signed-off-by: Haru <haru@dotalux.com>
2014-10-27Palm strike don't have cast time but have after cast delay. Thanks ↵Michieru1-1/+1
Playtester to point this out
2014-10-27Merge pull request #377 from Ridley8819/masterMichieru1-1/+1
Fix Gentle Touch Change map-server crash
2014-10-27Fix Gentle Touch Change map-server crashRidley88191-1/+1
Report:8415 http://hercules.ws/board/tracker/issue-8415-gentle-touch-change-crash/
2014-10-27Removed use of 'menu' from official (non-custom) scriptsHaru10-843/+720
- Some scripts were partly refactored/rewritten to use a more modern coding style (and to fix some issues) - Note: the 'menu' command will be deprecated soon in favor of 'select' and 'prompt'. Signed-off-by: Haru <haru@dotalux.com>
2014-10-27Marked the petheal command as deprecatedHaru3-5/+12
- The command should be replaced by petskillsupport in any custom scripts. - Updated the custom SOHEE pet skill script to use petskillsupport with level 10 AL_HEAL. Signed-off-by: Haru <haru@dotalux.com>
2014-10-27Removed undocumented setr command. It was never meant to be available.Haru1-17/+17
- The command implementation is kept, with an internal-use prefix, to be used by the script engine (for direct assignment commands). Signed-off-by: Haru <haru@dotalux.com>
2014-10-27Marked command jump_zero as deprecated.Haru2-18/+29
- Added prefixed version for internal use. - Note: The command will be completely removed after about a month. Custom, third party scripts will require updates, in case they were using this command. Please see the jump_zero documentation. Signed-off-by: Haru <haru@dotalux.com>
2014-10-27Added source support to mark script commands as deprecatedHaru2-2/+12
- Commands marked as deprecated will trigger a warning when the script is loaded. (there are currently no commands marked as such, but some will come soon) Signed-off-by: Haru <haru@dotalux.com>
2014-10-26HPM Hooks UpdateHercules.ws1-4/+4
Signed-off-by: HerculesWSAPI <Hercules@efficiently.awesome>
2014-10-26- Can't cast icewall more than once on the same center cell. Special thanks ↵Michieru5-7/+28
to Ind - Service for you now work properly on all skill level. - Fixed a problem that sometimes randomly a status change was removed on logout although it shouldn't. Special thanks to Playtester
2014-10-25HPM Hooks UpdateHercules.ws5-30/+30
Signed-off-by: HerculesWSAPI <Hercules@efficiently.awesome>
2014-10-25Sight Blaster and other skill fixes, magic reflect, crash, trap display and ↵Michieru7-26/+53
monster behavior fixes - Fixed cast time of Sightrasher in pre-renewal (700ms -> 500ms) - Official Sight Blaster behavior (bugreport:6945, partially bugreport:144) * Sight Blaster's AoE is now 3x3 even in pre-renewal (it was originally larger so it hits traps before they trigger) * Sight Blaster will now prevent traps from triggering as long as they are knocked back * Fixed a bug that caused Sight Blaster to not work on traps and ice walls at all * Sight Blaster will no longer expire when the attack was reflected * Sight Blaster will now expire when hitting an ice wall * Sight Blaster will now properly protect you from being attacked from its AoE range - Sight, Ruwach and Sight Blaster will now check for a target every 20ms (previously every 250ms) - Step action will now be canceled when being knocked back (skills won't be executed anymore when knocked out of range) - When knock back magic is reflected it will no longer lead to the caster being knocked back (related to bugreport:6945) - Activated traps can no longer be hit - Fixed a problem that left "trap ghosts" forever on the screen when a trap was knocked out of the screen - Monster behavior fixes * Monsters will no longer be able to do normal attacks when hiding * If out of any reason a monster on "attack" state can't move and can't do normal attacks, it will now use "attack" state skills * The order of monster thought processing is now equal to official servers - Fixed some potential map server crashes Mega thanks to Playtester (rathena b88e95381d6a7)
2014-10-25Added some missing variable initializationsHaru10-32/+40
- The issue was caused by memcmp failing because of garbage in structs padding. - Fixes bugreport:8410, special thanks (and credits for the fix) to Garr http://hercules.ws/board/tracker/issue-8410-autotradeat-issue/ - Also reduced scope of some variables, where appropriate. - Thanks to Ind. Signed-off-by: Haru <haru@dotalux.com>
2014-10-24ItemDB SQL SyncHercules.ws1-1/+1
Signed-off-by: HerculesWSAPI <Hercules@efficiently.awesome>
2014-10-24HPM Hooks UpdateHercules.ws3-32/+92
Signed-off-by: HerculesWSAPI <Hercules@efficiently.awesome>
2014-10-24Re-commit of 4ac673941714032ada6d26fb60936ec510bbe496 (part 3)Taylor Locke3-0/+200
Some Quality of Life Changes - setdragon, setmadogear and setriding deprecated; use setmount instead. - checkdragon, checkmadogear, checkriding deprecated; use checkmount instead. Signed-off-by: Haru <haru@dotalux.com>
2014-10-24Renamed ismounting, setmounting, @mount2Haru24-48/+46
To avoid ambiguity: - The script command ismounting is now hascashmount - The script command setmounting is now setcashmount - The at-command @mount2 is now @cashmount Signed-off-by: Haru <haru@dotalux.com>
2014-10-24pc_isriding* / pc_setriding* cleanupHaru9-132/+213
- 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-24Restored ability to differentiate between active and inactive questsHaru2-0/+27
- Added the questactive script command. - While this information may not be needed by official scripts, it was offered by the now deprecated checkquest, and as such it is made available again. Signed-off-by: Haru <haru@dotalux.com>
2014-10-24Re-commit of 4ac673941714032ada6d26fb60936ec510bbe496 (part 2)Taylor Locke2-6/+88
Some Quality of Life Changes - checkquest deprecated; Use questprogress instead for a more logical quest log checking command. Signed-off-by: Haru <haru@dotalux.com>
2014-10-24Re-commit of 4ac673941714032ada6d26fb60936ec510bbe496 (part 1)Taylor Locke2-0/+31
Some Quality of Life Changes - getbrokencount command added to get amount of broken equipment. Signed-off-by: Haru <haru@dotalux.com>
2014-10-24Added support for other libmysqlclient variantsHaru2-43/+8
- This allows Hercules to correctly detect MariaDB and other drop-in replacements in distributions that rename their libmysqlclient (i.e. Debian / Ubuntu renaming it to libmariadbclient). - Closes issue #368 - Due to a bug in Ubuntu 14.04 LTS (incorrect output by the mariadb-provided version of `mysql_config --libs` and missing dependencies of libmariadbclient-dev), users of said distribution will have to manually specify ./configure LIBS="-lssl -lcrypto" as well as manually install the libssl-dev package, if they wish to use libmariadbclient-dev, as it will be unable to link otherwise (note: this issue isn't Hercules-specific) - Special thanks to Andrei Karas Signed-off-by: Haru <haru@dotalux.com>
2014-10-24Fixed an issue with $LIBS in the configure scriptHaru2-99/+99
- It is now possible to pass custom LIBS values to ./configure by specifying them on the command line Signed-off-by: Haru <haru@dotalux.com>
2014-10-23Merge pull request #347 from 4144/staticHaruna7-6/+224
In configure add option --enable-static
2014-10-23In configure add option --enable-staticAndrei Karas7-6/+224
This option enable static build for server binaries and map cache. For plugins this option enable static linking with gcc.
2014-10-23Added some validation checks in the geoip parse functionHaru1-9/+14
This fixes the warning on some compilers, about the fread return value being ignored. Signed-off-by: Haru <haru@dotalux.com>
2014-10-23Improved bindatcmd handling of spaces in parameters.Haru2-25/+75
- Parameters passed to bindatcmd-invoked labels are now properly space-delimited. - This is in order to support strings containing multiple spaces or containing a trailing space. Previously it was impossible to create a bindatcmd command that could accept a player name such as 'This name has two spaces' or 'Sir Trailingspace '. - Added documentation and usage examples, especially wrt space handling. See doc/script_commands.txt for details. - NOTE: Your custom atcommand labels may need edits, as we're no longer trimming multiple sequantial spaces or trailing spaces, in order to gain more flexibility. It is your care to do that. - Special thanks to Dastgir, jaBote. Signed-off-by: Haru <haru@dotalux.com>
2014-10-222014-10-22 packets thanks to Yommy.Taylor Locke1-0/+37
2014-10-19 Small Icewall implementation improvementMichieru1-1/+3
- Now monsters will walk into an icewall from the south and west if they already started moving to that cell * This will make it slightly easier to trap a monster in an icewall (this is official as can be seen in the videos I linked in the main commit) * This only applies if the icewall_walk_block configuration setting was not set to 0 (disabled) Special thanks to Playtester (rathena 753f4c5b314910)
2014-10-18As per request by IndStreusel1-0/+8
2014-10-18Renamed DeprecationWarning to DeprecationCaseWarning, since that's what it ↵Haru3-15/+15
is about. Signed-off-by: Haru <haru@dotalux.com>
2014-10-18Revert "Some Quality of Life Changes"Haru5-220/+19
- This reverts commit 4ac673941714032ada6d26fb60936ec510bbe496. - The commit breaks some legacy code. It'll be pushed again once some things are fixed. Signed-off-by: Haru <haru@dotalux.com>
2014-10-18HPM Hooks UpdateHercules.ws3-38/+0
Signed-off-by: HerculesWSAPI <Hercules@efficiently.awesome>
2014-10-18Fix bug:7454Michieru11-79/+59
* 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-18Some Quality of Life ChangesTaylor Locke5-19/+220
checkquest deprecated; Use questprogress instead for a more logical quest log checking command. getbrokencount command added to get amount of broken equipment. setdragon and setmadogear deprecated; use setriding instead. setriding now handles all combat mounts.
2014-10-18HPM Hooks UpdateHercules.ws1-6/+6
Signed-off-by: HerculesWSAPI <Hercules@efficiently.awesome>
2014-10-18Correctly fix bug:8225 gentle touch revitalize now reduce damage correctlyMichieru2-12/+12
2014-10-16Fix warning when compile in linuxMichieru1-2/+2
2014-10-15Fix Hovering Booster should be equip to cast HoveringMichieru1-0/+8
2014-10-15Fixes some typo on replacestr.dastgir1-1/+1
(Bug:8396)
2014-10-14Update atk2 of all mob to match with official.Michieru1-1301/+1301
Thanks to exneval and Playtester
2014-10-13HPM Hooks UpdateHercules.ws3-13/+139
Signed-off-by: HerculesWSAPI <Hercules@efficiently.awesome>
2014-10-13* Monster skill use behavior, ranges, position lag fixesMichieru11-94/+324
- 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)