-
Notifications
You must be signed in to change notification settings - Fork 1
/
Skeleton_world_generator
259 lines (217 loc) · 7.89 KB
/
Skeleton_world_generator
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
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
#!/usr/bin/env python3
## example_function_name
## ExampleVariableName
import random
ListOfSettings =[
'high fantasy', 'low fantasy', 'grim fantasy', 'age of sail', 'medieaval'
'space opera', 'cyberpunk', 'urban fantasy', 'slice-of-life','post-apocalypse',
'ancient legends', 'hard sci fi', 'steampunk', '1920s pulp', 'solarpunk',
'pike and musket', 'victorina', 'colonial', 'diesel punk', 'dystopia',
'alternate history', 'biopunk', 'cold war', 'weird world war', 'superhero comic'
]
ListOfParties =[
'circus', 'first responders', 'mercenaries', 'city gaurds', 'criminal gang',
'merchant convoy', 'monster hunters', 'smugglers', 'traders',
'investigators', 'boarding school', 'university dept', 'neighbours', 'village',
'operatives', 'rebels', 'police','refugees','outsiders','beaureucrats'
]
ListOfThemes =[
'balance',
'belief',
'change',
'comfort',
'destruction ',
'corruption',
'family ',
'freedom',
'friendship',
'glory',
'honour',
'hunger',
'justice',
'knowledge ',
'law/tradition',
'love',
'pain',
'revenge',
'unity',
'survival',
'violence',
'wealth',
]
ListOfDefaultMoves=(
'Stop Adding Moves',
'Keep calm',
'Ignore difficulties',
'Take damage',
'Act forcefully',
'Act carefullly',
'Act stylishly',
'Seduce',
'Persuade',
'Threaten',
'Assess',
'Investigate',
'Recall knowledge'
)
ListofDefaultGMPrinciples=(
'sprinkle evocative details everywhere ',
'make the world seem real',
'name everyone, make everyone human',
'build a bigger world through play',
'create interesting dilemmas not interesting plots',
'address yourself to the characters not players',
'be a fan of the players characters',
'make your move but misdirect',
'make your move, but never speak its name',
'ask provocative questions and build on the answers',
'sometimes, reflect a question back upon the players',
'Think off screen too',
)
ListofDefaultGMMoves =(
'give them a difficult decision to make',
'tell them the possible consequences and ask',
'Use a front or threat move',
'Offer an opportunity, with or without a cost',
'Turn a failed move back on them',
'Offer Stuff that is painfully expensive but good',
'Put the spotlight on someone',
'seperate them',
'Put them together',
'make thier lives complicated now',
'use up their resources ',
'activate bad side of stuff',
)
ListofPlayerMoveTriggers =(
'when you do something related to (specialty) bonus',
'you have the ability to (active power). it counts as base move using (stat)',
'you have (passive power with constant effect)',
'you have a (thing). when applicable it adds two bonuses',
'Straight bonus',
'When you interact with another player, bonus',
'when you do (specialty) get hold. spend hold for bonus'
)
ListofPlayerMoveBonus =(
'bonus of +1 to stat',
'bonus of reroll a fail',
'bonus of mark xp',
'power of springboard fiction (eg cast light)',
'power of mechanical fiction (eg healing)',
'get knowledge ',
'juicy list of 3 options. 7+ choose 1, 10+ choose ',
'juicy move of 3 problems. 7+ avoid 1, 10+ avoid 3',
'Oddball list - juicy list of 3 options +1 oddball. Choose oddball for auto 10+ at a cost, or 7+ choose 1, 10+ choose ',
)
ListofPlayerEngineParts =(
'start of session momemtum triggers',
'Cast of NPCs',
'cataliser of conflict',
'expand map',
'Instigate threat',
'fixed point to defend/orbit',
'need for supplies',
'supports risky play',
'countdown urgency',
'broadcast npc motivations',
'Mostly obediant entity',
'director stance',
'author stance'
)
def get_seed():
Title = input("What is your game called?")
Setting = input("What is the broad setting? High Fantasy? Cyberpunk? ")
if Setting == '':
Setting = get_setting()
if Title == '':
i=int(len(Setting)/3)
Title = Setting[:i]+Setting[i*2:] + " World"
Title = Title.upper()
return(Title, Setting)
def get_setting():
Setting = random.randint(0, len(ListOfSettings)-1)
Party = random.randint(0, len(ListOfParties)-1)
Setting = ListOfSettings[Setting]
Party = ListOfParties[Party]
FullSetting = Party+' in '+Setting
return(FullSetting)
def get_premise():
PremA = random.randint(0, len(ListOfThemes)-1)
PremB = random.randint(0, len(ListOfThemes)-1)
PremA = ListOfThemes[PremA]
PremB = ListOfThemes[PremB]
return(PremA, PremB)
def rank_prems(PremA, PremB):
print("/n EXPLORING PREMISE /n")
print("How important to the game expereience is ", PremA, "?")
PremARank = input("blank = random 1 = Very, has a dedicated mechanic, 2= A bit, has a dedicated stat, 3= not, ignore it.") or random.randint(1,3)
print("How important is ", PremB, "?")
PremBRank = input("blank = random, 1 = Very, has a dedicated mechanic, 2= A bit, has a dedicated stat, 3= not, ignore it.") or random.randint(1,3)
if PremARank == '3' and PremBRank == '3':
print("your game needs to be about something")
PremA, PremB = get_premise()
PremARank, PremBRank = rank_prems(PremA, PremB)
PremATuple = (PremA, PremARank)
PremBTuple = (PremB, PremBRank)
print(PremATuple, PremBTuple)
return(PremATuple, PremBTuple)
def get_stats(ListOfStats):
DictOfMoves={}
KeyIndex =5 ## inital value only
print('Current Stats: ', ListOfStats)
print('Choose some of these deafult moves (five is common, zero is possible, all twelve waters down the playbooks a bit.')
for index, move in enumerate(ListOfDefaultMoves):
print(index, ' : ', move)
while KeyIndex !=0:
KeyIndex= int(input('Number of move on list above '))or 0
if KeyIndex == 0:
break
StatName= input('Name of the Stat you roll for that ')
MoveName= input('Custom Move name, (or leave blank for deafult ') or ListOfDefaultMoves[KeyIndex]
## by default, allow move=stat associations to be overridden
DictOfMoves[MoveName]= StatName
def name_custom_stats(PremATuple, PremBTuple):
if PremATuple[1]=='2':
ListOfStats.append(PremATuple[0])
if PremBTuple[1]=='2':
ListOfStats.append(PremBTuple[0])
return(ListOfStats)
def shitty_playbook():
EmphasisList = [PremATuple, PremBTuple, [PremATuple, PremBTuple]]
C1 = random.randint(0,2)
C2 = random.randint(0,len(ListOfStats)-1)
C3 = random.randint(0,len(ListOfStats)-1)
C4 = random.randint(0,len(ListofPlayerEngineParts)-1)
StatA = ListOfStats[C2]
StatB = ListOfStats[C3]
Engine = ListofPlayerEngineParts[C4]
print("Focused on ", EmphasisList[C1])
print("via ", StatA, " ", StatB , " and ", Engine )
for i in range (1,8):
get_random_player_move(StatA, StatB, Engine)
def get_random_player_move(StatA, StatB, Engine):
ChooserList=[StatA, StatA, StatB, Engine]
C1 = random.randint(0,len(ChooserList)-1)
C2 = random.randint(0,len(ListofPlayerMoveTriggers)-1)
C3 = randome.randint(0, len(ListofPlayerMoveBonus)-1)
print("Move uses, ", ChooserList[C1])
print("when", ListofPlayerMoveTriggers[c2], "then", ListofPlayerMoveBonus[c3])
return()
def print_coverpage():
print(Title)
print('A', Setting, ' about ', PremA,' and ', PremB)
## Main
## TODO
## Do you know what the heart of yourgame is?
## yes
## no -> PremA, PremB = get_premise()
## How important is PremA - Very, A bit, not
## if both not PremA, PremB = get_premise()
## very = lookup_mechanic
## a bit = statA, StatB
Title, Setting = get_seed()
PremA, PremB = get_premise()
print_coverpage()
PremATuple, PremBTuple = rank_prems(PremA, PremB)
ListOfStats = []
ListOfStats = name_custom_stats(PremATuple, PremBTuple)
ListOfStats, DictOfMoves = get_stats(ListOfStats)