;; lobo: Logo Bolo ;; (c) Ben Kurtovic, 2011-2012 globals [ explosions-table ] breed [explosions explosion] explosions-own [ midlife size-increment time-to-live ] ;; ========== ;; Procedures ;; ========== to make-explosions-table ; Fun with particle effects! set explosions-table table:make table:put explosions-table "small" [["explosion-small" 0.65 10 0.5]] table:put explosions-table "medium" [["explosion-med" 1.25 10 0.5]] table:put explosions-table "large" [["explosion-large" 2.5 15 0.5] ["explosion-med" 1.25 10 1] ["explosion-med" 1.1 8 1 ] ["explosion-small" 0.65 7 2] ["explosion-small" 0.65 5 3 ]] table:put explosions-table "huge" [["explosion-large" 3 20 0.5] ["explosion-med" 1.25 15 1] ["explosion-med" 1.25 15 1 ] ["explosion-med" 1.25 10 1] ["explosion-med" 1.25 10 1 ] ["explosion-small" 0.65 10 2] ["explosion-small" 0.65 10 2 ] ["explosion-small" 0.65 8 2] ["explosion-small" 0.65 7 2 ] ["explosion-small" 0.65 5 3] ["explosion-small" 0.65 5 3 ]] end to explode [name] let data table:get explosions-table name foreach data [ create-explosion ? ] end to create-explosion [info] let sprite (item 0 info) let maxsize (item 1 info) let lifespan (item 2 info) let deviation (item 3 info) hatch-explosions 1 [ set label "" set shape sprite set size maxsize / 2 set midlife lifespan / 2 set size-increment (maxsize / lifespan) * 2 set time-to-live lifespan set heading random 360 fd (random 100) / (100 / deviation) ] end to keep-exploding if time-to-live = 0 [ die ] set time-to-live time-to-live - 1 set midlife midlife - 1 ifelse midlife > 0 [ set size size + size-increment ] [ set size size - size-increment ] end