* Now inter-server always asking to login-server for account info instead using direct query to `login` table. Merged from HerculesWS/Hercules@da233d5
* Inter-server packet usage: HA 0x2720 & AH 0x2721
* Additional changes from inter-server to map-server to parse the account info result with type 1 by using packet 0x3808 for clif_account_name(). Just some changes from @lighta at his old diff
* Moved some messages to char_msg.conf
* Updated inter-server packet documentation
Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
- 1st Transcendent Spirit will now work as on official servers (#116)
* The max total stat that is granted by the skill is now BaseLevel-10 with a maximum of 50 instead of always 50
* It will now work as Marionette Control and calculate the bonus at cast time rather than overwrite all existing bonuses
* Agi Up and Blessing will now cancel the soul link
- Fixed various problems that caused position lags on the client (#118)
* Added a define ACTIVEPATHSEARCH in mob.c; if active (default and official), monsters will only grab targets if the walk path to the target is shorter or equal their search range; search range depends on whether the monster is moving or not (range2 for standing monsters and range3 for walking monsters); this requires a lot of CPU load, if it causes trouble, just comment the define for old behavior
* Fixed a bug that made monsters display "irregular movement with position lag" continuously when a status change ended that changed their walk speed
* OFFICIAL_WALKPATH now also applies to monsters
* If the path search fails while a unit is already moving, we will now issue of fixpos packet so that the unit does not only stop moving on the server, but also on the client
(Seems something changed with the file attribute or what is it, changed a whole file lines and always be assumed unstaged files/uncommited changes)
Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
- Updated the config setting attack_direction_change from 15 to 0 (official value); that means that a unit's direction will no longer change when it attacks; knock-back effects from e.g. Firewall will depend on the last direction the target walked into instead (bugreport:1322)
- Ensured that the default direction of a monster is always "north", so that immobile monsters will now always be knocked back to the south by e.g. Firewall on default settings, unless a skill like e.g. Backstab changes their direction (bugreport:1322)
- Autobonus3 will now also trigger when using ground skills (bugreport:6434)
- Fixed trigger chance of the Angelic Ring auto-bonuses (5% -> 10%) and that they didn't display any effect
- The 20% fire damage bonus now only applies if the base damage is at least 1 (#108)
(Note: The fix does not work for player damage in renewal.)
- Targets two cells away will now only take 100%+10%*level damage (#108)
- Fire Pillar can no longer hit plants (follow-up to 04a1173f7d)
- Acid Bomb will now hit every 500ms instead of every 1000ms on renewal (related to bugreport:6338)
- Land Protector now behaves like on official servers (bugreport:5237)
* Land Protector now protects from units being placed on it, no matter if they have splash range or not
* Land Protector no longer protects from damage from units not outside Land Protector that splash inside
* Meteor Storm no longer shows meteors falling if they would land on Land Protector
* Pneuma can no longer be placed next to Land Protector
* Also cleaned up the code a bit, so the checks are done where they should be done
- Ground skill splash ranges updated to their official values (bugreport:5237)
* Lord of Vermilion places units in a 11x11 area with 3x3 splash range each
* Storm Gust places units in a 9x9 area with 3x3 splash range each
* Heaven's Drive places units in a 5x5 area with no splash range
* Venom Dust now has a splash range of 3x3 and is consequently larger than before
- Storm Gust's knock-back behavior updated to official (bugreport:5237)
* Each of Storm Gust's units will knock back "Away from center"
* As units in the south-west are processed first, the knock-back direction will usually be north-east
* At the edges the knock-back direction will be "to the outside"
* Land Protector and Ganbantein will influence the knock-back behavior strongly, e.g. if Storm Gust has a hole in the middle, it will have a "suck in" effect
* Added a config option for those who want the old "random direction" behavior from eAthena
- Fixed warning for infinite warp where count_rewarp increased when the player was warped near a warp
Special thanks to Radian
Signed-off-by: Capuche <capucrath@gmail.com>
- Reduced the timer interval from 50ms to 20ms (official value)
* For a long time it is well known that the Aegis interval is 20ms, but devs have been hesitant to set it to that out of performance reasons; these days however, machines are better and there aren't really many 2000+ player servers anymore, so a 20ms interval is actually quite viable now.
* Setting the interval to 20ms makes the server perfectly in sync with the client that expects the server to have a delay of no longer than 20ms.
* All skills that are "chain-able" on official servers will now also be 100% chain-able here (previously it just worked to 40%), assuming there is no lag
* Skills with cast time will no longer go off 30ms later than officially
* Several others improvements in regards of client-server sync (timers are used almost everywhere)
* This might increase the CPU usage by up to ~50%, if you have trouble running your server with this, you can increase it again in timer.c (TIMER_MIN_INTERVAL)
- Strongly improved the Waterball implementation (bugreport:9382)
* The interval between Waterballs is now 150ms (previously 125ms); due to the timer interval it will alternate between 140ms and 160ms (yes, this is official)
* While the Waterball effect is active, players and non-boss monsters can no longer walk
* Added a server-sided canact delay each time a Waterball is shot, which is equal to the one the client gives; this is to prevent hackers from being able to mass-cast Waterball; you can still multi-cast Waterball if your aMotion is shorter than the Waterball interval (i.e. 186 ASPD or higher)
* The Waterball effect is no longer canceled when the target hides behind an obstacle, but no waterballs will fly and no damage will be applied; walkdelay will remain, but there won't be any canact delay for the caster (meaning he can cast another spell); if the target comes out of its cover during the duration, it will be hit again (this also fixes an exploit against MVPs)
* Waterball now has a max duration of 10 seconds, even if more water cells are available, the effect will stop; this means that level 10 monster water ball will now only hit up to 67 times
- Fixed Crimson Fire Formation having a knock-back effect although it shouldn't (bugreport:6949)
* It will hit once every 20ms with no knock-back, regardless of whether the target is undead, non-undead or a player
* If you want to it to display more "fluently" you would need to set the SKILLUNITTIMER_INTERVAL in skill.c to 20ms, but the performance loss is pretty big for something only this skill and Firewall would benefit from
- Bosses are now able to ignore skill-induced walk delay (#100)
* They can for example walk after casting Sonic Blow and Waterball (see above)
- Minor description improvements
- Fixed up the damage code in regards of damage against plants (bugreport:9380)
* Rewrote DAMAGE_DIV_FIX so that it rounds damage down when number of hits is negative (damage split on hits)
* Created a function battle_apply_div_fix that does not only call DAMAGE_DIV_FIX but also makes sure that damage can only become 0 when the custom config setting skill_min_damage is not set for the current skill type
* skill_min_damage is now 0 by default (official: all types can fail against plants as long as skills have negative number of hits), if set, all skills will deal as much damage as hits
* Restructured and renamed function now known as "is_infinite_defense" that will work for all 3 damage types and returns if damage is infinite for the current situation, it will now also properly consider all "MD_IGNORE" modes
* Fixed the order of processing of all 3 skill types in regards of plant damage: first all calculations are done, then plant damage is applied and then DAMAGE_DIV_FIX is applied
* Sonic Blow and Rapid Shower are now skills with negative number of hits (i.e. they can't hit plants officially)
* Traps can no longer ignore plant mode (only way to damage plant more is via status changes)
* Final Strike is now able to hit plants (deals 1 HP damage)
* When left-hand-wielding, you will now always deal 2 damage to plants per attack, regardless of whether double attack triggers or you don't even have a weapon in the right hand
* There will no longer be backhand damage to plants (Katar)
- Land Mine is now a single target skill, the trap still triggers in a 3x3 area, but will only hit the first target that touches it (issue:99)
- Changed the "Don't return reflect damage" flag from 0x1000 to 0x1000000 as apparently the other flag was already used; updated function description so it's easier to see
- Improved SC_SIGHTBLASTER structure slightly
- Typo fixes and description improvements
* Changed `mr` values to use constantan value
* Added check for IT_SHADOWGEAR's script restriction before executing it
Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
- Split config cell_stack_limit into custom_cell_stack_limit (previous feature) and official_cell_stack_limit (see below)
- Expanded map_count_oncell by a flag parameter, currently only one flag is supported: only count standing units (needed for official cell stack feature)
- Added a new function map_closest_freecell that will return the closest free cell using the same order that official servers use
- Monsters will now actively search for a free cell when starting to walk randomly and when unlocking target
- When any unit finishes walking (regularly) and is not on a free cell, it will now actively search for a free cell
- Step actions will be delayed until a suitable cell was found, they will even be executed when the player walked slightly out of attack range
- dispcolor or displaymessage
displaymessage("<message>"{,<color>{,<Account ID>}})
now you can send message with color to player
Hex color see more : http://www.colorschemer.com/online.html
- Fixed NPC_STONESKIN, NPC_ANTIMAGIC, NPC_MAGICMIRROR (bugreport:6118, bugreport:9375)
* Using the skills will now be 100% successful (can't be resisted)
* Fixed skills not working for players (e.g. Ulfhedinn, Mithril Magic Cape, Platinum Shield)
* Fixed level 5 and 10 not working at all
* NPC_STONESKIN and NPC_ANTIMAGIC will no longer change DEF/MDEF, instead they will increase/reduce physical/magical damage percentually, this IS official behavior
- Fixed "Autocast on magic hit" having its chance halved (bugreport:9377)
- Fixed Autobonus not working in combos (bugreport:8300)
* Combos will now have a "pos" variable that saves the combination of equipment slots used
* Autobonus now works with combined positions rather than just a single position
* Autobonus should now also work with all equipment slots instead of just the first 15
* This does NOT fix problems with multiple auto-bonuses activating at the same time
- Monsters will now stop instantly if their target is completely non-existent
* This is mainly for looters that had their loot taken
* Hide and most other situations still use the configuration setting monster_chase_refresh
- Issue on packetver 20131223 or newer where skill-damage with type 6 would be considered by the client as endure-type, fixing by swapping with value 8 which presents no different graphical representation than it'd otherwise. (Hercules 1c1e10a)
- Implemented official party-leader-changed-packet (Hercules 14475dc)
- Add Older Packet ShowScript & Implemented to montransform status change parameter optional
- Add support for packet ZC_SKILL_POSTDELAY_LIST. (idAthena)
- Created a new function unit_blown_immune that will now serve as the central function to determine if an object can be knocked back or stopped (bugreport:7637)
* Moved the check code from skill_blown to unit_blown_immune
* Several stopping effects and traps will now use unit_blown_immune to check if the object can be stopped, if not, the object will always move to its target cell before stopping
* Bosses and monsters immune to knockback will now no longer be stopped by such traps
* Expanded the configuration skill_trap_type and moved its checks into unit_blown_immune, so it's possible to switch the "no stop" behavior off for GVG/BG and monsters individually
* Long-term we should make all skills use this function to check for knockback immunity, it will make the checks a lot cleaner and more centralized
- Monster chase range updates (bugreport:7637)
* Updated monster_chase_range in monster.conf from 1 to 3; I originally thought official value is 1, but doing some in-depth tests myself I realized it's 3 for the most important situations
* When a monster cannot issue new "move" commands because it was affected by a status change, but is still moving due to knockback immunity, it will no longer unlock its target and stop
* Fixed a bug that always caused the chase path monsters calculated to be 1 cell too short causing them to recalculate their path one cell before their goal every single time
- Fixed the direction calculation once again and optimized it at the same time (bugreport:9373)
* Now the calculated direction is 100% official, really truly, checked it myself with every single cell and various skills
* Added a new function map_calc_dir_xy that allows to check for a direction between two cells without the need of a block_list
* map_calc_dir will now just use map_calc_dir_xy to avoid duplicate code
- Implemented Skid Trap properly (bugreport:9373)
* The direction of the knockback will now be "away from position of the caster during cast" rather than "away from trap"
* Skid Trap will now stop the target for 3 seconds; this works even in GVG/BG and on bosses, even though the actual knockback doesn't happen
- Percentual bonuses to MaxHP and MaxSP will now always be rounded down (Aegis style)
- Added a security check when calculating MaxHP and MaxSP so there can't be a number underflow (bugreport:9369)
- When an auto-vendor gets logged out because of at_timeout, his store will be deleted and no longer restored after server restart (bugreport:9370)
- Moved the configuration setting "icewall_walk_block" to monster.conf
- Split the configuration into mob_icewall_walk_block and boss_icewall_walk_block so it can be configured for bosses separately
- Expanded the configuration
* If the value is set to 1, monsters on an ice wall cell will behave like trapped monsters, that means they won't be able to move at all, they will use idle skills and if they are attacked while nobody is in their attack range, they will use their rudeattacked skills; this is equal to official behavior of bosses
* If the value is set to 2-255, it will behave as before but monsters in the AI loop now use both idle and chase skills, but will no longer use their rudeattacked skills even if attacked from range; this is equal to official behavior of normal monsters
* Official values would be "220" for normal monsters (loop until Icewall expiration) and "1" for bosses (behave like trapped monster) on most official servers, but as some official servers have a less exploitable implementation (from looping AI only a limited amount of times up to outright blocking Icewall on all maps with bosses), we decided for less exploitable default values for now which are 75 for normal monsters (loop 15-35 seconds) and 0 for bosses (impossible to trap in Icewall)
- Cleaned up the rudeattacked code a little so it's easier to read
- If you now cast Icewall on an existing ice wall cell, the duration (HP) will no longer be refreshed
- If casting Icewall doesn't change any cell, there won't be a skill animation/sound anymore (SP will still be consumed)
- Fire Pillar is no longer a trap and can no longer be hit or knocked back in renewal (bugreport:144)
- Fixed Super Novice Spirit not working and giving compiler warnings (bugreport:9366, bugreport:9365)