Add independent Rust engine, deterministic mod API and asset pipeline
This commit is contained in:
1 parent
f2cce6f51b
commit
dbb1d4596b
53 files changed
+18314
-56
No files matched your search
@@ -0,0 +1,11 @@
|
||||
fn on_pickup(event, state, random) {
|
||||
let recovered = if state.contains("recovered") { state.recovered + 1 } else { 1 };
|
||||
#{ commands: [#{ op: "credits", amount: 25 }], state: #{ recovered: recovered } }
|
||||
}
|
||||
|
||||
// A selected repair cell can also be consumed with the special-action button.
|
||||
fn on_use(event, state, random) {
|
||||
let used = if state.contains("used") { state.used + 1 } else { 1 };
|
||||
state.used = used;
|
||||
#{ commands: [#{ op: "objective", key: "aurora:repairs_used", value: used }], state: state }
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
fn on_spawn(event, state, random) {
|
||||
#{ commands: [], state: state }
|
||||
}
|
||||
|
||||
fn on_tick(event, state, random) {
|
||||
// on_tick may be queued on the same step as on_death; do not command a retired entity.
|
||||
if event.health <= 0 { return #{ commands: [], state: state }; }
|
||||
let sideways = if (event.tick / 24) % 2 == 0 { 1 } else { -1 };
|
||||
#{ commands: [#{ op: "velocity", entity: event.entity, vx: sideways, vy: 1 }], state: state }
|
||||
}
|
||||
|
||||
fn on_death(event, state, random) {
|
||||
let destroyed = if state.contains("destroyed") { state.destroyed + 1 } else { 1 };
|
||||
#{ commands: [#{ op: "objective", key: "aurora:destroyed", value: destroyed }],
|
||||
state: #{ destroyed: destroyed } }
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
fn on_mission_start(event, state, random) {
|
||||
#{ commands: [
|
||||
#{ op: "give_item", item: "aurora:pulse_cannon", count: 1 },
|
||||
#{ op: "objective", key: "aurora:destroyed", value: 0 }
|
||||
], state: state }
|
||||
}
|
||||
|
||||
fn on_mission_end(event, state, random) {
|
||||
#{ commands: [#{ op: "objective", key: "aurora:trial_finished", value: 1 }], state: state }
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
// The normal centre projectile is emitted by the engine. Add two angled pulses.
|
||||
fn on_fire(event, state, random) {
|
||||
let shots = if state.contains("shots") { state.shots + 1 } else { 1 };
|
||||
let spread = 1 + random[0] % 2;
|
||||
#{ commands: [
|
||||
#{ op: "projectile", weapon: "aurora:pulse_projectile", x: event.x - 6, y: event.y, vx: -spread, vy: -8 },
|
||||
#{ op: "projectile", weapon: "aurora:pulse_projectile", x: event.x + 6, y: event.y, vx: spread, vy: -8 }
|
||||
], state: #{ shots: shots } }
|
||||
}
|
||||
|
||||
fn on_hit(event, state, random) {
|
||||
#{ commands: [#{ op: "effect", x: event.x, y: event.y }], state: state }
|
||||
}
|
||||
Reference in new issue
Block a user