summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrubenwardy <anjayward@gmail.com>2014-05-02 20:09:54 +0100
committerrubenwardy <anjayward@gmail.com>2014-05-02 20:09:54 +0100
commit6a592781d5d1e3aa8f36382fe171f43453fbad45 (patch)
tree0f43470fd44be41bc697f8b57b233fa45f2b0d8e
parentd0e5dfc0c1cdf5b5feb274d29192811a8c39e420 (diff)
Secret awards, fixes
-rw-r--r--api.lua79
-rw-r--r--init.lua2
-rw-r--r--readme.md12
3 files changed, 62 insertions, 31 deletions
diff --git a/api.lua b/api.lua
index 0738f6c..56e242f 100644
--- a/api.lua
+++ b/api.lua
@@ -261,15 +261,15 @@ minetest.register_chatcommand("list_awards", {
end
})
minetest.register_chatcommand("awards", {
- params = "Empty params for your awards, player name for someone else's awards",
+ params = "",
description = "awards: list awards",
func = function(name, param)
awards.showto(name, name, nil, false)
end
})
minetest.register_chatcommand("cawards", {
- params = "Empty params for your awards, player name for someone else's awards",
- description = "awards: list awards",
+ params = "",
+ description = "awards: list awards in chat",
func = function(name, param)
awards.showto(name, name, nil, true)
end
@@ -313,15 +313,27 @@ function awards._order_awards(name)
end
function awards.showto(name, to, sid, text)
+ if name == "" or name == nil then
+ name = to
+ end
if text then
if not awards.players[name] or not awards.players[name].unlocked then
- minetest.chat_send_player(name, "You do not have any awards")
+ minetest.chat_send_player(to, "You have not unlocked any awards")
return
end
minetest.chat_send_player(to, name.."'s awards:")
for _, str in pairs(awards.players[name].unlocked) do
- minetest.chat_send_player(to, str)
+ local def = awards.def[str]
+ if def and def.title then
+ if def.description then
+ minetest.chat_send_player(to, def.title..": "..def.description)
+ else
+ minetest.chat_send_player(to, def.title)
+ end
+ else
+ minetest.chat_send_player(to, str)
+ end
end
else
if sid == nil or sid < 1 then
@@ -334,21 +346,29 @@ function awards.showto(name, to, sid, text)
if sid then
local item = listofawards[sid+0]
local def = awards.def[item.name]
- local title = item.name
- if def and def.title then
- title = def.title
- end
- local status = ""
- if item.got then
- status = " (got)"
- end
- if def and def.icon then
- icon = def.icon
- end
- formspec = formspec .. "label[1,2.75;"..title..status.."]"..
- "image[1,0;3,3;"..icon.."]"
- if def and def.description then
- formspec = formspec .. "label[0,3.25;"..def.description.."]"
+ if def and def.secret and not item.got then
+ formspec = formspec .. "label[1,2.75;Secret Award]"..
+ "image[1,0;3,3;unknown.png]"
+ if def and def.description then
+ formspec = formspec .. "label[0,3.25;Unlock this award to find out what it is]"
+ end
+ else
+ local title = item.name
+ if def and def.title then
+ title = def.title
+ end
+ local status = ""
+ if item.got then
+ status = " (got)"
+ end
+ if def and def.icon then
+ icon = def.icon
+ end
+ formspec = formspec .. "label[1,2.75;"..title..status.."]"..
+ "image[1,0;3,3;"..icon.."]"
+ if def and def.description then
+ formspec = formspec .. "label[0,3.25;"..def.description.."]"
+ end
end
end
@@ -361,16 +381,19 @@ function awards.showto(name, to, sid, text)
end
first = false
local def = awards.def[award.name]
- local title = award.name
-
- if def and def.title then
- title = def.title
- end
- if award.got then
- formspec = formspec .. minetest.formspec_escape(title)
+ if def and def.secret and not award.got then
+ formspec = formspec .. "#ACACACSecret Award"
else
- formspec = formspec .. "#ACACAC".. minetest.formspec_escape(title)
+ local title = award.name
+ if def and def.title then
+ title = def.title
+ end
+ if award.got then
+ formspec = formspec .. minetest.formspec_escape(title)
+ else
+ formspec = formspec .. "#ACACAC".. minetest.formspec_escape(title)
+ end
end
end
formspec = formspec .. ";"..sid.."]"
diff --git a/init.lua b/init.lua
index 24ca4db..c2508f0 100644
--- a/init.lua
+++ b/init.lua
@@ -126,7 +126,7 @@ awards.register_achievement("award_death1",{
-- Burned to death
awards.register_achievement("award_burn",{
title = S("You're a witch!"),
- description = S("Burn to death in a fire"),
+ description = S("Burn to death in a fire")
})
-- 1 sentence
diff --git a/readme.md b/readme.md
index 8b011ed..f8cab88 100644
--- a/readme.md
+++ b/readme.md
@@ -17,9 +17,10 @@ The API
* sound [optional]
* image [optional]
* trigger [optional] [table]
- * type - "dig" or "place"
+ * type - "dig", "place", "death", "chat" or "join"
* (for dig/place type) node - the nodes name
* (for all types) target - how many to dig / place
+ * secret [optional] - if true, then player needs to unlock to find out what it is.
* awards.give_achievement(name,award)
* -- gives an award to a player
* awards.register_onDig(func(player,data))
@@ -28,6 +29,10 @@ The API
* -- return award name or null
* awards.register_onDeath(func(player,data))
* -- return award name or null
+* awards.register_onChat(func(player,data))
+ * -- return award name or null
+* awards.register_onJoin(func(player,data))
+ * -- return award name or null
Player Data
@@ -41,4 +46,7 @@ A list of data referenced/hashed by the player's name.
* itemname [int]
* place [table] - place counter
* modname [table]
- * itemname [int] \ No newline at end of file
+ * itemname [int]
+ * deaths
+ * chats
+ * joins \ No newline at end of file