summaryrefslogtreecommitdiff
path: root/src/net/manaserv/charhandler.cpp
AgeCommit message (Collapse)AuthorFilesLines
7 daysWork around player invisibility caused by "unspecified" genderThorbjørn Lindeijer1-11/+1
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-2/+2
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-4/+4
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-3/+3
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-03-13Removed needless case-insensitive string comparisonsThorbjørn Lindeijer1-0/+1
These are not necessary since we can instead make sure the referenced values match case, like we do for everything else. This affects server types in the server list and colors referenced in theme files. The server version was also compared case-insensitively for some reason.
2025-03-07Updated manaserv protocol to version 9Thorbjørn Lindeijer1-25/+57
This extends the messages regarding abilities, replacing the specific "attack" messages. It also unifies attribute handling, with a generic system replacing specific variables for attributes like level, xp and skills. The inventory and equipment handling was adjusted such that equipped items stay in the inventory. Support for quest states was added. Added: * GPMSG_ABILITY_REMOVED (mana/manaserv@e3fcc1a47db312933a0f5b7e725c5779a1a45722) * GPMSG_ABILITY_COOLDOWN (mana/manaserv@c2f00b2f3ba920cb25333d19a1d37d251342caf8) * GPMSG_BEING_ABILITY_POINT * GPMSG_BEING_ABILITY_BEING (mana/manaserv@2f2393b6d190deb8958fcb806b58418508d25e28) * GPMSG_ATTRIBUTE_POINTS_STATUS (mana/manaserv@1e5a15c0a5e24fb4b358fff75a7082d65496e1f9) * PGMSG_USE_ABILITY_ON_DIRECTION (mana/manaserv@05fc955a3f8a03539088fa7569395434e29d90e8) * GPMSG_BEING_ABILITY_DIRECTION (mana/manaserv@54389afd7ba9fecf0761333185145e968e2453ae) * GPMSG_QUESTLOG_STATUS (mana/manaserv@66a98a3a0df795761328d62ef2ad07f81e383f9e) Removed: * PGMSG_ATTACK * GPMSG_BEING_ATTACK (mana/manaserv@f31277b327df701361391b1d4b8bd6f89f4e3109) * GPMSG_PLAYER_EXP_CHANGE * GPMSG_LEVELUP * GPMSG_LEVEL_PROGRESS (mana/manaserv@44ee071d7ece5a2023f79307f36e8a244c9e7b3a) Changed: * GPMSG_ABILITY_STATUS (mana/manaserv@ba573fcc38580a01985172b9bc864c97ce855af3) * GPMSG_BEING_LOOKS_CHANGE (mana/manaserv@8ddda85d923a528c7497a628d2fe10fc40b80a1f) * APMSG_CHAR_INFO (mana/manaserv@4f5053f463fd8da0de1615ca6b0f212f02f3d653) * APMSG_CHAR_CREATE_RESPONSE (mana/manaserv@1263c729d85df649c7ab59726bddad7c8cd7ae81) * GPMSG_NPC_BUYSELL_RESPONSE (mana/manaserv@336ce321a9b996e56a61a5364bb32124efa84dd9) Equipment changes (mana/manaserv@f712d68495dd8e040c32da3b1c85bcb7845543ec): * Changed GPMSG_INVENTORY_FULL, GPMSG_EQUIP * Removed PGMSG_MOVE_ITEM * Added GPMSG_EQUIP_RESPONSE, GPMSG_UNEQUIP_RESPONSE, GPMSG_UNEQUIP While this change deals with some of the protocol changes, there's still many changes required in the UI regarding using of abilities (including attacking), showing of certain attributes and quest log.
2024-10-23Various small fixes to translatable stringsThorbjørn Lindeijer1-1/+1
Mostly adjustments based on feedback from the Finnish translator.
2024-03-06General code cleanupsThorbjørn Lindeijer1-3/+2
* 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-2/+2
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-22General code cleanupsThorbjørn Lindeijer1-2/+2
* Use default member initializers * Use range-based loops * Don't use 'else' after 'return' * Removed some unused includes * Construct empty strings with std::string() instead of "" * Clear strings with .clear() instead of assigning "" * Check whether strings are empty with .empty() instead of comparing to "" * Removed redundant initializations
2024-01-29Removed unused includes in various filesThorbjørn Lindeijer1-2/+1
2024-01-29Apply C++11 fixitsThorbjørn Lindeijer1-4/+3
modernize-loop-convert modernize-deprecated-headers
2024-01-26Apply C++11 fixitsThorbjørn Lindeijer1-7/+7
modernize-use-auto modernize-use-nullptr modernize-use-override modernize-use-using
2013-04-27Always read the attributes.xml fileThorbjørn Lindeijer1-2/+2
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-5/+5
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/+1
- 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-1/+1
Reviewed-by: Ablu
2011-11-01Merge github.com:mana/manaYohann Ferreira1-2/+2
Conflicts: src/localplayer.cpp src/net/manaserv/beinghandler.cpp src/net/manaserv/charhandler.cpp
2011-10-22Officially added the gender in the manaserv protocol.Yohann Ferreira1-2/+2
Reviewed-by: bjorn.
2011-09-28Officially added the gender in the manaserv protocol - client part.Yohann Ferreira1-2/+2
2011-08-19Fixed visible equipment updates, and made it based on equip.xml.Yohann Ferreira1-4/+8
2011-03-30Fixing zombies in char select dialogStefan Dombrowski1-2/+21
How to reproduce the bug: * Delete a character. * Create a new character in another slot. * Now the deleted character reappears. Also fixing handling of error messages from character select response. This resolves http://bugs.manasource.org/view.php?id=322 Reviewed-by: Jaxad0127, VUT
2010-12-30Renamed protocol.h to manaserv_protocol.h to follow server's changes.Yohann Ferreira1-1/+1
I'll sync the two files as for the new enums in a separate commit. Trivial fix. Resolves: Mana-mantis #278.
2010-12-29Made the client handle the characters slots properly for Manaserv.Yohann Ferreira1-1/+5
Reviewed-by: Crush.
2010-12-15Unlock the char select dialog even if we've got an error.Yohann Ferreira1-1/+1
This permit not to be stuck at character deletion when something goes wrong. Trivial fix.
2010-10-31Fix memory leak of localplayer classes in the charserverhandlerChuck Miller1-1/+1
They are initialized else where in the code Reviewed-by: Jared Adams
2010-09-06Changed CREATE_ATTRIBUTES_EQUAL_TO_ZERO to OUT_OF_RANGEYohann Ferreira1-2/+5
to fit manaserv latest changes. Reviwed-by: Freeyorp, Thorbjorn.
2010-08-26Merged testing branch into master.Yohann Ferreira1-8/+16
2010-07-17Modify how attributes and stats are handledChuck Miller1-5/+6
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-15/+6
Conflicts: data/graphics/CMakeLists.txt data/graphics/Makefile.am src/client.cpp
2010-06-06Softcode the stat for character creation for manaservJared Adams1-15/+6
Reviewed-by: Thorbjørn Lindeijer
2010-05-21Merge branch '1.0'Thorbjørn Lindeijer1-3/+3
Conflicts: src/beingmanager.cpp src/beingmanager.h src/client.cpp src/localplayer.cpp
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-05-03synchronised protocol.h between manaserv, mana and manamobileMaximilian Philipps1-3/+3
2010-04-16Fix canceling game connectionJared Adams1-6/+14
Reviewed-by: Bertram
2010-02-21Made tick counter and framerate limiter work during login sequenceThorbjørn Lindeijer1-5/+4
Much code was moved from main() to the new Client::exec(). This new event loop now integrates with the Game class, so that the tick counter and framerate limiter apply universally. The Client class is also responsible for some things that used to be global variables. Mantis-issue: ...
2010-02-22Modify copyright headersFreeyorp1-1/+2
2010-02-20License header update for The Mana ClientThorbjørn Lindeijer1-4/+3
2010-02-19Fixed a crash when trying to switch serversThorbjørn Lindeijer1-169/+136
Ownership of the charInfo global variable wasn't well defined. It was being locked, unlocked and generally modified from a lot of places, and somewhere in this mess it ended up crashing when switching servers. Now the CharHandler instances, for eAthena and manaserv respectively, own this list of characters. A new class, Net::Character wraps up the slot index in combination with the player dummy. The list is passed on to the CharSelectDialog each time it changes. Both related and unrelated cleanups were made as well. Reviewed-by: Jared Adams
2010-02-07Updated Copyright year to 2010!Bertram1-1/+1
Also added the update copyright tool from the Wormux Team. ( And not forgetting credit's due. :P )
2010-01-24Remove some more _SUPPORT ifdefsJared Adams1-2/+17
2010-01-13Supress level up notifications when startingJared Adams1-2/+2
2010-01-12Standardize header orderJared Adams1-10/+10
Also remove some extra new lines and fix eAthena's PartyTab define guards.
2009-12-02Centralize netcode handler instances in NetJared Adams1-1/+1
Instead of each netcode making the global variables and Net referencing them, Net now makes them and the netcodes reference them. Also remove an innappropriate ChatHandler reference from eA's AdminHandler.
2009-11-03Fix switching characters under ManaServJared Adams1-1/+4
2009-11-03Simplify ManaServ netcode some moreJared Adams1-15/+26
2009-11-03Remove more _SUPPORT ifdefs and do some cleanupJared Adams1-10/+9
2009-10-30Support switching characters under eAthenaJared Adams1-0/+5