script, ui animate, begin if(not(pie)) then( pie := load border sprite(1) set slice lookup(pie, sli:pie) realign slice(pie, edge:right, edge:top, edge:right, edge:top) ) if(long click > 0) then( set slice visible(pie, true) set sprite frame(pie, long click) )else( set slice visible(pie, false) ) end #----------------------------------------------------------------------- script, update effects, begin for each in array remove if true(effects, @do animate) end script, do animate, effect, begin variable(callback) callback := get slice extra(effect, 2) if(callback) then( if(run script by id(callback, effect)) then( free slice(effect) exit returning(true) ) ) end script, set animate callback, effect, callback, begin set slice extra(effect, 2, callback) end script, clear effects of animation type, anim callback, begin for each in array remove if true(effects, @anim callback equals, anim callback) end script, anim callback equals, effect, anim callback, begin if(anim callback == get slice extra(effect, 2)) then( free slice(effect) exit returning(true) ) exit returning(false) end #----------------------------------------------------------------------- script, animate kill, unit, attacker, sprite=1, begin create dice apart(unit) create attack animation(sprite, unit, attacker) end script, create attack animation, sprite id, over slice, attacker, begin variable(e) e := load attack sprite(sprite id) set horiz anchor(e, edge:center) set vert anchor(e, edge:center) set slice screen x(e, slice screen x(over slice)) set slice screen y(e, slice screen y(over slice) -- slice height(over slice) / 2) horiz flip sprite(e, sprite is horiz flipped(attacker)) set animate callback(e, @simple attack animate) append(effects, e) end script, simple attack animate, e, begin variable(fr) fr := get sprite frame(e) fr += 1 if(fr > 2) then(exit returning(true)) set sprite frame(e, fr) end script, create dice apart, unit, begin variable(e, clip, img, dx, dy, w, h, gox, goy) w := slice width(unit) / 4 h := slice height(unit) / 4 for(dy, 0, 3) do( for(dx, 0, 3) do( e := create container(0, 0) clip := create container(w, h) set parent(clip, e) set slice clipping(clip, true) img := clone sprite(unit) realign slice(img, edge:left, edge:top, edge:left, edge:top) set parent(img, clip) set slice x(img, dx * w * -1) set slice y(img, dy * h * -1) set slice screen x(e, slice screen x(unit) + dx * w -- slice width(unit) / 2) set slice screen y(e, slice screen y(unit) + dy * h -- slice height(unit)) gox := (dx * 2 -- 3) * (slice width(unit) / 2) + random(-20, 20) goy := (dy * 2 -- 3) * (slice width(unit) / 2) + random(-10, 10) move slice to(e, slice x(e) + gox, slice y(e) + goy, second) set slice extra(e, 1, random(9, 12)) set animate callback(e, @gravity particle animate) append(effects, e) ) ) end script, gravity particle animate, e, begin variable(p, y, force) p := first child(e) y := slice y(p) force := get slice extra(e, 1) y -= force y += 4 y := small(y, 0) force := large(0, force -- 1) set slice y(p, y) set slice extra(e, 1, force) if(y >= 0) then(exit returning(true)) end script, wait for movement animate, e, begin exit returning(not(slice is moving(e))) end script, create danger shimmer, tile, begin variable(e) e := load hero sprite(31) set parent(e, tile) center slice(e) set animate callback(e, @danger shimmer animate) append(effects, e) end script, danger shimmer animate, e, begin variable(fr) fr := get sprite frame(e) fr := loopvar(fr, 0, 7) set sprite frame(e, fr) end