Age | Commit message (Collapse) | Author | Files | Lines |
|
to something more meaningful.
|
|
|
|
|
|
Moving and splitting items in the inventory window should be
much more responsive now.
|
|
The unecessary equipment check was already removed, but the now
useless force parameter is now also removed.
|
|
|
|
in oversized inventories.
|
|
The inventory part is done. The equipment one will only handle
equipment triggers for now.
|
|
|
|
This is in preparation of fixes for issues: #373, and 379.
Equip and inventory related packets are the only ones changed.
|
|
now, the equipment slots are independant from the inventory slots
according to the inventory and equipment data.
This will permit to avoid checking the equipment each time
one touches the inventory and vice versa, and make the former
delayed mode useless.
Also, note that equipped items will be removed from inventory
and readded once unequipped.
The design will permit the following, even if not implemented yet:
- To make equipment items stackable again, if wanted.
- Have more than one item with the same id equipped on different
slots using the itemInstance field.
Note: I didn't add the database structure updates yet, to see
whether other changes may later go along with those.
|
|
I said I wouldn't do it, but I change my mind. Here is why:
The delay mode is used in the trading code, and in the inventory
code for lua only.
In the lua part, the delay mode is useless as it is used only
when the script is requesting removal of more items than owned.
This is something that can't be handled well anyway,
as for the script part, even when the character was still
keeping its items.
Plus, it's not actually an error, IMHO.
In the trading code, it made sense. But the next commit
will bring design changes making the inventory items
and the equipment items not linked anymore. Hence, making
it impossible to trade equipped items, for instance,
which is a good thing IMHO. It will also remove the need
of a delayed inventory mode in that case.
The two cases where it is used will disappear, making it
useless.
Last but no least, the part watching for equipment changes
in the commit() function is not something easy to debug
without first having a proper and working base.
(checking of two multimaps changes, for instance).
We can add it back once the code has been fully debugged
for the most skilled among us.
And yes, I am sure of what I'm currently doing.
For now the whole inventory and trading code is in need of review
but it already was, anyway.
|
|
This doesn't change anything yet.
|
|
The server is now using the autoattacks system to perform damage
based on the attack's timer.
I also added a default bare knuckle attack when the character
is unequipped.
As a result, maggots can be killed again with bare hands now.
Known issues left:
This isn't tested against equipment changes for now, and the client
isn't in sync with the attacks speed.
Reviewed-by: Crush.
|
|
This is more precise than sending the attack type, that
can be guessed by the client anyway when the type parameter
will be added in the <attack> tag.
This is the server part of Mana issue: #363.
Reviewed-by: Bjorn.
|
|
* The 'itp' parameter is no longer simply ignored (seems to be a small
optimization in Inventory::remove)
* Avoid incrementing an invalid iterator, fixing a crash (problem found
by Stefan Dombrowski)
* Use the right inventory index in the call to changeEquipment, which
previously was using "it", which would be equal to "it_end" there.
Reviewed-by: Stefan Dombrowski
|
|
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
|
|
Before at most one item was droped and the sum
of all probablilites was limited to 100%.
Also in the example data drops are changed to existing items.
|
|
Reviewed-by: Jaxad0127
|
|
Listed: http://bugs.manasource.org/view.php?id=324
Reviewed-by: Yohann Ferreira
Reviewed-by: Jared Adams
|
|
|
|
* Include cstddef to be able to use size_t
* Replace NULL with 0 since NULL doesn't happen to be defined
in any included header file
|
|
In fact, the client never prefixed that file. Hence, the server
doesn't have to.
|
|
This, instead of the mana-skills.xml file, to follow latest
client changes.
|
|
A client can craft something using the @craft command.
The command needs a list of item names and amounts. The gameserver checks
if the character has these items in the inventory and then passes the list
together with the character handle to the lua script function on_craft in
the script file scripts/crafting.lua.
This function can then be used to evaluate if the list is a valid crafting
combination and when this is the case take or give items.
Implemented two example crafting scripts there, one which enforces exact
item order and amount and one which doesn't. Both are disabled per default
and one needs to be enabled by uncommenting a line.
Also gave the player group permission to use the @craft command in
permissions.xml and added two new items (wood and iron) required for the
example crafting combination.
Resolves: #333
Reviewed-by: bcs86, Bertram
|
|
Reviewed-by: Thorbjorn.
|
|
This will permit the client the make position resyncs when necessary,
and make use of the MOVING_POSITION and DESTINATION where relevant.
Reviewed-by: Thorbjorn.
|
|
Reviewed-by: Jaxad0127.
|
|
The setAttribute() already takes care of updating them.
Reviewed-by: Jaxad0127.
|
|
The only need to call this function was to trigger derived attributes
recalculation as the base attribute recalulation does nothung
for monsters atm.
And this is useless as setAttribute() already triggers
derived attributes recalulation.
Reviewed-by: Jaxad0127.
|
|
The bug made the monsters unable to move.
Reviewed-by: Jaxad0127.
|
|
Before that, all the loading information were kept at info level.
Trivial.
|
|
The crash happened when it was trying to move an NPC from its old zone
to its new zone. The old zone was based on the old position, which was
(0,0). That crashed since its zone didn't match its old position, but
its new one.
This fix makes sure to update the old position to be in sync with the
zone, by resetting it after being inserted into the MapComposite.
Reviewed-by: Yohann Ferreira
|
|
Attributes that didn't get a value yet are not communicated from account
to game server. This could leave some attributes with uninitialized
(random) values, like the amount of gold or some uncalculated attack
speed bonus.
Defaulting the value to 0 seems to be appropriate for all current cases.
When another default value should be used, it can be specified in
attributes.xml and will be sent from the account server.
Reviewed-by: Stefan Dombrowski
|
|
The xml gives the drop rate as a floating point number.
Also added 0.5 for correct rounding. (Without it 0.7% calculates to 69.)
Reviewed-by: Jaxad0127
|
|
It's being compared to an unsigned integer.
Reported-by: Stefan Dombrowski
|
|
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
|
|
* Remove SYNC_END_OF_BUFFER since the end of a message can already be
identified by no more data being available.
* Consistently prefix ++ rather than postfix ++ when incrementing
mSyncMessages.
* Made SYNC_BUFFER_SIZE into constants rather than defines, and moved
them into the .cpp file since they're not used anywhere else.
* Just use 1 and 0 to indicate online status. No point in writing it
like 0x01 and 0x00.
* Merged some duplicated documentation for
AccountConnection::syncChanges.
Reviewed-by: Jared Adams
|
|
By default XML::Document will use the ResourceManager to resolve the
file name you pass to it. There is no point in disabling that
functionality only to resolve it manually.
Reviewed-by: Jared Adams
|
|
Introduced a template class NameMap, which provides a nice API for
mapping any custom types by their name.
This change also makes any duplicate item or monster definitions be
complete ignored, rather than being merged into the first definition.
Reviewed-by: Philipp Sehmisch
Reviewed-by: Yohann Ferreira
|
|
By using xmlParseFile instead of xmlParseMemory, the system-dependent
newlines should be handled automatically.
The .tmx.gz files should still be supported, but instead of manually
decompressing them the xmlParseFile function should take care of that.
It also fixes the leaking of XML documents in both the SkillManager as
well as the PermissionManager, since they now rely on XML::Document,
which cleans up automatically.
Reviewed-by: Stefan Dombrowski
|
|
|
|
This splits the huge ItemManager::reload() into readEquipSlotsFile() and
readItemsFile(), the latter of which is further split up into multiple
functions for reading the different elements.
Just to keep the amount of nesting down and increase the readability.
Removes the need for huge eye-catching comment blocks.
Reviewed-by: Freeyorp
|
|
Easier to understand than a std::pair<unsigned int, unsigned int>, or
functions like getTagFromInfo(unsigned int, unsigned int), which does
not make clear what that "info" actually is.
Now it's simply getTag(const ModifierLocation &location), documenting
itself and also allowing the name to be shorter.
Reviewed-by: Freeyorp
|
|
Keeps the code indentation within reasonable limits and makes the
structure easier to follow.
Reviewed-by: Freeyorp
|
|
SCOPE_TYPES -> ScopeType (plural was confusing)
ATTR_BEING -> BeingScope
ATTR_CHAR -> CharacterScope
ATTR_MOD -> MonsterScope
ATTR_MAX -> MaxScope
AttributeScopes -> AttributeScope
(A single scope seems to include multiple lists of attributes. Seems
wrong to me to name this type in plural form.)
getAttributeInfoForType -> getAttributeScope
(just naming it after what it is actually returning)
Reviewed-by: Freeyorp
|
|
Just seems a bit more organized to me.
|
|
AT_TY -> StackableType
TY_ST -> Stackable
TY_NST -> NonStackable
TY_NSTB -> NonStackableBonus
AME_TY -> ModifierEffectType
AME_MULT -> Multiplicative
AME_ADD -> Additive
Got rid of related documentation, which is now stating the obvious.
Also renamed many related variables.
Reviewed-by: Freeyorp
|
|
A bunch of variables that were continuously requested from the
configuration are now members of the AccountHandler.
Reviewed-by: Freeyorp
|
|
When banning a character, the game master now sets a time unit (m, h, d, w
or y for minutes, hours, days, weeks or years) after the duration.
Ban durations longer than 2^16 minutes are now possible.
The banned character is now kicked automatically and the banning character
receives a feedback chat message.
Reviewed-by: Thorbjorn
|