summaryrefslogtreecommitdiff
path: root/data
diff options
context:
space:
mode:
authorPhilipp Sehmisch <tmw@crushnet.org>2008-07-07 19:56:02 +0000
committerPhilipp Sehmisch <tmw@crushnet.org>2008-07-07 19:56:02 +0000
commit5996ff324d4123d1b1c6adb1c81eb16dd5e7b466 (patch)
tree92943ff0856aa4ed4accd04d9e870d96cf186a21 /data
parente5d4c719a52d03bfe9bfb4ea2fea0570842985bc (diff)
downloadmanaserv-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.lua19
-rw-r--r--data/test.lua19
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