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
|
[functions]
[function]
args="level,n"
name="score"
formula="set(level.player.vars.score, level.player.vars.score + n)"
[/function]
[function]
args="level"
name="kc"
formula="[set(level.player.driver.max_hitpoints, 7), set(level.player.driver.hitpoints, 7)]"
[/function]
[function]
args="parent*"
name="spawn_item"
formula="if(level.player.vars.next_unlocked_item, [spawn(level.player.vars.next_unlocked_item, parent.midpoint_x, parent.y, parent.facing), set(level.player.vars.next_unlocked_item, null())],
if(unlocked_items, spawn( choose(unlocked_items, 1d1000) , parent.midpoint_x, parent.y, parent.facing, [set(velocity_x, velocity_x/6 +1d600-300), set(velocity_y, velocity_y/6)])))
where unlocked_items = filter(if(level.player.vehicle, level.player.vehicle.vars.unlocked_items, level.player.vars.unlocked_items), 'item', if(level.player.hitpoints = level.player.max_hitpoints and item = 'heart_object' or level.player.vars.powerup_time > 0 and strstr(item, 'powerup'), 0, 1))"
# if we want vehicle items AND player items when you're in a vehicle, then do the following:
#where unlocked_items = if(level.player.vehicle, level.player.vehicle.vars.unlocked_items + level.player.driver.vars.unlocked_items, level.player.vars.unlocked_items) "
[/function]
[function]
name="elastic_collision"
args="a,b"
#takes two objects as parameters, changes their velocities according to an elastic collision
# note deep magic on if(a < b) - this compares the memory addresses, and is done to ensure collisions aren't calculated twice (once on each end of the collision).
#formula=" [set(a, 'velocity_x', -1200 ), set(b, 'velocity_x', 1200) ] "
# formula=" [set(a, 'velocity_x', (a.velocity_x*1000 * (a.mass - b.mass)/(a.mass + b.mass) + (b.velocity_x*1000 * b.mass)/ (a.mass + b.mass))/1000 ), set(b, 'velocity_x', ((a.mass * a.velocity_x*1000)/(a.mass + b.mass) + b.velocity_x*1000 * (b.mass - a.mass )/(a.mass + b.mass))/10 ) ]"
formula="if(a.mass and b.mass, [set(a.velocity_x, (momentum_x/2)/a.mass),
set(b.velocity_x, (momentum_x/2)/b.mass),
debug('collide ', momentum_x)]
where momentum_x = a.velocity_x*a.mass + b.velocity_x*b.mass)"
[/function]
[/functions]
|