-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
487 lines (366 loc) · 16 KB
/
index.html
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
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
<!DOCTYPE html>
<html>
<body onload="openCity(event, 'General');">
<!-- Bootstrap Code-->
<link rel="stylesheet" type="text/css" href="stylesheet.css">
<script type="application/javascript" src="characters.js"></script>
<script data-main="config-min.js" src="require.js"></script>
<script type="text/javascript" src="config-min.js"> </script>
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script type="text/javascript"></script>
<title>Fire Emblem Echoes Randomizer</title>
<link rel="shortcut icon" href="img/ship.ico" type="image/x-icon">
<div id="clutter">
<h1>Fire Emblem Echoes Randomizer</h1>
<h3>By Evin Jaff</h2>
<div id="link-holder">
<a id="link "target="_blank" href="README/README.html">READ THIS FIRST!</a>
</div>
<div id="link-holder">
<a id="link "target="_blank" href="README/BLOG.html">Blog documenting my randomized adventures</a>
</div>
<br>
<h3 id="warning">⚠️This has been tested to work on North American systems and North American digital and physical game cartridges. This has not been tested on other systems, but theoretically they should work. By using this tool, even on the intended hardware, you assume any and all liability associated with using this software as well as the liability associated with patching a Nintendo game. (This is just for legal reasons there is minimal risk)</h3>
<!--
<h1>Randomize a Character:</h1>
<!--
<link rel="stylesheet" href="print.css" type="text/css" media="print">
</script>
<div style="text-align: center">
<select name="values" id="characters">
<option value="alm">Alm</option>
<option value="celica">Celica</option>
<option value="lukas">Lukas</option>
<option value="celica">Kliff</option>
<option value="celica">Tobin</option>
<option value="celica">Gray</option>
<option value="saber">Faye</option>
<option value="saber">Silque</option>
<option value="saber">Clair</option>
<option value="saber">Clive</option>
<option value="saber">Forsyth</option>
<option value="saber">Python</option>
<option value="saber">Luthier</option>
<option value="saber">Mathilda</option>
<option value="saber">Delthea</option>
<option value="saber">Tatiana</option>
<option value="saber">Zeke</option>
<option value="saber">Mycen</option>
<option value="saber">Mae</option>
<option value="saber">Boey</option>
<option value="saber">Genny</option>
<option value="saber">Saber</option>
<option value="saber">Valbar</option>
<option value="saber">Kamui</option>
<option value="saber">Leon</option>
<option value="saber">Palla</option>
<option value="saber">Catria</option>
<option value="saber">Atlas</option>
<option value="saber">Jesse</option>
<option value="saber">Est</option>
<option value="saber">Nomah</option>
<option value="saber">Conrad</option>
</select>
<select name="values" id="tiers">
<option value="1">Tier 1</option>
<option value="2">Tier 2</option>
<option value="3">Tier 3</option>
<option value="4">Overclass</option>
</select>
<br>
<br>
<h3>Randomize Classes</h3>
<input type="checkbox" checked="checked" id="base"> <div class="tooltip">Standard Classes?<span class="tooltiptext">Includes standard classes such as Archer, Cavalier, Baron</span>
</div> </input>
<br>
<input type="checkbox" id="amiibo"> <div class="tooltip">Amiibo Classes?<span class="tooltiptext">Includes Amiibo classes such as Lords, Robin, Ike</span>
</div> </input>
<br>
<input type="checkbox" id="enemy"> <div class="tooltip">Enemy Classes?<span class="tooltiptext">Includes enemy classes such as Brigands, Cantors, Witches</span>
</div></input>
<br>
<input type="checkbox" id="ugly"> <div class="tooltip">Ugly Classes?<span class="tooltiptext">Includes classes that human's weren't designed to class into and don't look good.</span>
</div> </input>
<br>
<input type="checkbox" id="busted"> <div class="tooltip">Broken Classes?<span class="tooltiptext">Includes broken classes that have crazy stats or partially don't work</span>
</div> </input>
<br>
<input type="checkbox" id="alm"><div class="tooltip">Alm and Celica Classes?<span class="tooltiptext">Includes Alm and Celica classes (Fighter, Princess, etc.)</span>
</div> </input>
<br>
<br>
<button type="button" onclick="randomize()">Randomize Individual Character</button>
<br>
<div id="div1">
<p id="p1"></p>
</div>
<img src="" id="id1"> </img>
</div>
<h2>Randomize a Party:</h2>
-->
<br>
<div style="text-align: center">
</div>
<script>
function openCity(evt, cityName) {
// Declare all variables
var i, tabcontent, tablinks;
// Get all elements with class="tabcontent" and hide them
tabcontent = document.getElementsByClassName("tabcontent");
for (i = 0; i < tabcontent.length; i++) {
tabcontent[i].style.display = "none";
}
// Get all elements with class="tablinks" and remove the class "active"
tablinks = document.getElementsByClassName("tablinks");
for (i = 0; i < tablinks.length; i++) {
tablinks[i].className = tablinks[i].className.replace(" active", "");
}
// Show the current tab, and add an "active" class to the button that opened the tab
document.getElementById(cityName).style.display = "block";
evt.currentTarget.className += " active";
}
</script>
<!-- Tab links -->
<div class="tab">
<button class="tablinks" onclick="openCity(event, 'General')">General</button>
<button class="tablinks" onclick="openCity(event, 'Paris')">Classes</button>
<button class="tablinks" onclick="openCity(event, 'Tokyo')">Player Info</button>
<button class="tablinks" onclick="openCity(event, 'Items')">Items</button>
<button class="tablinks" onclick="openCity(event, 'theEnemy')">Enemies</button>
</div>
<!-- Tab content -->
<div id="General" class="tabcontent">
<br>
<h3>Sonya or Deen? (If Celica's Party or Full Route)</h3>
<div style="text-align: center">
<input type="radio" id="sonya" name="sord" checked="checked">Sonya</input>
<input type="radio" id="deen" name="sord">Deen</input>
<input type="radio" id="both" name="sord">Both</input>
<br><br>
<input type="checkbox" checked="checked" id="routechars"> <div class="tooltip">Random Recruiting (Beta)<span class="tooltiptext">Randomizes recruited character identity (Due to unchanged event pointers, this may cause unexpected outcomes)</span>
</div> </input>
</div>
<br>
</div>
<div id="Paris" class="tabcontent">
<br>
<h3>Randomize Classes</h3>
<div style="text-align: center">
<p>Choose which classes are part of the pool (must pick at least one):</p>
</div>
<br>
<div style="text-align: center">
<input type="checkbox" checked="checked" id="base1"> <div class="tooltip">Standard Classes?<span class="tooltiptext">Includes standard classes such as Archer, Cavalier, Baron</span>
</div> </input>
<br>
<input type="checkbox" id="amiibo1"> <div class="tooltip">Amiibo Classes?<span class="tooltiptext">Includes Amiibo classes such as Lords, Robin, Ike</span>
</div> </input>
<br>
<input type="checkbox" id="enemy1"> <div class="tooltip">Enemy Classes?<span class="tooltiptext">Includes enemy classes such as Brigands, Cantors, Witches</span>
</div></input>
<br>
<input type="checkbox" id="busted1"> <div class="tooltip">Broken Classes?<span class="tooltiptext">Includes broken classes that have crazy stats or partially don't work</span>
</div> </input>
<br>
<input type="checkbox" id="ugly1"> <div class="tooltip">Ugly Classes?<span class="tooltiptext">Includes classes that human's weren't designed to class into and don't look good.</span>
</div> </input>
<br>
<input type="checkbox" id="alm1"><div class="tooltip">Alm and Celica Classes?<span class="tooltiptext">Includes Alm and Celica classes (Fighter, Princess, etc.)</span>
</div> </input>
<br>
<input type="checkbox" id="overclass1"> <div class="tooltip">Generate Overclasses?<span class="tooltiptext">Includes DLC Overclasses</span>
</div> </input>
<br>
<br>
<div class="tooltip">2 Level Class Organization:
<span class="tooltiptext">Determines how to randomize classes that only promote once like Mages and Pegasus Knights</span>
</div>
<br>
<br>
<input type="radio" id="onetwo1" name="onetwo3" checked="checked"><div class="tooltip">Base is 1 and 2<span class="tooltiptext">Mage: Tier 1 and 2 Sage: Tier 3</span>
</div>
<br></input>
<input type="radio" id="one1" name="onetwo3"><div class="tooltip">Base is 1<span class="tooltiptext">Mage: Tier 1 Sage: Tier 2 and 3</span>
</div>
<br></input>
<br>
</div>
<div style="text-align: center">
<input type="checkbox" id="moreweapons"> <div class="tooltip">Give classes more secondary weapons?<span class="tooltiptext">Gives classes more weapons (ex. Ike gets axes, Robin gets Swords, Barons get Axes)</span>
</div> </input>
<br>
<input type="checkbox" id="evolutionbeta"> <div class="tooltip">Randomize Class Tree Evolution (Coming Soon)<span class="tooltiptext">Class Evolution Tree is currently unstable and not working.</span>
</div> </input>
</div>
</div>
<div id="Tokyo" class="tabcontent" style="text-align: center">
<br>
<h3>Spell Lists:</h3>
<input type="checkbox" id="spells"> <div class="tooltip">Randomize Spell Lists? (Beta)<span class="tooltiptext">Randomizes player spell lists</span>
</div> </input>
<br>
<br>
<h3>Randomize Player Growths</h3>
<input id="growths" onclick="document.getElementById('Thracia').hidden = false;document.getElementById('adjust').hidden = false;" type="radio" name="grow"><div class="tooltip">Randomize Growths?<span class="tooltiptext">Generates random growth rates for characters</span>
</div>
<br></input>
<script language="JavaScript">
// this prevents from typing non-number text, including "e".
function isNumber(evt) {
evt = (evt) ? evt : window.event;
let charCode = (evt.which) ? evt.which : evt.keyCode;
if ((charCode > 31 && (charCode < 48 || charCode > 57)) && charCode !== 46) {
evt.preventDefault();
} else {
return true;
}
}
</script>
<div id="adjust" hidden>
<br>
<p>Set minimum growth rate</p>
<input id="ming" type="number" min="0" max="100" value="0" oninput="validity.valid||(value='');" onpress="isNumber(event); ">
<p>Set maximum growth rate</p>
<input id="maxg" type="number" min="0" max="100" value="100" oninput="validity.valid||(value='');" onpress="isNumber(event); ">
<br><br>
</div>
<div id="Thracia" hidden="true">
<input id="move" type="checkbox" name="onetwo" onclick="document.getElementById('ThraciaSlider').hidden = false;"><div class="tooltip">Randomize Movement Growth? (Need to patch code.bin to work)<span class="tooltiptext">THRACIA TIME!</span>
</div></input>
<div id="ThraciaSlider" hidden>
<br>
<p>Set minimum movement growth rate</p>
<input id="mingt" type="number" min="0" max="100" value="0" oninput="validity.valid||(value='');" onpress="isNumber(event); ">
<p>Set maximum movement growth rate</p>
<input id="maxgt" type="number" min="0" max="100" value="100" oninput="validity.valid||(value='');" onpress="isNumber(event); ">
<br><br>
</div>
<br><br>
</div>
<input id="shufgrowths" onclick="document.getElementById('growthoptions').hidden = false;" type="radio" name="grow"><div class="tooltip">Shuffle Growths?<span class="tooltiptext">Shuffles around player growths instead of generating random values</span>
</div>
<div id="growthoptions" hidden>
<input id="res" type="checkbox">Include resistance growth?</input>
<br>
</div>
<br>
<input id="log" type="checkbox">Log growths in description?</input>
<br>
<br>
<!--
<div class="slidecontainer">
<input type="range" min="1" max="100" value="50" class="slider" id="myRange">
<p>Value: <span id="demo"></span></p>
</div>
<br>
<div class="slidecontainer">
<input type="range" min="1" max="100" value="50" class="slider" id="maxRange">
<p>Value: <span id="maxg"></span></p>
</div>
-->
<!--
<script>
var mslider = document.getElementById("maxRange");
console.log(mslider.value);
var moutput = document.getElementById("maxg");
console.log(moutput);
moutput.innerHTML = mslider.value;
mslider.oninput = function() {
moutput.innerHTML = this.value;
}
</script>
<script>
var slider = document.getElementById("myRange");
var output = document.getElementById("demo");
output.innerHTML = slider.value;
slider.oninput = function() {
output.innerHTML = this.value;
}
</script>
-->
</div>
<div id="Items" class="tabcontent" style="text-align: center">
<br>
<h3>Starting Items:</h3>
<input type="checkbox" id="item" checked="checked"> <div class="tooltip">Randomize Starting Items?<span class="tooltiptext">Randomizes starting items</span>
</div> </input>
<br>
<br>
<input type="checkbox" id="weapons" checked="checked"> <div class="tooltip">Include normal weapons/shields/rings?<span class="tooltiptext">Inclues all standard weapons, rings, and shields</span>
</div> </input>
<br>
<input type="checkbox" id="provisions"> <div class="tooltip">Include provisions?<span class="tooltiptext">Includes provivions when choosing items</span>
</div> </input>
<br>
<input type="checkbox" id="quest"> <div class="tooltip">Include quest items and hats?<span class="tooltiptext">Includes quest items when choosing items</span>
</div> </input>
<br>
<input type="checkbox" id="statboosters"> <div class="tooltip">Include statboosters?<span class="tooltiptext">Inclues all statboosters, except for tailisman</span>
</div> </input>
<br>
<input type="checkbox" id="rusted"> <div class="tooltip">Include rusted weapons?<span class="tooltiptext">Inclues all weapons</span>
</div> </input>
<br>
<input type="checkbox" id="dlc"> <div class="tooltip">Include DLC & 7/11 items?<span class="tooltiptext">Inclues all DLC items from Mila's bounty</span>
</div> </input>
<br>
<input type="checkbox" id="enitem"> <div class="tooltip">Include Amiibo and Enemy-exclusive items?<span class="tooltiptext">Inclues all items exclusive to Amiibo and Enemies</span>
</div> </input>
<br>
<br>
<h3>Buffs:</h3>
<input type="checkbox" id="amiiboweaponbuff"> <div class="tooltip">Fix Amiibo Weapons?<span class="tooltiptext">Buffs Amiibo weapons so that they aren't just cosmetic</span>
</div> </input>
<br><br>
<h3>Forges:</h3>
<input type="checkbox" id="evo"> <div class="tooltip">Randomize item evolution?<span class="tooltiptext">Randomizes forge item evolutions. (ex. Forging Steel Sword -> Gradivus)</span>
</div> </input>
<br>
<br>
</div>
<div id="theEnemy" class="tabcontent">
<h3>Full Enemy Randomization Coming Soon!<h3>
<input type="radio" name="npc" id="NPC"> <div class="tooltip">Randomize NPCs/Major Enemies? (Balanced)<span class="tooltiptext">Classes are randomized by same class strength. Click on <a href="https://fireemblemwiki.org/wiki/Class_strength">this link</a> for more info.</span>
</div> </input>
<br>
<input type="radio" name="npc" id="chaos"> <div class="tooltip">Randomize NPCs/Major Enemies? (Unbalanced)<span class="tooltiptext">Classes are completely randomized. WARNING: May make game EXTREMELY difficult</span>
</div> </input>
</div>
<div style="text-align: center">
<br>
<button type="button" hidden id="AlmButton" onclick="Route('Alm')">Randomize Alm's Route</button>
<button type="button" hidden id="CelicaButton" onclick="Route('Celica')">Randomize Celica's Route</button>
<button type="button" id="Both" onclick="Route('Both');">Randomize Both Routes</button>
</div>
<div id="export" hidden style="text-align: center">
<br>
<button id="print-button" onclick="printPage()" style="hidden text-align: center">Export Class List (via CSV)</a>
<button id="print-button" onclick="JSONgenerate()" style="text-align: center">Export Class List (via JSON for Paragon)</a>
</div>
</div>
</div>
<!-- style="hidden" -->
<br>
<div id="reroll" hidden style="text-align: center">
<a href="index.html"> Retry?</a>
</div>
<!-- Block 1
<div id="char1">
<p id="p2"></p>
</div>
<p id="h2test"></p>
<!-- Test Set
<style>body {
background-color: #1d3557;
}</style>
-->
</div>
<div id="testpull">
<img src="" id="pic1"> </img>
<div id="div2">
</div>
<div style="text-align: center">
Fire Emblem is © Nintendo/Intelligent Systems.
</div>
</body>
</html>