-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
178 lines (171 loc) · 10.7 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
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<meta http-equiv="Cache-control" content="no-cache">
<script src="data.js?r=6"></script>
<script src="functions.js?r=6"></script>
<script src="settings.js?r=6"></script>
<script src="index.js?r=6" defer></script>
<link rel="stylesheet" href="style.css?r=6" />
<title>Halo: The Master Mission Rando</title>
</head>
<body>
<h1>Halo: The Master Mission Rando</h1>
<button onclick="reset()">
Reset settings
</button>
<main>
<fieldset>
<legend><label for="playlistTitle">Playlist name</label></legend>
<label for="playlistTitle">Title for this playlist set</label>
<input id="playlistTitle" type="text" value="Randomized Playlist"/>
</fieldset>
<fieldset>
<legend>
General rando settings
</legend>
<label for="missionCount">How many missions do you want</label>
<input id="missionCount" type="number" min="1"/>
<label for="playlistCount">How many playlists do you want</label>
<input id="playlistCount" type="number" min="1"/>
<label for="includeCutscenes" title="Include The Heretic, The Armory, Arrival, Prepare to Drop, Noble Actual, the Reach credits, Lone Wolf, Prologue and the three Epilogues">Include cutscenes/missions without combat?</label>
<input id="includeCutscenes" type="checkbox"/>
<label for="allowDupes" title="There's a chance this results in a playlist that exclusively contains runs of The Library; you've been warned">Allow the same mission to appear more than once</label>
<input id="allowDupes" type="checkbox" false/>
</fieldset>
<fieldset>
<legend>Difficulty settings</legend>
<div class="column">
<label for="easy">Easy</label>
<input name="difficulty" id="easy" value="_campaign_difficulty_level_easy" type="radio"/>
<label for="normal">Normal</label>
<input name="difficulty" id="normal" value="_campaign_difficulty_level_normal" type="radio"/>
<label for="heroic">Heroic</label>
<input name="difficulty" id="heroic" value="_campaign_difficulty_level_hard" type="radio"/>
<label for="legendary">Legendary</label>
<input name="difficulty" id="legendary" value="_campaign_difficulty_level_impossible" type="radio"/>
<hr/>
<legend>Skull mode</legend>
<label for="noSkulls">No skulls</label>
<input name="skullMode" id="noSkulls" value="noSkulls" type="radio"/>
<label for="randomSkulls">Random each mission</label>
<input name="skullMode" id="randomSkulls" value="randomSkulls" type="radio"/>
<label for="incrementalSkulls">Random, each mission adds more</label>
<input name="skullMode" id="incrementalSkulls" value="incrementalSkulls" type="radio"/>
<label for="fixedSkulls">Enforce selected skulls</label>
<input name="skullMode" id="fixedSkulls" value="fixedSkulls" type="radio"/>
</div>
<div class="column">
<div class="column skullContainer" id="OP_SKULLS">
<label for="OP_SKULLS">OP Skulls</label>
</div>
<div class="column skullContainer" id="FRUSTRATING_SKULLS">
<label for="FRUSTRATING_SKULLS">Frustrating skulls</label>
</div>
<div class="column skullContainer" id="DANGEROUS_SKULLS">
<label for="DANGEROUS_SKULLS">Frustrating³/Dangerous skulls</label>
</div>
<div class="column skullContainer" id="FUN_SKULLS">
<label for="FUN_SKULLS">Fun skulls</label>
</div>
<div class="column skullContainer" id="MISC_SKULLS">
<label for="MISC_SKULLS">Miscellaneous skulls</label>
</div>
</div>
</fieldset>
<fieldset class="games-grid">
<legend>Games to include</legend>
<div class="column">
<label for="halo1">Halo CE</label>
<input id="halo1" type="checkbox"/>
<label for="halo2">Halo 2</label>
<input id="halo2" type="checkbox"/>
</div>
<div class="column">
<label for="halo3">Halo 3</label>
<input id="halo3" type="checkbox"/>
<label for="halo3odst">Halo 3: ODST</label>
<input id="halo3odst" type="checkbox"/>
</div>
<div class="column">
<label for="haloreach">Halo Reach</label>
<input id="haloreach" type="checkbox"/>
<label for="halo4">Halo 4</label>
<input id="halo4" type="checkbox"/>
</div>
</fieldset>
<button onclick="generatePlaylists()">
Generate
</button>
<button onclick="generatePlaylists('rogue')">
Special Mode: Like a Rogue in Mombasa
</button>
<a id="download" hidden download="missionplaylistdb.xml">
Download missionplaylistdb.xml (or right click → save as)
</a>
</main>
<section>
<h2>What is this?</h2>
<p>Halo: MCC has Campaign Playlists where you can play predefined missions from the six games in orders different to the actual campaigns, sometimes switching from one game to another.</p>
<p>This website hijacks this feature to let you play randomly selected missions.</p>
<p>This is at least the second randomizer written; <a href="https://randomizer.scal.es/">randomizer.scal.es</a> also exists, with a slightly different feature set, but more polish. Check that one out too.</a>
<h2>How does this work?</h2>
<p>In a normal MCC install, you can find <code>/Data/careerdb/missionplaylistdb.xml</code>. This file contains the default playlists and is surprisingly readable. This rando will generate a replacement file with the randomized playlists.</p>
<p>For now, this completely removes every single playlist (you will get an error if you try to look at single-game playlists), and puts every random playlist in the Cross-game section of the menu. While this can be improved, it's very low priority.</p>
<h2>How do I use it?</h2>
<p>Tweak settings, press [Generate]<!-- TODO: there's markup for this isn't it-->, and download the file. You'll need to replace the default file, so be sure to either make a backup or remember to use the "Verify integrity of game files" function in Steam.<!-- TODO: double check how to do this with xbox launcher--></p>
<p>You can generate multiple sets of playlists with different settings and names; until you refresh the page, it all gets added to the same <code>missionplaylistdb.xml</code>.</p>
<p>Additionally, although I've not yet tested this, you should be able to play these in co-op without anti-cheat as long as all participants are using the exact same file.</p>
<p>A couple of warnings: It seems like stuff gets a bit weird if the same mission appears multiple times in a row. If it happens, for now, save and quit, then reload. Additionally, you should always choose at least two games if you want skulls or Like a Rogue In Mombasa, otherwise the playlist will be slightly hecked.</p>
<h2>What do the settings mean?</h2>
<p><ul>
<li>You can set the playlist name; this will be displayed in the menu.</li>
<li>You can generate multiple playlists with the selected settings, each with the given mission count per playlist.</li>
<li>By default, this excludes missions that don't include combat. The full list of excluded missions is as follows:
<ul>
<li>Halo 2: The Heretic (initial cutscene) and The Armory (tutorial and exposition).</li>
<li>Halo 3: Arrival (initial cutscene) and Epilogue (ending cutscene).</li>
<li>ODST: Prepare to Drop (initial cutscene) and Epilogue (ending cutscene).</li>
<li>Reach: Noble Actual (initial cutscene), the credits cutscene, and Lone Wolf (final mission which ends on death).</li>
<li>Halo 4: Prologue (initial cutscene) and Epilogue (ending cutscene).</li>
</ul>
</li>
<li>By default the rando cannot use the same mission twice in the same playlist. You can force allow duplicates, which unlocks silly things like very very long playlists, or <del>Halo Infinite: 2001 Edition</del> five consecutive runs of CE's Halo.</li>
<li>You can select a difficulty for all missions of a given set. For example, you can generate 3 five-mission playlists in legendary, then 1 fifteen-mission playlist in normal.</li>
<li>There's several skull modes.:
<ul>
<li>No skulls.</li>
<li>Random each mission: each mission will have its own, randomized, set of skulls.</li>
<li>Random, each mission adds more: each mission will have <em>at least</em> the skulls of the previous mission, plus a random chance at more.</li>
<li>Enforce selected skulls: every mission will have the enabled skulls applied.</li>
</ul>
Any skull may be chosen for any mission. This includes skulls that aren't available for a given game. They will show up in the pause menu as enabled, but don't do anything.</li>
<li>Each skull can be individually added or removed.</li>
<li>You can choose to include only specific games in the pool.</li>
</ul>
<p>All settings are saved in the URL, so you can save the permalink to your settings.</p>
<h2>The heck is "Like a Rogue in Mombasa"</h2>
<p>Halo, but it's as close to a roguelike as I can make it!</p>
<p>You start in Mombasa streets. Every clue you find drops you into a random mission. Every mission you complete adds a skull and drops you back into mombasa streets. Every once in a while there's a "Boss mission", in the next hardest difficulty. After completing a Boss Mission skulls get removed from the list depending on difficulty.</p>
<p>It's a bit of a hack: if you click this, "how many missions" will mean "how many missions before a boss mission" (not counting mombasa streets); and "How many playlists" will mean "how many boss missions do you want"</p>
<p>Skull mode won't change anything, and even if you disable Halo 3: ODST you'll still get mombasa streets.</p>
<p>My recommendation: set Missions to between 3 and 5, (higher for harder difficulties); set playlists high as fuck, and enable all skulls.</p>
<h2>Is this done?</h2>
<p>Hell no! This is what I currently plan on adding, in rough order of priority:</p>
<ul>
<li>Randomizing difficulty (so a single playlist can include multiple difficulties).</li>
<li>Filtering specific missions instead of just games plus the cutscenes preset (expect "vehicular mayhem" presets, or "flood rando", or "floodless", like the default playlists).</li>
<li>The Classic Rando Feature™: daily/weekly seeds!</li>
<li>Rally points, maybe?</li>
<li>Generate a missionplaylistdb that doesn't clobber the default playlists. Not really hard, just want to keep the xml files clean and readable until everything works 100%.</li>
</ul>
<p>Additionally, there's a couple of longshot features that I'd like to add but aren't necessarily possible:</p>
<ul>
<li>Spartan Ops. These should behave exactly like a campaign mission.</li>
<li>Firefight. Limited in length, optionally with infinite lives (so you can't just skip it by dying five times as soon as it boots).</li>
<li>Custom/modded campaign maps.</li>
</ul>
</section>
</body>
</html>