-
Notifications
You must be signed in to change notification settings - Fork 1
/
Template (Amazing Mirror).py
327 lines (317 loc) · 7.92 KB
/
Template (Amazing Mirror).py
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
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
# This is a randomizer file for the Simple Randomizer Maker.
# This file must be named randomizer.py in order to work.
# For more information on what each variable means, see "Readme (Tutorial).md"
from classes import *
def value(name):
for att in Attributes:
if att.name == name:
return att
print("This attribute does not exist: "+name)
return None
"""
Ability Values:
00 - Nothing
01 - Fire
02 - Ice
03 - Burning
04 - Wheel
05 - Parasol
06 - Cutter
07 - Beam
08 - Stone
09 - Bomb
0A - Throw
0B - Sleep
0C - Cook
0D - Laser
0E - UFO
0F - Spark
10 - Tornado
11 - Hammer
12 - Sword
13 - Cupid
14 - Fighter
15 - Magic
16 - Smash
17 - Mini
18 - Crash
19 - Missile
1A - Master
The remaining values are either some sort of bug/crash, mix (like when you inhale two abilities at one), or duplicate.
"""
########################
# EDIT BELOW THIS LINE #
########################
Program_Name = "Amazing Mirror Randomizer"
Rom_Name = "Kirby & The Amazing Mirror (USA)"
Rom_File_Format = "gba"
Rom_Hash = "9f2a3048"
About_Page_Text = "This is a sample randomizer for Kirby & The Amazing Mirror that changes the abilities given by a few enemies (specifically, the ones in the first area of the game)."
Timeout = 10
Slow_Mode = False
Attributes = [
Attribute(
name="Waddle Dee",
addresses=[0x35164E, 0x351B76],
number_of_bytes=1,
is_little_endian=False,
possible_values=None, # unused since min_value and max_value are used
min_value=0,
max_value=26,
min_max_interval=1,
lock_if_enabled=None,
lock_unless_enabled=None,
),
Attribute(
name="Droppy",
addresses=[0x351AFE, 0x3527D6],
number_of_bytes=1,
is_little_endian=False,
possible_values=None, # unused since min_value and max_value are used
min_value=0,
max_value=26,
min_max_interval=1,
lock_if_enabled=None,
lock_unless_enabled=None,
),
Attribute(
name="Leap",
addresses=[0x3517B6],
number_of_bytes=1,
is_little_endian=False,
possible_values=None, # unused since min_value and max_value are used
min_value=0,
max_value=26,
min_max_interval=1,
lock_if_enabled=None,
lock_unless_enabled=None,
),
Attribute(
name="Big Waddle Dee",
addresses=[0x3517E6],
number_of_bytes=1,
is_little_endian=False,
possible_values=None, # unused since min_value and max_value are used
min_value=0,
max_value=26,
min_max_interval=1,
lock_if_enabled=None,
lock_unless_enabled=None,
),
Attribute(
name="Flamer",
addresses=[0x351816],
number_of_bytes=1,
is_little_endian=False,
possible_values=None, # unused since min_value and max_value are used
min_value=0,
max_value=26,
min_max_interval=1,
lock_if_enabled=None,
lock_unless_enabled=None,
),
Attribute(
name="Sword Knight",
addresses=[0x3518BE],
number_of_bytes=1,
is_little_endian=False,
possible_values=None, # unused since min_value and max_value are used
min_value=0,
max_value=26,
min_max_interval=1,
lock_if_enabled=None,
lock_unless_enabled=None,
),
Attribute(
name="Cupie",
addresses=[0x35176E],
number_of_bytes=1,
is_little_endian=False,
possible_values=None, # unused since min_value and max_value are used
min_value=0,
max_value=26,
min_max_interval=1,
lock_if_enabled=None,
lock_unless_enabled=None,
),
]
Required_Rules = [
]
Optional_Rulesets = [
Ruleset(
name="All Unique",
description="All enemies give different abilities.",
rules=[
Rule(
description="All Unique",
left_side=[value("Waddle Dee"), value("Droppy"), value("Leap"), value("Big Waddle Dee"), value("Flamer"), value("Sword Knight"), value("Cupie")],
rule_type="!=",
right_side=None,
),
],
must_be_enabled=None,
must_be_disabled=["All Master", "Smashing!"],
),
Ruleset(
name="All Master",
description="All enemies give the Master ability (ability #26).",
rules=[
Rule(
description="Waddle Dee gives Master",
left_side=value("Waddle Dee"),
rule_type="==",
right_side=26,
),
Rule(
description="All enemies give the same ability (by extension, they all give Master)",
left_side=[value("Waddle Dee"), value("Droppy"), value("Leap"), value("Big Waddle Dee"), value("Flamer"), value("Sword Knight"), value("Cupie")],
rule_type="==",
right_side=None,
),
],
must_be_enabled=None,
must_be_disabled=["All Unique", "At Least 1 UFO", "Smashing!"],
),
Ruleset(
name="All Enemies Give An Ability",
description="All enemies are guaranteed to give an ability.",
rules=[
Rule(
description="All Enemies Give An Ability",
left_side=[value("Waddle Dee"), value("Droppy"), value("Leap"), value("Big Waddle Dee"), value("Flamer"), value("Sword Knight"), value("Cupie")],
rule_type="count",
right_side=("==", 0, "==", 0),
),
],
must_be_enabled=None,
must_be_disabled=None,
),
Ruleset(
name="At Least 1 UFO",
description="At least one enemy gives the UFO ability (ability #14).",
rules=[
Rule(
description="At Least 1 UFO",
left_side=[value("Waddle Dee"), value("Droppy"), value("Leap"), value("Big Waddle Dee"), value("Flamer"), value("Sword Knight"), value("Cupie")],
rule_type="count",
right_side=("==", 0x0E, ">=", 1),
),
],
must_be_enabled=None,
must_be_disabled=["All Master", "Smashing!"],
),
Ruleset(
name="All Different From Original",
description="All enemies are guaranteed to give different abilities from what they usually give.",
rules=[
Rule(
description="Waddle Dee is different",
left_side=value("Waddle Dee"),
rule_type="!=",
right_side=0,
),
Rule(
description="Droppy is different",
left_side=value("Droppy"),
rule_type="!=",
right_side=0,
),
Rule(
description="Leap is different",
left_side=value("Leap"),
rule_type="!=",
right_side=0,
),
Rule(
description="Big Waddle Dee is different",
left_side=value("Big Waddle Dee"),
rule_type="!=",
right_side=0,
),
Rule(
description="Flamer is different",
left_side=value("Flamer"),
rule_type="!=",
right_side=3,
),
Rule(
description="Sword Knight is different",
left_side=value("Sword Knight"),
rule_type="!=",
right_side=0x12,
),
Rule(
description="Cupie is different",
left_side=value("Cupie"),
rule_type="!=",
right_side=0x13,
),
],
must_be_enabled=None,
must_be_disabled=None,
),
Ruleset(
name="Smashing!",
description="All enemies give either Smash, Fighting, Stone, Cutter, or Hammer.",
rules=[
Rule(
description="Waddle Dee is smashing",
left_side=value("Waddle Dee"),
rule_type="==",
right_side=[0x16, 0x14, 0x8, 0x6, 0x11],
),
Rule(
description="Droppy is smashing",
left_side=value("Droppy"),
rule_type="==",
right_side=[0x16, 0x14, 0x8, 0x6, 0x11],
),
Rule(
description="Leap is smashing",
left_side=value("Leap"),
rule_type="==",
right_side=[0x16, 0x14, 0x8, 0x6, 0x11],
),
Rule(
description="Big Waddle Dee is smashing",
left_side=value("Big Waddle Dee"),
rule_type="==",
right_side=[0x16, 0x14, 0x8, 0x6, 0x11],
),
Rule(
description="Flamer is smashing",
left_side=value("Flamer"),
rule_type="==",
right_side=[0x16, 0x14, 0x8, 0x6, 0x11],
),
Rule(
description="Sword Knight is smashing",
left_side=value("Sword Knight"),
rule_type="==",
right_side=[0x16, 0x14, 0x8, 0x6, 0x11],
),
Rule(
description="Cupie is smashing",
left_side=value("Cupie"),
rule_type="==",
right_side=[0x16, 0x14, 0x8, 0x6, 0x11],
),
],
must_be_enabled=None,
must_be_disabled=["All Master", "At Least 1 UFO", "All Unique"],
),
Ruleset(
name="XOR Statement (move mouse over this)",
description="Either Waddle Dee gives Cutter (ability #6), or Droppy gives Throw (ability #10), but not both/neither.",
rules=[
Rule(
description="XOR Statement",
left_side=[(value("Waddle Dee"), "==", 6), (value("Droppy"), "==", 10)],
rule_type="count",
right_side=("==", True, "==", 1),
),
],
must_be_enabled=None,
must_be_disabled=["All Master"]
),
]