Age | Commit message (Collapse) | Author | Files | Lines |
|
* Overall includes cleanup
* Use std::make_pair
* Make some functions const
|
|
modernize-loop-convert
modernize-deprecated-headers
|
|
modernize-use-auto
modernize-use-nullptr
modernize-use-override
modernize-use-using
|
|
|
|
The findActorNear, findBeingNear and findCharacterNear functions in
gamehandler.cpp were iterating over nearby entities in search for
an entity with a specific ID. Now they do a quick lookup of exactly
that entity, and then check whether it is in range.
|
|
Moved the actual sending of info out of update() and into sendStatus to
prevent delay issues depending on the order of the components getting
updated.
|
|
Renamed killConnection based on bjorns feedback.
Do not send the info on each warp but only on reconnections.
|
|
The old connection is now terminated. And the new connection will
receive the character data properly.
|
|
I had to rearrange the protocol a bit in order to allow to keep the
related things together.
|
|
Things done:
- Removed the equips table and added another column which keeps track about
whether the item is equipped or not
- Added a message to notify the client about failing equips instead of
hardcoding to chat notification
- Removed the move possibillity. It was a quite long function and our future
idea of the inventory does not need any moves
- Removed the inInventory and inEquipment parameters from chr_inv_count,
but added a equipped key to the table that chr_get_inventory returns
This change makes equipped items still being in the inventory. This means
in-inventory triggers are still active! However it makes no sense to disable
this triggers during equipping since it will appear as still in the inventory
to the client.
|
|
In some cases no longer existing attribute ids sent by the account
server or client were able to create crashs.
|
|
While on it I replaced the id usage in the server with the usage of the
AttributeInfo directly.
Next steps:
- Dehardcode the core attribute ids and store their
attributeinfos somewhere in AttributeManager (for now i simply
wrapped the ids with getAttributeInfo().
- Move AttributeInfo out of AttributeManager to shorten the usage + to
allow using a pointer in ModifierLocation without forward declaring
it.
|
|
Things done:
Wrote a entity:give_experience function (lua side only).
Renamed characterpoints to attributepoints (no db update. Did not want
to do one for a simple rename).
Temponary introduced a ATTR_LEVEL constant. TODO: dehardcode this.
Script binds for settings the correction and attribute points.
|
|
As a side effect i had to remove the monster attack AI for now. I will
readd this as next thing.
|
|
This later allows monsters and characters to use this component.
|
|
|
|
|
|
Not every connected game client has a character in the world. The code
was checking this, but since commit aa04597c5f8bb806996 the pointer was
being used before being checked.
|
|
The point is to do this on the new character and to allow the client
to continue playing with the existing character instance (when it
represents the same character in the DB).
Somehow was changed in commit aa04597c5f8.
|
|
This was the final step to remove the hierachy with Entity on the top.
|
|
I did not really care too much about staying consistent with the use of
static_casts to Actors since they are only temporary anyway until Actor
is a component too.
|
|
A CharacterData was created as a proxy class in order to allow using the
old serialization method.
|
|
All damage dealing is now handeled via CombatComponent.
Monsters use a derived MonsterCombatComponent since they can have a damage
mutation and have a seperate script callback.
The wirering with Being is still not optional since most of the stuff does
not exist as components.
Things done:
- Seperated the fighting code from Being and only let Characters and Monsters
add the Component (less overhead for npcs)
- Added a getter for Attribute values to prevent searching it all the time in
non Being members
- Fixed the type if the damage mutation to double (no idea why it was int)
I did not want to copy it over incorrectly
- Removed the addAttack/removeAttack overrides in Character and made the
knuckleAttack being added based on newly added signals
Future TODOS:
- Remove depedency on Being as soon all needed dependencies are available
as components of Entity
- Move the monster script callback into the general combatcomponent and
make it usuable for characters too
|
|
|
|
Items also have positions, so the ItemComponent only makes sense as part of
an Actor. Later on it will probably be part of an entity that also has an
ActorComponent.
Since it was annoying to update all the places where items were created,
I've introduced a function for this.
The component types are now prefixed with "CT_" because I wanted to introduce
an 'Item' namespace which would otherwise be conflicting. The component types
enum isn't used much in the code so it can look a bit ugly.
Reviewed-by: Yohann Ferreira
|
|
|
|
|
|
Same thing, but shorter.
|
|
Reviewed-by: Stefan Beller.
|
|
Change is tested.
Mantis: #492.
Reviewed-by: Stefan Beller.
|
|
Reviewed-by: Ablu.
|
|
Acked-by: bjorn
|
|
Reviewed-by: bjorn.
|
|
- Removed possibility of skills getting mixed with attributes
- Made the server sending the level of the current skill on exp change
(currently the client could calculate it itself, but it allows more
flexibillity in future this way)
- Fixed reading of skills out of the database
(for some reason the status effects were added as skills)
** Needs clientside patch as well (coming soon) **
Reviewed-by: Bertram.
|
|
- Made the current charge being saved.
- Added script binds:
- chr_set_special_recharge_speed
- chr_get_special_recharge_speed
- chr_set_special_mana
- chr_get_special_mana
- get_special_info
- Added special info lua class. Functions:
- name
- needed_mana
- rechargeable
- on_use
- on_recharged
- category
Further the engine no longer sets charge to 0 after using of specials
this allows more flexbilillity (like failing specials).
Changes on the xml database:
- recharge renamed to rechargeable (needed by client and server)
- needed - the needed mana to trigger a special (server only)
- rechargespeed - the defailt recharge speed in mana per tick (server only)
- target - the type of target (either being or point) (server and client)
I also made the lua engine pushing nil instead of a 0 light userdata when
the pointer was 0.
Database update needed.
Change is tested.
Mana-Mantis: #167, #156
Reviewed-by: bjorn.
|
|
This was broken in ba66fbeda8ef9afb6c33eba66d109bac85ebf628 where we forgot
to make sure to invert the condition when moving it into the function.
Reviewed-by: Erik Schilling
|
|
Step to be able to handle chatcommands by scripts.
Reviewed-by: bjorn.
|
|
Reviewed-by: Bertram
|
|
in case of disconnection.
I made the Character::disconnected() function handle that case,
permitting also to centralize GameState::remove() calls there.
I also made the GameState::enqueueWarp() function test whether
the Character pointer is about to be deleted, so that the warp
can be handled directly to avoid a crash.
Last but not least, I also made the Character::update() function
not update the Character specials and hp to avoid discrepancies
seen in the client.
Resolves: Mana-Mantis #309.
Reviewed-by: Ablu.
|
|
Reviewed-by: Erik Schilling
|
|
Also made some random changes where useful, including:
- Code formatting fixes,
- Design fix about the fact that only the game config option
should be checked.
- Fixed the size of the values sent and receive to follow
the rest of the development.
- Fixed variables names to make them show what they are,
and not why they are used.
Resolves: Mana-Mantis #142.
|
|
Resolves: Mana-Mantis: #379.
|
|
|
|
The player sends party invites to the game server.
If the invitee is within the visual range of the inviter,
the game server forwards the invite to the chat server.
Reviewed-by: Bjorn, Jaxad0127
|
|
One huge function that handles all the messages isn't very readable and
causes everything to be indented by several levels. Hence we generally
split this up.
It also exposed a missing 'break;' when handling the PGMSG_USE_SPECIAL
message, which would continue into the handling of PGMSG_ACTION_CHANGE.
Reviewed-by: Stefan Dombrowski
|
|
The server was actually using the bitmask enum while the the client
still sent another one, creating discrepancies.
A second problem is that the being direction was not properly
initialized and not updated while it was moving.
Reviewed-by: Jaxad.
|
|
We've got DEFAULT_TILE_LENGTH in defines.h for that.
Trivial fix.
|
|
Trivial fix.
|
|
Also added an header to the autoattack.{h,cpp} files.
Big but trivial fix.
|
|
Mainly for consistency with the client, and the general consensus was
that these numbered versions were clearer.
|