Age | Commit message (Collapse) | Author | Files | Lines |
|
Reviewed-by: Bertram
|
|
@warp no longer takes a character. @charwarp was added to handle
that ('#' still means the player). Both can take a map name,
map id (preceded by '#') or '#' for the player's current map.
Logging of warp commands now logs destination map and player
warped (for @charwarp).
|
|
Also added an header to the autoattack.{h,cpp} files.
Big but trivial fix.
|
|
Reviewed-by: CodyMartin.
|
|
Also split updateDerivedAttributes and remove the calc check workaround.
Reviewed-by: Bertram.
|
|
Reviewed-by: Bertram.
|
|
Also fix movement speed dependency.
Reviewed-by: Bertram
|
|
Mainly for consistency with the client, and the general consensus was
that these numbered versions were clearer.
|
|
Also renamed MonsterClass::getType() to getId() since it was
misleading with the use of ThingType::getType()
and didn't represent the actual meaning, IMHO.
Trivial.
|
|
The server was trying to insert attributes value not in monster scope.
The monster code is to be rewritten anyway.
Resolves: Mana-Mantis #212.
|
|
Mainly merging a lot of short lines and removing pointless comments that
are just repeating what the code says.
|
|
Don't try to notify the client when automatically removing unknown
items, since at this point the client hasn't connected yet.
Reviewed-by: Freeyorp
|
|
Whether it's a good idea to automatically remove unknown items from the
inventory in the first place is something to be considered.
Reviewed-by: Freeyorp
|
|
Also fixed a memleak when loading an invalid monster attack.
Resolves: Mana-Mantis #215.
Reviewed-by: Thorbjorn.
|
|
Also made both servers appends on the main log at start
if they aren't empty.
This permits not to lose the previous logs
when quicky restarting the servers.
Trivial fix.
|
|
The speed conversion needs a standard tile length anyway
and can be improved later once the movement code
will start to handle beings size.
Reviewed-by: Crush.
|
|
Reviewed-by: Bertram
|
|
setAttribute should be used for this, which also calls updateDerivedAttributes
as needed.
Reviewed-by: Bertram
|
|
Reviewed-by: Bertram
|
|
This patch adds options to enable log rotations
base on files size and or change of date.
Note: Zip support will be added in a second commit.
Reviewed-by: CodyMartin, Thorbjorn.
|
|
Also made some small cleanups.
Resolves: Mana-Mantis #241
Reviewed-by: Jaxad0127.
|
|
Also made random code format clean-ups.
Resolves: Mana-Mantis #217
Reviewed-by: Jaxad0127.
|
|
There is no longer any need to send attribute change information for
character or correction point changes to the account server. This is
now handled elsewhere in a dedicated function.
The account server was already doing this but the game server hadn't
been updated. This wasn't causing any major problems since this data
was being sent at the end of the packet.
Update documentation for the functions accordingly.
Also adjust a misplaced opening curly brace in attribute calculation
which could cause modifiers to be applied wrongly in certain cases.
Reviewed-by: Kage
|
|
Also made some random code format cleaups.
Trivial fix.
|
|
Reviewed-by: Thorbjorn.
|
|
Also moved the trim() function into the utils namespace
where it belongs more, and made some random code cleanups.
Reviewed-by: Thorbjorn.
|
|
Also turned the absence of an inter-server password into a fatal
error while documenting it in the manaserv.xml example file.
Reviewed-by: Jaxad0127.
|
|
Now, it's possible to set a different config filename and path
on the command line.
Reviewed-by: Jaxad, Kage.
|
|
attributes and attribute respectively.
|
|
The @mute command stops another character from talking in the
public chat for a specified amount of seconds. It doesn't survive
a reconnect of the client, but I don't think that this is necessary
because a mute by a GM is usually intended as a slap on the wrist
with more severe consequences to follow (like @ban).
|
|
Conflicts:
src/account-server/storage.cpp
src/game-server/being.cpp
src/game-server/being.hpp
src/game-server/character.cpp
src/game-server/character.hpp
src/game-server/gamehandler.cpp
src/game-server/inventory.cpp
src/scripting/lua.cpp
src/sql/mysql/createTables.sql
src/sql/sqlite/createTables.sql
|
|
|
|
Now the Lua file name shows up in the error message and stack traceback,
or the map file and object name in case of a script embedded in a map
file.
|
|
|
|
Instead of searching for the configuration file in ~/.manaserv.xml, the
file is now expected to be in the working directory of the server. The
logs and statistics will also be written there.
This should make it easier to run differently configured servers on the
same machine, and should also be a bit more straight-forward to setup.
Reviewed-by: Yohann Ferreira
|
|
|
|
This describes the purpose of the method better.
|
|
Reviewed-by: Bertram.
|
|
TODO: The game-server also needs to keep track of this for when new attributes
or attributes not in the default scope need to be created.
Also hopefully fix attribute calculation order for derived attributes. Still
hardcoded for now.
Reviewed-by: Bertram.
|
|
I also made it required to start properly since it's now the case.
Reviewed-by: Jaxad0127.
|
|
It was using at() for setting. Also I changed the unsigned int
to int as the default returned was -1 in the MonsterManager::reload()
function.
|
|
Conflicts:
src/game-server/itemmanager.cpp
|
|
It has to be in sync with the client, even now, and explains
the return value of the Being::getAttackType() function.
|
|
- Added a new 'default' boolean parameter in mana-skills.xml.
If set to true, unknown weapon types will be defaulted
to the given value.
- Added better checks on skill id and names and improved error
reporting.
- Corrected minor typos, and made small cleanups.
Reviewed-by: jaxad0127
|
|
|
|
Attribute system:
Structure is no longer completely hardcoded. Attributes and structure is
defined by new xml file (defaulting to stats.xml)
Structure defines non-base modifications to an attribute, to be used by
modifiers from items, effects, etc.
Calculating the base value for core attributes is still done in C++ (and for
such fundamental elements the only reason I can think of to do it any other
way is perhaps being able to quickly change scripts without a compile could be
useful for testing, but such things are a low priority anyway)
Item structure:
Modifiers are now through triggers rather than single events. This also
removes hardcoded types - an item could be both able to be equipped and be
able to be activated.
Item activation no longer consumes by default, this must be specified by the
property <consumes /> inside the trigger.
Currently only attribute modifications, autoattacks, and consumes are defined
as effects, but stubs for others do exist. Autoattacks are currently
non-functional, and this should be rectified with some urgency.
Auto Attacks:
AutoAttacks are now separate entities, though not fully complete, nor fully
integrated with all beings yet. Integration with the Character class is
urgent, integration with other Being children less so.
When fully integrated this will allow for multiple autoattacks, through
equipping multiple items with this as an equip effect or even through other
means if needed.
Equipment structure:
As ItemClass types are no longer hardcoded, so too are equip types. An item
have multiple ways to be equipped across multiple equipment slots with any
number in each slot. Character maximums are global but configurable.
Miscellaneous:
Speed, money, and weight are now attributes.
Some managers have been changed into classes such that their associated
classes can have them as friends, to avoid (ab)use of public accessors.
The serialise procedure should also be set as a friend of Character (both in
the account- and game- server) as well; having public accessors returning
iterators is simply ridiculous.
Some start for such cleanups have been made, but this is not the primary focus
here. Significant work will need to be done before this is resolved
completely, but the start is there.
BuySell::registerPlayerItems() has been completely disabled temporarily. The
previous function iterated through equipment, yet in the context I think it is
intended to fill items? I have been unable to update this function to fit the
modifications made to the Inventory/Equipment/Possessions, as I am unsure what
exactly what it should be doing.
ItemClass::mSpriteId was previously unused, so had been removed, but I
notice that it was used when transmitting equipment to nearby clients.
Experimentation showed that this value was never set to anything other than
0, and so has been left out of the ItemManager rewrite.
I am not entirely sure what is happening here, but it should be worth looking
into at a later time, as I am not sure how equipment appearences would be sent
otherwise.
|
|
character.
Added script call for getting the cost of a special (recharge only for now)
Deleting specials works server-sided but the client isn't informed about it properly. Specials without recharge cost don't appear for the player. Both of these features require an additional netcode message.
Reviewed-by: Freeyorp
|
|
Reviewed-by: Jaxad0127.
Resolves: Manasource-Mantis #22
|
|
Resolves: Manasource Mantis #144.
Signed-off-by: Philipp Sehmisch <mana@crushnet.org>
|
|
|