diff options
author | Erik Schilling <ablu.erikschilling@googlemail.com> | 2012-04-03 13:29:05 +0200 |
---|---|---|
committer | Erik Schilling <ablu.erikschilling@googlemail.com> | 2012-04-04 16:22:11 +0200 |
commit | f8e816d9185c09d1c17d921b775e483d132982e5 (patch) | |
tree | 3ab299ab6057db3bfd8feb24130a6fcb7e64a60d /example | |
parent | e4baa92aae537921dd17873328a95ab17afcfdfc (diff) | |
download | manaserv-f8e816d9185c09d1c17d921b775e483d132982e5.tar.gz manaserv-f8e816d9185c09d1c17d921b775e483d132982e5.tar.xz manaserv-f8e816d9185c09d1c17d921b775e483d132982e5.zip |
Enhanced special support
- 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.
Diffstat (limited to 'example')
-rw-r--r-- | example/permissions.xml | 4 | ||||
-rw-r--r-- | example/scripts/special_actions.lua | 33 | ||||
-rw-r--r-- | example/specials.xml | 27 |
3 files changed, 37 insertions, 27 deletions
diff --git a/example/permissions.xml b/example/permissions.xml index e661586..4c46af1 100644 --- a/example/permissions.xml +++ b/example/permissions.xml @@ -25,6 +25,10 @@ <allow>@killmonsters</allow> <allow>@getpos</allow> <allow>@effect</allow> + <allow>@givespecial</allow> + <allow>@takespecial</allow> + <allow>@rechargespecial</allow> + <allow>@listspecials</allow> </class> <class level="4"> <alias>gm</alias> diff --git a/example/scripts/special_actions.lua b/example/scripts/special_actions.lua index 25619f4..6070ecd 100644 --- a/example/scripts/special_actions.lua +++ b/example/scripts/special_actions.lua @@ -8,28 +8,15 @@ --]] -local specialCost = {} -specialCost[1] = 50 -specialCost[2] = 250 -specialCost[3] = 1000 +local spell1 = get_special_info("Magic_Test Spell 1") +spell1:on_use(function(user, target, specialid) + target = target or user + being_say(target, "Kaaame...Haaame... HAAAAAA!") + chr_set_special_mana(user, specialid, 0) +end) +spell1:on_recharged(function(ch) being_say(ch, "Hoooooooo...") end) -local function use_special(ch, id) - -- perform whatever the special with the ID does - if id == 1 then - being_say(ch, "Kaaame...Haaame... HAAAAAA!") - end - if id == 2 then - being_say(ch, "HAA-DOKEN!") - end - if id == 3 then - being_say(ch, "Sonic BOOM") - end -end +local spell2 = get_special_info(2) +spell2:on_use(function(user) being_say(user, "HAA-DOKEN!") end) -local function get_special_recharge_cost(id) - -- return the recharge cost for the special with the ID - return specialCost[id] -end - -on_use_special(use_special) -on_get_special_recharge_cost(get_special_recharge_cost) +get_special_info(3):on_use(function(user) being_say(user, "Sonic BOOM") end) diff --git a/example/specials.xml b/example/specials.xml index c234f66..2c1d61a 100644 --- a/example/specials.xml +++ b/example/specials.xml @@ -1,9 +1,28 @@ <?xml version="1.0" encoding="utf-8"?> <specials> <set name="Magic"> - <special id="1" name="Test Spell 1" active="true" recharge="true" /> - <special id="2" name="Test Spell 2" active="true" recharge="true" /> - <special id="3" name="Test Spell 3" active="true" recharge="true" /> - <special id="4" name="Passive Special 1" active="false" /> + <special + id="1" + name="Test Spell 1" + rechargeable="true" + needed="100" + rechargespeed="10" + /> + <special + id="2" + name="Test Spell 2" + rechargeable="true" + needed="1000" + rechargespeed="10" + target="being" + /> + <special + id="3" + name="Test Spell 3" + rechargeable="true" + needed="10000" + rechargespeed="10" + target="point" + /> </set> </specials> |