diff options
author | Philipp Sehmisch <tmw@crushnet.org> | 2008-07-07 19:56:02 +0000 |
---|---|---|
committer | Philipp Sehmisch <tmw@crushnet.org> | 2008-07-07 19:56:02 +0000 |
commit | 5996ff324d4123d1b1c6adb1c81eb16dd5e7b466 (patch) | |
tree | 92943ff0856aa4ed4accd04d9e870d96cf186a21 /data | |
parent | e5d4c719a52d03bfe9bfb4ea2fea0570842985bc (diff) | |
download | manaserv-5996ff324d4123d1b1c6adb1c81eb16dd5e7b466.tar.gz manaserv-5996ff324d4123d1b1c6adb1c81eb16dd5e7b466.tar.bz2 manaserv-5996ff324d4123d1b1c6adb1c81eb16dd5e7b466.tar.xz manaserv-5996ff324d4123d1b1c6adb1c81eb16dd5e7b466.zip |
Implemented death listener for scripting engine.
Diffstat (limited to 'data')
-rw-r--r-- | data/scripts/libtmw.lua | 19 | ||||
-rw-r--r-- | data/test.lua | 19 |
2 files changed, 32 insertions, 6 deletions
diff --git a/data/scripts/libtmw.lua b/data/scripts/libtmw.lua index e788a59b..83e3b40b 100644 --- a/data/scripts/libtmw.lua +++ b/data/scripts/libtmw.lua @@ -322,6 +322,25 @@ function schedule_every(seconds, funct) end +-- DEATH NOTIFICATIONS +local ondeath_functs = {} + +function onDeath(being, funct) + if ondeath_functs[being] == nil then + ondeath_functs[being] = {} + end + table.insert(ondeath_functs[being], funct) + tmw.noteOnDeath(being) +end + +function deathNotification(being) + if type(ondeath_functs[being]) == "table" then + for i,funct in pairs(ondeath_functs[being]) do + funct() + end + end +end + -- Below are some convenience methods added to the engine API diff --git a/data/test.lua b/data/test.lua index cebabddb..75a903ed 100644 --- a/data/test.lua +++ b/data/test.lua @@ -20,7 +20,7 @@ require "data/scripts/npclib" atinit(function() create_npc("Test NPC", 200, 50 * TILESIZE + 16, 19 * TILESIZE + 16, npc1_talk, npclib.walkaround_small) create_npc("Teleporter", 201, 51 * TILESIZE + 16, 25 * TILESIZE + 16, npc4_talk, npclib.walkaround_wide) - create_npc("Spider Tamer", 126, 45 * TILESIZE + 16, 25 * TILESIZE + 16, npc5_talk, npclib.walkaround_map) + create_npc("Scorpion Tamer", 126, 45 * TILESIZE + 16, 25 * TILESIZE + 16, npc5_talk, nil) create_npc("Guard", 122, 58 * TILESIZE + 16, 15 * TILESIZE + 16, npc6_talk, npc6_update) create_npc("Fire Demon", 202, 58 * TILESIZE + 16, 35 * TILESIZE + 16, firedemon_talk, firedemon_update) @@ -115,15 +115,22 @@ function npc4_talk(npc, ch) end function npc5_talk(npc, ch) - do_message(npc, ch, "I am the spider tamer. Do you want me to spawn some spiders?") + do_message(npc, ch, "I am the scorpion tamer. Do you want me to spawn some scorpions?") local answer = do_choice(npc, ch, "Yes", "No"); if answer == 1 then local x = tmw.posX(npc) local y = tmw.posY(npc) - tmw.monster_create(1012, x + TILESIZE, y + TILESIZE) - tmw.monster_create(112, x - TILESIZE, y + TILESIZE) - tmw.monster_create(1012, x + TILESIZE, y - TILESIZE) - tmw.monster_create(1012, x - TILESIZE, y - TILESIZE) + m1 = tmw.monster_create(1, x + TILESIZE, y + TILESIZE) + m2 = tmw.monster_create(1, x - TILESIZE, y + TILESIZE) + m3 = tmw.monster_create(1, x + TILESIZE, y - TILESIZE) + m4 = tmw.monster_create(1, x - TILESIZE, y - TILESIZE) + + onDeath(m1, function() tmw.being_say(npc, "NOOO!") end) + onDeath(m2, function() tmw.being_say(npc, "Please stop this violence!") end) + onDeath(m3, function() tmw.being_say(npc, "Stop slaughtering my scorpions!") end) + onDeath(m4, function() tmw.being_say(npc, "Leave my scorpions alone!") end) + onDeath(m4, function() tmw.being_say(m4, "AAARGH!") end) + end end |