Dragon Blade
This library lets you write code for the Overwatch Workshop in rust.
Example Usage:
use dragon_blade::*;
bind_subroutine!(convert_to_healing);
bind_player_variable!(converted_damage: Number);
fn main() {
let script = Script::new();
script.add(Rule {
name: "Heal for adaptive amoumt",
event: SubroutineBody(Subroutine::convert_to_healing()),
condition: vec![],
actions: || {
let amount = (number(1.15) - EventPlayer.normalized_health())
* EventPlayer.converted_damage().get()
* number(4);
heal(EventPlayer, Null, amount);
},
});
script.add(Rule {
name: "heal player when they deal damage",
event: PlayerDealtDamage(Team::Team1, Everyone),
condition: vec![EventPlayer.is_alive()],
actions: || {
EventPlayer.converted_damage().set(EventDamage);
call_subroutine(Subroutine::convert_to_healing());
},
});
std::fs::write("script.txt", script.generate()).unwrap();
}