Commit Graph

92 Commits

Author SHA1 Message Date
Lemongrass3110
827517f8cf Cleaned up a few TODOs from #7963 (#8254) 2024-05-02 22:44:31 +02:00
Atemo
5df7de2b15 Added missing sd check for clif_skill_fail (#7963)
Fixes #8239 

Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
2024-04-15 22:38:46 +02:00
Lemongrass3110
cb42dceb87 Switched most C headers to C++ (#8225) 2024-04-07 22:14:51 +02:00
Vincent Stumpf
61c2480d89 Add explicit [[fallthrough]] attributes (#8054)
Fixes #7918
2023-12-29 01:08:24 +01:00
Lemon
7c153416bc Improved randomness (part 1) (#7882)
Faster and with no module bias

Removed rnd_init, rnd_uint32 and rnd_uniform
From now on we will only use rnd_value(min, max) for values in range [min, max] and rnd_chance(chance, base) for chances

Fixes #7881
Fixes #7883
Fixes #7884
Fixes #7885

Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
2023-12-20 00:12:15 +01:00
Aleos
442cf87fcc Fixes monster escape AI issues (#7927)
* Fixes #7904 and fixes #7916.
* Resolves NPC_RUN and NPC_RANDOMMOVE monsters not always reaching their intended escape distance.
* Resolves Marine Sphere calling the run skill too early resulting in the distance escaped not always being the same.
* Resolves Wink of Charm not forcing the target to fail skill use on the caster.
* Renames the monster alchemist state to can_escape to fit multiple uses.
Thanks to @Leemonn and @Lemongrass3110!
2023-09-14 12:41:47 -04:00
munkrej
6c8b29e91b 4th Improvement - Shadow Cross (#7710) 2023-04-15 17:46:18 +02:00
Atemo
801c3c782e Updated disablenpc/enablenpc (#7671)
* Updated disablenpc/enablenpc script commands using OPTION_HIDE instead of OPTION_INVISIBLE, to correctly display the effects when the npcs are disabled/enabled. The other behaviors are kept.
2023-04-10 23:06:55 +02:00
Atemo
db5874d677 Updated unitskilluseid and unitskillusepos script commands (#7684)
* Added the parameter 'ignore_range' to ignore the skill range defined in skill_db.yml
2023-04-07 01:09:44 +02:00
Vincent Stumpf
819b7cb361 Fix ASAN crashes and LSAN leaks (#7649) 2023-03-20 09:32:41 -07:00
Vincent Stumpf
e235c9cab4 Change common and config includes to use <> (#7596) 2023-02-12 12:46:06 -08:00
Atemo
ef602d98cb Multiple dynamic npc (#7486)
* Vectorize npc_id_dynamic to support multiple dynamic npc with different ids

Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>

Thanks to @dimasshotta and @eppc0330 !
2022-12-16 21:22:31 +01:00
Singe Horizontal
8eac71f57f Cleaned struct tokens for map_session_data and status_change (#7490)
Fixes #7492
2022-12-16 19:16:29 +01:00
Vincent Stumpf
1f4c068c39 Refactor status change entries (#7356)
* Make map_session_data a class, call constructor/destructor on alloc/free

* add getSCE

* add create, delete, clear SCE

* Use getSCE, make data access private

* add a cache for last-fetched status
2022-12-13 23:47:53 -08:00
eppc0330
0e1285a94b Remove range & path check for NPC's skill cast (#7422) 2022-11-19 08:06:40 -05:00
Lemongrass3110
a763ad0629 Implemented dynamic NPCs (#7402)
This is required for features like #6640
Added COLOR_LIGHT_YELLOW
Cleaned up color definitions, its useless to store them as string first.
Dynamic NPCs will stay when you switch map and come back in time.
Dynamic NPCs will be removed instantly when you log out.
You can only create one dynamic NPC at a time.

Thanks to @Atemo!
2022-11-07 00:41:10 +01:00
Aleos
f8cd4aa8c7 Implements petautobonus script commands (#7053)
* Fixes #7038.
* Implements script commands: petautobonus, petautobonus2, and petautobonus3.
* This allows pets to utilize the same autobonus features that players can use without having to check for the equipped item position.
Thanks to @EditorFc's suggestion and @Lemongrass3110!
2022-09-16 12:46:53 -04:00
Aleos
4a43856271 Adjusts Enchanting Shadow behavior (#7124)
* Fixes #7104.
* Implements Shadow Scar as a timer on units.
* Implements the official packet for Shadow Scar counter.
* Enchanting Shadow can now be triggered by skills as well as melee.
* Removes the hit count limit.
* Adjusts the damage rate of Shadow Wounds to increase by 3%.
* Adjusts the duration of Shadow Scar from 30 seconds to 15.
Thanks to @eppc0330 and @Lemongrass3110!
Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
2022-09-06 17:05:19 -04:00
Aleos
a2ce09fd56 Resolves spawn direction not saving at relog (#7210)
* Fixes #7195.
* Adds a new save field for battle config spawn_direction which was not working for players who log out and in.
Thanks to @SapitoSucio and @Lemongrass3110!
2022-08-30 12:50:50 -04:00
Lemongrass3110
b1b371f4b8 Cleaned up status_change_end (#7211)
* Removed leftover old debug info that made it necessary to the hide the real function behind a define.
* Introduced a C++ default argument for timer id, as the timer id is only needed a single time, when the status expires naturally.
* Replaced all currently existing calls that had INVALID_TIMER as argument and made use of the new default argument.
2022-08-26 22:23:40 -04:00
Aleos
aad3a70bbc Fixes script commands unitwalkto/unitwalk (#7007)
* Fixes #5340.
* Resolves an issue where monsters may tend to lose their target if they are too slow and the destination is too far when using script commands unitwalkto/unitwalk.
* Allow script command unitstopwalk to remove the state tracking for script commands unitwalk/unitwalkto.
* Print a warning to the console if a unit is forced to walk again and hasn't yet reached its initial destination.
Thanks to @NeutralDev and @Lemongrass3110!
2022-06-07 15:07:51 -04:00
Daegaladh
fa363b972d Fixed dead monsters stuck after killed (#5263) 2022-05-20 13:27:26 +02:00
Playtester
f5e75d28ec Fixed looters getting stuck (#6958)
- Fixes #6939
- Looters will now use complex pathing to find a way to an item they can see
- Monsters no longer stop when using NPC_EMOTION or NPC_EMOTION_ON
- Added a security check to prevent endless loops when easy pathing is used (no longer used by default)

Special thanks to @secretdataz.
2022-05-18 23:25:37 +02:00
Playtester
c127d2875b Fixed MIN_MOBLINKTIME not working (#6904) 2022-05-01 08:29:58 +02:00
Playtester
5181c70626 Improved chasing behavior (#6903)
- Fixes #6899
- Monsters will now always walk to the end of their chase path before checking for their target again (you can still change this by changing monster_chase_refresh in monster.conf)
- A monster's chase range is now exactly as defined in mob_db.yml except when it was just attacked
- A just-attacked monster's chase range is now only enhanced until it reaches its original target cell
- Ranged monsters will now always stop when their target is in attack range, even if they still have attack delay
- Fixed a small math error when calculating chase path
- When a monster loses its target, it will now always spread to an empty cell when it was chasing something and reaches the end of its chase path, but will no longer spread when it was already attacking the target that disappeared (it will still spread if you set the custom mob_ai setting for this)
- Fixed monsters not starting to chase a target while they are randomly walking

Thanks to @aleos89 for support.
2022-04-29 21:34:39 +02:00
Aleos
302168d1f3 Fixes SCB calculations (#6733)
Follow up to d739e8f.
Resolves issues with status calculations getting improperly checked.
Thanks to @mazvi, @kaninhot004, and @Rayvakarian!
2022-03-23 10:40:35 +01:00
Aleos
242983f0dd Fixes Wug Rider allowing physical attacks (#6714)
* Fixes #6713.
* Physical attacks are now disabled when a Ranger-type class is riding a Wug.
Thanks to @Surefirer!
2022-03-18 14:10:43 -04:00
Lemongrass3110
0663e7b43d Fixed atcommand jail (#6678)
Fixes #6677

Thanks to @gen1x8
2022-03-14 20:35:45 +01:00
Cydh Ramdh
f28d207274 Implementation of Status Changes in YAML (#1685)
* Removes the initialization of Status Changes via hard-code and puts it into YAML form.
* From this database it is much easier to delegate icons, calc flags, opt flags, miscellaneous flags, and several other things for all stats changes.
* Statuses can quickly be reloaded via atcommand reloadstatus.
Thanks to @cydh, @Atemo, @Lemongrass3110, and the others who helped!
Signed-off-by: Cydh Ramdh <cydh@pservero.com>
Co-authored-by: atemo <capucrath@gmail.com>
Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
2022-03-10 13:11:59 -05:00
Lemongrass3110
7556453dfc Merge of Rytech's 4CrAM (#6414)
Merged Rytech2/4CrAM-Open@978d4fc406

Original author is @Rytech2 and all credits belong to him.
Cleanups by @Lemongrass3110, @aleos89 and @Atemo.

Co-authored-by: Rytech2 <rytech16@gmail.com>
Co-authored-by: aleos <aleos89@users.noreply.github.com>
Co-authored-by: Atemo <capucrath@gmail.com>
2021-12-30 20:25:19 +01:00
Atemo
4a778815a3 Converted mercenary_db to YAML format (#6101)
* Converts the Mercenary Tables file into YAML.
* Includes CSV2YAML converter.
* Fixed mercenary name not properly displayed after moving

Co-authored-by: Aleos <aleos89@users.noreply.github.com>
Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
2021-12-07 00:49:44 +01:00
Sandro Junior
a028a74ae5 Fix SC_WINKCHARM behavior (#6384)
Adds a check to prevent func unit_walktoxy_timer to use DIR_CENTER direction (which has -1 value) on SC_WINKCHARMed mobs. Using this direction may cause dump values when accessing dirx or diry array;

Fixed timer mismatchs reported in https://github.com/rathena/rathena/issues/6371#issuecomment-982108186

Fixes #6371 

Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
2021-12-06 14:59:09 +01:00
Atemo
4cd2ef747d Walking npc now ignore official_cell_stack_limit (#6379) 2021-12-02 14:53:17 +01:00
Atemo
a205287307 Converted elemental_db to YAML (#6102)
* Converts the Elemental Summons Tables file into YAML.
* Includes CSV2YAML converter.

Thanks to @Lemongrass3110, @aleos89, @secretdataz !
2021-11-26 00:53:35 +01:00
Atemo
3abc86e02d Wave mode instances - walkthrough conversions (#3884)
* Wave mode instances - walkthrough conversions

* NPC_EMOTION and NPC_EMOTION_ON disrupted the walking system and have been restricted on the maps.
* Implemented AI_SPECIALs. AI and normal monsters can naturally fight each others. However monsters with AI_SPECIAL can't be hit by normal monsters.

* Implemented mob_setidleevent command.
`mob_setidleevent <GID>,<event>;`
This command will attach an event label to the monster with the given <GID> which will execute when the <GID> is idle.

* Added parameters to unitskilluseid and unitskillusepos
-- `<cancel>`: define if the skill can be interrupted when hit (by default the cancel value was 'castcancel' from skill_db.txt)
-- `<Line_ID>` : the monster will say the message from 'Line_ID' in mob_chat_db.yml when casting the skill

* Added `UMOB_IGNORE_CELL_STACK_LIMIT` for setunitdata/getunitdata script command.
When true, the monster will ignore the stack limit (max number of characters that can stack within a single cell) defined by 'official_cell_stack_limit' in misc.conf

* The script is disabled by default like on KRO

Thanks to @Lemongrass3110 @aleos89 @Badarosk0 @sigtus @Questune09 !
2021-10-26 14:56:47 +02:00
Lemongrass3110
373d724bdf Follow up to df7ccca 2021-09-20 20:40:57 +02:00
Aleos
a84e731f79 Cleans up the skill unit group storage (#6195)
* Fixes #2217.
* Adjusts the storage for skill unit group from DBMap to unordered_map.
* Removes the MAX_SKILLUNITGROUP limit.
* Cleans up memory management to utilize shared_ptr.
Thanks to @Lemongrass3110!
Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
2021-08-23 14:11:53 -04:00
Atemo
01a3caf9f9 Converted castle_db.txt to YAML (#6077)
* Converts the Guild Castles Database into YAML.
* Includes CSV2YAML converter.

Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
2021-07-12 23:54:14 +02:00
Aleos
3d4021bfc6 Job Improvement Bundle patch (#5517)
* Updates various skills following kRO's job improvement patch.
* Change log: https://ro.gnjoy.com/news/notice/View.asp?BBSMode=10001&seq=7275&curpage=2
* Does not include changes to homunculus HP/SP level up bonuses as more information is required.
Thanks to @ecdarreola, @attackjom, @Haydrich, @rye305, @eppc0330, @Badarosk0, and @Lemongrass3110!
2021-05-07 08:23:42 -04:00
Aleos
7992e0891b Converts the mob database to YAML (#5435)
* Combines mob_race2 and mob_drop databases into one.
* General cleanups and optimizations.
* Includes CSV2YAML conversion tool.
Thanks to @vstumpf, @lukasrmattos, and @Lemongrass3110!
2021-02-16 17:09:06 -05:00
Atemo
a33887b59f Questinfo correction (#5523)
* Corrected questinfo bubble not always being displayed
* Docs updated
* Changed qi_display to std::vector

Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>

Thanks to @lighta @aleos89 @Lemongrass3110 !
2021-01-15 22:49:35 +01:00
Daegaladh
8682a9e02e Small walkpath optimizations (#5322)
* Thanks to @mattthewaz
Co-authored-by: Aleos <aleos89@users.noreply.github.com>
Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
2020-10-27 11:58:35 +01:00
Lemongrass3110
ed473d066d Cleaned up hat effect code (#5462)
Converted from self written container to std::vector.
Converted clif code to struct usage.
2020-10-23 01:07:12 +02:00
Aleos
04cfe17b2b Converted item database to YAML (#4335)
* Combines item_avail, item_buyingstore, item_delay, item_flag, item_nouse, item_stack, and item_trade databases into one.
* General cleanups and optimizations.
* Includes CSV2YAML conversion tool.
* Includes YAML2SQL conversion tool.
* Adjusts dummy_item from being created by malloc and now creates it by make_shared.
* Item combos are now stored as a STL.
Thanks to @Lemongrass3110, @Atemo, and @cydh!
Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
2020-10-21 19:02:11 -04:00
Aleos
fcdcce2cfa Fixes NPC_RUN behavior (#5236)
* Fixes #3622 and fixes #5220.
* Monsters now properly escape from the attacker.
* NPC_RUN should determine distance based on skill level > 1.
* Resolves Sphere Mine when summoned by an Alchemist not escaping.
Thanks to @Balferian, @Indigo000, and @Daegaladh!
2020-07-28 14:57:09 -04:00
Aleos
cef956d352 Soul Reaper souls now persist relog (#5142)
* Fixes #5032.
* Soul Reaper souls will now persist relogs.
* Removed the soul_timer as the timer data is stored to the status change.
Thanks to @laziem and @Tokeiburu!
2020-06-29 13:49:01 -04:00
Daegaladh
005a2c4f48 Fixed slave monsters not teleporting with their master (#5150) 2020-06-26 17:29:49 +02:00
Atemo
0f9dde4e33 OnTouch support when npc is walking (#5134)
* Added support to trigger 'OnTouch'/'OnTouch_' npc label when a npc is moving through npcwalkto script command.
* Fixed #502

Thanks to @aleos89, @wbgneto !
2020-06-26 15:59:39 +02:00
Lemongrass3110
d87ac21986 Added support for skill scale display (#5041)
Fixes #4530

Thanks to @Balferian
2020-06-04 19:53:19 +02:00
CairoLee
bf4b41bd66 Fixes a crash caused by invalid skill ID (#4935)
* Fixes #4934.
* Fixes a potential crash when using atcommand useskill.
Thanks to @Stingor and @CairoLee!
2020-05-20 09:22:53 -04:00