spwn 0.0.6

A language for Geometry Dash triggers
Documentation
#[no_std, cache_output]
events = import "events.spwn"

on = (
     event: @event,
     function: @trigger_function
){
    event.on_triggered(function)
}
extract import "util.spwn"
impl @block {

    _range_: create_range_macro(@block),
    create_tracker_item: #[desc("Returns an item ID that is 1 when the blocks are colliding and 0 when they are not") example("
// in some minigame
player = @player::{ block: 1b, group: 1g}
ground = 2b
on_ground = counter(player.block.create_tracker_item(ground))
on(touch(), !{
    //jump
    if on_ground == 1 { // player can only jump while touching the ground
        player.jump()
    }
})
    ")]
    (
        self,
        #[desc("Block ID to check against")] other: @block
    ) {
        item = ?i
        on(events.collision(self, other), !{
            item.add(1)
        })

        on(events.collision_exit(self, other), !{
            item.add(-1)
        })

        return item
    }
}