125 Commits

Author SHA1 Message Date
Atemo
11d84fb634 ZC_ACK_REQNAME_BYGID 2024-06-01 16:45:29 +02:00
Playtester
5d232db89e
Spawn and Free Cell Search Behavior (#8324)
- When searching for a map-wide free cell, the tiles 15 cells from the edge are no longer considered
  * Added a configuration to change the edge size to any value between 1 and 40
- When searching for a free cell, the tiles 4-5 cells from the edge are now considered invalid and trigger a retry
  * If you make the edge size smaller than this, it will use edge size instead
- Searching for a free cell now defaults to 50 tries, but if the "no spawn on player" option is active, those failed attempts are not counted towards the limit anymore
- When a monster spawns in a defined area there will now be 8 attempts to spawn it on a valid cell within the area and then one attempt on the center cell; if all 9 attempts fail, there will now be 50 tries to spawn it map-wide before it gives up
- When a monster has fixed spawn coordinates, but those coordinates are a wall, it will now spawn in a random location map-wide instead
  * This also applies to icewall blocking the cell unless the boss_monster command was used
- Each monster in an area spawn will now receive its own spawn center within the spawn area on server start
  * This results in the spawn area being larger but having a bias towards the center
  * Added a configuration to disable this behavior
- Fixed slave monsters always being active and constantly calling the "search freecell" function even though neither them nor their master have been spotted yet
- Fixed map server crash when setting no_spawn_on_player to 100 (follow-up to 33b2b02)
- Updated prontera field spawns to official episode 18+
- Updated all champion mob respawn times to 3 minutes and sorted them by map name
- Fixes #8300
2024-05-19 17:12:44 +02:00
Jittapan Pluemsumran
d445497870
Converted a bunch of packets to structs (#8295)
Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
2024-05-09 23:06:32 +02:00
Lemongrass3110
b48948822a
Replaced NULL with nullptr (#8298) 2024-05-03 19:38:13 +02:00
Lemongrass3110
cb42dceb87
Switched most C headers to C++ (#8225) 2024-04-07 22:14:51 +02:00
Atemo
e965e2794b
Added null pointer checks in map_delblock (#7930) 2024-01-26 15:02:51 +01:00
Sola丶小克
b0971c0f67
Refactor some MySQL connection variables (#8059) 2023-12-29 15:37:01 +01:00
Vincent Stumpf
f2a3bad3e2
Cleanup uses of SWAP macro (#8051) 2023-12-27 11:36:46 +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
Lemongrass3110
e0cf16d3e9
Fixed pc_isequip calls (#8037)
Fixes #8034

Thanks to @alisonrag
2023-12-19 20:22:48 +01:00
Vincent Stumpf
08a1c41d1b
Refactor MapFlag accessors (#7783)
Use methods instead of direct member access.
2023-06-03 17:38:29 -07: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
Jittapan Pluemsumran
1985662045
Made debug ShowStatus calls easier to disable (#7618)
Co-authored-by: Aleos <aleos89@users.noreply.github.com>
2023-02-21 11:34:52 +07:00
Vincent Stumpf
e235c9cab4
Change common and config includes to use <> (#7596) 2023-02-12 12:46:06 -08:00
Vincent Stumpf
eff6131087
Speed up loading of npcs and maps (#7597) 2023-02-12 11:01:14 -08:00
Lemongrass3110
14cb61d598
Removed mapindex from char-server (#7533)
Converted last_point to mapname
Converted save_point to mapname
Converted memo to mapname
Converted start point to mapname
Removed default map
Converted party member to mapname
Converted maplists to mapname
Removed mapindex loading
Fixed instance loading with multiple map-servers
Fixed castle loading with multiple map-servers
Fixed battleground loading with multiple map-servers
Fixed warping between map-servers

Thanks to @aleos89 for his help!
2023-01-11 16:54:53 +01:00
Lemongrass3110
9dda166c0e
Converted cash shop database to YAML (#6299)
Co-authored-by: Atemo <Atemo@users.noreply.github.com>
Co-authored-by: Aleos <aleos89@users.noreply.github.com>
2023-01-05 18:30:07 +01:00
Lemongrass3110
39d5a02a31
Initial release of adventure agency (#7224)
Thanks to @Dia, @OptimusM, @Balferian and @ecdarreola
2022-12-21 01:17:42 +01:00
Lemongrass3110
2c4ee64b59
Start refactoring the core to C++ (#7303) 2022-12-20 23:37: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
Vincent Stumpf
4661016445
Generate Reputation UI bson files (#7340) 2022-11-27 00:53:54 -08:00
Jittapan Pluemsumran
bc4934373d
Implemented itemmoveinfov5.txt generator (#7457) 2022-11-26 17:33:27 +07: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
d7bf5ebb58
Adds support for macro detection (#7315)
* Adds the official client macro detection system.
* Includes the ability to load imagery at server boot.
* See doc/captcha_db.txt for more information!
Thanks to @Asheraf and @Lemongrass3110!
Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
2022-10-14 10:54:19 -04:00
Lemongrass3110
5b396bf7f1
Fixed some more hardcoded directions (#7317)
Replaced hardcoded numbers with their respective constants to increase maintainability and readability.
2022-10-12 22:38:22 +02:00
Vincent Stumpf
47c9a36215
Refactor generator to support future features (#7214)
Co-authored-by: Akkarinage <mike.langford@industrial-illusions.net>
Co-authored-by: Aleos <aleos89@users.noreply.github.com>
2022-09-25 00:37:21 -07:00
Vincent Stumpf
c751ca6b74
Client Navigation Generator (#6023)
Creates navigation files for the client.
2022-08-26 21:31:45 -07: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
Vincent Stumpf
0ac52d0bb4
Initial support for web service for newer clients (#5731)
Co-authored-by: Jittapan Pluemsumran <secret@rathena.org>
Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
2022-08-16 15:10:18 +02:00
Atemo
c5031982d2
Allow the player to stand on a cell occupied by disabled/hidden npc (#7154)
Fixed #7153
2022-08-07 21:54:53 +02:00
Aleos
c2303c8f65
Resolves a mapflag overlap warning with PK Mode (#7109)
* Fixes #7099.
* Hides a warning message when PK Mode is enabled and a Battleground mapflag is attempted to overwrite the PvP mapflag.
Thanks to @LolyAll!
2022-07-18 11:08:44 -04:00
Aleos
a7a9b68ed2
Increases the server config character limit (#7006)
* Fixes #5324.
* Adjusts the Login, Character and Map server's ID, password, schema, and codepage character limit from 31 to 1023.
* Adjusts the Login, Character, and Map server's IP character limit from 63 to 1023.
* Removes password echos during failed connections.
Thanks to @reunite-ro!
2022-06-07 11:23:50 -04:00
Aleos
9bf78ee5a3
Clean up to how map cache is loaded by mode (#6984)
* The db/(pre-)re/map_cache.dat now contain maps that are only different between the modes.
* Moves all general maps into db/map_cache.dat for loading across both modes.
* Adds support for the new RSW water height.
* Adds an error message when loading GRFs if the file size is over 2GB.
2022-05-26 09:55:46 -04:00
Cydh Ramdh
16ccad42e8
Update vending and buyingstore on warp (#6718)
Fixed #6671, vendor & buyer location never been updated if the location is changed
Added MF_NOBUYINGSTORE and CELL_NOBUYINGSTORE to separate from MF_VENDING & CELL_NOVENDING
Added some missing check for buyingstore states
Updated mapflag doc
Added new constants

Co-authored-by: Aleos <aleos89@users.noreply.github.com>
Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
2022-03-31 23:08:35 +02: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
Aleos
47e515888c
Changes mapflag storage type to vector (#6624)
* Changes the mapflag storage type from an unordered_map to vector giving it a performance boost.
* This changes all lookups and modifications to O(1) rather than a possible O(log).
2022-02-18 08:10:57 -05:00
Sader Fawall
ac7292c92d
Allow creating instance without timer or data (#5112)
* Allow creating instance with no timer
* Added NoNpc to prevent copying NPCs from the source map
* Added NoMapFlag to prevent copying Mapflags from the source map
* Added instance_list script command to retrieve the instance IDs for the given map name/instance mode

Co-authored-by: Aleos <aleos89@users.noreply.github.com>
Co-authored-by: Atemo <atemo@users.noreply.github.com>
Co-authored-by: Lemongrass3110 <3517879+Lemongrass3110@users.noreply.github.com>
2022-02-11 18:45:17 +01:00
Lemongrass3110
e40da669ed
Initial release of barter shops (#6508)
Fixes #5062

Thanks to @Atemo and @aleos89

Co-authored-by: Atemo <Atemo@users.noreply.github.com>
Co-authored-by: Aleos <aleos89@users.noreply.github.com>
2022-01-21 00:59:16 +01: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
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
HAO YAN
2eebafb703
Enable makeitem to display DropEffect (#6303)
Enable item to special effect if the item has DropEffect flag.
2021-10-20 15:45:07 +02:00
Aleos
393ec53272
Fixes a potential map crash for atcommand mapflag (#6255)
* Fixes #6254.
* Adds a few checks for MF_RESTRICTED so the status is not disabled if other zones are active for the same map.
Thanks to @xEasycore and @Lemongrass3110!
2021-09-16 16:56:18 -04:00
Aleos
1cbf6aefdd
Cleans up checks for leaving active Battlegrounds (#6124)
* When a player deserts an active Battleground they will no longer receive the  SC_ENTRY_QUEUE_APPLY_DELAY status from leaving the queue. This makes it so that the proper Battleground desertion message is shown when trying to join another Battleground.
2021-07-29 15:33:47 -04:00
Atemo
f230b13ded
Converted statpoint.txt to YAML (#6010)
* Converts the Statpoint Database into YAML.
* Includes CSV2YAML converter.
* Added start_status_points to inter_athena.conf

Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
Co-authored-by: Aleos <aleos89@users.noreply.github.com>
2021-07-05 19:06:49 +02:00
Aleos
16b4cbfca1
Resolves players warping to freed maps (#5922)
* Fixes #4363.
* Resolves players warping to freed maps resulting in a crash.
* Clear out the instance_id from mapdata when clearing.
Thanks to everyone who reported and helped get to the bottom of the issue!
2021-05-06 15:48:17 -04:00
Atemo
95c671a95d
Initial release of Sky Fortress Invasion Instance (Official Conversion) (#3586)
* Implemented skills
NPC_HALLUCINATIONWALK
NPC_POISON_BUSTER
NPC_CLOUD_KILL
NPC_IGNITIONBREAK
NPC_PHANTOMTHRUST
NPC_FIREWALK
NPC_ELECTRICWALK

Thanks to @aleos89 @Lemongrass3110 @Angelic234 @Latiosu @Akaineko-astasi !
2021-03-08 15:12:40 +01:00
Vincent Stumpf
ca779dad59
Clean up instance map name generation (#5704)
Put the instance map name generation in a seperate function
Fix some compiler warnings
Fixes #5691
Thanks @RadianFord
2021-02-25 15:01:44 -08: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