Gameplay content
Clubs and circles
Groups of people who meet again and again, led by the player or by someone else, with real membership, meetings in the agenda and honest attendance.
Clubs keeps the groups: who is in them, when they meet, and who actually came.
lualocal M = "ynl_Nightlife"
Clubs:create(M, "quiz_team", { name = "The Thursday quiz team", tags = { "pub" }, fee = 4 })
local why = Clubs:invite(M, "quiz_team", person) -- nil, or "Noor is at work then."...
if not why then Clubs:respond(M, "quiz_team", person, likesQuizzes(person)) end
Clubs:schedule(M, "quiz_team", nextThursdayAt19) -- a plan in the player's agenda
-- At the pub, in the meeting's window:
local r = Clubs:meet(M, "quiz_team")
if not r.ok then return r.reason end
for _, id in ipairs(r.came) do People:get(id):record("ynl_quiz_night", People:player()) end
for _, a in ipairs(r.absent) do Game:Narrate(a.reason) end -- "Ben has other plans then."
- Any number of clubs per mod, each with a key. The leader is the player by default, or a person (
leader = person): a circle the player can be invited into (Clubs:invite(mod, key)without a person invites the player). - Invitations consult the person's time. If a meeting is planned, an invitation is refused with the reason when they cannot make it: other plans, at work then (their routine), or no longer a contact. Whether they say yes is your mod's decision, through
respond. - Meetings are plans. The next meeting is in the player's agenda, with a reminder, and reserves the members who are free then. A member who becomes busy is simply not expected.
- Attendance is honest.
Clubs:meetchecks the player is at the meeting place in its window, says who came and who did not and why, takes the fee through the wallet only then, and plans the next meeting. Give rewards and history lines tor.cameonly. - Missed meetings (nobody met in the window) are recorded once each, however many weeks passed, and the next one is planned. Members who are blocked or deleted leave the club.
Clubs:skipcancels the next meeting and keeps the slot;Clubs:disbandcloses the club and frees everyone's plans; its record stays.
| Call | Does |
|---|---|
Clubs:create(mod, key, { name, topic, leader, tags, building, fee, interval, duration }) |
nil, or why not. interval defaults to a week. |
Clubs:get(mod, key), Clubs:list([mod]), Clubs:of([person]) |
Club tables: members (with attended, missed), invites, next, meetings... |
Clubs:invite(mod, key [, person]), Clubs:respond(mod, key, person, accept) |
nil, or why not. |
Clubs:leave(mod, key, person) |
Removes a member. |
Clubs:schedule(mod, key, atHours) |
nil, or why not (the player's own agenda decides). |
Clubs:meet(mod, key) |
{ ok, reason, came, absent = { { id, reason } } } |
Clubs:skip(mod, key [, reason]), Clubs:disband(mod, key) |
|
Clubs:available(person, atHours) |
nil, or why they could not come then. |
Clubs:version() |
The API version, 1. |