Age | Commit message (Collapse) | Author | Files | Lines |
|
Also unsetted maps after execution of scripts to make finding this mistakes easier.
Reviewed-by: bjorn.
|
|
Also unsetted maps after execution of scripts to make finding this mistakes easier.
Reviewed-by: bjorn.
|
|
Reviewed-by: bjorn.
|
|
Reviewed-by: bjorn.
|
|
Reviewed-by: bjorn.
|
|
Reviewed-by: bjorn.
|
|
Reviewed-by: bjorn.
|
|
Reviewed-by: bjorn.
|
|
You can now actually use the already used node in the monsters.xml
Monsters can have different vulnerabillities against elements:
<vulnerabillity element="earth" factor="2.0" />
This will double damage of the element earth to this monster.
|
|
New binds:
- Damage:
- id
- skill
- base
- delta
- cth
- element
- type
- truestrike
- range
- Attack:
- priority
- cooldown
- warmup
- global_cooldown
- damage
- on_attack
- MonsterClass:
- attacks
- ItemClass:
- attacks
|
|
During the implementation bjorn and I agreed to limit the number of attacks that
can be used in the same tick to one. This makes a lot of stuff easier and the
client cannot display two frames at the same time
Things done:
- Implemented setting of attacks when equipping/unequipping items
- Single place where the xml attack node is parsed
- Finished attack logic
- Unified the attack handling of monsters and characters
- Added a global cooldown after attack use
(not only for next use of same attack)
- Removed the temponary attributes for the monster attack values
- Priorities for all attacks
- Rewrote the attack core:
- Attacks now have this attributes:
- warmup -> time a attack needs after starting it to actually deal the damage
- cooldown -> time a attack needs after dealing damage before another attack
can be used
- reuse -> time before the same attack can be used again
- If no attack is performed at the moment the following is done:
- make a list with all ready attacks
- check for attack that has the necessarily range and highest priority
- start this attack (inform client about it)
- when warmup is finished -> trigger damage
- when cooldown is finished -> allow to use other (or the same if reusetimer
allows) attacks
TODO:
- sync client with this to allow better timed animations
|
|
|
|
Reviewed-by: Ablu
|
|
- 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.
|
|
I forgot to remove this during my special cleanup
Reviewed-by: bjorn.
|
|
This is intended to be used only when the string length is known. The
client was deriving the length from the remaining amount of data in the
message, but that doesn't work in the new 'debug mode' of the protocol.
Reviewed-by: Ben Longbons
|
|
Reviewed-by: Ben Longbons
|
|
GCC 4.7 warns about this, yay.
|
|
Not entirely according to the standards since this is a C99 header,
but that's better than not having it compile at all, or switching
it entirely over to C++11 mode just now.
|
|
Allows inspection of message data. It is off by default since it consumes
additional bandwidth, but it can be turned on using the net_debugMode option
in manaserv.xml.
Currently the option only affects outgoing data for each host individually.
In particular, enabling this debug mode for the server does not automatically
make the client annotate its messages.
Reviewed-by: Erik Schilling
|
|
Compiler error was due to variable redeclaration (variable inside of for
loop had the same name as the loop iterator variabele) - fixed through
renaming of the inner variable.
Reviewed-by: bjorn
|
|
List of things fixed:
- fixed having multiple guild support everywhere
- implemented kick code (untested due to missing kick possiblity in client)
- fixed giving owner rights to next member when owner leaves guild
- fixed potentional segmention fault when trying to access deleted guild after all members left
- fixed saving right changes to database
- made searching for guilds faster a bit (at least when having many guilds)
TODO:
+ Fix conflict between guild and normal channels
+ Fix being able to leave guild channel without leaving guild itself
+ Add kick possiblity to client
Reviewed-by: bjorn.
|
|
I removed this dependency a while ago. But forgot to remove this code.
Reviewed-by: bjorn.
|
|
None of the subclasses actually define a destructor that does anything, but
this may change in the future. In any case it's good to get rid of the
warning.
Reviewed-by: Erik Schilling
|
|
The timeout remembers a reference point of time against which it can check
how much time is remaining.
Reviewed-by: Erik Schilling
Reviewed-by: Yohann Ferreira
|
|
Tested-by: jurkan.
Reviewed-by: Bertram.
|
|
Reviewed-by: Bertram.
|
|
Reviewed-by: bjorn
|
|
Forgot to add this to git when doing the commit. Sorry.
Reviewed-by: bjorn.
|
|
In preparation for using an entity/component system for the entities
in the game world, this name will be more recognizable and easier to
talk about.
Reviewed-by: Yohann Ferreira
|
|
- 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.
|
|
The main change here is to remove the separate calling of 'perform' on all
beings, and rather rely on the beings to do whatever they were doing in
that function when the virtual 'update' function is called.
Reviewed-by: Yohann Ferreira
|
|
Only 1/4th of the floor items were being restored after a reboot of the game
server.
Reviewed-by: jurkan
|
|
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
|
|
Reviewed-by: bjorn.
|
|
Reviewed-by: bjorn.
|
|
While the plan is to allow only one guild per player, the database currently
doesn't enforce this. The expected behavior of this API is that it changes
the rights only for the specified guild, but the query was changing the
rights of the player in all his guilds.
Reviewed-by: Erik Schilling
|
|
These were unused parameters and one return type with an ignored 'const'
qualifier.
Reviewed-by: Yohann Ferreira
|
|
Due to a misplaced semicolon, it always returned false after the first
instance. This function is only used by the script function
chr_unequip_item.
Reviewed-by: Yohann Ferreira
|
|
For a non-empty vectors that did not contain the element to remove, the
loop would go on forever because a size_t can't become smaller than 0.
Fixed by simply iterating forwards.
|
|
Forgot this in 1afbfb7e5fb5c133924ed8d376c6064575fc1c36.
Reviewed-by: Bertram, Ablu.
|
|
|
|
Another step towards scriptable @commands.
Reviewed-by: bjorn.
|
|
Another step for being able to make @commands scriptable
Reviewed-by: bjorn.
|
|
Step to be able to handle chatcommands by scripts.
Reviewed-by: bjorn.
|
|
Due to a wrong primary key, which covered only the state name, it was
impossible to use the same state name on different maps. This has now
been fixed.
Another problem was that the map variables were being included in the
global variables, because the related database query did not filter on
the map_id column properly. While fixing that, the map_id column now
allows explicitly marking a state variable as global (with the value 0)
or system variables (with the value -1).
System variables are currently not accessible from scripts, but that
could be changed later.
Reviewed-by: Yohann Ferreira
Reviewed-by: Erik Schilling
|
|
When a prepared SQL statement would have returned multiple rows, this
function would try to set the column header names multiple times which
throws the AlreadySetException.
Currently it doesn't seem that any prepared statements are meant to return
multiple rows.
Reviewed-by: Yohann Ferreira
|
|
The AGMSG_REGISTER_RESPONSE message should be sent _after_ adding the
global world state variables to it rather than before.
Reviewed-by: Yohann Ferreira
|
|
TODO: Inform client about this change.
Reviewed-by: bjorn.
|
|
Forgot to do this in the previous commit.
|