diff --git a/witch_spike.lua b/witch_spike.lua new file mode 100644 index 0000000..1430ce3 --- /dev/null +++ b/witch_spike.lua @@ -0,0 +1,61 @@ +-- This file contains some drafts on how a WITCH API could look in Lua. +-- Assumed in-scope functions: +-- hears(pattern, callback) +-- registers a callback called when an object in the same room as this one +-- SAYs something that matches pattern +-- sees(pattern, callback) +-- registers a callback called when an object in the same room as this one +-- EMOTEs something that matches pattern +-- says(message) +-- issues a SAY to the server that other objects in the same room will overhear +-- does(message) +-- issues an EMOTE to the server that other objects in the same room will see +-- room.says(message) +-- tells the server to have the room "say" something. this is useful when an +-- object wants something said in the third person. + +-- Example 1: the nervous pasta +has = { + name = "spaghetti", + description = "a plate of spaghetti covered in a fresh pomodoro sauce" +} + +hears("*eat*", function(msg) + does("quivers nervously") +end) + +sees("*slurp*", function(emote) + does("inches away from " + sender.get("name")) +end) + +-- Example 2: the slot machine +has = { + name = "slot machine", + description = "a vintage 1960s slot machine from Las Vegas" +} + +provides("pull $this", function(args) + math.randomseed(os.time()) + says("KA CHANK") + one = math.random(0, 9) + two = math.random(0, 9) + three = math.random(0,9) + say("you got" + string.format("%d %d %d", one, two, three)) +end) + +provides("whack $this", function(args) + room.says(sender.get("name") + " hits the " + get("name") + " very hard ") + say("CLATTLE KRAK CHAK CHUNK") + say("you got 7 7 7") +end) + +-- Example 3: vending machine +has = { + name = "vending machine", + description = "looks like the kind of thing you'd see in Tokyo" +} + +provides("give $this $money", function(args) + amount = args.get("money") + -- TODO +end)