--- /dev/null
+(supertux-level
+ (version 2)
+ (name (_ "Unnamed"))
+ (author "wolfgang")
+ (sector
+ (name "main")
+ (background
+ (speed 0.5)
+ (image-top "images/background/arctis_top.jpg")
+ (image "images/background/arctis.jpg")
+ (image-bottom "images/background/arctis_bottom.jpg")
+ )
+ (tilemap
+ (z-pos -100)
+ (solid #f)
+ (speed 1)
+ (width 50)
+ (height 35)
+ (tiles 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
+ )
+ (tilemap
+ (z-pos 0)
+ (solid #t)
+ (speed 1)
+ (width 50)
+ (height 35)
+ (tiles 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1756 1757 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1756 1757 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1756 1757 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1756 1757 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1756 1757 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1756 1757 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1756 1757 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1756 1757 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1756 1757 0 1756 1757 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1756 1757 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
+ )
+ (tilemap
+ (z-pos 100)
+ (solid #f)
+ (speed 1)
+ (width 50)
+ (height 35)
+ (tiles 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
+ )
+ (camera
+ (mode "normal")
+ )
+ (mrbomb
+ (direction "left")
+ (x 300.336)
+ (y 495.7777)
+ )
+ (mrbomb
+ (direction "auto")
+ (x 1047.041)
+ (y 501.4346)
+ )
+ (mrbomb
+ (direction "left")
+ (x 569.0366)
+ (y 269.5035)
+ )
+ (mrbomb
+ (direction "right")
+ (x 493.7288)
+ (y 268.332)
+ )
+ (mrbomb
+ (direction "right")
+ (x 419.13)
+ (y 498.6062)
+ )
+ (sspiky
+ (direction "left")
+ (x 240.939)
+ (y 787.1058)
+ )
+ (sspiky
+ (direction "right")
+ (x 342.7624)
+ (y 781.4489)
+ )
+ (sspiky
+ (direction "auto")
+ (x 911.2763)
+ (y 784.2773)
+ )
+ (sspiky
+ (direction "auto")
+ (x 506.8112)
+ (y 787.1057)
+ )
+ (spawnpoint
+ (name "main")
+ (x 768)
+ (y 96)
+ )
+ (dispenser
+ (badguy "mrrocket")
+ (cycle 1)
+ (direction "left")
+ (x 215.4832)
+ (y 996.4092)
+ )
+ (dispenser
+ (badguy "mrrocket")
+ (cycle 1)
+ (direction "right")
+ (x 472.8701)
+ (y 999.2377)
+ )
+ (dispenser
+ (badguy "random")
+ (cycle 1)
+ (direction "auto")
+ (x 931.0753)
+ (y 917.2133)
+ )
+ (dispenser
+ (badguy "random")
+ (cycle 1)
+ (direction "left")
+ (x 1240.788)
+ (y 912.9707)
+ )
+ (dispenser
+ (badguy "random")
+ (cycle 1)
+ (direction "")
+ (x 1379.381)
+ (y 911.5566)
+ )
+ (dispenser
+ (badguy "random")
+ (cycle 1)
+ (direction "right")
+ (x 1093.71)
+ (y 910.1423)
+ )
+ (darttrap
+ (initial-delay 0)
+ (fire-delay 2)
+ (ammo -1)
+ (direction "right")
+ (x 256.5859)
+ (y 964.7768)
+ )
+ (darttrap
+ (initial-delay 0)
+ (fire-delay 2)
+ (ammo -1)
+ (direction "auto")
+ (x 209.8263)
+ (y 890.3432)
+ )
+ (darttrap
+ (initial-delay 0)
+ (fire-delay 2)
+ (ammo -1)
+ (direction "auto")
+ (x 258.0001)
+ (y 919.5219)
+ )
+ (darttrap
+ (initial-delay 0)
+ (fire-delay 2)
+ (ammo -1)
+ (direction "left")
+ (x 259.4143)
+ (y 875.6813)
+ )
+ (darttrap
+ (initial-delay 0)
+ (fire-delay 2)
+ (ammo -1)
+ (direction "left")
+ (x 498.4164)
+ (y 874.2671)
+ )
+ (darttrap
+ (initial-delay 0)
+ (fire-delay 2)
+ (ammo -1)
+ (direction "auto")
+ (x 498.4164)
+ (y 919.5219)
+ )
+ (darttrap
+ (initial-delay 0)
+ (fire-delay 2)
+ (ammo -1)
+ (direction "right")
+ (x 498.4164)
+ (y 961.9484)
+ )
+ )
+)
(dispenser
(badguy "poisonivy")
(cycle 3)
- (launchdirection "right")
+ (direction "right")
(x 768)
(y 320)
)
}
}
+Direction
+BadGuy::str2dir( std::string dir_str )
+{
+ if( dir_str == "auto" || dir_str == "" )
+ return dir;
+ if( dir_str == "left" )
+ return LEFT;
+ if( dir_str == "right" )
+ return RIGHT;
+
+ //default to "auto"
+ log_warning << "Badguy::str2dir: unknown direction \"" << dir_str << "\"\n";
+ return dir;
+}
+
void
BadGuy::activate()
{
Direction dir;
+ /**
+ * Get Direction from String.
+ */
+ Direction str2dir( std::string dir_str );
+
private:
void try_activate();
BouncingSnowball::BouncingSnowball(const lisp::Lisp& reader)
: BadGuy(reader, "images/creatures/bouncing_snowball/bouncing_snowball.sprite")
-{
+{
set_direction = false;
+ reader.get("direction", direction);
+ if( direction != "auto" && direction != ""){
+ set_direction = true;
+ initial_direction = str2dir( direction );
+ }
}
BouncingSnowball::BouncingSnowball(const Vector& pos, Direction d)
{
writer.start_list("bouncingsnowball");
+ writer.write_string("direction", direction);
writer.write_float("x", start_position.x);
writer.write_float("y", start_position.y);
bool collision_squished(Player& player);
bool set_direction;
Direction initial_direction;
+ std::string direction;
};
#endif
DartTrap::DartTrap(const lisp::Lisp& reader)
: BadGuy(reader, "images/creatures/darttrap/darttrap.sprite"), set_direction(true), initial_direction(LEFT), initial_delay(0), fire_delay(2), ammo(-1), state(IDLE)
{
+ reader.get("direction", direction);
+ if( direction != "auto" && direction != ""){
+ initial_direction = str2dir( direction );
+ }
reader.get("initial-delay", initial_delay);
reader.get("fire-delay", fire_delay);
reader.get("ammo", ammo);
DartTrap::write(lisp::Writer& writer)
{
writer.start_list("darttrap");
+ writer.write_string("direction", direction);
writer.write_float("x", start_position.x);
writer.write_float("y", start_position.y);
writer.write_float("initial-delay", initial_delay);
State state; /**< current state */
Timer fire_timer; /**< time until new shot is fired */
+ std::string direction;
};
#endif
Dispenser::Dispenser(const lisp::Lisp& reader)
: BadGuy(reader, "images/creatures/dispenser/dispenser.sprite")
{
- std::string launchdirection = "";
- launchdir = dir;
- reader.get("launchdirection", launchdirection);
- if( launchdirection == "left" || launchdirection == "LEFT" )
- launchdir = LEFT;
- if( launchdirection == "right" || launchdirection == "RIGHT" )
- launchdir = RIGHT;
+ set_direction = false;
+ reader.get("direction", direction);
+ if( direction != "auto" && direction != ""){
+ set_direction = true;
+ initial_direction = str2dir( direction );
+ dir = str2dir( direction );
+ }
reader.get("cycle", cycle);
reader.get("badguy", badguy);
if (badguy == "mrrocket") {
- sprite->set_action(launchdir == LEFT ? "working-left" : "working-right");
+ sprite->set_action(dir == LEFT ? "working-left" : "working-right");
}
else {sprite->set_action("dropper");}
bbox.set_size(sprite->get_current_hitbox_width(), sprite->get_current_hitbox_height());
{
writer.start_list("dispenser");
+ writer.write_string("direction", direction);
writer.write_float("x", start_position.x);
writer.write_float("y", start_position.y);
writer.write_float("cycle", cycle);
Dispenser::collision_squished(Player& player)
{
//TODO: Should it act like a normal tile when killed?
- sprite->set_action(launchdir == LEFT ? "broken-left" : "broken-right");
+ sprite->set_action(dir == LEFT ? "broken-left" : "broken-right");
dispense_timer.start(0);
player.bounce(*this);
kill_squished(player);
void
Dispenser::launch_badguy()
{
+ if( set_direction ){
+ dir = initial_direction;
+ }
//FIXME: Does is_offscreen() work right here?
if (!is_offscreen()) {
if (badguy == "snowball")
- Sector::current()->add_object(new SnowBall(Vector(get_pos().x, get_pos().y+32), launchdir));
+ Sector::current()->add_object(new SnowBall(Vector(get_pos().x, get_pos().y+32), dir));
else if (badguy == "bouncingsnowball")
- Sector::current()->add_object(new BouncingSnowball(Vector(get_pos().x, get_pos().y+32), launchdir));
+ Sector::current()->add_object(new BouncingSnowball(Vector(get_pos().x, get_pos().y+32), dir));
else if (badguy == "mrbomb")
- Sector::current()->add_object(new MrBomb(Vector(get_pos().x, get_pos().y+32), launchdir));
+ Sector::current()->add_object(new MrBomb(Vector(get_pos().x, get_pos().y+32), dir));
else if (badguy == "mriceblock")
- Sector::current()->add_object(new MrIceBlock(Vector(get_pos().x, get_pos().y+32), launchdir));
+ Sector::current()->add_object(new MrIceBlock(Vector(get_pos().x, get_pos().y+32), dir));
else if (badguy == "snail")
- Sector::current()->add_object(new Snail(Vector(get_pos().x, get_pos().y+32), launchdir));
+ Sector::current()->add_object(new Snail(Vector(get_pos().x, get_pos().y+32), dir));
else if (badguy == "mrrocket") {
- Sector::current()->add_object(new MrRocket(Vector(get_pos().x+(launchdir == LEFT ? -32 : 32), get_pos().y), launchdir));}
+ Sector::current()->add_object(new MrRocket(Vector(get_pos().x+(dir == LEFT ? -32 : 32), get_pos().y), dir));}
else if (badguy == "poisonivy")
- Sector::current()->add_object(new PoisonIvy(Vector(get_pos().x, get_pos().y+32), launchdir));
+ Sector::current()->add_object(new PoisonIvy(Vector(get_pos().x, get_pos().y+32), dir));
else if (badguy == "skullyhop")
- Sector::current()->add_object(new SkullyHop(Vector(get_pos().x, get_pos().y+44), launchdir));
+ Sector::current()->add_object(new SkullyHop(Vector(get_pos().x, get_pos().y+44), dir));
else if (badguy == "random")
{
switch (systemRandom.rand(7))
{
- case 0: Sector::current()->add_object(new SnowBall(Vector(get_pos().x, get_pos().y+32), launchdir)); break;
- case 1: Sector::current()->add_object(new BouncingSnowball(Vector(get_pos().x, get_pos().y+32), launchdir)); break;
- case 2: Sector::current()->add_object(new MrBomb(Vector(get_pos().x, get_pos().y+32), launchdir)); break;
- case 3: Sector::current()->add_object(new MrIceBlock(Vector(get_pos().x, get_pos().y+32), launchdir)); break;
- case 4: Sector::current()->add_object(new PoisonIvy(Vector(get_pos().x, get_pos().y+32), launchdir)); break;
- case 5: Sector::current()->add_object(new Snail(Vector(get_pos().x, get_pos().y+32), launchdir)); break;
- case 6: Sector::current()->add_object(new SkullyHop(Vector(get_pos().x, get_pos().y+44), launchdir)); break;
+ case 0: Sector::current()->add_object(new SnowBall(Vector(get_pos().x, get_pos().y+32), dir)); break;
+ case 1: Sector::current()->add_object(new BouncingSnowball(Vector(get_pos().x, get_pos().y+32), dir)); break;
+ case 2: Sector::current()->add_object(new MrBomb(Vector(get_pos().x, get_pos().y+32), dir)); break;
+ case 3: Sector::current()->add_object(new MrIceBlock(Vector(get_pos().x, get_pos().y+32), dir)); break;
+ case 4: Sector::current()->add_object(new PoisonIvy(Vector(get_pos().x, get_pos().y+32), dir)); break;
+ case 5: Sector::current()->add_object(new Snail(Vector(get_pos().x, get_pos().y+32), dir)); break;
+ case 6: Sector::current()->add_object(new SkullyHop(Vector(get_pos().x, get_pos().y+44), dir)); break;
}
}
}
float cycle;
std::string badguy;
Timer dispense_timer;
- Direction launchdir;
+ bool set_direction;
+ Direction initial_direction;
+ std::string direction;
};
#endif
: BadGuy(reader, "images/creatures/mr_bomb/mr_bomb.sprite")
{
set_direction = false;
+ reader.get("direction", direction);
+ if( direction != "auto" && direction != ""){
+ set_direction = true;
+ initial_direction = str2dir( direction );
+ }
}
MrBomb::MrBomb(const Vector& pos, Direction d)
{
writer.start_list("mrbomb");
+ writer.write_string("direction", direction);
writer.write_float("x", start_position.x);
writer.write_float("y", start_position.y);
bool collision_squished(Player& player);
bool set_direction;
Direction initial_direction;
+ std::string direction;
};
#endif
MrIceBlock::MrIceBlock(const lisp::Lisp& reader)
: BadGuy(reader, "images/creatures/mr_iceblock/mr_iceblock.sprite"), ice_state(ICESTATE_NORMAL), squishcount(0)
{
+ reader.get("direction", direction);
set_direction = false;
+ if( direction != "auto" && direction != ""){
+ set_direction = true;
+ initial_direction = str2dir( direction );
+ }
sound_manager->preload("sounds/iceblock_bump.wav");
sound_manager->preload("sounds/stomp.wav");
sound_manager->preload("sounds/kick.wav");
{
writer.start_list("mriceblock");
+ writer.write_string("direction", direction);
writer.write_float("x", start_position.x);
writer.write_float("y", start_position.y);
int squishcount;
bool set_direction;
Direction initial_direction;
+ std::string direction;
};
#endif
MrTree::MrTree(const lisp::Lisp& reader)
: BadGuy(reader, "images/creatures/mr_tree/mr_tree.sprite"), mystate(STATE_BIG)
{
+ reader.get("direction", direction);
+ set_direction = true;
+ if( direction != "auto" && direction != ""){
+ set_direction = true;
+ initial_direction = str2dir( direction );
+ dir = str2dir( direction );
+ }
sprite->set_action(dir == LEFT ? "large-left" : "large-right");
sound_manager->preload("sounds/mr_tree.ogg");
sound_manager->preload("sounds/mr_treehit.ogg");
{
writer.start_list("mrtree");
+ writer.write_string("direction", direction);
writer.write_float("x", start_position.x);
writer.write_float("y", start_position.y);
void
MrTree::activate()
{
+ if( set_direction ){
+ dir = initial_direction;
+ }
if (mystate == STATE_BIG) {
physic.set_velocity_x(dir == LEFT ? -WALKSPEED : WALKSPEED);
sprite->set_action(dir == LEFT ? "large-left" : "large-right");
Timer invincible_timer;
bool collision_squished(Player& player);
+ std::string direction;
+ bool set_direction;
+ Direction initial_direction;
};
#endif
: BadGuy(reader, "images/creatures/poison_ivy/poison_ivy.sprite")
{
set_direction = false;
+ reader.get("direction", direction);
+ if( direction != "auto" && direction != ""){
+ set_direction = true;
+ initial_direction = str2dir( direction );
+ }
}
PoisonIvy::PoisonIvy(const Vector& pos, Direction d)
{
writer.start_list("poisonivy");
+ writer.write_string("direction", direction);
writer.write_float("x", start_position.x);
writer.write_float("y", start_position.y);
bool collision_squished(Player& player);
bool set_direction;
Direction initial_direction;
+ std::string direction;
};
#endif
Snail::Snail(const lisp::Lisp& reader)
: BadGuy(reader, "images/creatures/snail/snail.sprite"), state(STATE_NORMAL), squishcount(0)
{
+ reader.get("direction", direction);
set_direction = false;
+ if( direction != "auto" && direction != ""){
+ set_direction = true;
+ initial_direction = str2dir( direction );
+ }
sound_manager->preload("sounds/iceblock_bump.wav");
sound_manager->preload("sounds/stomp.wav");
sound_manager->preload("sounds/kick.wav");
{
writer.start_list("snail");
+ writer.write_string("direction", direction);
writer.write_float("x", start_position.x);
writer.write_float("y", start_position.y);
int squishcount;
bool set_direction;
Direction initial_direction;
+ std::string direction;
};
#endif
SnowBall::SnowBall(const lisp::Lisp& reader)
: BadGuy(reader, "images/creatures/snowball/snowball.sprite")
{
- /*
- fluffy = false;
- reader.get("fluffy",fluffy);
- if (fluffy) {
- delete sprite;
- sprite = sprite_manager->create("images/creatures/fluffy/fluffy.sprite");
- }
- */
set_direction = false;
+ reader.get("direction", direction);
+ if( direction != "auto" && direction != ""){
+ set_direction = true;
+ initial_direction = str2dir( direction );
+ }
}
SnowBall::SnowBall(const Vector& pos, Direction d)
{
writer.start_list("snowball");
+ writer.write_string("direction", direction);
writer.write_float("x", start_position.x);
writer.write_float("y", start_position.y);
/*
bool collision_squished(Player& player);
bool set_direction;
Direction initial_direction;
- //bool fluffy;
+ std::string direction;
};
#endif
Spiky::Spiky(const lisp::Lisp& reader)
: BadGuy(reader, "images/creatures/spiky/spiky.sprite")
{
+ reader.get("direction", direction);
+ set_direction = false;
+ if( direction != "auto" && direction != ""){
+ set_direction = true;
+ initial_direction = str2dir( direction );
+ }
}
void
{
writer.start_list("spiky");
+ writer.write_string("direction", direction);
writer.write_float("x", start_position.x);
writer.write_float("y", start_position.y);
void
Spiky::activate()
{
+ if( set_direction ){
+ dir = initial_direction;
+ }
physic.set_velocity_x(dir == LEFT ? -WALKSPEED : WALKSPEED);
sprite->set_action(dir == LEFT ? "left" : "right");
}
virtual Spiky* clone() const { return new Spiky(*this); }
+private:
+ bool set_direction;
+ Direction initial_direction;
+ std::string direction;
};
#endif
SSpiky::SSpiky(const lisp::Lisp& reader)
: BadGuy(reader, "images/creatures/spiky/sleepingspiky.sprite"), state(SSPIKY_SLEEPING)
{
+ set_direction = false;
+ reader.get("direction", direction);
+ if( direction != "auto" && direction != ""){
+ set_direction = true;
+ initial_direction = str2dir( direction );
+ }
}
void
{
writer.start_list("sspiky");
+ writer.write_string("direction", direction);
writer.write_float("x", start_position.x);
writer.write_float("y", start_position.y);
void
SSpiky::activate()
{
- //FIXME: turns sspiky around for debugging
- dir = dir == LEFT ? RIGHT : LEFT;
-
+ if( set_direction ){
+ dir = initial_direction;
+ }
state = SSPIKY_SLEEPING;
physic.set_velocity_x(0);
sprite->set_action(dir == LEFT ? "sleeping-left" : "sleeping-right");
SSPIKY_WALKING
};
SSpikyState state;
+ std::string direction;
+ bool set_direction;
+ Direction initial_direction;
};
#endif
: BadGuy(reader, "images/creatures/zeekling/zeekling.sprite")
{
set_direction = false;
+ reader.get("direction", direction);
+ if( direction != "auto" && direction != ""){
+ set_direction = true;
+ initial_direction = str2dir( direction );
+ }
state = FLYING;
}
{
writer.start_list("zeekling");
+ writer.write_string("direction", direction);
writer.write_float("x", start_position.x);
writer.write_float("y", start_position.y);
bool should_we_dive();
void onBumpHorizontal();
void onBumpVertical();
-
+ std::string direction;
};
#endif