Make RustRaptor the repository root and track its playable bundle
This commit is contained in:
1 parent
4b1edefeec
commit
8f459796b1
9860 files changed
+21084
-61019
No files matched your search
@@ -0,0 +1,73 @@
|
||||
// Mission state resets on every sortie, including replaying a failed attempt.
|
||||
fn on_mission_start(event, state, random) {
|
||||
let commands = [
|
||||
#{op:"objective", key:"iron_coast_mission_6:phase", value:1},
|
||||
#{op:"objective", key:"iron_coast_mission_6:batteries_required", value:6},
|
||||
#{op:"objective", key:"iron_coast_mission_6:cruisers_required", value:2},
|
||||
#{op:"objective", key:"iron_coast_mission_6:complete", value:0},
|
||||
#{op:"objective", key:"iron_coast_turret:defeated", value:0},
|
||||
#{op:"objective", key:"iron_coast_boss_6:defeated", value:0},
|
||||
#{op:"play_sound", sound:"iron_coast_mission_6:approach"},
|
||||
#{op:"shield", amount:25}
|
||||
];
|
||||
let loaned = false;
|
||||
let slots = event.player.inventory.len() + event.player.super_shield_reserves.len();
|
||||
// Loan a column weapon only when it fits. An owned copy is never removed.
|
||||
if !event.player.inventory.contains("ion_lance:equipment") && slots < 20 {
|
||||
commands.push(#{op:"give_item", item:"ion_lance:equipment", count:1});
|
||||
loaned = true;
|
||||
}
|
||||
#{commands:commands, state:#{fleet:false, crown:false, complete:false, loaned:loaned}}
|
||||
}
|
||||
|
||||
fn on_tick(event, state, random) {
|
||||
let commands = [];
|
||||
// These are mandatory fixed citadel batteries. Keep surviving emplacements
|
||||
// in firing range even when the terrain scrolls beyond the headquarters.
|
||||
for unit in event.entities {
|
||||
if unit.definition == "iron_coast_turret:unit" && unit.health > 0 {
|
||||
let anchor = if unit.x == 32 || unit.x == 112 || unit.x == 192 {48} else {80};
|
||||
if unit.y > anchor {
|
||||
commands.push(#{op:"move", entity:unit.entity, x:unit.x, y:anchor});
|
||||
}
|
||||
}
|
||||
}
|
||||
if event.tick >= 1450 && !state.fleet {
|
||||
state.fleet = true;
|
||||
commands.push(#{op:"objective", key:"iron_coast_mission_6:phase", value:2});
|
||||
commands.push(#{op:"play_sound", sound:"iron_coast_mission_6:fleet_alarm"});
|
||||
commands.push(#{op:"shield", amount:20});
|
||||
}
|
||||
if event.tick >= 2350 && !state.crown {
|
||||
state.crown = true;
|
||||
commands.push(#{op:"objective", key:"iron_coast_mission_6:phase", value:3});
|
||||
commands.push(#{op:"play_sound", sound:"iron_coast_mission_6:crown_alarm"});
|
||||
commands.push(#{op:"shield", amount:20});
|
||||
}
|
||||
let batteries = if event.objectives.contains("iron_coast_turret:defeated") {
|
||||
event.objectives["iron_coast_turret:defeated"]
|
||||
} else {0};
|
||||
let cruisers = if event.objectives.contains("iron_coast_boss_6:defeated") {
|
||||
event.objectives["iron_coast_boss_6:defeated"]
|
||||
} else {0};
|
||||
if state.crown && batteries >= 6 && cruisers >= 2 && !state.complete {
|
||||
state.complete = true;
|
||||
commands.push(#{op:"objective", key:"iron_coast_mission_6:phase", value:4});
|
||||
commands.push(#{op:"objective", key:"iron_coast_mission_6:complete", value:1});
|
||||
commands.push(#{op:"credits", amount:30000});
|
||||
commands.push(#{op:"play_sound", sound:"iron_coast_mission_6:victory"});
|
||||
commands.push(#{op:"complete"});
|
||||
}
|
||||
#{commands:commands, state:state}
|
||||
}
|
||||
|
||||
fn on_mission_end(event, state, random) {
|
||||
let commands = [#{op:"objective", key:"iron_coast_mission_6:debrief", value:if event.success {1} else {0}}];
|
||||
if state.contains("loaned") && state.loaned
|
||||
&& event.player.inventory.contains("ion_lance:equipment")
|
||||
&& event.player.inventory["ion_lance:equipment"] > 0 {
|
||||
commands.push(#{op:"consume_item", item:"ion_lance:equipment", count:1});
|
||||
}
|
||||
state.loaned = false;
|
||||
#{commands:commands, state:state}
|
||||
}
|
||||
Reference in new issue
Block a user