Commit Graph

850 Commits

Author SHA1 Message Date
Cydh Ramdh
8baa1d7e0c * Various server config cleanups
* Change some config variables that use `char` to `StringBuf`. So, don't need to change the char length anymore.
  * Renamed some inter table config variables postfix "_db" to "_table".
  * Added table checks for login-server (Account, IP Ban, & Login Log), map-server.
  * Regroup map-server table variables to `struct MapServer_Schema mapserv_schema_config`.
  * Regroup map-server global config to `struct Map_Config map_config`.
  * Split log file or table names in `log_athena.conf`. File path to `log_path: log/` and extension to `log_extension: .log`. So, if logging is enabled by using file or table, don't need to rename all log names.
  * Removed unnecessary configs in map_athena.conf: `help_txt`, `help2_txt`, and `charhelp_txt`.
  * Removed unused file 'conf/charhelp.txt'.

* Added new StringBuf function
  * `StringBuf* StringBuf_MallocInitial`
  * `StringBuf* StringBuf_FromStr`
  * `void StringBuf_InitialInit`
  * `int StringBuf_PrintfClear`

* Thanks to @aleos89 and @Mendonn at #91 for that StringBuf

Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2016-02-22 12:34:29 -05:00
aleos89
95a8d656a2 Follow up to b307ae8
* MD_FIXED_ITEMDROP only applies to renewal level penalty mod.
2016-02-13 08:27:19 -05:00
aleos89
79d6eb29ee Compile Warning Cleanup
* Resolves some warnings from the gcc compiler.
2016-01-30 11:47:03 -05:00
aleos89
b307ae8004 Added MD_FIXED_ITEMDROP mob mode
* When active the mob's drops are not affected by item drop modifiers.
2016-01-30 11:20:20 -05:00
Playtester
78419baa76 Monster random walk code optimized (fixes #208)
* Monsters will now always find a cell to walk to on first attempt as long as there is at least one cell available
* Performance for searching a cell improved, a monster no longer tries the same cell twice
* Removed the "MOB can't move" warning by default; the warning could appear with legit behavior like using Icewall and actually made the monster re-spawn
* Added a config option to monster.conf, where you can re-enable the warning and the re-spawning again
2016-01-30 14:33:52 +01:00
Playtester
4fdcb2ea61 Official monster/MVP target selection (fixes #926)
* Monsters with mode MD_CHANGETARGET_MELEE will now only change targets on "attack" state if they are attacked by a normal attack
* Monsters will change targets if the target is within "attack range+1" distance instead of a static distance of 3
* When a monster gets attacked, it will now switch to the attacker even if the attacker is farther away than its current target and the current target is auto-attacking it
* Angry mode monsters will now always switch target to the first person that attacked them
2016-01-23 18:14:23 +01:00
lighta
da205da728 Merge pull request #847 from rathena/hotfix/issue772
Fixed #772.
2015-12-31 01:47:00 -04:00
lighta
1ed2c92995 Merge pull request #822 from RomeroMalaquias/master
Avoiding conditional directives that break statements
2015-12-31 01:40:24 -04:00
Lemongrass3110
18de636c1f Fixed #772.
This is not a real fix but rather a fix which issues a warning for this kind of problem to show clearly that it is working as "intended".
2015-12-18 21:15:44 +01:00
Lemongrass3110
468bd6fa9b Fixed mvp hp bars not being updated.
Now mvps are correctly flagged as mvps on spawn already.
2015-12-15 17:24:46 +01:00
Romero Malaquias
64436bf42d checking sd before attempting to read 2015-12-10 01:18:16 -03:00
Romero Malaquias
ede159ee20 Avoiding conditional directives that break statements 2015-12-09 01:06:27 -03:00
marha
f1bb9743dc Fixing VIP rates to add configured rate. 2015-11-24 21:23:38 +01:00
icxbb-xx
d2d1fd21d3 *Add full Support 2015 client
- New EquipPackets Support v6
- add missing some old packets

Thank you to @Rytech and 3Ceam http://sourceforge.net/projects/v1-3ceam/
2015-11-21 21:33:16 +07:00
Lemongrass3110
a597e7bd34 Some more pointer casts and enum fixes. 2015-10-03 01:46:47 +02:00
aleos89
039e1b65a3 Quest System Update
* Added support for the new quests that grant item drops from mobs.
2015-09-17 13:24:42 -04:00
Aleos
6295c77d39 Merge pull request #457 from rathena/feature/script_engine_upgrade
Script Engine Upgrade
* More information here: https://rathena.org/board/topic/102946-script-engine-upgrade/
2015-08-31 14:26:15 -04:00
aleos89
9738c825cc Follow up to f53916e
* Fixed remaining memory leak.
* Cleaned up and optimized a few more ERS allocations.
2015-08-25 10:31:38 -04:00
Cydh Ramdh
c0e4b06005 Implemented 'Broadcast Obtain Special Item'
* Added flag &16 to add manually special item that will be broadcasted if: Dropped by monster -> player pick it up. Added items with this flag:
  * Gold_Key77 (7782)
  * Silver_Key77 (7783)
* Be used also to broadcast item in package/group with flag 'isAnnounced', replaced intif_broadcast().
* The message is using msgstringtable.txt on client side, make sure your translation is not messy.
* Credits:
  * fcba8a2161
  * 2761bb0af9

* Misc updates: Fixed job and class for items:
  * Sealed_Gloom_Under_Night_Gachapon (14696)
  * Sealed_General_Egnigem_Cenia_Scroll (14739)
  * Sealed_Vesper_Scroll (14740)
  * Midgard_Celebration_Lucky_Egg (14741)
  * Hero_Midgard_Egg (14753)
  * Safe_To_Smelting_Scroll (14758)
  * Limited_Edition_JOB_Battle_Manual (14765)
  * Rise_Midgard_Lucky_Egg (17494)
  * Lucky_Silvervine_Fruit_Box_III10 (17495)
  * Lucky_Silvervine_Fruit_Box_III110 (17496)
  * Epic_Heroes_Scroll (17519)
  * Majestic_Lucky_Egg (17526)

Signed-off-by: Cydh Ramdh <cydh@pservero.com>
2015-08-12 00:43:04 +07:00
Heler
9d47aa4ad9 Fixed warnings 2015-07-16 19:46:20 +03:00
Cydh Ramdh
890352a3a0 Bug Fixes:
* Fixed #492, thank @julia40124009
* Fixed #494, thank @Canoe

Signed-off-by: Cydh Ramdh <cydh@pservero.com>
2015-07-08 09:46:33 +07:00
Cydh Ramdh
d8da4dd2dc Follow up 9b87ca2b7c, added mob_random_db.txt in db/import-tmpl
Signed-off-by: Cydh Ramdh <cydh@pservero.com>
2015-06-30 05:10:04 +07:00
Cydh Ramdh
9b87ca2b7c Clean up Monster Random List
* Now using db/[pre-]re/mob_random_db.txt as main file.
* Removed hardcoded limit for random monster group.
* Introduce contants for monster random group, MOBG_*. Usage in `monster` script can be '-1-MOBG_ID' to determines 'summon monster from random summon list'.

Signed-off-by: Cydh Ramdh <cydh@pservero.com>
2015-06-27 13:11:49 +07:00
aleos89
0696125b82 Script Engine Upgrade
* Upgraded the script engine variables to no longer be limited.
* Increased array limit from 127 to 2 billion.
* Improvement in overall speed and storage size.
* All variable types now support arrays.
- Merge from HerculesWS/Hercules@82b583b. Thanks to those who worked on it.
2015-06-11 10:44:13 -04:00
Cydh Ramdh
cb2ffa24c8 Merge pull request #288 from 'hotfix/issue139'
Signed-off-by: Cydh Ramdh <cydh@pservero.com>
2015-05-01 19:29:04 +07:00
aleos89
f19e2dc6c7 Bug Fixes
* Fixed #273 - Keeping should end before mob status recalculation when changing class.
* Fixed #324 - BaseJob will now return the correct ID for Super Novice type classes.
* Fixed #357 - Cross Slash should work with 2 daggers, Huuma type weapons, or a dagger + shield.
* Fixed #370 - Corrected a few things with Devotion range checks.
* Corrected the skill fail message that displays when players have no bullets.
* Corrected Howling of Mandragora's duration.
* Updated Kunai Explosion damage.
* Added missing 20% damage reduction for Water Barrier.
* Mado License attack bonus is granted even without Madogear.
2015-04-15 14:55:58 -04:00
Capuche
308c4779c8 Updated ACTIVEPATHSEARCH
- Changed "ACTIVEPATHSEARCH" to only work with real walls and not walls you can shoot through
* Seems the position lag for which I have implemented this no longer occurs on my client (was something changed?)
* Previous implementation prevented monsters from attacking you through shootable walls
* Special thanks to Michi for notifying me about this issue

Credit @Playtester
2015-04-15 13:02:20 +02:00
Cydh Ramdh
3028c871e3 Added monster config as https://rathena.org/board/topic/101136-toggle-for-loot-search-type-closest-vs-random/
* `monster_loot_search_type` default is `1` for official behavior in e6caa95, and `0` for old Athena style -closest- item.

Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-03-30 12:54:09 +07:00
Cydh Ramdh
0b427a87e8 Fixed Cart Cannon skillratio, fixed #360. Thank @MrAntares
Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-03-26 21:56:20 +07:00
aleos89
2cee5b6ff1 Implemented Basic Unit Controller Script Commands
* Added getunitname, setunitname, getunitdata, and setunitdata script commands.
- getunitdata and setunitdata are open to suggestions for more values.
* Split unitstop to unitstopattack and unitstopwalk.
* Expanded unitskilluseid and unitskillusepos to be able to adjust casttime of skill.
* Added two new monster modes: MD_NORANDOM_WALK and MD_NOCAST_SKILL.
* The areamonster script command now saves spawned monster game IDs in an array called $@mobid[].
* Adjusted other monster spawning script commands to return game ID.
* Updated documentation to reflect changes.
2015-03-19 20:47:57 -04:00
Playtester
d4aa4c70a7 Walkpath loop fix (fixes #198)
- Move requests one cell west will now be ignored if the target cell is occupied
- You can now set official_cell_stack_limit to 0 to completely disable it including the limitation above
2015-02-28 15:41:18 +01:00
Cydh Ramdh
714e670327 Follow up 20695d629a
* Fixed #304
* Fixed #308

Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-02-27 02:49:19 +07:00
Cydh Ramdh
ddfe1683a5 Skill ID in array leftover~
Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-02-15 13:34:11 +07:00
Cydh Ramdh
9d3d34205f Skill DB clean ups
* Changed skill_db array to better memory allocation.
* Reduced MAX_SKILL_LEVEL from 100 to 10 (part of Hercules 0f4a50d135), also has changes on skill_get checks for skill level that more than 10.
* Reduced MAX_SKILL from 5020 to 1200 (actually only 1109 skills are used).
* Added macros for checking Homunculus, Guild, Mercenary, & Elemental skill ranges.
* Added skill check & index validation when player logged in and when @reloadskilldb.
* Corrected `enum e_skill_flag` order for SKILL_FLAG_REPLACED_LV_0's sake.
* Merged 'addtoskill' script command just as alias of 'skill' script command.
* Fixed #277
* Changed 'skill' script command flag to constant value

Signed-off-by: Cydh Ramdh <house.bad@gmail.com>

NOTE:
* Decreased memory usage by map-server reduced up to 50 MB.
* Decreased memory for each player because of mmo_charstatus::skill[] only has 1200 array, before is 5020.
* Please use skill_get_index() for accessing sd->status.skill[] or skill_db[], don't reckless use skill_id as array index.
* Please import upgrade_20150211_skillset.sql

Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-02-12 15:50:50 +07:00
Aleos
0e533fa7ab Revert "Skill DB clean ups" 2015-02-10 09:33:00 -05:00
Cydh Ramdh
72617ac98b Skill DB clean ups
* Changed skill_db array to better memory allocation.
* Reduced MAX_SKILL_LEVEL from 100 to 10 (part of Hercules 0f4a50d135), also has changes on skill_get checks for skill level that more than 10.
* Reduced MAX_SKILL from 5020 to 1200 (actually only 1109 skills are used).
* Added macros for checking Homunculus, Guild, Mercenary, & Elemental skill ranges.
* Added skill check & index validation when player logged in and when @reloadskilldb.
* Corrected `enum e_skill_flag` order for SKILL_FLAG_REPLACED_LV_0's sake.
* Merged 'addtoskill' script command just as alias of 'skill' script command.

Summary:
* Decreased memory usage by map-server reduced up to 50 MB.
* Decreased memory for each player because of mmo_charstatus::skill[] only has 1200 array, before is 5020.
* Please use skill_get_index() for accessing sd->status.skill[] or skill_db[], don't reckless use skill_id as array index.

NOTE:
* Please import upgrade_20150131_skillset.sql

Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-01-31 19:45:52 +07:00
Cydh Ramdh
90f08a4f08 Follow up 5feff01ddd
* Typo of error message in mob_readdb_itemratio()

Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-01-15 16:53:28 +07:00
Cydh Ramdh
5196eadb2b Fixed #204
* Separated how monster's skills to be assigned to each monster to `mob_skill_db_set()` function
* Added temporary `DBMap *mob_skill_db` to store monster skills by using `struct s_mob_skill`

Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-01-12 16:34:49 +07:00
Cydh Ramdh
5feff01ddd Follow up 54031eda9d
* Missing `item_ratio->nameid = nameid;` assignment when item_ratio isn't exist in db yet
* Modified @whodrops result for monster list to: "- <monster name> (<mob_id>): <rate>%"

Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-01-08 12:51:52 +07:00
Cydh Ramdh
d555cac992 Follow up 54031eda9d
Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-01-03 19:23:35 +07:00
Lemongrass3110
54031eda9d Seperated monster drop ratio adjustment into it's own function.
Fixes #146
2015-01-03 03:14:26 +01:00
lighta
8066bdef46 Data alignement
Align account_id and char_id to uint32 as this is the value they can be
in DB.
Remove src/test folder, unused
Remove useless #include to speedup compilation.
2014-12-19 21:31:04 -05:00
Playtester
0359420f42 Follow-up to 0fd7ba72df
- Fixed a compiler warning that showed when deactivating ACTIVEPATHSEARCH (special thanks to Napster for pointing it out)
2014-11-22 21:04:41 +01:00
Playtester
e6caa9569b Skill menu and looter fixes
- Fixed a bug that stopped characters server-sided and caused position lag when closing a skill menu (bugreport:9117)
- Fixed behavior of looter monsters (#125=fixed)
  * They will now always target the oldest item in their view range (which makes it seemingly random), rather than always the most south-western item available
  * Their loot range is now "0" meaning they need to be on the same cell as the item to loot it
  * Their AI will no longer get stuck in an endless loop when someone drops an item around the corner
2014-11-22 20:36:06 +01:00
Playtester
0fd7ba72df 1st Transcendent Spirit, monster position lag fixes
- 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
2014-11-21 15:42:38 +01:00
Playtester
d20ac845d1 Direction fixes
- 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)
2014-11-18 12:03:57 +01:00
Playtester
9d50c57e8a No cell stacking implemented (official version) (bugreport:9378)
- 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
2014-11-02 18:56:06 +01:00
Playtester
b6b6b1366a Autobonus in combos and monster target drop
- 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
2014-11-01 12:16:41 +01:00
Playtester
902c920b73 Knockback, stop effects and Skid Trap reworked, monster chase and direction updates, code optimizations
- 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
2014-10-30 20:12:18 +01:00
Playtester
b43b855d21 Improved Icewall walk block implementation
- 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
2014-10-28 23:40:39 +01:00