summaryrefslogtreecommitdiff
path: root/src/net/tmwa/beinghandler.cpp
AgeCommit message (Collapse)AuthorFilesLines
2025-04-02Use a consistent naming style for enum class valuesThorbjørn Lindeijer1-4/+4
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-25Added support for option, opt1, opt2, opt3 status effect fieldsThorbjørn Lindeijer1-24/+56
Supporting these fields is necessary to correctly identify status effects sent by tmwAthena. This is a manual port of ac4e40a1408ad4d6fbcfce9d2bc6a0bc187ea5a4, 542d2ba78d84e0fa051e0620ccab5fb3a0c711e3 and 8800940bb4b94f6dab7dcf80bf0abc3e3b09e35f from M+.
2025-02-13Support changing being base typeThorbjørn Lindeijer1-16/+42
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-10-29Turned the PlayerRelation struct into an enum classThorbjørn Lindeijer1-1/+1
Less code to achieve the same thing (strong type and namespaced values). The permissions related values have been moved to a PlayerPermissions struct, which is also a bit less confusing.
2024-10-12Added support for hit/miss sounds on equipment for all playersThorbjørn Lindeijer1-5/+1
Previously only the local player's weapon "strike" sound would play, regardless of hit or miss. Now the sound is played in response to the SMSG_BEING_ACTION message, so it can be played for all players. Also added alias "miss", which is used by TMW in some places. Finally, when no weapon is equipped, it falls back to the sounds defined on the racesprite item (fixes punch sound on TMW). Closes #68
2024-03-04Fixed character displayThorbjørn Lindeijer1-26/+31
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-17/+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-02-15Fix handling of non-consecutive emote IDsThorbjørn Lindeijer1-1/+1
Previous code was assuming there would be no gaps in the emote IDs. Also cleaned up some confusion where the "emote ID" being passed around in the code was often offset by 1. Now it is only offset in communication with tmwAthena and when saving the shortcuts.
2024-02-13Updated tmwAthena network protocolThorbjørn Lindeijer1-43/+5
* 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-1/+1
modernize-use-auto modernize-use-nullptr modernize-use-override modernize-use-using
2013-05-02Fixed network layer doing delayed actor deletionThorbjørn Lindeijer1-1/+1
The delayed actor deletion was meant to be used during the logic calls, to avoid modifying the container while it is being iterated. The deletions happening from the network layer are not done while iterating the set of actors, so it can delete immediately. This fixes an issue where an NPC would disappear when changing appearance on tmwAthena, because this was implemented as a remove + add, which broke due to the delayed deletion. Mantis-issue: 507 Reviewed-by: Jared Adams
2012-05-05Removed the shared base classes of MessageIn and MessageOutThorbjørn Lindeijer1-1/+3
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-04-02Fixed problems with using the last emotev0.6.1Thorbjørn Lindeijer1-3/+2
The tmwa/BeingHandler was adjusting the effect id rather than the emote id, causing it to not find the last emote (and the rest of the emotes only worked correctly because the effect ids were consecutive in the same order as the emote ids). Furthermore, the EmoteShortcutContainer refused to draw the icon for the last emote due to an off-by-one error in dealing with the 1-adjusted emote ids used by the EmoteShortcut class. Also cleaned up some old remains of a player ignore strategy that used to use the two balloon emotes (this had been their original purpose). Reviewed-by: Erik Schilling
2012-02-02Fix to the hair colors and styles handling.Yohann Ferreira1-3/+6
- 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-02-02Fixed the use of custom particle effects for attacks.Yohann Ferreira1-3/+2
The tA beingmanager was wrongly using the attack type in the Being::handleAttack() function, which is in fact used to set the attack id. Thus, breaking the attack id given and all its attack parameters. I noticed that while updating the client data for TMW. Reviewed-by: Thorbjørn Lindeijer
2012-01-26Updated copyrights to 2012Thorbjørn Lindeijer1-1/+1
2012-01-18ColorDB -> HairDB.Yohann Ferreira1-4/+4
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-7/+7
Reviewed-by: Ablu
2011-06-24Made use of the attack speed sent by the tA server.Yohann Ferreira1-2/+5
Part of issue #343.
2011-06-02Arbitrary code cleanupsThorbjørn Lindeijer1-1/+1
Just some stuff that piles up while "looking" at the code, which eventually gets annoying to ignore while staging real changes. * Replaced a few NULL occurrences with 0 * Rely on default parameter for std::vector::resize. * Replaced a few "" with std::string() * Prefer .empty() to == "" * Removed a few comparisons with NULL * Don't check pointers before deleting them * Removed a bunch of redundant semicolons * Made some global variables static (local to their compilation unit) * Prefer prefix ++/-- operators to postfix versions when possible * Corrected location of a comment
2011-05-28Fixing setting of being positionStefan Dombrowski1-2/+3
2011-03-29Added the Map::getTileCenter() convenience function.Yohann Ferreira1-25/+16
and made use of it through the tA code. I also remove the obsolete TODO in the flooritem class.
2011-03-28Random cleanups - Part 2Yohann Ferreira1-5/+5
- Removed another bogus comment. - Made functions used only in the tA::beinghandler static. - Don't init the destination to an irrelevant value in being::setDestination()
2011-03-28Added some tolerance on the tA being position message.Yohann Ferreira1-1/+11
Also made the destination equal to the desired position in that case since it's what the tA server expects. This fixes monsters going to strange destinations while fighting them, and makes it all much smoother.
2011-03-17Handle ta move and position message in a more generic way.Yohann Ferreira1-86/+47
This avoids code duplication.
2011-03-16Fixed the bug with remote player movement animation,Yohann Ferreira1-7/+9
by removing a now useless reset in the beinghandler. Also added checks for flawed directions.
2011-03-15Made the tA Beinghandler avoid dealing with flawed coordinates.Yohann Ferreira1-51/+81
Also fixed again a condition in Being::logic(). I'll beautify the code in tmwAthena:Beinghandler once everything will be working better. Note: I also suspect current clients to flood the server with keyboard messages, hence blocking the animation when they are remote. I'll need to test that with someone having the same client than here..
2011-03-15Add a tolerance check on current position to limit desyncs.Yohann Ferreira1-11/+42
Also removed dead code.
2011-03-15Basically merged the two movement algorithms into one.Yohann Ferreira1-17/+40
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-11-07Convert the emote system to use particlesChuck Miller1-5/+4
Reviewed-by: Jared Adams
2010-11-01Merge branch '0.5' of gitorious.org:mana/manaYohann Ferreira1-3/+4
Conflicts: src/being.cpp src/client.cpp src/commandhandler.cpp src/gui/setup_video.cpp src/gui/socialwindow.cpp src/gui/viewport.cpp src/gui/widgets/browserbox.cpp src/gui/widgets/itemcontainer.cpp src/imageparticle.cpp src/localplayer.cpp src/localplayer.h src/map.cpp src/net/tmwa/beinghandler.cpp src/particle.cpp src/particle.h src/player.cpp src/player.h
2010-10-08Remove the following systemStefan Dombrowski1-21/+0
Removed due to unresolved social issues. In master it had been already removed by Kage in commit 89f192b9039f9c000515f0a12f4bb9fb55c4691c.
2010-10-04Remove the following systemChuck Miller1-20/+0
The implamentation is poor, and this is something that would be better handled by the addon engine later down the road. Reviewed-By: Freeyorp < Freeyorp101@hotmail.com >
2010-09-25Merge branch '1.0'Thorbjørn Lindeijer1-0/+8
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-15Avoid log message for unhandled SMSG_BEING_SPAWNStefan Dombrowski1-0/+8
This log message shows up in mana.log: "Unhandled packet: 7c". Later, the client will have to actually take care of it, though. Reviewed-by: Bertram, jaxad0127.
2010-07-29Changed the items loading to handle a new 'attack-action' parameter.Yohann Ferreira1-1/+1
The old behaviour was to load the weapon-type value and do many unnecessary checks and transformation on it: The weapon-type was transformed using hard-coded values into an integer enum value. The exact same thing was done on the opposite side in the animation files before comparing the two. As both data were string values, I simplified all of it by using the value taken in items.xml to call the corresponding action. This now also permit to set up new attack animation in items.xml and in the playerset.xml without having the need to modify the client code. Last but not least, the weapon-type value was used by both the skills and the actions and avoided the possibility to set up a definite action for a weapon-type. Note: The weapon-type parameter will become deprecated for the server in favor of a 'skill' parameter to reflect more it's actual use. This patch is the first step to fix Manasource issue: #157.
2010-07-28Add some null being checks and cleanup some related codeJared Adams1-24/+19
Reviewed-by: Chuck Miller
2010-06-10Merge BeingManager and FloorItemManager as ActorSpriteManagerJared Adams1-23/+23
No need for two different classes to manage ActorSprites. Reviewed-by: Chuck Miller
2010-06-09Fix dead Beings not being removed using tmwAthenaJared Adams1-2/+2
Rename mWalkTime to mActionTime in Being and have Being manage death. Reviewed-by: 4144
2010-06-09Remove hard-coded frame counts from Being classJared Adams1-8/+2
Also removes the Monster/Player difference in tmwAthena's Being::logic and moves the particle code from Being::setAttack to Being::Logic for tmwAthena. Reviewed-by: Chuck Miller
2010-05-17Remove Monster, Player, and NPC classesJared Adams1-63/+49
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/+714
accordingly. This makes room for the actual eAthena protocol future inclusion.