Age | Commit message (Collapse) | Author | Files | Lines |
|
Takes the time required to do initial database creation down from
16 to 0.2 seconds on the Raspberry Pi.
|
|
Forgot to add this to git when doing the commit. Sorry.
Reviewed-by: bjorn.
|
|
- 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.
|
|
Forgot this in 1afbfb7e5fb5c133924ed8d376c6064575fc1c36.
Reviewed-by: Bertram, Ablu.
|
|
|
|
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
|
|
Changed range of amount to unsigned int(10).
Sqlite update scripts is empty since no change was required here.
Reviewed-by: Bertram.
|
|
|
|
Conflicts:
src/game-server/character.cpp
src/scripting/lua.cpp
|
|
Version 15 was skipped, and we'll never go back. Renamed the 15_to_16
update scripts to 14_to_16 to avoid confusing everybody who wants to
update their DBs.
Reviewed-by: Yohann Ferreira
|
|
Also made some random changes where useful, including:
- Code formatting fixes,
- Design fix about the fact that only the game config option
should be checked.
- Fixed the size of the values sent and receive to follow
the rest of the development.
- Fixed variables names to make them show what they are,
and not why they are used.
Resolves: Mana-Mantis #142.
|
|
Conflicts:
src/account-server/storage.cpp
src/game-server/mapreader.cpp
src/sql/mysql/createTables.sql
|
|
Resolves: Mana-Mantis: #388.
|
|
Resolves: Mana-Mantis: #388.
Reviewed-by: Bertram.
|
|
|
|
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.
|
|
Reviewed-by: Cody.
Resolves: Mana-Mantis #284.
|
|
Trivial fix.
|
|
I turned the vector storing character data into a map,
keeping the character's slot.
Fixed a memleak along the way.
Reviewed-by: Crush.
|
|
@kick disconnects the client connection of a character. The new error-
code 11 (ERRMSG_ADMINISTRATIVE_LOGOFF) is not supported by the client
yet. It will show a generic "The connection to server was lost" message
instead.
@kill kills the character by setting its HP to 0.
Added @kick transaction code I forgot in last commit. Considering that
this was just minutes ago I think that noone updated his database yet.
So I don't think that a new database version is justified for this.
Reviewed-by: Bertram
|
|
The @mute, @goto, @attribute and @announce commands now logs transactions
to the database.
Added new transaction codes to database. I've preliminarily added a lot
of codes for not yet supported commands so that we needn't do a database
update with every single commit which implements one.
Also using the equivalent "say" helper function in place of the
"GameState::sayTo" method in the command handler.
Reviewed-by: Kage
|
|
Trivial fix.
|
|
Reviewed-by: Crush.
Resolves: Mana-mantis #251.
|
|
We can't leave the obsolete columns around since they are marked as
NOT NULL, so insertion to the table fails if no values are provided for
them.
With SQLite, our only option is to create the table and copy the data
over, which is what the update script now does.
The script was modified so that it is fine to run it again on a database
that was already updated to version 11 before.
|
|
The table mana_char_equips wasn't created due to an SQL error, this led
the account server to not return the player's characters.
Seen in the logs:
[19:40:41] [ERR] (DALStorage::getCharacter #1) SQL query failure:
Table 'bertram.mana_char_equips' doesn't exist
[19:40:41] [ERR] Failed to get character 11 for account 1.
Resolves: Manasource mantices: 189, 230.
Reviewed-by: Thorbjorn.
|
|
Will not drop the attribute columns since this is not supported by
SQLite. I'm just leaving them around for now and see if it causes any
problems.
|
|
It was trying to remove them from the wrong table.
|
|
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
|
|
Forgotten in commit 81db92232e50d47a318c94bc34fb63b67493559a
|
|
made to mainline
|
|
|
|
|
|
Reviewed-by: Philipp Sehmisch
|
|
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: Jared Adams
|
|
(trivial change)
|
|
Introduced in commit bb7866f0
|
|
|
|
Was forgotten in de7d79c7f42636065ca5281fa3bec151e34a7c48
Problem reported by ChristianK on IRC.
|
|
|
|
Implementing the prepared statements in mysql backend
|
|
|
|
Also updated the headers to refer to the GPL by URL instead of
suggesting to contact the FSF by snail mail, as per the latest
GPL usage instructions.
|
|
Includes a database update. Use update_6_to_7.sql to update existing
sqlite databases.
|
|
|
|
It was causing problems with sqlite 3.6.10.
|
|
Fixed database update "3 to 4".
Added database update "4 to 5".
Added indexes to table tmw_transaction for faster search when it
gets bigger.
Refactored layout of sqlite database script.
|
|
time for password recovery via tmwweb/email.
|
|
Update file... updated ^^'
You can execute it a second time, there's no problem.
|