summaryrefslogtreecommitdiff
path: root/src/net/tmwa/charserverhandler.cpp
AgeCommit message (Collapse)AuthorFilesLines
6 daysWork around player invisibility caused by "unspecified" genderThorbjørn Lindeijer1-6/+3
The "Unspecified" gender was causing some older players to be invisible since no sprites were displayed at all. I think this is a bug in TMWA, which should never send SEX::UNSPECIFIED for player characters, but while this bug exists we can make sure to map this to Gender::Neutral (renamed from "Hidden"). The Gender::Unspecified value was removed entirely because it never makes sense for beings. One "neutral" value should be enough.
2025-08-04Added support for the hidden/neutral genderThorbjørn Lindeijer1-6/+11
TMWA supports a "neutral" gender, which in Mana client maps to "hidden". In The Mana World, it means a player character is not displayed as clearly male or female, using a dedicated base sprite with more underwear. It is not possible to choose the neutral gender on account registration or character creation. In TMW, these choices are not actually relevant anyway and could probably be removed. Fixes #114
2025-07-04Added logging priorities and use SDLs logging facilitiesThorbjørn Lindeijer1-2/+2
By using SDL logging, we can rely on SDL to filter the log messages by their priority before they get sent to our custom output function. For example, we now no longer get entries for created and destroyed Window instances by default, since these have only "debug" priority whereas the default priority for the "app" category is "info". We can also get log messages raised by SDL itself in our log now. Log levels can be controlled per category through the "SDL_LOGGING" environment variable. Many existing log messages have been assigned a category based on their existing prefix.
2025-04-02Use a consistent naming style for enum class valuesThorbjørn Lindeijer1-2/+2
Sometimes I've used CamelCase and sometimes SNAKE_CASE for these values. Since "enum class" values are always prefixed with the enum name, which uses CamelCase, I find it more fitting to use it for the values as well. Also fixes compilation on Windows where 'ERROR' was conflicting with a define.
2025-02-13Support changing being base typeThorbjørn Lindeijer1-10/+15
The GM command @class (alias @charclass) can be used by GMs to change their character class (also referred to as job, race, base or species). Changes of the class are now supported, even supporting switching between appearing as player, monster or NPC. Part of https://git.themanaworld.org/mana/mana/-/issues/92
2024-03-06General code cleanupsThorbjørn Lindeijer1-7/+7
* Use final for all message handlers, Client, LocalPlayer, Being::getType, Being::setPosition and Being::setMap. (avoids some warnings about virtual dispatch in constructors) * Use auto in more places * Use emplace_back instead of push_back in some places * Use default member initializers * Less else after return * Removed superfluous .c_str() * Removed type aliases that are only used once * Removed more unused includes
2024-03-04Fixed character displayThorbjørn Lindeijer1-6/+14
This change fixes hair style to take into account "race", which makes the faces visible again. Hair colors should also be fixed now, with partial support for itemcolors.xml added. The Mana client now also supports per-character gender, and it now hides the hair style and color buttons on character creation, when there are none to choose from. Closes #43
2024-02-13Updated tmwAthena network protocolThorbjørn Lindeijer1-1/+1
* The code defining the message IDs and sizes are now generated by the tools/protocol.py script in the tmwAthena repository. * Reduced client version from 20 to 6, because that is currently the minimum supported version, and any adjustments needed for later likely still need to be made. * Removed use of no longer handled messages: - CMSG_SKILL_USE_BEING - CMSG_SKILL_USE_POSITION - CMSG_SKILL_USE_MAP - SMSG_PARTY_MOVE - CMSG_WHO_REQUEST - SMSG_WHO_ANSWER - SMSG_MVP - SMSG_BEING_MOVE2 - SMSG_BEING_CHANGE_LOOKS * Some messages were renamed to match the server side - CMSG_PLAYER_ATTACK -> CMSG_PLAYER_CHANGE_ACT - CMSG_PLAYER_RESTART -> CMSG_PLAYER_REBOOT - SMSG_ADMIN_IP -> SMSG_BEING_IP_RESPONSE Part of addressing issues #55 and #47, which we now know are about handling SMSG_PLAYER_HP and SMSG_NPC_COMMAND respectively. The client will now ignore them (with a warning) instead of crash.
2024-01-26Apply C++11 fixitsThorbjørn Lindeijer1-10/+10
modernize-use-auto modernize-use-nullptr modernize-use-override modernize-use-using
2024-01-26Added support for the "persistentIp" server info settingThorbjørn Lindeijer1-1/+8
This option was added in ManaPlus and support for it is required to connect to The Mana World as it is currently set up, since the server sends 127.0.0.1 for the character server and map server IP. Can't play yet, because of an unknown packet 0x226 being received once connecting to the map server.
2013-04-27Added support for charcreation.xml settingsThorbjørn Lindeijer1-4/+24
This file was introduced by ManaPlus as a way of configuring the character creation process. It defines the number of hair styles and colors, how stat points should be divided and what the starting equipment of the player is. The minimum and maximum hair color/style IDs are not supported at the moment. This is mostly a backport of ManaPlus commits 10cf52b5 and dcc18eba, with some style changes. Mantis-issue: 501 Reviewed-by: Ablu
2013-04-27Always read the attributes.xml fileThorbjørn Lindeijer1-1/+5
This way it can also be used when connecting to a tmwAthena server for customizing the min/max of attributes and the amount of starting points. Mantis-issue: 501 Reviewed-by: Ablu
2012-05-05Removed the shared base classes of MessageIn and MessageOutThorbjørn Lindeijer1-4/+4
There wasn't a whole lot gained by sharing a common base class, and it makes extending the manaserv Message{In,Out} classes with a debugging mode unnecessarily complicated. Reviewed-by: Yohann Ferreira
2012-02-02Fix to the hair colors and styles handling.Yohann Ferreira1-1/+2
- I made the charCreatedialog handle a possible max permitted color Id and a minimum hair style id for tA. - Added a foundation to later load the styles and colors from the same file, to handle the Mana-issue #224 for manaserv. - Support for non-contiguous hair color and style ids has also been added. - I also replaced the < and > arrow signs with images. Reviewed-by: Ben Longbons, Thorbjørn Lindeijer
2012-01-26Updated copyrights to 2012Thorbjørn Lindeijer1-1/+1
2012-01-18ColorDB -> HairDB.Yohann Ferreira1-2/+2
This will ease the reading of the next patch about hair handling at character creation time in tAthena. As requested by bjorn. Reviewed-by: bjorn
2012-01-10player_node -> local_playerYohann Ferreira1-5/+5
Reviewed-by: Ablu
2012-01-09Changed INT and DELETE enum names to fix C::B compilation.Yohann Ferreira1-1/+1
This was introduced since Crush updated his mana lib pack. I simply changed the names to avoid a collision. Reviewed-by: Ablu.
2011-06-22Applied fixes requested by cody.Yohann Ferreira1-2/+2
- Made the map teleport distance fixed for manaserv. - Small cleanups. The branch is considered reviewed by: Cody. Resolves Mana-Mantis: #74.
2011-05-30Remove some uneeded offsettingJared Adams1-1/+1
Also fix position of being names. Reviewed-by: Bertram
2011-03-15Basically merged the two movement algorithms into one.Yohann Ferreira1-1/+5
This was made in favour of the manaserv way of doing things. I also added a way to keep the original server speed value so the pixel value can be recomputed at each map change, as this was necessary since the speed is given before the first map is loaded. The code is much more simpler now about movement handling, and we can already see improvements on other characters movements in The Mana World with this. Everything can't be perfect the first time; here are bugs identified so far: - Monsters direction isn't updated on TmwAthena for obscure reasons. - Remote players walking animation is sometimes reset on each steps. - When changing map, the local player sometimes walks randomly until the player reacts. Stay tuned!
2010-09-25Merge branch '1.0'Thorbjørn Lindeijer1-0/+3
Conflicts: src/actorspritemanager.h src/beingmanager.cpp src/game.cpp src/gui/beingpopup.cpp src/gui/chat.cpp src/gui/chat.h src/gui/inventorywindow.h src/gui/itempopup.cpp src/gui/socialwindow.cpp src/gui/statuswindow.cpp src/gui/widgets/chattab.cpp src/gui/widgets/chattab.h src/net/tmwa/inventoryhandler.cpp src/net/tmwa/partyhandler.cpp src/party.cpp src/sound.cpp src/utils/stringutils.cpp src/utils/stringutils.h
2010-09-05Fixing ghost characters in charselectdialogStefan Dombrowski1-0/+3
How to reproduce the bug: Switch the login to an account with fewer characters. Then those character slots are not empty, but show characters from the previous account. Reviewed-by: thorbjorn
2010-07-17Modify how attributes and stats are handledChuck Miller1-22/+29
Handling moved from LocalPlayer to PlayerInfo class Event system used to update windows Reviewed-by: Jared Adams
2010-06-13Merge remote branch '1.0/1.0'Jared Adams1-6/+4
Conflicts: data/graphics/CMakeLists.txt data/graphics/Makefile.am src/client.cpp
2010-06-13Handle char-server login errors betterJared Adams1-6/+4
Also fix a small compilation error sometimes reported. Reviewed-by: Chuck Miller
2010-05-17Remove Monster, Player, and NPC classesJared Adams1-3/+3
Instead of having these three subclasses with minor differences, this commit merges them back into Being. In the future, we can make Beings that are talkable to some, attackable by others, etc. This also puts back support for monster equipment. Also changes remaining references to Being::Type and the constants to refer to ActorSprite::Type. Reviewed-by: Freeyorp
2010-04-17Changed eAthena protocol name to TmwAthena and changed the config files ↵Bertram1-0/+352
accordingly. This makes room for the actual eAthena protocol future inclusion.