summaryrefslogtreecommitdiff
path: root/example
AgeCommit message (Collapse)AuthorFilesLines
2012-03-03Use callbacks for items, monsters and status effectsThorbjørn Lindeijer7-9/+22
Previously, global function names were defined in the respective XML definitions of items, monsters and status effects. This was reasonable when they all had the same state, but now they're sharing the single global Lua state. Now the Lua API provides access to the ItemClass, MonsterClass and StatusEffect instances, on which callbacks for both standard and custom events can be explicitly set. Reviewed-by: Erik Schilling
2012-03-03Added further missing callbacksErik Schilling2-0/+5
Reviewed-by: bjorn.
2012-03-02Converted functions called by LuaScript to callbacksThorbjørn Lindeijer1-4/+4
This includes the quest reply, post reply, death notification and remove notification. Also, Script::Ref was changed from a typedef to a small class, automating initialization and making the check for validness clearer. Reviewed-by: Erik Schilling
2012-03-02Use callbacks for handling character death and respawnThorbjørn Lindeijer1-6/+11
Rather than relying on the availability of global functions with certain predefined names, the Lua script now calls API functions to set which function should be called on these global events. This mechanism should make it easier to avoid name collisions in the global namespace, which is important now that there is only a single script state. For these global events this was not likely to become a problem, but this solution can also be used for callbacks on specific item or monster types, or even allow setting callbacks on certain instances. Reviewed-by: Erik Schilling Reviewed-by: Yohann Ferreira
2012-03-02A bunch of cleanups to example Lua scriptsThorbjørn Lindeijer10-181/+126
Mostly removed bulky copyright headers and fixed indentation and line length. Reviewed-by: Yohann Ferreira Reviewed-by: Erik Schilling
2012-03-02Merged all the different Lua states into oneThorbjørn Lindeijer7-7/+9
No more Lua state for each status effect, monster, item effect or map. All scripts are loaded into the same state. This should be more efficient overall and make it easier to implement dynamic reloading of the scripts in the future. Now, this introduces the problem of name collisions between different Lua scripts. For now this is solved by using more specific function names, like 'tick_plague' and 'tick_jump' rather than just 'tick'. The plan is however to get rid of these globals, and register these callbacks from the script, so that they can be local functions without the danger of colliding with other scripts. Reviewed-by: Erik Schilling Reviewed-by: Yohann Ferreira
2012-02-25Merged the example client and server dataThorbjørn Lindeijer187-1/+1
It's easier to just talk about world data and to modify it as a whole. If there is really a need to separate it, a project can still choose to do that (and in whatever suitable way). There is no need to enforce this separation or to do it in our example. Reviewed-by: Erik Schilling
2012-02-05Moved @announce permission to GM groupThorbjørn Lindeijer1-1/+1
Reviewed-by: Erik Schilling
2012-02-04Simplified merchant.luaThorbjørn Lindeijer1-80/+85
Just defined an inline function to make talking to the player easier. Would be nice when NPC scripts could look more like this by default. Also indented with 4 spaces, which we do in C++ so why not Lua files (the file had mixed 2 and 4 space indentation before).
2012-02-02Added a way to specify the min and max attributes values.Yohann Ferreira1-22/+135
This can now be done in attributes.xml through the minimum and maximum attribute parameters. I also changed the AttributeInfo struct as requested by bjorn. Reviewed-by: Erik Schilling, Thorbjørn Lindeijer
2012-01-31Use a full user data object for MapObject referencesThorbjørn Lindeijer1-0/+10
Based on a templated helper class, MapObject references in Lua scripts are now full user data objects. Using the '__index' member of their metatable, a library is associated with it so that member functions can be called directly on the object. Reviewed-by: Yohann Ferreira Reviewed-by: Erik Schilling
2012-01-22Added announce(text [, sender]) lua functionErik Schilling1-0/+1
The function will cause a global announcement. If no sender ist set "Server" will be used. Reviewed-by: Bjorn.
2012-01-18Added the chr_get_inventory and chr_get_equipment functions.Yohann Ferreira1-0/+28
Those will make the scripters able to get a full view of the current player's possessions. Use with care. + Fixes following Ablu's review. Resolves: Mana-Mantis #207. Reviewed-by: Ablu
2012-01-18Fixed the chr_inv_count function to handle equipment.Yohann Ferreira1-2/+11
the function can now count in the inventory and/or the player's equipment. I also fixed the script function and added a use case in the example map. + Fixes after Ablu's review. + 2nd fix after Ablu's review: Fix the inventory remove behaviour. Resolves: Mana-Mantis #288 Reviewed-by: Ablu
2012-01-02Made all beings capable of having a genderErik Schilling4-10/+11
Reviewed-by: o11c, bjorn, Bertram.
2012-01-02Made do_npc_close to be called by default after the end of the talk functionErik Schilling8-11/+1
Reviewed-by: Bertram.
2011-12-04Added @skills command which lists all skillsErik Schilling1-0/+1
Reviewed-by: o11c.
2011-11-13Added the background parameter values to the equip.xml file.Yohann Ferreira1-10/+10
Reviewed-by: Thorbjorn Lindeijer
2011-11-07Merged three global script states into oneThorbjørn Lindeijer1-0/+17
These scripts could trivially share one script state, since the methods called on them from the server are not overlapping. This does leave them open to access each other's global variables, but that's the problem with global variables. The one remaining global script file name is now configurable, so that it may also be set to a script in a different scripting language. The two related script options are: script_mainFile (default: scripts/main.lua) script_defaultEngine (default: lua) - renamed from defaultScriptEngine Reviewed-by: jurkan Reviewed-by: Yohann Ferreira
2011-11-02Added @permissions commandErik Schilling1-0/+1
Added @permissions <character> which lists the permissions of a player. Made @givepermission giving feedback on success. Reviewed-by: Thorbjørn Lindeijer.
2011-10-19Merge branch 'master' of github.com:mana/manaservYohann Ferreira1-7/+12
Conflicts: src/game-server/accountconnection.cpp
2011-10-19Prevent server crash by not having beings talk after spawn for nowThorbjørn Lindeijer1-7/+12
At the moment it is the responsibility of the script to make sure any references to beings passed into script functions are valid. This means you can't schedule delayed scripts like the one making maggots say 'Roaaarrrr!!!', since the being might have been removed before the script gets executed. In the case of this bug the maggots are removed by some script code testing 'mana.monster_remove'. We should of course fix the way actor handles are used in Lua so that scripts can't end up crashing the server. Mantis-issue: 384 Reviewed-by: Yohann Ferreira
2011-09-28Added a default skill id getter in the skill manager.Yohann Ferreira1-1/+1
I also added a link to the skillmanager object in its header file. This will later be used to get info from elsewhere than the server main loop.
2011-09-28Fixed the items.xml fileYohann Ferreira1-14/+17
The file is now setting the correct attack for the given weapons. I also updated the auto attack parameter to correspond the ones needed in the code.
2011-09-28Added the chr_get_level script function.Yohann Ferreira1-0/+1
2011-09-15Added chatcommand to get position of a character.Erik Schilling1-0/+1
Add chatcommand @getpos <character> which return the mapid and location of the character. Part of: Mana-Mantis: #385. Reviewed-by: Bertram.
2011-09-12Changed specials.xml to reflect the current capabilitiesPhilipp Sehmisch1-3/+4
2011-09-01Added chatcommand to get position of a character.Erik Schilling1-0/+1
Add chatcommand @getpos <character> which return the mapid and location of the character. Part of: Mana-Mantis: #385.
2011-08-30As requested, changed the trigger 'existence' to 'in-inventory'.Yohann Ferreira1-9/+9
2011-08-30Merge branch 'equipment-fix'Yohann Ferreira1-10/+29
2011-08-30Synced the equip.xml file to the latest changes.Yohann Ferreira1-10/+29
2011-08-25Merge branch 'equipment-fix' of github.com:Bertram25/manaservYohann Ferreira15-12/+415
2011-08-25Updated specials.xml to better illustrate the features which are currentlyunknown1-3/+4
working and expected by the server to be known by the client. Note: I would like to get rid of specials.xml on the client side and make the gameserver provide all information relevant for the players character at runtime to allow for proceduarally generated specials.
2011-08-19Merge git://gitorious.org/~bertram/mana/manaserv-equipment-fix into ↵Yohann Ferreira15-12/+408
equipment-fix Conflicts: example/serverdata/scripts/maps/desert.lua
2011-08-19Added boots and pants to play with on the test map.Yohann Ferreira13-11/+363
2011-08-19Used the client base to make a final bugfix on the server code.Yohann Ferreira5-2/+46
Made the server handle only one slot type requirement since it's irrelevant to have more anyway. Plus, it simplifies the code for both equipping/unequipping. I also added a dagger to show how equipping/unequipping is working.
2011-08-18Added LUA function for changing anger of monsters.Erik Schilling1-1/+4
You now can change the anger of a monster to a being using mana.monster_change_anger(monster, being, anger) Resolves: Mana-Mantis #366.
2011-08-18Added LUA function for changing anger of monsters.Erik Schilling1-1/+4
You now can change the anger of a monster to a being using mana.monster_change_anger(monster, being, anger) Resolves: Mana-Mantis #366.
2011-08-11Merge branch 'master' of ↵Yohann Ferreira1-9/+16
git://gitorious.org/~bertram/mana/manaserv-equipment-fix into equipment-fix Conflicts: src/common/manaserv_protocol.h
2011-08-10Made chr_inv_count and npc_trade capable of taking a name or an id.Erik Schilling1-3/+4
Resolves: Mana-Mantis #318. Reviewed-by: Bertram.
2011-08-04Merge branch 'master' of git://gitorious.org/mana/manaservYohann Ferreira1-1/+1
2011-08-04Allowed names of items and monsters in scripts - part 1.Erik Schilling1-1/+1
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.
2011-08-04Merge branch 'master' of git://gitorious.org/mana/manaservYohann Ferreira3-8/+17
2011-08-03Unified the lua.cpp documentation.Yohann Ferreira2-8/+8
I also changed the chatmessage function to chat_message to follow the coding standard.
2011-08-03Added monster_remove lua function.Erik Schilling1-0/+9
mana.monster_remove(monster) can now be used to remove a monster from a map. Resolves: Mana-Mantis #352. Reviewed-by: Bertram.
2011-07-27Reworked the way equip slot info are loaded in a more logical way.Yohann Ferreira1-9/+16
2011-07-04Added new lua function for calculating distances.Ablu1-0/+2
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.
2011-05-26Allow monsters to drop multiple itemsStefan Dombrowski1-25/+20
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.
2011-05-01Changed the <being-effects> tag to <effects>.Yohann Ferreira1-2/+2
Effects aren't applied only on beings. Hence the former tag name was irrelevant.
2011-05-01Renamed the mana-status-effects.xml to status-effects.xmlYohann Ferreira1-0/+0
In fact, the client never prefixed that file. Hence, the server doesn't have to.