Age | Commit message (Collapse) | Author | Files | Lines |
|
You now can change the anger of a monster to a being using
mana.monster_change_anger(monster, being, anger)
Resolves: Mana-Mantis #366.
|
|
The account server sends out a random number, which is
additionally used for hashing the password.
Reviewed by Bertram
|
|
|
|
Resolves: Mana-Mantis #318.
Reviewed-by: Bertram.
|
|
mana.monster_get_name(id) and mana.item_get_name(id) can be used
to get the name of an item or a monster if only an id is given.
Reviewed-by: Bertram.
|
|
You can now use either the name or the id of the item in the LUA
functions chr_inv_change, monster_create, item_drop.
Part of: Mana-Mantis #318.
Reviewed-by: Bertram.
|
|
I also changed the chatmessage function to chat_message
to follow the coding standard.
|
|
mana.is_walkable(x, y) can now be used to check wether the pixel on the
current map is walkable or not.
Reviewed-by: Bertram.
|
|
mana.monster_remove(monster) can now be used to remove a monster
from a map.
Resolves: Mana-Mantis #352.
Reviewed-by: Bertram.
|
|
mana.get_map_prpoperty(string) can now be used to read a property from a
map file. String is the property name.
Resolves: Mana-Mantis #353.
Reviewed-by: Bertram.
|
|
You can now call mana.get_distance(being1, being2) or
mana.get_distance(x1, y1, x2, y2) for calculating distances.
Reviewed-by: Jaxad0127, Bertram.
Resolves: Mana-Mantis #370.
|
|
Reviewed-by: Bertram.
Resolves: Mana-Mantis #369.
|
|
You can now call mana.log(loglevel, message) to log messages with scripts.
For loglevel you can use the new constants defined in
libmana-constants.lua
Resolves: Mana-Mantis #359
|
|
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.
|
|
* An invite expires after 60 seconds.
* For protection of the server memory each player can invite a
maximum of 10 characters within the 60 second timeframe.
Reviewed-by: Bjorn
|
|
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.
|
|
Reviewed-by: Bertram
|
|
* 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
|
|
Source: http://enet.bespin.org/download/enet-1.3.2.tar.gz
|
|
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
|
|
Reviewed-by: Bjorn
|
|
|
|
* 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
|
|
Effects aren't applied only on beings. Hence the former tag
name was irrelevant.
|
|
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.
|
|
(trivial change)
|
|
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.
|
|
... And one when she's coming back.
Reviewed-by: Jaxad0127.
|
|
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.
|
|
The protocol uses ERRMSG_EMAIL_ALREADY_EXISTS instead.
|
|
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
|
|
This was happening when retrieving characters from the database. Also
made the query more explicit about which columns it requests.
Reviewed-by: Yohann Ferreira
|
|
Reviewed-by: Thorbjorn.
|
|
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
|
|
Could happen on servers where a character is being communicated that has
something equipped.
The infinite loop was due to using "while (msg.getUnreadLength())" on a
message after having read one byte too much, causing it to miss the 0
bytes unread and count to minus infinity. This is a danger that we
should probably also fix generally.
The byte that was read too much was equipmentInSlotType, which I think
should have been the number of items equipped in a certain slot type.
This number is never written by the serializeCharacterData function and
also doesn't seem necessary. When multiple items are equipped in a
single equipment slot type, there will simply be multiple pairs
transmitted for that equipment slot type.
Reviewed-by: Freeyorp
|
|
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
|
|
* Removed a lot of pointless documentation that was mainly repeating the
function name and otherwise just filling up space.
* Synced a few method names to the names of the messages that they were
handling.
* Removed an unimplemented method (sendPartyMemberInfo)
Reviewed-by: Jared Adams
|
|
* 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
|