Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
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
|
|
This is not standard C++...
Reviewed-by: Freeyorp
|
|
A bunch of variables that were continuously requested from the
configuration are now members of the AccountHandler.
Reviewed-by: Freeyorp
|
|
It's better to use luaL_checkint than manually checking and printing out
an error, since using the helper function makes a more informative error
message.
Also, scripts errors need to be raised before constructing objects,
since due to the way Lua does error handling the destructors of the
objects will not be called.
Also fixed an issue with the 4th parameter, which was first cast to
integer and then multiplied by 10000. Now the multiplication happens
before the casting to integer.
Reviewed-by: Crush
|
|
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
|
|
* Rely on the fact that a std::string is empty by default
* Use std::string::empty() rather than comparing to ""
* Construct with std::string() rather than from ""
Reviewed-by: Bertram
|
|
The F cost represents the estimate of the total cost from source to
destination. It is only relevant to sort the locations to be checked, so
there is no point in assigning it to each coordinate of the map.
With maps up to 200x200, the memory usage is reduced by 160 kB! :P
Reviewed-by: Bertram
|
|
The @drop and @item commands can now accept an item name instead of an
item ID. In addition the amount can be omitted to create a single item.
|
|
I rewrote the @spawn command to allow two new things:
1. The monster ID can be replaced with the name of the monster.
2. The amount of monsters can be omitted. In that case a single monster
is spawned.
Reviewed by: Jaxad and Thorbjorn
|
|
|
|
Nicer as members where there is clear ownership, initialization and
scope.
Reviewed-by: Freeyorp
|
|
Easier to understand than a std::pair with its 'first' and 'second'
members, and it also provides an implicit constructor so that
AttributeValue is implicitly constructed from a double.
Reviewed-by: Freeyorp
|
|
There was a version taking an attack range, but the range was always the
same as the one specified in the Damage class.
|
|
|
|
(trivial patch)
|
|
The new lua function mana.chr_shake_screen can cause a screen shake
for a single client with variable x-intensity, y-intensity, decay and
duration.
I also added an example script which causes tremors for nearby characters
with intensity and direction relative to a specific point. The function
is not referenced on the example map because it is quite distracting.
|
|
More convenient since it doesn't require calling any methods, and a bit
faster. Also added stream operator for Rectangle.
|
|
Nicer style.
|
|
Reviewed-by: Jaxad0127.
|
|
The monsters weren't respecting the end of the stroll time
before resetting their destination, which made them never
cease changing it and flooded the clients with movement messages.
Resolves: Mana-Mantis #315.
Reviewed-by: Jaxad0127.
|
|
No reason why these should be ignored and then replaced by their
defaults, generally.
Reviewed-by: Jared Adams
|
|
A C++ developer should be able to recognize a constructor and a
destructor by just looking at it, so let's stop writing down the
obvious. :)
|
|
It was done in both the Character and the Monster destructors, but I
don't see how any Actor should be excluded from this. Now it also
happens for NPC, Effect and Item, though only NPC has a relevant
walkmask.
Also fixed a small issue introduced in 97e0a9eb170499 and added an
assert to freeTile. We should be able to assert that a tile can only be
freed if it was blocked.
Reviewed-by: Stefan Dombrowski
|
|
|
|
Extracted the path finding algorithm out of the Map class and introduced
a new class called PathInfo that has the path finding information that
used to be part of MetaTile.
This allows a single vector of path information to be shared between all
maps running on the server, significantly reducing the memory overhead
per map (for 200x200 maps, the memory reduction is about 1 MB per map).
Part of this change is some cleanup, like moving the 'occupation' counts
into MetaTile, inlining some methods for performance reasons, and using
STL to simplify memory management.
Mantis-issue: 106
Reviewed-by: Bertram
|
|
|
|
It was freeing the new tile rather than the previous tile.
Reviewed-by: Stefan Dombrowski
|
|
This should do the trick until we have a better time management
system.
This closed issue: Mana-Mantis #205.
|
|
We can just stick with integers by trading a sqrt for a multiplication.
Reviewed-by: Bertram
|
|
|
|
|
|
Reviewed-by: Thorbjorn.
|
|
This prevents some weird things happening especially on crowded
maps.
I also removed the unused findSimplePath() function.
Reviewed-by: Thorbjorn.
|
|
Minor other fixes.
Trivial.
|
|
This reflects much more what the function does IMHO.
Trivial.
|
|
Even when events are inserted before game state update time,
the monsters don't speak since they still don't have an id (-1).
As I thought that reworking the mapcomposite engine for that particular
point was ineffective, here is another working way to make monsters
speak at spawn time by using the schedule_in function with
0.3 second (or 3 ticks).
Resolves: Mana-Mantis #205.
Reviewed-by: Thorbjorn.
|
|
Creation of monsters shouldn't be done during game state
update. So we delay their insertion after the update
to avoid a crash in debug builds and weird stuff happening
in release builds.
Reviewed-by: Thorbjorn.
|
|
Trivial.
|
|
The gameserver now receive a copy of all world state variables when
they are accepted by the accountserver and receive a copy of all
map state variables of a map when they register it successfully.
Implemented LUA script bindings for getting and setting these variables.
When such a variable is set, the accountserver is notified about this
change. Changes to world state variables are then propagated to all
gameservers by the accountserver.
Be aware that when a gameserver is updating a map, there is no check if
it is actually responsible for said map. But I consider this not a
security flaw, because authenticated game servers are considered to be
trustworthy in a lot of other situations, too.
Also renamed "quest" to "character variable" in the sourcecode.
Reviewed-by: Bertram
|
|
Reviewed-by: Thorbjorn
|
|
Reviewed-by: Bertram
|
|
To simply follow the documentation. Monsters behaviour is a bit
less strange now.
|
|
Reviewed-by: Crush
|
|
Reviewed-by: Thorbjorn
|