summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/animation.xml1053
-rw-r--r--src/buildings-earth.xml502
-rw-r--r--src/buildings-generic.xml4108
-rw-r--r--src/buildings-mars.xml47
-rw-r--r--src/buildings-moon.xml343
-rw-r--r--src/buildings-properties.xml105
-rw-r--r--src/buildings-saturn.xml47
-rw-r--r--src/buildings-titan.xml314
-rw-r--r--src/buildings.xml1035
-rw-r--r--src/characters-earth.xml1605
-rw-r--r--src/characters-endless.xml333
-rw-r--r--src/characters-mars.xml1675
-rw-r--r--src/characters-moon.xml1638
-rw-r--r--src/characters-saturn.xml1679
-rw-r--r--src/characters-survival.xml335
-rw-r--r--src/characters-titan.xml2280
-rw-r--r--src/characters-xmas.xml76
-rw-r--r--src/characters.xml1241
-rw-r--r--src/colours-earth.xml415
-rw-r--r--src/colours-hoff.xml267
-rw-r--r--src/colours-mars.xml451
-rw-r--r--src/colours-moon.xml470
-rw-r--r--src/colours-saturn.xml436
-rw-r--r--src/colours-titan.xml414
-rw-r--r--src/colours.xml430
-rw-r--r--src/com/shavenpuppy/jglib/DirectBufferAllocator.java82
-rw-r--r--src/com/shavenpuppy/jglib/Font.java320
-rw-r--r--src/com/shavenpuppy/jglib/Glyph.java309
-rw-r--r--src/com/shavenpuppy/jglib/IResource.java85
-rw-r--r--src/com/shavenpuppy/jglib/Image.java593
-rw-r--r--src/com/shavenpuppy/jglib/Memory.java276
-rw-r--r--src/com/shavenpuppy/jglib/MultiBuffer.java93
-rw-r--r--src/com/shavenpuppy/jglib/Palette.java210
-rw-r--r--src/com/shavenpuppy/jglib/Point2f.java170
-rw-r--r--src/com/shavenpuppy/jglib/Resource.java440
-rw-r--r--src/com/shavenpuppy/jglib/Resources.java410
-rw-r--r--src/com/shavenpuppy/jglib/TextLayout.java605
-rw-r--r--src/com/shavenpuppy/jglib/Wave.java296
-rw-r--r--src/com/shavenpuppy/jglib/WrappedBuffer.java76
-rw-r--r--src/com/shavenpuppy/jglib/XMLResourceWriter.java272
-rw-r--r--src/com/shavenpuppy/jglib/algorithms/Bresenham.java258
-rw-r--r--src/com/shavenpuppy/jglib/algorithms/BufferRadixSort.java242
-rw-r--r--src/com/shavenpuppy/jglib/algorithms/RadixSort.java443
-rw-r--r--src/com/shavenpuppy/jglib/interpolators/ColorInterpolator.java96
-rw-r--r--src/com/shavenpuppy/jglib/interpolators/CosineInterpolator.java75
-rw-r--r--src/com/shavenpuppy/jglib/interpolators/CosineSquaredInterpolator.java76
-rw-r--r--src/com/shavenpuppy/jglib/interpolators/Interpolator.java52
-rw-r--r--src/com/shavenpuppy/jglib/interpolators/InterpolatorBase.java63
-rw-r--r--src/com/shavenpuppy/jglib/interpolators/LinearInterpolator.java74
-rw-r--r--src/com/shavenpuppy/jglib/interpolators/OldCosineInterpolator.java71
-rw-r--r--src/com/shavenpuppy/jglib/interpolators/OpenLinearInterpolator.java67
-rw-r--r--src/com/shavenpuppy/jglib/interpolators/SineInterpolator.java75
-rw-r--r--src/com/shavenpuppy/jglib/jpeg/JPEGDecoder.java7492
-rw-r--r--src/com/shavenpuppy/jglib/jpeg/JPEGError.java19
-rw-r--r--src/com/shavenpuppy/jglib/openal/AL.java134
-rw-r--r--src/com/shavenpuppy/jglib/openal/ALBuffer.java271
-rw-r--r--src/com/shavenpuppy/jglib/openal/ALBufferID.java52
-rw-r--r--src/com/shavenpuppy/jglib/openal/ALSource.java326
-rw-r--r--src/com/shavenpuppy/jglib/openal/ALStream.java235
-rw-r--r--src/com/shavenpuppy/jglib/openal/ALStreamInstance.java376
-rw-r--r--src/com/shavenpuppy/jglib/openal/SoundBank.java178
-rw-r--r--src/com/shavenpuppy/jglib/openal/SoundClip.java131
-rw-r--r--src/com/shavenpuppy/jglib/opengl/ColorUtil.java154
-rw-r--r--src/com/shavenpuppy/jglib/opengl/GLBackBufferTexture.java104
-rw-r--r--src/com/shavenpuppy/jglib/opengl/GLBaseTexture.java184
-rw-r--r--src/com/shavenpuppy/jglib/opengl/GLBumpMap.java174
-rw-r--r--src/com/shavenpuppy/jglib/opengl/GLDistanceAttenuationTexture.java113
-rw-r--r--src/com/shavenpuppy/jglib/opengl/GLFont.java347
-rw-r--r--src/com/shavenpuppy/jglib/opengl/GLGlyph.java242
-rw-r--r--src/com/shavenpuppy/jglib/opengl/GLGlyphBuffer.java64
-rw-r--r--src/com/shavenpuppy/jglib/opengl/GLNormalisationCubeMapTexture.java171
-rw-r--r--src/com/shavenpuppy/jglib/opengl/GLObject.java44
-rw-r--r--src/com/shavenpuppy/jglib/opengl/GLRenderable.java44
-rw-r--r--src/com/shavenpuppy/jglib/opengl/GLRenderableObject.java40
-rw-r--r--src/com/shavenpuppy/jglib/opengl/GLString.java482
-rw-r--r--src/com/shavenpuppy/jglib/opengl/GLStyledText.java1033
-rw-r--r--src/com/shavenpuppy/jglib/opengl/GLTextArea.java1158
-rw-r--r--src/com/shavenpuppy/jglib/opengl/GLTexture.java473
-rw-r--r--src/com/shavenpuppy/jglib/opengl/GLUtil.java263
-rw-r--r--src/com/shavenpuppy/jglib/opengl/GLVertexBufferObject.java184
-rw-r--r--src/com/shavenpuppy/jglib/opengl/OrthoCamera.java147
-rw-r--r--src/com/shavenpuppy/jglib/resources/Attenuator.java48
-rw-r--r--src/com/shavenpuppy/jglib/resources/AttenuatorFeature.java57
-rw-r--r--src/com/shavenpuppy/jglib/resources/Background.java440
-rw-r--r--src/com/shavenpuppy/jglib/resources/ClassLoaderResource.java59
-rw-r--r--src/com/shavenpuppy/jglib/resources/ColorMapFeature.java278
-rw-r--r--src/com/shavenpuppy/jglib/resources/ColorParser.java115
-rw-r--r--src/com/shavenpuppy/jglib/resources/ColorPulseResource.java130
-rw-r--r--src/com/shavenpuppy/jglib/resources/ColorSequenceResource.java300
-rw-r--r--src/com/shavenpuppy/jglib/resources/ColorSequenceWrapper.java58
-rw-r--r--src/com/shavenpuppy/jglib/resources/Data.java43
-rw-r--r--src/com/shavenpuppy/jglib/resources/DieRoll.java133
-rw-r--r--src/com/shavenpuppy/jglib/resources/DimensionParser.java78
-rw-r--r--src/com/shavenpuppy/jglib/resources/DynamicResource.java167
-rw-r--r--src/com/shavenpuppy/jglib/resources/Feature.java624
-rw-r--r--src/com/shavenpuppy/jglib/resources/FontResource.java131
-rw-r--r--src/com/shavenpuppy/jglib/resources/GLEnum.java105
-rw-r--r--src/com/shavenpuppy/jglib/resources/ImageResource.java136
-rw-r--r--src/com/shavenpuppy/jglib/resources/ImageWrapper.java48
-rw-r--r--src/com/shavenpuppy/jglib/resources/MappedColor.java239
-rw-r--r--src/com/shavenpuppy/jglib/resources/Point2fParser.java77
-rw-r--r--src/com/shavenpuppy/jglib/resources/PointParser.java78
-rw-r--r--src/com/shavenpuppy/jglib/resources/Range.java118
-rw-r--r--src/com/shavenpuppy/jglib/resources/ReadableColorMap.java43
-rw-r--r--src/com/shavenpuppy/jglib/resources/RectangleParser.java88
-rw-r--r--src/com/shavenpuppy/jglib/resources/ResourceArray.java159
-rw-r--r--src/com/shavenpuppy/jglib/resources/ResourceConverter.java519
-rw-r--r--src/com/shavenpuppy/jglib/resources/ResourceLoadedListener.java43
-rw-r--r--src/com/shavenpuppy/jglib/resources/StringArray.java108
-rw-r--r--src/com/shavenpuppy/jglib/resources/TextResource.java127
-rw-r--r--src/com/shavenpuppy/jglib/resources/TextWrapper.java16
-rw-r--r--src/com/shavenpuppy/jglib/resources/Vector3fParser.java86
-rw-r--r--src/com/shavenpuppy/jglib/resources/WaveResource.java153
-rw-r--r--src/com/shavenpuppy/jglib/resources/WaveWrapper.java65
-rw-r--r--src/com/shavenpuppy/jglib/sound/OggInputStream.java541
-rw-r--r--src/com/shavenpuppy/jglib/sound/OggVorbis.java598
-rw-r--r--src/com/shavenpuppy/jglib/sound/SoundEffect.java546
-rw-r--r--src/com/shavenpuppy/jglib/sound/SoundPlayer.java302
-rw-r--r--src/com/shavenpuppy/jglib/sprites/AbstractStyle.java82
-rw-r--r--src/com/shavenpuppy/jglib/sprites/AlphaCommand.java105
-rw-r--r--src/com/shavenpuppy/jglib/sprites/AlphaOp.java45
-rw-r--r--src/com/shavenpuppy/jglib/sprites/AngleCommand.java123
-rw-r--r--src/com/shavenpuppy/jglib/sprites/AnimColorCommand.java164
-rw-r--r--src/com/shavenpuppy/jglib/sprites/Animation.java225
-rw-r--r--src/com/shavenpuppy/jglib/sprites/Appearance.java54
-rw-r--r--src/com/shavenpuppy/jglib/sprites/ColorCommand.java92
-rw-r--r--src/com/shavenpuppy/jglib/sprites/Command.java63
-rw-r--r--src/com/shavenpuppy/jglib/sprites/CookieStyle.java77
-rw-r--r--src/com/shavenpuppy/jglib/sprites/DefaultSpriteRenderer.java736
-rw-r--r--src/com/shavenpuppy/jglib/sprites/EventCommand.java83
-rw-r--r--src/com/shavenpuppy/jglib/sprites/FlagCommand.java135
-rw-r--r--src/com/shavenpuppy/jglib/sprites/FlashStyle.java98
-rw-r--r--src/com/shavenpuppy/jglib/sprites/FrameCommand.java244
-rw-r--r--src/com/shavenpuppy/jglib/sprites/FrameListCommand.java73
-rw-r--r--src/com/shavenpuppy/jglib/sprites/GeometryData.java40
-rw-r--r--src/com/shavenpuppy/jglib/sprites/GeometryStyle.java307
-rw-r--r--src/com/shavenpuppy/jglib/sprites/GlowingStyle.java100
-rw-r--r--src/com/shavenpuppy/jglib/sprites/GotoCommand.java105
-rw-r--r--src/com/shavenpuppy/jglib/sprites/ImageBank.java209
-rw-r--r--src/com/shavenpuppy/jglib/sprites/LabelCommand.java91
-rw-r--r--src/com/shavenpuppy/jglib/sprites/LoopCommand.java83
-rw-r--r--src/com/shavenpuppy/jglib/sprites/MoveCommand.java161
-rw-r--r--src/com/shavenpuppy/jglib/sprites/NextCommand.java57
-rw-r--r--src/com/shavenpuppy/jglib/sprites/OffsetCommand.java161
-rw-r--r--src/com/shavenpuppy/jglib/sprites/OpaqueStyle.java97
-rw-r--r--src/com/shavenpuppy/jglib/sprites/RandomDelayCommand.java115
-rw-r--r--src/com/shavenpuppy/jglib/sprites/RandomGotoCommand.java125
-rw-r--r--src/com/shavenpuppy/jglib/sprites/ReadablePosition.java40
-rw-r--r--src/com/shavenpuppy/jglib/sprites/RepeatCommand.java109
-rw-r--r--src/com/shavenpuppy/jglib/sprites/ReturnCommand.java59
-rw-r--r--src/com/shavenpuppy/jglib/sprites/ScaleCommand.java167
-rw-r--r--src/com/shavenpuppy/jglib/sprites/SerializedSprite.java229
-rw-r--r--src/com/shavenpuppy/jglib/sprites/SimpleRenderable.java45
-rw-r--r--src/com/shavenpuppy/jglib/sprites/SimpleRenderer.java69
-rw-r--r--src/com/shavenpuppy/jglib/sprites/SoundCommand.java177
-rw-r--r--src/com/shavenpuppy/jglib/sprites/Sprite.java1065
-rw-r--r--src/com/shavenpuppy/jglib/sprites/SpriteAllocator.java49
-rw-r--r--src/com/shavenpuppy/jglib/sprites/SpriteEngine.java107
-rw-r--r--src/com/shavenpuppy/jglib/sprites/SpriteImage.java337
-rw-r--r--src/com/shavenpuppy/jglib/sprites/SpriteManager.java45
-rw-r--r--src/com/shavenpuppy/jglib/sprites/SpriteProcessor.java47
-rw-r--r--src/com/shavenpuppy/jglib/sprites/SpriteRenderer.java66
-rw-r--r--src/com/shavenpuppy/jglib/sprites/StaticSpriteEngine.java275
-rw-r--r--src/com/shavenpuppy/jglib/sprites/Style.java82
-rw-r--r--src/com/shavenpuppy/jglib/sprites/SubCommand.java109
-rw-r--r--src/com/shavenpuppy/jglib/sprites/TransparentStyle.java97
-rw-r--r--src/com/shavenpuppy/jglib/sprites/UntexturedStyle.java89
-rw-r--r--src/com/shavenpuppy/jglib/util/ArrayParser.java113
-rw-r--r--src/com/shavenpuppy/jglib/util/CheckOnline.java73
-rw-r--r--src/com/shavenpuppy/jglib/util/Decodeable.java45
-rw-r--r--src/com/shavenpuppy/jglib/util/Decoder.java51
-rw-r--r--src/com/shavenpuppy/jglib/util/DoubleParser.java42
-rw-r--r--src/com/shavenpuppy/jglib/util/FPMath.java278
-rw-r--r--src/com/shavenpuppy/jglib/util/FastMath.java53
-rw-r--r--src/com/shavenpuppy/jglib/util/FloatList.java193
-rw-r--r--src/com/shavenpuppy/jglib/util/FloatParser.java42
-rw-r--r--src/com/shavenpuppy/jglib/util/FpsGraph.java188
-rw-r--r--src/com/shavenpuppy/jglib/util/HexDecoder.java64
-rw-r--r--src/com/shavenpuppy/jglib/util/HexEncoder.java57
-rw-r--r--src/com/shavenpuppy/jglib/util/ImprovedStringTokenizer.java164
-rw-r--r--src/com/shavenpuppy/jglib/util/IntList.java197
-rw-r--r--src/com/shavenpuppy/jglib/util/IntParser.java42
-rw-r--r--src/com/shavenpuppy/jglib/util/MoreImprovedStringTokenizer.java139
-rw-r--r--src/com/shavenpuppy/jglib/util/Parseable.java50
-rw-r--r--src/com/shavenpuppy/jglib/util/Parser.java48
-rw-r--r--src/com/shavenpuppy/jglib/util/PriorityPool.java236
-rw-r--r--src/com/shavenpuppy/jglib/util/PriorityPooled.java99
-rw-r--r--src/com/shavenpuppy/jglib/util/ShortList.java196
-rw-r--r--src/com/shavenpuppy/jglib/util/SimpleDisplayModeComparator.java75
-rw-r--r--src/com/shavenpuppy/jglib/util/StringParser.java42
-rw-r--r--src/com/shavenpuppy/jglib/util/TimeDelay.java89
-rw-r--r--src/com/shavenpuppy/jglib/util/Util.java339
-rw-r--r--src/com/shavenpuppy/jglib/util/XMLUtil.java811
-rw-r--r--src/com/shavenpuppy/jglib/vector/ReadableVector.java54
-rw-r--r--src/com/shavenpuppy/jglib/vector/ReadableVector3i.java42
-rw-r--r--src/com/shavenpuppy/jglib/vector/Vector.java103
-rw-r--r--src/com/shavenpuppy/jglib/vector/Vector3i.java288
-rw-r--r--src/com/shavenpuppy/jglib/vector/WritableVector.java64
-rw-r--r--src/com/shavenpuppy/jglib/vector/WritableVector3i.java70
-rw-r--r--src/config.xml87
-rw-r--r--src/craters.xml278
-rw-r--r--src/crystals-2tone.xml644
-rw-r--r--src/crystals.xml788
-rw-r--r--src/dynamic.xml1332
-rw-r--r--src/emitters.xml2083
-rw-r--r--src/endless.xml271
-rw-r--r--src/gidrahs-earth-anim.xml576
-rw-r--r--src/gidrahs-earth-boss.xml771
-rw-r--r--src/gidrahs-earth.xml145
-rw-r--r--src/gidrahs-endless.xml662
-rw-r--r--src/gidrahs-hoff-anim.xml1743
-rw-r--r--src/gidrahs-hoff-boss.xml732
-rw-r--r--src/gidrahs-hoff.xml216
-rw-r--r--src/gidrahs-mars-anim.xml1860
-rw-r--r--src/gidrahs-mars-boss.xml2248
-rw-r--r--src/gidrahs-mars-gidlets-anim.xml362
-rw-r--r--src/gidrahs-mars-wraith-anim.xml2744
-rw-r--r--src/gidrahs-mars.xml294
-rw-r--r--src/gidrahs-moon-anim.xml989
-rw-r--r--src/gidrahs-moon-boss.xml1366
-rw-r--r--src/gidrahs-moon.xml210
-rw-r--r--src/gidrahs-saturn-anim.xml1839
-rw-r--r--src/gidrahs-saturn-boss.xml3843
-rw-r--r--src/gidrahs-saturn-flying-anim.xml1944
-rw-r--r--src/gidrahs-saturn-gidlets-anim.xml316
-rw-r--r--src/gidrahs-saturn-wraith-anim.xml2724
-rw-r--r--src/gidrahs-saturn.xml590
-rw-r--r--src/gidrahs-titan-anim.xml996
-rw-r--r--src/gidrahs-titan-boss.xml2237
-rw-r--r--src/gidrahs-titan-flying-anim.xml1038
-rw-r--r--src/gidrahs-titan-gidlets-anim.xml376
-rw-r--r--src/gidrahs-titan-wraith-anim.xml2750
-rw-r--r--src/gidrahs-titan.xml577
-rw-r--r--src/gidrahs.xml1515
-rw-r--r--src/gui-editor.xml72
-rw-r--r--src/gui-game.xml3151
-rw-r--r--src/gui-levels.xml2520
-rw-r--r--src/gui-story.xml2303
-rw-r--r--src/gui.xml2344
-rw-r--r--src/hints.xml350
-rw-r--r--src/medals.xml1253
-rw-r--r--src/mousepointers.xml304
-rw-r--r--src/music.xml63
-rw-r--r--src/net/java/dev/eval/Compiler.java97
-rw-r--r--src/net/java/dev/eval/Expression.java190
-rw-r--r--src/net/java/dev/eval/Operation.java132
-rw-r--r--src/net/java/dev/eval/Operator.java253
-rw-r--r--src/net/java/dev/eval/Tokeniser.java238
-rw-r--r--src/net/java/dev/eval/Type.java26
-rw-r--r--src/net/puppygames/applet/Anchor.java97
-rw-r--r--src/net/puppygames/applet/AppletHiscoreServerRemote.java77
-rw-r--r--src/net/puppygames/applet/AppletMessageCheckerRemote.java95
-rw-r--r--src/net/puppygames/applet/Area.java1675
-rw-r--r--src/net/puppygames/applet/Binding.java469
-rw-r--r--src/net/puppygames/applet/Bounded.java45
-rw-r--r--src/net/puppygames/applet/Configuration.java208
-rw-r--r--src/net/puppygames/applet/Factory.java13
-rw-r--r--src/net/puppygames/applet/Game.java2843
-rw-r--r--src/net/puppygames/applet/GameInputStream.java118
-rw-r--r--src/net/puppygames/applet/GameOutputStream.java165
-rw-r--r--src/net/puppygames/applet/GameState.java78
-rw-r--r--src/net/puppygames/applet/HiscoresReturn.java75
-rw-r--r--src/net/puppygames/applet/InputDeviceType.java15
-rw-r--r--src/net/puppygames/applet/InstantTransition.java99
-rw-r--r--src/net/puppygames/applet/Launcher.java97
-rw-r--r--src/net/puppygames/applet/MessageReturn.java84
-rw-r--r--src/net/puppygames/applet/MiniGame.java807
-rw-r--r--src/net/puppygames/applet/MouseEvent.java136
-rw-r--r--src/net/puppygames/applet/NagState.java41
-rw-r--r--src/net/puppygames/applet/News.java84
-rw-r--r--src/net/puppygames/applet/PlayerSlot.java190
-rw-r--r--src/net/puppygames/applet/Pool.java13
-rw-r--r--src/net/puppygames/applet/PrizeFeature.java113
-rw-r--r--src/net/puppygames/applet/Res.java199
-rw-r--r--src/net/puppygames/applet/RoamingFile.java89
-rw-r--r--src/net/puppygames/applet/Score.java310
-rw-r--r--src/net/puppygames/applet/Screen.java1755
-rw-r--r--src/net/puppygames/applet/SimplePool.java49
-rw-r--r--src/net/puppygames/applet/Splash.java223
-rw-r--r--src/net/puppygames/applet/Support.java86
-rw-r--r--src/net/puppygames/applet/Tickable.java71
-rw-r--r--src/net/puppygames/applet/TickableObject.java135
-rw-r--r--src/net/puppygames/applet/Transition.java70
-rw-r--r--src/net/puppygames/applet/ZoomTransition.java128
-rw-r--r--src/net/puppygames/applet/effects/AdjusterEffect.java74
-rw-r--r--src/net/puppygames/applet/effects/BlastEffect.java204
-rw-r--r--src/net/puppygames/applet/effects/Effect.java309
-rw-r--r--src/net/puppygames/applet/effects/EffectFeature.java94
-rw-r--r--src/net/puppygames/applet/effects/Emitter.java107
-rw-r--r--src/net/puppygames/applet/effects/EmitterFeature.java1161
-rw-r--r--src/net/puppygames/applet/effects/FadeEffect.java70
-rw-r--r--src/net/puppygames/applet/effects/LabelEffect.java122
-rw-r--r--src/net/puppygames/applet/effects/LabelEffectFeature.java85
-rw-r--r--src/net/puppygames/applet/effects/Particle.java570
-rw-r--r--src/net/puppygames/applet/effects/ProgressEffect.java206
-rw-r--r--src/net/puppygames/applet/effects/SFX.java137
-rw-r--r--src/net/puppygames/applet/effects/SimpleBaseEffect.java237
-rw-r--r--src/net/puppygames/applet/effects/SimpleBaseEffectFeature.java151
-rw-r--r--src/net/puppygames/applet/effects/StrobeEffect.java134
-rw-r--r--src/net/puppygames/applet/effects/StrobeEffectFeature.java87
-rw-r--r--src/net/puppygames/applet/screens/AbstractSlotEffect.java191
-rw-r--r--src/net/puppygames/applet/screens/BindingsScreen.java424
-rw-r--r--src/net/puppygames/applet/screens/CreditsScreen.java99
-rw-r--r--src/net/puppygames/applet/screens/DialogScreen.java161
-rw-r--r--src/net/puppygames/applet/screens/EnterNameDialog.java256
-rw-r--r--src/net/puppygames/applet/screens/GenericButtonHandler.java89
-rw-r--r--src/net/puppygames/applet/screens/GenericButtons.java54
-rw-r--r--src/net/puppygames/applet/screens/HiscoresScreen.java713
-rw-r--r--src/net/puppygames/applet/screens/InstructionsScreen.java89
-rw-r--r--src/net/puppygames/applet/screens/NagScreen.java125
-rw-r--r--src/net/puppygames/applet/screens/OptionsScreen.java196
-rw-r--r--src/net/puppygames/applet/screens/RegisterScreen.java436
-rw-r--r--src/net/puppygames/applet/screens/SignUpScreen.java485
-rw-r--r--src/net/puppygames/applet/screens/SlotEffect.java51
-rw-r--r--src/net/puppygames/applet/screens/SlotEffectListener.java50
-rw-r--r--src/net/puppygames/applet/screens/SlotScreen.java268
-rw-r--r--src/net/puppygames/applet/screens/TitleScreen.java431
-rw-r--r--src/net/puppygames/applet/screens/UnlockBonusScreen.java305
-rw-r--r--src/net/puppygames/applet/widgets/AsynchronousOperation.java90
-rw-r--r--src/net/puppygames/applet/widgets/AsynchronousPanel.java187
-rw-r--r--src/net/puppygames/applet/widgets/Beam.java150
-rw-r--r--src/net/puppygames/applet/widgets/MessageBox.java176
-rw-r--r--src/net/puppygames/applet/widgets/PowerDisplay.java115
-rw-r--r--src/net/puppygames/applet/widgets/PowerDisplayFeature.java403
-rw-r--r--src/net/puppygames/applet/widgets/RenderedCircle.java130
-rw-r--r--src/net/puppygames/applet/widgets/Ring.java128
-rw-r--r--src/net/puppygames/applet/widgets/TextField.java425
-rw-r--r--src/net/puppygames/gamecommerce/shared/ConfigurationDetails.java60
-rw-r--r--src/net/puppygames/gamecommerce/shared/Countries.java139
-rw-r--r--src/net/puppygames/gamecommerce/shared/CreditCard.java176
-rw-r--r--src/net/puppygames/gamecommerce/shared/Game.java94
-rw-r--r--src/net/puppygames/gamecommerce/shared/GameInfo.java256
-rw-r--r--src/net/puppygames/gamecommerce/shared/GameInfoServerRemote.java54
-rw-r--r--src/net/puppygames/gamecommerce/shared/GenericServerRemote.java56
-rw-r--r--src/net/puppygames/gamecommerce/shared/HexDecoder.java64
-rw-r--r--src/net/puppygames/gamecommerce/shared/HexEncoder.java57
-rw-r--r--src/net/puppygames/gamecommerce/shared/Luhn.java72
-rw-r--r--src/net/puppygames/gamecommerce/shared/NewsletterIncentive.java175
-rw-r--r--src/net/puppygames/gamecommerce/shared/PaymentResult.java87
-rw-r--r--src/net/puppygames/gamecommerce/shared/PaymentServerRemote.java73
-rw-r--r--src/net/puppygames/gamecommerce/shared/RegisterException.java51
-rw-r--r--src/net/puppygames/gamecommerce/shared/RegistrationDetails.java392
-rw-r--r--src/net/puppygames/gamecommerce/shared/RegistrationServerRemote.java96
-rw-r--r--src/net/puppygames/gamecommerce/shared/UnknownConfigurationDetails.java77
-rw-r--r--src/net/puppygames/gamecommerce/shared/ValidateUtil.java159
-rw-r--r--src/powerups.xml2031
-rw-r--r--src/ranks.xml131
-rw-r--r--src/rocks-earth.xml491
-rw-r--r--src/rocks-hoff.xml453
-rw-r--r--src/rocks-mars.xml486
-rw-r--r--src/rocks-titan-anim.xml316
-rw-r--r--src/rocks-titan.xml614
-rw-r--r--src/ruins-earth.xml240
-rw-r--r--src/ruins-hoff.xml134
-rw-r--r--src/ruins-mars.xml106
-rw-r--r--src/ruins-moon.xml256
-rw-r--r--src/ruins-saturn.xml1974
-rw-r--r--src/ruins-titan.xml541
-rw-r--r--src/soundbank-mono.xml184
-rw-r--r--src/soundbank.xml85
-rw-r--r--src/sounds.xml410
-rw-r--r--src/survival.xml591
-rw-r--r--src/tags.xml74
-rw-r--r--src/temptiles.xml2565
-rw-r--r--src/tiles-common.xml351
-rw-r--r--src/tiles-earth.xml1015
-rw-r--r--src/tiles-hoff.xml650
-rw-r--r--src/tiles-mars.xml1111
-rw-r--r--src/tiles-moon.xml375
-rw-r--r--src/tiles-saturn.xml125
-rw-r--r--src/tiles-titan.xml1740
-rw-r--r--src/tiles-transition.xml296
-rw-r--r--src/tiles.xml204
-rw-r--r--src/units.xml976
-rw-r--r--src/victory-anim.xml3416
-rw-r--r--src/victory-xmas-anim.xml839
-rw-r--r--src/victory-xmas.xml639
-rw-r--r--src/victory.xml918
-rw-r--r--src/volcanoes.xml192
-rw-r--r--src/weapons.xml1397
-rw-r--r--src/world-earth.xml518
-rw-r--r--src/world-hoff.xml182
-rw-r--r--src/world-mars.xml458
-rw-r--r--src/world-moon.xml538
-rw-r--r--src/world-saturn.xml485
-rw-r--r--src/world-titan.xml468
-rw-r--r--src/worlds.xml43
-rw-r--r--src/worm/AttenuatedColor.java237
-rw-r--r--src/worm/Barracks.java47
-rw-r--r--src/worm/CauseOfDeath.java49
-rw-r--r--src/worm/ClickAction.java51
-rw-r--r--src/worm/CollisionManager.java95
-rw-r--r--src/worm/ColorAttenuationConstants.java71
-rw-r--r--src/worm/CrystalResource.java82
-rw-r--r--src/worm/Entity.java1183
-rw-r--r--src/worm/EntitySpawningFeature.java54
-rw-r--r--src/worm/Facing.java107
-rw-r--r--src/worm/GameConfiguration.java306
-rw-r--r--src/worm/GameMap.java498
-rw-r--r--src/worm/GameStateInterface.java125
-rw-r--r--src/worm/GeomUtil.java171
-rw-r--r--src/worm/GridCollisionManager.java343
-rw-r--r--src/worm/Hints.java63
-rw-r--r--src/worm/IntGrid.java112
-rw-r--r--src/worm/InterpolatorImageResource.java148
-rw-r--r--src/worm/Layers.java59
-rw-r--r--src/worm/MapClip.java172
-rw-r--r--src/worm/MapListener.java41
-rw-r--r--src/worm/MapProcessor.java66
-rw-r--r--src/worm/MapRenderer.java926
-rw-r--r--src/worm/Medals.java130
-rw-r--r--src/worm/Mode.java48
-rw-r--r--src/worm/Res.java737
-rw-r--r--src/worm/SFX.java245
-rw-r--r--src/worm/SandboxParams.java99
-rw-r--r--src/worm/ShopItem.java131
-rw-r--r--src/worm/Statistics.java56
-rw-r--r--src/worm/Stats.java64
-rw-r--r--src/worm/SurvivalParams.java134
-rw-r--r--src/worm/Tile.java515
-rw-r--r--src/worm/TileInfo.java86
-rw-r--r--src/worm/TimeUtil.java69
-rw-r--r--src/worm/Worm.java622
-rw-r--r--src/worm/WormGameState.java5183
-rw-r--r--src/worm/Xmas.java77
-rw-r--r--src/worm/animation/EmitCommand.java110
-rw-r--r--src/worm/animation/LayersCommand.java77
-rw-r--r--src/worm/animation/LightAngleCommand.java175
-rw-r--r--src/worm/animation/LockCommand.java55
-rw-r--r--src/worm/animation/NotifyCommand.java157
-rw-r--r--src/worm/animation/PrintCommand.java67
-rw-r--r--src/worm/animation/ShakeCommand.java73
-rw-r--r--src/worm/animation/ShootCommand.java57
-rw-r--r--src/worm/animation/SimpleThingWithLayers.java109
-rw-r--r--src/worm/animation/SyncCommand.java95
-rw-r--r--src/worm/animation/ThingWithLayers.java51
-rw-r--r--src/worm/animation/UnlockCommand.java58
-rw-r--r--src/worm/brains/BrainFeature.java72
-rw-r--r--src/worm/brains/DroneBrainFeature.java117
-rw-r--r--src/worm/brains/DumbBrainFeature.java116
-rw-r--r--src/worm/brains/SmartBrainFeature.java119
-rw-r--r--src/worm/brains/TacticalBrainFeature.java121
-rw-r--r--src/worm/brains/UnitBrainFeature.java114
-rw-r--r--src/worm/buildings/AddonBuilding.java71
-rw-r--r--src/worm/buildings/AutoLoaderBuildingFeature.java107
-rw-r--r--src/worm/buildings/BarracksBuildingFeature.java268
-rw-r--r--src/worm/buildings/BarricadeFeature.java274
-rw-r--r--src/worm/buildings/BaseBuildingFeature.java132
-rw-r--r--src/worm/buildings/BatteryBuildingFeature.java96
-rw-r--r--src/worm/buildings/BuildingFeature.java555
-rw-r--r--src/worm/buildings/CapacitorBuildingFeature.java382
-rw-r--r--src/worm/buildings/CloakBuildingFeature.java98
-rw-r--r--src/worm/buildings/CollectorBuildingFeature.java98
-rw-r--r--src/worm/buildings/CoolingTowerBuildingFeature.java102
-rw-r--r--src/worm/buildings/CrystalFeature.java443
-rw-r--r--src/worm/buildings/FactoryBuildingFeature.java366
-rw-r--r--src/worm/buildings/MinefieldFeature.java394
-rw-r--r--src/worm/buildings/ObstacleFeature.java153
-rw-r--r--src/worm/buildings/ReactorBuildingFeature.java109
-rw-r--r--src/worm/buildings/ScannerBuildingFeature.java92
-rw-r--r--src/worm/buildings/ScarecrowBuildingFeature.java116
-rw-r--r--src/worm/buildings/ShieldGeneratorBuildingFeature.java112
-rw-r--r--src/worm/buildings/TurretBuildingFeature.java1006
-rw-r--r--src/worm/buildings/WarehouseBuildingFeature.java108
-rw-r--r--src/worm/effects/ArrowEffect.java178
-rw-r--r--src/worm/effects/BuildingAttackedEffect.java275
-rw-r--r--src/worm/effects/CrystalSpawnEffect.java256
-rw-r--r--src/worm/effects/ElectronZapEffect.java407
-rw-r--r--src/worm/effects/HitPointsEffect.java175
-rw-r--r--src/worm/effects/ProximityEffect.java206
-rw-r--r--src/worm/effects/RangeEffect.java168
-rw-r--r--src/worm/effects/SaucerEffect.java244
-rw-r--r--src/worm/effects/ScrollTransition.java117
-rw-r--r--src/worm/effects/SmartbombEffect.java156
-rw-r--r--src/worm/effects/WeatherEmitter.java313
-rw-r--r--src/worm/effects/WormSlotEffect.java198
-rw-r--r--src/worm/entities/Bomb.java292
-rw-r--r--src/worm/entities/Building.java1388
-rw-r--r--src/worm/entities/Bullet.java669
-rw-r--r--src/worm/entities/Capacitor.java54
-rw-r--r--src/worm/entities/Factory.java49
-rw-r--r--src/worm/entities/FlyingMovement.java255
-rw-r--r--src/worm/entities/Gidrah.java1720
-rw-r--r--src/worm/entities/GidrahGameMapTopology.java328
-rw-r--r--src/worm/entities/GidrahMovement.java603
-rw-r--r--src/worm/entities/Movement.java83
-rw-r--r--src/worm/entities/PlayerWeaponInstallation.java11
-rw-r--r--src/worm/entities/Saucer.java406
-rw-r--r--src/worm/entities/Smartbomb.java154
-rw-r--r--src/worm/entities/Turret.java77
-rw-r--r--src/worm/entities/Unit.java649
-rw-r--r--src/worm/entities/UnitGameMapTopology.java234
-rw-r--r--src/worm/entities/UnitMovement.java293
-rw-r--r--src/worm/features/Actor.java77
-rw-r--r--src/worm/features/ActorFeature.java777
-rw-r--r--src/worm/features/BaseTemplateFeature.java166
-rw-r--r--src/worm/features/BombFeature.java131
-rw-r--r--src/worm/features/BulletFeature.java264
-rw-r--r--src/worm/features/CaveTemplateFeature.java102
-rw-r--r--src/worm/features/CharacterFeature.java207
-rw-r--r--src/worm/features/DecalFeature.java162
-rw-r--r--src/worm/features/EmptyTemplateFeature.java66
-rw-r--r--src/worm/features/GidrahFeature.java773
-rw-r--r--src/worm/features/HintFeature.java170
-rw-r--r--src/worm/features/LayersFeature.java464
-rw-r--r--src/worm/features/LevelColorsFeature.java178
-rw-r--r--src/worm/features/LevelFeature.java832
-rw-r--r--src/worm/features/MedalFeature.java135
-rw-r--r--src/worm/features/MoneyPrizeFeature.java77
-rw-r--r--src/worm/features/MultiPrizeFeature.java81
-rw-r--r--src/worm/features/PerlinTemplateFeature.java121
-rw-r--r--src/worm/features/PlainsTemplateFeature.java135
-rw-r--r--src/worm/features/PowerupPrizeFeature.java80
-rw-r--r--src/worm/features/RankFeature.java132
-rw-r--r--src/worm/features/ResearchFeature.java205
-rw-r--r--src/worm/features/SceneryFeature.java223
-rw-r--r--src/worm/features/Setting.java51
-rw-r--r--src/worm/features/SettingFeature.java496
-rw-r--r--src/worm/features/StoryFeature.java220
-rw-r--r--src/worm/features/TileSetFeature.java138
-rw-r--r--src/worm/features/UnitFeature.java219
-rw-r--r--src/worm/features/WorldFeature.java293
-rw-r--r--src/worm/features/XmasTemplateFeature.java118
-rw-r--r--src/worm/generator/AbstractMapGenerator.java1281
-rw-r--r--src/worm/generator/BaseMapGenerator.java1099
-rw-r--r--src/worm/generator/CaveMapGenerator.java136
-rw-r--r--src/worm/generator/EmptyMapGenerator.java72
-rw-r--r--src/worm/generator/GenerationAbortedException.java47
-rw-r--r--src/worm/generator/IntGridTopology.java158
-rw-r--r--src/worm/generator/MapGenerator.java58
-rw-r--r--src/worm/generator/MapGeneratorParams.java86
-rw-r--r--src/worm/generator/MapTemplate.java112
-rw-r--r--src/worm/generator/PerlinMapGenerator.java98
-rw-r--r--src/worm/generator/PerlinNoise.java162
-rw-r--r--src/worm/generator/PlainsMapGenerator.java188
-rw-r--r--src/worm/generator/Scenery.java118
-rw-r--r--src/worm/generator/SimpleTiles.java59
-rw-r--r--src/worm/generator/SolidCheck.java41
-rw-r--r--src/worm/generator/XmasMapGenerator.java134
-rw-r--r--src/worm/path/AStar.java359
-rw-r--r--src/worm/path/BinaryHeap.java241
-rw-r--r--src/worm/path/Node.java90
-rw-r--r--src/worm/path/PathFinder.java78
-rw-r--r--src/worm/path/Topology.java90
-rw-r--r--src/worm/powerups/BatteryPowerupFeature.java75
-rw-r--r--src/worm/powerups/BezerkPowerupFeature.java86
-rw-r--r--src/worm/powerups/CapacitorPowerupFeature.java85
-rw-r--r--src/worm/powerups/CoolingTowerPowerupFeature.java85
-rw-r--r--src/worm/powerups/FreezePowerupFeature.java86
-rw-r--r--src/worm/powerups/MoneyPowerupFeature.java104
-rw-r--r--src/worm/powerups/PowerupFeature.java304
-rw-r--r--src/worm/powerups/ReactorPowerupFeature.java84
-rw-r--r--src/worm/powerups/RepairPowerupFeature.java84
-rw-r--r--src/worm/powerups/ResourcePowerupFeature.java92
-rw-r--r--src/worm/powerups/ScannerPowerupFeature.java85
-rw-r--r--src/worm/powerups/ShieldGeneratorPowerupFeature.java85
-rw-r--r--src/worm/powerups/ShieldPowerupFeature.java86
-rw-r--r--src/worm/powerups/SmartbombPowerupFeature.java85
-rw-r--r--src/worm/research/BonusResearchFeature.java69
-rw-r--r--src/worm/research/PowerupsResearchFeature.java82
-rw-r--r--src/worm/screens/ChooseGameModeScreen.java140
-rw-r--r--src/worm/screens/CompleteGameScreen.java124
-rw-r--r--src/worm/screens/CompleteXmasScreen.java124
-rw-r--r--src/worm/screens/CreditsScreen.java55
-rw-r--r--src/worm/screens/EndGameScreen.java155
-rw-r--r--src/worm/screens/GameOverScreen.java164
-rw-r--r--src/worm/screens/GameScreen.java2212
-rw-r--r--src/worm/screens/InstructionsScreen.java121
-rw-r--r--src/worm/screens/IntermissionScreen.java370
-rw-r--r--src/worm/screens/MedalsScreen.java274
-rw-r--r--src/worm/screens/MenuScreen.java213
-rw-r--r--src/worm/screens/NagScreen.java73
-rw-r--r--src/worm/screens/NewWorldScreen.java109
-rw-r--r--src/worm/screens/OptionsScreen.java132
-rw-r--r--src/worm/screens/ResearchScreen.java515
-rw-r--r--src/worm/screens/SandboxEditScreen.java149
-rw-r--r--src/worm/screens/SandboxNagScreen.java84
-rw-r--r--src/worm/screens/SandboxRegisterScreen.java416
-rw-r--r--src/worm/screens/SelectEndlessLevelScreen.java134
-rw-r--r--src/worm/screens/SelectLevelScreen.java119
-rw-r--r--src/worm/screens/SelectSandboxLevelScreen.java276
-rw-r--r--src/worm/screens/SelectSurvivalLevelScreen.java463
-rw-r--r--src/worm/screens/SelectWorldScreen.java130
-rw-r--r--src/worm/screens/StoryScreen.java348
-rw-r--r--src/worm/screens/SurvivalEndGameScreen.java297
-rw-r--r--src/worm/screens/SurvivalMenuScreen.java214
-rw-r--r--src/worm/screens/TitleScreen.java79
-rw-r--r--src/worm/screens/XmasEndGameScreen.java155
-rw-r--r--src/worm/screens/XmasMenuScreen.java213
-rw-r--r--src/worm/tiles/BasePoint.java66
-rw-r--r--src/worm/tiles/Crystal.java113
-rw-r--r--src/worm/tiles/Detail.java55
-rw-r--r--src/worm/tiles/EmptyTile.java48
-rw-r--r--src/worm/tiles/Exclude.java81
-rw-r--r--src/worm/tiles/FloorTile.java57
-rw-r--r--src/worm/tiles/Obstacle.java94
-rw-r--r--src/worm/tiles/Ruin.java133
-rw-r--r--src/worm/tiles/SpaceTile.java64
-rw-r--r--src/worm/tiles/SpawnPoint.java72
-rw-r--r--src/worm/tiles/TotalExclude.java85
-rw-r--r--src/worm/tiles/WallTile.java71
-rw-r--r--src/worm/util/AbstractIntCollection.java205
-rw-r--r--src/worm/util/IntCollection.java248
-rw-r--r--src/worm/util/IntComparator.java49
-rw-r--r--src/worm/util/IntIterator.java72
-rw-r--r--src/worm/util/hash/DefaultIntHashFunction.java48
-rw-r--r--src/worm/util/hash/IntHashFunction.java50
-rw-r--r--src/worm/util/hash/Primes.java143
-rw-r--r--src/worm/util/list/AbstractIntList.java244
-rw-r--r--src/worm/util/list/IntArrayList.java514
-rw-r--r--src/worm/util/list/IntList.java248
-rw-r--r--src/worm/util/list/IntListIterator.java114
-rw-r--r--src/worm/util/map/AbstractIntKeyMap.java204
-rw-r--r--src/worm/util/map/IntKeyMap.java195
-rw-r--r--src/worm/util/map/IntKeyMapIterator.java103
-rw-r--r--src/worm/util/map/IntKeyOpenHashMap.java976
-rw-r--r--src/worm/util/map/MapDefaults.java44
-rw-r--r--src/worm/util/map/NoSuchMappingException.java48
-rw-r--r--src/worm/util/set/AbstractIntSet.java64
-rw-r--r--src/worm/util/set/IntOpenHashSet.java770
-rw-r--r--src/worm/util/set/IntSet.java36
-rw-r--r--src/worm/util/util/Display.java50
-rw-r--r--src/worm/util/util/Exceptions.java174
-rw-r--r--src/worm/weapons/DisruptorFeature.java214
-rw-r--r--src/worm/weapons/ElectronZapFeature.java149
-rw-r--r--src/worm/weapons/LaserFeature.java580
-rw-r--r--src/worm/weapons/ShotgunFeature.java105
-rw-r--r--src/worm/weapons/WeaponFeature.java542
-rw-r--r--src/xmas.xml192
629 files changed, 224744 insertions, 0 deletions
diff --git a/src/animation.xml b/src/animation.xml
new file mode 100644
index 0000000..dfc1075
--- /dev/null
+++ b/src/animation.xml
@@ -0,0 +1,1053 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2003-onwards Shaven Puppy Ltd
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of 'Shaven Puppy' nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+<!--
+ Simple sprite animations
+-->
+<resources>
+
+ <include resource="tags.xml"/>
+
+
+ <property key="deathDelay" value="42"/>
+ <property key="deathStartOffset" value="20"/>
+
+ <property key="1x1fireDelay" value="1"/>
+ <property key="2x2fireDelay" value="5"/>
+ <property key="3x3fireDelay" value="10"/>
+ <property key="4x4fireDelay" value="15"/>
+ <property key="5x5fireDelay" value="20"/>
+
+ <property key="1x1deathDelay" value="1"/>
+ <property key="2x2deathDelay" value="20"/>
+ <property key="3x3deathDelay" value="60"/>
+ <property key="4x4deathDelay" value="90"/>
+ <property key="5x5deathDelay" value="150"/>
+
+ <property key="obstacleDeathShake" value="6"/>
+
+ <property key="1x1deathShake" value="10"/>
+ <property key="2x2deathShake" value="14"/>
+ <property key="3x3deathShake" value="18"/>
+ <property key="4x4deathShake" value="22"/>
+ <property key="5x5deathShake" value="32"/>
+
+
+ <animation name="todo.animation">
+
+ <frame i="spriteimage.todo.01" d="200" />
+
+ <label id="start"/>
+ <offset y="0" x="0" d="0"/>
+ <frame i="spriteimage.todo.01" d="30" />
+
+ <random>
+ <dest id="start" n="5"/>
+ <dest id="blink"/>
+ </random>
+
+ <label id="blink"/>
+ <frame i="spriteimage.todo.03" d="15" />
+ <frame i="spriteimage.todo.02" d="4" />
+ <random>
+ <dest id="start" n="3"/>
+ <dest id="blink2"/>
+ </random>
+ <label id="blink2"/>
+ <frame i="spriteimage.todo.01" d="10" />
+ <frame i="spriteimage.todo.02" d="2" />
+ <frame i="spriteimage.todo.03" d="10" />
+ <frame i="spriteimage.todo.02" d="5" />
+ <goto id="start"/>
+
+ </animation>
+
+
+
+ <!-- Reloading -->
+ <animation name="reload.indicator.animation">
+ <frame i="spriteimage.ammo.reload.glow.01" d="32"/>
+ <loop count="10"/>
+ <animcolor a="+-25" d="2"/>
+ <repeat seq="2"/>
+ <animcolor a="0" d="16"/>
+ <animcolor a="255" d="0"/>
+ <goto seq="0"/>
+ </animation>
+
+ <animation name="ammo.off.anim">
+ <animcolor a="255" d="0"/>
+ <frame i="spriteimage.ammo.off.01" d="1"/>
+ </animation>
+
+ <animation name="reload.indicator.back.animation">
+ <frame i="spriteimage.ammo.reload.back.01" d="32"/>
+ <loop count="10"/>
+ <animcolor a="+-25" d="2"/>
+ <repeat seq="2"/>
+ <animcolor a="0" d="16"/>
+ <animcolor a="255" d="0"/>
+ <goto seq="0"/>
+ </animation>
+
+
+ <animation name="reload.large.indicator.animation">
+ <frame i="spriteimage.ammo.large.reload.glow.01" d="32"/>
+ <loop count="10"/>
+ <animcolor a="+-25" d="2"/>
+ <repeat seq="2"/>
+ <animcolor a="0" d="16"/>
+ <animcolor a="255" d="0"/>
+ <goto seq="0"/>
+ </animation>
+
+ <animation name="ammo.large.off.anim">
+ <animcolor a="255" d="0"/>
+ <frame i="spriteimage.ammo.large.off.01" d="1"/>
+ </animation>
+
+ <animation name="reload.large.indicator.back.animation">
+ <frame i="spriteimage.ammo.large.reload.back.01" d="32"/>
+ <loop count="10"/>
+ <animcolor a="+-25" d="2"/>
+ <repeat seq="2"/>
+ <animcolor a="0" d="16"/>
+ <animcolor a="255" d="0"/>
+ <goto seq="0"/>
+ </animation>
+
+
+ <!-- Building shields -->
+
+ <animation name="shield-basic.2x2.animation">
+
+ <frame i="spriteimage.shield.2x2.01" d="0"/>
+ <animcolor a="+0" d="3" />
+ <frame i="spriteimage.shield.2x2.01" d="0"/>
+ <animcolor a="+11" d="3" />
+ <frame i="spriteimage.shield.2x2.02" d="0"/>
+ <animcolor a="+30" d="3" />
+ <frame i="spriteimage.shield.2x2.02" d="0"/>
+ <animcolor a="+40" d="3" />
+ <frame i="spriteimage.shield.2x2.03" d="0"/>
+ <animcolor a="+42" d="3" />
+ <frame i="spriteimage.shield.2x2.03" d="0"/>
+ <animcolor a="+38" d="3" />
+ <frame i="spriteimage.shield.2x2.04" d="0"/>
+ <animcolor a="+24" d="3" />
+ <frame i="spriteimage.shield.2x2.04" d="0"/>
+ <animcolor a="+5" d="3" />
+ <frame i="spriteimage.shield.2x2.05" d="0"/>
+ <animcolor a="+-5" d="3" />
+ <frame i="spriteimage.shield.2x2.05" d="0"/>
+ <animcolor a="+-11" d="3" />
+ <frame i="spriteimage.shield.2x2.01" d="0"/>
+ <animcolor a="+-15" d="3" />
+ <frame i="spriteimage.shield.2x2.01" d="0"/>
+ <animcolor a="+-18" d="3" />
+ <frame i="spriteimage.shield.2x2.02" d="0"/>
+ <animcolor a="+-20" d="3" />
+ <frame i="spriteimage.shield.2x2.02" d="0"/>
+ <animcolor a="+-22" d="3" />
+ <frame i="spriteimage.shield.2x2.03" d="0"/>
+ <animcolor a="+-22" d="3" />
+ <frame i="spriteimage.shield.2x2.03" d="0"/>
+ <animcolor a="+-21" d="3" />
+ <frame i="spriteimage.shield.2x2.04" d="0"/>
+ <animcolor a="+-19" d="3" />
+ <frame i="spriteimage.shield.2x2.04" d="0"/>
+ <animcolor a="+-17" d="3" />
+ <frame i="spriteimage.shield.2x2.05" d="0"/>
+ <animcolor a="+-12" d="3" />
+ <frame i="spriteimage.shield.2x2.05" d="0"/>
+ <animcolor a="+-7" d="3" />
+
+ <goto seq="0"/>
+ </animation>
+ <animation name="shield-basic.3x3.animation">
+
+ <frame i="spriteimage.shield.3x3.01" d="0"/>
+ <animcolor a="+0" d="3" />
+ <frame i="spriteimage.shield.3x3.01" d="0"/>
+ <animcolor a="+11" d="3" />
+ <frame i="spriteimage.shield.3x3.02" d="0"/>
+ <animcolor a="+30" d="3" />
+ <frame i="spriteimage.shield.3x3.02" d="0"/>
+ <animcolor a="+40" d="3" />
+ <frame i="spriteimage.shield.3x3.03" d="0"/>
+ <animcolor a="+42" d="3" />
+ <frame i="spriteimage.shield.3x3.03" d="0"/>
+ <animcolor a="+38" d="3" />
+ <frame i="spriteimage.shield.3x3.04" d="0"/>
+ <animcolor a="+24" d="3" />
+ <frame i="spriteimage.shield.3x3.04" d="0"/>
+ <animcolor a="+5" d="3" />
+ <frame i="spriteimage.shield.3x3.05" d="0"/>
+ <animcolor a="+-5" d="3" />
+ <frame i="spriteimage.shield.3x3.05" d="0"/>
+ <animcolor a="+-11" d="3" />
+ <frame i="spriteimage.shield.3x3.01" d="0"/>
+ <animcolor a="+-15" d="3" />
+ <frame i="spriteimage.shield.3x3.01" d="0"/>
+ <animcolor a="+-18" d="3" />
+ <frame i="spriteimage.shield.3x3.02" d="0"/>
+ <animcolor a="+-20" d="3" />
+ <frame i="spriteimage.shield.3x3.02" d="0"/>
+ <animcolor a="+-22" d="3" />
+ <frame i="spriteimage.shield.3x3.03" d="0"/>
+ <animcolor a="+-22" d="3" />
+ <frame i="spriteimage.shield.3x3.03" d="0"/>
+ <animcolor a="+-21" d="3" />
+ <frame i="spriteimage.shield.3x3.04" d="0"/>
+ <animcolor a="+-19" d="3" />
+ <frame i="spriteimage.shield.3x3.04" d="0"/>
+ <animcolor a="+-17" d="3" />
+ <frame i="spriteimage.shield.3x3.05" d="0"/>
+ <animcolor a="+-12" d="3" />
+ <frame i="spriteimage.shield.3x3.05" d="0"/>
+ <animcolor a="+-7" d="3" />
+
+ <goto seq="0"/>
+ </animation>
+ <animation name="shield-basic.4x4.animation">
+
+ <frame i="spriteimage.shield.4x4.01" d="0"/>
+ <animcolor a="+0" d="3" />
+ <frame i="spriteimage.shield.4x4.01" d="0"/>
+ <animcolor a="+11" d="3" />
+ <frame i="spriteimage.shield.4x4.02" d="0"/>
+ <animcolor a="+30" d="3" />
+ <frame i="spriteimage.shield.4x4.02" d="0"/>
+ <animcolor a="+40" d="3" />
+ <frame i="spriteimage.shield.4x4.03" d="0"/>
+ <animcolor a="+42" d="3" />
+ <frame i="spriteimage.shield.4x4.03" d="0"/>
+ <animcolor a="+38" d="3" />
+ <frame i="spriteimage.shield.4x4.04" d="0"/>
+ <animcolor a="+24" d="3" />
+ <frame i="spriteimage.shield.4x4.04" d="0"/>
+ <animcolor a="+5" d="3" />
+ <frame i="spriteimage.shield.4x4.05" d="0"/>
+ <animcolor a="+-5" d="3" />
+ <frame i="spriteimage.shield.4x4.05" d="0"/>
+ <animcolor a="+-11" d="3" />
+ <frame i="spriteimage.shield.4x4.01" d="0"/>
+ <animcolor a="+-15" d="3" />
+ <frame i="spriteimage.shield.4x4.01" d="0"/>
+ <animcolor a="+-18" d="3" />
+ <frame i="spriteimage.shield.4x4.02" d="0"/>
+ <animcolor a="+-20" d="3" />
+ <frame i="spriteimage.shield.4x4.02" d="0"/>
+ <animcolor a="+-22" d="3" />
+ <frame i="spriteimage.shield.4x4.03" d="0"/>
+ <animcolor a="+-22" d="3" />
+ <frame i="spriteimage.shield.4x4.03" d="0"/>
+ <animcolor a="+-21" d="3" />
+ <frame i="spriteimage.shield.4x4.04" d="0"/>
+ <animcolor a="+-19" d="3" />
+ <frame i="spriteimage.shield.4x4.04" d="0"/>
+ <animcolor a="+-17" d="3" />
+ <frame i="spriteimage.shield.4x4.05" d="0"/>
+ <animcolor a="+-12" d="3" />
+ <frame i="spriteimage.shield.4x4.05" d="0"/>
+ <animcolor a="+-7" d="3" />
+
+ <goto seq="0"/>
+ </animation>
+ <animation name="shield-basic.5x5.animation">
+
+ <frame i="spriteimage.shield.5x5.01" d="0"/>
+ <animcolor a="+0" d="3" />
+ <frame i="spriteimage.shield.5x5.01" d="0"/>
+ <animcolor a="+11" d="3" />
+ <frame i="spriteimage.shield.5x5.02" d="0"/>
+ <animcolor a="+30" d="3" />
+ <frame i="spriteimage.shield.5x5.02" d="0"/>
+ <animcolor a="+40" d="3" />
+ <frame i="spriteimage.shield.5x5.03" d="0"/>
+ <animcolor a="+42" d="3" />
+ <frame i="spriteimage.shield.5x5.03" d="0"/>
+ <animcolor a="+38" d="3" />
+ <frame i="spriteimage.shield.5x5.04" d="0"/>
+ <animcolor a="+24" d="3" />
+ <frame i="spriteimage.shield.5x5.04" d="0"/>
+ <animcolor a="+5" d="3" />
+ <frame i="spriteimage.shield.5x5.05" d="0"/>
+ <animcolor a="+-5" d="3" />
+ <frame i="spriteimage.shield.5x5.05" d="0"/>
+ <animcolor a="+-11" d="3" />
+ <frame i="spriteimage.shield.5x5.01" d="0"/>
+ <animcolor a="+-15" d="3" />
+ <frame i="spriteimage.shield.5x5.01" d="0"/>
+ <animcolor a="+-18" d="3" />
+ <frame i="spriteimage.shield.5x5.02" d="0"/>
+ <animcolor a="+-20" d="3" />
+ <frame i="spriteimage.shield.5x5.02" d="0"/>
+ <animcolor a="+-22" d="3" />
+ <frame i="spriteimage.shield.5x5.03" d="0"/>
+ <animcolor a="+-22" d="3" />
+ <frame i="spriteimage.shield.5x5.03" d="0"/>
+ <animcolor a="+-21" d="3" />
+ <frame i="spriteimage.shield.5x5.04" d="0"/>
+ <animcolor a="+-19" d="3" />
+ <frame i="spriteimage.shield.5x5.04" d="0"/>
+ <animcolor a="+-17" d="3" />
+ <frame i="spriteimage.shield.5x5.05" d="0"/>
+ <animcolor a="+-12" d="3" />
+ <frame i="spriteimage.shield.5x5.05" d="0"/>
+ <animcolor a="+-7" d="3" />
+
+ <goto seq="0"/>
+ </animation>
+
+ <!-- powerup shield style shields -->
+ <animation name="shield.2x2.animation">
+ <color c="!82,255,255,128"/>
+ <frame i="shield-basic.2x2.animation" d="0"/>
+ </animation>
+ <animation name="shield.3x3.animation">
+ <color c="!82,255,255,128"/>
+ <frame i="shield-basic.3x3.animation" d="0"/>
+ </animation>
+ <animation name="shield.4x4.animation">
+ <color c="!82,255,255,128"/>
+ <frame i="shield-basic.4x4.animation" d="0"/>
+ </animation>
+ <animation name="shield.5x5.animation">
+ <color c="!82,255,255,128"/>
+ <frame i="shield-basic.5x5.animation" d="0"/>
+ </animation>
+
+ <!-- shield-generator ("forcefield") style shields -->
+ <animation name="forcefield.2x2.animation">
+ <color c="!133,255,255,43"/>
+ <frame i="shield-basic.2x2.animation" d="0"/>
+ </animation>
+ <animation name="forcefield.3x3.animation">
+ <color c="!133,255,255,43"/>
+ <frame i="shield-basic.3x3.animation" d="0"/>
+ </animation>
+ <animation name="forcefield.4x4.animation">
+ <color c="!133,255,255,43"/>
+ <frame i="shield-basic.4x4.animation" d="0"/>
+ </animation>
+ <animation name="forcefield.5x5.animation">
+ <color c="!133,255,255,43"/>
+ <frame i="shield-basic.5x5.animation" d="0"/>
+ </animation>
+
+ <!-- world select screen anims -->
+ <animation name="worlds.earth.on.animation">
+ <frame i="spriteimage.worlds.earth.on.01" d="2"/>
+ <frame i="spriteimage.worlds.earth.on.02" d="2"/>
+ <frame i="spriteimage.worlds.earth.on.03" d="2"/>
+ </animation>
+ <animation name="worlds.earth.off.animation">
+ <frame i="spriteimage.worlds.earth.on.02" d="1"/>
+ <frame i="spriteimage.worlds.earth.on.01" d="1"/>
+ <frame i="spriteimage.worlds.earth.off.01" d="2"/>
+ </animation>
+
+ <animation name="worlds.moon.on.animation">
+ <frame i="spriteimage.worlds.moon.on.01" d="2"/>
+ <frame i="spriteimage.worlds.moon.on.02" d="2"/>
+ <frame i="spriteimage.worlds.moon.on.03" d="2"/>
+ </animation>
+ <animation name="worlds.moon.off.animation">
+ <frame i="spriteimage.worlds.moon.on.02" d="1"/>
+ <frame i="spriteimage.worlds.moon.on.01" d="1"/>
+ <frame i="spriteimage.worlds.moon.off.01" d="2"/>
+ </animation>
+
+ <animation name="worlds.mars.on.animation">
+ <frame i="spriteimage.worlds.mars.on.01" d="2"/>
+ <frame i="spriteimage.worlds.mars.on.02" d="2"/>
+ <frame i="spriteimage.worlds.mars.on.03" d="2"/>
+ </animation>
+ <animation name="worlds.mars.off.animation">
+ <frame i="spriteimage.worlds.mars.on.02" d="1"/>
+ <frame i="spriteimage.worlds.mars.on.01" d="1"/>
+ <frame i="spriteimage.worlds.mars.off.01" d="2"/>
+ </animation>
+
+ <animation name="worlds.saturn.on.animation">
+ <frame i="spriteimage.worlds.saturn.on.01" d="2"/>
+ <frame i="spriteimage.worlds.saturn.on.02" d="2"/>
+ <frame i="spriteimage.worlds.saturn.on.03" d="2"/>
+ </animation>
+ <animation name="worlds.saturn.off.animation">
+ <frame i="spriteimage.worlds.saturn.on.02" d="1"/>
+ <frame i="spriteimage.worlds.saturn.on.01" d="1"/>
+ <frame i="spriteimage.worlds.saturn.off.01" d="2"/>
+ </animation>
+
+ <animation name="worlds.titan.on.animation">
+ <frame i="spriteimage.worlds.titan.on.01" d="2"/>
+ <frame i="spriteimage.worlds.titan.on.02" d="2"/>
+ <frame i="spriteimage.worlds.titan.on.03" d="2"/>
+ </animation>
+ <animation name="worlds.titan.off.animation">
+ <frame i="spriteimage.worlds.titan.on.02" d="1"/>
+ <frame i="spriteimage.worlds.titan.on.01" d="1"/>
+ <frame i="spriteimage.worlds.titan.off.01" d="2"/>
+ </animation>
+
+
+ <animation name="earth.level.on.animation">
+ <color c="186,255,0"/>
+ <alpha alpha="195" d="2"/>
+ <alpha alpha="215" d="2"/>
+ <alpha alpha="235" d="2"/>
+ <alpha alpha="255" d="1"/>
+ </animation>
+ <animation name="earth.level.off.animation">
+ <color c="186,255,0"/>
+ </animation>
+
+ <animation name="earth.level.off.NE.animation">
+ <alpha alpha="175"/>
+ <frame i="spriteimage.level.01" d="0"/>
+ <frame i="earth.level.off.animation" d="1"/>
+ </animation>
+ <animation name="earth.level.off.SE.animation">
+ <alpha alpha="175"/>
+ <frame i="spriteimage.level.02" d="0"/>
+ <frame i="earth.level.off.animation" d="1"/>
+ </animation>
+ <animation name="earth.level.off.SW.animation">
+ <alpha alpha="175"/>
+ <frame i="spriteimage.level.03" d="0"/>
+ <frame i="earth.level.off.animation" d="1"/>
+ </animation>
+ <animation name="earth.level.off.NW.animation">
+ <alpha alpha="175"/>
+ <frame i="spriteimage.level.04" d="0"/>
+ <frame i="earth.level.off.animation" d="1"/>
+ </animation>
+
+ <animation name="earth.level.on.NE.animation">
+ <alpha alpha="175"/>
+ <frame i="spriteimage.level.01" d="0"/>
+ <frame i="earth.level.on.animation" d="1"/>
+ </animation>
+ <animation name="earth.level.on.SE.animation">
+ <alpha alpha="175"/>
+ <frame i="spriteimage.level.02" d="0"/>
+ <frame i="earth.level.on.animation" d="1"/>
+ </animation>
+ <animation name="earth.level.on.SW.animation">
+ <alpha alpha="175"/>
+ <frame i="spriteimage.level.03" d="0"/>
+ <frame i="earth.level.on.animation" d="1"/>
+ </animation>
+ <animation name="earth.level.on.NW.animation">
+ <alpha alpha="175"/>
+ <frame i="spriteimage.level.04" d="0"/>
+ <frame i="earth.level.on.animation" d="1"/>
+ </animation>
+
+
+
+
+ <!-- Gidrah attack length -->
+
+ <!-- <delay min="48" max="96"/> bug with delay? -->
+
+ <animation name="gidrah.attack.anim">
+ <animcolor a="255" d="64"/>
+ <return/>
+ </animation>
+
+
+
+ <!-- dead gidrah fade -->
+
+ <animation name="gidrah.dead.anim">
+ <animcolor a="255" d="8"/>
+ <animcolor a="150" d="2"/>
+ <animcolor a="225" d="2"/>
+ <animcolor a="140" d="2"/>
+ <animcolor a="200" d="2"/>
+ <animcolor a="100" d="2"/>
+ <animcolor a="150" d="2"/>
+ <animcolor a="80" d="2"/>
+ <animcolor a="100" d="2"/>
+ <animcolor a="25" d="2"/>
+ <animcolor a="50" d="2"/>
+ <animcolor a="0" d="2"/>
+ <animcolor a="30" d="2"/>
+ <animcolor a="0" d="2"/>
+ <animcolor a="10" d="2"/>
+ <animcolor a="0" d="1"/>
+ <event id="1"/>
+ </animation>
+
+ <!-- dead gidrah fade -->
+
+ <animation name="gidrah.stun.anim">
+ <animcolor a="255" d="2"/>
+ <animcolor a="0" d="2"/>
+ <animcolor a="225" d="2"/>
+ <animcolor a="0" d="2"/>
+ <animcolor a="200" d="2"/>
+ <animcolor a="0" d="2"/>
+ <animcolor a="150" d="2"/>
+ <animcolor a="0" d="2"/>
+ <animcolor a="100" d="2"/>
+ <animcolor a="0" d="2"/>
+ <animcolor a="50" d="2"/>
+ <animcolor a="0" d="2"/>
+ <animcolor a="30" d="2"/>
+ <animcolor a="0" d="2"/>
+ <animcolor a="10" d="2"/>
+ <animcolor a="0" d="1"/>
+ </animation>
+
+ <!-- dead boss fade -->
+
+ <animation name="boss.dead.remove.anim">
+ <animcolor a="255" d="1"/>
+ <loop count="8"/>
+ <animcolor a="+-7" d="2"/>
+ <repeat seq="2"/>
+ <animcolor a="0" d="1"/>
+ <event id="1"/>
+ </animation>
+
+
+
+ <!-- dead building fade -->
+
+
+ <animation name="building.1x1.dead.anim"><animcolor a="255" d="=$1x1deathDelay"/><frame i="building.1x1.dead.shake.anim" d="1"/></animation>
+ <animation name="building.1x1.dead.misc.anim"><animcolor a="255" d="=$1x1deathDelay"/><frame i="building.dead.misc.anim" d="1"/></animation>
+ <animation name="building.1x1.dead.base.anim"><frame i="spriteimage.generic.1x1.base.01" d="0"/><animcolor a="255" d="=$1x1deathDelay"/><frame i="building.dead.base.anim" d="1"/></animation>
+
+ <animation name="building.2x2.dead.anim"><animcolor a="255" d="=$2x2deathDelay"/><frame i="building.2x2.dead.shake.anim" d="1"/></animation>
+ <animation name="building.2x2.dead.misc.anim"><animcolor a="255" d="=$2x2deathDelay"/><frame i="building.dead.misc.anim" d="1"/></animation>
+ <animation name="building.2x2.dead.base.anim"><frame i="spriteimage.generic.2x2.base.01" d="0"/><animcolor a="255" d="=$2x2deathDelay"/><frame i="building.dead.base.anim" d="1"/></animation>
+
+ <animation name="building.3x3.dead.anim"><animcolor a="255" d="=$3x3deathDelay"/><frame i="building.3x3.dead.shake.anim" d="1"/></animation>
+ <animation name="building.3x3.dead.misc.anim"><animcolor a="255" d="=$3x3deathDelay"/><frame i="building.dead.misc.anim" d="1"/></animation>
+ <animation name="building.3x3.dead.base.anim"><frame i="spriteimage.generic.3x3.base.01" d="0"/><animcolor a="255" d="=$3x3deathDelay"/><frame i="building.dead.base.anim" d="1"/></animation>
+
+ <animation name="building.4x4.dead.anim"><animcolor a="255" d="=$4x4deathDelay"/><frame i="building.4x4.dead.shake.anim" d="1"/></animation>
+ <animation name="building.4x4.dead.misc.anim"><animcolor a="255" d="=$4x4deathDelay"/><frame i="building.dead.misc.anim" d="1"/></animation>
+ <animation name="building.4x4.dead.base.anim"><frame i="spriteimage.generic.4x4.base.01" d="0"/><animcolor a="255" d="=$4x4deathDelay"/><frame i="building.dead.base.anim" d="1"/></animation>
+
+ <animation name="building.5x5.dead.anim"><animcolor a="255" d="=$5x5deathDelay"/><frame i="building.5x5.dead.shake.anim" d="1"/></animation>
+ <animation name="building.5x5.dead.misc.anim"><animcolor a="255" d="=$5x5deathDelay"/><frame i="building.dead.misc.anim" d="1"/></animation>
+ <animation name="building.5x5.dead.base.anim"><frame i="spriteimage.generic.5x5.base.01" d="0"/><animcolor a="255" d="=$5x5deathDelay"/><frame i="building.dead.base.anim" d="1"/></animation>
+
+ <animation name="building.1x1.dead.shake.anim">
+ <animcolor a="255" d="=$deathDelay"/>
+ <shake amount="=$1x1deathShake"/>
+ <event id="1"/>
+ <animcolor a="0" d="256"/>
+ <event id="2"/>
+ </animation>
+
+ <animation name="building.2x2.dead.shake.anim">
+ <animcolor a="255" d="=$deathDelay"/>
+ <shake amount="=$2x2deathShake"/>
+ <event id="1"/>
+ <animcolor a="0" d="256"/>
+ <event id="2"/>
+ </animation>
+
+ <animation name="building.3x3.dead.shake.anim">
+ <animcolor a="255" d="=$deathDelay"/>
+ <shake amount="=$3x3deathShake"/>
+ <event id="1"/>
+ <animcolor a="0" d="256"/>
+ <event id="2"/>
+ </animation>
+
+ <animation name="building.4x4.dead.shake.anim">
+ <animcolor a="255" d="=$deathDelay"/>
+ <shake amount="=$4x4deathShake"/>
+ <event id="1"/>
+ <animcolor a="0" d="256"/>
+ <event id="2"/>
+ </animation>
+
+ <animation name="building.5x5.dead.shake.anim">
+ <animcolor a="255" d="=$deathDelay"/>
+ <shake amount="=$5x5deathShake"/>
+ <event id="1"/>
+ <animcolor a="0" d="256"/>
+ <event id="2"/>
+ </animation>
+
+
+
+ <animation name="building.dead.misc.anim">
+ <animcolor a="255" d="=$deathDelay"/>
+ <animcolor a="0" d="1"/>
+ </animation>
+
+ <animation name="building.dead.base.anim">
+ <animcolor a="255" d="=$deathDelay"/>
+ <loop count="63"/>
+ <animcolor a="+-4" d="4"/>
+ <repeat seq="2"/>
+ <animcolor a="0" d="1"/>
+ </animation>
+
+
+ <animation name="obstacle.dead.animation" >
+ <shake amount="=$obstacleDeathShake"/>
+ <animcolor a="255" d="256"/>
+ <event id="1"/>
+ <event id="2"/>
+ </animation>
+
+
+
+
+ <!-- smoke anims -->
+
+ <animation name="smoke.alpha.animation">
+ <random>
+ <dest seq="1"/>
+ <dest seq="3"/>
+ <dest seq="5"/>
+ <dest seq="7"/>
+ </random>
+ <alpha alpha="60"/>
+ <goto seq="8"/>
+ <alpha alpha="70"/>
+ <goto seq="8"/>
+ <alpha alpha="80"/>
+ <goto seq="8"/>
+ <alpha alpha="90"/>
+ <frame i="spriteimage.particle.smoke.16px.02" d="1"/>
+ </animation>
+
+ <animation name="smoke.dark.animation">
+ <random>
+ <dest seq="1"/>
+ <dest seq="3"/>
+ <dest seq="5"/>
+ <dest seq="7"/>
+ </random>
+ <alpha alpha="25"/>
+ <goto seq="8"/>
+ <alpha alpha="50"/>
+ <goto seq="8"/>
+ <alpha alpha="75"/>
+ <goto seq="8"/>
+ <alpha alpha="100"/>
+ <frame i="spriteimage.particle.smoke.16px.02" d="1"/>
+ </animation>
+
+ <animation name="smoke.glowing.alpha.animation">
+ <random>
+ <dest seq="1"/>
+ <dest seq="3"/>
+ <dest seq="5"/>
+ <dest seq="7"/>
+ </random>
+ <alpha alpha="15"/>
+ <goto seq="8"/>
+ <alpha alpha="20"/>
+ <goto seq="8"/>
+ <alpha alpha="25"/>
+ <goto seq="8"/>
+ <alpha alpha="30"/>
+ <frame i="spriteimage.particle.glowing.smoke.16px.01" d="1"/>
+ </animation>
+
+ <animation name="smoke.animation">
+ <random>
+ <dest seq="1"/>
+ <dest seq="2"/>
+ </random>
+ <frame i="smoke.alpha.animation" d="1"/>
+ <frame i="smoke.glowing.alpha.animation" d="1"/>
+ </animation>
+
+
+
+ <animation name="smoke.dirty.animation">
+ <random>
+ <dest seq="1" n="3"/>
+ <dest seq="2" n="1"/>
+ </random>
+ <frame i="smoke.dark.animation" d="1"/>
+ <frame i="smoke.glowing.alpha.animation" d="1"/>
+ </animation>
+
+
+
+ <!-- light anims -->
+
+ <animation name="building.light.red.3px.blink.animation">
+ <alpha alpha="255" d="0"/>
+ <frame i="spriteimage.building.light.red.3px.02" d="2"/>
+ <frame i="spriteimage.building.light.red.3px.01" d="4"/>
+ <frame i="spriteimage.building.light.red.3px.02" d="2"/>
+ <frame i="spriteimage.building.light.red.3px.03" d="3"/>
+ <frame i="spriteimage.building.light.red.3px.04" d="4"/>
+ <alpha alpha="128" d="6"/>
+ <alpha alpha="64" d="8"/>
+ <alpha alpha="32" d="25"/>
+ <goto seq="0"/>
+ </animation>
+ <animation name="building.light.red.3px.blink.2.animation">
+ <frame i="spriteimage.building.light.red.3px.04" d="0"/>
+ <alpha alpha="64" d="2"/>
+ <alpha alpha="32" d="25"/>
+ <alpha alpha="255" d="0"/>
+ <frame i="spriteimage.building.light.red.3px.02" d="2"/>
+ <frame i="spriteimage.building.light.red.3px.01" d="4"/>
+ <frame i="spriteimage.building.light.red.3px.02" d="2"/>
+ <frame i="spriteimage.building.light.red.3px.03" d="3"/>
+ <frame i="spriteimage.building.light.red.3px.04" d="4"/>
+ <alpha alpha="128" d="6"/>
+ <alpha alpha="64" d="6"/>
+ <goto seq="1"/>
+ </animation>
+
+ <animation name="building.light.red.4px.blink.animation">
+ <alpha alpha="255" d="0"/>
+ <frame i="spriteimage.building.light.red.4px.02" d="2"/>
+ <frame i="spriteimage.building.light.red.4px.01" d="4"/>
+ <frame i="spriteimage.building.light.red.4px.02" d="2"/>
+ <frame i="spriteimage.building.light.red.4px.03" d="3"/>
+ <frame i="spriteimage.building.light.red.4px.04" d="4"/>
+ <alpha alpha="128" d="6"/>
+ <alpha alpha="64" d="8"/>
+ <alpha alpha="32" d="25"/>
+ <goto seq="0"/>
+ </animation>
+ <animation name="building.light.red.4px.blink.2.animation">
+ <frame i="spriteimage.building.light.red.4px.04" d="0"/>
+ <alpha alpha="64" d="2"/>
+ <alpha alpha="32" d="25"/>
+ <alpha alpha="255" d="0"/>
+ <frame i="spriteimage.building.light.red.4px.02" d="2"/>
+ <frame i="spriteimage.building.light.red.4px.01" d="4"/>
+ <frame i="spriteimage.building.light.red.4px.02" d="2"/>
+ <frame i="spriteimage.building.light.red.4px.03" d="3"/>
+ <frame i="spriteimage.building.light.red.4px.04" d="4"/>
+ <alpha alpha="128" d="6"/>
+ <alpha alpha="64" d="6"/>
+ <goto seq="1"/>
+ </animation>
+
+
+ <animation name="building.light.red.3px.phase.animation">
+ <goto seq="9"/>
+ <alpha alpha="32" d="5"/>
+ <alpha alpha="64" d="4"/>
+ <alpha alpha="128" d="3"/>
+ <alpha alpha="255" d="0"/>
+ <frame i="spriteimage.building.light.red.3px.04" d="3"/>
+ <frame i="spriteimage.building.light.red.3px.03" d="4"/>
+ <frame i="spriteimage.building.light.red.3px.02" d="5"/>
+ <frame i="spriteimage.building.light.red.3px.01" d="6"/>
+ <frame i="spriteimage.building.light.red.3px.02" d="5"/>
+ <frame i="spriteimage.building.light.red.3px.03" d="4"/>
+ <frame i="spriteimage.building.light.red.3px.04" d="3"/>
+ <alpha alpha="128" d="3"/>
+ <alpha alpha="64" d="4"/>
+ <alpha alpha="32" d="5"/>
+ <goto seq="1"/>
+ </animation>
+
+ <animation name="building.light.red.4px.phase.animation">
+ <goto seq="9"/>
+ <alpha alpha="32" d="5"/>
+ <alpha alpha="64" d="4"/>
+ <alpha alpha="128" d="3"/>
+ <alpha alpha="255" d="0"/>
+ <frame i="spriteimage.building.light.red.4px.04" d="3"/>
+ <frame i="spriteimage.building.light.red.4px.03" d="4"/>
+ <frame i="spriteimage.building.light.red.4px.02" d="5"/>
+ <frame i="spriteimage.building.light.red.4px.01" d="6"/>
+ <frame i="spriteimage.building.light.red.4px.02" d="5"/>
+ <frame i="spriteimage.building.light.red.4px.03" d="4"/>
+ <frame i="spriteimage.building.light.red.4px.04" d="3"/>
+ <alpha alpha="128" d="3"/>
+ <alpha alpha="64" d="4"/>
+ <alpha alpha="32" d="5"/>
+ <goto seq="1"/>
+ </animation>
+
+ <animation name="building.light.red.5px.phase.animation">
+ <goto seq="9"/>
+ <alpha alpha="32" d="5"/>
+ <alpha alpha="64" d="4"/>
+ <alpha alpha="128" d="3"/>
+ <alpha alpha="255" d="0"/>
+ <frame i="spriteimage.building.light.red.5px.04" d="3"/>
+ <frame i="spriteimage.building.light.red.5px.03" d="4"/>
+ <frame i="spriteimage.building.light.red.5px.02" d="5"/>
+ <frame i="spriteimage.building.light.red.5px.01" d="6"/>
+ <frame i="spriteimage.building.light.red.5px.02" d="5"/>
+ <frame i="spriteimage.building.light.red.5px.03" d="4"/>
+ <frame i="spriteimage.building.light.red.5px.04" d="3"/>
+ <alpha alpha="128" d="3"/>
+ <alpha alpha="64" d="4"/>
+ <alpha alpha="32" d="5"/>
+ <goto seq="1"/>
+ </animation>
+
+ <animation name="building.light.white.3px.blink.animation">
+ <alpha alpha="255" d="0"/>
+ <frame i="spriteimage.building.light.white.3px.02" d="2"/>
+ <frame i="spriteimage.building.light.white.3px.01" d="4"/>
+ <frame i="spriteimage.building.light.white.3px.02" d="2"/>
+ <frame i="spriteimage.building.light.white.3px.03" d="3"/>
+ <frame i="spriteimage.building.light.white.3px.04" d="4"/>
+ <alpha alpha="128" d="6"/>
+ <alpha alpha="64" d="8"/>
+ <alpha alpha="32" d="25"/>
+ <goto seq="0"/>
+ </animation>
+ <animation name="building.light.white.3px.blink.2.animation">
+ <frame i="spriteimage.building.light.white.3px.04" d="0"/>
+ <alpha alpha="64" d="2"/>
+ <alpha alpha="32" d="25"/>
+ <alpha alpha="255" d="0"/>
+ <frame i="spriteimage.building.light.white.3px.02" d="2"/>
+ <frame i="spriteimage.building.light.white.3px.01" d="4"/>
+ <frame i="spriteimage.building.light.white.3px.02" d="2"/>
+ <frame i="spriteimage.building.light.white.3px.03" d="3"/>
+ <frame i="spriteimage.building.light.white.3px.04" d="4"/>
+ <alpha alpha="128" d="6"/>
+ <alpha alpha="64" d="6"/>
+ <goto seq="1"/>
+ </animation>
+
+ <animation name="building.light.white.4px.blink.animation">
+ <alpha alpha="255" d="0"/>
+ <frame i="spriteimage.building.light.white.4px.02" d="2"/>
+ <frame i="spriteimage.building.light.white.4px.01" d="4"/>
+ <frame i="spriteimage.building.light.white.4px.02" d="2"/>
+ <frame i="spriteimage.building.light.white.4px.03" d="3"/>
+ <frame i="spriteimage.building.light.white.4px.04" d="4"/>
+ <alpha alpha="128" d="6"/>
+ <alpha alpha="64" d="8"/>
+ <alpha alpha="32" d="25"/>
+ <goto seq="0"/>
+ </animation>
+
+
+ <animation name="building.light.white.3px.phase.animation">
+ <goto seq="9"/>
+ <alpha alpha="0" d="54"/>
+ <alpha alpha="32" d="5"/>
+ <alpha alpha="64" d="4"/>
+ <alpha alpha="128" d="3"/>
+ <alpha alpha="255" d="0"/>
+ <frame i="spriteimage.building.light.white.3px.04" d="3"/>
+ <frame i="spriteimage.building.light.white.3px.03" d="4"/>
+ <frame i="spriteimage.building.light.white.3px.02" d="5"/>
+ <frame i="spriteimage.building.light.white.3px.01" d="6"/>
+ <frame i="spriteimage.building.light.white.3px.02" d="5"/>
+ <frame i="spriteimage.building.light.white.3px.03" d="4"/>
+ <frame i="spriteimage.building.light.white.3px.04" d="3"/>
+ <alpha alpha="128" d="3"/>
+ <alpha alpha="64" d="4"/>
+ <alpha alpha="32" d="5"/>
+ <goto seq="1"/>
+ </animation>
+
+ <animation name="building.light.white.5px.phase.animation">
+ <goto seq="9"/>
+ <alpha alpha="32" d="5"/>
+ <alpha alpha="64" d="4"/>
+ <alpha alpha="128" d="3"/>
+ <alpha alpha="255" d="0"/>
+ <frame i="spriteimage.building.light.white.5px.04" d="3"/>
+ <frame i="spriteimage.building.light.white.5px.03" d="4"/>
+ <frame i="spriteimage.building.light.white.5px.02" d="5"/>
+ <frame i="spriteimage.building.light.white.5px.01" d="6"/>
+ <frame i="spriteimage.building.light.white.5px.02" d="5"/>
+ <frame i="spriteimage.building.light.white.5px.03" d="4"/>
+ <frame i="spriteimage.building.light.white.5px.04" d="3"/>
+ <alpha alpha="128" d="3"/>
+ <alpha alpha="64" d="4"/>
+ <alpha alpha="32" d="5"/>
+ <goto seq="1"/>
+ </animation>
+
+ <animation name="building.light.white.5px.blink.animation">
+ <alpha alpha="255" d="0"/>
+ <frame i="spriteimage.building.light.white.5px.02" d="2"/>
+ <frame i="spriteimage.building.light.white.5px.01" d="4"/>
+ <frame i="spriteimage.building.light.white.5px.02" d="2"/>
+ <frame i="spriteimage.building.light.white.5px.03" d="3"/>
+ <frame i="spriteimage.building.light.white.5px.04" d="4"/>
+ <alpha alpha="128" d="6"/>
+ <alpha alpha="64" d="8"/>
+ <alpha alpha="32" d="25"/>
+ <goto seq="0"/>
+ </animation>
+
+ <animation name="building.light.white.5px.blink.2.animation">
+ <frame i="spriteimage.building.light.white.5px.04" d="0"/>
+ <alpha alpha="64" d="2"/>
+ <alpha alpha="32" d="25"/>
+ <alpha alpha="255" d="0"/>
+ <frame i="spriteimage.building.light.white.5px.02" d="2"/>
+ <frame i="spriteimage.building.light.white.5px.01" d="4"/>
+ <frame i="spriteimage.building.light.white.5px.02" d="2"/>
+ <frame i="spriteimage.building.light.white.5px.03" d="3"/>
+ <frame i="spriteimage.building.light.white.5px.04" d="4"/>
+ <alpha alpha="128" d="6"/>
+ <alpha alpha="64" d="6"/>
+ <goto seq="1"/>
+ </animation>
+
+ <animation name="building.light.white.7px.blink.animation">
+ <alpha alpha="255" d="0"/>
+ <frame i="spriteimage.building.light.white.7px.02" d="2"/>
+ <frame i="spriteimage.building.light.white.7px.01" d="4"/>
+ <frame i="spriteimage.building.light.white.7px.02" d="2"/>
+ <frame i="spriteimage.building.light.white.7px.03" d="3"/>
+ <frame i="spriteimage.building.light.white.7px.04" d="4"/>
+ <alpha alpha="128" d="6"/>
+ <alpha alpha="64" d="8"/>
+ <alpha alpha="32" d="25"/>
+ <goto seq="0"/>
+ </animation>
+
+
+
+ <animation name="light.flash.animation">
+ <alpha alpha="64"/>
+ <scale scale="+-0.5" d="2"/>
+ <alpha alpha="128"/>
+ <scale scale="+0.5" d="4"/>
+ <alpha alpha="+-64" d="2"/>
+ <scale scale="+-0.2" />
+ <alpha alpha="+-32" d="3"/>
+ <scale scale="+-0.1" />
+ <alpha alpha="+-16" d="4"/>
+ <scale scale="+-0.1" />
+ <alpha alpha="+-8" d="6"/>
+ <scale scale="+-0.1" />
+ <alpha alpha="+-4" d="8"/>
+ <alpha alpha="0" d="25"/>
+ <scale scale="+0.5" d="0"/>
+ <goto seq="0"/>
+ </animation>
+
+
+ <animation name="light.red.flash.animation">
+ <alpha alpha="0"/>
+ <frame i="spriteimage.light.red.64px.01" d="0" />
+ <frame i="light.flash.animation" d="1" />
+ </animation>
+
+ <animation name="light.cyan.flash.animation">
+ <alpha alpha="0"/>
+ <frame i="spriteimage.light.cyan.64px.01" d="0" />
+ <frame i="light.flash.animation" d="1" />
+ </animation>
+
+ <animation name="light.cyan.flash.large.animation">
+ <scale scale="2.0"/>
+ <frame i="light.cyan.flash.animation" d="1" />
+ </animation>
+
+
+ <animation name="light.red.sweep.animation">
+ <frame i="spriteimage.building.light.sweep.red.01" d="24" />
+ <frame i="spriteimage.building.light.sweep.red.02" d="3"/>
+ <frame i="spriteimage.building.light.sweep.red.03" d="3"/>
+ <frame i="spriteimage.building.light.sweep.red.04" d="3"/>
+ <frame i="spriteimage.building.light.sweep.red.05" d="24"/>
+ <frame i="spriteimage.building.light.sweep.red.06" d="3"/>
+ <frame i="spriteimage.building.light.sweep.red.07" d="3"/>
+ <frame i="spriteimage.building.light.sweep.red.08" d="3"/>
+ <goto seq="0"/>
+ </animation>
+
+
+ <animation name="searchlight.pulse.animation">
+
+ <loop count="10"/>
+ <scale xscale="+-0.01" yscale="+-0.005"/>
+ <alpha alpha="+-4" d="2"/>
+ <followplayer rate="4096"/>
+ <repeat seq="1"/>
+
+ <loop count="10"/>
+ <scale xscale="+0.01" yscale="+0.005"/>
+ <alpha alpha="+4" d="2"/>
+ <followplayer rate="4096"/>
+ <repeat seq="6"/>
+
+ <goto seq="0"/>
+ </animation>
+
+ <animation name="searchlight.red.animation">
+ <scale xscale="1.0" yscale="0.25"/>
+ <alpha alpha="100"/>
+ <frame i="spriteimage.searchlight.red.light.01" d="1"/>
+ <frame i="searchlight.pulse.animation" d="1"/>
+ </animation>
+
+ <animation name="beam.phase.animation">
+ <loop count="10"/>
+ <scale xscale="+-0.01" yscale="+-0.005"/>
+ <alpha alpha="+-4" d="2"/>
+ <repeat seq="1"/>
+
+ <loop count="10"/>
+ <scale xscale="+0.01" yscale="+0.005"/>
+ <alpha alpha="+4" d="2"/>
+ <repeat seq="5"/>
+
+ <goto seq="0"/>
+ </animation>
+
+ <animation name="pool.bubble.anim">
+ <frame i="spriteimage.pool.bubble.01" d="48" />
+ <frame i="spriteimage.pool.bubble.02" d="6" />
+ <frame i="spriteimage.pool.bubble.03" d="6" />
+ <frame i="spriteimage.pool.bubble.04" d="6" />
+ <frame i="spriteimage.pool.bubble.05" d="6" />
+ <frame i="spriteimage.pool.bubble.06" d="6" />
+ <frame i="spriteimage.pool.bubble.07" d="6" />
+ <frame i="spriteimage.pool.bubble.08" d="6" />
+ <frame i="spriteimage.pool.bubble.09" d="6" />
+ </animation>
+
+
+
+
+</resources> \ No newline at end of file
diff --git a/src/buildings-earth.xml b/src/buildings-earth.xml
new file mode 100644
index 0000000..60e9c0d
--- /dev/null
+++ b/src/buildings-earth.xml
@@ -0,0 +1,502 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!--
+ Copyright (c) 2003-onwards Shaven Puppy Ltd
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of 'Shaven Puppy' nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<!-- Earth Buildings -->
+<resources>
+
+ <!-- Load all the tags -->
+ <include resource="tags.xml" />
+
+
+ <animation name="earth.base.radar.animation">
+ <frame i="spriteimage.earth.base.radar.01" d="4"/>
+ <frame i="spriteimage.earth.base.radar.02" d="4"/>
+ <frame i="spriteimage.earth.base.radar.03" d="4"/>
+ <frame i="spriteimage.earth.base.radar.04" d="4"/>
+ <frame i="spriteimage.earth.base.radar.05" d="4"/>
+ <frame i="spriteimage.earth.base.radar.06" d="4"/>
+ <frame i="spriteimage.earth.base.radar.07" d="4"/>
+ <frame i="spriteimage.earth.base.radar.08" d="4"/>
+ <frame i="spriteimage.earth.base.radar.09" d="4"/>
+ <frame i="spriteimage.earth.base.radar.10" d="4"/>
+ <goto seq="0"/>
+ </animation>
+
+ <animation name="earth.base.sweep.glow.animation">
+ <frame i="spriteimage.earth.base.sweep.glow.01" d="30" />
+ <frame i="spriteimage.earth.base.sweep.glow.02" d="4"/>
+ <frame i="spriteimage.earth.base.sweep.glow.03" d="4"/>
+ <frame i="spriteimage.earth.base.sweep.glow.04" d="4"/>
+ <frame i="spriteimage.earth.base.sweep.glow.05" d="30"/>
+ <frame i="spriteimage.earth.base.sweep.glow.06" d="4"/>
+ <frame i="spriteimage.earth.base.sweep.glow.07" d="4"/>
+ <frame i="spriteimage.earth.base.sweep.glow.08" d="4"/>
+ <goto seq="0"/>
+ </animation>
+
+ <animation name="earth.base.glow.1.animation">
+ <frame i="spriteimage.earth.base.glow.01" d="12"/>
+ </animation>
+ <!-- <animation name="earth.base.glow.2.animation">
+ <alpha alpha="255" d="0"/>
+ <frame i="spriteimage.earth.base.glow.05" d="25"/>
+ <frame i="spriteimage.earth.base.glow.06" d="2"/>
+ <frame i="spriteimage.earth.base.glow.07" d="3"/>
+ <frame i="spriteimage.earth.base.glow.08" d="4"/>
+ <alpha alpha="128" d="6"/>
+ <alpha alpha="64" d="8"/>
+ <alpha alpha="32" d="50"/>
+ <goto seq="0"/>
+ </animation> -->
+
+ <animation name="earth.base.dead.animation">
+ <frame i="spriteimage.earth.base.02" d="0"/>
+ <frame i="building.5x5.dead.anim" d="1"/>
+ </animation>
+ <animation name="earth.base.dead.ground.animation">
+ <frame i="spriteimage.earth.base.ground.01" d="0"/>
+ <frame i="building.5x5.dead.misc.anim" d="1"/>
+ </animation>
+
+
+
+
+ <instance
+ class="worm.buildings.BaseBuildingFeature"
+ name="building.earth.base"
+ inherit="base.building.spec"
+ floor="6.0"
+ offset="=$5x5offsetX,$5x5offsetY"
+ flamesOffset="=$5x5xFire,$5x5yFloor*0.5"
+ flamesEmitter="damaged.building.5x5.fire.emitter"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" image="spriteimage.generic.5x5.base.01"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.earth.base.ground.01"/>
+ <sprite layer="5" sublayer="1" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.earth.base.back.01"/>
+ <sprite layer="5" sublayer="1" offset="0,0" attenuated="true" colored="buildings" animation="earth.base.radar.animation"/>
+ <emitter offset="85,10" ySortOffset="85" emitter="steam.emitter"/>
+ <sprite layer="5" sublayer="3" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.earth.base.01"/>
+ <sprite layer="5" sublayer="4" offset="0,0" attenuated="false" colored="buildings-alt" image="spriteimage.earth.base.top.01"/>
+
+ <sprite layer="5" sublayer="5" offset="0,0" animation="earth.base.sweep.glow.animation"/>
+ <sprite layer="5" sublayer="5" offset="0,0" animation="earth.base.glow.1.animation"/>
+ <sprite layer="5" sublayer="5" offset="7,79" animation="building.light.white.7px.blink.animation"/>
+ <sprite layer="5" sublayer="5" offset="7,79" animation="light.cyan.flash.large.animation"/>
+ </layers>
+ </appearance>
+
+ <deathAppearance>
+ <layers scale="0.5">
+ <!-- first sprite contains important event=1 to remove building -->
+ <sprite layer="5" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="earth.base.dead.animation"/>
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" animation="building.5x5.dead.base.anim"/>
+ <sprite layer="4" sublayer="2" offset="0,0" attenuated="true" colored="shadow" animation="earth.base.dead.ground.animation"/>
+ <sprite layer="5" sublayer="3" offset="0,0" attenuated="false" colored="buildings-alt" animation="earth.base.dead.top.animation"/>
+ <emitter offset="=$5x5x,0" ySortOffset="=$5x5yExplode" emitter="building.5x5.explosion.start.emitter"/>
+ <emitter offset="=$5x5x,0" ySortOffset="=$5x5yExplode" emitter="building.5x5.explosion.end.emitter"/>
+ <emitter offset="=$5x5xFire,$5x5yFloor" ySortOffset="0" emitter="building.5x5.fire.emitter"/>
+ <emitter offset="=$5x5x,0" ySortOffset="=$5x5ySparks" emitter="building.5x5.explosion.sparks.emitter"/>
+ <emitter offset="=$5x5x,0" ySortOffset="=$5x5yExplode" emitter="building.5x5.explosion.flash.emitter"/>
+ <!-- <emitter offset="=$5x5x,0" ySortOffset="=$5x5y" emitter="test.coords.emitter"/> -->
+ </layers>
+ </deathAppearance>
+ <shieldedAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="shield.5x5.animation"/>
+ <emitter offset="=$5x5x,$5x5y" emitter="shield.5x5.emitter"/>
+ <emitter offset="=$5x5x,0" ySortOffset="=$5x5y" emitter="shield.sparkle.5x5.emitter"/>
+ </layers>
+ </shieldedAppearance>
+ <forcefieldAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="forcefield.5x5.animation"/>
+ <emitter offset="=$5x5x,0" ySortOffset="=$5x5y" emitter="forcefield.sparkle.5x5.emitter"/>
+ </layers>
+ </forcefieldAppearance>
+ </instance>
+
+
+
+ <!-- Obstacles -->
+
+
+
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="earth.vehicle.master"
+ hitpoints="2"
+ bounds="0,0,8,8"
+ floor="-4"
+ >
+ <deathAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" animation="obstacle.dead.animation"/>
+ <emitter offset="8,0" ySortOffset="8" emitter="obstacle.explosion.emitter"/>
+ <emitter offset="2,0" ySortOffset="2" emitter="obstacle.explosion.fire.emitter"/>
+ </layers>
+ </deathAppearance>
+ </instance>
+
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="earth.tree.master"
+ hitpoints="1"
+ bounds="0,0,8,8"
+ floor="-4"
+ >
+ <deathAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" animation="obstacle.dead.animation"/>
+ <emitter offset="8,0" ySortOffset="8" emitter="obstacle.explosion.emitter"/>
+ <emitter offset="2,0" ySortOffset="2" emitter="obstacle.explosion.fire.emitter"/>
+ </layers>
+ </deathAppearance>
+ </instance>
+
+
+
+
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="earth.vehicle.1"
+ inherit="earth.vehicle.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.earth.obstacle.1.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-vehicle" attenuated="true" image="spriteimage.earth.obstacle.1.01" />
+ </layers>
+ </appearance>
+ </instance>
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="earth.vehicle.2"
+ inherit="earth.vehicle.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.earth.obstacle.1.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-vehicle" attenuated="true" image="spriteimage.earth.obstacle.1.02" />
+ </layers>
+ </appearance>
+ </instance>
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="earth.vehicle.3"
+ inherit="earth.vehicle.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.earth.obstacle.1.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-vehicle" attenuated="true" image="spriteimage.earth.obstacle.1.03" />
+ </layers>
+ </appearance>
+ </instance>
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="earth.vehicle.4"
+ inherit="earth.vehicle.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.earth.obstacle.1.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-vehicle" attenuated="true" image="spriteimage.earth.obstacle.1.04" />
+ </layers>
+ </appearance>
+ </instance>
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="earth.vehicle.5"
+ inherit="earth.vehicle.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.earth.obstacle.1.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-vehicle" attenuated="true" image="spriteimage.earth.obstacle.1.05" />
+ </layers>
+ </appearance>
+ </instance>
+
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="earth.vehicle.burning.1"
+ inherit="earth.vehicle.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.earth.obstacle.1.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-vehicle" attenuated="true" image="spriteimage.earth.obstacle.1.01" />
+ <emitter offset="4,0" ySortOffset="4" emitter="ruins.small.fire.emitter"/>
+ </layers>
+ </appearance>
+ </instance>
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="earth.vehicle.burning.2"
+ inherit="earth.vehicle.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="3" colored="shadow" attenuated="true" image="spriteimage.earth.obstacle.1.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-vehicle" attenuated="true" image="spriteimage.earth.obstacle.1.02" />
+ <emitter offset="4,0" ySortOffset="4" emitter="ruins.small.fire.emitter"/>
+ </layers>
+ </appearance>
+ </instance>
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="earth.vehicle.burning.3"
+ inherit="earth.vehicle.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.earth.obstacle.1.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-vehicle" attenuated="true" image="spriteimage.earth.obstacle.1.03" />
+ <emitter offset="4,0" ySortOffset="4" emitter="ruins.small.fire.emitter"/>
+ </layers>
+ </appearance>
+ </instance>
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="earth.vehicle.burning.4"
+ inherit="earth.vehicle.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.earth.obstacle.1.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-vehicle" attenuated="true" image="spriteimage.earth.obstacle.1.04" />
+ <emitter offset="4,0" ySortOffset="4" emitter="ruins.small.fire.emitter"/>
+ </layers>
+ </appearance>
+ </instance>
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="earth.vehicle.burning.5"
+ inherit="earth.vehicle.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.earth.obstacle.1.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-vehicle" attenuated="true" image="spriteimage.earth.obstacle.1.05" />
+ <emitter offset="4,0" ySortOffset="4" emitter="ruins.small.fire.emitter"/>
+ </layers>
+ </appearance>
+ </instance>
+
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="earth.cactus.1"
+ inherit="earth.tree.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.earth.obstacle.2.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-tree" attenuated="true" image="spriteimage.earth.obstacle.2.01" />
+ </layers>
+ </appearance>
+ </instance>
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="earth.cactus.2"
+ inherit="earth.tree.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.earth.obstacle.2.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-tree" attenuated="true" image="spriteimage.earth.obstacle.2.02" />
+ </layers>
+ </appearance>
+ </instance>
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="earth.cactus.3"
+ inherit="earth.tree.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.earth.obstacle.2.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-tree" attenuated="true" image="spriteimage.earth.obstacle.2.03" />
+ </layers>
+ </appearance>
+ </instance>
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="earth.cactus.4"
+ inherit="earth.tree.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.earth.obstacle.2.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-tree" attenuated="true" image="spriteimage.earth.obstacle.2.04" />
+ </layers>
+ </appearance>
+ </instance>
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="earth.cactus.5"
+ inherit="earth.tree.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.earth.obstacle.2.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-tree" attenuated="true" image="spriteimage.earth.obstacle.2.05" />
+ </layers>
+ </appearance>
+ </instance>
+
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="earth.tree.1"
+ inherit="earth.tree.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.earth.obstacle.3.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-tree" attenuated="true" image="spriteimage.earth.obstacle.3.01" />
+ </layers>
+ </appearance>
+ </instance>
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="earth.tree.2"
+ inherit="earth.tree.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.earth.obstacle.3.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-tree" attenuated="true" image="spriteimage.earth.obstacle.3.02" />
+ </layers>
+ </appearance>
+ </instance>
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="earth.tree.3"
+ inherit="earth.tree.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.earth.obstacle.3.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-tree" attenuated="true" image="spriteimage.earth.obstacle.3.03" />
+ </layers>
+ </appearance>
+ </instance>
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="earth.tree.4"
+ inherit="earth.tree.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.earth.obstacle.3.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-tree" attenuated="true" image="spriteimage.earth.obstacle.3.04" />
+ </layers>
+ </appearance>
+ </instance>
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="earth.tree.5"
+ inherit="earth.tree.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.earth.obstacle.3.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-tree" attenuated="true" image="spriteimage.earth.obstacle.3.05" />
+ </layers>
+ </appearance>
+ </instance>
+
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="earth.pine.1"
+ inherit="earth.tree.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.earth.obstacle.4.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-tree" attenuated="true" image="spriteimage.earth.obstacle.4.01" />
+ </layers>
+ </appearance>
+ </instance>
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="earth.pine.2"
+ inherit="earth.tree.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.earth.obstacle.4.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-tree" attenuated="true" image="spriteimage.earth.obstacle.4.02" />
+ </layers>
+ </appearance>
+ </instance>
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="earth.pine.3"
+ inherit="earth.tree.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.earth.obstacle.4.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-tree" attenuated="true" image="spriteimage.earth.obstacle.4.03" />
+ </layers>
+ </appearance>
+ </instance>
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="earth.pine.4"
+ inherit="earth.tree.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.earth.obstacle.4.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-tree" attenuated="true" image="spriteimage.earth.obstacle.4.04" />
+ </layers>
+ </appearance>
+ </instance>
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="earth.pine.5"
+ inherit="earth.tree.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.earth.obstacle.4.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-tree" attenuated="true" image="spriteimage.earth.obstacle.4.05" />
+ </layers>
+ </appearance>
+ </instance>
+
+
+</resources>
diff --git a/src/buildings-generic.xml b/src/buildings-generic.xml
new file mode 100644
index 0000000..1d2e374
--- /dev/null
+++ b/src/buildings-generic.xml
@@ -0,0 +1,4108 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!--
+ Copyright (c) 2003-onwards Shaven Puppy Ltd
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of 'Shaven Puppy' nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<!-- Generic Buildings -->
+<resources>
+
+ <!-- Load all the tags -->
+ <include resource="tags.xml" />
+
+
+
+
+ <!-- FACTORY -->
+
+ <animation name="generic.factory.animation">
+ <frame i="spriteimage.generic.factory.05" d="16"/>
+ <frame i="spriteimage.generic.factory.04" d="2"/>
+ <frame i="spriteimage.generic.factory.03" d="3"/>
+ <frame i="spriteimage.generic.factory.02" d="4"/>
+ <frame i="spriteimage.generic.factory.01" d="16"/>
+ <frame i="spriteimage.generic.factory.03" d="2"/>
+ <frame i="spriteimage.generic.factory.05" d="16"/>
+ <frame i="spriteimage.generic.factory.09" d="2"/>
+ <frame i="spriteimage.generic.factory.08" d="3"/>
+ <frame i="spriteimage.generic.factory.07" d="4"/>
+ <frame i="spriteimage.generic.factory.06" d="16"/>
+ <frame i="spriteimage.generic.factory.08" d="2"/>
+ <goto seq="0"/>
+ </animation>
+
+ <!--
+ <animation name="generic.factory.glow.animation">
+ <animcolor a="25" d="0"/>
+ <frame i="spriteimage.building.light.white.5px.04" d="16"/>
+ <animcolor a="128" d="3"/>
+ <animcolor a="255" d="3"/>
+ <frame i="spriteimage.building.light.white.5px.03" d="3"/>
+ <frame i="spriteimage.building.light.white.5px.02" d="3"/>
+ <frame i="spriteimage.building.light.white.5px.01" d="4"/>
+ <goto seq="0"/>
+ </animation>
+ -->
+
+ <animation name="generic.factory.glow.zap.animation">
+ <frame i="spriteimage.generic.factory.glow.01" d="1"/>
+ </animation>
+ <animation name="generic.factory.glow.collect.animation">
+ <loop count="5"/>
+ <animcolor a="+-25" d="2"/>
+ <repeat seq="1"/>
+ <animcolor a="0" d="16"/>
+ <animcolor a="255" d="0"/>
+ <frame i="spriteimage.generic.factory.glow.05" d="11"/>
+ <frame i="spriteimage.generic.factory.glow.04" d="5"/>
+ <frame i="spriteimage.generic.factory.glow.03" d="4"/>
+ <frame i="spriteimage.generic.factory.glow.02" d="6"/>
+ <frame i="spriteimage.generic.factory.glow.03" d="2"/>
+ <frame i="spriteimage.generic.factory.glow.04" d="2"/>
+ <frame i="spriteimage.generic.factory.glow.05" d="2"/>
+ <loop count="5"/>
+ <animcolor a="+-25" d="2"/>
+ <repeat seq="13"/>
+ <goto seq="0"/>
+ </animation>
+ <animation name="generic.factory.glow.shutdown.animation">
+ <loop count="5"/>
+ <animcolor a="+-25" d="2"/>
+ <repeat seq="1"/>
+ <animcolor a="0" d="16"/>
+ <animcolor a="255" d="0"/>
+ <frame i="spriteimage.generic.factory.glow.09" d="11"/>
+ <frame i="spriteimage.generic.factory.glow.08" d="5"/>
+ <frame i="spriteimage.generic.factory.glow.07" d="4"/>
+ <frame i="spriteimage.generic.factory.glow.06" d="6"/>
+ <frame i="spriteimage.generic.factory.glow.07" d="2"/>
+ <frame i="spriteimage.generic.factory.glow.08" d="2"/>
+ <frame i="spriteimage.generic.factory.glow.09" d="2"/>
+ <loop count="5"/>
+ <animcolor a="+-25" d="2"/>
+ <repeat seq="13"/>
+ <goto seq="0"/>
+ </animation>
+
+
+ <animation name="generic.factory.off.animation">
+ <frame i="spriteimage.generic.factory.10" d="1"/>
+ </animation>
+
+
+ <animation name="generic.factory.dead.animation">
+ <frame i="spriteimage.generic.factory.11" d="1"/>
+ <frame i="building.4x4.dead.anim" d="1"/>
+ </animation>
+ <animation name="generic.factory.dead.ground.animation">
+ <frame i="spriteimage.generic.factory.ground.02" d="1"/>
+ <frame i="building.4x4.dead.misc.anim" d="1"/>
+ </animation>
+ <animation name="generic.factory.dead.top.animation">
+ <frame i="spriteimage.generic.factory.top.01" d="1"/>
+ <frame i="building.4x4.dead.misc.anim" d="1"/>
+ </animation>
+
+
+ <animation name="generic.factory.collect.back.animation">
+ <frame i="spriteimage.money.collect.back.01" d="32"/>
+ <loop count="10"/>
+ <animcolor a="+-25" d="2"/>
+ <repeat seq="2"/>
+ <animcolor a="0" d="16"/>
+ <animcolor a="255" d="0"/>
+ <goto seq="0"/>
+ </animation>
+
+
+
+ <!-- SMALL BUILDINGS -->
+
+
+ <animation name="generic.cooling.animation">
+ <frame i="spriteimage.generic.cooling.03" d="1"/>
+ <frame i="spriteimage.generic.cooling.05" d="68"/>
+ <frame i="spriteimage.generic.cooling.04" d="3"/>
+ <frame i="spriteimage.generic.cooling.03" d="3"/>
+ <frame i="spriteimage.generic.cooling.01" d="4"/>
+ <frame i="spriteimage.generic.cooling.02" d="5"/>
+ <frame i="spriteimage.generic.cooling.01" d="76"/>
+ <frame i="spriteimage.generic.cooling.02" d="10"/>
+ <goto seq="0"/>
+ </animation>
+ <animation name="generic.cooling.back.animation">
+ <frame i="spriteimage.generic.cooling.back.03" d="1"/>
+ <frame i="spriteimage.generic.cooling.back.05" d="68"/>
+ <frame i="spriteimage.generic.cooling.back.04" d="3"/>
+ <frame i="spriteimage.generic.cooling.back.03" d="3"/>
+ <frame i="spriteimage.generic.cooling.back.01" d="4"/>
+ <frame i="spriteimage.generic.cooling.back.02" d="5"/>
+ <frame i="spriteimage.generic.cooling.back.01" d="76"/>
+ <frame i="spriteimage.generic.cooling.back.02" d="10"/>
+ <goto seq="0"/>
+ </animation>
+ <animation name="generic.cooling.top.animation">
+ <frame i="spriteimage.generic.cooling.top.03" d="1"/>
+ <frame i="spriteimage.generic.cooling.top.05" d="68"/>
+ <frame i="spriteimage.generic.cooling.top.04" d="3"/>
+ <frame i="spriteimage.generic.cooling.top.03" d="3"/>
+ <frame i="spriteimage.generic.cooling.top.01" d="4"/>
+ <frame i="spriteimage.generic.cooling.top.02" d="5"/>
+ <frame i="spriteimage.generic.cooling.top.01" d="76"/>
+ <frame i="spriteimage.generic.cooling.top.02" d="10"/>
+ <goto seq="0"/>
+ </animation>
+
+ <animation name="generic.cooling.glow.charge.animation">
+
+ <animcolor a="0" d="20"/>
+ <frame i="spriteimage.generic.cooling.glow.01" d="17"/>
+
+ <loop count="15"/>
+ <animcolor a="+16" d="4"/>
+ <repeat seq="3"/>
+ <animcolor a="255" d="4"/>
+
+ <frame i="spriteimage.generic.cooling.glow.02" d="5"/>
+ <frame i="spriteimage.generic.cooling.glow.03" d="5"/>
+ <frame i="spriteimage.generic.cooling.glow.04" d="5"/>
+ <frame i="spriteimage.generic.cooling.glow.05" d="5"/>
+ <frame i="spriteimage.generic.cooling.glow.06" d="5"/>
+ <frame i="spriteimage.generic.cooling.glow.07" d="5"/>
+ <frame i="spriteimage.generic.cooling.glow.08" d="5"/>
+ <frame i="spriteimage.generic.cooling.glow.09" d="5"/>
+ <frame i="spriteimage.generic.cooling.glow.10" d="5"/>
+ <frame i="spriteimage.generic.cooling.glow.11" d="20"/>
+
+ <frame i="spriteimage.generic.cooling.glow.10" d="1"/>
+ <frame i="spriteimage.generic.cooling.glow.09" d="1"/>
+ <frame i="spriteimage.generic.cooling.glow.08" d="1"/>
+ <frame i="spriteimage.generic.cooling.glow.07" d="1"/>
+ <frame i="spriteimage.generic.cooling.glow.06" d="1"/>
+ <frame i="spriteimage.generic.cooling.glow.05" d="1"/>
+ <frame i="spriteimage.generic.cooling.glow.04" d="1"/>
+ <frame i="spriteimage.generic.cooling.glow.03" d="1"/>
+ <frame i="spriteimage.generic.cooling.glow.02" d="1"/>
+ <frame i="spriteimage.generic.cooling.glow.01" d="1"/>
+ <animcolor a="128" d="2"/>
+ <animcolor a="64" d="2"/>
+ <animcolor a="0" d="10"/>
+ <goto seq="1"/>
+ </animation>
+
+ <animation name="generic.cooling.glow.release.animation">
+ <frame i="spriteimage.building.light.white.4px.03" d="2"/>
+ <frame i="spriteimage.building.light.white.4px.01" d="25"/>
+ <frame i="spriteimage.building.light.white.4px.02" d="4"/>
+ <frame i="spriteimage.building.light.white.4px.03" d="4"/>
+ <frame i="spriteimage.building.light.white.4px.04" d="4"/>
+ <animcolor a="25" d="4"/>
+ <frame i="spriteimage.building.light.white.4px.04" d="127"/>
+ <animcolor a="255" d="0"/>
+ <goto seq="0"/>
+ </animation>
+
+
+ <animation name="generic.cooling.dead.animation">
+ <frame i="spriteimage.generic.cooling.06" d="0"/>
+ <frame i="building.2x2.dead.anim" d="1"/>
+ </animation>
+ <animation name="generic.cooling.dead.ground.animation">
+ <frame i="spriteimage.generic.cooling.ground.01" d="0"/>
+ <frame i="building.2x2.dead.misc.anim" d="1"/>
+ </animation>
+ <animation name="generic.cooling.dead.top.animation">
+ <frame i="spriteimage.generic.cooling.top.01" d="0"/>
+ <frame i="building.2x2.dead.misc.anim" d="1"/>
+ </animation>
+
+
+ <animation name="generic.battery.animation">
+ <frame i="spriteimage.generic.battery.01" d="1"/>
+ </animation>
+ <animation name="generic.battery.glow.animation">
+ <animcolor a="0" d="30"/>
+ <animcolor a="255" d="0"/>
+ <frame i="spriteimage.generic.battery.glow.01" d="5"/>
+ <frame i="spriteimage.generic.battery.glow.02" d="4"/>
+ <frame i="spriteimage.generic.battery.glow.03" d="3"/>
+ <frame i="spriteimage.generic.battery.glow.04" d="2"/>
+ <frame i="spriteimage.generic.battery.glow.05" d="2"/>
+ <frame i="spriteimage.generic.battery.glow.06" d="2"/>
+ <frame i="spriteimage.generic.battery.glow.07" d="3"/>
+ <frame i="spriteimage.generic.battery.glow.08" d="4"/>
+ <frame i="spriteimage.generic.battery.glow.09" d="5"/>
+ <frame i="spriteimage.generic.battery.glow.10" d="90"/>
+ <frame i="spriteimage.generic.battery.glow.11" d="5"/>
+ <frame i="spriteimage.generic.battery.glow.12" d="4"/>
+ <frame i="spriteimage.generic.battery.glow.13" d="3"/>
+ <frame i="spriteimage.generic.battery.glow.14" d="2"/>
+ <frame i="spriteimage.generic.battery.glow.15" d="2"/>
+ <frame i="spriteimage.generic.battery.glow.16" d="2"/>
+ <frame i="spriteimage.generic.battery.glow.17" d="2"/>
+ <frame i="spriteimage.generic.battery.glow.18" d="2"/>
+ <animcolor a="128" d="2"/>
+ <animcolor a="64" d="3"/>
+ <goto seq="0"/>
+ </animation>
+
+ <animation name="generic.battery.dead.animation">
+ <frame i="spriteimage.generic.battery.02" d="0"/>
+ <frame i="building.2x2.dead.anim" d="1"/>
+ </animation>
+ <animation name="generic.battery.dead.ground.animation">
+ <frame i="spriteimage.generic.battery.ground.01" d="0"/>
+ <frame i="building.2x2.dead.misc.anim" d="1"/>
+ </animation>
+
+
+ <animation name="generic.capacitor.animation">
+ <frame i="spriteimage.generic.capacitor.01" d="1"/>
+ </animation>
+ <animation name="generic.capacitor.glow.animation">
+ <random>
+ <dest seq="1"/>
+ <dest seq="3"/>
+ <dest seq="5"/>
+ <dest seq="7"/>
+ </random>
+ <frame i="spriteimage.generic.capacitor.glow.01" d="3"/>
+ <goto seq="0"/>
+ <frame i="spriteimage.generic.capacitor.glow.02" d="3"/>
+ <goto seq="0"/>
+ <frame i="spriteimage.generic.capacitor.glow.03" d="3"/>
+ <goto seq="0"/>
+ <frame i="spriteimage.generic.capacitor.glow.04" d="3"/>
+ <goto seq="0"/>
+ </animation>
+
+ <animation name="generic.capacitor.dead.animation">
+ <frame i="spriteimage.generic.capacitor.02" d="0"/>
+ <frame i="building.3x3.dead.anim" d="1"/>
+ </animation>
+ <animation name="generic.capacitor.dead.ground.animation">
+ <frame i="spriteimage.generic.capacitor.ground.01" d="0"/>
+ <frame i="building.3x3.dead.misc.anim" d="1"/>
+ </animation>
+
+
+
+ <animation name="generic.scanner.animation">
+ <frame i="spriteimage.generic.scanner.01" d="3"/>
+ <frame i="spriteimage.generic.scanner.02" d="4"/>
+ <frame i="spriteimage.generic.scanner.03" d="5"/>
+ <frame i="spriteimage.generic.scanner.04" d="6"/>
+ <frame i="spriteimage.generic.scanner.03" d="5"/>
+ <frame i="spriteimage.generic.scanner.02" d="4"/>
+ <goto seq="0"/>
+ </animation>
+
+ <animation name="generic.scanner.glow.animation">
+ <frame i="spriteimage.generic.scanner.glow.01" d="24" />
+ <frame i="spriteimage.generic.scanner.glow.02" d="3"/>
+ <frame i="spriteimage.generic.scanner.glow.03" d="3"/>
+ <frame i="spriteimage.generic.scanner.glow.04" d="3"/>
+ <frame i="spriteimage.generic.scanner.glow.05" d="24"/>
+ <frame i="spriteimage.generic.scanner.glow.06" d="3"/>
+ <frame i="spriteimage.generic.scanner.glow.07" d="3"/>
+ <frame i="spriteimage.generic.scanner.glow.08" d="3"/>
+ <goto seq="0"/>
+ </animation>
+
+ <animation name="generic.scanner.dead.animation">
+ <frame i="spriteimage.generic.scanner.05" d="0"/>
+ <frame i="building.2x2.dead.anim" d="1"/>
+ </animation>
+ <animation name="generic.scanner.dead.ground.animation">
+ <frame i="spriteimage.generic.scanner.ground.01" d="0"/>
+ <frame i="building.2x2.dead.misc.anim" d="1"/>
+ </animation>
+
+
+
+
+
+ <animation name="generic.warehouse.glow.animation">
+ <animcolor a="25" d="0"/>
+ <frame i="spriteimage.generic.warehouse.glow.04" d="16"/>
+ <animcolor a="128" d="3"/>
+ <animcolor a="255" d="3"/>
+ <frame i="spriteimage.generic.warehouse.glow.03" d="3"/>
+ <frame i="spriteimage.generic.warehouse.glow.02" d="3"/>
+ <frame i="spriteimage.generic.warehouse.glow.01" d="4"/>
+ <goto seq="0"/>
+ </animation>
+ <animation name="generic.warehouse.dead.animation">
+ <frame i="spriteimage.generic.warehouse.02" d="0"/>
+ <frame i="building.2x2.dead.anim" d="1"/>
+ </animation>
+ <animation name="generic.warehouse.dead.ground.animation">
+ <frame i="spriteimage.generic.warehouse.ground.01" d="0"/>
+ <frame i="building.2x2.dead.misc.anim" d="1"/>
+ </animation>
+
+
+
+ <animation name="generic.collector.animation">
+ <frame i="spriteimage.generic.collector.05" d="2"/>
+ <frame i="spriteimage.generic.collector.04" d="2"/>
+ <frame i="spriteimage.generic.collector.03" d="3"/>
+ <frame i="spriteimage.generic.collector.02" d="4"/>
+ <frame i="spriteimage.generic.collector.01" d="12"/>
+ <frame i="spriteimage.generic.collector.03" d="2"/>
+ <frame i="spriteimage.generic.collector.05" d="2"/>
+
+ <frame i="spriteimage.generic.collector.10" d="2"/>
+ <frame i="spriteimage.generic.collector.09" d="2"/>
+ <frame i="spriteimage.generic.collector.08" d="3"/>
+ <frame i="spriteimage.generic.collector.07" d="4"/>
+ <frame i="spriteimage.generic.collector.06" d="12"/>
+ <frame i="spriteimage.generic.collector.08" d="2"/>
+ <frame i="spriteimage.generic.collector.10" d="2"/>
+ <goto seq="0"/>
+ </animation>
+
+
+ <animation name="generic.collector.glow.animation">
+ <animcolor a="255" d="0"/>
+ <frame i="spriteimage.generic.collector.glow.01" d="5"/>
+ <frame i="spriteimage.generic.collector.glow.02" d="4"/>
+ <frame i="spriteimage.generic.collector.glow.03" d="3"/>
+ <frame i="spriteimage.generic.collector.glow.04" d="3"/>
+ <animcolor a="128" d="3"/>
+ <animcolor a="64" d="3"/>
+ <animcolor a="0" d="6"/>
+
+ <animcolor a="255" d="0"/>
+ <frame i="spriteimage.generic.collector.glow.05" d="5"/>
+ <frame i="spriteimage.generic.collector.glow.06" d="4"/>
+ <frame i="spriteimage.generic.collector.glow.07" d="3"/>
+ <frame i="spriteimage.generic.collector.glow.08" d="3"/>
+ <animcolor a="128" d="3"/>
+ <animcolor a="64" d="3"/>
+ <animcolor a="0" d="6"/>
+ <goto seq="0"/>
+ </animation>
+
+ <animation name="generic.collector.dead.animation">
+ <frame i="spriteimage.generic.collector.02" d="0"/>
+ <frame i="building.2x2.dead.anim" d="1"/>
+ </animation>
+ <animation name="generic.collector.dead.ground.animation">
+ <frame i="spriteimage.generic.collector.ground.01" d="0"/>
+ <frame i="building.2x2.dead.misc.anim" d="1"/>
+ </animation>
+
+
+
+ <animation name="generic.barracks.glow.animation">
+
+ <frame i="spriteimage.generic.barracks.glow.02" d="7"/>
+ <frame i="spriteimage.generic.barracks.glow.03" d="6"/>
+ <frame i="spriteimage.generic.barracks.glow.04" d="5"/>
+ <frame i="spriteimage.generic.barracks.glow.05" d="5"/>
+ <frame i="spriteimage.generic.barracks.glow.06" d="5"/>
+ <frame i="spriteimage.generic.barracks.glow.07" d="20"/>
+
+ <frame i="spriteimage.generic.barracks.glow.06" d="2"/>
+ <frame i="spriteimage.generic.barracks.glow.05" d="2"/>
+
+ <loop count="4"/>
+ <label id="loop1"/>
+ <frame i="spriteimage.generic.barracks.glow.08" d="2"/>
+ <frame i="spriteimage.generic.barracks.glow.09" d="2"/>
+ <repeat id="loop1"/>
+
+ <frame i="spriteimage.generic.barracks.glow.08" d="2"/>
+ <event id="1"/>
+ <frame i="spriteimage.generic.barracks.glow.09" d="2"/>
+
+ <loop count="4"/>
+ <label id="loop2"/>
+ <frame i="spriteimage.generic.barracks.glow.08" d="2"/>
+ <frame i="spriteimage.generic.barracks.glow.09" d="2"/>
+ <repeat id="loop2"/>
+
+ <frame i="spriteimage.generic.barracks.glow.08" d="2"/>
+ <frame i="spriteimage.generic.barracks.glow.09" d="3"/>
+ <frame i="spriteimage.generic.barracks.glow.10" d="4"/>
+ <frame i="spriteimage.generic.barracks.glow.11" d="5"/>
+ <event id="2"/>
+ <frame i="spriteimage.generic.barracks.glow.01" d="2"/>
+
+ </animation>
+
+ <animation name="generic.barracks.dead.animation">
+ <frame i="spriteimage.generic.barracks.02" d="0"/>
+ <frame i="building.4x4.dead.anim" d="1"/>
+ </animation>
+ <animation name="generic.barracks.dead.ground.animation">
+ <frame i="spriteimage.generic.barracks.ground.01" d="0"/>
+ <frame i="building.4x4.dead.misc.anim" d="1"/>
+ </animation>
+ <animation name="generic.barracks.dead.top.animation">
+ <frame i="spriteimage.generic.barracks.top.01" d="0"/>
+ <frame i="building.4x4.dead.misc.anim" d="1"/>
+ </animation>
+
+
+
+
+ <animation name="generic.decoy.animation">
+ <frame i="spriteimage.generic.decoy.01" d="25"/>
+ <frame i="spriteimage.generic.decoy.02" d="5"/>
+ <frame i="spriteimage.generic.decoy.03" d="4"/>
+ <frame i="spriteimage.generic.decoy.04" d="3"/>
+ <frame i="spriteimage.generic.decoy.05" d="2"/>
+ <frame i="spriteimage.generic.decoy.06" d="2"/>
+ <frame i="spriteimage.generic.decoy.07" d="2"/>
+ <frame i="spriteimage.generic.decoy.08" d="15"/>
+ <frame i="spriteimage.generic.decoy.09" d="6"/>
+
+ <frame i="spriteimage.generic.decoy.01" d="7"/>
+ <goto seq="0"/>
+ </animation>
+
+ <!-- 69 -->
+
+ <animation name="generic.decoy.glow.animation">
+
+ <frame i="spriteimage.generic.decoy.glow.01" d="7"/>
+ <frame i="spriteimage.generic.decoy.glow.02" d="3"/>
+ <frame i="spriteimage.generic.decoy.glow.03" d="4"/>
+ <frame i="spriteimage.generic.decoy.glow.04" d="5"/>
+ <animcolor a="128" d="6"/>
+ <animcolor a="0" d="46"/>
+ <animcolor a="255" d="0"/>
+
+ <goto seq="0"/>
+ </animation>
+
+ <animation name="generic.decoy.flash.animation">
+ <frame i="spriteimage.light.cyan.64px.01" d="0" />
+
+ <animcolor a="64"/>
+ <scale scale="1.5" d="2"/>
+
+ <animcolor a="128"/>
+ <scale scale="2" d="5"/>
+
+ <animcolor a="+-64" d="3"/>
+ <scale scale="+-0.2" />
+ <animcolor a="+-32" d="4"/>
+ <scale scale="+-0.1" />
+ <animcolor a="+-16" d="5"/>
+ <scale scale="+-0.1" />
+ <animcolor a="+-8" d="6"/>
+
+ <animcolor a="0" d="46"/>
+
+ <goto seq="1"/>
+ </animation>
+
+
+
+ <animation name="generic.decoy.dead.animation">
+ <frame i="spriteimage.generic.decoy.10" d="0"/>
+ <frame i="building.2x2.dead.anim" d="1"/>
+ </animation>
+ <animation name="generic.decoy.dead.ground.animation">
+ <frame i="spriteimage.generic.decoy.ground.01" d="0"/>
+ <frame i="building.2x2.dead.misc.anim" d="1"/>
+ </animation>
+
+
+
+ <!-- REACTOR AND TURRETS -->
+
+
+ <animation name="generic.autoloader.glow.animation">
+ <frame i="spriteimage.generic.autoloader.glow.01" d="6"/>
+ <frame i="spriteimage.generic.autoloader.glow.02" d="6"/>
+ <frame i="spriteimage.generic.autoloader.glow.03" d="6"/>
+ <frame i="spriteimage.generic.autoloader.glow.04" d="6"/>
+ <frame i="spriteimage.generic.autoloader.glow.05" d="6"/>
+ <frame i="spriteimage.generic.autoloader.glow.06" d="6"/>
+ <frame i="spriteimage.generic.autoloader.glow.07" d="6"/>
+ <frame i="spriteimage.generic.autoloader.glow.08" d="6"/>
+ <goto seq="0"/>
+ </animation>
+
+ <animation name="generic.autoloader.dead.animation">
+ <frame i="spriteimage.generic.autoloader.02" d="0"/>
+ <frame i="building.2x2.dead.anim" d="1"/>
+ </animation>
+ <animation name="generic.autoloader.dead.ground.animation">
+ <frame i="spriteimage.generic.autoloader.ground.01" d="0"/>
+ <frame i="building.2x2.dead.misc.anim" d="1"/>
+ </animation>
+
+
+
+ <animation name="generic.reactor.animation">
+ <frame i="spriteimage.generic.reactor.01" d="1"/>
+ </animation>
+ <animation name="generic.reactor.glow.animation">
+ <random>
+ <dest seq="1"/>
+ <dest seq="3"/>
+ <dest seq="5"/>
+ <dest seq="7"/>
+ </random>
+ <frame i="spriteimage.generic.reactor.glow.01" d="3"/>
+ <goto seq="0"/>
+ <frame i="spriteimage.generic.reactor.glow.02" d="3"/>
+ <goto seq="0"/>
+ <frame i="spriteimage.generic.reactor.glow.03" d="3"/>
+ <goto seq="0"/>
+ <frame i="spriteimage.generic.reactor.glow.04" d="3"/>
+ <goto seq="0"/>
+ </animation>
+
+ <animation name="generic.reactor.dead.animation">
+ <frame i="spriteimage.generic.reactor.02" d="0"/>
+ <frame i="building.3x3.dead.anim" d="1"/>
+ </animation>
+ <animation name="generic.reactor.dead.ground.animation">
+ <frame i="spriteimage.generic.reactor.ground.01" d="0"/>
+ <frame i="building.3x3.dead.misc.anim" d="1"/>
+ </animation>
+
+
+
+ <animation name="generic.shield.animation">
+ <frame i="spriteimage.generic.shield.01" d="1"/>
+ </animation>
+
+ <animation name="generic.shield.glow.animation">
+ <random>
+ <dest seq="1"/>
+ <dest seq="3"/>
+ <dest seq="5"/>
+ <dest seq="7"/>
+ </random>
+ <frame i="spriteimage.generic.shield.glow.01" d="3"/>
+ <goto seq="0"/>
+ <frame i="spriteimage.generic.shield.glow.02" d="3"/>
+ <goto seq="0"/>
+ <frame i="spriteimage.generic.shield.glow.03" d="3"/>
+ <goto seq="0"/>
+ <frame i="spriteimage.generic.shield.glow.04" d="3"/>
+ <goto seq="0"/>
+ </animation>
+
+ <animation name="generic.shield.dead.animation">
+ <frame i="spriteimage.generic.shield.02" d="0"/>
+ <frame i="building.2x2.dead.anim" d="1"/>
+ </animation>
+ <animation name="generic.shield.dead.ground.animation">
+ <frame i="spriteimage.generic.shield.ground.01" d="0"/>
+ <frame i="building.2x2.dead.misc.anim" d="1"/>
+ </animation>
+
+
+
+ <!-- TURRETS -->
+
+
+ <animation name="generic.tower.glow.animation">
+ <animcolor a="25" d="0"/>
+ <frame i="spriteimage.building.light.red.3px.04" d="12"/>
+ <animcolor a="255" d="0"/>
+ <frame i="spriteimage.building.light.red.3px.01" d="3"/>
+ <frame i="spriteimage.building.light.red.3px.02" d="3"/>
+ <frame i="spriteimage.building.light.red.3px.03" d="3"/>
+ <animcolor a="25" d="0"/>
+ <frame i="spriteimage.building.light.red.3px.04" d="12"/>
+ <goto seq="0"/>
+ </animation>
+ <animation name="generic.tower.sweep.animation">
+ <angle angle="32768"/>
+ <frame i="light.red.sweep.animation" d="1"/>
+ </animation>
+
+
+ <animation name="generic.tower.blaster.dead.animation">
+ <frame i="spriteimage.generic.tower.blaster.02" d="0"/>
+ <frame i="building.3x3.dead.anim" d="1"/>
+ </animation>
+ <animation name="generic.tower.blaster.dead.ground.animation">
+ <frame i="spriteimage.generic.tower.blaster.ground.01" d="0"/>
+ <frame i="building.3x3.dead.misc.anim" d="1"/>
+ </animation>
+
+ <animation name="generic.tower.heavyblaster.dead.animation">
+ <frame i="spriteimage.generic.tower.heavyblaster.02" d="0"/>
+ <frame i="building.3x3.dead.anim" d="1"/>
+ </animation>
+ <animation name="generic.tower.heavyblaster.dead.ground.animation">
+ <frame i="spriteimage.generic.tower.heavyblaster.ground.01" d="0"/>
+ <frame i="building.3x3.dead.misc.anim" d="1"/>
+ </animation>
+
+ <animation name="generic.tower.blastcannon.dead.animation">
+ <frame i="spriteimage.generic.tower.blastcannon.02" d="0"/>
+ <frame i="building.3x3.dead.anim" d="1"/>
+ </animation>
+ <animation name="generic.tower.blastcannon.dead.ground.animation">
+ <frame i="spriteimage.generic.tower.blastcannon.ground.01" d="0"/>
+ <frame i="building.3x3.dead.misc.anim" d="1"/>
+ </animation>
+
+ <animation name="generic.tower.multiblaster.dead.animation">
+ <frame i="spriteimage.generic.tower.multiblaster.02" d="0"/>
+ <frame i="building.3x3.dead.anim" d="1"/>
+ </animation>
+ <animation name="generic.tower.multiblaster.dead.ground.animation">
+ <frame i="spriteimage.generic.tower.multiblaster.ground.01" d="0"/>
+ <frame i="building.3x3.dead.misc.anim" d="1"/>
+ </animation>
+
+ <animation name="generic.tower.spreader.dead.animation">
+ <frame i="spriteimage.generic.tower.spreader.02" d="0"/>
+ <frame i="building.3x3.dead.anim" d="1"/>
+ </animation>
+ <animation name="generic.tower.spreader.dead.ground.animation">
+ <frame i="spriteimage.generic.tower.spreader.ground.01" d="0"/>
+ <frame i="building.3x3.dead.misc.anim" d="1"/>
+ </animation>
+
+ <animation name="generic.tower.assault.dead.animation">
+ <frame i="spriteimage.generic.tower.assault.02" d="0"/>
+ <frame i="building.4x4.dead.anim" d="1"/>
+ </animation>
+ <animation name="generic.tower.assault.dead.ground.animation">
+ <frame i="spriteimage.generic.tower.assault.ground.01" d="0"/>
+ <frame i="building.4x4.dead.misc.anim" d="1"/>
+ </animation>
+
+ <animation name="generic.tower.laser.dead.animation">
+ <frame i="spriteimage.generic.tower.laser.02" d="0"/>
+ <frame i="building.4x4.dead.anim" d="1"/>
+ </animation>
+ <animation name="generic.tower.laser.dead.ground.animation">
+ <frame i="spriteimage.generic.tower.laser.ground.01" d="0"/>
+ <frame i="building.4x4.dead.misc.anim" d="1"/>
+ </animation>
+
+ <animation name="generic.tower.rockets.dead.animation">
+ <frame i="spriteimage.generic.tower.rockets.02" d="0"/>
+ <frame i="building.4x4.dead.anim" d="1"/>
+ </animation>
+ <animation name="generic.tower.rockets.dead.ground.animation">
+ <frame i="spriteimage.generic.tower.rockets.ground.01" d="0"/>
+ <frame i="building.4x4.dead.misc.anim" d="1"/>
+ </animation>
+
+ <animation name="generic.tower.disruptor.dead.animation">
+ <frame i="spriteimage.generic.tower.disruptor.02" d="0"/>
+ <frame i="building.4x4.dead.anim" d="1"/>
+ </animation>
+ <animation name="generic.tower.disruptor.dead.ground.animation">
+ <frame i="spriteimage.generic.tower.disruptor.ground.01" d="0"/>
+ <frame i="building.4x4.dead.misc.anim" d="1"/>
+ </animation>
+
+
+
+ <!-- BARRICADES ========================================================================================== -->
+
+
+ <animation name="generic.barricade.concrete.dead.animation">
+ <frame i="spriteimage.generic.barricade.concrete.04" d="0"/>
+ <frame i="building.1x1.dead.anim" d="1"/>
+ </animation>
+ <animation name="generic.barricade.concrete.dead.ground.animation">
+ <frame i="spriteimage.generic.barricade.concrete.ground.01" d="0"/>
+ <frame i="building.1x1.dead.misc.anim" d="1"/>
+ </animation>
+ <animation name="generic.barricade.concrete.dead.top.animation">
+ <frame i="spriteimage.generic.barricade.concrete.top.04" d="0"/>
+ <frame i="building.1x1.dead.misc.anim" d="1"/>
+ </animation>
+
+ <animation name="generic.barricade.steel.dead.animation">
+ <frame i="spriteimage.generic.barricade.steel.05" d="0"/>
+ <frame i="building.1x1.dead.anim" d="1"/>
+ </animation>
+ <animation name="generic.barricade.steel.dead.ground.animation">
+ <frame i="spriteimage.generic.barricade.steel.ground.01" d="0"/>
+ <frame i="building.1x1.dead.misc.anim" d="1"/>
+ </animation>
+ <animation name="generic.barricade.steel.dead.top.animation">
+ <frame i="spriteimage.generic.barricade.steel.top.05" d="0"/>
+ <frame i="building.1x1.dead.misc.anim" d="1"/>
+ </animation>
+
+ <animation name="generic.barricade.titanium.dead.animation">
+ <frame i="spriteimage.generic.barricade.titanium.06" d="0"/>
+ <frame i="building.1x1.dead.anim" d="1"/>
+ </animation>
+ <animation name="generic.barricade.titanium.dead.ground.animation">
+ <frame i="spriteimage.generic.barricade.titanium.ground.01" d="0"/>
+ <frame i="building.1x1.dead.misc.anim" d="1"/>
+ </animation>
+
+
+<!-- <sync id="global" i="1"/> -->
+
+ <animation name="generic.barricade.titanium.glow.animation">
+
+ <animcolor a="0" d="8"/>
+ <frame i="spriteimage.generic.barricade.titanium.glow.06" d="0"/>
+
+ <loop count="10"/>
+ <label id="loop1"/>
+ <animcolor a="+25" d="3"/>
+ <repeat id="loop1"/>
+
+ <animcolor a="255" d="0"/>
+
+ <frame i="spriteimage.generic.barricade.titanium.glow.05" d="3"/>
+ <frame i="spriteimage.generic.barricade.titanium.glow.04" d="3"/>
+ <frame i="spriteimage.generic.barricade.titanium.glow.03" d="4"/>
+ <frame i="spriteimage.generic.barricade.titanium.glow.02" d="5"/>
+ <frame i="spriteimage.generic.barricade.titanium.glow.01" d="6"/>
+ <frame i="spriteimage.generic.barricade.titanium.glow.02" d="5"/>
+ <frame i="spriteimage.generic.barricade.titanium.glow.03" d="4"/>
+ <frame i="spriteimage.generic.barricade.titanium.glow.04" d="3"/>
+ <frame i="spriteimage.generic.barricade.titanium.glow.05" d="3"/>
+ <frame i="spriteimage.generic.barricade.titanium.glow.06" d="3"/>
+
+ <loop count="10"/>
+ <label id="loop2"/>
+ <animcolor a="+-25" d="3"/>
+ <repeat id="loop2"/>
+
+ <goto seq="0"/>
+ </animation>
+
+ <animation name="generic.barricade.titanium.glow.damaged.1.animation">
+
+ <animcolor a="0" d="8"/>
+ <frame i="spriteimage.generic.barricade.titanium.glow.06" d="0"/>
+
+ <loop count="10"/>
+ <label id="loop1"/>
+ <animcolor a="+25" d="4"/>
+ <repeat id="loop1"/>
+
+ <animcolor a="255" d="0"/>
+
+ <frame i="spriteimage.generic.barricade.titanium.glow.05" d="5"/>
+ <frame i="spriteimage.generic.barricade.titanium.glow.04" d="6"/>
+ <frame i="spriteimage.generic.barricade.titanium.glow.05" d="5"/>
+ <frame i="spriteimage.generic.barricade.titanium.glow.06" d="4"/>
+
+ <loop count="10"/>
+ <label id="loop2"/>
+ <animcolor a="+-25" d="4"/>
+ <repeat id="loop2"/>
+
+ <goto seq="0"/>
+ </animation>
+
+
+ <animation name="generic.barricade.titanium.glow.damaged.2.animation">
+
+ <animcolor a="0" d="8"/>
+ <frame i="spriteimage.generic.barricade.titanium.glow.06" d="0"/>
+
+ <loop count="10"/>
+ <label id="loop1"/>
+ <animcolor a="+10" d="5"/>
+ <repeat id="loop1"/>
+
+ <loop count="10"/>
+ <label id="loop2"/>
+ <animcolor a="+-10" d="5"/>
+ <repeat id="loop2"/>
+
+ <goto seq="0"/>
+ </animation>
+
+
+ <animation name="generic.barricade.nanomesh.dead.animation">
+ <frame i="spriteimage.generic.barricade.nanomesh.07" d="0"/>
+ <frame i="building.1x1.dead.anim" d="1"/>
+ </animation>
+ <animation name="generic.barricade.nanomesh.dead.ground.animation">
+ <frame i="spriteimage.generic.barricade.nanomesh.ground.01" d="0"/>
+ <frame i="building.1x1.dead.misc.anim" d="1"/>
+ </animation>
+
+
+
+ <animation name="generic.barricade.nanomesh.glow.animation">
+
+ <animcolor a="0" d="8"/>
+ <frame i="spriteimage.generic.barricade.nanomesh.glow.06" d="0"/>
+
+ <loop count="10"/>
+ <label id="loop1"/>
+ <animcolor a="+25" d="3"/>
+ <repeat id="loop1"/>
+
+ <animcolor a="255" d="0"/>
+
+ <frame i="spriteimage.generic.barricade.nanomesh.glow.05" d="3"/>
+ <frame i="spriteimage.generic.barricade.nanomesh.glow.04" d="3"/>
+ <frame i="spriteimage.generic.barricade.nanomesh.glow.03" d="4"/>
+ <frame i="spriteimage.generic.barricade.nanomesh.glow.02" d="5"/>
+ <frame i="spriteimage.generic.barricade.nanomesh.glow.01" d="6"/>
+ <frame i="spriteimage.generic.barricade.nanomesh.glow.02" d="5"/>
+ <frame i="spriteimage.generic.barricade.nanomesh.glow.03" d="4"/>
+ <frame i="spriteimage.generic.barricade.nanomesh.glow.04" d="3"/>
+ <frame i="spriteimage.generic.barricade.nanomesh.glow.05" d="3"/>
+ <frame i="spriteimage.generic.barricade.nanomesh.glow.06" d="3"/>
+
+ <loop count="10"/>
+ <label id="loop2"/>
+ <animcolor a="+-25" d="3"/>
+ <repeat id="loop2"/>
+
+ <goto seq="0"/>
+ </animation>
+
+ <animation name="generic.barricade.nanomesh.glow.damaged.1.animation">
+
+ <animcolor a="0" d="8"/>
+ <frame i="spriteimage.generic.barricade.nanomesh.glow.06" d="0"/>
+
+ <loop count="10"/>
+ <label id="loop1"/>
+ <animcolor a="+25" d="4"/>
+ <repeat id="loop1"/>
+
+ <animcolor a="255" d="0"/>
+
+ <frame i="spriteimage.generic.barricade.nanomesh.glow.05" d="5"/>
+ <frame i="spriteimage.generic.barricade.nanomesh.glow.04" d="6"/>
+ <frame i="spriteimage.generic.barricade.nanomesh.glow.05" d="5"/>
+ <frame i="spriteimage.generic.barricade.nanomesh.glow.06" d="4"/>
+
+ <loop count="10"/>
+ <label id="loop2"/>
+ <animcolor a="+-25" d="4"/>
+ <repeat id="loop2"/>
+
+ <goto seq="0"/>
+ </animation>
+
+ <animation name="generic.barricade.nanomesh.glow.damaged.2.animation">
+
+ <animcolor a="0" d="8"/>
+ <frame i="spriteimage.generic.barricade.nanomesh.glow.06" d="0"/>
+
+ <loop count="10"/>
+ <label id="loop1"/>
+ <animcolor a="+25" d="5"/>
+ <repeat id="loop1"/>
+
+ <animcolor a="255" d="0"/>
+
+ <loop count="10"/>
+ <label id="loop2"/>
+ <animcolor a="+-25" d="5"/>
+ <repeat id="loop2"/>
+
+ <goto seq="0"/>
+ </animation>
+
+
+
+
+ <!-- MINES ========================================================================================== -->
+
+
+
+
+ <animation name="mine.dead.anim">
+ <animcolor a="255" d="14"/>
+ <shake amount="20"/>
+ <event id="1"/>
+ <animcolor a="0" d="256"/>
+ <event id="2"/>
+ </animation>
+
+ <animation name="mine.dead.misc.anim">
+ <animcolor a="255" d="14"/>
+ <animcolor a="0" d="1"/>
+ </animation>
+
+ <animation name="mine.dead.base.anim">
+ <animcolor a="255" d="14"/>
+ <loop count="63"/>
+ <animcolor a="+-4" d="4"/>
+ <repeat seq="2"/>
+ <animcolor a="0" d="1"/>
+ </animation>
+
+
+
+ <animation name="generic.mine.dead.animation">
+ <frame i="spriteimage.generic.mine.02" d="1"/>
+ <frame i="mine.dead.anim" d="1"/>
+ </animation>
+ <animation name="generic.mine.dead.ground.animation">
+ <frame i="spriteimage.generic.mine.ground.01" d="1"/>
+ <frame i="mine.dead.misc.anim" d="1"/>
+ </animation>
+
+ <animation name="generic.mine.glow.animation">
+
+ <!-- hmm - delay dont seem to work here? <delay min="1" max="32"/> -->
+
+ <animcolor a="0" d="3"/>
+ <random>
+ <dest seq="0" n="32"/>
+ <dest seq="2"/>
+ </random>
+
+ <animcolor a="255" d="0"/>
+ <frame i="spriteimage.generic.mine.glow.05" d="5"/>
+ <frame i="spriteimage.generic.mine.glow.06" d="2"/>
+ <frame i="spriteimage.generic.mine.glow.07" d="2"/>
+ <frame i="spriteimage.generic.mine.glow.08" d="2"/>
+ <animcolor a="128" d="2"/>
+ <animcolor a="64" d="2"/>
+
+ <animcolor a="255" d="0"/>
+ <frame i="spriteimage.generic.mine.glow.01" d="5"/>
+ <frame i="spriteimage.generic.mine.glow.02" d="2"/>
+ <frame i="spriteimage.generic.mine.glow.03" d="2"/>
+ <frame i="spriteimage.generic.mine.glow.04" d="3"/>
+ <animcolor a="128" d="4"/>
+ <animcolor a="64" d="5"/>
+ <animcolor a="32" d="6"/>
+
+ <animcolor a="0" d="200"/>
+
+ <goto seq="2"/>
+ </animation>
+
+
+
+
+ <animation name="generic.cluster.glow.fade.anim">
+ <animcolor a="128" d="4"/>
+ <animcolor a="64" d="5"/>
+ <animcolor a="32" d="6"/>
+ <animcolor a="0" d="15"/>
+ <return/>
+ </animation>
+ <animation name="generic.cluster.glow.1.anim">
+ <animcolor a="255" d="0"/>
+ <frame i="spriteimage.generic.clustermine.glow.01" d="5"/>
+ <frame i="spriteimage.generic.clustermine.glow.02" d="2"/>
+ <frame i="spriteimage.generic.clustermine.glow.03" d="3"/>
+ <return/>
+ </animation>
+ <animation name="generic.cluster.glow.2.anim">
+ <animcolor a="255" d="0"/>
+ <frame i="spriteimage.generic.clustermine.glow.04" d="5"/>
+ <frame i="spriteimage.generic.clustermine.glow.05" d="2"/>
+ <frame i="spriteimage.generic.clustermine.glow.06" d="3"/>
+ <return/>
+ </animation>
+ <animation name="generic.cluster.glow.3.anim">
+ <animcolor a="255" d="0"/>
+ <frame i="spriteimage.generic.clustermine.glow.07" d="5"/>
+ <frame i="spriteimage.generic.clustermine.glow.08" d="2"/>
+ <frame i="spriteimage.generic.clustermine.glow.09" d="3"/>
+ <return/>
+ </animation>
+ <animation name="generic.cluster.glow.4.anim">
+ <animcolor a="255" d="0"/>
+ <frame i="spriteimage.generic.clustermine.glow.10" d="5"/>
+ <frame i="spriteimage.generic.clustermine.glow.11" d="2"/>
+ <frame i="spriteimage.generic.clustermine.glow.12" d="3"/>
+ <return/>
+ </animation>
+
+ <animation name="generic.clustermine.glow.4.animation">
+ <animcolor a="0" d="3"/>
+ <random>
+ <dest seq="0" n="16"/>
+ <dest seq="2"/>
+ </random>
+ <sub id="generic.cluster.glow.1.anim"/>
+ <sub id="generic.cluster.glow.fade.anim"/>
+ <sub id="generic.cluster.glow.2.anim"/>
+ <sub id="generic.cluster.glow.fade.anim"/>
+ <sub id="generic.cluster.glow.3.anim"/>
+ <sub id="generic.cluster.glow.fade.anim"/>
+ <sub id="generic.cluster.glow.4.anim"/>
+ <sub id="generic.cluster.glow.fade.anim"/>
+ <goto seq="2"/>
+ </animation>
+
+ <animation name="generic.clustermine.glow.3.animation">
+ <animcolor a="0" d="3"/>
+ <random>
+ <dest seq="0" n="16"/>
+ <dest seq="2"/>
+ </random>
+ <animcolor a="0" d="40"/>
+ <sub id="generic.cluster.glow.2.anim"/>
+ <sub id="generic.cluster.glow.fade.anim"/>
+ <sub id="generic.cluster.glow.3.anim"/>
+ <sub id="generic.cluster.glow.fade.anim"/>
+ <sub id="generic.cluster.glow.4.anim"/>
+ <sub id="generic.cluster.glow.fade.anim"/>
+ <goto seq="2"/>
+ </animation>
+
+ <animation name="generic.clustermine.glow.2.animation">
+ <animcolor a="0" d="3"/>
+ <random>
+ <dest seq="0" n="16"/>
+ <dest seq="2"/>
+ </random>
+ <animcolor a="0" d="40"/>
+ <sub id="generic.cluster.glow.2.anim"/>
+ <sub id="generic.cluster.glow.fade.anim"/>
+ <animcolor a="0" d="40"/>
+ <sub id="generic.cluster.glow.4.anim"/>
+ <sub id="generic.cluster.glow.fade.anim"/>
+ <goto seq="2"/>
+ </animation>
+
+ <animation name="generic.clustermine.glow.1.animation">
+ <animcolor a="0" d="3"/>
+ <random>
+ <dest seq="0" n="16"/>
+ <dest seq="2"/>
+ </random>
+ <animcolor a="0" d="40"/>
+ <sub id="generic.cluster.glow.2.anim"/>
+ <sub id="generic.cluster.glow.fade.anim"/>
+ <animcolor a="0" d="40"/>
+ <animcolor a="0" d="40"/>
+ <goto seq="2"/>
+ </animation>
+
+
+
+
+ <animation name="generic.blastmine.glow.animation">
+
+ <frame i="spriteimage.generic.blastmine.glow.01" d="8"/>
+ <frame i="spriteimage.generic.blastmine.glow.02" d="4"/>
+ <frame i="spriteimage.generic.blastmine.glow.03" d="3"/>
+ <frame i="spriteimage.generic.blastmine.glow.04" d="3"/>
+
+ <loop count="10"/>
+ <label id="loop1"/>
+ <animcolor a="+-25" d="3"/>
+ <repeat id="loop1"/>
+
+ <loop count="5"/>
+ <label id="loop2"/>
+ <animcolor a="+50" d="2"/>
+ <repeat id="loop2"/>
+
+ <frame i="spriteimage.generic.blastmine.glow.04" d="2"/>
+ <frame i="spriteimage.generic.blastmine.glow.03" d="2"/>
+ <frame i="spriteimage.generic.blastmine.glow.02" d="2"/>
+
+ <goto seq="0"/>
+
+ </animation>
+
+ <animation name="generic.blastmine.armed.animation">
+ <event id="1"/>
+ <frame i="spriteimage.generic.blastmine.01" d="10"/>
+ <frame i="spriteimage.generic.blastmine.02" d="3"/>
+ <frame i="spriteimage.generic.blastmine.03" d="2"/>
+ <frame i="spriteimage.generic.blastmine.04" d="2"/>
+ <frame i="spriteimage.generic.blastmine.05" d="2"/>
+ <frame i="spriteimage.generic.blastmine.07" d="4"/>
+ <frame i="spriteimage.generic.blastmine.06" d="2"/>
+ </animation>
+
+
+ <animation name="generic.blastmine.armed.glow.animation">
+
+ <animcolor a="0" d="32"/>
+ <animcolor a="255" d="0"/>
+ <event id="1"/>
+ <frame i="spriteimage.generic.blastmine.glow.09" d="5"/>
+ <frame i="spriteimage.generic.blastmine.glow.08" d="2"/>
+ <frame i="spriteimage.generic.blastmine.glow.07" d="2"/>
+ <frame i="spriteimage.generic.blastmine.glow.06" d="2"/>
+ <frame i="spriteimage.generic.blastmine.glow.05" d="2"/>
+
+ <loop count="4"/>
+ <label id="alphaLoop1"/>
+ <animcolor a="+-50" d="2"/>
+ <repeat id="alphaLoop1"/>
+
+ <animcolor a="0" d="23"/>
+ <animcolor a="255" d="0"/>
+ <event id="1"/>
+ <frame i="spriteimage.generic.blastmine.glow.09" d="5"/>
+ <frame i="spriteimage.generic.blastmine.glow.08" d="2"/>
+ <frame i="spriteimage.generic.blastmine.glow.07" d="2"/>
+ <frame i="spriteimage.generic.blastmine.glow.06" d="2"/>
+ <frame i="spriteimage.generic.blastmine.glow.05" d="2"/>
+
+ <loop count="4"/>
+ <label id="alphaLoop3"/>
+ <animcolor a="+-50" d="2"/>
+ <repeat id="alphaLoop3"/>
+
+ <animcolor a="0" d="15"/>
+ <animcolor a="255" d="0"/>
+ <event id="1"/>
+ <frame i="spriteimage.generic.blastmine.glow.09" d="5"/>
+ <frame i="spriteimage.generic.blastmine.glow.08" d="2"/>
+ <frame i="spriteimage.generic.blastmine.glow.07" d="2"/>
+ <frame i="spriteimage.generic.blastmine.glow.06" d="2"/>
+ <frame i="spriteimage.generic.blastmine.glow.05" d="2"/>
+
+ <loop count="3"/>
+ <label id="alphaLoop4"/>
+ <animcolor a="+-50" d="2"/>
+ <repeat id="alphaLoop4"/>
+
+ <animcolor a="0" d="8"/>
+ <animcolor a="255" d="0"/>
+ <event id="1"/>
+ <frame i="spriteimage.generic.blastmine.glow.09" d="5"/>
+ <frame i="spriteimage.generic.blastmine.glow.08" d="2"/>
+ <frame i="spriteimage.generic.blastmine.glow.07" d="2"/>
+ <frame i="spriteimage.generic.blastmine.glow.06" d="2"/>
+ <frame i="spriteimage.generic.blastmine.glow.05" d="2"/>
+
+ <loop count="3"/>
+ <label id="alphaLoop5"/>
+ <animcolor a="+-50" d="2"/>
+ <repeat id="alphaLoop5"/>
+
+
+ <animcolor a="0" d="2"/>
+ <animcolor a="255" d="0"/>
+ <event id="1"/>
+ <frame i="spriteimage.generic.blastmine.glow.09" d="5"/>
+ <frame i="spriteimage.generic.blastmine.glow.08" d="2"/>
+ <frame i="spriteimage.generic.blastmine.glow.07" d="2"/>
+ <frame i="spriteimage.generic.blastmine.glow.06" d="2"/>
+ <frame i="spriteimage.generic.blastmine.glow.05" d="2"/>
+
+ <loop count="2"/>
+ <label id="alphaLoop6"/>
+ <animcolor a="+-50" d="2"/>
+ <repeat id="alphaLoop6"/>
+
+ <animcolor a="255" d="0"/>
+ <event id="1"/>
+ <frame i="spriteimage.generic.blastmine.glow.09" d="5"/>
+ <frame i="spriteimage.generic.blastmine.glow.08" d="2"/>
+ <frame i="spriteimage.generic.blastmine.glow.07" d="2"/>
+ <frame i="spriteimage.generic.blastmine.glow.06" d="2"/>
+ <frame i="spriteimage.generic.blastmine.glow.05" d="2"/>
+ <animcolor a="0" d="3"/>
+
+ <animcolor a="255" d="0"/>
+ <event id="1"/>
+ <frame i="spriteimage.generic.blastmine.glow.09" d="5"/>
+ <frame i="spriteimage.generic.blastmine.glow.07" d="2"/>
+ <frame i="spriteimage.generic.blastmine.glow.06" d="2"/>
+ <frame i="spriteimage.generic.blastmine.glow.05" d="2"/>
+ <animcolor a="0" d="3"/>
+
+ <animcolor a="255" d="0"/>
+ <event id="1"/>
+ <frame i="spriteimage.generic.blastmine.glow.09" d="4"/>
+ <frame i="spriteimage.generic.blastmine.glow.06" d="2"/>
+ <frame i="spriteimage.generic.blastmine.glow.05" d="2"/>
+ <animcolor a="0" d="3"/>
+
+ <animcolor a="255" d="0"/>
+ <event id="1"/>
+ <frame i="spriteimage.generic.blastmine.glow.09" d="3"/>
+ <frame i="spriteimage.generic.blastmine.glow.05" d="3"/>
+ <animcolor a="0" d="3"/>
+
+ <event id="1"/>
+ <frame i="spriteimage.generic.blastmine.glow.09" d="0"/>
+ <animcolor a="255" d="3"/>
+
+ <animcolor a="0" d="3"/>
+ <event id="1"/>
+ <animcolor a="255" d="3"/>
+
+ <animcolor a="0" d="3"/>
+ <event id="1"/>
+ <animcolor a="255" d="3"/>
+
+ <animcolor a="0" d="3"/>
+ <event id="1"/>
+ <animcolor a="255" d="3"/>
+
+ <animcolor a="0" d="3"/>
+ <event id="1"/>
+ <animcolor a="255" d="3"/>
+
+ <animcolor a="0" d="3"/>
+ <event id="1"/>
+ <animcolor a="255" d="3"/>
+
+ <frame i="spriteimage.generic.blastmine.glow.05" d="0"/>
+ <animcolor a="16" d="10"/>
+ <animcolor a="32" d="6"/>
+ <animcolor a="64" d="5"/>
+ <animcolor a="128" d="4"/>
+ <animcolor a="255" d="3"/>
+ <frame i="spriteimage.generic.blastmine.glow.06" d="1"/>
+ <frame i="spriteimage.generic.blastmine.glow.07" d="1"/>
+ <frame i="spriteimage.generic.blastmine.glow.08" d="1"/>
+ <event id="2"/>
+ <frame i="spriteimage.generic.blastmine.glow.09" d="100"/>
+ <event id="3"/>
+
+
+ </animation>
+
+ <animation name="generic.blastmine.dead.animation">
+ <frame i="spriteimage.generic.blastmine.08" d="1"/>
+ <frame i="mine.dead.anim" d="1"/>
+ </animation>
+ <animation name="generic.blastmine.dead.ground.animation">
+ <frame i="spriteimage.generic.blastmine.ground.01" d="1"/>
+ <frame i="mine.dead.misc.anim" d="1"/>
+ </animation>
+
+
+
+ <animation name="generic.tangleweb.glow.animation">
+
+ <frame i="spriteimage.generic.tangleweb.glow.05" d="0"/>
+ <animcolor a="255" d="0"/>
+
+ <random>
+ <dest id="glow1" n="4"/>
+ <dest id="glow2"/>
+ <dest id="glow3"/>
+ <dest id="glow4"/>
+ <dest id="glow5"/>
+ <dest id="glowDown"/>
+ </random>
+
+ <label id="glow1"/>
+ <frame i="spriteimage.generic.tangleweb.glow.01" d="3"/>
+ <goto seq="0"/>
+
+ <label id="glow2"/>
+ <frame i="spriteimage.generic.tangleweb.glow.02" d="3"/>
+ <goto seq="0"/>
+
+ <label id="glow3"/>
+ <frame i="spriteimage.generic.tangleweb.glow.03" d="3"/>
+ <goto seq="0"/>
+
+ <label id="glow4"/>
+ <frame i="spriteimage.generic.tangleweb.glow.04" d="3"/>
+ <goto seq="0"/>
+
+ <label id="glow5"/>
+ <frame i="spriteimage.generic.tangleweb.glow.05" d="3"/>
+ <goto seq="0"/>
+
+ <label id="glowDown"/>
+ <frame i="spriteimage.generic.tangleweb.glow.01" d="3"/>
+ <frame i="spriteimage.generic.tangleweb.glow.02" d="3"/>
+ <frame i="spriteimage.generic.tangleweb.glow.03" d="3"/>
+ <frame i="spriteimage.generic.tangleweb.glow.04" d="3"/>
+ <frame i="spriteimage.generic.tangleweb.glow.05" d="3"/>
+ <animcolor a="128" d="3"/>
+ <animcolor a="64" d="3"/>
+ <animcolor a="50" d="4"/>
+ <animcolor a="40" d="5"/>
+ <animcolor a="30" d="6"/>
+ <label id="glowDownLoop"/>
+ <animcolor a="20" d="7"/>
+ <random>
+ <dest id="glowDownLoop" n="40"/>
+ <dest id="glow1"/>
+ <dest id="glow2"/>
+ <dest id="glow3"/>
+ <dest id="glow4"/>
+ <dest id="glow5"/>
+ </random>
+
+ </animation>
+
+
+
+ <!-- NEW BUILDINGS -->
+
+ <animation name="generic.tankfactory.spawn.glow.animation">
+
+ <frame i="spriteimage.generic.tankfactory.glow.02" d="8"/>
+ <frame i="spriteimage.generic.tankfactory.glow.03" d="7"/>
+ <frame i="spriteimage.generic.tankfactory.glow.04" d="6"/>
+ <frame i="spriteimage.generic.tankfactory.glow.05" d="6"/>
+ <frame i="spriteimage.generic.tankfactory.glow.06" d="6"/>
+ <frame i="spriteimage.generic.tankfactory.glow.07" d="25"/>
+
+ <frame i="spriteimage.generic.tankfactory.glow.06" d="2"/>
+ <frame i="spriteimage.generic.tankfactory.glow.05" d="2"/>
+
+ <loop count="8"/>
+ <label id="loop1"/>
+ <frame i="spriteimage.generic.tankfactory.glow.08" d="2"/>
+ <frame i="spriteimage.generic.tankfactory.glow.09" d="2"/>
+ <repeat id="loop1"/>
+
+ <frame i="spriteimage.generic.tankfactory.glow.08" d="2"/>
+ <event id="1"/>
+ <frame i="spriteimage.generic.tankfactory.glow.09" d="2"/>
+
+ <loop count="4"/>
+ <label id="loop2"/>
+ <frame i="spriteimage.generic.tankfactory.glow.08" d="2"/>
+ <frame i="spriteimage.generic.tankfactory.glow.09" d="2"/>
+ <repeat id="loop2"/>
+
+ <frame i="spriteimage.generic.tankfactory.glow.08" d="2"/>
+ <frame i="spriteimage.generic.tankfactory.glow.09" d="3"/>
+ <frame i="spriteimage.generic.tankfactory.glow.10" d="4"/>
+ <frame i="spriteimage.generic.tankfactory.glow.11" d="5"/>
+ <event id="2"/>
+ <frame i="spriteimage.generic.tankfactory.glow.01" d="2"/>
+
+ </animation>
+
+ <animation name="generic.tankfactory.glow.animation">
+ <label id="start"/>
+ <loop count="3"/>
+ <label id="loop1"/>
+ <frame i="spriteimage.generic.tankfactory.glow.01" d="20"/>
+ <frame i="spriteimage.generic.tankfactory.glow.12" d="3"/>
+ <frame i="spriteimage.generic.tankfactory.glow.13" d="3"/>
+ <frame i="spriteimage.generic.tankfactory.glow.14" d="4"/>
+ <repeat id="loop1"/>
+ <frame i="spriteimage.generic.tankfactory.glow.01" d="50"/>
+ <goto id="start"/>
+ </animation>
+
+ <animation name="generic.tankfactory.dead.animation">
+ <frame i="spriteimage.generic.tankfactory.02" d="0"/>
+ <frame i="building.4x4.dead.anim" d="1"/>
+ </animation>
+ <animation name="generic.tankfactory.dead.ground.animation">
+ <frame i="spriteimage.generic.tankfactory.ground.01" d="0"/>
+ <frame i="building.4x4.dead.misc.anim" d="1"/>
+ </animation>
+ <animation name="generic.tankfactory.dead.top.animation">
+ <frame i="spriteimage.generic.tankfactory.top.01" d="0"/>
+ <frame i="building.4x4.dead.misc.anim" d="1"/>
+ </animation>
+
+
+
+ <animation name="generic.repairdrones.glow.animation">
+
+ <frame i="spriteimage.generic.repairdrones.glow.02" d="7"/>
+ <frame i="spriteimage.generic.repairdrones.glow.03" d="6"/>
+ <frame i="spriteimage.generic.repairdrones.glow.04" d="5"/>
+ <frame i="spriteimage.generic.repairdrones.glow.05" d="5"/>
+ <frame i="spriteimage.generic.repairdrones.glow.06" d="5"/>
+ <frame i="spriteimage.generic.repairdrones.glow.07" d="20"/>
+
+ <frame i="spriteimage.generic.repairdrones.glow.06" d="2"/>
+ <frame i="spriteimage.generic.repairdrones.glow.05" d="2"/>
+
+ <loop count="4"/>
+ <label id="loop1"/>
+ <frame i="spriteimage.generic.repairdrones.glow.08" d="2"/>
+ <frame i="spriteimage.generic.repairdrones.glow.09" d="2"/>
+ <repeat id="loop1"/>
+
+ <frame i="spriteimage.generic.repairdrones.glow.08" d="2"/>
+ <event id="1"/>
+ <frame i="spriteimage.generic.repairdrones.glow.09" d="2"/>
+
+ <loop count="4"/>
+ <label id="loop2"/>
+ <frame i="spriteimage.generic.repairdrones.glow.08" d="2"/>
+ <frame i="spriteimage.generic.repairdrones.glow.09" d="2"/>
+ <repeat id="loop2"/>
+
+ <frame i="spriteimage.generic.repairdrones.glow.08" d="2"/>
+ <frame i="spriteimage.generic.repairdrones.glow.09" d="3"/>
+ <frame i="spriteimage.generic.repairdrones.glow.10" d="4"/>
+ <frame i="spriteimage.generic.repairdrones.glow.11" d="5"/>
+ <event id="2"/>
+ <frame i="spriteimage.generic.repairdrones.glow.01" d="2"/>
+
+ </animation>
+
+ <animation name="generic.repairdrones.dead.animation">
+ <frame i="spriteimage.generic.repairdrones.02" d="0"/>
+ <frame i="building.4x4.dead.anim" d="1"/>
+ </animation>
+ <animation name="generic.repairdrones.dead.ground.animation">
+ <frame i="spriteimage.generic.repairdrones.ground.01" d="0"/>
+ <frame i="building.4x4.dead.misc.anim" d="1"/>
+ </animation>
+ <animation name="generic.repairdrones.dead.top.animation">
+ <frame i="spriteimage.generic.repairdrones.top.01" d="0"/>
+ <frame i="building.4x4.dead.misc.anim" d="1"/>
+ </animation>
+
+
+ <animation name="generic.scarecrow.glow.animation">
+ <animcolor a="255" d="0"/>
+ <frame i="spriteimage.generic.scarecrow.glow.01" d="2"/>
+ <frame i="spriteimage.generic.scarecrow.glow.02" d="2"/>
+ <frame i="spriteimage.generic.scarecrow.glow.03" d="2"/>
+ <frame i="spriteimage.generic.scarecrow.glow.04" d="2"/>
+ <frame i="spriteimage.generic.scarecrow.glow.05" d="2"/>
+ <frame i="spriteimage.generic.scarecrow.glow.06" d="2"/>
+ <frame i="spriteimage.generic.scarecrow.glow.07" d="2"/>
+ <frame i="spriteimage.generic.scarecrow.glow.08" d="2"/>
+ <frame i="spriteimage.generic.scarecrow.glow.09" d="2"/>
+ <frame i="spriteimage.generic.scarecrow.glow.10" d="2"/>
+ <frame i="spriteimage.generic.scarecrow.glow.11" d="2"/>
+ <animcolor a="128" d="2"/>
+ <animcolor a="64" d="2"/>
+ <animcolor a="50" d="2"/>
+ <animcolor a="40" d="2"/>
+ <animcolor a="30" d="2"/>
+ <goto seq="0"/>
+ </animation>
+
+ <animation name="generic.scarecrow.skull.animation">
+ <frame i="spriteimage.generic.scarecrow.glow.12" d="0"/>
+ <animcolor a="255" d="0"/>
+
+ <random>
+ <dest id="glow1" n="4"/>
+ <dest id="glow2"/>
+ <dest id="glow3"/>
+ <dest id="glow4"/>
+ <dest id="glow5"/>
+ <dest id="glowDown"/>
+ </random>
+
+ <label id="glow1"/>
+ <frame i="spriteimage.generic.scarecrow.glow.12" d="3"/>
+ <goto seq="0"/>
+
+ <label id="glow2"/>
+ <frame i="spriteimage.generic.scarecrow.glow.13" d="3"/>
+ <goto seq="0"/>
+
+ <label id="glow3"/>
+ <frame i="spriteimage.generic.scarecrow.glow.14" d="3"/>
+ <goto seq="0"/>
+
+ <label id="glow4"/>
+ <animcolor a="128" d="0"/>
+ <frame i="spriteimage.generic.scarecrow.glow.14" d="3"/>
+ <goto seq="0"/>
+
+ <label id="glow5"/>
+ <animcolor a="0" d="0"/>
+ <frame i="spriteimage.generic.scarecrow.glow.14" d="3"/>
+ <goto seq="0"/>
+
+ <label id="glowDown"/>
+ <frame i="spriteimage.generic.scarecrow.glow.12" d="3"/>
+ <frame i="spriteimage.generic.scarecrow.glow.13" d="3"/>
+ <frame i="spriteimage.generic.scarecrow.glow.14" d="3"/>
+ <animcolor a="128" d="3"/>
+ <animcolor a="64" d="3"/>
+ <animcolor a="50" d="4"/>
+ <animcolor a="40" d="5"/>
+ <animcolor a="30" d="6"/>
+ <label id="glowDownLoop"/>
+ <animcolor a="20" d="7"/>
+ <random>
+ <dest id="glowDownLoop" n="5"/>
+ <dest id="glow1"/>
+ <dest id="glow2"/>
+ <dest id="glow3"/>
+ <dest id="glow4"/>
+ <dest id="glow5"/>
+ </random>
+ </animation>
+
+ <animation name="generic.scarecrow.dead.animation">
+ <frame i="spriteimage.generic.scarecrow.02" d="0"/>
+ <frame i="building.2x2.dead.anim" d="1"/>
+ </animation>
+ <animation name="generic.scarecrow.dead.ground.animation">
+ <frame i="spriteimage.generic.scarecrow.ground.01" d="0"/>
+ <frame i="building.2x2.dead.misc.anim" d="1"/>
+ </animation>
+
+
+ <animation name="generic.cloakingdevice.glow.animation">
+ <random>
+ <dest seq="1"/>
+ <dest seq="3"/>
+ <dest seq="5"/>
+ <dest seq="7"/>
+ </random>
+ <frame i="spriteimage.generic.cloakingdevice.glow.01" d="3"/>
+ <goto seq="0"/>
+ <frame i="spriteimage.generic.cloakingdevice.glow.02" d="3"/>
+ <goto seq="0"/>
+ <frame i="spriteimage.generic.cloakingdevice.glow.03" d="3"/>
+ <goto seq="0"/>
+ <frame i="spriteimage.generic.cloakingdevice.glow.04" d="3"/>
+ <goto seq="0"/>
+ </animation>
+ <animation name="generic.cloakingdevice.dead.animation">
+ <frame i="spriteimage.generic.cloakingdevice.02" d="0"/>
+ <frame i="building.3x3.dead.anim" d="1"/>
+ </animation>
+ <animation name="generic.cloakingdevice.dead.ground.animation">
+ <frame i="spriteimage.generic.cloakingdevice.ground.01" d="0"/>
+ <frame i="building.3x3.dead.misc.anim" d="1"/>
+ </animation>
+
+ <animation name="generic.cloakingdevice.glow.2.animation">
+ <goto seq="9"/>
+ <animcolor a="135" d="6"/>
+ <animcolor a="195" d="5"/>
+ <animcolor a="235" d="4"/>
+ <animcolor a="255" d="0"/>
+ <frame i="spriteimage.generic.cloakingdevice.glow.08" d="4"/>
+ <frame i="spriteimage.generic.cloakingdevice.glow.07" d="5"/>
+ <frame i="spriteimage.generic.cloakingdevice.glow.06" d="6"/>
+ <frame i="spriteimage.generic.cloakingdevice.glow.05" d="30"/>
+ <frame i="spriteimage.generic.cloakingdevice.glow.06" d="6"/>
+ <frame i="spriteimage.generic.cloakingdevice.glow.07" d="5"/>
+ <frame i="spriteimage.generic.cloakingdevice.glow.08" d="4"/>
+ <animcolor a="235" d="4"/>
+ <animcolor a="195" d="5"/>
+ <animcolor a="135" d="6"/>
+ <goto seq="1"/>
+ </animation>
+
+ <!-- factory emitters -->
+
+ <property key="factory_beam_start_hue" value="0.17" />
+ <property key="factory_beam_start_hue_end" value="0.06" />
+
+ <property key="factory_beam_end_hue" value="0.17" />
+ <property key="factory_beam_end_hue_end" value="0.06" />
+
+ <emitter name="factory.beam.start.emitter"
+ startHue="=$factory_beam_start_hue"
+ endHue="=$factory_beam_start_hue_end"
+ inherit="weapon.flash.capacitor.emitter"
+ emitterScale="0.75"
+ />
+
+ <emitter name="factory.beam.end.emitter" inherit="factory.beam.start.emitter"
+ particlesPerTick="1.0"
+ particleDuration="1.0"
+ fadeDuration="1.0"
+ scale="0.4,0.6"
+ endScale="0.8,1.0"
+ emitterScale="0.3"
+ startBrightness="0.8,1.0"
+ endBrightness="0.5,1.0"
+ startSaturation="0.0"
+ >
+ <slave><emitter inherit="factory.beam.start.emitter"
+ emitterScale="1.0"
+ startBrightness="0.3,0.5"
+ endBrightness="0.2,0.4"
+ >
+ <slave><emitter inherit="ricochet.sparks.emitter"
+ particlesPerTick="-3.0, 1.0"
+ velocity="7,9"
+ acceleration="-0.75"
+ interpolation="1"
+ startHue="=$factory_beam_end_hue"
+ endHue="=$factory_beam_end_hue_end"
+ angle="0.0, 360.0"
+ emitterScale="0.55">
+ <slave><emitter inherit="ricochet.sparks.trail.emitter"
+ startHue="=$factory_beam_end_hue"
+ endHue="=$factory_beam_end_hue_end"
+ endBrightness="0.3"
+ emitterScale="0.55"/>
+ </slave>
+ </emitter></slave>
+ </emitter></slave>
+ </emitter>
+
+
+ <instance
+ class="worm.buildings.FactoryBuildingFeature"
+ name="building.generic.factory"
+ inherit="factory.building.spec"
+ offset="=$4x4offsetX,$4x4offsetY"
+ floor="-4"
+ research="factory"
+ flamesOffset="=$4x4xFire,$4x4yFloor*0.5"
+ flamesEmitter="damaged.building.4x4.fire.emitter"
+ >
+ <beamStartEmitter>
+ <emitter inherit="factory.beam.start.emitter" />
+ </beamStartEmitter>
+ <beamEndEmitter>
+ <emitter inherit="factory.beam.end.emitter" />
+ </beamEndEmitter>
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" image="spriteimage.generic.4x4.base.02"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.factory.ground.01"/>
+ <sprite layer="5" sublayer="1" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.factory.back.01"/>
+ <emitter offset="23.5,9" ySortOffset="57" emitter="steam.emitter"/>
+ <sprite layer="5" sublayer="3" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.factory.animation"/>
+ <sprite layer="5" sublayer="4" offset="0,0" attenuated="false" colored="buildings-alt" image="spriteimage.generic.factory.top.01"/>
+ <sprite layer="5" sublayer="5" offset="0,0" animation="generic.factory.glow.zap.animation"/>
+ </layers>
+ </appearance>
+
+ <shutdownAppearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" image="spriteimage.generic.4x4.base.02"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.factory.ground.01"/>
+ <sprite layer="5" sublayer="1" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.factory.back.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.factory.off.animation"/>
+ <sprite layer="5" sublayer="4" offset="0,0" attenuated="false" colored="buildings-alt" image="spriteimage.generic.factory.top.01"/>
+ <sprite layer="5" sublayer="5" offset="0,0" animation="generic.factory.glow.shutdown.animation"/>
+ </layers>
+ </shutdownAppearance>
+
+ <deathAppearance>
+ <layers scale="0.5">
+ <!-- first sprite contains important event=1 to remove building -->
+ <sprite layer="5" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.factory.dead.animation"/>
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" animation="building.4x4.dead.base.anim"/>
+ <sprite layer="4" sublayer="2" offset="0,0" attenuated="true" colored="shadow" animation="generic.factory.dead.ground.animation"/>
+ <sprite layer="5" sublayer="3" offset="0,0" attenuated="false" colored="buildings-alt" animation="generic.factory.dead.top.animation"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4yExplode" emitter="building.4x4.explosion.start.emitter"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4yExplode" emitter="building.4x4.explosion.end.emitter"/>
+ <emitter offset="=$4x4xFire,$4x4yFloor" ySortOffset="0" emitter="building.4x4.fire.emitter"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4ySparks" emitter="building.4x4.explosion.sparks.emitter"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4yExplode" emitter="building.4x4.explosion.flash.emitter"/>
+ <!-- <emitter offset="=$4x4xFire,0" ySortOffset="=$4x4yFloor" emitter="test.spread.emitter"/> -->
+ <!-- <emitter offset="=$4x4x,0" ySortOffset="=$4x4y" emitter="test.coords.emitter"/> -->
+ </layers>
+ </deathAppearance>
+ <shieldedAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="shield.4x4.animation"/>
+ <emitter offset="=$4x4x,$4x4y" emitter="shield.4x4.emitter"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4y" emitter="shield.sparkle.4x4.emitter"/>
+ </layers>
+ </shieldedAppearance>
+ <forcefieldAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="forcefield.4x4.animation"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4y" emitter="forcefield.sparkle.4x4.emitter"/>
+ </layers>
+ </forcefieldAppearance>
+
+ <shopAppearance>
+ <layers scale="0.5">
+ <sprite layer="10" sublayer="1" image="spriteimage.info.factory.ground.01"/>
+ <sprite layer="10" sublayer="2" bottomColored="buildings-shop-floor" topColored="buildings" image="spriteimage.info.factory.01"/>
+ <sprite layer="10" sublayer="3" colored="buildings-alt" image="spriteimage.info.factory.top.01"/>
+ <sprite layer="10" sublayer="3" image="spriteimage.info.factory.glow.01"/>
+ </layers>
+ </shopAppearance>
+
+ </instance>
+
+
+
+ <instance
+ class="worm.buildings.ReactorBuildingFeature"
+ name="building.generic.reactor"
+ inherit="reactor.building.spec"
+ offset="=$3x3offsetX,$3x3offsetY"
+ floor="-4"
+ research="reactor"
+ flamesOffset="=$3x3xFire,$3x3yFloor*0.5"
+ flamesEmitter="damaged.building.3x3.fire.emitter"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" image="spriteimage.generic.3x3.base.01"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.reactor.ground.01"/>
+ <sprite layer="5" sublayer="1" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.reactor.back.01"/>
+ <emitter offset="23,8" ySortOffset="48" emitter="reactor.steam.emitter"/>
+ <sprite layer="5" sublayer="3" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.reactor.animation"/>
+ <sprite layer="5" sublayer="4" offset="0, 0" animation="generic.reactor.glow.animation"/>
+ <sprite layer="5" sublayer="5" offset="13,36" animation="building.light.white.5px.phase.animation"/>
+ </layers>
+ </appearance>
+ <deathAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.reactor.dead.animation"/>
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" animation="building.3x3.dead.base.anim"/>
+ <sprite layer="4" sublayer="2" offset="0,0" attenuated="true" colored="shadow" animation="generic.reactor.dead.ground.animation"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3yExplode" emitter="building.3x3.explosion.start.emitter"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3yExplode" emitter="building.3x3.explosion.end.emitter"/>
+ <emitter offset="=$3x3xFire,=$3x3yFloor" ySortOffset="0" emitter="building.3x3.fire.emitter"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3ySparks" emitter="building.3x3.explosion.sparks.emitter"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3yExplode" emitter="building.3x3.explosion.flash.emitter"/>
+ <!-- <emitter offset="=$3x3x,0" ySortOffset="=$3x3y" emitter="test.coords.emitter"/> -->
+ </layers>
+ </deathAppearance>
+ <shieldedAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="shield.3x3.animation"/>
+ <emitter offset="=$3x3x,$3x3y" emitter="shield.3x3.emitter"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3y" emitter="shield.sparkle.3x3.emitter"/>
+ </layers>
+ </shieldedAppearance>
+ <forcefieldAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="forcefield.3x3.animation"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3y" emitter="forcefield.sparkle.3x3.emitter"/>
+ </layers>
+ </forcefieldAppearance>
+
+ <shopAppearance>
+ <layers scale="0.5">
+ <sprite layer="10" sublayer="1" offset="0,0" image="spriteimage.info.reactor.ground.01"/>
+ <sprite layer="10" sublayer="2" offset="0,0" bottomColored="buildings-shop-floor" topColored="buildings" image="spriteimage.info.reactor.01"/>
+ <sprite layer="10" sublayer="3" offset="0,0" image="spriteimage.info.reactor.glow.01"/>
+ </layers>
+ </shopAppearance>
+
+ </instance>
+
+
+ <instance
+ class="worm.buildings.ShieldGeneratorBuildingFeature"
+ name="building.generic.shield"
+ inherit="shield.building.spec"
+ offset="=$2x2offsetX,$2x2offsetY"
+ floor="-4"
+ research="shieldgenerator"
+ flamesOffset="=$2x2xFire,$2x2yFloor*0.5"
+ flamesEmitter="damaged.building.2x2.fire.emitter"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" image="spriteimage.generic.2x2.base.01"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.shield.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.shield.animation"/>
+ <sprite layer="5" sublayer="3" offset="0,0" animation="generic.shield.glow.animation"/>
+ </layers>
+ </appearance>
+ <deathAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.shield.dead.animation"/>
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" animation="building.2x2.dead.base.anim"/>
+ <sprite layer="4" sublayer="2" offset="0,0" attenuated="true" colored="shadow" animation="generic.shield.dead.ground.animation"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2yExplode" emitter="building.2x2.explosion.start.emitter"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2yExplode" emitter="building.2x2.explosion.end.emitter"/>
+ <emitter offset="=$2x2xFire,$2x2yFloor" ySortOffset="0" emitter="building.2x2.fire.emitter"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2ySparks" emitter="building.2x2.explosion.sparks.emitter"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2yExplode" emitter="building.2x2.explosion.flash.emitter"/>
+ <!-- <emitter offset="=$2x2x,0" ySortOffset="=$2x2y" emitter="test.coords.emitter"/> -->
+ </layers>
+ </deathAppearance>
+ <shieldedAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="shield.2x2.animation"/>
+ <emitter offset="=$2x2x,$2x2y" emitter="shield.2x2.emitter"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2y" emitter="shield.sparkle.2x2.emitter"/>
+ </layers>
+ </shieldedAppearance>
+ <forcefieldAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="forcefield.2x2.animation"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2y" emitter="forcefield.sparkle.2x2.emitter"/>
+ </layers>
+ </forcefieldAppearance>
+
+ <shopAppearance>
+ <layers scale="0.5">
+ <sprite layer="10" sublayer="1" offset="0,0" image="spriteimage.info.shield.ground.01"/>
+ <sprite layer="10" sublayer="2" offset="0,0" bottomColored="buildings-shop-floor" topColored="buildings" image="spriteimage.info.shield.01"/>
+ <sprite layer="10" sublayer="3" offset="0,0" image="spriteimage.info.shield.glow.01"/>
+ </layers>
+ </shopAppearance>
+
+ </instance>
+
+
+
+
+ <instance
+ class="worm.buildings.TurretBuildingFeature"
+ name="building.generic.decoy"
+ inherit="decoy.building.spec"
+ offset="=$2x2offsetX,$2x2offsetY"
+ floor="-4"
+ research="decoy"
+ flamesOffset="=$2x2xFire,$2x2yFloor*0.5"
+ flamesEmitter="damaged.building.2x2.fire.emitter"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" image="spriteimage.generic.2x2.base.01"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.decoy.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.decoy.animation"/>
+ <sprite layer="5" sublayer="4" offset="0,0" animation="generic.decoy.glow.animation"/>
+ <sprite layer="5" sublayer="5" offset="6,22" animation="generic.decoy.flash.animation"/>
+ </layers>
+ </appearance>
+ <deathAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.decoy.dead.animation"/>
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" animation="building.2x2.dead.base.anim"/>
+ <sprite layer="4" sublayer="2" offset="0,0" attenuated="true" colored="shadow" animation="generic.decoy.dead.ground.animation"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2yExplode" emitter="building.2x2.explosion.start.emitter"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2yExplode" emitter="building.2x2.explosion.end.emitter"/>
+ <emitter offset="=$2x2xFire,$2x2yFloor" ySortOffset="0" emitter="building.2x2.fire.emitter"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2ySparks" emitter="building.2x2.explosion.sparks.emitter"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2yExplode" emitter="building.2x2.explosion.flash.emitter"/>
+ <!-- <emitter offset="=$2x2x,0" ySortOffset="=$2x2y" emitter="test.coords.emitter"/> -->
+ </layers>
+ </deathAppearance>
+ <shieldedAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="shield.2x2.animation"/>
+ <emitter offset="=$2x2x,$2x2y" emitter="shield.2x2.emitter"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2y" emitter="shield.sparkle.2x2.emitter"/>
+ </layers>
+ </shieldedAppearance>
+ <forcefieldAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="forcefield.2x2.animation"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2y" emitter="forcefield.sparkle.2x2.emitter"/>
+ </layers>
+ </forcefieldAppearance>
+
+ <shopAppearance>
+ <layers scale="0.5">
+ <sprite layer="10" sublayer="1" offset="0,0" image="spriteimage.info.decoy.ground.01"/>
+ <sprite layer="10" sublayer="2" offset="0,0" bottomColored="buildings-shop-floor" topColored="buildings" image="spriteimage.info.decoy.01"/>
+ <sprite layer="10" sublayer="3" offset="0,0" image="spriteimage.info.decoy.glow.01"/>
+ </layers>
+ </shopAppearance>
+
+ </instance>
+
+
+ <instance
+ class="worm.buildings.WarehouseBuildingFeature"
+ name="building.generic.warehouse"
+ inherit="warehouse.building.spec"
+ offset="=$2x2offsetX,$2x2offsetY"
+ floor="-4"
+ research="warehouse"
+ flamesOffset="=$2x2xFire,$2x2yFloor*0.5"
+ flamesEmitter="damaged.building.2x2.fire.emitter"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" image="spriteimage.generic.2x2.base.01"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.warehouse.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.warehouse.01"/>
+ <sprite layer="5" sublayer="3" offset="0,0" attenuated="false" colored="buildings-alt" image="spriteimage.generic.warehouse.top.01"/>
+ <sprite layer="5" sublayer="5" offset="0,0" animation="generic.warehouse.glow.animation"/>
+ </layers>
+ </appearance>
+ <deathAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.warehouse.dead.animation"/>
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" animation="building.2x2.dead.base.anim"/>
+ <sprite layer="4" sublayer="2" offset="0,0" attenuated="true" colored="shadow" animation="generic.warehouse.dead.ground.animation"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2yExplode" emitter="building.2x2.explosion.start.emitter"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2yExplode" emitter="building.2x2.explosion.end.emitter"/>
+ <emitter offset="=$2x2xFire,$2x2yFloor" ySortOffset="0" emitter="building.2x2.fire.emitter"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2ySparks" emitter="building.2x2.explosion.sparks.emitter"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2yExplode" emitter="building.2x2.explosion.flash.emitter"/>
+ <!-- <emitter offset="=$2x2x,0" ySortOffset="=$2x2y" emitter="test.coords.emitter"/> -->
+ </layers>
+ </deathAppearance>
+ <shieldedAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="shield.2x2.animation"/>
+ <emitter offset="=$2x2x,$2x2y" emitter="shield.2x2.emitter"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2y" emitter="shield.sparkle.2x2.emitter"/>
+ </layers>
+ </shieldedAppearance>
+ <forcefieldAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="forcefield.2x2.animation"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2y" emitter="forcefield.sparkle.2x2.emitter"/>
+ </layers>
+ </forcefieldAppearance>
+
+ <shopAppearance>
+ <layers scale="0.5">
+ <sprite layer="10" sublayer="1" offset="0,0" image="spriteimage.info.warehouse.ground.01"/>
+ <sprite layer="10" sublayer="2" offset="0,0" bottomColored="buildings-shop-floor" topColored="buildings" image="spriteimage.info.warehouse.01"/>
+ <sprite layer="10" sublayer="3" offset="0,0" attenuated="false" colored="buildings-alt" image="spriteimage.info.warehouse.top.01"/>
+ <sprite layer="10" sublayer="3" offset="0,0" image="spriteimage.info.warehouse.glow.01"/>
+ </layers>
+ </shopAppearance>
+
+ </instance>
+
+
+ <instance
+ class="worm.buildings.BarracksBuildingFeature"
+ name="building.generic.barracks"
+ inherit="barracks.building.spec"
+ offset="=$4x4offsetX,$4x4offsetY"
+ floor="-4"
+ research="barracks"
+ spawnOffset="-3,-5"
+ flamesOffset="=$4x4xFire,$4x4yFloor*0.5"
+ flamesEmitter="damaged.building.4x4.fire.emitter"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" image="spriteimage.generic.4x4.base.01"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.barracks.ground.01"/>
+ <sprite layer="5" sublayer="0" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.barracks.back.01"/>
+ <emitter offset="50,9" ySortOffset="63" emitter="barracks.steam.emitter"/>
+ <sprite layer="5" sublayer="3" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.barracks.01"/>
+ <sprite layer="5" sublayer="4" offset="0,0" attenuated="false" colored="buildings-alt" image="spriteimage.generic.barracks.top.01"/>
+ <sprite layer="5" sublayer="5" offset="0,0" attenuated="false" image="spriteimage.generic.barracks.glow.01"/>
+ </layers>
+ </appearance>
+
+ <spawnAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="5" offset="0,0" attenuated="false" animation="generic.barracks.glow.animation"/>
+
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" image="spriteimage.generic.4x4.base.01"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.barracks.ground.01"/>
+ <sprite layer="5" sublayer="0" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.barracks.back.01"/>
+ <emitter offset="50,9" ySortOffset="63" emitter="barracks.steam.emitter"/>
+ <sprite layer="5" sublayer="3" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.barracks.01"/>
+ <sprite layer="5" sublayer="4" offset="0,0" attenuated="false" colored="buildings-alt" image="spriteimage.generic.barracks.top.01"/>
+ </layers>
+ </spawnAppearance>
+
+
+ <deathAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.barracks.dead.animation"/>
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" animation="building.4x4.dead.base.anim"/>
+ <sprite layer="4" sublayer="2" offset="0,0" attenuated="true" colored="shadow" animation="generic.barracks.dead.ground.animation"/>
+ <sprite layer="5" sublayer="4" offset="0,0" attenuated="false" colored="buildings-alt" animation="generic.barracks.dead.top.animation"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4yExplode" emitter="building.4x4.explosion.start.emitter"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4yExplode" emitter="building.4x4.explosion.end.emitter"/>
+ <emitter offset="=$4x4xFire,$4x4yFloor" ySortOffset="0" emitter="building.4x4.fire.emitter"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4ySparks" emitter="building.4x4.explosion.sparks.emitter"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4yExplode" emitter="building.4x4.explosion.flash.emitter"/>
+ </layers>
+ </deathAppearance>
+ <shieldedAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="shield.4x4.animation"/>
+ <emitter offset="=$4x4x,$4x4y" emitter="shield.4x4.emitter"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4y" emitter="shield.sparkle.4x4.emitter"/>
+ </layers>
+ </shieldedAppearance>
+ <forcefieldAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="forcefield.4x4.animation"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4y" emitter="forcefield.sparkle.4x4.emitter"/>
+ </layers>
+ </forcefieldAppearance>
+
+ <shopAppearance>
+ <layers scale="0.5">
+ <sprite layer="10" sublayer="1" offset="0,0" image="spriteimage.info.barracks.ground.01"/>
+ <sprite layer="10" sublayer="2" offset="0,0" bottomColored="buildings-shop-floor" topColored="buildings" image="spriteimage.info.barracks.01"/>
+ <sprite layer="10" sublayer="3" offset="0,0" attenuated="false" colored="buildings-alt" image="spriteimage.info.barracks.top.01"/>
+ <sprite layer="10" sublayer="3" offset="0,0" attenuated="false" image="spriteimage.info.barracks.glow.01"/>
+ </layers>
+ </shopAppearance>
+
+ </instance>
+
+
+
+ <instance
+ class="worm.buildings.CollectorBuildingFeature"
+ name="building.generic.collector"
+ inherit="collector.building.spec"
+ offset="=$2x2offsetX,$2x2offsetY"
+ floor="-4"
+ research="collector"
+ flamesOffset="=$2x2xFire,$2x2yFloor*0.5"
+ flamesEmitter="damaged.building.2x2.fire.emitter"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" image="spriteimage.generic.2x2.base.01"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.collector.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.collector.animation"/>
+ <sprite layer="5" sublayer="4" offset="0,0" attenuated="false" colored="buildings-alt" image="spriteimage.generic.collector.top.01"/>
+ <sprite layer="5" sublayer="5" offset="0,0" animation="generic.collector.glow.animation"/>
+ </layers>
+ </appearance>
+ <deathAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.collector.dead.animation"/>
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" animation="building.2x2.dead.base.anim"/>
+ <sprite layer="4" sublayer="2" offset="0,0" attenuated="true" colored="shadow" animation="generic.collector.dead.ground.animation"/>
+ <sprite layer="5" sublayer="4" offset="0,0" attenuated="false" colored="buildings-alt" image="spriteimage.generic.collector.top.01"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2yExplode" emitter="building.2x2.explosion.start.emitter"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2yExplode" emitter="building.2x2.explosion.end.emitter"/>
+ <emitter offset="=$2x2xFire,$2x2yFloor" ySortOffset="0" emitter="building.2x2.fire.emitter"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2ySparks" emitter="building.2x2.explosion.sparks.emitter"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2yExplode" emitter="building.2x2.explosion.flash.emitter"/>
+ <!-- <emitter offset="=$2x2x,0" ySortOffset="=$2x2y" emitter="test.coords.emitter"/> -->
+ </layers>
+ </deathAppearance>
+ <shieldedAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="shield.2x2.animation"/>
+ <emitter offset="=$2x2x,$2x2y" emitter="shield.2x2.emitter"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2y" emitter="shield.sparkle.2x2.emitter"/>
+ </layers>
+ </shieldedAppearance>
+ <forcefieldAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="forcefield.2x2.animation"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2y" emitter="forcefield.sparkle.2x2.emitter"/>
+ </layers>
+ </forcefieldAppearance>
+
+ <shopAppearance>
+ <layers scale="0.5">
+ <sprite layer="10" sublayer="1" offset="0,0" image="spriteimage.info.collector.ground.01"/>
+ <sprite layer="10" sublayer="2" offset="0,0" bottomColored="buildings-shop-floor" topColored="buildings" image="spriteimage.info.collector.01"/>
+ <sprite layer="10" sublayer="3" offset="0,0" image="spriteimage.info.collector.glow.01"/>
+ <sprite layer="10" sublayer="3" offset="0,0" attenuated="false" colored="buildings-alt" image="spriteimage.info.collector.top.01"/>
+ </layers>
+ </shopAppearance>
+
+ </instance>
+
+
+
+ <!-- ADD-ONS ============================================================================================================================== -->
+
+
+
+
+ <instance
+ class="worm.buildings.ScannerBuildingFeature"
+ name="building.generic.scanner"
+ inherit="scanner.building.spec"
+ offset="=$2x2offsetX,$2x2offsetY"
+ floor="-4"
+ research="scanner"
+ flamesOffset="=$2x2xFire,$2x2yFloor*0.5"
+ flamesEmitter="damaged.building.2x2.fire.emitter"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0, 0" colored="floor" attenuated="true" image="spriteimage.generic.2x2.base.01"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.scanner.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.scanner.animation"/>
+ <sprite layer="5" sublayer="3" offset="0,0" animation="generic.scanner.glow.animation"/>
+ </layers>
+ </appearance>
+ <deathAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.scanner.dead.animation"/>
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" animation="building.2x2.dead.base.anim"/>
+ <sprite layer="4" sublayer="2" offset="0,0" attenuated="true" colored="shadow" animation="generic.scanner.dead.ground.animation"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2yExplode" emitter="building.2x2.explosion.start.emitter"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2yExplode" emitter="building.2x2.explosion.end.emitter"/>
+ <emitter offset="=$2x2xFire,$2x2yFloor" ySortOffset="0" emitter="building.2x2.fire.emitter"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2ySparks" emitter="building.2x2.explosion.sparks.emitter"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2yExplode" emitter="building.2x2.explosion.flash.emitter"/>
+ <!-- <emitter offset="=$2x2x,0" ySortOffset="=$2x2y" emitter="test.coords.emitter"/> -->
+ </layers>
+ </deathAppearance>
+ <shieldedAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="shield.2x2.animation"/>
+ <emitter offset="=$2x2x,$2x2y" emitter="shield.2x2.emitter"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2y" emitter="shield.sparkle.2x2.emitter"/>
+ </layers>
+ </shieldedAppearance>
+ <forcefieldAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="forcefield.2x2.animation"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2y" emitter="forcefield.sparkle.2x2.emitter"/>
+ </layers>
+ </forcefieldAppearance>
+
+ <shopAppearance>
+ <layers scale="0.5">
+ <sprite layer="10" sublayer="1" offset="0,0" image="spriteimage.info.scanner.ground.01"/>
+ <sprite layer="10" sublayer="2" offset="0,0" bottomColored="buildings-shop-floor" topColored="buildings" image="spriteimage.info.scanner.01"/>
+ <sprite layer="10" sublayer="3" offset="0,0" image="spriteimage.info.scanner.glow.01"/>
+ </layers>
+ </shopAppearance>
+
+ </instance>
+
+
+ <instance
+ class="worm.buildings.BatteryBuildingFeature"
+ name="building.generic.battery"
+ inherit="battery.building.spec"
+ offset="=$2x2offsetX,$2x2offsetY"
+ floor="-4"
+ research="battery"
+ flamesOffset="=$2x2xFire,$2x2yFloor*0.5"
+ flamesEmitter="damaged.building.2x2.fire.emitter"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0, 0" colored="floor" attenuated="true" image="spriteimage.generic.2x2.base.01"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.battery.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.battery.animation"/>
+ <sprite layer="5" sublayer="3" offset="0, 0" animation="generic.battery.glow.animation"/>
+ </layers>
+ </appearance>
+ <deathAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.battery.dead.animation"/>
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" animation="building.2x2.dead.base.anim"/>
+ <sprite layer="4" sublayer="2" offset="0,0" attenuated="true" colored="shadow" animation="generic.battery.dead.ground.animation"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2yExplode" emitter="building.2x2.explosion.start.emitter"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2yExplode" emitter="building.2x2.explosion.end.emitter"/>
+ <emitter offset="=$2x2xFire,$2x2yFloor" ySortOffset="0" emitter="building.2x2.fire.emitter"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2ySparks" emitter="building.2x2.explosion.sparks.emitter"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2yExplode" emitter="building.2x2.explosion.flash.emitter"/>
+ <!-- <emitter offset="=$2x2x,0" ySortOffset="=$2x2y" emitter="test.coords.emitter"/> -->
+ </layers>
+ </deathAppearance>
+ <shieldedAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="shield.2x2.animation"/>
+ <emitter offset="=$2x2x,$2x2y" emitter="shield.2x2.emitter"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2y" emitter="shield.sparkle.2x2.emitter"/>
+ </layers>
+ </shieldedAppearance>
+ <forcefieldAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="forcefield.2x2.animation"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2y" emitter="forcefield.sparkle.2x2.emitter"/>
+ </layers>
+ </forcefieldAppearance>
+
+ <shopAppearance>
+ <layers scale="0.5">
+ <sprite layer="10" sublayer="1" offset="0,0" image="spriteimage.info.battery.ground.01"/>
+ <sprite layer="10" sublayer="2" offset="0,0" bottomColored="buildings-shop-floor" topColored="buildings" image="spriteimage.info.battery.01"/>
+ <sprite layer="10" sublayer="3" offset="0,0" image="spriteimage.info.battery.glow.01"/>
+ </layers>
+ </shopAppearance>
+
+ </instance>
+
+
+ <instance
+ class="worm.buildings.CoolingTowerBuildingFeature"
+ name="building.generic.coolingtower"
+ inherit="coolingtower.building.spec"
+ offset="=$2x2offsetX,$2x2offsetY"
+ floor="-4"
+ research="coolingtower"
+ flamesOffset="=$2x2xFire,$2x2yFloor*0.5"
+ flamesEmitter="damaged.building.2x2.fire.emitter"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" image="spriteimage.generic.2x2.base.01"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.cooling.ground.01"/>
+ <sprite layer="5" sublayer="1" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.cooling.back.animation"/>
+ <emitter offset="22,2" ySortOffset="32" emitter="steam.burst.emitter"/>
+ <sprite layer="5" sublayer="3" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.cooling.animation"/>
+ <sprite layer="5" sublayer="4" offset="0,0" attenuated="false" colored="buildings-alt" animation="generic.cooling.top.animation"/>
+ <sprite layer="5" sublayer="5" offset="0,0" animation="generic.cooling.glow.charge.animation"/>
+ <sprite layer="5" sublayer="5" offset="0,-1" animation="generic.cooling.glow.release.animation"/>
+ </layers>
+ </appearance>
+ <deathAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.cooling.dead.animation"/>
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" animation="building.2x2.dead.base.anim"/>
+ <sprite layer="4" sublayer="2" offset="0,0" attenuated="true" colored="shadow" animation="generic.cooling.dead.ground.animation"/>
+ <sprite layer="4" sublayer="3" offset="0,0" attenuated="false" colored="buildings-alt" animation="generic.cooling.dead.top.animation"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2yExplode" emitter="building.2x2.explosion.start.emitter"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2yExplode" emitter="building.2x2.explosion.end.emitter"/>
+ <emitter offset="=$2x2xFire,$2x2yFloor" ySortOffset="0" emitter="building.2x2.fire.emitter"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2ySparks" emitter="building.2x2.explosion.sparks.emitter"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2yExplode" emitter="building.2x2.explosion.flash.emitter"/>
+ <!-- <emitter offset="=$2x2x,0" ySortOffset="=$2x2y" emitter="test.coords.emitter"/> -->
+ </layers>
+ </deathAppearance>
+ <shieldedAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="shield.2x2.animation"/>
+ <emitter offset="=$2x2x,$2x2y" emitter="shield.2x2.emitter"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2y" emitter="shield.sparkle.2x2.emitter"/>
+ </layers>
+ </shieldedAppearance>
+ <forcefieldAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="forcefield.2x2.animation"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2y" emitter="forcefield.sparkle.2x2.emitter"/>
+ </layers>
+ </forcefieldAppearance>
+
+ <shopAppearance>
+ <layers scale="0.5">
+ <sprite layer="10" sublayer="1" offset="0,0" image="spriteimage.info.cooling.ground.01"/>
+ <sprite layer="10" sublayer="2" offset="0,0" bottomColored="buildings-shop-floor" topColored="buildings" image="spriteimage.info.cooling.01"/>
+ <sprite layer="10" sublayer="3" offset="0,0" attenuated="false" colored="buildings-alt" image="spriteimage.info.cooling.top.01"/>
+ <sprite layer="10" sublayer="3" offset="0,0" image="spriteimage.info.cooling.glow.01"/>
+ </layers>
+ </shopAppearance>
+
+ </instance>
+
+
+
+ <instance
+ class="worm.buildings.AutoLoaderBuildingFeature"
+ name="building.generic.autoloader"
+ inherit="autoloader.building.spec"
+ offset="=$2x2offsetX,$2x2offsetY"
+ floor="-4"
+ research="autoloader"
+ flamesOffset="=$2x2xFire,$2x2yFloor*0.5"
+ flamesEmitter="damaged.building.2x2.fire.emitter"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0, 0" colored="floor" attenuated="true" image="spriteimage.generic.2x2.base.01"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.autoloader.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.autoloader.01"/>
+ <sprite layer="5" sublayer="3" offset="0,0" animation="generic.autoloader.glow.animation"/>
+ </layers>
+ </appearance>
+ <deathAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.autoloader.dead.animation"/>
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" animation="building.2x2.dead.base.anim"/>
+ <sprite layer="4" sublayer="2" offset="0,0" attenuated="true" colored="shadow" animation="generic.autoloader.dead.ground.animation"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2yExplode" emitter="building.2x2.explosion.start.emitter"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2yExplode" emitter="building.2x2.explosion.end.emitter"/>
+ <emitter offset="=$2x2xFire,$2x2yFloor" ySortOffset="0" emitter="building.2x2.fire.emitter"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2ySparks" emitter="building.2x2.explosion.sparks.emitter"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2yExplode" emitter="building.2x2.explosion.flash.emitter"/>
+ <!-- <emitter offset="=$2x2x,0" ySortOffset="=$2x2y" emitter="test.coords.emitter"/> -->
+ </layers>
+ </deathAppearance>
+ <shieldedAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="shield.2x2.animation"/>
+ <emitter offset="=$2x2x,$2x2y" emitter="shield.2x2.emitter"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2y" emitter="shield.sparkle.2x2.emitter"/>
+ </layers>
+ </shieldedAppearance>
+ <forcefieldAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="forcefield.2x2.animation"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2y" emitter="forcefield.sparkle.2x2.emitter"/>
+ </layers>
+ </forcefieldAppearance>
+
+ <shopAppearance>
+ <layers scale="0.5">
+ <sprite layer="10" sublayer="1" offset="0,0" image="spriteimage.info.autoloader.ground.01"/>
+ <sprite layer="10" sublayer="2" offset="0,0" bottomColored="buildings-shop-floor" topColored="buildings" image="spriteimage.info.autoloader.01"/>
+ <sprite layer="10" sublayer="3" offset="0,0" image="spriteimage.info.autoloader.glow.01"/>
+ </layers>
+ </shopAppearance>
+
+ </instance>
+
+
+
+
+ <!-- TURRETS ============================================================================================================================== -->
+
+
+ <instance
+ class="worm.buildings.CapacitorBuildingFeature"
+ name="building.generic.capacitor"
+ inherit="capacitor.building.spec"
+ offset="=$3x3offsetX,$3x3offsetY"
+ beamOffsetX="-3"
+ beamOffsetY="9"
+ lightSpeed="4.0"
+ beamLayer="10"
+ floor="-4"
+ research="capacitor"
+ flamesOffset="=$3x3xFire,$3x3yFloor*0.5"
+ flamesEmitter="damaged.building.3x3.fire.emitter"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0, 0" colored="floor" attenuated="true" image="spriteimage.generic.3x3.base.03"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.capacitor.ground.01" />
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.capacitor.animation" />
+ <sprite layer="5" sublayer="3" offset="0, 0" animation="generic.capacitor.glow.animation"/>
+ </layers>
+ </appearance>
+ <beam>
+ <animation>
+ <frame i="spriteimage.building.spot.white.2px.01" d="0"/>
+ <scale xscale="0.7" yscale="1.2"/>
+ </animation>
+ </beam>
+ <deathAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.capacitor.dead.animation"/>
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" animation="building.3x3.dead.base.anim"/>
+ <sprite layer="4" sublayer="2" offset="0,0" attenuated="true" colored="shadow" animation="generic.capacitor.dead.ground.animation"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3yExplode" emitter="building.3x3.explosion.start.emitter"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3yExplode" emitter="building.3x3.explosion.end.emitter"/>
+ <emitter offset="=$3x3xFire,$3x3yFloor" ySortOffset="0" emitter="building.3x3.fire.emitter"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3ySparks" emitter="building.3x3.explosion.sparks.emitter"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3yExplode" emitter="building.3x3.explosion.flash.emitter"/>
+ <!-- <emitter offset="=$3x3x,0" ySortOffset="=$3x3y" emitter="test.coords.emitter"/> -->
+ </layers>
+ </deathAppearance>
+ <shieldedAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="shield.3x3.animation"/>
+ <emitter offset="=$3x3x,$3x3y" emitter="shield.3x3.emitter"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3y" emitter="shield.sparkle.3x3.emitter"/>
+ </layers>
+ </shieldedAppearance>
+ <forcefieldAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="forcefield.3x3.animation"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3y" emitter="forcefield.sparkle.3x3.emitter"/>
+ </layers>
+ </forcefieldAppearance>
+
+ <shopAppearance>
+ <layers scale="0.5">
+ <sprite layer="10" sublayer="1" offset="0,0" image="spriteimage.info.capacitor.ground.01" />
+ <sprite layer="10" sublayer="2" offset="0,0" bottomColored="buildings-shop-floor" topColored="buildings" image="spriteimage.info.capacitor.01" />
+ <sprite layer="10" sublayer="3" offset="0,0" image="spriteimage.info.capacitor.glow.01" />
+ </layers>
+ </shopAppearance>
+
+ </instance>
+
+
+
+ <instance
+ class="worm.buildings.TurretBuildingFeature"
+ name="building.generic.blaster"
+ inherit="blaster.building.spec"
+ offset="=$3x3offsetX,$3x3offsetY"
+ lightSpeed="4.0"
+ beamLayer="10"
+ floor="-4"
+ research="blaster"
+ flamesOffset="=$3x3xFire,$3x3yFloor*0.5"
+ flamesEmitter="damaged.building.3x3.fire.emitter"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0, 0" colored="floor" attenuated="true" image="spriteimage.generic.3x3.base.02"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.tower.blaster.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.tower.blaster.01"/>
+ <sprite layer="5" sublayer="3" offset="0, 0" image="spriteimage.generic.tower.blaster.glow.01"/>
+ <sprite layer="5" sublayer="3" offset="1,28" animation="building.light.red.4px.blink.animation"/>
+ <!--<sprite layer="5" sublayer="4" offset="0,0" image="spriteimage.ammo.back.01"/>-->
+ </layers>
+ </appearance>
+ <reloadAppearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" image="spriteimage.generic.3x3.base.02"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.tower.blaster.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.tower.blaster.01"/>
+ <sprite layer="5" sublayer="3" offset="0,0" animation="reload.indicator.back.animation"/>
+ <sprite layer="5" sublayer="2" offset="0,0" image="spriteimage.timer.ammo.13"/>
+ </layers>
+ </reloadAppearance>
+ <reloadingAppearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" image="spriteimage.generic.3x3.base.02"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.tower.blaster.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.tower.blaster.01"/>
+ <sprite layer="5" sublayer="3" offset="1,28" animation="building.light.red.4px.blink.animation"/>
+ </layers>
+ </reloadingAppearance>
+ <beam>
+ <animation>
+ <frame i="spriteimage.building.spot.red.2px.01" d="0"/>
+ <frame i="beam.phase.animation" d="1"/>
+ </animation>
+ </beam>
+ <deathAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.tower.blaster.dead.animation"/>
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" animation="building.3x3.dead.base.anim"/>
+ <sprite layer="4" sublayer="2" offset="0,0" attenuated="true" colored="shadow" animation="generic.tower.blaster.dead.ground.animation"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3yExplode" emitter="building.3x3.explosion.start.emitter"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3yExplode" emitter="building.3x3.explosion.end.emitter"/>
+ <emitter offset="=$3x3xFire,$3x3yFloor" ySortOffset="0" emitter="building.3x3.fire.emitter"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3ySparks" emitter="building.3x3.explosion.sparks.emitter"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3yExplode" emitter="building.3x3.explosion.flash.emitter"/>
+ <!-- <emitter offset="=$3x3x,0" ySortOffset="=$3x3y" emitter="test.coords.emitter"/> -->
+ </layers>
+ </deathAppearance>
+ <shieldedAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="shield.3x3.animation"/>
+ <emitter offset="=$3x3x,$3x3y" emitter="shield.3x3.emitter"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3y" emitter="shield.sparkle.3x3.emitter"/>
+ </layers>
+ </shieldedAppearance>
+ <forcefieldAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="forcefield.3x3.animation"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3y" emitter="forcefield.sparkle.3x3.emitter"/>
+ </layers>
+ </forcefieldAppearance>
+
+ <shopAppearance>
+ <layers scale="0.5">
+ <sprite layer="10" sublayer="1" offset="0,0" image="spriteimage.info.tower.blaster.ground.01"/>
+ <sprite layer="10" sublayer="2" offset="0,0" bottomColored="buildings-shop-floor" topColored="buildings" image="spriteimage.info.tower.blaster.01"/>
+ <sprite layer="10" sublayer="3" offset="0,0" image="spriteimage.info.tower.blaster.glow.01"/>
+ </layers>
+ </shopAppearance>
+
+ </instance>
+
+ <instance
+ class="worm.buildings.TurretBuildingFeature"
+ name="building.generic.heavyblaster"
+ inherit="heavyblaster.building.spec"
+ offset="=$3x3offsetX,$3x3offsetY"
+ lightSpeed="4.0"
+ beamLayer="10"
+ floor="-4"
+ research="heavyblaster"
+ flamesOffset="=$3x3xFire,$3x3yFloor*0.5"
+ flamesEmitter="damaged.building.3x3.fire.emitter"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0, 0" colored="floor" attenuated="true" image="spriteimage.generic.3x3.base.02"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.tower.heavyblaster.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.tower.heavyblaster.01"/>
+ <sprite layer="5" sublayer="3" offset="0, 0" image="spriteimage.generic.tower.heavyblaster.glow.01"/>
+ <sprite layer="5" sublayer="3" offset="-14,31" animation="building.light.red.4px.blink.animation"/>
+ <sprite layer="5" sublayer="3" offset="3,35" animation="building.light.white.5px.blink.animation"/>
+ </layers>
+ </appearance>
+ <reloadAppearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" image="spriteimage.generic.3x3.base.02"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.tower.heavyblaster.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.tower.heavyblaster.01"/>
+ <sprite layer="5" sublayer="3" offset="0,0" animation="reload.indicator.back.animation"/>
+ <sprite layer="5" sublayer="2" offset="0,0" image="spriteimage.timer.ammo.13"/>
+ </layers>
+ </reloadAppearance>
+ <reloadingAppearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" image="spriteimage.generic.3x3.base.02"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.tower.heavyblaster.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.tower.heavyblaster.01"/>
+ <sprite layer="5" sublayer="3" offset="-14,31" animation="building.light.red.4px.blink.animation"/>
+ <sprite layer="5" sublayer="3" offset="3,35" animation="building.light.white.5px.blink.animation"/>
+ </layers>
+ </reloadingAppearance>
+ <beam>
+ <animation>
+ <frame i="spriteimage.building.spot.orange.3px.01" d="0"/>
+ <frame i="beam.phase.animation" d="1"/>
+ </animation>
+ </beam>
+ <deathAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.tower.heavyblaster.dead.animation"/>
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" animation="building.3x3.dead.base.anim"/>
+ <sprite layer="4" sublayer="2" offset="0,0" attenuated="true" colored="shadow" animation="generic.tower.heavyblaster.dead.ground.animation"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3yExplode" emitter="building.3x3.explosion.start.emitter"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3yExplode" emitter="building.3x3.explosion.end.emitter"/>
+ <emitter offset="=$3x3xFire,$3x3yFloor" ySortOffset="0" emitter="building.3x3.fire.emitter"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3ySparks" emitter="building.3x3.explosion.sparks.emitter"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3yExplode" emitter="building.3x3.explosion.flash.emitter"/>
+ <!-- <emitter offset="=$3x3x,0" ySortOffset="=$3x3y" emitter="test.coords.emitter"/> -->
+ </layers>
+ </deathAppearance>
+ <shieldedAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="shield.3x3.animation"/>
+ <emitter offset="=$3x3x,$3x3y" emitter="shield.3x3.emitter"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3y" emitter="shield.sparkle.3x3.emitter"/>
+ </layers>
+ </shieldedAppearance>
+ <forcefieldAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="forcefield.3x3.animation"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3y" emitter="forcefield.sparkle.3x3.emitter"/>
+ </layers>
+ </forcefieldAppearance>
+
+ <shopAppearance>
+ <layers scale="0.5">
+ <sprite layer="10" sublayer="1" offset="0,0" image="spriteimage.info.tower.heavyblaster.ground.01"/>
+ <sprite layer="10" sublayer="2" offset="0,0" bottomColored="buildings-shop-floor" topColored="buildings" image="spriteimage.info.tower.heavyblaster.01"/>
+ <sprite layer="10" sublayer="3" offset="0,0" image="spriteimage.info.tower.heavyblaster.glow.01"/>
+ </layers>
+ </shopAppearance>
+
+ </instance>
+
+
+
+ <instance
+ class="worm.buildings.TurretBuildingFeature"
+ name="building.generic.multiblaster"
+ inherit="multiblaster.building.spec"
+ offset="=$3x3offsetX,$3x3offsetY"
+ lightSpeed="4.0"
+ beamLayer="10"
+ floor="-4"
+ research="multiblaster"
+ flamesOffset="=$3x3xFire,$3x3yFloor*0.5"
+ flamesEmitter="damaged.building.3x3.fire.emitter"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0, 0" colored="floor" attenuated="true" image="spriteimage.generic.3x3.base.02"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.tower.multiblaster.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.tower.multiblaster.01"/>
+ <sprite layer="5" sublayer="3" offset="0,0" image="spriteimage.generic.tower.multiblaster.glow.01"/>
+ <sprite layer="5" sublayer="3" offset="-13,35" animation="building.light.red.4px.blink.animation"/>
+ </layers>
+ </appearance>
+ <reloadAppearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" image="spriteimage.generic.3x3.base.02"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.tower.multiblaster.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.tower.multiblaster.01"/>
+ <sprite layer="5" sublayer="3" offset="0,0" animation="reload.indicator.back.animation"/>
+ <sprite layer="5" sublayer="2" offset="0,0" image="spriteimage.timer.ammo.13"/>
+ </layers>
+ </reloadAppearance>
+ <reloadingAppearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" image="spriteimage.generic.3x3.base.02"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.tower.multiblaster.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.tower.multiblaster.01"/>
+ <sprite layer="5" sublayer="3" offset="-13,35" animation="building.light.red.4px.blink.animation"/>
+ </layers>
+ </reloadingAppearance>
+ <beam>
+ <animation>
+ <frame i="spriteimage.building.spot.yellow.2px.01" d="0"/>
+ <frame i="beam.phase.animation" d="1"/>
+ </animation>
+ </beam>
+ <deathAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.tower.multiblaster.dead.animation"/>
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" animation="building.3x3.dead.base.anim"/>
+ <sprite layer="4" sublayer="2" offset="0,0" attenuated="true" colored="shadow" animation="generic.tower.multiblaster.dead.ground.animation"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3yExplode" emitter="building.3x3.explosion.start.emitter"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3yExplode" emitter="building.3x3.explosion.end.emitter"/>
+ <emitter offset="=$3x3xFire,$3x3yFloor" ySortOffset="0" emitter="building.3x3.fire.emitter"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3ySparks" emitter="building.3x3.explosion.sparks.emitter"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3yExplode" emitter="building.3x3.explosion.flash.emitter"/>
+ <!-- <emitter offset="=$3x3x,0" ySortOffset="=$3x3y" emitter="test.coords.emitter"/> -->
+ </layers>
+ </deathAppearance>
+ <shieldedAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="shield.3x3.animation"/>
+ <emitter offset="=$3x3x,$3x3y" emitter="shield.3x3.emitter"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3y" emitter="shield.sparkle.3x3.emitter"/>
+ </layers>
+ </shieldedAppearance>
+ <forcefieldAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="forcefield.3x3.animation"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3y" emitter="forcefield.sparkle.3x3.emitter"/>
+ </layers>
+ </forcefieldAppearance>
+
+ <shopAppearance>
+ <layers scale="0.5">
+ <sprite layer="10" sublayer="1" offset="0,0" image="spriteimage.info.tower.multiblaster.ground.01"/>
+ <sprite layer="10" sublayer="2" offset="0,0" bottomColored="buildings-shop-floor" topColored="buildings" image="spriteimage.info.tower.multiblaster.01"/>
+ <sprite layer="10" sublayer="3" offset="0,0" image="spriteimage.info.tower.multiblaster.glow.01"/>
+ </layers>
+ </shopAppearance>
+
+ </instance>
+
+
+ <instance
+ class="worm.buildings.TurretBuildingFeature"
+ name="building.generic.blastcannon"
+ inherit="blastcannon.building.spec"
+ offset="=$3x3offsetX,$3x3offsetY"
+ lightSpeed="4.0"
+ beamLayer="10"
+ floor="-4"
+ research="blastcannon"
+ flamesOffset="=$3x3xFire,$3x3yFloor*0.5"
+ flamesEmitter="damaged.building.3x3.fire.emitter"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0, 0" colored="floor" attenuated="true" image="spriteimage.generic.3x3.base.02"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.tower.blastcannon.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.tower.blastcannon.01"/>
+ <sprite layer="5" sublayer="3" offset="0,0" image="spriteimage.generic.tower.blastcannon.glow.01"/>
+ <sprite layer="5" sublayer="3" offset="-14,38" animation="building.light.white.5px.blink.animation"/>
+ <sprite layer="5" sublayer="3" offset="2,38" animation="building.light.white.5px.blink.animation"/>
+ </layers>
+ </appearance>
+ <reloadAppearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" image="spriteimage.generic.3x3.base.02"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.tower.blastcannon.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.tower.blastcannon.01"/>
+ <sprite layer="5" sublayer="3" offset="0,0" animation="reload.indicator.back.animation"/>
+ <sprite layer="5" sublayer="2" offset="0,0" image="spriteimage.timer.ammo.13"/>
+ </layers>
+ </reloadAppearance>
+ <reloadingAppearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" image="spriteimage.generic.3x3.base.02"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.tower.blastcannon.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.tower.blastcannon.01"/>
+ <sprite layer="5" sublayer="3" offset="-14,38" animation="building.light.white.5px.blink.animation"/>
+ <sprite layer="5" sublayer="3" offset="2,38" animation="building.light.white.5px.blink.animation"/>
+ </layers>
+ </reloadingAppearance>
+ <beam>
+ <animation>
+ <frame i="spriteimage.building.spot.cyan.3px.01" d="0"/>
+ <frame i="beam.phase.animation" d="1"/>
+ </animation>
+ </beam>
+ <deathAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.tower.blastcannon.dead.animation"/>
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" animation="building.3x3.dead.base.anim"/>
+ <sprite layer="4" sublayer="2" offset="0,0" attenuated="true" colored="shadow" animation="generic.tower.blastcannon.dead.ground.animation"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3yExplode" emitter="building.3x3.explosion.start.emitter"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3yExplode" emitter="building.3x3.explosion.end.emitter"/>
+ <emitter offset="=$3x3xFire,$3x3yFloor" ySortOffset="0" emitter="building.3x3.fire.emitter"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3ySparks" emitter="building.3x3.explosion.sparks.emitter"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3yExplode" emitter="building.3x3.explosion.flash.emitter"/>
+ <!-- <emitter offset="=$3x3x,0" ySortOffset="=$3x3y" emitter="test.coords.emitter"/> -->
+ </layers>
+ </deathAppearance>
+ <shieldedAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="shield.3x3.animation"/>
+ <emitter offset="=$3x3x,$3x3y" emitter="shield.3x3.emitter"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3y" emitter="shield.sparkle.3x3.emitter"/>
+ </layers>
+ </shieldedAppearance>
+ <forcefieldAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="forcefield.3x3.animation"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3y" emitter="forcefield.sparkle.3x3.emitter"/>
+ </layers>
+ </forcefieldAppearance>
+
+ <shopAppearance>
+ <layers scale="0.5">
+ <sprite layer="10" sublayer="1" offset="0,0" image="spriteimage.info.tower.blastcannon.ground.01"/>
+ <sprite layer="10" sublayer="2" offset="0,0" bottomColored="buildings-shop-floor" topColored="buildings" image="spriteimage.info.tower.blastcannon.01"/>
+ <sprite layer="10" sublayer="3" offset="0,0" image="spriteimage.info.tower.blastcannon.glow.01"/>
+ </layers>
+ </shopAppearance>
+
+ </instance>
+
+
+ <instance
+ class="worm.buildings.TurretBuildingFeature"
+ name="building.generic.shotgun"
+ inherit="shotgun.building.spec"
+ offset="=$3x3offsetX,$3x3offsetY"
+ lightSpeed="4.0"
+ beamLayer="10"
+ floor="-4"
+ research="spreadercannon"
+ flamesOffset="=$3x3xFire,$3x3yFloor*0.5"
+ flamesEmitter="damaged.building.3x3.fire.emitter"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0, 0" colored="floor" attenuated="true" image="spriteimage.generic.3x3.base.02"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.tower.spreader.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.tower.spreader.01"/>
+ <sprite layer="5" sublayer="3" offset="0, 0" image="spriteimage.generic.tower.spreader.glow.01"/>
+ <sprite layer="5" sublayer="3" offset="-1,37" animation="building.light.red.4px.blink.animation"/>
+ </layers>
+ </appearance>
+ <reloadAppearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" image="spriteimage.generic.3x3.base.02"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.tower.spreader.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.tower.spreader.01"/>
+ <sprite layer="5" sublayer="3" offset="0,0" animation="reload.indicator.back.animation"/>
+ <sprite layer="5" sublayer="2" offset="0,0" image="spriteimage.timer.ammo.13"/>
+ </layers>
+ </reloadAppearance>
+ <reloadingAppearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" image="spriteimage.generic.3x3.base.02"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.tower.spreader.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.tower.spreader.01"/>
+ <sprite layer="5" sublayer="3" offset="-1,37" animation="building.light.red.4px.blink.animation"/>
+ </layers>
+ </reloadingAppearance>
+ <beam>
+ <animation>
+ <frame i="spriteimage.building.spot.purple.2px.01" d="0"/>
+ <frame i="beam.phase.animation" d="1"/>
+ </animation>
+ </beam>
+ <deathAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.tower.spreader.dead.animation"/>
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" animation="building.3x3.dead.base.anim"/>
+ <sprite layer="4" sublayer="2" offset="0,0" attenuated="true" colored="shadow" animation="generic.tower.spreader.dead.ground.animation"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3yExplode" emitter="building.3x3.explosion.start.emitter"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3yExplode" emitter="building.3x3.explosion.end.emitter"/>
+ <emitter offset="=$3x3xFire,$3x3yFloor" ySortOffset="0" emitter="building.3x3.fire.emitter"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3ySparks" emitter="building.3x3.explosion.sparks.emitter"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3yExplode" emitter="building.3x3.explosion.flash.emitter"/>
+ <!-- <emitter offset="=$3x3x,0" ySortOffset="=$3x3y" emitter="test.coords.emitter"/> -->
+ </layers>
+ </deathAppearance>
+ <shieldedAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="shield.3x3.animation"/>
+ <emitter offset="=$3x3x,$3x3y" emitter="shield.3x3.emitter"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3y" emitter="shield.sparkle.3x3.emitter"/>
+ </layers>
+ </shieldedAppearance>
+ <forcefieldAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="forcefield.3x3.animation"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3y" emitter="forcefield.sparkle.3x3.emitter"/>
+ </layers>
+ </forcefieldAppearance>
+
+ <shopAppearance>
+ <layers scale="0.5">
+ <sprite layer="10" sublayer="1" offset="0,0" image="spriteimage.info.tower.spreader.ground.01"/>
+ <sprite layer="10" sublayer="2" offset="0,0" bottomColored="buildings-shop-floor" topColored="buildings" image="spriteimage.info.tower.spreader.01"/>
+ <sprite layer="10" sublayer="3" offset="0,0" image="spriteimage.info.tower.spreader.glow.01"/>
+ </layers>
+ </shopAppearance>
+
+ </instance>
+
+
+ <instance
+ class="worm.buildings.TurretBuildingFeature"
+ name="building.generic.assault"
+ inherit="assault.building.spec"
+ offset="=$4x4offsetX,$4x4offsetY"
+ lightSpeed="4.0"
+ beamLayer="10"
+ floor="-4"
+ research="assaultcannon"
+ flamesOffset="=$4x4xFire,$4x4yFloor*0.5"
+ flamesEmitter="damaged.building.4x4.fire.emitter"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0, 0" colored="floor" attenuated="true" image="spriteimage.generic.4x4.base.03"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.tower.assault.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.tower.assault.01"/>
+ <sprite layer="5" sublayer="3" offset="0,0" image="spriteimage.generic.tower.assault.glow.01"/>
+ <sprite layer="5" sublayer="3" offset="-13,42" animation="building.light.white.5px.blink.animation"/>
+ <sprite layer="5" sublayer="3" offset="0,42" animation="building.light.white.5px.blink.animation"/>
+ </layers>
+ </appearance>
+ <reloadAppearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" image="spriteimage.generic.4x4.base.03"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.tower.assault.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.tower.assault.01"/>
+ <sprite layer="5" sublayer="3" offset="0,0" animation="reload.large.indicator.back.animation"/>
+ <sprite layer="5" sublayer="2" offset="0,0" image="spriteimage.timer.large.ammo.15"/>
+ </layers>
+ </reloadAppearance>
+ <reloadingAppearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" image="spriteimage.generic.4x4.base.03"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.tower.assault.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.tower.assault.01"/>
+ <sprite layer="5" sublayer="3" offset="-13,42" animation="building.light.white.5px.blink.animation"/>
+ <sprite layer="5" sublayer="3" offset="0,42" animation="building.light.white.5px.blink.animation"/>
+ </layers>
+ </reloadingAppearance>
+ <beam>
+ <animation>
+ <frame i="spriteimage.building.spot.green.3px.01" d="0"/>
+ <frame i="beam.phase.animation" d="1"/>
+ </animation>
+ </beam>
+ <deathAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.tower.assault.dead.animation"/>
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" animation="building.4x4.dead.base.anim"/>
+ <sprite layer="4" sublayer="2" offset="0,0" attenuated="true" colored="shadow" animation="generic.tower.assault.dead.ground.animation"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4yExplode" emitter="building.4x4.explosion.start.emitter"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4yExplode" emitter="building.4x4.explosion.end.emitter"/>
+ <emitter offset="=$4x4xFire,$4x4yFloor" ySortOffset="0" emitter="building.4x4.fire.emitter"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4ySparks" emitter="building.4x4.explosion.sparks.emitter"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4yExplode" emitter="building.4x4.explosion.flash.emitter"/>
+ <!-- <emitter offset="=$4x4x,0" ySortOffset="=$4x4y" emitter="test.coords.emitter"/> -->
+ </layers>
+ </deathAppearance>
+ <shieldedAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="shield.4x4.animation"/>
+ <emitter offset="=$4x4x,$4x4y" emitter="shield.4x4.emitter"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4y" emitter="shield.sparkle.4x4.emitter"/>
+ </layers>
+ </shieldedAppearance>
+ <forcefieldAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="forcefield.4x4.animation"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4y" emitter="forcefield.sparkle.4x4.emitter"/>
+ </layers>
+ </forcefieldAppearance>
+
+ <shopAppearance>
+ <layers scale="0.5">
+ <sprite layer="10" sublayer="1" offset="0,0" image="spriteimage.info.tower.assault.ground.01"/>
+ <sprite layer="10" sublayer="2" offset="0,0" bottomColored="buildings-shop-floor" topColored="buildings" image="spriteimage.info.tower.assault.01"/>
+ <sprite layer="10" sublayer="3" offset="0,0" image="spriteimage.info.tower.assault.glow.01"/>
+ </layers>
+ </shopAppearance>
+
+ </instance>
+
+
+
+ <instance
+ class="worm.buildings.TurretBuildingFeature"
+ name="building.generic.rocket"
+ inherit="rocket.building.spec"
+ offset="=$4x4offsetX,$4x4offsetY"
+ lightSpeed="4.0"
+ beamLayer="10"
+ floor="-4"
+ research="rockets"
+ flamesOffset="=$4x4xFire,$4x4yFloor*0.5"
+ flamesEmitter="damaged.building.4x4.fire.emitter"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0, 0" colored="floor" attenuated="true" image="spriteimage.generic.4x4.base.03"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.tower.rockets.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.tower.rockets.01"/>
+ <sprite layer="5" sublayer="3" offset="0, 0" image="spriteimage.generic.tower.rockets.glow.01"/>
+ <sprite layer="5" sublayer="3" offset="11,43" animation="building.light.white.5px.blink.animation"/>
+ </layers>
+ </appearance>
+ <reloadAppearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" image="spriteimage.generic.4x4.base.03"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.tower.rockets.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.tower.rockets.01"/>
+ <sprite layer="5" sublayer="3" offset="0,0" animation="reload.large.indicator.back.animation"/>
+ <sprite layer="5" sublayer="2" offset="0,0" image="spriteimage.timer.large.ammo.15"/>
+ </layers>
+ </reloadAppearance>
+ <reloadingAppearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" image="spriteimage.generic.4x4.base.03"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.tower.rockets.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.tower.rockets.01"/>
+ <sprite layer="5" sublayer="3" offset="11,43" animation="building.light.white.5px.blink.animation"/>
+ </layers>
+ </reloadingAppearance>
+ <beam>
+ <animation>
+ <frame i="spriteimage.building.spot.purple.3px.01" d="0"/>
+ <frame i="beam.phase.animation" d="1"/>
+ </animation>
+ </beam>
+ <deathAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.tower.rockets.dead.animation"/>
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" animation="building.4x4.dead.base.anim"/>
+ <sprite layer="4" sublayer="2" offset="0,0" attenuated="true" colored="shadow" animation="generic.tower.rockets.dead.ground.animation"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4yExplode" emitter="building.4x4.explosion.start.emitter"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4yExplode" emitter="building.4x4.explosion.end.emitter"/>
+ <emitter offset="=$4x4xFire,$4x4yFloor" ySortOffset="0" emitter="building.4x4.fire.emitter"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4ySparks" emitter="building.4x4.explosion.sparks.emitter"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4yExplode" emitter="building.4x4.explosion.flash.emitter"/>
+ <!-- <emitter offset="=$4x4x,0" ySortOffset="=$4x4y" emitter="test.coords.emitter"/> -->
+ </layers>
+ </deathAppearance>
+ <shieldedAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="shield.4x4.animation"/>
+ <emitter offset="=$4x4x,$4x4y" emitter="shield.4x4.emitter"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4y" emitter="shield.sparkle.4x4.emitter"/>
+ </layers>
+ </shieldedAppearance>
+ <forcefieldAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="forcefield.4x4.animation"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4y" emitter="forcefield.sparkle.4x4.emitter"/>
+ </layers>
+ </forcefieldAppearance>
+
+ <shopAppearance>
+ <layers scale="0.5">
+ <sprite layer="10" sublayer="1" offset="0,0" image="spriteimage.info.tower.rockets.ground.01"/>
+ <sprite layer="10" sublayer="2" offset="0,0" bottomColored="buildings-shop-floor" topColored="buildings" image="spriteimage.info.tower.rockets.01"/>
+ <sprite layer="10" sublayer="3" offset="0,0" image="spriteimage.info.tower.rockets.glow.01"/>
+ </layers>
+ </shopAppearance>
+
+ </instance>
+
+
+ <instance
+ class="worm.buildings.TurretBuildingFeature"
+ name="building.generic.laser"
+ inherit="laser.building.spec"
+ offset="=$4x4offsetX,$4x4offsetY"
+ lightSpeed="4.0"
+ beamLayer="10"
+ floor="-4"
+ research="laser"
+ flamesOffset="=$4x4xFire,$4x4yFloor*0.5"
+ flamesEmitter="damaged.building.4x4.fire.emitter"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0, 0" colored="floor" attenuated="true" image="spriteimage.generic.4x4.base.03"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.tower.laser.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.tower.laser.01"/>
+ <sprite layer="5" sublayer="3" offset="0, 0" image="spriteimage.generic.tower.laser.glow.01"/>
+ <sprite layer="5" sublayer="3" offset="-24,40" animation="building.light.red.4px.blink.animation"/>
+ <sprite layer="5" sublayer="3" offset="10,43" animation="building.light.white.5px.blink.animation"/>
+ </layers>
+ </appearance>
+ <reloadAppearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" image="spriteimage.generic.4x4.base.03"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.tower.laser.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.tower.laser.01"/>
+ <sprite layer="5" sublayer="3" offset="0,0" animation="reload.large.indicator.back.animation"/>
+ <sprite layer="5" sublayer="2" offset="0,0" image="spriteimage.timer.large.ammo.15"/>
+ </layers>
+ </reloadAppearance>
+ <reloadingAppearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" image="spriteimage.generic.4x4.base.03"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.tower.laser.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.tower.laser.01"/>
+ <sprite layer="5" sublayer="3" offset="-24,40" animation="building.light.red.4px.blink.animation"/>
+ <sprite layer="5" sublayer="3" offset="10,43" animation="building.light.white.5px.blink.animation"/>
+ </layers>
+ </reloadingAppearance>
+ <beam>
+ <animation>
+ <frame i="spriteimage.building.spot.purple.3px.01" d="0"/>
+ <frame i="beam.phase.animation" d="1"/>
+ </animation>
+ </beam>
+ <deathAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.tower.laser.dead.animation"/>
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" animation="building.4x4.dead.base.anim"/>
+ <sprite layer="4" sublayer="2" offset="0,0" attenuated="true" colored="shadow" animation="generic.tower.laser.dead.ground.animation"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4yExplode" emitter="building.4x4.explosion.start.emitter"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4yExplode" emitter="building.4x4.explosion.end.emitter"/>
+ <emitter offset="=$4x4xFire,$4x4yFloor" ySortOffset="0" emitter="building.4x4.fire.emitter"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4ySparks" emitter="building.4x4.explosion.sparks.emitter"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4yExplode" emitter="building.4x4.explosion.flash.emitter"/>
+ <!-- <emitter offset="=$4x4x,0" ySortOffset="=$4x4y" emitter="test.coords.emitter"/> -->
+ </layers>
+ </deathAppearance>
+ <shieldedAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="shield.4x4.animation"/>
+ <emitter offset="=$4x4x,$4x4y" emitter="shield.4x4.emitter"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4y" emitter="shield.sparkle.4x4.emitter"/>
+ </layers>
+ </shieldedAppearance>
+ <forcefieldAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="forcefield.4x4.animation"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4y" emitter="forcefield.sparkle.4x4.emitter"/>
+ </layers>
+ </forcefieldAppearance>
+
+ <shopAppearance>
+ <layers scale="0.5">
+ <sprite layer="10" sublayer="1" offset="0,0" image="spriteimage.info.tower.laser.ground.01"/>
+ <sprite layer="10" sublayer="2" offset="0,0" bottomColored="buildings-shop-floor" topColored="buildings" image="spriteimage.info.tower.laser.01"/>
+ <sprite layer="10" sublayer="3" offset="0,0" image="spriteimage.info.tower.laser.glow.01"/>
+ </layers>
+ </shopAppearance>
+
+ </instance>
+
+
+
+ <instance
+ class="worm.buildings.TurretBuildingFeature"
+ name="building.generic.disruptor"
+ inherit="disruptor.building.spec"
+ offset="=$4x4offsetX,$4x4offsetY"
+ lightSpeed="4.0"
+ beamLayer="10"
+ floor="-4"
+ research="disruptor"
+ flamesOffset="=$4x4xFire,$4x4yFloor*0.5"
+ flamesEmitter="damaged.building.4x4.fire.emitter"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0, 0" colored="floor" attenuated="true" image="spriteimage.generic.4x4.base.03"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.tower.disruptor.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.tower.disruptor.01"/>
+ <sprite layer="5" sublayer="3" offset="0,0" attenuated="false" colored="buildings-alt" image="spriteimage.generic.tower.disruptor.top.01"/>
+ <sprite layer="5" sublayer="4" offset="0, 0" image="spriteimage.generic.tower.disruptor.glow.01"/>
+ <sprite layer="5" sublayer="3" offset="3,45" animation="building.light.red.4px.blink.animation"/>
+ <sprite layer="5" sublayer="3" offset="10,40" animation="building.light.white.5px.blink.animation"/>
+ </layers>
+ </appearance>
+ <reloadAppearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" image="spriteimage.generic.4x4.base.03"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.tower.disruptor.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.tower.disruptor.01"/>
+ <sprite layer="5" sublayer="3" offset="0,0" attenuated="false" colored="buildings-alt" image="spriteimage.generic.tower.disruptor.top.01"/>
+ <sprite layer="5" sublayer="3" offset="0,0" animation="reload.large.indicator.back.animation"/>
+ <sprite layer="5" sublayer="2" offset="0,0" image="spriteimage.timer.large.ammo.15"/>
+ </layers>
+ </reloadAppearance>
+ <reloadingAppearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" image="spriteimage.generic.4x4.base.03"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.tower.disruptor.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.tower.disruptor.01"/>
+ <sprite layer="5" sublayer="3" offset="0,0" attenuated="false" colored="buildings-alt" image="spriteimage.generic.tower.disruptor.top.01"/>
+ <sprite layer="5" sublayer="3" offset="3,45" animation="building.light.red.4px.blink.animation"/>
+ <sprite layer="5" sublayer="3" offset="10,40" animation="building.light.white.5px.blink.animation"/>
+ </layers>
+ </reloadingAppearance>
+ <beam>
+ <animation>
+ <frame i="spriteimage.building.spot.purple.3px.01" d="0"/>
+ <frame i="beam.phase.animation" d="1"/>
+ </animation>
+ </beam>
+ <deathAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.tower.disruptor.dead.animation"/>
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" animation="building.4x4.dead.base.anim"/>
+ <sprite layer="4" sublayer="2" offset="0,0" attenuated="true" colored="shadow" animation="generic.tower.disruptor.dead.ground.animation"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4yExplode" emitter="building.4x4.explosion.start.emitter"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4yExplode" emitter="building.4x4.explosion.end.emitter"/>
+ <emitter offset="=$4x4xFire,$4x4yFloor" ySortOffset="0" emitter="building.4x4.fire.emitter"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4ySparks" emitter="building.4x4.explosion.sparks.emitter"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4yExplode" emitter="building.4x4.explosion.flash.emitter"/>
+ <!-- <emitter offset="=$4x4x,0" ySortOffset="=$4x4y" emitter="test.coords.emitter"/> -->
+ </layers>
+ </deathAppearance>
+ <shieldedAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="shield.4x4.animation"/>
+ <emitter offset="=$4x4x,$4x4y" emitter="shield.4x4.emitter"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4y" emitter="shield.sparkle.4x4.emitter"/>
+ </layers>
+ </shieldedAppearance>
+ <forcefieldAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="forcefield.4x4.animation"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4y" emitter="forcefield.sparkle.4x4.emitter"/>
+ </layers>
+ </forcefieldAppearance>
+
+ <shopAppearance>
+ <layers scale="0.5">
+ <sprite layer="10" sublayer="1" offset="0,0" image="spriteimage.info.tower.disruptor.ground.01"/>
+ <sprite layer="10" sublayer="2" offset="0,0" bottomColored="buildings-shop-floor" topColored="buildings" image="spriteimage.info.tower.disruptor.01"/>
+ <sprite layer="10" sublayer="3" offset="0,0" attenuated="false" colored="buildings-alt" image="spriteimage.info.tower.disruptor.top.01"/>
+ <sprite layer="10" sublayer="3" offset="0,0" image="spriteimage.info.tower.disruptor.glow.01"/>
+ </layers>
+ </shopAppearance>
+
+ </instance>
+
+
+
+
+ <!-- MINES ============================================================================================================================== -->
+
+
+ <instance
+ class="worm.buildings.MinefieldFeature"
+ name="building.generic.mine"
+ inherit="mine.building.spec"
+ mineExplosionEmitter="mine.explosion.emitter"
+ offset="=$mineoffsetX,$mineoffsetY"
+ floor="-4"
+ research="mines"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.mine.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.mine.01"/>
+ <sprite layer="5" sublayer="3" offset="0,0" attenuated="false" animation="generic.mine.glow.animation"/>
+ </layers>
+ </appearance>
+ <deathAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.mine.dead.animation"/>
+ <sprite layer="4" sublayer="2" offset="0,0" attenuated="true" colored="shadow" animation="generic.mine.dead.ground.animation"/>
+ <emitter offset="25,25" ySortOffset="25" emitter="building.1x1.explosion.start.emitter"/>
+ <emitter offset="25,25" ySortOffset="25" emitter="building.3x3.explosion.end.emitter"/>
+ </layers>
+ </deathAppearance>
+
+ <shopAppearance>
+ <layers scale="0.5">
+ <sprite layer="10" sublayer="1" offset="0,0" colored="shadow" image="spriteimage.info.mine.ground.01"/>
+ <sprite layer="10" sublayer="2" offset="0,0" bottomColored="buildings-shop-floor" topColored="buildings" image="spriteimage.info.mine.01"/>
+ <sprite layer="10" sublayer="3" offset="0,0" attenuated="false" image="spriteimage.info.mine.glow.01"/>
+ </layers>
+ </shopAppearance>
+
+ </instance>
+
+ <instance
+ class="worm.buildings.MinefieldFeature"
+ name="building.generic.clustermine"
+ inherit="clustermine.building.spec"
+ mineExplosionEmitter="clustermine.explosion.emitter"
+ offset="=$1x1offsetX,$1x1offsetY"
+ floor="-4"
+ research="clustermines"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" attenuated="true" colored="shadow" image="spriteimage.generic.clustermine.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.clustermine.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.clustermine.03"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.clustermine.05"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.clustermine.07"/>
+ <sprite layer="5" sublayer="3" offset="0,0" attenuated="false" animation="generic.clustermine.glow.4.animation"/>
+ </layers>
+ </appearance>
+ <appearances>
+ <array>
+ <item>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" attenuated="true" colored="shadow" image="spriteimage.generic.clustermine.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.clustermine.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.clustermine.03"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.clustermine.05"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.clustermine.07"/>
+ <sprite layer="5" sublayer="3" offset="0,0" attenuated="false" animation="generic.clustermine.glow.4.animation"/>
+ </layers>
+ </item>
+ <item>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" attenuated="true" colored="shadow" image="spriteimage.generic.clustermine.ground.02"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.clustermine.03"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.clustermine.05"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.clustermine.07"/>
+ <sprite layer="5" sublayer="3" offset="0,0" attenuated="false" animation="generic.clustermine.glow.3.animation"/>
+ </layers>
+ </item>
+ <item>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" attenuated="true" colored="shadow" image="spriteimage.generic.clustermine.ground.03"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.clustermine.03"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.clustermine.07"/>
+ <sprite layer="5" sublayer="3" offset="0,0" attenuated="false" animation="generic.clustermine.glow.2.animation"/>
+ </layers>
+ </item>
+ <item>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" attenuated="true" colored="shadow" image="spriteimage.generic.clustermine.ground.04"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.clustermine.03"/>
+ <sprite layer="5" sublayer="3" offset="0,0" attenuated="false" animation="generic.clustermine.glow.1.animation"/>
+ </layers>
+ </item>
+ </array>
+ </appearances>
+
+ <shopAppearance>
+ <layers scale="0.5">
+ <sprite layer="10" sublayer="1" offset="0,0" colored="shadow" image="spriteimage.info.clustermine.ground.01"/>
+ <sprite layer="10" sublayer="2" offset="0,0" bottomColored="buildings-shop-floor" topColored="buildings" image="spriteimage.info.clustermine.02"/>
+ <sprite layer="10" sublayer="2" offset="0,0" bottomColored="buildings-shop-floor" topColored="buildings" image="spriteimage.info.clustermine.01"/>
+ <sprite layer="10" sublayer="3" offset="0,0" attenuated="false" image="spriteimage.info.clustermine.glow.01"/>
+ </layers>
+ </shopAppearance>
+
+ </instance>
+
+ <instance
+ class="worm.buildings.MinefieldFeature"
+ name="building.generic.blastmine"
+ inherit="blastmine.building.spec"
+ mineExplosionEmitter="blastmine.explosion.emitter"
+ offset="=$1x1offsetX,$1x1offsetY"
+ floor="-4"
+ research="blastmine"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.blastmine.ground.01"/>
+ <sprite layer="5" sublayer="2" attenuated="true" bottomColored="floor-fog" topColored="buildings" offset="0,0" image="spriteimage.generic.blastmine.01"/>
+ <sprite layer="5" sublayer="4" offset="0,0" attenuated="false" animation="generic.blastmine.glow.animation"/>
+ </layers>
+ </appearance>
+ <armedAppearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.blastmine.ground.01"/>
+ <sprite layer="5" sublayer="2" attenuated="true" bottomColored="floor-fog" topColored="buildings" offset="0, 0" animation="generic.blastmine.armed.animation"/>
+ <sprite layer="5" sublayer="3" offset="0, 0" attenuated="false" animation="generic.blastmine.armed.glow.animation"/>
+ </layers>
+ </armedAppearance>
+ <deathAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.blastmine.dead.animation"/>
+ <sprite layer="4" sublayer="2" offset="0,0" attenuated="true" colored="shadow" animation="generic.blastmine.dead.ground.animation"/>
+ <emitter offset="25,25" ySortOffset="25" emitter="building.1x1.explosion.start.emitter"/>
+ <emitter offset="25,25" ySortOffset="25" emitter="building.4x4.explosion.end.emitter"/>
+ </layers>
+ </deathAppearance>
+
+ <shopAppearance>
+ <layers scale="0.5">
+ <sprite layer="10" sublayer="1" offset="0,0" image="spriteimage.info.blastmine.ground.01"/>
+ <sprite layer="10" sublayer="2" bottomColored="buildings-shop-floor" topColored="buildings" offset="0,0" image="spriteimage.info.blastmine.01"/>
+ <sprite layer="10" sublayer="3" offset="0,0" attenuated="false" image="spriteimage.info.blastmine.glow.01"/>
+ </layers>
+ </shopAppearance>
+
+ </instance>
+
+
+
+
+ <!-- BARRICADES ============================================================================================================================== -->
+
+
+
+
+ <instance
+ class="worm.buildings.BarricadeFeature"
+ name="building.generic.concrete"
+ inherit="concrete.building.spec"
+ offset="=$1x1offsetX,$1x1offsetY"
+ floor="-4"
+ research="concrete"
+ flamesOffset="=$1x1xFire,$1x1yFloor*0.5"
+ flamesEmitter="damaged.building.1x1.fire.emitter"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.barricade.concrete.ground.01"/>
+ <sprite layer="5" sublayer="3" attenuated="true" bottomColored="floor-fog" topColored="buildings" offset="0,0" image="spriteimage.generic.barricade.concrete.03"/>
+ <sprite layer="5" sublayer="4" attenuated="false" colored="buildings-alt" offset="0,0" image="spriteimage.generic.barricade.concrete.top.03"/>
+ </layers>
+ </appearance>
+ <appearances>
+ <array>
+ <item>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.barricade.concrete.ground.01"/>
+ <sprite layer="5" sublayer="3" attenuated="true" bottomColored="floor-fog" topColored="buildings" offset="0,0" image="spriteimage.generic.barricade.concrete.02"/>
+ <sprite layer="5" sublayer="4" attenuated="false" colored="buildings-alt" offset="0,0" image="spriteimage.generic.barricade.concrete.top.02"/>
+ </layers>
+ </item>
+ <item>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.barricade.concrete.ground.01"/>
+ <sprite layer="5" sublayer="3" attenuated="true" bottomColored="floor-fog" topColored="buildings" offset="0,0" image="spriteimage.generic.barricade.concrete.01"/>
+ <sprite layer="5" sublayer="4" attenuated="false" colored="buildings-alt" offset="0,0" image="spriteimage.generic.barricade.concrete.top.01"/>
+ </layers>
+ </item>
+ </array>
+ </appearances>
+ <deathAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="3" attenuated="true" bottomColored="floor-fog" topColored="buildings" offset="0,0" animation="generic.barricade.concrete.dead.animation"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" animation="generic.barricade.concrete.dead.ground.animation"/>
+ <sprite layer="5" sublayer="4" attenuated="false" colored="buildings-alt" offset="0,0" animation="generic.barricade.concrete.dead.top.animation"/>
+ <emitter offset="=$1x1x,0" ySortOffset="=$1x1yExplode" emitter="building.1x1.explosion.start.emitter"/>
+ <emitter offset="=$1x1x,0" ySortOffset="=$1x1yExplode" emitter="building.1x1.explosion.end.emitter"/>
+ <emitter offset="=$1x1xFire,$1x1yFloor" ySortOffset="0" emitter="building.1x1.fire.emitter"/>
+ <emitter offset="=$1x1x,0" ySortOffset="=$1x1ySparks" emitter="building.1x1.explosion.sparks.emitter"/>
+ <emitter offset="=$1x1x,0" ySortOffset="=$1x1yExplode" emitter="building.1x1.explosion.flash.emitter"/>
+ <!-- <emitter offset="=$1x1x,0" ySortOffset="=$1x1y" emitter="test.coords.emitter"/> -->
+ </layers>
+ </deathAppearance>
+
+ <shopAppearance>
+ <layers scale="0.5">
+ <sprite layer="10" sublayer="1" offset="0,0" image="spriteimage.info.barricade.concrete.ground.01"/>
+ <sprite layer="10" sublayer="2" bottomColored="buildings-shop-floor" topColored="buildings" offset="0,0" image="spriteimage.info.barricade.concrete.01"/>
+ <sprite layer="10" sublayer="3" attenuated="false" colored="buildings-alt" offset="0,0" image="spriteimage.info.barricade.concrete.top.01"/>
+ </layers>
+ </shopAppearance>
+
+ </instance>
+
+ <instance
+ class="worm.buildings.BarricadeFeature"
+ name="building.generic.steel"
+ inherit="steel.building.spec"
+ offset="=$1x1offsetX,$1x1offsetY"
+ floor="-4"
+ research="steel"
+ flamesOffset="=$1x1xFire,$1x1yFloor*0.5"
+ flamesEmitter="damaged.building.1x1.fire.emitter"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.barricade.steel.ground.01"/>
+ <sprite layer="5" sublayer="3" attenuated="true" bottomColored="floor-fog" topColored="buildings" offset="0,0" image="spriteimage.generic.barricade.steel.04"/>
+ <sprite layer="5" sublayer="4" attenuated="false" colored="buildings-alt" offset="0,0" image="spriteimage.generic.barricade.steel.top.04"/>
+ <sprite layer="5" sublayer="5" attenuated="true" colored="buildings-highlight" offset="0,0" image="spriteimage.generic.barricade.steel.highlight.04"/>
+ </layers>
+ </appearance>
+ <appearances>
+ <array>
+ <item>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.barricade.steel.ground.01"/>
+ <sprite layer="5" sublayer="3" attenuated="true" bottomColored="floor-fog" topColored="buildings" offset="0,0" image="spriteimage.generic.barricade.steel.03"/>
+ <sprite layer="5" sublayer="4" attenuated="false" colored="buildings-alt" offset="0,0" image="spriteimage.generic.barricade.steel.top.03"/>
+ <sprite layer="5" sublayer="5" attenuated="true" colored="buildings-highlight" offset="0,0" image="spriteimage.generic.barricade.steel.highlight.03"/>
+ </layers>
+ </item>
+ <item>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.barricade.steel.ground.01"/>
+ <sprite layer="5" sublayer="3" attenuated="true" bottomColored="floor-fog" topColored="buildings" offset="0,0" image="spriteimage.generic.barricade.steel.02"/>
+ <sprite layer="5" sublayer="4" attenuated="false" colored="buildings-alt" offset="0,0" image="spriteimage.generic.barricade.steel.top.02"/>
+ <sprite layer="5" sublayer="5" attenuated="true" colored="buildings-highlight" offset="0,0" image="spriteimage.generic.barricade.steel.highlight.02"/>
+ </layers>
+ </item>
+ <item>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.barricade.steel.ground.01"/>
+ <sprite layer="5" sublayer="3" attenuated="true" bottomColored="floor-fog" topColored="buildings" offset="0,0" image="spriteimage.generic.barricade.steel.01"/>
+ <sprite layer="5" sublayer="4" attenuated="false" colored="buildings-alt" offset="0,0" image="spriteimage.generic.barricade.steel.top.01"/>
+ <sprite layer="5" sublayer="5" attenuated="true" colored="buildings-highlight" offset="0,0" image="spriteimage.generic.barricade.steel.highlight.01"/>
+ </layers>
+ </item>
+ </array>
+ </appearances>
+ <deathAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="3" attenuated="true" bottomColored="floor-fog" topColored="buildings" offset="0,0" animation="generic.barricade.steel.dead.animation"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" animation="generic.barricade.steel.dead.ground.animation"/>
+ <sprite layer="5" sublayer="4" attenuated="false" colored="buildings-alt" offset="0,0" animation="generic.barricade.steel.dead.top.animation"/>
+ <emitter offset="=$1x1x,0" ySortOffset="=$1x1yExplode" emitter="building.1x1.explosion.start.emitter"/>
+ <emitter offset="=$1x1x,0" ySortOffset="=$1x1yExplode" emitter="building.1x1.explosion.end.emitter"/>
+ <emitter offset="=$1x1xFire,$1x1yFloor" ySortOffset="0" emitter="building.1x1.fire.emitter"/>
+ <emitter offset="=$1x1x,0" ySortOffset="=$1x1ySparks" emitter="building.1x1.explosion.sparks.emitter"/>
+ <emitter offset="=$1x1x,0" ySortOffset="=$1x1yExplode" emitter="building.1x1.explosion.flash.emitter"/>
+ <!-- <emitter offset="=$1x1x,0" ySortOffset="=$1x1y" emitter="test.coords.emitter"/> -->
+ </layers>
+ </deathAppearance>
+
+ <shopAppearance>
+ <layers scale="0.5">
+ <sprite layer="10" sublayer="1" offset="0,0" image="spriteimage.info.barricade.steel.ground.01"/>
+ <sprite layer="10" sublayer="2" bottomColored="buildings-shop-floor" topColored="buildings" offset="0,0" image="spriteimage.info.barricade.steel.01"/>
+ <sprite layer="10" sublayer="3" attenuated="false" colored="buildings-alt" offset="0,0" image="spriteimage.info.barricade.steel.top.01"/>
+ <sprite layer="10" sublayer="3" colored="buildings-highlight" offset="0,0" image="spriteimage.info.barricade.steel.glow.01"/>
+ </layers>
+ </shopAppearance>
+
+ </instance>
+
+ <instance
+ class="worm.buildings.BarricadeFeature"
+ name="building.generic.titanium"
+ inherit="titanium.building.spec"
+ offset="=$1x1offsetX,$1x1offsetY"
+ floor="-4"
+ research="titanium"
+ flamesOffset="=$1x1xFire,$1x1yFloor*0.5"
+ flamesEmitter="damaged.building.1x1.fire.emitter"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.barricade.titanium.ground.01"/>
+ <sprite layer="5" sublayer="3" attenuated="true" bottomColored="floor-fog" topColored="buildings" offset="0,0" image="spriteimage.generic.barricade.titanium.05"/>
+ <sprite layer="5" sublayer="5" attenuated="true" colored="buildings-highlight" offset="0,0" image="spriteimage.generic.barricade.titanium.top.05"/>
+ </layers>
+ </appearance>
+ <appearances>
+ <array>
+ <item>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.barricade.titanium.ground.01"/>
+ <sprite layer="5" sublayer="3" attenuated="true" bottomColored="floor-fog" topColored="buildings" offset="0,0" image="spriteimage.generic.barricade.titanium.04"/>
+ <sprite layer="5" sublayer="5" attenuated="true" colored="buildings-highlight" offset="0,0" image="spriteimage.generic.barricade.titanium.top.04"/>
+ <sprite layer="5" sublayer="5" attenuated="false" offset="0,0" animation="generic.barricade.titanium.glow.damaged.2.animation"/>
+ </layers>
+ </item>
+ <item>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.barricade.titanium.ground.01"/>
+ <sprite layer="5" sublayer="3" attenuated="true" bottomColored="floor-fog" topColored="buildings" offset="0,0" image="spriteimage.generic.barricade.titanium.03"/>
+ <sprite layer="5" sublayer="5" attenuated="true" colored="buildings-highlight" offset="0,0" image="spriteimage.generic.barricade.titanium.top.03"/>
+ <sprite layer="5" sublayer="5" attenuated="false" offset="0,0" animation="generic.barricade.titanium.glow.damaged.2.animation"/>
+ </layers>
+ </item>
+ <item>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.barricade.titanium.ground.01"/>
+ <sprite layer="5" sublayer="3" attenuated="true" bottomColored="floor-fog" topColored="buildings" offset="0,0" image="spriteimage.generic.barricade.titanium.02"/>
+ <sprite layer="5" sublayer="5" attenuated="true" colored="buildings-highlight" offset="0,0" image="spriteimage.generic.barricade.titanium.top.02"/>
+ <sprite layer="5" sublayer="5" attenuated="false" offset="0,0" animation="generic.barricade.titanium.glow.damaged.1.animation"/>
+ </layers>
+ </item>
+ <item>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.barricade.titanium.ground.01"/>
+ <sprite layer="5" sublayer="3" attenuated="true" bottomColored="floor-fog" topColored="buildings" offset="0,0" image="spriteimage.generic.barricade.titanium.01"/>
+ <sprite layer="5" sublayer="5" attenuated="true" colored="buildings-highlight" offset="0,0" image="spriteimage.generic.barricade.titanium.top.01"/>
+ <sprite layer="5" sublayer="5" attenuated="false" offset="0,0" animation="generic.barricade.titanium.glow.animation"/>
+ </layers>
+ </item>
+ </array>
+ </appearances>
+ <deathAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="3" attenuated="true" bottomColored="floor-fog" topColored="buildings" offset="0,0" animation="generic.barricade.titanium.dead.animation"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" animation="generic.barricade.titanium.dead.ground.animation"/>
+ <emitter offset="=$1x1x,0" ySortOffset="=$1x1yExplode" emitter="building.1x1.explosion.start.emitter"/>
+ <emitter offset="=$1x1x,0" ySortOffset="=$1x1yExplode" emitter="building.1x1.explosion.end.emitter"/>
+ <emitter offset="=$1x1xFire,$1x1yFloor" ySortOffset="0" emitter="building.1x1.fire.emitter"/>
+ <emitter offset="=$1x1x,0" ySortOffset="=$1x1ySparks" emitter="building.1x1.explosion.sparks.emitter"/>
+ <emitter offset="=$1x1x,0" ySortOffset="=$1x1yExplode" emitter="building.1x1.explosion.flash.emitter"/>
+ <!-- <emitter offset="=$1x1x,0" ySortOffset="=$1x1y" emitter="test.coords.emitter"/> -->
+ </layers>
+ </deathAppearance>
+
+ <shopAppearance>
+ <layers scale="0.5">
+ <sprite layer="10" sublayer="1" offset="0,0" image="spriteimage.info.barricade.titanium.ground.01"/>
+ <sprite layer="10" sublayer="2" bottomColored="buildings-shop-floor" topColored="buildings" offset="0,0" image="spriteimage.info.barricade.titanium.01"/>
+ <sprite layer="10" sublayer="3" colored="buildings-highlight" offset="0,0" image="spriteimage.info.barricade.titanium.top.01"/>
+ <sprite layer="10" sublayer="3" attenuated="false" offset="0,0" image="spriteimage.info.barricade.titanium.glow.01"/>
+ </layers>
+ </shopAppearance>
+
+ </instance>
+
+ <instance
+ class="worm.buildings.BarricadeFeature"
+ name="building.generic.nanomesh"
+ inherit="nanomesh.building.spec"
+ offset="=$1x1offsetX,$1x1offsetY"
+ floor="-4"
+ research="nanomesh"
+ flamesOffset="=$1x1xFire,$1x1yFloor*0.5"
+ flamesEmitter="damaged.building.1x1.fire.emitter"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.barricade.nanomesh.ground.01"/>
+ <sprite layer="5" sublayer="3" attenuated="true" bottomColored="floor-fog" topColored="buildings" offset="0,0" image="spriteimage.generic.barricade.nanomesh.06"/>
+ </layers>
+ </appearance>
+ <appearances>
+ <array>
+ <item>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.barricade.nanomesh.ground.01"/>
+ <sprite layer="5" sublayer="3" attenuated="true" bottomColored="floor-fog" topColored="buildings" offset="0,0" image="spriteimage.generic.barricade.nanomesh.05"/>
+
+ </layers>
+ </item>
+ <item>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.barricade.nanomesh.ground.01"/>
+ <sprite layer="5" sublayer="3" attenuated="true" bottomColored="floor-fog" topColored="buildings" offset="0,0" image="spriteimage.generic.barricade.nanomesh.04"/>
+ <sprite layer="5" sublayer="5" attenuated="false" offset="0,0" animation="generic.barricade.nanomesh.glow.damaged.2.animation"/>
+ </layers>
+ </item>
+ <item>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.barricade.nanomesh.ground.01"/>
+ <sprite layer="5" sublayer="3" attenuated="true" bottomColored="floor-fog" topColored="buildings" offset="0,0" image="spriteimage.generic.barricade.nanomesh.03"/>
+ <sprite layer="5" sublayer="5" attenuated="false" offset="0,0" animation="generic.barricade.nanomesh.glow.damaged.2.animation"/>
+ </layers>
+ </item>
+ <item>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.barricade.nanomesh.ground.01"/>
+ <sprite layer="5" sublayer="3" attenuated="true" bottomColored="floor-fog" topColored="buildings" offset="0,0" image="spriteimage.generic.barricade.nanomesh.02"/>
+ <sprite layer="5" sublayer="5" attenuated="false" offset="0,0" animation="generic.barricade.nanomesh.glow.damaged.1.animation"/>
+ </layers>
+ </item>
+ <item>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.barricade.nanomesh.ground.01"/>
+ <sprite layer="5" sublayer="3" attenuated="true" bottomColored="floor-fog" topColored="buildings" offset="0,0" image="spriteimage.generic.barricade.nanomesh.01"/>
+ <sprite layer="5" sublayer="5" attenuated="false" offset="0,0" animation="generic.barricade.nanomesh.glow.animation"/>
+ </layers>
+ </item>
+ </array>
+ </appearances>
+ <deathAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="3" attenuated="true" bottomColored="floor-fog" topColored="buildings" offset="0,0" animation="generic.barricade.nanomesh.dead.animation"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" animation="generic.barricade.nanomesh.dead.ground.animation"/>
+ <emitter offset="=$1x1x,0" ySortOffset="=$1x1yExplode" emitter="building.1x1.explosion.start.emitter"/>
+ <emitter offset="=$1x1x,0" ySortOffset="=$1x1yExplode" emitter="building.1x1.explosion.end.emitter"/>
+ <emitter offset="=$1x1xFire,$1x1yFloor" ySortOffset="0" emitter="building.1x1.fire.emitter"/>
+ <emitter offset="=$1x1x,0" ySortOffset="=$1x1ySparks" emitter="building.1x1.explosion.sparks.emitter"/>
+ <emitter offset="=$1x1x,0" ySortOffset="=$1x1yExplode" emitter="building.1x1.explosion.flash.emitter"/>
+ <!-- <emitter offset="=$1x1x,0" ySortOffset="=$1x1y" emitter="test.coords.emitter"/> -->
+ </layers>
+ </deathAppearance>
+
+ <shopAppearance>
+ <layers scale="0.5">
+ <sprite layer="10" sublayer="1" offset="0,0" image="spriteimage.info.barricade.nanomesh.ground.01"/>
+ <sprite layer="10" sublayer="2" bottomColored="buildings-shop-floor" topColored="buildings" offset="0,0" image="spriteimage.info.barricade.nanomesh.01"/>
+ <sprite layer="10" sublayer="3" offset="0,0" image="spriteimage.info.barricade.nanomesh.glow.01"/>
+ </layers>
+ </shopAppearance>
+
+ </instance>
+
+ <instance
+ class="worm.buildings.BarricadeFeature"
+ name="building.generic.tangleweb"
+ inherit="tangleweb.building.spec"
+ offset="=$1x1offsetX,$1x1offsetY"
+ floor="-4"
+ research="tangleweb"
+ >
+
+
+ <appearances>
+ <array>
+ <item>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" offset="-6,0" colored="shadow" attenuated="true" image="spriteimage.generic.tangleweb.ground.01"/>
+ <sprite layer="5" sublayer="3" offset="-6,0" bottomColored="floor-fog" topColored="buildings" attenuated="true" image="spriteimage.generic.tangleweb.01"/>
+ <sprite layer="5" sublayer="5" offset="-6,0" attenuated="false" animation="generic.tangleweb.glow.animation"/>
+ <sprite layer="4" sublayer="2" offset="6,12" ySortOffset="12" colored="shadow" attenuated="true" image="spriteimage.generic.tangleweb.ground.01"/>
+ <sprite layer="5" sublayer="3" offset="6,12" ySortOffset="12" bottomColored="floor-fog" topColored="buildings" attenuated="true" image="spriteimage.generic.tangleweb.01"/>
+ <sprite layer="5" sublayer="5" offset="6,12" ySortOffset="12" attenuated="false" animation="generic.tangleweb.glow.animation"/>
+ </layers>
+ </item>
+ <item>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" offset="5,-1" ySortOffset="-1" colored="shadow" attenuated="true" image="spriteimage.generic.tangleweb.ground.01"/>
+ <sprite layer="5" sublayer="3" offset="5,-1" ySortOffset="-1" bottomColored="floor-fog" topColored="buildings" attenuated="true" image="spriteimage.generic.tangleweb.01"/>
+ <sprite layer="5" sublayer="5" offset="5,-1" ySortOffset="-1" attenuated="false" animation="generic.tangleweb.glow.animation"/>
+ <sprite layer="4" sublayer="2" offset="-5,13" ySortOffset="13" colored="shadow" attenuated="true" image="spriteimage.generic.tangleweb.ground.01"/>
+ <sprite layer="5" sublayer="3" offset="-5,13" ySortOffset="13" bottomColored="floor-fog" topColored="buildings" attenuated="true" image="spriteimage.generic.tangleweb.01"/>
+ <sprite layer="5" sublayer="5" offset="-5,13" ySortOffset="13" attenuated="false" animation="generic.tangleweb.glow.animation"/>
+ </layers>
+ </item>
+ </array>
+ </appearances>
+
+ <shopAppearance>
+ <layers scale="0.5">
+ <sprite layer="10" sublayer="1" offset="0,0" image="spriteimage.info.tangleweb.ground.01"/>
+ <sprite layer="10" sublayer="2" bottomColored="buildings-shop-floor" topColored="buildings" offset="0,0" image="spriteimage.info.tangleweb.01"/>
+ <sprite layer="10" sublayer="3" offset="0,0" image="spriteimage.info.tangleweb.glow.01"/>
+ </layers>
+ </shopAppearance>
+
+ </instance>
+
+
+ <!-- NEW ======================================================================================================================= -->
+
+
+ <instance
+ class="worm.buildings.BarracksBuildingFeature"
+ name="building.generic.tankfactory"
+ inherit="tankfactory.building.spec"
+ offset="=$4x4offsetX,$4x4offsetY"
+ floor="-4"
+ research="tankfactory"
+ spawnOffset="-4,-5"
+ flamesOffset="=$4x4xFire,$4x4yFloor*0.5"
+ flamesEmitter="damaged.building.4x4.fire.emitter"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" image="spriteimage.generic.4x4.base.01"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.tankfactory.ground.01"/>
+ <sprite layer="5" sublayer="0" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.tankfactory.back.01"/>
+ <emitter offset="28,9" ySortOffset="67" emitter="barracks.steam.emitter"/>
+ <sprite layer="5" sublayer="3" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.tankfactory.01"/>
+ <sprite layer="5" sublayer="4" offset="0,0" attenuated="false" colored="buildings-alt" image="spriteimage.generic.tankfactory.top.01"/>
+ <sprite layer="5" sublayer="5" offset="0,0" attenuated="false" animation="generic.tankfactory.glow.animation"/>
+ </layers>
+ </appearance>
+ <spawnAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="5" offset="0,0" attenuated="false" animation="generic.tankfactory.spawn.glow.animation"/>
+
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" image="spriteimage.generic.4x4.base.01"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.tankfactory.ground.01"/>
+ <sprite layer="5" sublayer="0" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.tankfactory.back.01"/>
+ <emitter offset="28,9" ySortOffset="67" emitter="barracks.steam.emitter"/>
+ <sprite layer="5" sublayer="3" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.tankfactory.01"/>
+ <sprite layer="5" sublayer="4" offset="0,0" attenuated="false" colored="buildings-alt" image="spriteimage.generic.tankfactory.top.01"/>
+ </layers>
+ </spawnAppearance>
+ <deathAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.tankfactory.dead.animation"/>
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" animation="building.4x4.dead.base.anim"/>
+ <sprite layer="4" sublayer="2" offset="0,0" attenuated="true" colored="shadow" animation="generic.tankfactory.dead.ground.animation"/>
+ <sprite layer="5" sublayer="4" offset="0,0" attenuated="false" colored="buildings-alt" animation="generic.tankfactory.dead.top.animation"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4yExplode" emitter="building.4x4.explosion.start.emitter"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4yExplode" emitter="building.4x4.explosion.end.emitter"/>
+ <emitter offset="=$4x4xFire,$4x4yFloor" ySortOffset="0" emitter="building.4x4.fire.emitter"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4ySparks" emitter="building.4x4.explosion.sparks.emitter"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4yExplode" emitter="building.4x4.explosion.flash.emitter"/>
+ </layers>
+ </deathAppearance>
+ <shieldedAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="shield.4x4.animation"/>
+ <emitter offset="=$4x4x,$4x4y" emitter="shield.4x4.emitter"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4y" emitter="shield.sparkle.4x4.emitter"/>
+ </layers>
+ </shieldedAppearance>
+ <forcefieldAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="forcefield.4x4.animation"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4y" emitter="forcefield.sparkle.4x4.emitter"/>
+ </layers>
+ </forcefieldAppearance>
+
+ <shopAppearance>
+ <layers scale="0.5">
+ <sprite layer="10" sublayer="1" offset="0,0" image="spriteimage.info.tankfactory.ground.01"/>
+ <sprite layer="10" sublayer="2" offset="0,0" bottomColored="buildings-shop-floor" topColored="buildings" image="spriteimage.info.tankfactory.01"/>
+ <sprite layer="10" sublayer="3" offset="0,0" attenuated="false" colored="buildings-alt" image="spriteimage.info.tankfactory.top.01"/>
+ <sprite layer="10" sublayer="3" offset="0,0" attenuated="false" image="spriteimage.info.tankfactory.glow.01"/>
+ </layers>
+ </shopAppearance>
+
+ </instance>
+
+
+ <instance
+ class="worm.buildings.BarracksBuildingFeature"
+ name="building.generic.repairdrones"
+ inherit="repairdrones.building.spec"
+ offset="=$4x4offsetX,$4x4offsetY"
+ floor="-4"
+ research="repairdrones"
+ spawnOffset="-3,-6"
+ flamesOffset="=$4x4xFire,$4x4yFloor*0.5"
+ flamesEmitter="damaged.building.4x4.fire.emitter"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" image="spriteimage.generic.4x4.base.01"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.repairdrones.ground.01"/>
+ <sprite layer="5" sublayer="0" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.repairdrones.back.01"/>
+ <emitter offset="25,9" ySortOffset="53" emitter="dronefactory.left.steam.emitter"/>
+ <emitter offset="57,9" ySortOffset="53" emitter="dronefactory.right.steam.emitter"/>
+ <sprite layer="5" sublayer="3" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.repairdrones.01"/>
+ <sprite layer="5" sublayer="4" offset="0,0" attenuated="false" colored="buildings-alt" image="spriteimage.generic.repairdrones.top.01"/>
+ <sprite layer="5" sublayer="5" offset="0,0" attenuated="false" image="spriteimage.generic.repairdrones.glow.01"/>
+ </layers>
+ </appearance>
+ <spawnAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="5" offset="0,0" attenuated="false" animation="generic.repairdrones.glow.animation"/>
+
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" image="spriteimage.generic.4x4.base.01"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.repairdrones.ground.01"/>
+ <sprite layer="5" sublayer="0" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.repairdrones.back.01"/>
+ <emitter offset="25,9" ySortOffset="53" emitter="dronefactory.left.steam.emitter"/>
+ <emitter offset="57,9" ySortOffset="53" emitter="dronefactory.right.steam.emitter"/>
+ <sprite layer="5" sublayer="3" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.repairdrones.01"/>
+ <sprite layer="5" sublayer="4" offset="0,0" attenuated="false" colored="buildings-alt" image="spriteimage.generic.repairdrones.top.01"/>
+ </layers>
+ </spawnAppearance>
+ <deathAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.repairdrones.dead.animation"/>
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" animation="building.4x4.dead.base.anim"/>
+ <sprite layer="4" sublayer="2" offset="0,0" attenuated="true" colored="shadow" animation="generic.repairdrones.dead.ground.animation"/>
+ <sprite layer="5" sublayer="4" offset="0,0" attenuated="false" colored="buildings-alt" animation="generic.repairdrones.dead.top.animation"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4yExplode" emitter="building.4x4.explosion.start.emitter"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4yExplode" emitter="building.4x4.explosion.end.emitter"/>
+ <emitter offset="=$4x4xFire,$4x4yFloor" ySortOffset="0" emitter="building.4x4.fire.emitter"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4ySparks" emitter="building.4x4.explosion.sparks.emitter"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4yExplode" emitter="building.4x4.explosion.flash.emitter"/>
+ </layers>
+ </deathAppearance>
+ <shieldedAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="shield.4x4.animation"/>
+ <emitter offset="=$4x4x,$4x4y" emitter="shield.4x4.emitter"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4y" emitter="shield.sparkle.4x4.emitter"/>
+ </layers>
+ </shieldedAppearance>
+ <forcefieldAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="forcefield.4x4.animation"/>
+ <emitter offset="=$4x4x,0" ySortOffset="=$4x4y" emitter="forcefield.sparkle.4x4.emitter"/>
+ </layers>
+ </forcefieldAppearance>
+
+ <shopAppearance>
+ <layers scale="0.5">
+ <sprite layer="10" sublayer="1" offset="0,0" image="spriteimage.info.repairdrones.ground.01"/>
+ <sprite layer="10" sublayer="2" offset="0,0" bottomColored="buildings-shop-floor" topColored="buildings" image="spriteimage.info.repairdrones.01"/>
+ <sprite layer="10" sublayer="3" offset="0,0" attenuated="false" colored="buildings-alt" image="spriteimage.info.repairdrones.top.01"/>
+ <sprite layer="10" sublayer="3" offset="0,0" attenuated="false" image="spriteimage.info.repairdrones.glow.01"/>
+ </layers>
+ </shopAppearance>
+
+ </instance>
+
+
+ <instance
+ class="worm.buildings.ScarecrowBuildingFeature"
+ name="building.generic.scarecrow"
+ inherit="scarecrow.building.spec"
+ offset="=$2x2offsetX,$2x2offsetY"
+ floor="-4"
+ research="scarecrow"
+ flamesOffset="=$2x2xFire,$2x2yFloor*0.5"
+ flamesEmitter="damaged.building.2x2.fire.emitter"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" image="spriteimage.generic.2x2.base.01"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.scarecrow.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.scarecrow.01"/>
+ <sprite layer="5" sublayer="3" offset="0,0" animation="generic.scarecrow.glow.animation"/>
+ <sprite layer="5" sublayer="4" offset="0,0" animation="generic.scarecrow.skull.animation"/>
+ </layers>
+ </appearance>
+ <deathAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.scarecrow.dead.animation"/>
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" animation="building.2x2.dead.base.anim"/>
+ <sprite layer="4" sublayer="2" offset="0,0" attenuated="true" colored="shadow" animation="generic.scarecrow.dead.ground.animation"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2yExplode" emitter="building.2x2.explosion.start.emitter"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2yExplode" emitter="building.2x2.explosion.end.emitter"/>
+ <emitter offset="=$2x2xFire,$2x2yFloor" ySortOffset="0" emitter="building.2x2.fire.emitter"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2ySparks" emitter="building.2x2.explosion.sparks.emitter"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2yExplode" emitter="building.2x2.explosion.flash.emitter"/>
+ </layers>
+ </deathAppearance>
+ <shieldedAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="shield.2x2.animation"/>
+ <emitter offset="=$2x2x,$2x2y" emitter="shield.2x2.emitter"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2y" emitter="shield.sparkle.2x2.emitter"/>
+ </layers>
+ </shieldedAppearance>
+ <forcefieldAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="forcefield.2x2.animation"/>
+ <emitter offset="=$2x2x,0" ySortOffset="=$2x2y" emitter="forcefield.sparkle.2x2.emitter"/>
+ </layers>
+ </forcefieldAppearance>
+
+ <shopAppearance>
+ <layers scale="0.5">
+ <sprite layer="10" sublayer="1" offset="0,0" image="spriteimage.info.scarecrow.ground.01"/>
+ <sprite layer="10" sublayer="2" offset="0,0" bottomColored="buildings-shop-floor" topColored="buildings" image="spriteimage.info.scarecrow.01"/>
+ <sprite layer="10" sublayer="3" offset="0,0" attenuated="false" colored="buildings-alt" image="spriteimage.info.scarecrow.top.01"/>
+ <sprite layer="10" sublayer="3" offset="0,0" image="spriteimage.info.scarecrow.glow.01"/>
+ </layers>
+ </shopAppearance>
+
+ </instance>
+
+
+ <instance
+ class="worm.buildings.CloakBuildingFeature"
+ name="building.generic.cloakingdevice"
+ inherit="cloakingdevice.building.spec"
+ offset="=$3x3offsetX,$3x3offsetY"
+ floor="-4"
+ research="cloakingdevice"
+ flamesOffset="=$3x3xFire,$3x3yFloor*0.5"
+ flamesEmitter="damaged.building.3x3.fire.emitter"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" image="spriteimage.generic.3x3.base.01"/>
+ <sprite layer="4" sublayer="2" offset="0,0" colored="shadow" attenuated="true" image="spriteimage.generic.cloakingdevice.ground.01"/>
+ <sprite layer="5" sublayer="2" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" image="spriteimage.generic.cloakingdevice.01"/>
+ <sprite layer="5" sublayer="3" offset="0,0" attenuated="false" colored="buildings-alt" image="spriteimage.generic.cloakingdevice.top.01"/>
+ <sprite layer="5" sublayer="5" offset="0,0" animation="generic.cloakingdevice.glow.animation"/>
+ <sprite layer="5" sublayer="5" offset="0,0" animation="generic.cloakingdevice.glow.2.animation"/>
+ </layers>
+ </appearance>
+ <deathAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" offset="0,0" attenuated="true" bottomColored="floor-fog" topColored="buildings" animation="generic.cloakingdevice.dead.animation"/>
+ <sprite layer="4" offset="0,0" colored="floor" attenuated="true" animation="building.3x3.dead.base.anim"/>
+ <sprite layer="4" sublayer="2" offset="0,0" attenuated="true" colored="shadow" animation="generic.cloakingdevice.dead.ground.animation"/>
+ <sprite layer="4" sublayer="3" offset="0,0" attenuated="false" colored="buildings-alt" animation="generic.cloakingdevice.dead.top.animation"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3yExplode" emitter="building.3x3.explosion.start.emitter"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3yExplode" emitter="building.3x3.explosion.end.emitter"/>
+ <emitter offset="=$3x3xFire,$3x3yFloor" ySortOffset="0" emitter="building.3x3.fire.emitter"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3ySparks" emitter="building.3x3.explosion.sparks.emitter"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3yExplode" emitter="building.3x3.explosion.flash.emitter"/>
+ </layers>
+ </deathAppearance>
+ <shieldedAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="shield.3x3.animation"/>
+ <emitter offset="=$3x3x,$3x3y" emitter="shield.3x3.emitter"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3y" emitter="shield.sparkle.3x3.emitter"/>
+ </layers>
+ </shieldedAppearance>
+ <forcefieldAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" sublayer="6" offset="0,0" attenuated="false" animation="forcefield.3x3.animation"/>
+ <emitter offset="=$3x3x,0" ySortOffset="=$3x3y" emitter="forcefield.sparkle.3x3.emitter"/>
+ </layers>
+ </forcefieldAppearance>
+
+ <shopAppearance>
+ <layers scale="0.5">
+ <sprite layer="10" sublayer="1" offset="0,0" image="spriteimage.info.cloakingdevice.ground.01"/>
+ <sprite layer="10" sublayer="2" offset="0,0" bottomColored="buildings-shop-floor" topColored="buildings" image="spriteimage.info.cloakingdevice.01"/>
+ <sprite layer="10" sublayer="3" offset="0,0" attenuated="false" colored="buildings-alt" image="spriteimage.info.cloakingdevice.top.01"/>
+ <sprite layer="10" sublayer="3" offset="0,0" image="spriteimage.info.cloakingdevice.glow.01"/>
+ </layers>
+ </shopAppearance>
+
+ </instance>
+
+
+ <!-- CRYSTALS ======================================================================================================================= -->
+
+ <animation name="crystal.top.fade.anim">
+
+ <random>
+ <dest seq="2"/>
+ <dest seq="4"/>
+ <dest seq="6"/>
+ <dest seq="8"/>
+ <dest seq="10"/>
+ <dest seq="12"/>
+ <dest seq="14"/>
+ <dest seq="16"/>
+ <dest seq="18"/>
+ <dest seq="20"/>
+ <dest seq="22"/>
+ <dest seq="24"/>
+ <dest seq="26"/>
+ <dest seq="28"/>
+ </random>
+
+ <label id="start"/>
+ <animcolor a="0" d="3" />
+ <animcolor a="5" d="3" />
+ <animcolor a="14" d="3" />
+ <animcolor a="24" d="3" />
+ <animcolor a="36" d="3" />
+ <animcolor a="49" d="3" />
+ <animcolor a="63" d="3" />
+ <animcolor a="77" d="3" />
+ <animcolor a="91" d="3" />
+ <animcolor a="106" d="3" />
+ <animcolor a="121" d="3" />
+ <animcolor a="136" d="3" />
+ <animcolor a="151" d="3" />
+ <animcolor a="166" d="3" />
+ <animcolor a="181" d="3" />
+ <animcolor a="196" d="3" />
+ <animcolor a="210" d="3" />
+ <animcolor a="224" d="3" />
+ <animcolor a="237" d="3" />
+ <animcolor a="248" d="3" />
+ <animcolor a="255" d="3" />
+ <animcolor a="254" d="3" />
+ <animcolor a="253" d="3" />
+ <animcolor a="252" d="3" />
+ <animcolor a="250" d="3" />
+ <animcolor a="247" d="3" />
+ <animcolor a="244" d="3" />
+ <animcolor a="240" d="3" />
+ <animcolor a="236" d="3" />
+ <animcolor a="231" d="3" />
+ <animcolor a="226" d="3" />
+ <animcolor a="220" d="3" />
+ <animcolor a="214" d="3" />
+ <animcolor a="208" d="3" />
+ <animcolor a="201" d="3" />
+ <animcolor a="194" d="3" />
+ <animcolor a="186" d="3" />
+ <animcolor a="178" d="3" />
+ <animcolor a="170" d="3" />
+ <animcolor a="162" d="3" />
+ <animcolor a="153" d="3" />
+ <animcolor a="144" d="3" />
+ <animcolor a="135" d="3" />
+ <animcolor a="126" d="3" />
+ <animcolor a="117" d="3" />
+ <animcolor a="107" d="3" />
+ <animcolor a="98" d="3" />
+ <animcolor a="88" d="3" />
+ <animcolor a="79" d="3" />
+ <animcolor a="70" d="3" />
+ <animcolor a="60" d="3" />
+ <animcolor a="51" d="3" />
+ <animcolor a="43" d="3" />
+ <animcolor a="34" d="3" />
+ <animcolor a="27" d="3" />
+ <animcolor a="19" d="3" />
+ <animcolor a="13" d="3" />
+ <animcolor a="8" d="3" />
+ <animcolor a="3" d="3" />
+ <animcolor a="0" d="3" />
+ <goto id="start"/>
+ </animation>
+
+
+ <animation name="crystal.small.top.01.anim">
+ <frame i="spriteimage.crystal.small.top.01" d="0"/>
+ <frame i="crystal.top.fade.anim" d="0"/>
+ </animation>
+ <animation name="crystal.small.top.02.anim">
+ <frame i="spriteimage.crystal.small.top.02" d="0"/>
+ <frame i="crystal.top.fade.anim" d="0"/>
+ </animation>
+ <animation name="crystal.small.top.03.anim">
+ <frame i="spriteimage.crystal.small.top.03" d="0"/>
+ <frame i="crystal.top.fade.anim" d="0"/>
+ </animation>
+ <animation name="crystal.small.top.04.anim">
+ <frame i="spriteimage.crystal.small.top.04" d="0"/>
+ <frame i="crystal.top.fade.anim" d="0"/>
+ </animation>
+ <animation name="crystal.small.top.05.anim">
+ <frame i="spriteimage.crystal.small.top.05" d="0"/>
+ <frame i="crystal.top.fade.anim" d="0"/>
+ </animation>
+ <animation name="crystal.small.top.06.anim">
+ <frame i="spriteimage.crystal.small.top.06" d="0"/>
+ <frame i="crystal.top.fade.anim" d="0"/>
+ </animation>
+ <animation name="crystal.small.top.07.anim">
+ <frame i="spriteimage.crystal.small.top.07" d="0"/>
+ <frame i="crystal.top.fade.anim" d="0"/>
+ </animation>
+ <animation name="crystal.small.top.08.anim">
+ <frame i="spriteimage.crystal.small.top.08" d="0"/>
+ <frame i="crystal.top.fade.anim" d="0"/>
+ </animation>
+ <animation name="crystal.small.top.09.anim">
+ <frame i="spriteimage.crystal.small.top.09" d="0"/>
+ <frame i="crystal.top.fade.anim" d="0"/>
+ </animation>
+ <animation name="crystal.small.top.10.anim">
+ <frame i="spriteimage.crystal.small.top.10" d="0"/>
+ <frame i="crystal.top.fade.anim" d="0"/>
+ </animation>
+ <animation name="crystal.small.top.11.anim">
+ <frame i="spriteimage.crystal.small.top.11" d="0"/>
+ <frame i="crystal.top.fade.anim" d="0"/>
+ </animation>
+ <animation name="crystal.small.top.12.anim">
+ <frame i="spriteimage.crystal.small.top.12" d="0"/>
+ <frame i="crystal.top.fade.anim" d="0"/>
+ </animation>
+
+ <animation name="crystal.medium.top.01.anim">
+ <frame i="spriteimage.crystal.medium.top.01" d="0"/>
+ <frame i="crystal.top.fade.anim" d="0"/>
+ </animation>
+ <animation name="crystal.medium.top.02.anim">
+ <frame i="spriteimage.crystal.medium.top.02" d="0"/>
+ <frame i="crystal.top.fade.anim" d="0"/>
+ </animation>
+ <animation name="crystal.medium.top.03.anim">
+ <frame i="spriteimage.crystal.medium.top.03" d="0"/>
+ <frame i="crystal.top.fade.anim" d="0"/>
+ </animation>
+ <animation name="crystal.medium.top.04.anim">
+ <frame i="spriteimage.crystal.medium.top.04" d="0"/>
+ <frame i="crystal.top.fade.anim" d="0"/>
+ </animation>
+ <animation name="crystal.medium.top.05.anim">
+ <frame i="spriteimage.crystal.medium.top.05" d="0"/>
+ <frame i="crystal.top.fade.anim" d="0"/>
+ </animation>
+ <animation name="crystal.medium.top.06.anim">
+ <frame i="spriteimage.crystal.medium.top.06" d="0"/>
+ <frame i="crystal.top.fade.anim" d="0"/>
+ </animation>
+
+ <animation name="crystal.large.top.01.anim">
+ <frame i="spriteimage.crystal.large.top.01" d="0"/>
+ <frame i="crystal.top.fade.anim" d="0"/>
+ </animation>
+
+
+ <include resource="crystals.xml" />
+ <include resource="crystals-2tone.xml" />
+
+
+
+</resources>
diff --git a/src/buildings-mars.xml b/src/buildings-mars.xml
new file mode 100644
index 0000000..d3a1b8a
--- /dev/null
+++ b/src/buildings-mars.xml
@@ -0,0 +1,47 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!--
+ Copyright (c) 2003-onwards Shaven Puppy Ltd
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of 'Shaven Puppy' nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<!-- Mars Buildings -->
+<resources>
+
+ <!-- Load all the tags -->
+ <include resource="tags.xml" />
+
+ <instance
+ class="worm.buildings.BaseBuildingFeature"
+ name="building.mars.base"
+ inherit="building.earth.base"
+ >
+ </instance>
+
+</resources>
diff --git a/src/buildings-moon.xml b/src/buildings-moon.xml
new file mode 100644
index 0000000..ec1b96c
--- /dev/null
+++ b/src/buildings-moon.xml
@@ -0,0 +1,343 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!--
+ Copyright (c) 2003-onwards Shaven Puppy Ltd
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of 'Shaven Puppy' nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<!-- Mars Buildings -->
+<resources>
+
+ <!-- Load all the tags -->
+ <include resource="tags.xml" />
+
+ <instance
+ class="worm.buildings.BaseBuildingFeature"
+ name="building.moon.base"
+ inherit="building.earth.base"
+ >
+ </instance>
+
+
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="moon.pod.master"
+ hitpoints="2"
+ bounds="0,0,8,8"
+ floor="-4"
+ >
+ <deathAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" animation="obstacle.dead.animation"/>
+ <emitter offset="8,0" ySortOffset="8" emitter="obstacle.explosion.emitter"/>
+ <emitter offset="2,0" ySortOffset="2" emitter="obstacle.explosion.fire.emitter"/>
+ </layers>
+ </deathAppearance>
+ </instance>
+
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="moon.vehicle.master"
+ hitpoints="2"
+ bounds="0,0,8,8"
+ floor="-4"
+ >
+ <deathAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" animation="obstacle.dead.animation"/>
+ <emitter offset="8,0" ySortOffset="8" emitter="obstacle.explosion.emitter"/>
+ <emitter offset="2,0" ySortOffset="2" emitter="obstacle.explosion.fire.emitter"/>
+ </layers>
+ </deathAppearance>
+ </instance>
+
+
+
+
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="moon.pod.1"
+ inherit="moon.pod.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.moon.obstacle.1.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-vehicle" attenuated="true" image="spriteimage.moon.obstacle.1.01" />
+ </layers>
+ </appearance>
+ </instance>
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="moon.pod.2"
+ inherit="moon.pod.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.moon.obstacle.1.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-vehicle" attenuated="true" image="spriteimage.moon.obstacle.1.02" />
+ </layers>
+ </appearance>
+ </instance>
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="moon.pod.3"
+ inherit="moon.pod.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.moon.obstacle.1.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-vehicle" attenuated="true" image="spriteimage.moon.obstacle.1.03" />
+ </layers>
+ </appearance>
+ </instance>
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="moon.pod.4"
+ inherit="moon.pod.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.moon.obstacle.1.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-vehicle" attenuated="true" image="spriteimage.moon.obstacle.1.04" />
+ </layers>
+ </appearance>
+ </instance>
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="moon.pod.5"
+ inherit="moon.pod.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.moon.obstacle.1.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-vehicle" attenuated="true" image="spriteimage.moon.obstacle.1.05" />
+ </layers>
+ </appearance>
+ </instance>
+
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="moon.pod.burning.1"
+ inherit="moon.pod.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.moon.obstacle.1.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-vehicle" attenuated="true" image="spriteimage.moon.obstacle.1.01" />
+ <emitter offset="4,0" ySortOffset="4" emitter="ruins.small.fire.emitter"/>
+ </layers>
+ </appearance>
+ </instance>
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="moon.pod.burning.2"
+ inherit="moon.pod.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="3" colored="shadow" attenuated="true" image="spriteimage.moon.obstacle.1.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-vehicle" attenuated="true" image="spriteimage.moon.obstacle.1.02" />
+ <emitter offset="4,0" ySortOffset="4" emitter="ruins.small.fire.emitter"/>
+ </layers>
+ </appearance>
+ </instance>
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="moon.pod.burning.3"
+ inherit="moon.pod.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.moon.obstacle.1.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-vehicle" attenuated="true" image="spriteimage.moon.obstacle.1.03" />
+ <emitter offset="4,0" ySortOffset="4" emitter="ruins.small.fire.emitter"/>
+ </layers>
+ </appearance>
+ </instance>
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="moon.pod.burning.4"
+ inherit="moon.pod.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.moon.obstacle.1.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-vehicle" attenuated="true" image="spriteimage.moon.obstacle.1.04" />
+ <emitter offset="4,0" ySortOffset="4" emitter="ruins.small.fire.emitter"/>
+ </layers>
+ </appearance>
+ </instance>
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="moon.pod.burning.5"
+ inherit="moon.pod.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.moon.obstacle.1.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-vehicle" attenuated="true" image="spriteimage.moon.obstacle.1.05" />
+ <emitter offset="4,0" ySortOffset="4" emitter="ruins.small.fire.emitter"/>
+ </layers>
+ </appearance>
+ </instance>
+
+
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="moon.vehicle.1"
+ inherit="moon.vehicle.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.moon.obstacle.2.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-vehicle" attenuated="true" image="spriteimage.moon.obstacle.2.01" />
+ </layers>
+ </appearance>
+ </instance>
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="moon.vehicle.2"
+ inherit="moon.vehicle.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.moon.obstacle.2.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-vehicle" attenuated="true" image="spriteimage.moon.obstacle.2.02" />
+ </layers>
+ </appearance>
+ </instance>
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="moon.vehicle.3"
+ inherit="moon.vehicle.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.moon.obstacle.2.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-vehicle" attenuated="true" image="spriteimage.moon.obstacle.2.03" />
+ </layers>
+ </appearance>
+ </instance>
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="moon.vehicle.4"
+ inherit="moon.vehicle.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.moon.obstacle.2.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-vehicle" attenuated="true" image="spriteimage.moon.obstacle.2.04" />
+ </layers>
+ </appearance>
+ </instance>
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="moon.vehicle.5"
+ inherit="moon.vehicle.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.moon.obstacle.2.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-vehicle" attenuated="true" image="spriteimage.moon.obstacle.2.05" />
+ </layers>
+ </appearance>
+ </instance>
+
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="moon.vehicle.burning.1"
+ inherit="moon.vehicle.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.moon.obstacle.2.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-vehicle" attenuated="true" image="spriteimage.moon.obstacle.2.01" />
+ <emitter offset="4,0" ySortOffset="4" emitter="ruins.small.fire.emitter"/>
+ </layers>
+ </appearance>
+ </instance>
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="moon.vehicle.burning.2"
+ inherit="moon.vehicle.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="3" colored="shadow" attenuated="true" image="spriteimage.moon.obstacle.2.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-vehicle" attenuated="true" image="spriteimage.moon.obstacle.2.02" />
+ <emitter offset="4,0" ySortOffset="4" emitter="ruins.small.fire.emitter"/>
+ </layers>
+ </appearance>
+ </instance>
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="moon.vehicle.burning.3"
+ inherit="moon.vehicle.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.moon.obstacle.2.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-vehicle" attenuated="true" image="spriteimage.moon.obstacle.2.03" />
+ <emitter offset="4,0" ySortOffset="4" emitter="ruins.small.fire.emitter"/>
+ </layers>
+ </appearance>
+ </instance>
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="moon.vehicle.burning.4"
+ inherit="moon.vehicle.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.moon.obstacle.2.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-vehicle" attenuated="true" image="spriteimage.moon.obstacle.2.04" />
+ <emitter offset="4,0" ySortOffset="4" emitter="ruins.small.fire.emitter"/>
+ </layers>
+ </appearance>
+ </instance>
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="moon.vehicle.burning.5"
+ inherit="moon.vehicle.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.moon.obstacle.2.ground.01" />
+ <sprite layer="5" sublayer="2" bottomColored="floor-fog" topColored="obstacle-vehicle" attenuated="true" image="spriteimage.moon.obstacle.2.05" />
+ <emitter offset="4,0" ySortOffset="4" emitter="ruins.small.fire.emitter"/>
+ </layers>
+ </appearance>
+ </instance>
+
+
+
+
+
+</resources>
+
diff --git a/src/buildings-properties.xml b/src/buildings-properties.xml
new file mode 100644
index 0000000..48c862a
--- /dev/null
+++ b/src/buildings-properties.xml
@@ -0,0 +1,105 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!--
+ Copyright (c) 2003-onwards Shaven Puppy Ltd
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of 'Shaven Puppy' nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<!-- Buildings properties -->
+
+<resources>
+
+ <!-- Load all the tags -->
+ <include resource="tags.xml" />
+
+ <property key="1x1x" value="10"/>
+ <property key="1x1xFire" value="0"/>
+ <property key="1x1y" value="10"/>
+ <property key="1x1yFloor" value="4"/>
+ <property key="1x1ySparks" value="7"/>
+ <property key="1x1yExplode" value="10"/>
+
+ <property key="2x2x" value="20"/>
+ <property key="2x2xFire" value="4"/>
+ <property key="2x2y" value="29"/>
+ <property key="2x2yFloor" value="12"/>
+ <property key="2x2ySparks" value="16"/>
+ <property key="2x2yExplode" value="20"/>
+
+ <property key="3x3x" value="31"/>
+ <property key="3x3xFire" value="9"/>
+ <property key="3x3y" value="38"/>
+ <property key="3x3yFloor" value="17"/>
+ <property key="3x3ySparks" value="21"/>
+ <property key="3x3yExplode" value="26"/>
+
+ <property key="4x4x" value="39"/>
+ <property key="4x4xFire" value="10"/>
+ <property key="4x4y" value="39"/>
+ <property key="4x4yFloor" value="17"/>
+ <property key="4x4ySparks" value="21"/>
+ <property key="4x4yExplode" value="30"/>
+
+ <property key="5x5x" value="60"/>
+ <property key="5x5xFire" value="10"/>
+ <property key="5x5y" value="58"/>
+ <property key="5x5yFloor" value="18"/>
+ <property key="5x5ySparks" value="22"/>
+ <property key="5x5yExplode" value="30"/>
+
+ <property key="mineoffsetX" value="0"/>
+ <property key="mineoffsetY" value="0"/>
+
+ <property key="1x1offsetX" value="6"/>
+ <property key="1x1offsetY" value="2"/>
+
+ <property key="2x2offsetX" value="10"/>
+ <property key="2x2offsetY" value="6"/>
+
+ <property key="3x3offsetX" value="16"/>
+ <property key="3x3offsetY" value="8"/>
+
+ <property key="4x4offsetX" value="20"/>
+ <property key="4x4offsetY" value="9"/>
+
+ <property key="5x5offsetX" value="30"/>
+ <property key="5x5offsetY" value="10"/>
+
+ <property key="baserange" value="64.0"/>
+ <property key="rangeincrement" value="16.0"/>
+
+ <property key="barricade" value="12"/>
+ <property key="cost" value="4"/>
+
+ <property key="crystal" value="24"/>
+
+ <!-- Hitpoints graphics -->
+ <property key="hitpointslayer" value="9"/>
+
+</resources>
diff --git a/src/buildings-saturn.xml b/src/buildings-saturn.xml
new file mode 100644
index 0000000..5df6b34
--- /dev/null
+++ b/src/buildings-saturn.xml
@@ -0,0 +1,47 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!--
+ Copyright (c) 2003-onwards Shaven Puppy Ltd
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of 'Shaven Puppy' nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<!-- Saturn Buildings -->
+<resources>
+
+ <!-- Load all the tags -->
+ <include resource="tags.xml" />
+
+ <instance
+ class="worm.buildings.BaseBuildingFeature"
+ name="building.saturn.base"
+ inherit="building.earth.base"
+ >
+ </instance>
+
+</resources>
diff --git a/src/buildings-titan.xml b/src/buildings-titan.xml
new file mode 100644
index 0000000..410d155
--- /dev/null
+++ b/src/buildings-titan.xml
@@ -0,0 +1,314 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!--
+ Copyright (c) 2003-onwards Shaven Puppy Ltd
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of 'Shaven Puppy' nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<!-- Titan Buildings -->
+<resources>
+
+ <!-- Load all the tags -->
+ <include resource="tags.xml" />
+
+ <instance
+ class="worm.buildings.BaseBuildingFeature"
+ name="building.titan.base"
+ inherit="building.earth.base"
+ >
+ </instance>
+
+
+
+ <!-- obstacles -->
+
+
+ <animation name="titan.shroom.phase.anim">
+ <animcolor a="63" d="3" />
+ <animcolor a="65" d="3" />
+ <animcolor a="69" d="3" />
+ <animcolor a="75" d="3" />
+ <animcolor a="83" d="3" />
+ <animcolor a="93" d="3" />
+ <animcolor a="105" d="3" />
+ <animcolor a="117" d="3" />
+ <animcolor a="131" d="3" />
+ <animcolor a="145" d="3" />
+ <animcolor a="159" d="3" />
+ <animcolor a="173" d="3" />
+ <animcolor a="187" d="3" />
+ <animcolor a="201" d="3" />
+ <animcolor a="213" d="3" />
+ <animcolor a="225" d="3" />
+ <animcolor a="235" d="3" />
+ <animcolor a="243" d="3" />
+ <animcolor a="249" d="3" />
+ <animcolor a="253" d="3" />
+ <animcolor a="255" d="3" />
+ <animcolor a="254" d="3" />
+ <animcolor a="253" d="3" />
+ <animcolor a="251" d="3" />
+ <animcolor a="249" d="3" />
+ <animcolor a="246" d="3" />
+ <animcolor a="243" d="3" />
+ <animcolor a="239" d="3" />
+ <animcolor a="235" d="3" />
+ <animcolor a="230" d="3" />
+ <animcolor a="225" d="3" />
+ <animcolor a="219" d="3" />
+ <animcolor a="213" d="3" />
+ <animcolor a="207" d="3" />
+ <animcolor a="201" d="3" />
+ <animcolor a="194" d="3" />
+ <animcolor a="187" d="3" />
+ <animcolor a="180" d="3" />
+ <animcolor a="173" d="3" />
+ <animcolor a="166" d="3" />
+ <animcolor a="159" d="3" />
+ <animcolor a="152" d="3" />
+ <animcolor a="145" d="3" />
+ <animcolor a="138" d="3" />
+ <animcolor a="131" d="3" />
+ <animcolor a="124" d="3" />
+ <animcolor a="117" d="3" />
+ <animcolor a="111" d="3" />
+ <animcolor a="105" d="3" />
+ <animcolor a="99" d="3" />
+ <animcolor a="93" d="3" />
+ <animcolor a="88" d="3" />
+ <animcolor a="83" d="3" />
+ <animcolor a="79" d="3" />
+ <animcolor a="75" d="3" />
+ <animcolor a="71" d="3" />
+ <animcolor a="69" d="3" />
+ <animcolor a="66" d="3" />
+ <animcolor a="65" d="3" />
+ <animcolor a="64" d="3" />
+ <animcolor a="63" d="3" />
+ <goto seq="0"/>
+ </animation>
+
+ <animation name="titan.shroom.1.01.anim">
+ <frame i="spriteimage.titan.obstacle.1.glow.01" d="0" />
+ <frame i="titan.shroom.phase.anim" d="0" />
+ </animation>
+ <animation name="titan.shroom.1.02.anim">
+ <frame i="spriteimage.titan.obstacle.1.glow.02" d="0" />
+ <frame i="titan.shroom.phase.anim" d="0" />
+ </animation>
+ <animation name="titan.shroom.1.03.anim">
+ <frame i="spriteimage.titan.obstacle.1.glow.03" d="0" />
+ <frame i="titan.shroom.phase.anim" d="0" />
+ </animation>
+ <animation name="titan.shroom.1.04.anim">
+ <frame i="spriteimage.titan.obstacle.1.glow.04" d="0" />
+ <frame i="titan.shroom.phase.anim" d="0" />
+ </animation>
+ <animation name="titan.shroom.1.05.anim">
+ <frame i="spriteimage.titan.obstacle.1.glow.05" d="0" />
+ <frame i="titan.shroom.phase.anim" d="0" />
+ </animation>
+ <animation name="titan.shroom.1.06.anim">
+ <frame i="spriteimage.titan.obstacle.1.glow.06" d="0" />
+ <frame i="titan.shroom.phase.anim" d="0" />
+ </animation>
+ <animation name="titan.shroom.1.07.anim">
+ <frame i="spriteimage.titan.obstacle.1.glow.07" d="0" />
+ <frame i="titan.shroom.phase.anim" d="0" />
+ </animation>
+ <animation name="titan.shroom.1.08.anim">
+ <frame i="spriteimage.titan.obstacle.1.glow.08" d="0" />
+ <frame i="titan.shroom.phase.anim" d="0" />
+ </animation>
+ <animation name="titan.shroom.1.09.anim">
+ <frame i="spriteimage.titan.obstacle.1.glow.09" d="0" />
+ <frame i="titan.shroom.phase.anim" d="0" />
+ </animation>
+ <animation name="titan.shroom.1.10.anim">
+ <frame i="spriteimage.titan.obstacle.1.glow.10" d="0" />
+ <frame i="titan.shroom.phase.anim" d="0" />
+ </animation>
+
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="titan.obstacle.master"
+ hitpoints="2"
+ bounds="0,0,8,8"
+ floor="-4"
+ >
+ <deathAppearance>
+ <layers scale="0.5">
+ <sprite layer="5" animation="obstacle.dead.animation"/>
+ <emitter offset="8,0" ySortOffset="8" emitter="shroom.explosion.emitter"/>
+ </layers>
+ </deathAppearance>
+ </instance>
+
+
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="titan.obstacle.1.01"
+ inherit="titan.obstacle.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.titan.obstacle.1.ground.01" />
+ <sprite layer="5" sublayer="1" bottomColored="cliff-1" topColored="cliff-glow" attenuated="true" image="spriteimage.titan.obstacle.1.01" />
+ <sprite layer="5" sublayer="2" colored="shroom-glow" attenuated="false" animation="titan.shroom.1.01.anim" />
+ </layers>
+ </appearance>
+ </instance>
+
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="titan.obstacle.1.02"
+ inherit="titan.obstacle.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.titan.obstacle.1.ground.01" />
+ <sprite layer="5" sublayer="1" bottomColored="cliff-1" topColored="cliff-glow" attenuated="true" image="spriteimage.titan.obstacle.1.02" />
+ <sprite layer="5" sublayer="2" colored="shroom-glow" attenuated="false" animation="titan.shroom.1.02.anim" />
+ </layers>
+ </appearance>
+ </instance>
+
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="titan.obstacle.1.03"
+ inherit="titan.obstacle.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.titan.obstacle.1.ground.01" />
+ <sprite layer="5" sublayer="1" bottomColored="cliff-1" topColored="cliff-glow" attenuated="true" image="spriteimage.titan.obstacle.1.03" />
+ <sprite layer="5" sublayer="2" colored="shroom-glow" attenuated="false" animation="titan.shroom.1.03.anim" />
+ </layers>
+ </appearance>
+ </instance>
+
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="titan.obstacle.1.04"
+ inherit="titan.obstacle.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.titan.obstacle.1.ground.01" />
+ <sprite layer="5" sublayer="1" bottomColored="cliff-1" topColored="cliff-glow" attenuated="true" image="spriteimage.titan.obstacle.1.04" />
+ <sprite layer="5" sublayer="2" colored="shroom-glow" attenuated="false" animation="titan.shroom.1.04.anim" />
+ </layers>
+ </appearance>
+ </instance>
+
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="titan.obstacle.1.05"
+ inherit="titan.obstacle.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.titan.obstacle.1.ground.01" />
+ <sprite layer="5" sublayer="1" bottomColored="cliff-1" topColored="cliff-glow" attenuated="true" image="spriteimage.titan.obstacle.1.05" />
+ <sprite layer="5" sublayer="2" colored="shroom-glow" attenuated="false" animation="titan.shroom.1.05.anim" />
+ </layers>
+ </appearance>
+ </instance>
+
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="titan.obstacle.1.06"
+ inherit="titan.obstacle.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.titan.obstacle.1.ground.01" />
+ <sprite layer="5" sublayer="1" bottomColored="cliff-1" topColored="cliff-glow" attenuated="true" image="spriteimage.titan.obstacle.1.06" />
+ <sprite layer="5" sublayer="2" colored="shroom-glow" attenuated="false" animation="titan.shroom.1.06.anim" />
+ </layers>
+ </appearance>
+ </instance>
+
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="titan.obstacle.1.07"
+ inherit="titan.obstacle.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.titan.obstacle.1.ground.01" />
+ <sprite layer="5" sublayer="1" bottomColored="cliff-1" topColored="cliff-glow" attenuated="true" image="spriteimage.titan.obstacle.1.07" />
+ <sprite layer="5" sublayer="2" colored="shroom-glow" attenuated="false" animation="titan.shroom.1.07.anim" />
+ </layers>
+ </appearance>
+ </instance>
+
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="titan.obstacle.1.08"
+ inherit="titan.obstacle.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.titan.obstacle.1.ground.01" />
+ <sprite layer="5" sublayer="1" bottomColored="cliff-1" topColored="cliff-glow" attenuated="true" image="spriteimage.titan.obstacle.1.08" />
+ <sprite layer="5" sublayer="2" colored="shroom-glow" attenuated="false" animation="titan.shroom.1.08.anim" />
+ </layers>
+ </appearance>
+ </instance>
+
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="titan.obstacle.1.09"
+ inherit="titan.obstacle.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.titan.obstacle.1.ground.01" />
+ <sprite layer="5" sublayer="1" bottomColored="cliff-1" topColored="cliff-glow" attenuated="true" image="spriteimage.titan.obstacle.1.09" />
+ <sprite layer="5" sublayer="2" colored="shroom-glow" attenuated="false" animation="titan.shroom.1.09.anim" />
+ </layers>
+ </appearance>
+ </instance>
+
+ <instance
+ class="worm.buildings.ObstacleFeature"
+ name="titan.obstacle.1.10"
+ inherit="titan.obstacle.master"
+ >
+ <appearance>
+ <layers scale="0.5">
+ <sprite layer="4" sublayer="2" colored="shadow" attenuated="true" image="spriteimage.titan.obstacle.1.ground.01" />
+ <sprite layer="5" sublayer="1" bottomColored="cliff-1" topColored="cliff-glow" attenuated="true" image="spriteimage.titan.obstacle.1.10" />
+ <sprite layer="5" sublayer="2" colored="shroom-glow" attenuated="false" animation="titan.shroom.1.10.anim" />
+ </layers>
+ </appearance>
+ </instance>
+
+</resources>
diff --git a/src/buildings.xml b/src/buildings.xml
new file mode 100644
index 0000000..2629a67
--- /dev/null
+++ b/src/buildings.xml
@@ -0,0 +1,1035 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!--
+ Copyright (c) 2003-onwards Shaven Puppy Ltd
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of 'Shaven Puppy' nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<!-- Buildings! -->
+
+<resources>
+
+ <!-- Load all the tags -->
+ <include resource="tags.xml" />
+
+ <!-- Building keys -->
+ <include resource="buildings-properties.xml" />
+
+ <array name="hitpoints.2x2.3.array" autocreated="true">
+ <item><layers scale="0.5" autocreated="true">
+ <sprite layer="=$hitpointslayer" image="spriteimage.hitpoints.2x2.3.01"/>
+ <sprite layer="=$hitpointslayer-1" image="spriteimage.hitpoints.2x2.3.back.01"/>
+ </layers></item>
+ <item><layers scale="0.5" autocreated="true">
+ <sprite layer="=$hitpointslayer" image="spriteimage.hitpoints.2x2.3.02"/>
+ <sprite layer="=$hitpointslayer-1" image="spriteimage.hitpoints.2x2.3.back.01"/>
+ </layers></item>
+ <item><layers scale="0.5" autocreated="true">
+ <sprite layer="=$hitpointslayer" image="spriteimage.hitpoints.2x2.3.03"/>
+ <sprite layer="=$hitpointslayer-1" image="spriteimage.hitpoints.2x2.3.back.01"/>
+ </layers></item>
+ </array>
+ <array name="hitpoints.3x3.3.array" autocreated="true">
+ <item><layers scale="0.5" autocreated="true">
+ <sprite layer="=$hitpointslayer" image="spriteimage.hitpoints.3x3.3.01"/>
+ <sprite layer="=$hitpointslayer-1" image="spriteimage.hitpoints.3x3.3.back.01"/>
+ </layers></item>
+ <item><layers scale="0.5" autocreated="true">
+ <sprite layer="=$hitpointslayer" image="spriteimage.hitpoints.3x3.3.02"/>
+ <sprite layer="=$hitpointslayer-1" image="spriteimage.hitpoints.3x3.3.back.01"/>
+ </layers></item>
+ <item><layers scale="0.5" autocreated="true">
+ <sprite layer="=$hitpointslayer" image="spriteimage.hitpoints.3x3.3.03"/>
+ <sprite layer="=$hitpointslayer-1" image="spriteimage.hitpoints.3x3.3.back.01"/>
+ </layers></item>
+ </array>
+ <array name="hitpoints.3x3.5.array" autocreated="true">
+ <item><layers scale="0.5" autocreated="true">
+ <sprite layer="=$hitpointslayer" image="spriteimage.hitpoints.3x3.5.01"/>
+ <sprite layer="=$hitpointslayer-1" image="spriteimage.hitpoints.3x3.5.back.01"/>
+ </layers></item>
+ <item><layers scale="0.5" autocreated="true">
+ <sprite layer="=$hitpointslayer" image="spriteimage.hitpoints.3x3.5.02"/>
+ <sprite layer="=$hitpointslayer-1" image="spriteimage.hitpoints.3x3.5.back.01"/>
+ </layers></item>
+ <item><layers scale="0.5" autocreated="true">
+ <sprite layer="=$hitpointslayer" image="spriteimage.hitpoints.3x3.5.03"/>
+ <sprite layer="=$hitpointslayer-1" image="spriteimage.hitpoints.3x3.5.back.01"/>
+ </layers></item>
+ <item><layers scale="0.5" autocreated="true">
+ <sprite layer="=$hitpointslayer" image="spriteimage.hitpoints.3x3.5.04"/>
+ <sprite layer="=$hitpointslayer-1" image="spriteimage.hitpoints.3x3.5.back.01"/>
+ </layers></item>
+ <item><layers scale="0.5" autocreated="true">
+ <sprite layer="=$hitpointslayer" image="spriteimage.hitpoints.3x3.5.05"/>
+ <sprite layer="=$hitpointslayer-1" image="spriteimage.hitpoints.3x3.5.back.01"/>
+ </layers></item>
+ </array>
+ <array name="hitpoints.4x4.3.array" autocreated="true">
+ <item><layers scale="0.5" autocreated="true">
+ <sprite layer="=$hitpointslayer" image="spriteimage.hitpoints.4x4.3.01"/>
+ <sprite layer="=$hitpointslayer-1" image="spriteimage.hitpoints.4x4.3.back.01"/>
+ </layers></item>
+ <item><layers scale="0.5" autocreated="true">
+ <sprite layer="=$hitpointslayer" image="spriteimage.hitpoints.4x4.3.02"/>
+ <sprite layer="=$hitpointslayer-1" image="spriteimage.hitpoints.4x4.3.back.01"/>
+ </layers></item>
+ <item><layers scale="0.5" autocreated="true">
+ <sprite layer="=$hitpointslayer" image="spriteimage.hitpoints.4x4.3.03"/>
+ <sprite layer="=$hitpointslayer-1" image="spriteimage.hitpoints.4x4.3.back.01"/>
+ </layers></item>
+ </array>
+ <array name="hitpoints.4x4.5.array" autocreated="true">
+ <item><layers scale="0.5" autocreated="true">
+ <sprite layer="=$hitpointslayer" image="spriteimage.hitpoints.4x4.5.01"/>
+ <sprite layer="=$hitpointslayer-1" image="spriteimage.hitpoints.4x4.5.back.01"/>
+ </layers></item>
+ <item><layers scale="0.5" autocreated="true">
+ <sprite layer="=$hitpointslayer" image="spriteimage.hitpoints.4x4.5.02"/>
+ <sprite layer="=$hitpointslayer-1" image="spriteimage.hitpoints.4x4.5.back.01"/>
+ </layers></item>
+ <item><layers scale="0.5" autocreated="true">
+ <sprite layer="=$hitpointslayer" image="spriteimage.hitpoints.4x4.5.03"/>
+ <sprite layer="=$hitpointslayer-1" image="spriteimage.hitpoints.4x4.5.back.01"/>
+ </layers></item>
+ <item><layers scale="0.5" autocreated="true">
+ <sprite layer="=$hitpointslayer" image="spriteimage.hitpoints.4x4.5.04"/>
+ <sprite layer="=$hitpointslayer-1" image="spriteimage.hitpoints.4x4.5.back.01"/>
+ </layers></item>
+ <item><layers scale="0.5" autocreated="true">
+ <sprite layer="=$hitpointslayer" image="spriteimage.hitpoints.4x4.5.05"/>
+ <sprite layer="=$hitpointslayer-1" image="spriteimage.hitpoints.4x4.5.back.01"/>
+ </layers></item>
+ </array>
+ <array name="hitpoints.5x5.10.array" autocreated="true">
+ <item><layers scale="0.5" autocreated="true">
+ <sprite layer="=$hitpointslayer" image="spriteimage.hitpoints.5x5.10.01"/>
+ <sprite layer="=$hitpointslayer-1" image="spriteimage.hitpoints.5x5.10.back.01"/>
+ </layers></item>
+ <item><layers scale="0.5" autocreated="true">
+ <sprite layer="=$hitpointslayer" image="spriteimage.hitpoints.5x5.10.02"/>
+ <sprite layer="=$hitpointslayer-1" image="spriteimage.hitpoints.5x5.10.back.01"/>
+ </layers></item>
+ <item><layers scale="0.5" autocreated="true">
+ <sprite layer="=$hitpointslayer" image="spriteimage.hitpoints.5x5.10.03"/>
+ <sprite layer="=$hitpointslayer-1" image="spriteimage.hitpoints.5x5.10.back.01"/>
+ </layers></item>
+ <item><layers scale="0.5" autocreated="true">
+ <sprite layer="=$hitpointslayer" image="spriteimage.hitpoints.5x5.10.04"/>
+ <sprite layer="=$hitpointslayer-1" image="spriteimage.hitpoints.5x5.10.back.01"/>
+ </layers></item>
+ <item><layers scale="0.5" autocreated="true">
+ <sprite layer="=$hitpointslayer" image="spriteimage.hitpoints.5x5.10.05"/>
+ <sprite layer="=$hitpointslayer-1" image="spriteimage.hitpoints.5x5.10.back.01"/>
+ </layers></item>
+ <item><layers scale="0.5" autocreated="true">
+ <sprite layer="=$hitpointslayer" image="spriteimage.hitpoints.5x5.10.06"/>
+ <sprite layer="=$hitpointslayer-1" image="spriteimage.hitpoints.5x5.10.back.01"/>
+ </layers></item>
+ <item><layers scale="0.5" autocreated="true">
+ <sprite layer="=$hitpointslayer" image="spriteimage.hitpoints.5x5.10.07"/>
+ <sprite layer="=$hitpointslayer-1" image="spriteimage.hitpoints.5x5.10.back.01"/>
+ </layers></item>
+ <item><layers scale="0.5" autocreated="true">
+ <sprite layer="=$hitpointslayer" image="spriteimage.hitpoints.5x5.10.08"/>
+ <sprite layer="=$hitpointslayer-1" image="spriteimage.hitpoints.5x5.10.back.01"/>
+ </layers></item>
+ <item><layers scale="0.5" autocreated="true">
+ <sprite layer="=$hitpointslayer" image="spriteimage.hitpoints.5x5.10.09"/>
+ <sprite layer="=$hitpointslayer-1" image="spriteimage.hitpoints.5x5.10.back.01"/>
+ </layers></item>
+ <item><layers scale="0.5" autocreated="true">
+ <sprite layer="=$hitpointslayer" image="spriteimage.hitpoints.5x5.10.10"/>
+ <sprite layer="=$hitpointslayer-1" image="spriteimage.hitpoints.5x5.10.back.01"/>
+ </layers></item>
+ </array>
+
+ <instance
+ class="worm.buildings.BaseBuildingFeature"
+ name="base.building.spec"
+ hitpoints="40"
+ bounds="0,0,60,36"
+ title="BASE"
+ hitPointsGraphics="hitpoints.5x5.10.array"
+ repairEmitter="repair.5x5.emitter"
+ cost="500"
+ />
+
+
+ <!-- REFINING ============================================================================================================================ -->
+
+
+ <instance
+ class="worm.buildings.FactoryBuildingFeature"
+ name="factory.building.spec"
+ hud="build_factory"
+ tooltipGraphic="=$key.game.factory.icon"
+ bounds="0,0,40,24"
+ title="=$factory.building.title"
+ hitpoints="20"
+ bonusdescription="=$factory.building.bonus"
+ cost="250"
+ hitPointsGraphics="hitpoints.4x4.5.array"
+ forcefieldGraphics="forcefield.4x4.5.array"
+ repairEmitter="repair.4x4.emitter"
+ buildEmitter="build.4x4.emitter"
+ shopIcon="building.factory"
+ baseProductionRate="180"
+ minProductionRate="20"
+ productionRatePerCollector="20"
+ productionRatePerWarehouse="10"
+ amountToExtract="10"
+ amountToExtractPerWarehouse="2"
+ maxCollectors="4"
+ maxWarehouses="4"
+ description="factory.building.description"
+ />
+
+ <instance
+ class="worm.buildings.WarehouseBuildingFeature"
+ name="warehouse.building.spec"
+ hud="build_warehouse"
+ tooltipGraphic="=$key.game.warehouse.icon"
+ hitpoints="12"
+ bounds="0,0,20,16"
+ title="=$warehouse.building.title"
+ bonusdescription="=$warehouse.building.bonus"
+ cost="750"
+ repairEmitter="repair.2x2.emitter"
+ hitPointsGraphics="hitpoints.2x2.3.array"
+ forcefieldGraphics="forcefield.2x2.3.array"
+ buildEmitter="build.2x2.emitter"
+ shopIcon="building.silo"
+ description="warehouse.building.description"
+ />
+
+ <instance
+ class="worm.buildings.CollectorBuildingFeature"
+ name="collector.building.spec"
+ hud="build_collector"
+ tooltipGraphic="=$key.game.collector.icon"
+ bounds="0,0,20,16"
+ title="=$collector.building.title"
+ hitpoints="12"
+ cost="500"
+ hitPointsGraphics="hitpoints.2x2.3.array"
+ forcefieldGraphics="forcefield.2x2.3.array"
+ repairEmitter="repair.2x2.emitter"
+ buildEmitter="build.2x2.emitter"
+ shopIcon="building.collector"
+ description="collector.building.description"
+ />
+
+
+ <!-- TURRETS ============================================================================================================================ -->
+
+ <instance
+ class="worm.buildings.TurretBuildingFeature"
+ name="turret.building.spec"
+ maxReactors="4"
+ maxScanners="4"
+ />
+
+ <instance
+ class="worm.buildings.TurretBuildingFeature"
+ inherit="turret.building.spec"
+ name="blaster.building.spec"
+ hud="build_blaster"
+ tooltipGraphic="=$key.game.blaster.icon"
+ hitpoints="12"
+ bounds="0,0,32,20"
+ title="=$blaster.building.title"
+ weapon="blaster.weapon"
+ beamOffsetX="1"
+ beamOffsetY="7"
+ cost="250"
+ repairEmitter="repair.3x3.emitter"
+ hitPointsGraphics="hitpoints.3x3.3.array"
+ forcefieldGraphics="forcefield.3x3.3.array"
+ buildEmitter="build.3x3.emitter"
+ shopIcon="building.blaster"
+ baseRange="=$baserange"
+ rangeIncrement="=$rangeincrement"
+ description="blaster.building.description"
+ >
+ <barrel>10,15</barrel>
+ </instance>
+
+ <instance
+ class="worm.buildings.TurretBuildingFeature"
+ inherit="turret.building.spec"
+ name="heavyblaster.building.spec"
+ hud="build_heavyblaster"
+ tooltipGraphic="=$key.game.heavyblaster.icon"
+ hitpoints="12"
+ bounds="0,0,32,20"
+ title="=$heavyblaster.building.title"
+ weapon="heavyblaster.weapon"
+ beamOffsetX="1"
+ beamOffsetY="8"
+ cost="500"
+ repairEmitter="repair.3x3.emitter"
+ hitPointsGraphics="hitpoints.3x3.3.array"
+ forcefieldGraphics="forcefield.3x3.3.array"
+ buildEmitter="build.3x3.emitter"
+ shopIcon="building.heavyblaster"
+ baseRange="=$baserange"
+ rangeIncrement="=$rangeincrement"
+ description="heavyblaster.building.description"
+ >
+ <barrel>8,19</barrel>
+ <barrel>8,15</barrel>
+ </instance>
+
+ <instance
+ class="worm.buildings.TurretBuildingFeature"
+ inherit="turret.building.spec"
+ name="multiblaster.building.spec"
+ hud="build_multiblaster"
+ tooltipGraphic="=$key.game.multiblaster.icon"
+ hitpoints="12"
+ bounds="0,0,32,20"
+ title="=$multiblaster.building.title"
+ weapon="multiblaster.weapon"
+ beamOffsetX="-3"
+ beamOffsetY="10"
+ cost="750"
+ repairEmitter="repair.3x3.emitter"
+ hitPointsGraphics="hitpoints.3x3.3.array"
+ forcefieldGraphics="forcefield.3x3.3.array"
+ buildEmitter="build.3x3.emitter"
+ shopIcon="building.multiblaster"
+ baseRange="=$baserange"
+ rangeIncrement="=$rangeincrement"
+ description="multiblaster.building.description"
+ >
+ <barrel>7,19</barrel>
+ <barrel>20,19</barrel>
+ <barrel>7,17</barrel>
+ <barrel>20,17</barrel>
+ <barrel>7,15</barrel>
+ <barrel>20,15</barrel>
+ </instance>
+
+ <instance
+ class="worm.buildings.TurretBuildingFeature"
+ inherit="turret.building.spec"
+ name="blastcannon.building.spec"
+ hud="build_blastcannon"
+ tooltipGraphic="=$key.game.blastcannon.icon"
+ hitpoints="12"
+ bounds="0,0,32,20"
+ title="=$blastcannon.building.title"
+ weapon="blastcannon.weapon"
+ beamOffsetX="-3"
+ beamOffsetY="11"
+ cost="750"
+ repairEmitter="repair.3x3.emitter"
+ hitPointsGraphics="hitpoints.3x3.3.array"
+ forcefieldGraphics="forcefield.3x3.3.array"
+ buildEmitter="build.3x3.emitter"
+ shopIcon="building.blastcannon"
+ baseRange="=$baserange"
+ rangeIncrement="=$rangeincrement"
+ description="blastcannon.building.description"
+ >
+ <barrel>8,21</barrel>
+ <barrel>19,21</barrel>
+ <barrel>8,16</barrel>
+ <barrel>19,16</barrel>
+ </instance>
+
+ <instance
+ class="worm.buildings.TurretBuildingFeature"
+ inherit="turret.building.spec"
+ name="shotgun.building.spec"
+ hud="build_spreadercannon"
+ tooltipGraphic="=$key.game.spreadercannon.icon"
+ hitpoints="12"
+ bounds="0,0,32,20"
+ title="=$shotgun.building.title"
+ weapon="shotgun.weapon"
+ ignoreDeflection="true"
+ beamOffsetX="-3"
+ beamOffsetY="13"
+ cost="500"
+ repairEmitter="repair.3x3.emitter"
+ hitPointsGraphics="hitpoints.3x3.3.array"
+ forcefieldGraphics="forcefield.3x3.3.array"
+ buildEmitter="build.3x3.emitter"
+ shopIcon="building.spreader"
+ baseRange="=$baserange"
+ rangeIncrement="=$rangeincrement"
+ description="shotgun.building.description"
+ >
+ <barrel>7,22</barrel>
+ <barrel>20,22</barrel>
+ <barrel>6,19</barrel>
+ <barrel>21,19</barrel>
+ <barrel>7,16</barrel>
+ <barrel>20,16</barrel>
+ </instance>
+
+ <instance
+ class="worm.buildings.TurretBuildingFeature"
+ inherit="turret.building.spec"
+ name="assault.building.spec"
+ hud="build_assaultcannon"
+ tooltipGraphic="=$key.game.assaultcannon.icon"
+ hitpoints="12"
+ bounds="0,0,40,24"
+ title="=$assault.building.title"
+ ignoreDeflection="true"
+ weapon="assault.weapon"
+ beamOffsetX="-2"
+ beamOffsetY="15"
+ cost="1000"
+ repairEmitter="repair.4x4.emitter"
+ hitPointsGraphics="hitpoints.4x4.3.array"
+ forcefieldGraphics="forcefield.4x4.3.array"
+ buildEmitter="build.4x4.emitter"
+ shopIcon="building.assault"
+ heavyWeapon="true"
+ baseRange="=$baserange"
+ rangeIncrement="=$rangeincrement"
+ description="assault.building.description"
+ >
+ <barrel>13,26</barrel>
+ <barrel>22,26</barrel>
+ <barrel>9,24</barrel>
+ <barrel>26,24</barrel>
+ <barrel>8,21</barrel>
+ <barrel>27,21</barrel>
+ <barrel>9,18</barrel>
+ <barrel>26,18</barrel>
+ <barrel>13,16</barrel>
+ <barrel>22,16</barrel>
+ </instance>
+
+
+ <instance
+ class="worm.buildings.TurretBuildingFeature"
+ inherit="turret.building.spec"
+ name="rocket.building.spec"
+ hud="build_rocket"
+ tooltipGraphic="=$key.game.rocket.icon"
+ hitpoints="12"
+ bounds="0,0,40,24"
+ title="=$rocket.building.title"
+ weapon="rocket.weapon"
+ beamOffsetX="6"
+ beamOffsetY="15"
+ cost="1500"
+ minimumRange="96"
+ baseRange="120"
+ rangeincrement="40"
+ repairEmitter="repair.4x4.emitter"
+ hitPointsGraphics="hitpoints.4x4.3.array"
+ forcefieldGraphics="forcefield.4x4.3.array"
+ buildEmitter="build.4x4.emitter"
+ shopIcon="building.rockets"
+ heavyWeapon="true"
+ dontTargetFlyingTargets="true"
+ numAvailable="1"
+ maxAvailable="5"
+ agitation="0.0625"
+ description="rocket.building.description"
+ >
+ <barrel>12,26</barrel>
+ <barrel>17,26</barrel>
+ <barrel>23,26</barrel>
+ <barrel>15,22</barrel>
+ <barrel>20,22</barrel>
+ <barrel>12,18</barrel>
+ <barrel>17,18</barrel>
+ <barrel>23,18</barrel>
+ </instance>
+
+ <instance
+ class="worm.buildings.TurretBuildingFeature"
+ inherit="turret.building.spec"
+ name="laser.building.spec"
+ hud="build_laser"
+ tooltipGraphic="=$key.game.laser.icon"
+ hitpoints="12"
+ bounds="0,0,40,24"
+ title="=$laser.building.title"
+ weapon="laser.weapon"
+ beamOffsetX="-3"
+ beamOffsetY="12"
+ cost="1500"
+ baserange="80"
+ rangeincrement="32"
+ repairEmitter="repair.4x4.emitter"
+ hitPointsGraphics="hitpoints.4x4.3.array"
+ forcefieldGraphics="forcefield.4x4.3.array"
+ buildEmitter="build.4x4.emitter"
+ shopIcon="building.laser"
+ heavyWeapon="true"
+ targetIntoMountains="true"
+ numAvailable="1"
+ maxAvailable="5"
+ agitation="0.0625"
+ description="laser.building.description"
+ >
+ <barrel>17,20</barrel>
+ </instance>
+
+ <instance
+ class="worm.buildings.TurretBuildingFeature"
+ inherit="turret.building.spec"
+ name="disruptor.building.spec"
+ hud="build_disruptor"
+ tooltipGraphic="=$key.game.disruptor.icon"
+ hitpoints="12"
+ bounds="0,0,40,24"
+ title="=$disruptor.building.title"
+ weapon="disruptor.weapon"
+ beamOffsetX="7"
+ beamOffsetY="8"
+ cost="1500"
+ baserange="64"
+ rangeincrement="8"
+ repairEmitter="repair.4x4.emitter"
+ hitPointsGraphics="hitpoints.4x4.3.array"
+ forcefieldGraphics="forcefield.4x4.3.array"
+ buildEmitter="build.4x4.emitter"
+ shopIcon="building.disruptor"
+ heavyWeapon="true"
+ numAvailable="1"
+ maxAvailable="5"
+ agitation="0.0625"
+ description="disruptor.building.description"
+ >
+ <barrel>17,20</barrel>
+ </instance>
+
+
+
+ <!-- MINES ============================================================================================================================ -->
+
+
+ <instance
+ class="worm.buildings.MinefieldFeature"
+ name="mine.building.spec"
+ hud="build_mine"
+ tooltipGraphic="=$key.game.mine.icon"
+ bounds="-4,-4,8,8"
+ title="=$mine.building.title"
+ numAvailable="20"
+ maxAvailable="99"
+ cost="25"
+ explosionRadius="16.0"
+ damage="12"
+ uses="1"
+ paintable="true"
+ buildEmitter="build.1x1.emitter"
+ shopIcon="building.mine"
+ description="mine.building.description"
+ />
+
+ <instance
+ class="worm.buildings.MinefieldFeature"
+ name="clustermine.building.spec"
+ hud="build_clustermine"
+ tooltipGraphic="=$key.game.clustermine.icon"
+ bounds="0,0,12,12"
+ title="=$clustermine.building.title"
+ numAvailable="10"
+ maxAvailable="50"
+ cost="75"
+ explosionRadius="8.0"
+ damage="6"
+ uses="4"
+ paintable="true"
+ shopIcon="building.clustermine"
+ description="clustermine.building.description"
+ />
+
+ <instance
+ class="worm.buildings.MinefieldFeature"
+ name="blastmine.building.spec"
+ hud="build_blastmine"
+ tooltipGraphic="=$key.game.blastmine.icon"
+ bounds="0,0,12,8"
+ title="=$blastmine.building.title"
+ numAvailable="5"
+ maxAvailable="25"
+ cost="100"
+ explosionRadius="80.0"
+ damage="16"
+ uses="1"
+ paintable="true"
+ requiresArming="true"
+ buildEmitter="build.1x1.emitter"
+ shopIcon="building.blastmine"
+ description="blastmine.building.description"
+ />
+
+
+
+ <!-- ROBOTICS ============================================================================================================================ -->
+
+ <instance
+ class="worm.buildings.BarracksBuildingFeature"
+ name="barracks.building.spec"
+ hud="build_barracks"
+ tooltipGraphic="=$key.game.barracks.icon"
+ bounds="0,0,40,24"
+ title="=$barracks.building.title"
+ hitpoints="20"
+ bonusdescription="=$barracks.building.bonus"
+ cost="1000"
+ buffedCost="1500"
+ hitPointsGraphics="hitpoints.4x4.5.array"
+ forcefieldGraphics="forcefield.4x4.5.array"
+ repairEmitter="repair.4x4.emitter"
+ buildEmitter="build.4x4.emitter"
+ shopIcon="building.barracks"
+ unit="unit.droid"
+ buffedUnit="unit.droid.buffed"
+ sergeant="unit.droid.sergeant"
+ numAvailable="1"
+ maxAvailable="5"
+ agitation="0.0625"
+ baseProductionRate="600"
+ buffedProductionRate="900"
+ maxReactors="4"
+ productionRatePerReactor="75"
+ unitsPerReactor="1"
+ maxUnits="5"
+ description="barracks.building.description"
+ />
+
+ <instance
+ class="worm.buildings.BarracksBuildingFeature"
+ name="tankfactory.building.spec"
+ hud="build_tankfactory"
+ tooltipGraphic="=$key.game.tankfactory.icon"
+ bounds="0,0,40,24"
+ title="=$tankfactory.building.title"
+ hitpoints="20"
+ bonusdescription="=$tankfactory.building.bonus"
+ cost="2500"
+ buffedCost="3500"
+ hitPointsGraphics="hitpoints.4x4.5.array"
+ forcefieldGraphics="forcefield.4x4.5.array"
+ repairEmitter="repair.4x4.emitter"
+ buildEmitter="build.4x4.emitter"
+ shopIcon="building.tankfactory"
+ unit="unit.tank"
+ buffedUnit="unit.tank.buffed"
+ sergeant="unit.tank.sergeant"
+ numAvailable="1"
+ maxAvailable="3"
+ agitation="0.125"
+ baseProductionRate="750"
+ buffedProductionRate="1000"
+ maxReactors="4"
+ productionRatePerReactor="75"
+ unitsPerReactor="1"
+ maxUnits="4"
+ description="tankfactory.building.description"
+ />
+
+ <instance
+ class="worm.buildings.BarracksBuildingFeature"
+ name="repairdrones.building.spec"
+ hud="build_repairdrones"
+ tooltipGraphic="=$key.game.repairdrones.icon"
+ bounds="0,0,40,24"
+ title="=$repairdrones.building.title"
+ hitpoints="20"
+ bonusdescription="=$repairdrones.building.bonus"
+ cost="2500"
+ hitPointsGraphics="hitpoints.4x4.5.array"
+ forcefieldGraphics="forcefield.4x4.5.array"
+ repairEmitter="repair.4x4.emitter"
+ buildEmitter="build.4x4.emitter"
+ shopIcon="building.repairdrones"
+ unit="unit.drone"
+ numAvailable="1"
+ maxAvailable="1"
+ baseProductionRate="1200"
+ buffedProductionRate="900"
+ maxReactors="4"
+ productionRatePerReactor="75"
+ unitsPerReactor="1"
+ maxUnits="3"
+ description="repairdrones.building.description"
+ />
+
+
+
+ <!-- MISC ============================================================================================================================ -->
+
+
+ <instance
+ class="worm.buildings.CapacitorBuildingFeature"
+ name="capacitor.building.spec"
+ hud="build_capacitor"
+ tooltipGraphic="=$key.game.capacitor.icon"
+ hitpoints="12"
+ bounds="0,0,32,20"
+ title="=$capacitor.building.title"
+ cost="750"
+ weapon="capacitor.weapon"
+ bezerkWeapon="bezerk.weapon"
+ hitPointsGraphics="hitpoints.3x3.3.array"
+ forcefieldGraphics="forcefield.3x3.3.array"
+ repairEmitter="repair.3x3.emitter"
+ buildEmitter="build.3x3.emitter"
+ shopIcon="building.capacitor"
+ baseRange="64.0"
+ rangePerReactor="16.0"
+ maxReactors="4"
+ description="capacitor.building.description"
+ />
+
+ <instance
+ class="worm.buildings.ShieldGeneratorBuildingFeature"
+ name="shield.building.spec"
+ hud="build_shield"
+ tooltipGraphic="=$key.game.shield.icon"
+ hitpoints="12"
+ bounds="0,0,20,16"
+ title="=$shield.building.title"
+ bonusdescription="=$shield.building.bonus"
+ cost="2500"
+ hitPointsGraphics="hitpoints.2x2.3.array"
+ forcefieldGraphics="forcefield.2x2.3.array"
+ repairEmitter="repair.2x2.emitter"
+ buildEmitter="build.2x2.emitter"
+ shopIcon="building.shields"
+ numAvailable="1"
+ maxAvailable="10"
+ agitation="0.0625"
+ description="shield.building.description"
+ />
+
+
+ <instance
+ class="worm.buildings.TurretBuildingFeature"
+ name="decoy.building.spec"
+ hud="build_decoy"
+ tooltipGraphic="=$key.game.decoy.icon"
+ hitpoints="12"
+ bounds="0,0,20,16"
+ title="=$decoy.building.title"
+ cost="1500"
+ paintable="true"
+ hitPointsGraphics="hitpoints.2x2.3.array"
+ forcefieldGraphics="forcefield.2x2.3.array"
+ repairEmitter="repair.2x2.emitter"
+ buildEmitter="build.2x2.emitter"
+ shopIcon="building.decoy"
+ numAvailable="1"
+ maxAvailable="10"
+ agitation="-0.03125"
+ description="decoy.building.description"
+ />
+
+ <instance
+ class="worm.buildings.ScarecrowBuildingFeature"
+ name="scarecrow.building.spec"
+ hud="build_scarecrow"
+ tooltipGraphic="=$key.game.scarecrow.icon"
+ hitpoints="12"
+ bounds="0,0,20,16"
+ title="=$scarecrow.building.title"
+ cost="250"
+ radius="64.0"
+ danger="=$#worm.entities.Gidrah.MAX_DANGER"
+ hitPointsGraphics="hitpoints.2x2.3.array"
+ forcefieldGraphics="forcefield.2x2.3.array"
+ repairEmitter="repair.2x2.emitter"
+ buildEmitter="build.2x2.emitter"
+ shopIcon="building.scarecrow"
+ description="scarecrow.building.description"
+ />
+
+ <instance
+ class="worm.buildings.BarricadeFeature"
+ name="tangleweb.building.spec"
+ hud="build_tangleweb"
+ tooltipGraphic="=$key.game.tangleweb.icon"
+ hitpoints="0"
+ bounds="0,0,12,12"
+ title="=$tangleweb.building.title"
+ shortTitle="=$tangleweb.building.title"
+ numAvailable="20"
+ maxAvailable="80"
+ cost="50"
+ difficulty="0"
+ paintable="true"
+ buildEmitter="build.1x1.emitter"
+ shopIcon="building.tangleweb"
+ registeredOnly="true"
+ setting="building"
+ slowdown="true"
+ gidletproof="true"
+ description="tangleweb.building.description"
+ />
+
+ <instance
+ class="worm.buildings.CloakBuildingFeature"
+ name="cloakingdevice.building.spec"
+ hud="build_cloakingdevice"
+ tooltipGraphic="=$key.game.cloakingdevice.icon"
+ hitpoints="12"
+ bounds="0,0,32,20"
+ title="=$cloakingdevice.building.title"
+ cost="750"
+ hitPointsGraphics="hitpoints.3x3.3.array"
+ forcefieldGraphics="forcefield.3x3.3.array"
+ repairEmitter="repair.3x3.emitter"
+ buildEmitter="build.3x3.emitter"
+ shopIcon="building.cloakingdevice"
+ numAvailable="1"
+ maxAvailable="5"
+ description="cloakingdevice.building.description"
+ />
+
+
+
+ <!-- ADD ONS ============================================================================================================================ -->
+
+
+ <instance
+ class="worm.buildings.ScannerBuildingFeature"
+ name="scanner.building.spec"
+ hud="build_scanner"
+ tooltipGraphic="=$key.game.scanner.icon"
+ hitpoints="12"
+ bounds="0,0,20,16"
+ title="=$scanner.building.title"
+ bonusdescription="=$scanner.building.bonus"
+ cost="500"
+ repairEmitter="repair.2x2.emitter"
+ hitPointsGraphics="hitpoints.2x2.3.array"
+ forcefieldGraphics="forcefield.2x2.3.array"
+ buildEmitter="build.2x2.emitter"
+ shopIcon="building.scanner"
+ description="scanner.building.description"
+ />
+
+ <instance
+ class="worm.buildings.BatteryBuildingFeature"
+ name="battery.building.spec"
+ hud="build_battery"
+ tooltipGraphic="=$key.game.battery.icon"
+ hitpoints="12"
+ bounds="0,0,20,16"
+ title="=$battery.building.title"
+ bonusdescription="=$battery.building.bonus"
+ cost="250"
+ repairEmitter="repair.2x2.emitter"
+ hitPointsGraphics="hitpoints.2x2.3.array"
+ forcefieldGraphics="forcefield.2x2.3.array"
+ buildEmitter="build.2x2.emitter"
+ shopIcon="building.battery"
+ description="battery.building.description"
+ />
+
+ <instance
+ class="worm.buildings.CoolingTowerBuildingFeature"
+ name="coolingtower.building.spec"
+ hud="build_coolingtower"
+ tooltipGraphic="=$key.game.coolingtower.icon"
+ hitpoints="12"
+ bounds="0,0,20,16"
+ title="=$coolingtower.building.title"
+ bonusdescription="=$coolingtower.building.bonus"
+ cost="250"
+ repairEmitter="repair.2x2.emitter"
+ hitPointsGraphics="hitpoints.2x2.3.array"
+ forcefieldGraphics="forcefield.2x2.3.array"
+ buildEmitter="build.2x2.emitter"
+ shopIcon="building.cooling"
+ description="coolingtower.building.description"
+ />
+
+ <instance
+ class="worm.buildings.AutoLoaderBuildingFeature"
+ name="autoloader.building.spec"
+ hud="build_autoloader"
+ tooltipGraphic="=$key.game.autoloader.icon"
+ hitpoints="12"
+ bounds="0,0,20,16"
+ title="=$autoloader.building.title"
+ bonusdescription="=$autoloader.building.bonus"
+ cost="250"
+ repairEmitter="repair.2x2.emitter"
+ hitPointsGraphics="hitpoints.2x2.3.array"
+ forcefieldGraphics="forcefield.2x2.3.array"
+ buildEmitter="build.2x2.emitter"
+ shopIcon="building.autoloader"
+ description="autoloader.building.description"
+ />
+
+ <instance
+ class="worm.buildings.ReactorBuildingFeature"
+ name="reactor.building.spec"
+ hud="build_reactor"
+ tooltipGraphic="=$key.game.reactor.icon"
+ hitpoints="12"
+ bounds="0,0,32,20"
+ title="=$reactor.building.title"
+ bonusdescription="=$reactor.building.bonus"
+ cost="250"
+ hitPointsGraphics="hitpoints.3x3.3.array"
+ forcefieldGraphics="forcefield.3x3.3.array"
+ repairEmitter="repair.3x3.emitter"
+ buildEmitter="build.3x3.emitter"
+ shopIcon="building.reactor"
+ description="reactor.building.description"
+ />
+
+
+
+ <!-- BARRICADES ============================================================================================================================ -->
+
+ <instance
+ class="worm.buildings.BarricadeFeature"
+ name="concrete.building.spec"
+ hud="build_concrete"
+ tooltipGraphic="=$key.game.concrete.icon"
+ hitpoints="=$barricade*2"
+ bounds="0,0,12,8"
+ title="=$concrete.building.title"
+ shortTitle="=$concrete.building.shorttitle"
+ numAvailable="40"
+ maxAvailable="80"
+ cost="10"
+ difficulty="=$cost*2"
+ paintable="true"
+ buildEmitter="build.1x1.emitter"
+ shopIcon="building.concrete"
+ description="concrete.building.description"
+ />
+
+ <instance
+ class="worm.buildings.BarricadeFeature"
+ name="steel.building.spec"
+ hud="build_steel"
+ tooltipGraphic="=$key.game.steel.icon"
+ hitpoints="=$barricade*3"
+ bounds="0,0,12,8"
+ title="=$steel.building.title"
+ shortTitle="=$steel.building.shorttitle"
+ cost="20"
+ numAvailable="30"
+ maxAvailable="60"
+ difficulty="=$cost*3"
+ paintable="true"
+ buildEmitter="build.1x1.emitter"
+ shopIcon="building.steel"
+ description="steel.building.description"
+ />
+
+ <instance
+ class="worm.buildings.BarricadeFeature"
+ name="titanium.building.spec"
+ hud="build_titanium"
+ tooltipGraphic="=$key.game.titanium.icon"
+ hitpoints="=$barricade*4"
+ bounds="0,0,12,8"
+ title="=$titanium.building.title"
+ shortTitle="=$titanium.building.shorttitle"
+ numAvailable="20"
+ maxAvailable="40"
+ cost="30"
+ difficulty="=$cost*4"
+ paintable="true"
+ buildEmitter="build.1x1.emitter"
+ shopIcon="building.titanium"
+ description="titanium.building.description"
+ />
+
+ <instance
+ class="worm.buildings.BarricadeFeature"
+ name="nanomesh.building.spec"
+ hud="build_nanomesh"
+ tooltipGraphic="=$key.game.nanomesh.icon"
+ hitpoints="=$barricade*5"
+ bounds="0,0,12,8"
+ title="=$nanomesh.building.title"
+ shortTitle="=$nanomesh.building.shorttitle"
+ numAvailable="10"
+ maxAvailable="20"
+ cost="40"
+ difficulty="=$cost*5"
+ paintable="true"
+ buildEmitter="build.1x1.emitter"
+ shopIcon="building.nanomesh"
+ registeredOnly="true"
+ setting="building"
+ gidletProof="true"
+ description="nanomesh.building.description"
+ />
+
+
+
+
+ <!-- CRYSTALS ========================================================================================================================= -->
+
+ <instance
+ class="worm.buildings.CrystalFeature"
+ name="crystal.small.building.spec"
+ hitpoints="=$crystal*1"
+ bounds="0,0,16,16"
+ value="1000"
+ />
+
+ <instance
+ class="worm.buildings.CrystalFeature"
+ name="crystal.medium.building.spec"
+ hitpoints="=$crystal*2"
+ bounds="0,0,32,16"
+ value="2000"
+ />
+
+ <instance
+ class="worm.buildings.CrystalFeature"
+ name="crystal.large.building.spec"
+ hitpoints="=$crystal*4"
+ bounds="0,0,32,16"
+ value="3000"
+ />
+
+
+
+ <include resource="buildings-generic.xml"/>
+ <include resource="buildings-earth.xml"/>
+ <include resource="buildings-moon.xml"/>
+ <include resource="buildings-mars.xml"/>
+ <include resource="buildings-saturn.xml"/>
+ <include resource="buildings-titan.xml"/>
+
+</resources>
diff --git a/src/characters-earth.xml b/src/characters-earth.xml
new file mode 100644
index 0000000..d6798f6
--- /dev/null
+++ b/src/characters-earth.xml
@@ -0,0 +1,1605 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!--
+ Copyright (c) 2003-onwards Shaven Puppy Ltd
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of 'Shaven Puppy' nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<!-- Characters -->
+<resources>
+
+
+ <!-- CHARACTER BUBBLE BACKGROUNDS ============================================================================================================================ -->
+
+ <!-- insets are nor inherited here - odd ? -->
+
+ <widgetbackground name="earth.human-speech.background" inherit="human-speech.background" color="earth.colormap:bubble" insets="24,40,24,24" />
+ <widgetbackground name="earth.human-speech-top-left.background" inherit="human-speech-top-left.background" color="earth.colormap:bubble" insets="24,40,24,24" />
+ <widgetbackground name="earth.human-speech-top-left-info.background" inherit="human-speech-top-left-info.background" color="earth.colormap:bubble" insets="140,40,24,24" />
+ <widgetbackground name="earth.human-speech-right.background" inherit="human-speech-right.background" color="earth.colormap:bubble" insets="40,24,24,24" />
+ <widgetbackground name="earth.human-speech-left.background" inherit="human-speech-left.background" color="earth.colormap:bubble" insets="28,24,40,24" />
+ <widgetbackground name="earth.info.background" inherit="info.background" color="earth.colormap:bubble" insets="24,28,24,24" />
+ <widgetbackground name="earth.tech.background" inherit="info.background" color="earth.colormap:bubble" insets="135,28,24,24" />
+ <widgetbackground name="earth.delivery.background" inherit="info.background" color="earth.colormap:bubble" insets="145,28,24,24" />
+
+ <widgetbackground name="earth.gidrah.background" inherit="info.background.spec" insets="175,28,24,24" color="earth.colormap:alert-bubble"/>
+ <widgetbackground name="earth.alert.background" inherit="info-dark.background.spec" insets="24,28,24,24" color="earth.colormap:alert-bubble"/>
+
+
+ <!-- BUILDINGS / WEAPONS SPEC ============================================================================================================================ -->
+
+
+ <character
+ name="earth.research.char.spec"
+ inherit="research.char.spec"
+ bubble="earth.info.background"
+ color="earth.colormap:text"
+ boldColor="earth.colormap:text-bold"
+ >
+ </character>
+
+ <animation name="earth.info.background.anim">
+ <scale scale="0.625"/>
+ <frame i="spriteimage.story.earth.info.01" d="1"/>
+ </animation>
+
+ <character
+ name="earth.research.tech.char.spec"
+ inherit="earth.research.char.spec"
+ bubble="earth.tech.background"
+ color="earth.colormap:text"
+ boldColor="earth.colormap:text-bold"
+ >
+ </character>
+
+ <character
+ name="earth.research.delivery.char.spec"
+ inherit="earth.research.tech.char.spec"
+ bubble="earth.delivery.background"
+ >
+ </character>
+
+
+ <!-- INFOS =============================================================================================================== -->
+
+ <character
+ name="earth.info.crystals.char"
+ inherit="earth.research.char.spec"
+ bubble="earth.human-speech-top-left-info.background"
+ >
+ <idleLayers>
+ <layers scale="0.55">
+ <sprite layer="2" animation="earth.info.background.anim"/>
+ <sprite layer="10" offset="-4,-53" image="spriteimage.items.info.crystals.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+
+ <!-- GIDRAHS =============================================================================================================== -->
+
+ <character
+ name="earth.gidrah.01.char"
+ inherit="research.char.spec"
+ bubble="earth.gidrah.background"
+ color="earth.colormap:alert-text"
+ boldColor="earth.colormap:alert-text-bold"
+ >
+ <idleLayers>
+ <layers scale="0.5">
+ <sprite layer="2" offset="0,0" animation="alert.background.anim"/>
+ <sprite layer="12" image="spriteimage.gidrah.info.earth.1.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="earth.gidrah.02.char"
+ inherit="earth.gidrah.01.char"
+ >
+ <idleLayers>
+ <layers scale="0.5">
+ <sprite layer="2" offset="0,0" animation="alert.background.anim"/>
+ <sprite layer="12" image="spriteimage.gidrah.info.earth.3.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="earth.angry.01.char"
+ inherit="earth.gidrah.01.char"
+ >
+ <idleLayers>
+ <layers scale="0.5">
+ <sprite layer="2" offset="0,0" animation="alert.background.anim"/>
+ <sprite layer="12" image="spriteimage.gidrah.info.earth.2.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="earth.angry.02.char"
+ inherit="earth.gidrah.01.char"
+ >
+ <idleLayers>
+ <layers scale="0.55">
+ <sprite layer="2" offset="0,0" animation="alert.background.anim"/>
+ <sprite layer="12" image="spriteimage.gidrah.info.earth.4.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+
+ <!-- boss -->
+
+ <animation name="earth.alert.ground.anim">
+ <scale xscale="0.65" yscale="0.65" d="0"/>
+ <frame i="spriteimage.character.ground.01" d="1"/>
+ </animation>
+
+ <character
+ name="earth.boss.char"
+ inherit="research.char.spec"
+ bubble="earth.alert.background"
+ color="earth.colormap:alert-text"
+ boldColor="earth.colormap:alert-text-bold"
+ >
+ <idleLayers>
+ <layers scale="0.65">
+ <sprite layer="2" offset="4,0" animation="alert.background.anim"/>
+ <sprite layer="10" animation="earth.alert.ground.anim"/>
+ <sprite layer="11" image="spriteimage.character.boss.earth.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+
+
+
+ <!-- CUSTERD ============================================================================================================================ -->
+
+
+ <animation name="custerd.earth.body.idle.anim">
+ <frame i="spriteimage.character.custerd.earth.back.01" d="20" />
+ </animation>
+ <animation name="custerd.earth.body.talk.anim">
+
+ <label id="start"/>
+ <random>
+ <dest id="point" n="1"/>
+ <dest id="point-up" n="1"/>
+ </random>
+
+ <label id="point"/>
+ <frame i="spriteimage.character.custerd.earth.back.02" d="25" />
+ <random>
+ <dest id="point-up" n="2"/>
+ <dest id="start"/>
+ <dest id="idle"/>
+ </random>
+
+ <label id="point-up"/>
+ <frame i="spriteimage.character.custerd.earth.back.03" d="25" />
+ <random>
+ <dest id="point" n="2"/>
+ <dest id="start"/>
+ <dest id="idle"/>
+ </random>
+
+ <label id="idle"/>
+ <frame i="spriteimage.character.custerd.earth.back.01" d="25" />
+ <random>
+ <dest id="idle" n="1"/>
+ <dest id="start"/>
+ </random>
+ </animation>
+
+ <animation name="custerd.earth.head.look-left.anim">
+ <frame i="spriteimage.character.custerd.earth.04" d="3" childXOffset="-2" />
+ <label id="look-left"/>
+ <frame i="spriteimage.character.custerd.earth.05" d="50" childXOffset="-6" />
+ <random>
+ <dest id="look-left" n="2"/>
+ <dest id="stop-look-left"/>
+ </random>
+ <label id="stop-look-left"/>
+ <frame i="spriteimage.character.custerd.earth.04" d="4" childXOffset="-2" />
+ <frame i="spriteimage.character.custerd.earth.01" d="40" childXOffset="0" />
+ <return/>
+ </animation>
+
+ <animation name="custerd.earth.head.look-right.anim">
+ <frame i="spriteimage.character.custerd.earth.02" d="3" childXOffset="2" />
+ <label id="look-right"/>
+ <frame i="spriteimage.character.custerd.earth.03" d="50" childXOffset="6" />
+ <random>
+ <dest id="look-right" n="2"/>
+ <dest id="stop-look-right"/>
+ </random>
+ <label id="stop-look-right"/>
+ <frame i="spriteimage.character.custerd.earth.02" d="4" childXOffset="2" />
+ <frame i="spriteimage.character.custerd.earth.01" d="40" childXOffset="0" />
+ <return/>
+ </animation>
+
+ <animation name="custerd.earth.head.talk.anim">
+ <frame i="spriteimage.character.custerd.earth.01" d="20" childXOffset="0" />
+ </animation>
+
+ <animation name="custerd.earth.head.idle.anim">
+ <label id="start"/>
+ <frame i="spriteimage.character.custerd.earth.01" d="70" childXOffset="0" />
+ <random>
+ <dest id="start" n="3"/>
+ <dest id="look-left"/>
+ <dest id="look-right"/>
+ </random>
+
+ <label id="look-left"/>
+ <sub id="custerd.earth.head.look-left.anim"/>
+ <random>
+ <dest id="look-left"/>
+ <dest id="start" n="3"/>
+ </random>
+
+ <label id="look-right"/>
+ <sub id="custerd.earth.head.look-right.anim"/>
+ <random>
+ <dest id="look-right"/>
+ <dest id="start" n="3"/>
+ </random>
+ </animation>
+
+ <animation name="custerd.earth.glow.anim">
+ <label id="start"/>
+ <frame i="spriteimage.character.custerd.earth.glow.04" d="5" />
+ <frame i="spriteimage.character.custerd.earth.glow.05" d="5" />
+ <frame i="spriteimage.character.custerd.earth.glow.06" d="5" />
+ <frame i="spriteimage.character.custerd.earth.glow.05" d="5" />
+ <frame i="spriteimage.character.custerd.earth.glow.04" d="5" />
+ <frame i="spriteimage.character.custerd.earth.glow.01" d="5" />
+ <random>
+ <dest id="start" n="7"/>
+ <dest id="blink"/>
+ </random>
+ <label id="blink"/>
+ <frame i="spriteimage.character.custerd.earth.glow.03" d="30" />
+ <frame i="spriteimage.character.custerd.earth.glow.02" d="5" />
+ <frame i="spriteimage.character.custerd.earth.glow.01" d="5" />
+ <goto id="start"/>
+ </animation>
+
+ <animation name="custerd.earth.mouth.idle.anim">
+ <scale scale="0.5"/>
+ <frame i="spriteimage.character.custerd.earth.top.01" d="1" />
+ </animation>
+ <animation name="custerd.earth.mouth.vowel.anim">
+ <scale scale="0.5"/>
+ <random>
+ <dest seq="2"/>
+ <dest seq="3"/>
+ </random>
+ <frame i="spriteimage.character.custerd.earth.top.02" d="200" />
+ <frame i="spriteimage.character.custerd.earth.top.03" d="200" />
+ </animation>
+ <animation name="custerd.earth.mouth.consonant.anim">
+ <scale scale="0.5"/>
+ <random>
+ <dest seq="2"/>
+ <dest seq="3"/>
+ </random>
+ <frame i="spriteimage.character.custerd.earth.top.04" d="200" />
+ <frame i="spriteimage.character.custerd.earth.top.05" d="200" />
+ </animation>
+
+
+
+ <character
+ name="earth.custerd.char"
+ inherit="custerd.char"
+ bubble="earth.human-speech.background"
+ color="earth.colormap:text"
+ boldColor="earth.colormap:text-bold"
+ >
+ <idleLayers>
+ <layers scale="0.55">
+ <!-- head first to use childOffset on mouth -->
+ <sprite layer="5" animation="custerd.earth.head.idle.anim"/>
+ <sprite layer="1" image="spriteimage.character.ground.01"/>
+ <sprite layer="4" animation="custerd.earth.body.idle.anim"/>
+ <sprite layer="6" doChildOffset="true" animation="custerd.earth.glow.anim"/>
+ <sprite layer="0" image="spriteimage.story.spotlight.earth.01"/>
+ </layers>
+ </idleLayers>
+ <talkLayers>
+ <layers scale="0.55">
+ <!-- head first to use childOffset on mouth -->
+ <sprite layer="5" animation="custerd.earth.head.talk.anim"/>
+ <sprite layer="1" image="spriteimage.character.ground.01"/>
+ <sprite layer="4" animation="custerd.earth.body.talk.anim"/>
+ <sprite layer="6" doChildOffset="true" animation="custerd.earth.glow.anim"/>
+ <sprite layer="0" image="spriteimage.story.spotlight.earth.01"/>
+ </layers>
+ </talkLayers>
+
+ <defaultAppearance>
+ <animation>
+ <scale scale="0.55"/>
+ <frame i="spriteimage.character.custerd.earth.top.01" d="1" />
+ </animation>
+ </defaultAppearance>
+ <vowelAppearance>
+ <animation>
+ <scale scale="0.55"/>
+ <random>
+ <dest seq="2"/>
+ <dest seq="3"/>
+ </random>
+ <frame i="spriteimage.character.custerd.earth.top.02" d="200" />
+ <frame i="spriteimage.character.custerd.earth.top.03" d="200" />
+ </animation>
+ </vowelAppearance>
+ <consonantAppearance>
+ <animation>
+ <scale scale="0.55"/>
+ <random>
+ <dest seq="2"/>
+ <dest seq="3"/>
+ </random>
+ <frame i="spriteimage.character.custerd.earth.top.04" d="200" />
+ <frame i="spriteimage.character.custerd.earth.top.05" d="200" />
+ </animation>
+ </consonantAppearance>
+
+ </character>
+
+
+ <character
+ name="earth.custerd-left.char"
+ inherit="earth.custerd.char"
+ bubble="earth.human-speech-right.background"
+ >
+ </character>
+
+ <character
+ name="earth.custerd.alert.char"
+ inherit="earth.custerd.char"
+ bubble="earth.human-speech-top-left.background"
+ >
+ </character>
+
+ <character
+ name="earth.custerd.info.char"
+ inherit="earth.custerd.char"
+ bubble="-"
+ >
+ </character>
+
+
+
+ <!-- TECH ============================================================================================================================ -->
+
+
+ <animation name="tech.earth.body.idle.anim">
+ <frame i="spriteimage.character.tech.earth.01" d="20" />
+ </animation>
+ <animation name="tech.earth.body.talk.anim">
+ <label id="start"/>
+ <random>
+ <dest id="point" n="1"/>
+ <dest id="gesture-left" n="1"/>
+ <dest id="gesture-right" n="1"/>
+ <dest id="shrug" n="1"/>
+ </random>
+
+ <label id="point"/>
+ <frame i="spriteimage.character.tech.earth.02" d="15" />
+ <random>
+ <dest id="point" n="2"/>
+ <dest id="start"/>
+ </random>
+
+ <label id="gesture-left"/>
+ <frame i="spriteimage.character.tech.earth.03" d="15" />
+ <random>
+ <dest id="gesture-left" n="2"/>
+ <dest id="start"/>
+ </random>
+
+ <label id="gesture-right"/>
+ <frame i="spriteimage.character.tech.earth.04" d="15" />
+ <random>
+ <dest id="gesture-right" n="2"/>
+ <dest id="start"/>
+ </random>
+
+ <label id="shrug"/>
+ <frame i="spriteimage.character.tech.earth.05" d="15" />
+ <random>
+ <dest id="shrug" n="2"/>
+ <dest id="start"/>
+ </random>
+ </animation>
+
+
+ <animation name="tech.earth.head.look-left.anim">
+ <label id="look-left"/>
+ <frame i="spriteimage.character.tech.earth.back.03" d="20" childXOffset="13" />
+ <random>
+ <dest id="look-left" n="2"/>
+ <dest id="stop-look-left"/>
+ </random>
+ <label id="stop-look-left"/>
+ <frame i="spriteimage.character.tech.earth.back.02" d="2" childXOffset="5" />
+ <frame i="spriteimage.character.tech.earth.back.01" d="40" childXOffset="0" />
+ <return/>
+ </animation>
+
+ <animation name="tech.earth.head.look-right.anim">
+ <label id="look-right"/>
+ <frame i="spriteimage.character.tech.earth.back.05" d="20" childXOffset="-13" />
+ <random>
+ <dest id="look-right" n="2"/>
+ <dest id="stop-look-right"/>
+ </random>
+ <label id="stop-look-right"/>
+ <frame i="spriteimage.character.tech.earth.back.04" d="2" childXOffset="-5" />
+ <frame i="spriteimage.character.tech.earth.back.01" d="40" childXOffset="0" />
+ <return/>
+ </animation>
+
+ <animation name="tech.earth.head.talk.anim">
+ <label id="start"/>
+ <frame i="spriteimage.character.tech.earth.back.01" d="20" childXOffset="0" />
+ <random>
+ <dest id="start"/>
+ <dest id="look-left"/>
+ <dest id="look-right"/>
+ </random>
+
+ <label id="look-left"/>
+ <sub id="tech.earth.head.look-left.anim"/>
+ <random>
+ <dest id="look-right"/>
+ <dest id="start"/>
+ </random>
+
+ <label id="look-right"/>
+ <sub id="tech.earth.head.look-right.anim"/>
+ <random>
+ <dest id="look-left"/>
+ <dest id="start"/>
+ </random>
+ </animation>
+
+ <animation name="tech.earth.head.idle.anim">
+ <label id="start"/>
+ <frame i="spriteimage.character.tech.earth.back.01" d="100" childXOffset="0" />
+ <random>
+ <dest id="start" n="6"/>
+ <dest id="look-left"/>
+ <dest id="look-right"/>
+ </random>
+
+ <label id="look-left"/>
+ <sub id="tech.earth.head.look-left.anim"/>
+ <random>
+ <dest id="look-right"/>
+ <dest id="start" n="3"/>
+ </random>
+
+ <label id="look-right"/>
+ <sub id="tech.earth.head.look-right.anim"/>
+ <random>
+ <dest id="look-left"/>
+ <dest id="start" n="3"/>
+ </random>
+ </animation>
+
+ <animation name="tech.earth.mouth.idle.anim">
+ <scale scale="0.5"/>
+ <frame i="spriteimage.character.tech.earth.top.01" d="1" />
+ </animation>
+ <animation name="tech.earth.mouth.vowel.anim">
+ <scale scale="0.5"/>
+ <random>
+ <dest seq="2"/>
+ <dest seq="3"/>
+ </random>
+ <frame i="spriteimage.character.tech.earth.top.02" d="200" />
+ <frame i="spriteimage.character.tech.earth.top.03" d="200" />
+ </animation>
+ <animation name="tech.earth.mouth.consonant.anim">
+ <scale scale="0.5"/>
+ <random>
+ <dest seq="2"/>
+ <dest seq="3"/>
+ </random>
+ <frame i="spriteimage.character.tech.earth.top.04" d="200" />
+ <frame i="spriteimage.character.tech.earth.top.05" d="200" />
+ </animation>
+
+
+ <character
+ name="earth.tech.char"
+ inherit="tech.char"
+ bubble="earth.human-speech.background"
+ color="earth.colormap:text"
+ boldColor="earth.colormap:text-bold"
+ >
+ <idleLayers>
+ <layers scale="0.5">
+ <!-- head first to use childOffset on mouth -->
+ <sprite layer="4" animation="tech.earth.head.idle.anim"/>
+ <sprite layer="1" image="spriteimage.character.ground.01"/>
+ <sprite layer="5" animation="tech.earth.body.idle.anim"/>
+ <sprite layer="0" image="spriteimage.story.spotlight.earth.01"/>
+ </layers>
+ </idleLayers>
+ <talkLayers>
+ <layers scale="0.5">
+ <sprite layer="4" animation="tech.earth.head.talk.anim"/>
+ <sprite layer="1" image="spriteimage.character.ground.01"/>
+ <sprite layer="5" animation="tech.earth.body.talk.anim"/>
+ <sprite layer="0" image="spriteimage.story.spotlight.earth.01"/>
+ </layers>
+ </talkLayers>
+
+ <defaultAppearance>
+ <animation>
+ <scale scale="0.5"/>
+ <frame i="spriteimage.character.tech.earth.top.01" d="1" />
+ </animation>
+ </defaultAppearance>
+ <vowelAppearance>
+ <animation>
+ <scale scale="0.5"/>
+ <random>
+ <dest seq="2"/>
+ <dest seq="3"/>
+ </random>
+ <frame i="spriteimage.character.tech.earth.top.02" d="200" />
+ <frame i="spriteimage.character.tech.earth.top.03" d="200" />
+ </animation>
+ </vowelAppearance>
+ <consonantAppearance>
+ <animation>
+ <scale scale="0.5"/>
+ <random>
+ <dest seq="2"/>
+ <dest seq="3"/>
+ </random>
+ <frame i="spriteimage.character.tech.earth.top.04" d="200" />
+ <frame i="spriteimage.character.tech.earth.top.05" d="200" />
+ </animation>
+ </consonantAppearance>
+ </character>
+
+ <character
+ name="earth.tech-left.char"
+ inherit="earth.tech.char"
+ bubble="earth.human-speech-right.background"
+ >
+ </character>
+
+ <character
+ name="earth.tech-gidrah.char"
+ inherit="earth.tech.char"
+ bubble="earth.human-speech-left.background"
+ >
+ </character>
+
+
+
+
+
+ <!-- GENERAL BUILDINGS ============================================================================================================================ -->
+
+
+ <character
+ name="earth.factory.char"
+ inherit="earth.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="earth.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.factory.ground.01"/>
+ <sprite layer="11" bottomColored="earth.colormap:info-floor" topColored="earth.colormap:info-building" image="spriteimage.info.factory.01"/>
+ <sprite layer="12" image="spriteimage.info.factory.glow.01"/>
+ <sprite layer="12" image="spriteimage.info.factory.top.01" colored="earth.colormap:info-alt" />
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="earth.capacitor.char"
+ inherit="earth.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="earth.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.capacitor.ground.01"/>
+ <sprite layer="11" bottomColored="earth.colormap:info-floor" topColored="earth.colormap:info-building" image="spriteimage.info.capacitor.01"/>
+ <sprite layer="12" image="spriteimage.info.capacitor.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="earth.reactor.char"
+ inherit="earth.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="earth.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.reactor.ground.01"/>
+ <sprite layer="11" bottomColored="earth.colormap:info-floor" topColored="earth.colormap:info-building" image="spriteimage.info.reactor.01"/>
+ <sprite layer="12" image="spriteimage.info.reactor.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="earth.shieldgenerator.char"
+ inherit="earth.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="earth.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.shield.ground.01"/>
+ <sprite layer="11" bottomColored="earth.colormap:info-floor" topColored="earth.colormap:info-building" image="spriteimage.info.shield.01"/>
+ <sprite layer="12" image="spriteimage.info.shield.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+
+ <character
+ name="earth.warehouse.char"
+ inherit="earth.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="earth.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.warehouse.ground.01"/>
+ <sprite layer="11" bottomColored="earth.colormap:info-floor" topColored="earth.colormap:info-building" image="spriteimage.info.warehouse.01"/>
+ <sprite layer="12" image="spriteimage.info.warehouse.glow.01"/>
+ <sprite layer="12" image="spriteimage.info.warehouse.top.01" colored="earth.colormap:info-alt" />
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="earth.barracks.char"
+ inherit="earth.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="earth.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.barracks.ground.01"/>
+ <sprite layer="11" bottomColored="earth.colormap:info-floor" topColored="earth.colormap:info-building" image="spriteimage.info.barracks.01"/>
+ <sprite layer="12" image="spriteimage.info.barracks.glow.01"/>
+ <sprite layer="12" image="spriteimage.info.barracks.top.01" colored="earth.colormap:info-alt" />
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="earth.collector.char"
+ inherit="earth.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="earth.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.collector.ground.01"/>
+ <sprite layer="11" bottomColored="earth.colormap:info-floor" topColored="earth.colormap:info-building" image="spriteimage.info.collector.01"/>
+ <sprite layer="12" image="spriteimage.info.collector.top.01" colored="earth.colormap:info-alt" />
+ <sprite layer="12" image="spriteimage.info.collector.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="earth.scanner.char"
+ inherit="earth.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="earth.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.scanner.ground.01"/>
+ <sprite layer="11" bottomColored="earth.colormap:info-floor" topColored="earth.colormap:info-building" image="spriteimage.info.scanner.01"/>
+ <sprite layer="12" image="spriteimage.info.scanner.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="earth.battery.char"
+ inherit="earth.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="earth.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.battery.ground.01"/>
+ <sprite layer="11" bottomColored="earth.colormap:info-floor" topColored="earth.colormap:info-building" image="spriteimage.info.battery.01"/>
+ <sprite layer="12" image="spriteimage.info.battery.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="earth.cooling.char"
+ inherit="earth.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="earth.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.cooling.ground.01"/>
+ <sprite layer="11" bottomColored="earth.colormap:info-floor" topColored="earth.colormap:info-building" image="spriteimage.info.cooling.01"/>
+ <sprite layer="12" image="spriteimage.info.cooling.glow.01"/>
+ <sprite layer="12" image="spriteimage.info.cooling.top.01" colored="earth.colormap:info-alt" />
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="earth.autoloader.char"
+ inherit="earth.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="earth.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.autoloader.ground.01"/>
+ <sprite layer="11" bottomColored="earth.colormap:info-floor" topColored="earth.colormap:info-building" image="spriteimage.info.autoloader.01"/>
+ <sprite layer="12" image="spriteimage.info.autoloader.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+
+ <character
+ name="earth.decoy.char"
+ inherit="earth.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="earth.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.decoy.ground.01"/>
+ <sprite layer="11" bottomColored="earth.colormap:info-floor" topColored="earth.colormap:info-building" image="spriteimage.info.decoy.01"/>
+ <sprite layer="12" image="spriteimage.info.decoy.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+
+ <character
+ name="earth.tangleweb.char"
+ inherit="earth.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="earth.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.tangleweb.ground.01"/>
+ <sprite layer="11" bottomColored="earth.colormap:info-floor" topColored="earth.colormap:info-building" image="spriteimage.info.tangleweb.01"/>
+ <sprite layer="12" image="spriteimage.info.tangleweb.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="earth.tankfactory.char"
+ inherit="earth.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="earth.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.tankfactory.ground.01"/>
+ <sprite layer="11" bottomColored="earth.colormap:info-floor" topColored="earth.colormap:info-building" image="spriteimage.info.tankfactory.01"/>
+ <sprite layer="12" image="spriteimage.info.tankfactory.glow.01"/>
+ <sprite layer="12" image="spriteimage.info.tankfactory.top.01" colored="earth.colormap:info-alt" />
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="earth.repairdrones.char"
+ inherit="earth.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="earth.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.repairdrones.ground.01"/>
+ <sprite layer="11" bottomColored="earth.colormap:info-floor" topColored="earth.colormap:info-building" image="spriteimage.info.repairdrones.01"/>
+ <sprite layer="12" image="spriteimage.info.repairdrones.glow.01"/>
+ <sprite layer="12" image="spriteimage.info.repairdrones.top.01" colored="earth.colormap:info-alt" />
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="earth.scarecrow.char"
+ inherit="earth.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="earth.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.scarecrow.ground.01"/>
+ <sprite layer="11" bottomColored="earth.colormap:info-floor" topColored="earth.colormap:info-building" image="spriteimage.info.scarecrow.01"/>
+ <sprite layer="12" image="spriteimage.info.scarecrow.glow.01"/>
+ <sprite layer="12" image="spriteimage.info.scarecrow.top.01" colored="earth.colormap:info-alt" />
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="earth.cloakingdevice.char"
+ inherit="earth.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="earth.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.cloakingdevice.ground.01"/>
+ <sprite layer="11" bottomColored="earth.colormap:info-floor" topColored="earth.colormap:info-building" image="spriteimage.info.cloakingdevice.01"/>
+ <sprite layer="12" image="spriteimage.info.cloakingdevice.glow.01"/>
+ <sprite layer="12" image="spriteimage.info.cloakingdevice.top.01" colored="earth.colormap:info-alt" />
+ </layers>
+ </idleLayers>
+ </character>
+
+
+ <!-- MINES ============================================================================================================================ -->
+
+ <character
+ name="earth.mine.char"
+ inherit="earth.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="earth.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.mine.ground.01"/>
+ <sprite layer="11" bottomColored="earth.colormap:info-floor" topColored="earth.colormap:info-building" image="spriteimage.info.mine.01"/>
+ <sprite layer="12" image="spriteimage.info.mine.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+
+ <character
+ name="earth.clustermines.char"
+ inherit="earth.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="earth.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.clustermine.ground.01"/>
+ <sprite layer="11" bottomColored="earth.colormap:info-floor" topColored="earth.colormap:info-building" image="spriteimage.info.clustermine.02"/>
+ <sprite layer="11" bottomColored="earth.colormap:info-floor" topColored="earth.colormap:info-building" image="spriteimage.info.clustermine.01"/>
+ <sprite layer="12" image="spriteimage.info.clustermine.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+
+ <character
+ name="earth.blastmine.char"
+ inherit="earth.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="earth.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.blastmine.ground.01"/>
+ <sprite layer="11" bottomColored="earth.colormap:info-floor" topColored="earth.colormap:info-building" image="spriteimage.info.blastmine.01"/>
+ <sprite layer="12" image="spriteimage.info.blastmine.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+
+
+ <!-- BARRICADES ============================================================================================================================ -->
+
+
+ <character
+ name="earth.concrete.char"
+ inherit="earth.research.char.spec"
+ >
+ <idleLayers><layers scale="0.8">
+ <sprite layer="2" animation="earth.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.barricade.concrete.ground.01"/>
+ <sprite layer="11" bottomColored="earth.colormap:info-floor" topColored="earth.colormap:info-building" image="spriteimage.info.barricade.concrete.01"/>
+ <sprite layer="12" image="spriteimage.info.barricade.concrete.top.01" colored="earth.colormap:info-alt" />
+ </layers></idleLayers>
+ </character>
+
+ <character
+ name="earth.steel.char"
+ inherit="earth.research.char.spec"
+ >
+ <idleLayers><layers scale="0.8">
+ <sprite layer="2" animation="earth.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.barricade.steel.ground.01"/>
+ <sprite layer="11" bottomColored="earth.colormap:info-floor" topColored="earth.colormap:info-building" image="spriteimage.info.barricade.steel.01"/>
+ <sprite layer="12" image="spriteimage.info.barricade.steel.top.01" colored="earth.colormap:info-alt" />
+ <sprite layer="12" image="spriteimage.info.barricade.steel.glow.01" colored="earth.colormap:info-metal" />
+ </layers></idleLayers>
+ </character>
+
+ <character
+ name="earth.titanium.char"
+ inherit="earth.research.char.spec"
+ >
+ <idleLayers><layers scale="0.8">
+ <sprite layer="2" animation="earth.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.barricade.titanium.ground.01"/>
+ <sprite layer="11" bottomColored="earth.colormap:info-floor" topColored="earth.colormap:info-building" image="spriteimage.info.barricade.titanium.01"/>
+ <sprite layer="12" image="spriteimage.info.barricade.titanium.glow.01"/>
+ <sprite layer="12" image="spriteimage.info.barricade.titanium.top.01" colored="earth.colormap:info-metal" />
+ </layers></idleLayers>
+ </character>
+
+ <character
+ name="earth.nanomesh.char"
+ inherit="earth.research.char.spec"
+ >
+ <idleLayers><layers scale="0.8">
+ <sprite layer="2" animation="earth.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.barricade.nanomesh.ground.01"/>
+ <sprite layer="11" bottomColored="earth.colormap:info-floor" topColored="earth.colormap:info-building" image="spriteimage.info.barricade.nanomesh.01"/>
+ <sprite layer="12" image="spriteimage.info.barricade.nanomesh.glow.01"/>
+ </layers></idleLayers>
+ </character>
+
+
+
+ <!-- TURRETS ============================================================================================================================ -->
+
+
+ <character
+ name="earth.blaster.char"
+ inherit="earth.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="earth.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.tower.blaster.ground.01"/>
+ <sprite layer="11" bottomColored="earth.colormap:info-floor" topColored="earth.colormap:info-building" image="spriteimage.info.tower.blaster.01"/>
+ <sprite layer="12" image="spriteimage.info.tower.blaster.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="earth.heavyblaster.char"
+ inherit="earth.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="earth.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.tower.heavyblaster.ground.01"/>
+ <sprite layer="11" bottomColored="earth.colormap:info-floor" topColored="earth.colormap:info-building" image="spriteimage.info.tower.heavyblaster.01"/>
+ <sprite layer="12" image="spriteimage.info.tower.heavyblaster.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="earth.blastcannon.char"
+ inherit="earth.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="earth.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.tower.blastcannon.ground.01"/>
+ <sprite layer="11" bottomColored="earth.colormap:info-floor" topColored="earth.colormap:info-building" image="spriteimage.info.tower.blastcannon.01"/>
+ <sprite layer="12" image="spriteimage.info.tower.blastcannon.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+
+ <character
+ name="earth.multiblaster.char"
+ inherit="earth.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="earth.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.tower.multiblaster.ground.01"/>
+ <sprite layer="11" bottomColored="earth.colormap:info-floor" topColored="earth.colormap:info-building" image="spriteimage.info.tower.multiblaster.01"/>
+ <sprite layer="12" image="spriteimage.info.tower.multiblaster.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+
+ <character
+ name="earth.shotgun.char"
+ inherit="earth.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="earth.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.tower.spreader.ground.01"/>
+ <sprite layer="11" bottomColored="earth.colormap:info-floor" topColored="earth.colormap:info-building" image="spriteimage.info.tower.spreader.01"/>
+ <sprite layer="12" image="spriteimage.info.tower.spreader.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+
+ <character
+ name="earth.assault.char"
+ inherit="earth.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="earth.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.tower.assault.ground.01"/>
+ <sprite layer="11" bottomColored="earth.colormap:info-floor" topColored="earth.colormap:info-building" image="spriteimage.info.tower.assault.01"/>
+ <sprite layer="12" image="spriteimage.info.tower.assault.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+
+ <character
+ name="earth.rocket.char"
+ inherit="earth.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="earth.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.tower.rockets.ground.01"/>
+ <sprite layer="11" bottomColored="earth.colormap:info-floor" topColored="earth.colormap:info-building" image="spriteimage.info.tower.rockets.01"/>
+ <sprite layer="12" image="spriteimage.info.tower.rockets.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+
+ <character
+ name="earth.laser.char"
+ inherit="earth.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="earth.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.tower.laser.ground.01"/>
+ <sprite layer="11" bottomColored="earth.colormap:info-floor" topColored="earth.colormap:info-building" image="spriteimage.info.tower.laser.01"/>
+ <sprite layer="12" image="spriteimage.info.tower.laser.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+
+ <character
+ name="earth.disruptor.char"
+ inherit="earth.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="earth.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.tower.disruptor.ground.01"/>
+ <sprite layer="11" bottomColored="earth.colormap:info-floor" topColored="earth.colormap:info-building" image="spriteimage.info.tower.disruptor.01"/>
+ <sprite layer="12" image="spriteimage.info.tower.disruptor.glow.01"/>
+ <sprite layer="12" image="spriteimage.info.tower.disruptor.top.01" colored="earth.colormap:info-alt" />
+ </layers>
+ </idleLayers>
+ </character>
+
+
+ <!-- TECH ============================================================================================================================ -->
+
+ <character name="earth.tech.physics.char" inherit="earth.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.physics.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.physics.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.physics.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="earth.tech.biology.char" inherit="earth.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.biology.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.biology.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.biology.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="earth.tech.chemistry.char" inherit="earth.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.chemistry.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.chemistry.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.chemistry.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="earth.tech.efficiency.char" inherit="earth.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.efficiency.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.efficiency.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.efficiency.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="earth.tech.psychology.char" inherit="earth.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.psychology.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.psychology.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.psychology.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="earth.tech.nuclear.char" inherit="earth.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.nuclear.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.nuclear.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.nuclear.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="earth.tech.explosives.char" inherit="earth.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.explosives.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.explosives.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.explosives.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="earth.tech.textiles.char" inherit="earth.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.textiles.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.textiles.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.textiles.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="earth.tech.automation.char" inherit="earth.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.automation.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.automation.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.automation.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="earth.tech.barometrics.char" inherit="earth.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.barometrics.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.barometrics.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.barometrics.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="earth.tech.optics.char" inherit="earth.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.optics.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.optics.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.optics.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="earth.tech.ballistics.char" inherit="earth.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.ballistics.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.ballistics.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.ballistics.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="earth.tech.robotics.char" inherit="earth.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.robotics.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.robotics.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.robotics.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="earth.tech.forcefields.char" inherit="earth.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.forcefields.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.forcefields.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.forcefields.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="earth.tech.anatomy.char" inherit="earth.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.anatomy.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.anatomy.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.anatomy.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="earth.tech.extraction.char" inherit="earth.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.extraction.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.extraction.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.extraction.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+
+ <!-- new techs -->
+
+ <character name="earth.tech.ionisation.char" inherit="earth.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.ionisation.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.ionisation.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.ionisation.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="earth.tech.lithium.char" inherit="earth.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.lithium.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.lithium.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.lithium.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="earth.tech.sodium.char" inherit="earth.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.sodium.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.sodium.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.sodium.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="earth.tech.precision.char" inherit="earth.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.precision.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.precision.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.precision.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="earth.tech.advancedexplosives.char" inherit="earth.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.advancedexplosives.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.advancedexplosives.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.advancedexplosives.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="earth.tech.plastic.char" inherit="earth.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.plastic.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.plastic.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.plastic.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="earth.tech.nanohardening.char" inherit="earth.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.nanohardening.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.nanohardening.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.nanohardening.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="earth.tech.finetuning.char" inherit="earth.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.finetuning.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.finetuning.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.finetuning.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="earth.tech.droidbuff.char" inherit="earth.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.droidbuff.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.droidbuff.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.droidbuff.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="earth.tech.nanotechnology.char" inherit="earth.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.nanotechnology.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.nanotechnology.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.nanotechnology.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="earth.tech.splitter.char" inherit="earth.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.splitter.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.splitter.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.splitter.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="earth.tech.multibarrel.char" inherit="earth.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.multibarrel.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.multibarrel.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.multibarrel.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="earth.tech.amplifiers.char" inherit="earth.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.amplifiers.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.amplifiers.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.amplifiers.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="earth.tech.lasertech.char" inherit="earth.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.lasertech.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.lasertech.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.lasertech.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="earth.tech.shells.char" inherit="earth.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.shells.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.shells.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.shells.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="earth.tech.shielding.char" inherit="earth.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.shielding.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.shielding.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.shielding.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="earth.tech.xrays.char" inherit="earth.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.xrays.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.xrays.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.xrays.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+
+
+ <character name="earth.tech.coffee.char" inherit="earth.research.delivery.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="20,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.crate.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.crate.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.crate.glow.01"/>
+ <sprite layer="10" offset="-20,85" sublayer="1" animation="info.tech.coffee.ground.anim"/>
+ <sprite layer="10" offset="-20,85" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.coffee.anim"/>
+ <sprite layer="10" offset="-20,85" sublayer="3" colored="tech" animation="info.tech.coffee.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="earth.tech.strongercoffee.char" inherit="earth.research.delivery.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="20,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.crate.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.crate.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.crate.glow.01"/>
+ <sprite layer="10" offset="-20,85" sublayer="1" animation="info.tech.strongercoffee.ground.anim"/>
+ <sprite layer="10" offset="-20,85" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.strongercoffee.anim"/>
+ <sprite layer="10" offset="-20,85" sublayer="3" colored="tech" animation="info.tech.strongercoffee.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="earth.tech.grant.char" inherit="earth.research.delivery.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="20,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.crate.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.crate.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.crate.glow.01"/>
+ <sprite layer="10" offset="-20,85" sublayer="1" animation="info.tech.grant.ground.anim"/>
+ <sprite layer="10" offset="-20,85" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.grant.anim"/>
+ <sprite layer="10" offset="-20,85" sublayer="3" colored="tech" animation="info.tech.grant.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="earth.tech.reinforcements.char" inherit="earth.research.delivery.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="20,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.crate.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.crate.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.crate.glow.01"/>
+ <sprite layer="10" offset="-20,85" sublayer="1" animation="info.tech.reinforcements.ground.anim"/>
+ <sprite layer="10" offset="-20,85" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.reinforcements.anim"/>
+ <sprite layer="10" offset="-20,85" sublayer="3" colored="tech" animation="info.tech.reinforcements.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="earth.tech.extrabarricades.char" inherit="earth.research.delivery.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="20,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.crate.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.crate.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.crate.glow.01"/>
+ <sprite layer="10" offset="-20,85" sublayer="1" animation="info.tech.extrabarricades.ground.anim"/>
+ <sprite layer="10" offset="-20,85" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.extrabarricades.anim"/>
+ <sprite layer="10" offset="-20,85" sublayer="3" colored="tech" animation="info.tech.extrabarricades.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="earth.tech.extramines.char" inherit="earth.research.delivery.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="20,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.crate.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.crate.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.crate.glow.01"/>
+ <sprite layer="10" offset="-20,85" sublayer="1" animation="info.tech.extramines.ground.anim"/>
+ <sprite layer="10" offset="-20,85" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.extramines.anim"/>
+ <sprite layer="10" offset="-20,85" sublayer="3" colored="tech" animation="info.tech.extramines.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="earth.tech.powerups.char" inherit="earth.research.delivery.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="20,73" animation="earth.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.crate.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.crate.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.crate.glow.01"/>
+ <sprite layer="10" offset="-20,85" sublayer="1" animation="info.tech.powerups.ground.anim"/>
+ <sprite layer="10" offset="-20,85" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.powerups.anim"/>
+ <sprite layer="10" offset="-20,85" sublayer="3" colored="tech" animation="info.tech.powerups.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+
+</resources> \ No newline at end of file
diff --git a/src/characters-endless.xml b/src/characters-endless.xml
new file mode 100644
index 0000000..d347616
--- /dev/null
+++ b/src/characters-endless.xml
@@ -0,0 +1,333 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!--
+ Copyright (c) 2003-onwards Shaven Puppy Ltd
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of 'Shaven Puppy' nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<!-- Characters -->
+<resources>
+
+
+ <!-- CHARACTER BUBBLE BACKGROUNDS ============================================================================================================================ -->
+
+ <!-- insets are nor inherited here - odd ? -->
+
+ <widgetbackground name="endless.info.background" inherit="info.background" color="endless.colormap:bubble" insets="24,28,24,24" />
+
+
+ <!-- STAT BOT ============================================================================================================================ -->
+
+
+ <animation name="statbot.earth.body.idle.anim">
+
+ <label id="start"/>
+ <frame i="spriteimage.character.statbot.earth.back.01" d="20" />
+
+ <random>
+ <dest id="start" n="10"/>
+ <dest id="twitch1" n="1"/>
+ <dest id="twitch2" n="1"/>
+ </random>
+
+ <label id="twitch1"/>
+ <frame i="spriteimage.character.statbot.earth.back.05" d="20" />
+
+ <random>
+ <dest id="twitch1" n="1"/>
+ <dest id="twitch1end1" n="1"/>
+ </random>
+
+ <label id="twitch1end1"/>
+ <frame i="spriteimage.character.statbot.earth.back.01" d="3" />
+
+ <label id="twitch1end2"/>
+ <frame i="spriteimage.character.statbot.earth.back.06" d="20" />
+
+ <random>
+ <dest id="twitch1end2" n="5"/>
+ <dest id="end" n="1"/>
+ </random>
+
+
+ <label id="twitch2"/>
+ <frame i="spriteimage.character.statbot.earth.back.05" d="30" />
+
+ <loop count="3"/>
+ <label id="twitch2loop"/>
+ <frame i="spriteimage.character.statbot.earth.back.05" d="7" />
+ <frame i="spriteimage.character.statbot.earth.back.01" d="2" />
+ <frame i="spriteimage.character.statbot.earth.back.06" d="7" />
+ <frame i="spriteimage.character.statbot.earth.back.01" d="4" />
+ <repeat id="twitch2loop"/>
+
+ <random>
+ <dest id="end" n="3"/>
+ <dest id="twitch2loop" n="1"/>
+ </random>
+
+ <label id="end"/>
+ <frame i="spriteimage.character.statbot.earth.back.01" d="300" />
+ <goto id="start"/>
+
+
+ </animation>
+
+ <animation name="statbot.earth.body.talk.anim">
+ <label id="start"/>
+ <random>
+ <dest id="point" n="1"/>
+ <dest id="gesture" n="1"/>
+ <dest id="hands-up" n="1"/>
+ </random>
+
+ <label id="point"/>
+ <frame i="spriteimage.character.statbot.earth.back.02" d="15" />
+ <random>
+ <dest id="point" n="2"/>
+ <dest id="start"/>
+ </random>
+
+ <label id="gesture"/>
+ <frame i="spriteimage.character.statbot.earth.back.03" d="15" />
+ <random>
+ <dest id="gesture" n="2"/>
+ <dest id="start"/>
+ </random>
+
+ <label id="hands-up"/>
+ <frame i="spriteimage.character.statbot.earth.back.04" d="15" />
+ <random>
+ <dest id="hands-up" n="2"/>
+ <dest id="start"/>
+ </random>
+
+ </animation>
+
+ <animation name="statbot.earth.head.look-left.anim">
+ <frame i="spriteimage.character.statbot.earth.02" d="3" childXOffset="8" />
+ <label id="look-left"/>
+ <frame i="spriteimage.character.statbot.earth.03" d="40" childXOffset="16" />
+ <random>
+ <dest id="look-left" n="2"/>
+ <dest id="stop-look-left"/>
+ </random>
+ <label id="stop-look-left"/>
+ <frame i="spriteimage.character.statbot.earth.02" d="3" childXOffset="8" />
+ <frame i="spriteimage.character.statbot.earth.01" d="40" childXOffset="0" />
+ <return/>
+ </animation>
+
+ <animation name="statbot.earth.head.look-right.anim">
+ <frame i="spriteimage.character.statbot.earth.04" d="3" childXOffset="-8" />
+ <label id="look-right"/>
+ <frame i="spriteimage.character.statbot.earth.05" d="40" childXOffset="-16" />
+ <random>
+ <dest id="look-right" n="2"/>
+ <dest id="stop-look-right"/>
+ </random>
+ <label id="stop-look-right"/>
+ <frame i="spriteimage.character.statbot.earth.04" d="3" childXOffset="-8" />
+ <frame i="spriteimage.character.statbot.earth.01" d="40" childXOffset="0" />
+ <return/>
+ </animation>
+
+ <animation name="statbot.earth.head.talk.anim">
+ <label id="start"/>
+ <frame i="spriteimage.character.statbot.earth.01" d="20" childXOffset="0" />
+ <random>
+ <dest id="start"/>
+ <dest id="look-left"/>
+ <dest id="look-right"/>
+ </random>
+
+ <label id="look-left"/>
+ <sub id="statbot.earth.head.look-left.anim"/>
+ <random>
+ <dest id="look-right"/>
+ <dest id="start"/>
+ </random>
+
+ <label id="look-right"/>
+ <sub id="statbot.earth.head.look-right.anim"/>
+ <random>
+ <dest id="look-left"/>
+ <dest id="start"/>
+ </random>
+ </animation>
+
+ <animation name="statbot.earth.head.idle.anim">
+ <label id="start"/>
+ <frame i="spriteimage.character.statbot.earth.01" d="20" childXOffset="0" />
+ <random>
+ <dest id="start" n="2"/>
+ <dest id="look-left"/>
+ <dest id="look-right"/>
+ </random>
+
+ <label id="look-left"/>
+ <sub id="statbot.earth.head.look-left.anim"/>
+ <random>
+ <dest id="look-right"/>
+ <dest id="start" n="2"/>
+ </random>
+
+ <label id="look-right"/>
+ <sub id="statbot.earth.head.look-right.anim"/>
+ <random>
+ <dest id="look-left"/>
+ <dest id="start" n="2"/>
+ </random>
+ </animation>
+
+ <animation name="statbot.earth.glow.anim">
+ <label id="start"/>
+ <frame i="spriteimage.character.statbot.earth.glow.04" d="5" />
+ <frame i="spriteimage.character.statbot.earth.glow.05" d="5" />
+ <frame i="spriteimage.character.statbot.earth.glow.06" d="5" />
+ <frame i="spriteimage.character.statbot.earth.glow.05" d="5" />
+ <frame i="spriteimage.character.statbot.earth.glow.04" d="5" />
+ <frame i="spriteimage.character.statbot.earth.glow.01" d="5" />
+ <random>
+ <dest id="start" n="7"/>
+ <dest id="blink"/>
+ </random>
+ <label id="blink"/>
+ <frame i="spriteimage.character.statbot.earth.glow.03" d="30" />
+ <frame i="spriteimage.character.statbot.earth.glow.02" d="5" />
+ <frame i="spriteimage.character.statbot.earth.glow.01" d="5" />
+ <goto id="start"/>
+ </animation>
+
+ <animation name="statbot.earth.mouth.idle.anim">
+ <frame i="spriteimage.character.statbot.earth.top.01" d="1" />
+ </animation>
+ <animation name="statbot.earth.mouth.vowel.anim">
+ <random>
+ <dest seq="2"/>
+ <dest seq="3"/>
+ </random>
+ <frame i="spriteimage.character.statbot.earth.top.02" d="200" />
+ <frame i="spriteimage.character.statbot.earth.top.03" d="200" />
+ </animation>
+ <animation name="statbot.earth.mouth.consonant.anim">
+ <random>
+ <dest seq="2"/>
+ <dest seq="3"/>
+ </random>
+ <frame i="spriteimage.character.statbot.earth.top.04" d="200" />
+ <frame i="spriteimage.character.statbot.earth.top.05" d="200" />
+ </animation>
+
+
+ <character
+ name="endless.stats.char"
+ inherit="statbot.char.spec"
+ bubble="earth.human-speech-top-left.background"
+ color="earth.colormap:text"
+ boldColor="earth.colormap:text-bold"
+ mouthLayer="6"
+ textSpeed="1"
+ suppressChildOffsetMouth="true"
+ >
+ <idleLayers>
+ <layers scale="0.5">
+ <!-- head first to use childOffset on mouth -->
+ <sprite layer="5" animation="statbot.earth.head.idle.anim"/>
+ <sprite layer="1" image="spriteimage.character.ground.01"/>
+ <sprite layer="4" animation="statbot.earth.body.idle.anim"/>
+ <sprite layer="6" doChildOffset="true" animation="statbot.earth.glow.anim"/>
+ <sprite layer="0" image="spriteimage.story.spotlight.earth.01"/>
+ <sprite layer="7" image="spriteimage.character.statbot.earth.top.06"/>
+ </layers>
+ </idleLayers>
+ <talkLayers>
+ <layers scale="0.5">
+ <!-- head first to use childOffset on mouth -->
+ <sprite layer="5" animation="statbot.earth.head.talk.anim"/>
+ <sprite layer="1" image="spriteimage.character.ground.01"/>
+ <sprite layer="4" animation="statbot.earth.body.talk.anim"/>
+ <sprite layer="6" doChildOffset="true" animation="statbot.earth.glow.anim"/>
+ <sprite layer="0" image="spriteimage.story.spotlight.earth.01"/>
+ <sprite layer="7" image="spriteimage.character.statbot.earth.top.06"/>
+ </layers>
+ </talkLayers>
+
+ <defaultAppearance>
+ <animation>
+ <scale scale="0.5"/>
+ <animcolor a="255" d="0"/>
+ <frame i="spriteimage.character.statbot.earth.top.03" d="4" />
+ <animcolor a="200" d="5"/>
+ <animcolor a="150" d="6"/>
+ <animcolor a="100" d="7"/>
+ <animcolor a="50" d="32"/>
+ <animcolor a="100" d="7"/>
+ <animcolor a="150" d="6"/>
+ <animcolor a="200" d="5"/>
+ <animcolor a="255" d="4"/>
+ <frame i="spriteimage.character.statbot.earth.top.02" d="3" />
+ <frame i="spriteimage.character.statbot.earth.top.01" d="3" />
+ <frame i="spriteimage.character.statbot.earth.top.04" d="3" />
+ <frame i="spriteimage.character.statbot.earth.top.01" d="3" />
+ <frame i="spriteimage.character.statbot.earth.top.02" d="3" />
+ <goto seq="2"/>
+ </animation>
+ </defaultAppearance>
+ <vowelAppearance>
+ <animation>
+ <scale scale="0.5"/>
+ <random>
+ <dest seq="2"/>
+ <dest seq="4"/>
+ </random>
+ <animcolor a="255" d="0"/>
+ <frame i="spriteimage.character.statbot.earth.top.03" d="2" />
+ <animcolor a="128" d="0"/>
+ <frame i="spriteimage.character.statbot.earth.top.03" d="2" />
+ </animation>
+ </vowelAppearance>
+ <consonantAppearance>
+ <animation>
+ <scale scale="0.5"/>
+ <animcolor a="255" d="0"/>
+ <random>
+ <dest seq="3"/>
+ <dest seq="4"/>
+ </random>
+ <frame i="spriteimage.character.statbot.earth.top.05" d="2" />
+ <frame i="spriteimage.character.statbot.earth.top.04" d="2" />
+ </animation>
+ </consonantAppearance>
+
+ </character>
+
+
+
+</resources> \ No newline at end of file
diff --git a/src/characters-mars.xml b/src/characters-mars.xml
new file mode 100644
index 0000000..f36539b
--- /dev/null
+++ b/src/characters-mars.xml
@@ -0,0 +1,1675 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!--
+ Copyright (c) 2003-onwards Shaven Puppy Ltd
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of 'Shaven Puppy' nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<!-- Characters -->
+<resources>
+
+
+ <!-- CHARACTER BUBBLE BACKGROUNDS ============================================================================================================================ -->
+
+ <!-- insets are nor inherited here - odd ? -->
+
+ <widgetbackground name="mars.human-speech.background" inherit="human-speech.background" color="mars.colormap:bubble" insets="24,40,24,24" />
+ <widgetbackground name="mars.human-speech-top-left.background" inherit="human-speech-top-left.background" color="mars.colormap:bubble" insets="24,40,24,24" />
+ <widgetbackground name="mars.human-speech-top-left-info.background" inherit="human-speech-top-left-info.background" color="mars.colormap:bubble" insets="140,40,24,24" />
+ <widgetbackground name="mars.human-speech-right.background" inherit="human-speech-right.background" color="mars.colormap:bubble" insets="40,24,24,24" />
+ <widgetbackground name="mars.human-speech-left.background" inherit="human-speech-left.background" color="mars.colormap:bubble" insets="28,24,40,24" />
+ <widgetbackground name="mars.info.background" inherit="info.background" color="mars.colormap:bubble" insets="24,28,24,24" />
+ <widgetbackground name="mars.tech.background" inherit="info.background" color="mars.colormap:bubble" insets="=$research.tech.inset.l,28,24,24" />
+ <widgetbackground name="mars.delivery.background" inherit="info.background" color="mars.colormap:bubble" insets="145,28,24,24" />
+
+
+ <widgetbackground name="mars.gidrah.background" inherit="info.background.spec" insets="175,28,24,24" color="mars.colormap:alert-bubble"/>
+ <widgetbackground name="mars.alert.background" inherit="info-dark.background.spec" insets="24,28,24,24" color="mars.colormap:alert-bubble"/>
+
+
+ <!-- BUILDINGS / WEAPONS SPEC ============================================================================================================================ -->
+
+
+ <character
+ name="mars.research.char.spec"
+ inherit="research.char.spec"
+ bubble="mars.info.background"
+ color="mars.colormap:text"
+ boldColor="mars.colormap:text-bold"
+ >
+ </character>
+
+ <animation name="mars.info.background.anim">
+ <scale scale="0.625"/>
+ <frame i="spriteimage.story.mars.info.01" d="1"/>
+ </animation>
+
+
+
+
+ <!-- INFOS =============================================================================================================== -->
+
+ <character
+ name="mars.info.crystals.char"
+ inherit="mars.research.char.spec"
+ bubble="mars.human-speech-top-left-info.background"
+ >
+ <idleLayers>
+ <layers scale="0.55">
+ <sprite layer="2" animation="mars.info.background.anim"/>
+ <sprite layer="10" offset="-4,-53" image="spriteimage.items.info.crystals.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="mars.research.tech.char.spec"
+ inherit="mars.research.char.spec"
+ bubble="mars.tech.background"
+ color="mars.colormap:text"
+ boldColor="mars.colormap:text-bold"
+ >
+ </character>
+
+ <character
+ name="mars.research.delivery.char.spec"
+ inherit="mars.research.char.spec"
+ bubble="mars.delivery.background"
+ >
+ </character>
+
+ <!-- GIDRAHS =============================================================================================================== -->
+
+ <character
+ name="mars.gidrah.01.char"
+ inherit="research.char.spec"
+ bubble="mars.gidrah.background"
+ color="mars.colormap:alert-text"
+ boldColor="mars.colormap:alert-text-bold"
+ >
+ <idleLayers>
+ <layers scale="0.5">
+ <sprite layer="2" offset="0,0" animation="alert.background.anim"/>
+ <sprite layer="12" offset="-24,-16" image="spriteimage.gidrah.info.mars.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="mars.gidrah.02.char"
+ inherit="mars.gidrah.01.char"
+ >
+ <idleLayers>
+ <layers scale="0.5">
+ <sprite layer="2" offset="0,0" animation="alert.background.anim"/>
+ <sprite layer="12" offset="-24,-24" image="spriteimage.gidrah.info.mars.02"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="mars.gidrah.03.char"
+ inherit="mars.gidrah.01.char"
+ >
+ <idleLayers>
+ <layers scale="0.5">
+ <sprite layer="2" offset="0,0" animation="alert.background.anim"/>
+ <sprite layer="12" offset="-24,-24" image="spriteimage.gidrah.info.mars.03"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="mars.gidrah.04.char"
+ inherit="mars.gidrah.01.char"
+ >
+ <idleLayers>
+ <layers scale="0.6">
+ <!-- <sprite layer="2" offset="0,0" animation="alert.background.anim"/> -->
+ <sprite layer="12" offset="-27,-35" image="spriteimage.gidrah.info.mars.04"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="mars.gidlet.01.char"
+ inherit="mars.gidrah.01.char"
+ >
+ <idleLayers>
+ <layers scale="0.525">
+ <sprite layer="2" offset="0,0" animation="alert.background.anim"/>
+ <sprite layer="12" offset="-20,-30" image="spriteimage.gidlet.info.mars.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="mars.angry.01.char"
+ inherit="mars.gidrah.01.char"
+ >
+ <idleLayers>
+ <layers scale="0.5">
+ <sprite layer="2" offset="0,0" animation="alert.background.anim"/>
+ <sprite layer="12" offset="-24,-24" image="spriteimage.gidrah.angry.info.mars.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="mars.angry.02.char"
+ inherit="mars.gidrah.01.char"
+ >
+ <idleLayers>
+ <layers scale="0.55">
+ <sprite layer="2" offset="0,40" animation="alert.background.anim"/>
+ <sprite layer="12" offset="-24,-24" image="spriteimage.gidrah.angry.info.mars.02"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="mars.angry.03.char"
+ inherit="mars.gidrah.01.char"
+ >
+ <idleLayers>
+ <layers scale="0.5">
+ <sprite layer="2" offset="0,0" animation="alert.background.anim"/>
+ <sprite layer="12" offset="-24,-14" image="spriteimage.gidrah.angry.info.mars.03"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="mars.angry.04.char"
+ inherit="mars.gidrah.01.char"
+ >
+ <idleLayers>
+ <layers scale="0.5">
+ <!-- <sprite layer="2" offset="0,0" animation="alert.background.anim"/> -->
+ <sprite layer="12" offset="-34,-16" image="spriteimage.gidrah.angry.info.mars.04"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+
+
+ <!-- boss -->
+
+ <animation name="mars.alert.ground.anim">
+ <scale xscale="0.75" yscale="1.25" d="0"/>
+ <frame i="spriteimage.character.ground.01" d="1"/>
+ </animation>
+
+ <character
+ name="mars.boss.char"
+ inherit="research.char.spec"
+ bubble="mars.alert.background"
+ color="mars.colormap:alert-text"
+ boldColor="mars.colormap:alert-text-bold"
+ >
+ <idleLayers>
+ <layers scale="0.50">
+ <sprite layer="2" offset="-2,0" animation="alert.background.anim"/>
+ <sprite layer="10" animation="mars.alert.ground.anim"/>
+ <sprite layer="11" image="spriteimage.character.boss.mars.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+
+
+
+ <!-- CUSTERD ============================================================================================================================ -->
+
+
+ <animation name="custerd.mars.body.idle.anim">
+ <frame i="spriteimage.character.custerd.mars.back.01" d="20" />
+ </animation>
+ <animation name="custerd.mars.body.talk.anim">
+
+ <label id="start"/>
+ <random>
+ <dest id="point" n="1"/>
+ <dest id="point-up" n="1"/>
+ </random>
+
+ <label id="point"/>
+ <frame i="spriteimage.character.custerd.mars.back.02" d="25" />
+ <random>
+ <dest id="point-up" n="2"/>
+ <dest id="start"/>
+ <dest id="idle"/>
+ </random>
+
+ <label id="point-up"/>
+ <frame i="spriteimage.character.custerd.mars.back.03" d="25" />
+ <random>
+ <dest id="point" n="2"/>
+ <dest id="start"/>
+ <dest id="idle"/>
+ </random>
+
+ <label id="idle"/>
+ <frame i="spriteimage.character.custerd.mars.back.01" d="25" />
+ <random>
+ <dest id="idle" n="1"/>
+ <dest id="start"/>
+ </random>
+ </animation>
+
+ <animation name="custerd.mars.head.look-left.anim">
+ <frame i="spriteimage.character.custerd.mars.04" d="3" childXOffset="-2" />
+ <label id="look-left"/>
+ <frame i="spriteimage.character.custerd.mars.05" d="50" childXOffset="-6" />
+ <random>
+ <dest id="look-left" n="2"/>
+ <dest id="stop-look-left"/>
+ </random>
+ <label id="stop-look-left"/>
+ <frame i="spriteimage.character.custerd.mars.04" d="4" childXOffset="-2" />
+ <frame i="spriteimage.character.custerd.mars.01" d="40" childXOffset="0" />
+ <return/>
+ </animation>
+
+ <animation name="custerd.mars.head.look-right.anim">
+ <frame i="spriteimage.character.custerd.mars.02" d="3" childXOffset="2" />
+ <label id="look-right"/>
+ <frame i="spriteimage.character.custerd.mars.03" d="50" childXOffset="6" />
+ <random>
+ <dest id="look-right" n="2"/>
+ <dest id="stop-look-right"/>
+ </random>
+ <label id="stop-look-right"/>
+ <frame i="spriteimage.character.custerd.mars.02" d="4" childXOffset="2" />
+ <frame i="spriteimage.character.custerd.mars.01" d="40" childXOffset="0" />
+ <return/>
+ </animation>
+
+ <animation name="custerd.mars.head.talk.anim">
+ <frame i="spriteimage.character.custerd.mars.01" d="20" childXOffset="0" />
+ </animation>
+
+ <animation name="custerd.mars.head.idle.anim">
+ <label id="start"/>
+ <frame i="spriteimage.character.custerd.mars.01" d="70" childXOffset="0" />
+ <random>
+ <dest id="start" n="3"/>
+ <dest id="look-left"/>
+ <dest id="look-right"/>
+ </random>
+
+ <label id="look-left"/>
+ <sub id="custerd.mars.head.look-left.anim"/>
+ <random>
+ <dest id="look-left"/>
+ <dest id="start" n="3"/>
+ </random>
+
+ <label id="look-right"/>
+ <sub id="custerd.mars.head.look-right.anim"/>
+ <random>
+ <dest id="look-right"/>
+ <dest id="start" n="3"/>
+ </random>
+ </animation>
+
+ <animation name="custerd.mars.glow.anim">
+ <label id="start"/>
+ <frame i="spriteimage.character.custerd.mars.glow.04" d="5" />
+ <frame i="spriteimage.character.custerd.mars.glow.05" d="5" />
+ <frame i="spriteimage.character.custerd.mars.glow.06" d="5" />
+ <frame i="spriteimage.character.custerd.mars.glow.05" d="5" />
+ <frame i="spriteimage.character.custerd.mars.glow.04" d="5" />
+ <frame i="spriteimage.character.custerd.mars.glow.01" d="5" />
+ <random>
+ <dest id="start" n="7"/>
+ <dest id="blink"/>
+ </random>
+ <label id="blink"/>
+ <frame i="spriteimage.character.custerd.mars.glow.03" d="30" />
+ <frame i="spriteimage.character.custerd.mars.glow.02" d="5" />
+ <frame i="spriteimage.character.custerd.mars.glow.01" d="5" />
+ <goto id="start"/>
+ </animation>
+
+ <animation name="custerd.mars.mouth.idle.anim">
+ <scale scale="0.5"/>
+ <frame i="spriteimage.character.custerd.mars.top.01" d="1" />
+ </animation>
+ <animation name="custerd.mars.mouth.vowel.anim">
+ <scale scale="0.5"/>
+ <random>
+ <dest seq="2"/>
+ <dest seq="3"/>
+ </random>
+ <frame i="spriteimage.character.custerd.mars.top.02" d="200" />
+ <frame i="spriteimage.character.custerd.mars.top.03" d="200" />
+ </animation>
+ <animation name="custerd.mars.mouth.consonant.anim">
+ <scale scale="0.5"/>
+ <random>
+ <dest seq="2"/>
+ <dest seq="3"/>
+ </random>
+ <frame i="spriteimage.character.custerd.mars.top.04" d="200" />
+ <frame i="spriteimage.character.custerd.mars.top.05" d="200" />
+ </animation>
+
+
+
+ <character
+ name="mars.custerd.char"
+ inherit="custerd.char"
+ bubble="mars.human-speech.background"
+ color="mars.colormap:text"
+ boldColor="mars.colormap:text-bold"
+ >
+ <idleLayers>
+ <layers scale="0.55">
+ <!-- head first to use childOffset on mouth -->
+ <sprite layer="5" animation="custerd.mars.head.idle.anim"/>
+ <sprite layer="1" image="spriteimage.character.ground.01"/>
+ <sprite layer="4" animation="custerd.mars.body.idle.anim"/>
+ <sprite layer="6" doChildOffset="true" animation="custerd.mars.glow.anim"/>
+ <sprite layer="0" image="spriteimage.story.spotlight.mars.01"/>
+ </layers>
+ </idleLayers>
+ <talkLayers>
+ <layers scale="0.55">
+ <!-- head first to use childOffset on mouth -->
+ <sprite layer="5" animation="custerd.mars.head.talk.anim"/>
+ <sprite layer="1" image="spriteimage.character.ground.01"/>
+ <sprite layer="4" animation="custerd.mars.body.talk.anim"/>
+ <sprite layer="6" doChildOffset="true" animation="custerd.mars.glow.anim"/>
+ <sprite layer="0" image="spriteimage.story.spotlight.mars.01"/>
+ </layers>
+ </talkLayers>
+
+ <defaultAppearance>
+ <animation>
+ <scale scale="0.55"/>
+ <frame i="spriteimage.character.custerd.mars.top.01" d="1" />
+ </animation>
+ </defaultAppearance>
+ <vowelAppearance>
+ <animation>
+ <scale scale="0.55"/>
+ <random>
+ <dest seq="2"/>
+ <dest seq="3"/>
+ </random>
+ <frame i="spriteimage.character.custerd.mars.top.02" d="200" />
+ <frame i="spriteimage.character.custerd.mars.top.03" d="200" />
+ </animation>
+ </vowelAppearance>
+ <consonantAppearance>
+ <animation>
+ <scale scale="0.55"/>
+ <random>
+ <dest seq="2"/>
+ <dest seq="3"/>
+ </random>
+ <frame i="spriteimage.character.custerd.mars.top.04" d="200" />
+ <frame i="spriteimage.character.custerd.mars.top.05" d="200" />
+ </animation>
+ </consonantAppearance>
+
+ </character>
+
+
+ <character
+ name="mars.custerd-left.char"
+ inherit="mars.custerd.char"
+ bubble="mars.human-speech-right.background"
+ >
+ </character>
+
+ <character
+ name="mars.custerd.alert.char"
+ inherit="mars.custerd.char"
+ bubble="mars.human-speech-top-left.background"
+ >
+ </character>
+
+ <character
+ name="mars.custerd.info.char"
+ inherit="mars.custerd.char"
+ bubble="-"
+ >
+ </character>
+
+ <character
+ name="mars.custerd-gidrah.char"
+ inherit="mars.custerd.char"
+ bubble="mars.human-speech-left.background"
+ >
+ </character>
+
+
+ <!-- TECH ============================================================================================================================ -->
+
+
+ <animation name="tech.mars.body.idle.anim">
+ <frame i="spriteimage.character.tech.mars.01" d="20" />
+ </animation>
+ <animation name="tech.mars.body.talk.anim">
+ <label id="start"/>
+ <random>
+ <dest id="point" n="1"/>
+ <dest id="gesture-left" n="1"/>
+ <dest id="gesture-right" n="1"/>
+ <dest id="shrug" n="1"/>
+ </random>
+
+ <label id="point"/>
+ <frame i="spriteimage.character.tech.mars.02" d="15" />
+ <random>
+ <dest id="point" n="2"/>
+ <dest id="start"/>
+ </random>
+
+ <label id="gesture-left"/>
+ <frame i="spriteimage.character.tech.mars.03" d="15" />
+ <random>
+ <dest id="gesture-left" n="2"/>
+ <dest id="start"/>
+ </random>
+
+ <label id="gesture-right"/>
+ <frame i="spriteimage.character.tech.mars.04" d="15" />
+ <random>
+ <dest id="gesture-right" n="2"/>
+ <dest id="start"/>
+ </random>
+
+ <label id="shrug"/>
+ <frame i="spriteimage.character.tech.mars.05" d="15" />
+ <random>
+ <dest id="shrug" n="2"/>
+ <dest id="start"/>
+ </random>
+ </animation>
+
+
+ <animation name="tech.mars.head.look-left.anim">
+ <label id="look-left"/>
+ <frame i="spriteimage.character.tech.mars.back.03" d="20" childXOffset="13" />
+ <random>
+ <dest id="look-left" n="2"/>
+ <dest id="stop-look-left"/>
+ </random>
+ <label id="stop-look-left"/>
+ <frame i="spriteimage.character.tech.mars.back.02" d="2" childXOffset="5" />
+ <frame i="spriteimage.character.tech.mars.back.01" d="40" childXOffset="0" />
+ <return/>
+ </animation>
+
+ <animation name="tech.mars.head.look-right.anim">
+ <label id="look-right"/>
+ <frame i="spriteimage.character.tech.mars.back.05" d="20" childXOffset="-13" />
+ <random>
+ <dest id="look-right" n="2"/>
+ <dest id="stop-look-right"/>
+ </random>
+ <label id="stop-look-right"/>
+ <frame i="spriteimage.character.tech.mars.back.04" d="2" childXOffset="-5" />
+ <frame i="spriteimage.character.tech.mars.back.01" d="40" childXOffset="0" />
+ <return/>
+ </animation>
+
+ <animation name="tech.mars.head.talk.anim">
+ <label id="start"/>
+ <frame i="spriteimage.character.tech.mars.back.01" d="20" childXOffset="0" />
+ <random>
+ <dest id="start"/>
+ <dest id="look-left"/>
+ <dest id="look-right"/>
+ </random>
+
+ <label id="look-left"/>
+ <sub id="tech.mars.head.look-left.anim"/>
+ <random>
+ <dest id="look-right"/>
+ <dest id="start"/>
+ </random>
+
+ <label id="look-right"/>
+ <sub id="tech.mars.head.look-right.anim"/>
+ <random>
+ <dest id="look-left"/>
+ <dest id="start"/>
+ </random>
+ </animation>
+
+ <animation name="tech.mars.head.idle.anim">
+ <label id="start"/>
+ <frame i="spriteimage.character.tech.mars.back.01" d="100" childXOffset="0" />
+ <random>
+ <dest id="start" n="6"/>
+ <dest id="look-left"/>
+ <dest id="look-right"/>
+ </random>
+
+ <label id="look-left"/>
+ <sub id="tech.mars.head.look-left.anim"/>
+ <random>
+ <dest id="look-right"/>
+ <dest id="start" n="3"/>
+ </random>
+
+ <label id="look-right"/>
+ <sub id="tech.mars.head.look-right.anim"/>
+ <random>
+ <dest id="look-left"/>
+ <dest id="start" n="3"/>
+ </random>
+ </animation>
+
+ <animation name="tech.mars.mouth.idle.anim">
+ <scale scale="0.5"/>
+ <frame i="spriteimage.character.tech.mars.top.01" d="1" />
+ </animation>
+ <animation name="tech.mars.mouth.vowel.anim">
+ <scale scale="0.5"/>
+ <random>
+ <dest seq="2"/>
+ <dest seq="3"/>
+ </random>
+ <frame i="spriteimage.character.tech.mars.top.02" d="200" />
+ <frame i="spriteimage.character.tech.mars.top.03" d="200" />
+ </animation>
+ <animation name="tech.mars.mouth.consonant.anim">
+ <scale scale="0.5"/>
+ <random>
+ <dest seq="2"/>
+ <dest seq="3"/>
+ </random>
+ <frame i="spriteimage.character.tech.mars.top.04" d="200" />
+ <frame i="spriteimage.character.tech.mars.top.05" d="200" />
+ </animation>
+
+
+ <character
+ name="mars.tech.char"
+ inherit="tech.char"
+ bubble="mars.human-speech.background"
+ color="mars.colormap:text"
+ boldColor="mars.colormap:text-bold"
+ >
+ <idleLayers>
+ <layers scale="0.5">
+ <!-- head first to use childOffset on mouth -->
+ <sprite layer="4" animation="tech.mars.head.idle.anim"/>
+ <sprite layer="1" image="spriteimage.character.ground.01"/>
+ <sprite layer="5" animation="tech.mars.body.idle.anim"/>
+ <sprite layer="0" image="spriteimage.story.spotlight.mars.01"/>
+ </layers>
+ </idleLayers>
+ <talkLayers>
+ <layers scale="0.5">
+ <sprite layer="4" animation="tech.mars.head.talk.anim"/>
+ <sprite layer="1" image="spriteimage.character.ground.01"/>
+ <sprite layer="5" animation="tech.mars.body.talk.anim"/>
+ <sprite layer="0" image="spriteimage.story.spotlight.mars.01"/>
+ </layers>
+ </talkLayers>
+
+ <defaultAppearance>
+ <animation>
+ <scale scale="0.5"/>
+ <frame i="spriteimage.character.tech.mars.top.01" d="1" />
+ </animation>
+ </defaultAppearance>
+ <vowelAppearance>
+ <animation>
+ <scale scale="0.5"/>
+ <random>
+ <dest seq="2"/>
+ <dest seq="3"/>
+ </random>
+ <frame i="spriteimage.character.tech.mars.top.02" d="200" />
+ <frame i="spriteimage.character.tech.mars.top.03" d="200" />
+ </animation>
+ </vowelAppearance>
+ <consonantAppearance>
+ <animation>
+ <scale scale="0.5"/>
+ <random>
+ <dest seq="2"/>
+ <dest seq="3"/>
+ </random>
+ <frame i="spriteimage.character.tech.mars.top.04" d="200" />
+ <frame i="spriteimage.character.tech.mars.top.05" d="200" />
+ </animation>
+ </consonantAppearance>
+ </character>
+
+ <character
+ name="mars.tech-left.char"
+ inherit="mars.tech.char"
+ bubble="mars.human-speech-right.background"
+ >
+ </character>
+
+ <character
+ name="mars.tech-gidrah.char"
+ inherit="mars.tech.char"
+ bubble="mars.human-speech-left.background"
+ >
+ </character>
+
+
+
+
+ <!-- GENERAL BUILDINGS ============================================================================================================================ -->
+
+
+ <character
+ name="mars.factory.char"
+ inherit="mars.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="mars.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.factory.ground.01"/>
+ <sprite layer="11" bottomColored="mars.colormap:info-floor" topColored="mars.colormap:info-building" image="spriteimage.info.factory.01"/>
+ <sprite layer="12" image="spriteimage.info.factory.glow.01"/>
+ <sprite layer="12" image="spriteimage.info.factory.top.01" colored="mars.colormap:info-alt" />
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="mars.capacitor.char"
+ inherit="mars.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="mars.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.capacitor.ground.01"/>
+ <sprite layer="11" bottomColored="mars.colormap:info-floor" topColored="mars.colormap:info-building" image="spriteimage.info.capacitor.01"/>
+ <sprite layer="12" image="spriteimage.info.capacitor.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="mars.reactor.char"
+ inherit="mars.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="mars.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.reactor.ground.01"/>
+ <sprite layer="11" bottomColored="mars.colormap:info-floor" topColored="mars.colormap:info-building" image="spriteimage.info.reactor.01"/>
+ <sprite layer="12" image="spriteimage.info.reactor.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="mars.shieldgenerator.char"
+ inherit="mars.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="mars.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.shield.ground.01"/>
+ <sprite layer="11" bottomColored="mars.colormap:info-floor" topColored="mars.colormap:info-building" image="spriteimage.info.shield.01"/>
+ <sprite layer="12" image="spriteimage.info.shield.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+
+ <character
+ name="mars.warehouse.char"
+ inherit="mars.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="mars.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.warehouse.ground.01"/>
+ <sprite layer="11" bottomColored="mars.colormap:info-floor" topColored="mars.colormap:info-building" image="spriteimage.info.warehouse.01"/>
+ <sprite layer="12" image="spriteimage.info.warehouse.glow.01"/>
+ <sprite layer="12" image="spriteimage.info.warehouse.top.01" colored="mars.colormap:info-alt" />
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="mars.barracks.char"
+ inherit="mars.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="mars.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.barracks.ground.01"/>
+ <sprite layer="11" bottomColored="mars.colormap:info-floor" topColored="mars.colormap:info-building" image="spriteimage.info.barracks.01"/>
+ <sprite layer="12" image="spriteimage.info.barracks.glow.01"/>
+ <sprite layer="12" image="spriteimage.info.barracks.top.01" colored="mars.colormap:info-alt" />
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="mars.collector.char"
+ inherit="mars.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="mars.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.collector.ground.01"/>
+ <sprite layer="11" bottomColored="mars.colormap:info-floor" topColored="mars.colormap:info-building" image="spriteimage.info.collector.01"/>
+ <sprite layer="12" image="spriteimage.info.collector.top.01" colored="mars.colormap:info-alt" />
+ <sprite layer="12" image="spriteimage.info.collector.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="mars.scanner.char"
+ inherit="mars.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="mars.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.scanner.ground.01"/>
+ <sprite layer="11" bottomColored="mars.colormap:info-floor" topColored="mars.colormap:info-building" image="spriteimage.info.scanner.01"/>
+ <sprite layer="12" image="spriteimage.info.scanner.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="mars.battery.char"
+ inherit="mars.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="mars.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.battery.ground.01"/>
+ <sprite layer="11" bottomColored="mars.colormap:info-floor" topColored="mars.colormap:info-building" image="spriteimage.info.battery.01"/>
+ <sprite layer="12" image="spriteimage.info.battery.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="mars.cooling.char"
+ inherit="mars.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="mars.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.cooling.ground.01"/>
+ <sprite layer="11" bottomColored="mars.colormap:info-floor" topColored="mars.colormap:info-building" image="spriteimage.info.cooling.01"/>
+ <sprite layer="12" image="spriteimage.info.cooling.glow.01"/>
+ <sprite layer="12" image="spriteimage.info.cooling.top.01" colored="mars.colormap:info-alt" />
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="mars.autoloader.char"
+ inherit="mars.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="mars.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.autoloader.ground.01"/>
+ <sprite layer="11" bottomColored="mars.colormap:info-floor" topColored="mars.colormap:info-building" image="spriteimage.info.autoloader.01"/>
+ <sprite layer="12" image="spriteimage.info.autoloader.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+
+ <character
+ name="mars.decoy.char"
+ inherit="mars.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="mars.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.decoy.ground.01"/>
+ <sprite layer="11" bottomColored="mars.colormap:info-floor" topColored="mars.colormap:info-building" image="spriteimage.info.decoy.01"/>
+ <sprite layer="12" image="spriteimage.info.decoy.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+
+ <character
+ name="mars.tangleweb.char"
+ inherit="mars.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="mars.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.tangleweb.ground.01"/>
+ <sprite layer="11" bottomColored="mars.colormap:info-floor" topColored="mars.colormap:info-building" image="spriteimage.info.tangleweb.01"/>
+ <sprite layer="12" image="spriteimage.info.tangleweb.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="mars.tankfactory.char"
+ inherit="mars.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="mars.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.tankfactory.ground.01"/>
+ <sprite layer="11" bottomColored="mars.colormap:info-floor" topColored="mars.colormap:info-building" image="spriteimage.info.tankfactory.01"/>
+ <sprite layer="12" image="spriteimage.info.tankfactory.glow.01"/>
+ <sprite layer="12" image="spriteimage.info.tankfactory.top.01" colored="mars.colormap:info-alt" />
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="mars.repairdrones.char"
+ inherit="mars.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="mars.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.repairdrones.ground.01"/>
+ <sprite layer="11" bottomColored="mars.colormap:info-floor" topColored="mars.colormap:info-building" image="spriteimage.info.repairdrones.01"/>
+ <sprite layer="12" image="spriteimage.info.repairdrones.glow.01"/>
+ <sprite layer="12" image="spriteimage.info.repairdrones.top.01" colored="mars.colormap:info-alt" />
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="mars.scarecrow.char"
+ inherit="mars.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="mars.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.scarecrow.ground.01"/>
+ <sprite layer="11" bottomColored="mars.colormap:info-floor" topColored="mars.colormap:info-building" image="spriteimage.info.scarecrow.01"/>
+ <sprite layer="12" image="spriteimage.info.scarecrow.glow.01"/>
+ <sprite layer="12" image="spriteimage.info.scarecrow.top.01" colored="mars.colormap:info-alt" />
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="mars.cloakingdevice.char"
+ inherit="mars.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="mars.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.cloakingdevice.ground.01"/>
+ <sprite layer="11" bottomColored="mars.colormap:info-floor" topColored="mars.colormap:info-building" image="spriteimage.info.cloakingdevice.01"/>
+ <sprite layer="12" image="spriteimage.info.cloakingdevice.glow.01"/>
+ <sprite layer="12" image="spriteimage.info.cloakingdevice.top.01" colored="mars.colormap:info-alt" />
+ </layers>
+ </idleLayers>
+ </character>
+
+
+
+ <!-- MINES ============================================================================================================================ -->
+
+ <character
+ name="mars.mine.char"
+ inherit="mars.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="mars.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.mine.ground.01"/>
+ <sprite layer="11" bottomColored="mars.colormap:info-floor" topColored="mars.colormap:info-building" image="spriteimage.info.mine.01"/>
+ <sprite layer="12" image="spriteimage.info.mine.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+
+ <character
+ name="mars.clustermines.char"
+ inherit="mars.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="mars.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.clustermine.ground.01"/>
+ <sprite layer="11" bottomColored="mars.colormap:info-floor" topColored="mars.colormap:info-building" image="spriteimage.info.clustermine.02"/>
+ <sprite layer="11" bottomColored="mars.colormap:info-floor" topColored="mars.colormap:info-building" image="spriteimage.info.clustermine.01"/>
+ <sprite layer="12" image="spriteimage.info.clustermine.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+
+ <character
+ name="mars.blastmine.char"
+ inherit="mars.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="mars.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.blastmine.ground.01"/>
+ <sprite layer="11" bottomColored="mars.colormap:info-floor" topColored="mars.colormap:info-building" image="spriteimage.info.blastmine.01"/>
+ <sprite layer="12" image="spriteimage.info.blastmine.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+
+
+ <!-- BARRICADES ============================================================================================================================ -->
+
+
+ <character
+ name="mars.concrete.char"
+ inherit="mars.research.char.spec"
+ >
+ <idleLayers><layers scale="0.8">
+ <sprite layer="2" animation="mars.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.barricade.concrete.ground.01"/>
+ <sprite layer="11" bottomColored="mars.colormap:info-floor" topColored="mars.colormap:info-building" image="spriteimage.info.barricade.concrete.01"/>
+ <sprite layer="12" image="spriteimage.info.barricade.concrete.top.01" colored="mars.colormap:info-alt" />
+ </layers></idleLayers>
+ </character>
+
+ <character
+ name="mars.steel.char"
+ inherit="mars.research.char.spec"
+ >
+ <idleLayers><layers scale="0.8">
+ <sprite layer="2" animation="mars.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.barricade.steel.ground.01"/>
+ <sprite layer="11" bottomColored="mars.colormap:info-floor" topColored="mars.colormap:info-building" image="spriteimage.info.barricade.steel.01"/>
+ <sprite layer="12" image="spriteimage.info.barricade.steel.top.01" colored="mars.colormap:info-alt" />
+ <sprite layer="12" image="spriteimage.info.barricade.steel.glow.01" colored="mars.colormap:info-metal" />
+ </layers></idleLayers>
+ </character>
+
+ <character
+ name="mars.titanium.char"
+ inherit="mars.research.char.spec"
+ >
+ <idleLayers><layers scale="0.8">
+ <sprite layer="2" animation="mars.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.barricade.titanium.ground.01"/>
+ <sprite layer="11" bottomColored="mars.colormap:info-floor" topColored="mars.colormap:info-building" image="spriteimage.info.barricade.titanium.01"/>
+ <sprite layer="12" image="spriteimage.info.barricade.titanium.glow.01"/>
+ <sprite layer="12" image="spriteimage.info.barricade.titanium.top.01" colored="mars.colormap:info-metal" />
+ </layers></idleLayers>
+ </character>
+
+ <character
+ name="mars.nanomesh.char"
+ inherit="mars.research.char.spec"
+ >
+ <idleLayers><layers scale="0.8">
+ <sprite layer="2" animation="mars.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.barricade.nanomesh.ground.01"/>
+ <sprite layer="11" bottomColored="mars.colormap:info-floor" topColored="mars.colormap:info-building" image="spriteimage.info.barricade.nanomesh.01"/>
+ <sprite layer="12" image="spriteimage.info.barricade.nanomesh.glow.01"/>
+ </layers></idleLayers>
+ </character>
+
+
+
+ <!-- TURRETS ============================================================================================================================ -->
+
+
+ <character
+ name="mars.blaster.char"
+ inherit="mars.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="mars.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.tower.blaster.ground.01"/>
+ <sprite layer="11" bottomColored="mars.colormap:info-floor" topColored="mars.colormap:info-building" image="spriteimage.info.tower.blaster.01"/>
+ <sprite layer="12" image="spriteimage.info.tower.blaster.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="mars.heavyblaster.char"
+ inherit="mars.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="mars.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.tower.heavyblaster.ground.01"/>
+ <sprite layer="11" bottomColored="mars.colormap:info-floor" topColored="mars.colormap:info-building" image="spriteimage.info.tower.heavyblaster.01"/>
+ <sprite layer="12" image="spriteimage.info.tower.heavyblaster.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+ <character
+ name="mars.blastcannon.char"
+ inherit="mars.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="mars.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.tower.blastcannon.ground.01"/>
+ <sprite layer="11" bottomColored="mars.colormap:info-floor" topColored="mars.colormap:info-building" image="spriteimage.info.tower.blastcannon.01"/>
+ <sprite layer="12" image="spriteimage.info.tower.blastcannon.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+
+ <character
+ name="mars.multiblaster.char"
+ inherit="mars.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="mars.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.tower.multiblaster.ground.01"/>
+ <sprite layer="11" bottomColored="mars.colormap:info-floor" topColored="mars.colormap:info-building" image="spriteimage.info.tower.multiblaster.01"/>
+ <sprite layer="12" image="spriteimage.info.tower.multiblaster.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+
+ <character
+ name="mars.shotgun.char"
+ inherit="mars.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="mars.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.tower.spreader.ground.01"/>
+ <sprite layer="11" bottomColored="mars.colormap:info-floor" topColored="mars.colormap:info-building" image="spriteimage.info.tower.spreader.01"/>
+ <sprite layer="12" image="spriteimage.info.tower.spreader.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+
+ <character
+ name="mars.assault.char"
+ inherit="mars.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="mars.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.tower.assault.ground.01"/>
+ <sprite layer="11" bottomColored="mars.colormap:info-floor" topColored="mars.colormap:info-building" image="spriteimage.info.tower.assault.01"/>
+ <sprite layer="12" image="spriteimage.info.tower.assault.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+
+ <character
+ name="mars.rocket.char"
+ inherit="mars.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="mars.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.tower.rockets.ground.01"/>
+ <sprite layer="11" bottomColored="mars.colormap:info-floor" topColored="mars.colormap:info-building" image="spriteimage.info.tower.rockets.01"/>
+ <sprite layer="12" image="spriteimage.info.tower.rockets.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+
+ <character
+ name="mars.laser.char"
+ inherit="mars.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="mars.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.tower.laser.ground.01"/>
+ <sprite layer="11" bottomColored="mars.colormap:info-floor" topColored="mars.colormap:info-building" image="spriteimage.info.tower.laser.01"/>
+ <sprite layer="12" image="spriteimage.info.tower.laser.glow.01"/>
+ </layers>
+ </idleLayers>
+ </character>
+
+
+ <character
+ name="mars.disruptor.char"
+ inherit="mars.research.char.spec"
+ >
+ <idleLayers>
+ <layers scale="0.8">
+ <sprite layer="2" animation="mars.info.background.anim"/>
+ <sprite layer="10" image="spriteimage.info.tower.disruptor.ground.01"/>
+ <sprite layer="11" bottomColored="mars.colormap:info-floor" topColored="mars.colormap:info-building" image="spriteimage.info.tower.disruptor.01"/>
+ <sprite layer="12" image="spriteimage.info.tower.disruptor.glow.01"/>
+ <sprite layer="12" image="spriteimage.info.tower.disruptor.top.01" colored="mars.colormap:info-alt" />
+ </layers>
+ </idleLayers>
+ </character>
+
+
+
+ <!-- TECH ============================================================================================================================ -->
+
+ <character name="mars.tech.physics.char" inherit="mars.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="mars.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.physics.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.physics.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.physics.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="mars.tech.biology.char" inherit="mars.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="mars.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.biology.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.biology.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.biology.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="mars.tech.chemistry.char" inherit="mars.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="mars.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.chemistry.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.chemistry.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.chemistry.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="mars.tech.efficiency.char" inherit="mars.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="mars.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.efficiency.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.efficiency.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.efficiency.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="mars.tech.psychology.char" inherit="mars.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="mars.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.psychology.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.psychology.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.psychology.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="mars.tech.nuclear.char" inherit="mars.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="mars.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.nuclear.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.nuclear.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.nuclear.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="mars.tech.explosives.char" inherit="mars.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="mars.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.explosives.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.explosives.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.explosives.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="mars.tech.textiles.char" inherit="mars.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="mars.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.textiles.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.textiles.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.textiles.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="mars.tech.automation.char" inherit="mars.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="mars.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.automation.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.automation.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.automation.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="mars.tech.barometrics.char" inherit="mars.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="mars.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.barometrics.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.barometrics.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.barometrics.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="mars.tech.optics.char" inherit="mars.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="mars.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.optics.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.optics.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.optics.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="mars.tech.ballistics.char" inherit="mars.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="mars.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.ballistics.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.ballistics.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.ballistics.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="mars.tech.robotics.char" inherit="mars.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="mars.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.robotics.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.robotics.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.robotics.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="mars.tech.forcefields.char" inherit="mars.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="mars.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.forcefields.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.forcefields.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.forcefields.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="mars.tech.anatomy.char" inherit="mars.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="mars.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.anatomy.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.anatomy.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.anatomy.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="mars.tech.extraction.char" inherit="mars.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="mars.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.extraction.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.extraction.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.extraction.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+
+ <!-- new techs -->
+
+ <character name="mars.tech.ionisation.char" inherit="mars.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="mars.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.ionisation.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.ionisation.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.ionisation.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="mars.tech.lithium.char" inherit="mars.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="mars.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.lithium.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.lithium.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.lithium.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="mars.tech.sodium.char" inherit="mars.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="mars.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.sodium.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.sodium.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.sodium.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="mars.tech.precision.char" inherit="mars.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="mars.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.precision.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="2" bottomColored="info-floor" topColored="tech-top" animation="info.tech.precision.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer="3" colored="tech" animation="info.tech.precision.glow.anim"/>
+ </layers></idleLayers>
+ </character>
+
+ <character name="mars.tech.advancedexplosives.char" inherit="mars.research.tech.char.spec">
+ <idleLayers><layers scale="0.5">
+ <sprite layer="2" offset="0,73" animation="mars.info.background.anim"/>
+ <sprite layer="9" sublayer="1" image="spriteimage.info.tech.box.ground.01"/>
+ <sprite layer="9" sublayer="2" bottomColored="info-floor" topColored="info-building" image="spriteimage.info.tech.box.01"/>
+ <sprite layer="9" sublayer="3" colored="info-metal" image="spriteimage.info.tech.box.glow.01"/>
+ <sprite layer="10" offset="-14,83" sublayer="1" animation="info.tech.advancedexplosives.ground.anim"/>
+ <sprite layer="10" offset="-14,83" sublayer