-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathNotes
More file actions
200 lines (164 loc) · 9.69 KB
/
Notes
File metadata and controls
200 lines (164 loc) · 9.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
WIP
2025 01 11 Saturday
looking at join, I think I added correct archive stuff
So it has been a long time.
work round->food round-> reproduction round
So I think I have join. Do I have init?
++ I need to resolve the git issues with github
Maybe github needs a password protected key?
<pwd>-git
01-18 Saturday
Work on init Nope. not needed; incorporated into the bot.
So join seems busted
Typo in genders, seems resolved now.
Now I need a chief. Vote?
++ history seems to have doubled messages?
Poking along into reproduction round, foodcheck seems OK
?? sockpuppet has no handle or id message? It doesn't have an handle.it, but it does have a handle.userid
Hmm. I can harass sockpuppet You harass sockpuppet420_73735
So no clue what was wrong, but I duplicated the Id and userId, and that seemed to work.
Add consent and decline, and managed a repro round
Failed on getting the unit tests to work.
So looking at the simple test over in ping, the API change will probably have broken all the command tests.
Still, the library tests should be doable.
-- force jerky to integers
-- endgame
-- gather double message?
-- scorechildren
-- all of conflict
-- can guard pregnant child? ACtually, that is a feature
-- reproduction lists are busted, !save is not respected on update after reproduction round
-- male got pregnant? DONE
-- message lib: messageTribe(bot, gamestate, message); messageMember(bot, gamestate, memberName, message) sendMessages(bot, gameState)
ONLY called by commands, not libs.
libs add items to 'messages' dict in gamestate, {'tribe':'message for tribe', 'member1':'private message to member 1'}
-- migrate.js and migrateLib.js have a better separation of responsibilities using message lib.
-- scout nerd is broken
-- canCraft not set on a crafter?
-- reproduction messaging may be in trouble, since it is triggered from so many places SEEMS FINE
-- unit test on migrateLib.js
-- unit test on feed lib
-- score game report male and female scores, sorted (for winners)
-- sockpuppet didn't get mating messages?
-- chance result 5, sickness, check food? NEEDs ref unless someone saves them.
-- long messages get split between channel and DMs, not obvious
-- faction for/against/neutral isn't working
-- section titles to help page
-- deal with servernames DONE?
-- changes to romance during reproduction aren't saved correctly
-- child died on migration after a feed !all. (the child was unborn, and didn't get fed by feed !all) they were listed in the check though
++ without a referee, the 2 food penalty for an injury hard to apply when they have no food (but the tribe might help them)
++ double used a spearhead; gave after a hunt
++ history removed from reproduction, hunting. Probably gathering
-- child died on migration after a feed !all. (the child was unborn, and didn't get fed by feed !all) they were listed in the check though
++ endgame needs to check banished and graveyard
++ NOTE FOR KEVIN: I can tap on arguments types like “destination” but not on the choices like “marsh”. This makes me sad @kevinmitcham .
++ history isn't working?
++ feed !all when no children need food is weird.
console.log("user is:"+interaction.member);
userId = interaction.member.id;
var elephant = interaction.member; << this has 'nickname' field >>
const rhino = client.users.cache.get(userId); << this does NOT have nickname >>
So I have a function to get the nickname, but it reqiures the client.
BUT... if I capture the nickName at join/induct, I can add it to the member object.
then population can look for them that way.
So how does that interact with targeting?
so trying to fix how to null out reproduction lists.
distracted since I broke migrate test
++ did I fix names with spaces in reproduction? Add to unit test
++ check nicknames in join and induct; add unit tests
++ confirm showHistory works after banished or dead.
W= has worked since new API
U= untested but written
X= busted
m= updated to messaging library
-=General Commands=-
W !join
U !babysit <adult child> <target child> (a mother can ask her adult child to watch a child)
W !children [parent name] (shows the children ages and food status, optionally filtered to descendants)
W !give <amt> <food|grain|spearhead|basket> <player>
W !graveyard (list of all deceased members and children)
W !inventory <target|all> (show inventory and character info. No arg means self)
W !law (see the current list of laws)
W !sacrifice <amount> <type> (place an item beyond use for religious or other reasons) [non-standard]
W !scout <location> (examine the envionment, default is current location)
W !secrets (toggle the state of willingness to teach others to craft)
W !specialize <hunter|gatherer|crafter>(at the start of the game)
W !status (see the current location, year, season and local game)
W !vote <target> (your choice for chief)
U !obey <commands> (things you will do if the chief commands, in case of extended AFK)
-=Work Round Commands=-
W !guard | !ignore <child> [<more childNames>] (take on child care responsibilities for the child)
W !leastguarded (shows the least supervised child (ties resolved randomly))
W !ready (list who is still available to work)
W !craft <spearhead|basket>
W !gather
W !hunt
X !train (learn crafting, if there is a willing teacher)
U !idle (do nothing)
!command <target> <command> (order a tribe member. They might obey)
-=Food Round Commands=-
W !foodcheck (examine the food situation for every adult and living child)
W !feed <amt> <childName | @mothername | !all > [<more childNames>]
-=Reproduction Commands=-
W !romance (show your current reproduction lists)
W !invite <target> [target !pass] The order you would like to invite people to mate.
If the list ends with !pass, you will give up if they decline. !save will retain the list every season
W !consent <target> [target] The list of people you would accept mating invitations from.
W !decline <target> [target] The list of people whose mating invitations you would decline
!pass (decline to invite anyone in the mating round; can still get invitations)
W scorechildren count number of children by parent
-=Conflict Commands=-
W !faction <for|against|neutral> (Where you stand on the current DEMAND before the tribe; you must choose for the game to continue)
W !attack <target> (attempt to harm another member of the tribe during violence)
W !defend (stand your ground against attacks during violence)
W !run (flee the violence, conceding to the opposition during violence)
Chief Commands
W !induct|banish <player> (add|remove a tribe member)
W !open|close (toggle if people can join with "!join" or only with "!induct" by the chief)
!drone <gender> <profession> <name> adds a worker to the tribe that takes commands but is sterile. [non-standard]
W !startwork (begins the work round, enabling work attempts and rolls)
W !startfood (ends the work round; subtract food/grain; birth; child age increase)
W !startreproduction (Start the reproduction round. Also when migration happens)
W !chance (after mating, chance is required to end the season)
mW !migrate <newlocation> <force> (without force, just checks who would perish on the journey)
W !decree <law number> <law text> (record a rule for the tribe, or replace the rule of the specified number)
W !skip <person> (end a players reproduction turn)
U !checkmating (report on status of mating attempts)
W !endgame convert all the child to corpses, or new adults
link 2025 03 10 https://discord.gg/Fn8Ygsvh
Come test my Tribes server!
Tribes is a game with simple mechanics but really cool emergent properties that come from the players' interactions.
I've implemented a program on a Discord server to handle the rules and inventory system, freeing the players to spend their time and attention on each other.
I'm looking for playtesters to play a few sessions of a few hours each to help smooth the documentation and game flow and to shake out the remaining bugs before I open it to the general public.
Please contact me at kmitcham@gmail.com or just dive in at https://discord.gg/m2nTTnUEQx if you want to try it.
Most players will be able to read the help text and get started without any handholding, but I'm around most evenings after 6 Seattle time for questions.
Tribes is best with 4-6 players, but as few as 2 can succeed.
While players with no Tribes experience are the intended audience, Tribes experience is a plus for understanding what is a bug and what is rules-based suffering. When in doubt, mention it.
I am interested in feedback on the help text, command descriptions, rules implementations, and of course bugs.
I realize that Discord isn't the best environment to do this, but until someone wants to team up to work on a cooler, stand-alone tool, this is what we have.
SENT!
Up on Daily Illuminator:
https://www.sjgames.com/ill/archive/March_23_2025/Tribes_Playtest_On_Discord#:~:text=%7C%20More-,Permalink,-%E2%80%A2%20Archive%20%E2%80%A2
saved file :./flounder-tribe/flounder-tribe.json at 2025-03-21T02:58:49.076Z
command open by UgUgOogOog of flounder-tribe
++ Did a bunch of work to change what commands work after endgame; test that
http DocumentRoot "/Library/WebServer/Documents"
copied an alias to the TribeServer dir
// register user : email, pwd, name
// if email in existing users:
// if pwd does not match:
// error
// else:
// if name in existing users:
// error
// hash pwd
// add to users: email: {hashed_pwd: xxx, name: yy; email:zzz}
//
// commands: if name and pwd match:
// do command
// add wss to tribe pop for player
https://app.koyeb.com/services/16204d44-40f0-4bda-845d-be8a287c21b9?deploymentId=a1f9bb5f-dc9d-4542-bb7c-9850d48131ca
connect via github
koyeb service update your-app-name/your-service-name --volumes your-volume-name:/path/in/container
koyeb service update tribes/