diff --git a/.circleci/config.yml b/.circleci/config.yml index f4e0b412..fc8bf9ab 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -3,6 +3,7 @@ version: 2.1 orbs: win: circleci/windows@4.1.1 # The Windows orb give you everything you need to start using the Windows executor. + macos: circleci/macos@2.5.1 # Define a job to be invoked later in a workflow. # See: https://circleci.com/docs/2.0/configuration-reference/#jobs @@ -10,7 +11,7 @@ jobs: build: macos: xcode: 14.1.0 # Specify the Xcode version to use - resource_class: macos.x86.medium.gen2 + resource_class: macos.m1.medium.gen1 environment: HOMEBREW_NO_AUTO_UPDATE: 1 NPROC: 4 @@ -22,26 +23,34 @@ jobs: - checkout: path: ~/MBHaxe + - macos/install-rosetta - run: name: Install brew dependencies command: | brew install cmake brew install pkg-config brew install libpthread-stubs - brew install neko brew install nasm - run: name: Install Haxe command: | set -eux - download_url="https://github.com/HaxeFoundation/haxe/releases/download/4.3.3/haxe-4.3.3-osx.tar.gz" + download_url="https://github.com/HaxeFoundation/haxe/releases/download/4.3.4/haxe-4.3.4-osx.tar.gz" echo "Downloading [$download_url]..." - mkdir /tmp/haxe - curl -fsSL --retry 3 --retry-delay 5 "$download_url" -o /tmp/haxe.tar.gz - tar xzvf /tmp/haxe.tar.gz -C /tmp/haxe --strip-components=1 - export PATH=/tmp/haxe/:"$PATH" - export HAXE_STD_PATH=/tmp/haxe/std + mkdir ~/haxe + curl -fsSL --retry 3 --retry-delay 5 "$download_url" -o ~/haxe.tar.gz + tar xzvf ~/haxe.tar.gz -C ~/haxe --strip-components=1 + download_url="https://github.com/HaxeFoundation/neko/releases/download/v2-4-0-rc/neko-2.4.0-rc-osx-universal.tar.gz" + echo "Downloading [$download_url]..." + mkdir ~/neko + curl -fsSL --retry 3 --retry-delay 5 "$download_url" -o ~/neko.tar.gz + tar xzvf ~/neko.tar.gz -C ~/neko --strip-components=1 + export PATH=~/haxe/:"$PATH" + export PATH=~/neko/:"$PATH" + export HAXE_STD_PATH=~/haxe/std + export DYLD_LIBRARY_PATH=~/neko + sudo chmod +x ~/neko/neko haxelib setup ~/haxelib haxelib list haxelib install hashlink @@ -52,9 +61,9 @@ jobs: command: | mkdir -p ~/deps cd ~/deps - curl https://www.zlib.net/zlib-1.3.tar.xz | tar xz - cd zlib-1.3 - if [ ! -f /usr/local/lib/libz.1.3.dylib ]; then + curl https://www.zlib.net/zlib-1.3.1.tar.xz | tar xz + cd zlib-1.3.1 + if [ ! -f /usr/local/lib/libz.1.3.1.dylib ]; then cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -DCMAKE_OSX_DEPLOYMENT_TARGET="10.15" -DCMAKE_MACOSX_RPATH=TRUE cmake --build build --config Release -j$NPROC sudo cmake --install build @@ -196,20 +205,30 @@ jobs: cd ~/deps git clone --depth=1 https://github.com/RandomityGuy/hashlink cd hashlink + cd ~/deps + git clone https://github.com/RandomityGuy/hxDatachannel + cd hashlink + mv ~/deps/hxDatachannel/cpp libs/datachannel + echo -e "\nadd_subdirectory(datachannel)" >> libs/CMakeLists.txt + curl -L https://raw.githubusercontent.com/RandomityGuy/hashlink/master/libs/ssl/CMakeLists.txt > libs/ssl/CMakeLists.txt # Fix OpenAL # curl -L https://github.com/nullobsi/hashlink/commit/a09491918cc4b83c2cb9fcded855fe967857385f.diff | git apply - cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -DCMAKE_OSX_DEPLOYMENT_TARGET="10.15" -DCMAKE_FIND_FRAMEWORK=LAST -DWITH_SQLITE=OFF -DBUILD_TESTING=OFF -DCMAKE_MACOSX_RPATH=TRUE + cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -DCMAKE_OSX_DEPLOYMENT_TARGET="10.15" -DCMAKE_FIND_FRAMEWORK=LAST -DWITH_SQLITE=OFF -DBUILD_TESTING=OFF -DCMAKE_MACOSX_RPATH=TRUE -DHASHLINK_INCLUDE_DIR="~/deps/hashlink/src" -DHASHLINK_LIBRARY_DIR="/usr/local/lib/" cmake --build build --config Release -j$NPROC sudo cmake --install build - run: name: Install haxe dependencies command: | - export PATH=/tmp/haxe/:"$PATH" - export HAXE_STD_PATH=/tmp/haxe/std + export PATH=~/haxe/:"$PATH" + export HAXE_STD_PATH=~/haxe/std + export PATH=~/neko/:"$PATH" + export DYLD_LIBRARY_PATH=~/neko haxelib git heaps https://github.com/RandomityGuy/heaps haxelib dev hlopenal ~/deps/hashlink/libs/openal haxelib dev hlsdl ~/deps/hashlink/libs/sdl + haxelib dev datachannel ~/deps/hxDatachannel + haxelib install colyseus-websocket - save_cache: key: mbhaxe-deps-v1 @@ -227,19 +246,22 @@ jobs: - /usr/local/lib/libvorbis.0.4.9.dylib - /usr/local/lib/libvorbisfile.3.3.8.dylib - /usr/local/lib/libvorbisenc.2.0.12.dylib - - /usr/local/lib/libz.1.3.dylib + - /usr/local/lib/libz.1.3.1.dylib + - /usr/local/lib/datachannel.hdll - run: name: Compile MBHaxe command: | - export PATH=/tmp/haxe/:"$PATH" - export HAXE_STD_PATH=/tmp/haxe/std + export PATH=~/haxe/:"$PATH" + export HAXE_STD_PATH=~/haxe/std + export PATH=~/neko/:"$PATH" + export DYLD_LIBRARY_PATH=~/neko cd ~/MBHaxe haxe compile-macos.hxml cd native cp ~/deps/hashlink/src/hlc_main.c . - clang -mmacosx-version-min=10.15 -arch x86_64 -arch arm64 -o marblegame -I . -L /usr/local/lib/ -std=c11 marblegame.c /usr/local/lib/{ui.hdll,openal.hdll,fmt.hdll,sdl.hdll,uv.hdll,ssl.hdll} -lsdl2 -lhl -luv + clang -mmacosx-version-min=10.15 -arch x86_64 -arch arm64 -o marblegame -I . -L /usr/local/lib/ -std=c11 marblegame.c /usr/local/lib/{ui.hdll,openal.hdll,fmt.hdll,sdl.hdll,uv.hdll,ssl.hdll,datachannel.hdll} -lsdl2 -lhl -luv - run: name: Package app bundle @@ -249,7 +271,7 @@ jobs: cd "macos-dist/MarbleBlast Platinum.app/Contents/MacOS" otool -L marblegame cd ../Frameworks - cp /usr/local/lib/{ui.hdll,openal.hdll,fmt.hdll,sdl.hdll,libSDL2-2.0.0.dylib,ssl.hdll,uv.hdll} . + cp /usr/local/lib/{ui.hdll,openal.hdll,fmt.hdll,sdl.hdll,libSDL2-2.0.0.dylib,ssl.hdll,uv.hdll,datachannel.hdll} . cp /usr/local/lib/libhl.1.13.0.dylib libhl.1.dylib cp /usr/local/lib/libogg.0.8.5.dylib libogg.0.dylib cp /usr/local/lib/libopenal.1.22.2.dylib libopenal.1.dylib @@ -258,7 +280,7 @@ jobs: cp /usr/local/lib/libvorbis.0.4.9.dylib libvorbis.0.4.9.dylib cp /usr/local/lib/libvorbisfile.3.3.8.dylib libvorbisfile.3.3.8.dylib cp /usr/local/lib/libvorbisenc.2.0.12.dylib libvorbisenc.2.0.12.dylib - cp /usr/local/lib/libz.1.3.dylib libz.1.dylib + cp /usr/local/lib/libz.1.3.1.dylib libz.1.dylib cp /usr/local/lib/libuv.1.dylib libuv.1.dylib # These libraries have dangling RPATHs install_name_tool -delete_rpath /usr/local/lib libturbojpeg.0.dylib @@ -277,14 +299,17 @@ jobs: - run: name: ZIP Bundle command: | - cd ~/MBHaxe + cd ~/MBHaxe/macos-dist + npm install -g create-dmg + create-dmg --dmg-title="Marble Blast Platinum" "MarbleBlast Platinum.app" || true rm -rf "macos-dist/MarbleBlast Platinum.app.in" - zip -r MBHaxe-Platinum-Mac.zip macos-dist/ + mv "marblegame vpipeline.git.tag.dmg" "MBHaxe-Platinum-Mac.dmg" + # zip -r MBHaxe-Ultra-Mac.zip macos-dist/ - run: name: Upload to Artifact Storage command: | - scp -o StrictHostKeyChecking=no -i $KEYPATH -P $PORT ~/MBHaxe/MBHaxe-Platinum-Mac.zip $REMOTEDIR/MBHaxe-Platinum-Mac.zip + scp -o StrictHostKeyChecking=no -i $KEYPATH -P $PORT ~/MBHaxe/macos-dist/MBHaxe-Platinum-Mac.dmg $REMOTEDIR/MBHaxe-Platinum-Mac.dmg # - store_artifacts: # path: ~/MBHaxe/MBHaxe-Platinum-Mac.zip @@ -320,10 +345,16 @@ jobs: nekopath=$(/bin/find /c/ProgramData/chocolatey/lib/neko -name neko.dll -printf '%h\n') set NEKOPATH=$nekopath export PATH=$nekopath:"$PATH" + + - run: + name: Install CMake + command: | + choco install --no-progress cmake -y + - run: name: Install Haxe command: | - download_url="https://github.com/HaxeFoundation/haxe/releases/download/4.3.3/haxe-4.3.3-win64.zip" + download_url="https://github.com/HaxeFoundation/haxe/releases/download/4.3.4/haxe-4.3.4-win64.zip" echo "Downloading [$download_url]..." mkdir /tmp/haxe curl -fsSL --retry 3 --retry-delay 5 "$download_url" -o /tmp/haxe.zip @@ -349,6 +380,18 @@ jobs: mv /tmp/include/openal include/openal MSBuild.exe hl.sln -m -nologo -p:Configuration=Release -p:Platform=x64 + - run: + name: Build datachannel + command: | + mkdir ~/deps + cd ~/deps + git clone https://github.com/RandomityGuy/hxDatachannel + cd hxDatachannel/cpp + "/c/Program Files/CMake/bin/cmake" -S. -Bbuild -DCMAKE_BUILD_TYPE=Release -DHASHLINK_LIBRARY_DIR="~/deps/hashlink/x64/Release" -DHASHLINK_INCLUDE_DIR="../../hashlink/src" + "/c/Program Files/CMake/bin/cmake" --build build --config Release -j4 + mv ~/deps/hxDatachannel/cpp/build/Release/datachannel.hdll ~/deps/hashlink/x64/Release + mv ~/deps/hxDatachannel/cpp/build/Release/datachannel.lib ~/deps/hashlink/x64/Release + - run: name: Install haxe dependencies command: | @@ -361,6 +404,8 @@ jobs: haxelib dev hlopenal ~/deps/hashlink/libs/openal haxelib dev hlsdl ~/deps/hashlink/libs/sdl haxelib dev hashlink ~/deps/hashlink/other/haxelib + haxelib dev datachannel ~/deps/hxDatachannel + haxelib install colyseus-websocket - run: name: Compile MBHaxe @@ -373,17 +418,8 @@ jobs: cd ~/project haxe compile-c.hxml cd native - sed -i -e 's/MaxSpeed/Disabled/g' marblegame.vcxproj - sed -i -e 's/true<\/FunctionLevelLinking>//g' marblegame.vcxproj - sed -i -e 's/true<\/IntrinsicFunctions>//g' marblegame.vcxproj - sed -i -e 's/true<\/EnableCOMDATFolding>//g' marblegame.vcxproj - sed -i -e 's/true<\/OptimizeReferences>//g' marblegame.vcxproj - sed -i -e 's/HL_MAKE;//g' marblegame.vcxproj - sed -i -e 's///g' marblegame.vcxproj - sed -i -e 's///g' marblegame.vcxproj - perl -0777 -i.marblegame.vcxproj -pe 's/[^.]*<\/ItemGroup>/<\/ItemGroup>/g' marblegame.vcxproj HASHLINKPATH=~/deps/hashlink - MSBuild.exe marblegame.sln -m -nologo -p:Configuration=Release -p:Platform=x64 -p:PlatformToolset=v142 -p:HASHLINK=$HASHLINKPATH + MSBuild.exe -m -nologo -p:Configuration=Release -p:Platform=x64 -p:PlatformToolset=v142 -p:HASHLINK=$HASHLINKPATH marblegame.sln - run: name: Package app bundle command: | @@ -399,6 +435,7 @@ jobs: cp ~/deps/hashlink/x64/Release/openal.hdll . cp ~/deps/hashlink/x64/Release/sdl.hdll . cp ~/deps/hashlink/x64/Release/ssl.hdll . + cp ~/deps/hashlink/x64/Release/datachannel.hdll . cp ~/deps/hashlink/x64/Release/uv.hdll . cp ~/deps/hashlink/include/sdl/lib/x64/SDL2.dll . cp ~/deps/hashlink/include/openal/bin/Win64/soft_oal.dll ./OpenAL32.dll diff --git a/compile-c.hxml b/compile-c.hxml index 7c11b118..cbb6f6e0 100644 --- a/compile-c.hxml +++ b/compile-c.hxml @@ -1,6 +1,8 @@ -cp src -lib heaps -lib hlsdl +-lib datachannel +-lib colyseus-websocket -D highDPI -D flow_border -D hlgen.makefile=vs2019 diff --git a/compile-js-rel.hxml b/compile-js-rel.hxml index 49a4cfa0..515446b3 100644 --- a/compile-js-rel.hxml +++ b/compile-js-rel.hxml @@ -2,6 +2,8 @@ -lib heaps -lib stb_ogg_sound -lib zip +-lib datachannel +-lib colyseus-websocket -lib uglifyjs --js marblegame.js -D windowSize=1280x720 diff --git a/compile-js.hxml b/compile-js.hxml index 44b429c3..111852b8 100644 --- a/compile-js.hxml +++ b/compile-js.hxml @@ -2,6 +2,8 @@ -lib heaps -lib stb_ogg_sound -lib zip +-lib datachannel +-lib colyseus-websocket --js marblegame.js -D windowSize=1280x720 -D js-es=6 diff --git a/compile-macos.hxml b/compile-macos.hxml index b93cf01d..060f446c 100644 --- a/compile-macos.hxml +++ b/compile-macos.hxml @@ -1,6 +1,8 @@ -cp src -lib heaps -lib hlsdl +-lib datachannel +-lib colyseus-websocket -D highDPI -D flow_border -hl native/marblegame.c diff --git a/compile.bat b/compile.bat index 38d20ae9..f772e6f2 100644 --- a/compile.bat +++ b/compile.bat @@ -1 +1 @@ -cl native\marblegame.c /Fe:marblegame.exe /Od -I "D:\C Projects\Haxe\hl-1.11.0-win\include" -I native "D:\repos\Hashlink\hashlink\x64\Release\libhl.lib" "D:\repos\Hashlink\hashlink\x64\Release\fmt.lib" "D:\repos\Hashlink\hashlink\x64\Release\ui.lib" "D:\repos\Hashlink\hashlink\x64\Release\openal.lib" "D:\repos\Hashlink\hashlink\x64\Release\sdl.lib" "D:\repos\Hashlink\hashlink\x64\Release\uv.lib" "D:\repos\Hashlink\hashlink\x64\Release\ssl.lib" \ No newline at end of file +cl native\marblegame.c /Fe:marblegame.exe /O2 -I "D:\C Projects\Haxe\hl-1.11.0-win\include" -I native "D:\repos\Hashlink\hashlink\x64\Release\libhl.lib" "D:\repos\Hashlink\hashlink\x64\Release\fmt.lib" "D:\repos\Hashlink\hashlink\x64\Release\ui.lib" "D:\repos\Hashlink\hashlink\x64\Release\openal.lib" "D:\repos\Hashlink\hashlink\x64\Release\sdl.lib" "D:\repos\Hashlink\hashlink\x64\Release\uv.lib" "D:\repos\Hashlink\hashlink\x64\Release\ssl.lib" "D:\repos\Hashlink\hashlink\x64\Release\datachannel-static.lib" "D:\repos\Hashlink\hashlink\x64\Release\MbedTLS.lib" "D:\repos\Hashlink\hashlink\x64\Release\datachannel.lib" \ No newline at end of file diff --git a/compile.hxml b/compile.hxml index 00e9d2cd..523d2a38 100644 --- a/compile.hxml +++ b/compile.hxml @@ -1,6 +1,8 @@ -cp src -lib heaps -lib hlsdl +-lib datachannel +-lib colyseus-websocket -hl marblegame.hl -D windowSize=1280x720 -D keep-inline-positions diff --git a/data/multiplayer/hunt/advanced/Architecture.jpg b/data/multiplayer/hunt/advanced/Architecture.jpg new file mode 100644 index 00000000..3865fe8d Binary files /dev/null and b/data/multiplayer/hunt/advanced/Architecture.jpg differ diff --git a/data/multiplayer/hunt/advanced/Architecture.mis b/data/multiplayer/hunt/advanced/Architecture.mis new file mode 100644 index 00000000..ff60e72a --- /dev/null +++ b/data/multiplayer/hunt/advanced/Architecture.mis @@ -0,0 +1,1941 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + score = "40"; + radiusFromGem = "15"; + alarmStartTime = "25"; + level = "6"; + gameMode = "Hunt"; + name = "Architecture"; + music = "Astrolabe.ogg"; + desc = "Collect the gems in an architect\'s master challenge."; + platinumScore = "80"; + maxGemsPerSpawn = "7"; + artist = "Phil"; + glassCenter = "glassCenter"; + GemGroups = "2"; + game = "Platinum"; + ultimateScore = "120"; + time = "300000"; + type = "Advanced"; + overviewHeight = "-5"; + score[0] = "35"; + score[1] = "60"; + platinumScore[0] = "80"; + platinumScore[1] = "110"; + ultimateScore[0] = "130"; + ultimateScore[1] = "175"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.638261 0.459006 -0.61801"; + color = "1.400000 1.200000 0.400000 1.000000"; + ambient = "0.300000 0.300000 0.400000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "wintry"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/advanced/Architecture.dif"; + showTerrainInside = "0"; + }; + new Trigger(stayhere) { + position = "-90 73 -11"; + rotation = "1 0 0 0"; + scale = "130 105 1000"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new SimGroup(GemGroups) { + + new SimGroup() { + + new Item() { + position = "-31 29 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 17 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 20 19.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 11 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 13 17.375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 23 17.375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30.875 20 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 27 17.375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 15 17.375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-44.4 52 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38.875 52 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41 55.625 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 39 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 26 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38 35 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 34 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40.125 31 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-46 29 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39 25.125 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-48 22 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41 11 16.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-43 15 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37 18 16.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35.125 21 16.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33.5 17 16.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35.125 7 16.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39 9 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37 11 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 40 16.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13.25 44 16.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 38.625 16.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 42 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 45 16.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 45 16.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 39 16.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 43 16.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 45 16.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 38 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 38 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 42 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 42 20"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 50 20"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 38 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 25 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 21 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 13 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 10 19.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 30 19.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 30 17.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 20 17.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 10 17.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 25 17.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 15 17.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13.5 -17 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23 -9 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23 -1 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 -3 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -1 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 -7 17.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 -9 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 -12 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 -3 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 -9 17.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 -7 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 -15 17.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -17 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 -19 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 -19 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 -13 17.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 -7 17.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 -15 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13.875 -11 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 -5 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 2 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 2 17.375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64 -7 18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41 -14 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 -10 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-44 -15 18.125"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-55 -13 19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53 -1 18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53 5 19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-77 -7 19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 16 30.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 24 30.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-34 28 20"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 20 37.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-42 45.6 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39 43 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 43 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 41 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 43 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30 39 16.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 45 16.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup() { + spawnCount = "2"; + + new Item() { + position = "-14.378 22.3031 3.84327"; + rotation = "1 0 0 25.2101"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -3 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-42 -10 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-43 47 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41 53 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28.8 42.9 3.5"; + rotation = "-1 0 0 33.2315"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27.178 23.9317 3.07658"; + rotation = "1 0 0 25.2101"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 47 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 -2.15 2.2"; + rotation = "1 0 0 45"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 13 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.25 39.25 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10.75 33.875 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.75 27.25 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.125 27.25 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.25 27.25 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.375 33.75 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8.625 33.75 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.375 39.25 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.75 39.25 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 7 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 -1 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 1 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 13 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 15 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 1 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9.78879 17.7978 3.8"; + rotation = "-0.498354 -0.859086 -0.116686 30.4913"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 13 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 11 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 9 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 3 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 1 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 3 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 9 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 -3 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 -3 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37 -5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 1 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 1 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 15 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.8079 5.01349 4.9518"; + rotation = "0 -1 0 30"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 7 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 11 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 11 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 13 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 15 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20.625 35.125 2.5"; + rotation = "1 0 0 31"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 30.4 3.22"; + rotation = "-1 0 0 32"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-36.125 34.625 2.75"; + rotation = "1 0 0 31"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 32 3.55"; + rotation = "0 1 0 31"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30 31 3"; + rotation = "0 -1 0 32"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 27 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35.25 27 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15.75 37.625 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31.2 29 2.55"; + rotation = "-1 0 0 30"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 13 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 1 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + }; + new SimGroup(SpawnPoints) { + + new Trigger() { + position = "-26 -7 5.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-40 34 5.75"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "1 -6 5.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "1 46 5.75"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-26 46 5.75"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-40 6 5.75"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "14 7 5.75"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-19 41 18.25"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-47 42 17.75"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-41 3 18.25"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "1 38 18.25"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-8 -10 18.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "16 -13 18.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-3.5 20 18.25"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "14 33 5.75"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-21 20 18.25"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + }; + new Marker(glassCenter) { + position = "-12 20 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "0"; + msToNext = "1000"; + smoothingType = "Linear"; + }; + new SimGroup(Hazards) { + + new StaticShape() { + position = "-36 26 17"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + new StaticShape() { + position = "-50 28 17"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + new StaticShape() { + position = "-50 32 17"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + new StaticShape() { + position = "-43 56 17"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + new StaticShape() { + position = "-39 56 17"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + new StaticShape() { + position = "-36 29.5 17"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + }; + new SimGroup(PowerUps) { + + new Item() { + position = "-20 28 15.734"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 12 15.734"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 5 5.734"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 5 3.734"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-36 20 4.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 20 4.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 42 4.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 -4 4.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40 25 4.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 -7 4.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 15 4.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.875 46 4.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 20 8.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 12 16.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 28 16.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 16 30.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 24 30.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 45 4.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 -3 4.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10.8 39.2 4.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 38 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 -9 4.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 1 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 20 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-36 2 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 45 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 29 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 50 20"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 3 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 -17 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-34 48 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 40 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Comforting Mystery.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/advanced/Concentric.jpg b/data/multiplayer/hunt/advanced/Concentric.jpg new file mode 100644 index 00000000..427d5f46 Binary files /dev/null and b/data/multiplayer/hunt/advanced/Concentric.jpg differ diff --git a/data/multiplayer/hunt/advanced/Concentric.mis b/data/multiplayer/hunt/advanced/Concentric.mis new file mode 100644 index 00000000..2a045518 --- /dev/null +++ b/data/multiplayer/hunt/advanced/Concentric.mis @@ -0,0 +1,1045 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + game = "Ultra"; + level = "5"; + gameMode = "Hunt"; + score0 = "20"; + ultimateScore0 = "90"; + radiusFromGem = "12"; + type = "Advanced"; + desc = "Speed will not be your friend."; + music = "Tim Trance.ogg"; + score1 = "40"; + artist = "Alex Swanson"; + ultimateScore1 = "140"; + platinumScore0 = "40"; + maxGemsPerSpawn = "4"; + name = "Concentric"; + time = "240000"; + overviewHeight = "15"; + platinumScore1 = "80"; + alarmStartTime = "20"; + glassCenter = "Glassy"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.573201 0.275357 -0.771764"; + color = "1.080000 1.030000 0.900000 1.000000"; + ambient = "0.400000 0.400000 0.500000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "Wintry"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/Concentric.dif"; + showTerrainInside = "0"; + }; + new SimGroup(GemSpawns) { + + new Item() { + position = "4 -4 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 0 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4 4 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 8 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 4 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 0 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7.87688 -0.169399 5.61831"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 28 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23 18 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.96353 0.00686961 5.65843"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.8684 15.5277 5.79839"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 26 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 17 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-0.242249 -11.2868 5.68906"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -7 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.000857383 -0.100655 3.76847"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 -4 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 26 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.64301 -0.114868 6.56186"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.29205 10.9923 6.91233"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-0.531822 -7.554 6.58057"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 -21 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 -23 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 -16 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 -10 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 -2 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30 2 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "37 3 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 6 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 12 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 0 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7.05817 6.71122 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 16 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 23 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29 23 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 34 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 33 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 28 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 17 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 18 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 2 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32 -10 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32 -20 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 -19 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 -28 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 -13 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 -16 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 -25 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 -34 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30 -23 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 -14 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20 -20 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 -6 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 -12 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 -21 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 -33 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 -25 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37 -4 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32 10 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 0 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 12 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 21 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(SpawnPoints) { + + new Trigger() { + position = "45 4.59283e-007 10"; + rotation = "0 0 -1 89.9544"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "42 18 10"; + rotation = "0 0 -1 112.3"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "32 32 10"; + rotation = "0 0 1 222.308"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "17 42 10"; + rotation = "0 0 1 205.692"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "1.59914e-006 45 10"; + rotation = "0 0 1 177.044"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-16 43 10"; + rotation = "0 0 1 158.136"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-32 32 10"; + rotation = "0 0 1 138.656"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-42 18 10.0134"; + rotation = "0 0 1 112.3"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-45 -1.40668e-006 10"; + rotation = "0 0 1 88.2355"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-42 -17 10"; + rotation = "0 0 1 63.5983"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-33 -31 10"; + rotation = "0 0 1 42.9718"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-19 -41 10"; + rotation = "0 0 1 25.2102"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "0 -45 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "17 -42 10"; + rotation = "0 0 -1 18.3347"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "32 -32 10"; + rotation = "0 0 -1 46.4096"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "42 -17 10"; + rotation = "0 0 -1 69.3279"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + }; + new Item() { + position = "3 25 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 -18 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 -33 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 -5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31 17 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "-12 -36 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "-26 14 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "32 -10 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "-5.07791 -1.6229 2.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45.9672 -9.26132 6.187"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26.4961 -38.7473 6.187"; + rotation = "0 0 1 40"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.78566 -46.0188 6.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39.1596 -25.9603 6.187"; + rotation = "0 0 -1 50"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46.0723 8.88958 6.187"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.4767 38.5065 6.187"; + rotation = "0 0 1 40"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8.84284 46.0705 6.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38.8338 26.1785 6.187"; + rotation = "0 0 -1 50"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.46378 -22.1295 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger(Bounds) { + position = "-50.5681 50.5681 -5"; + rotation = "1 0 0 0"; + scale = "101.136 101.136 100"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new TSStatic() { + position = "47.5685 -9 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/9x3.dts"; + }; + new TSStatic() { + position = "39.642 -26.9245 6"; + rotation = "0 0 1 225"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/9x3.dts"; + }; + new TSStatic() { + position = "46.9374 -9.6776 6"; + rotation = "0 0 1 202.5"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/9x3.dts"; + }; + new TSStatic() { + position = "26.3519 -40.0338 6"; + rotation = "0 0 -1 112.5"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/9x3.dts"; + }; + new TSStatic() { + position = "-9 -47.5705 6"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/9x3.dts"; + }; + new TSStatic() { + position = "-26.9036 -39.6593 6"; + rotation = "0 0 -1 45"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/9x3.dts"; + }; + new TSStatic() { + position = "-9.7197 -46.9214 6"; + rotation = "0 0 -1 67.5"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/9x3.dts"; + }; + new TSStatic() { + position = "-47.0635 -9 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/9x3.dts"; + }; + new TSStatic() { + position = "-40.0507 -26.2936 6"; + rotation = "0 0 -1 22.5"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/9x3.dts"; + }; + new TSStatic() { + position = "-39.6414 26.9187 6"; + rotation = "0 0 1 45"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/9x3.dts"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Comforting Mystery.ogg"; + description = "AudioMusic"; + preload = "0"; + }; + new TSStatic() { + position = "-26.2907 40.0528 6"; + rotation = "0 0 1 67.5"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/9x3.dts"; + }; + new TSStatic() { + position = "40.0495 26.3048 6"; + rotation = "0 0 1 157.5"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/9x3.dts"; + }; + new TSStatic() { + position = "26.9049 39.6604 6"; + rotation = "0 0 1 135"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/9x3.dts"; + }; + new TSStatic() { + position = "-9 47.068 6"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/9x3.dts"; + }; + new TSStatic() { + position = "-46.915 9.71866 6"; + rotation = "0 0 1 22.5"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/9x3.dts"; + }; + new TSStatic() { + position = "9.72227 46.9183 6"; + rotation = "0 0 1 112.5"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/9x3.dts"; + }; + new Marker(Glassy) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/advanced/EyeOfTheStorm_Hunt.jpg b/data/multiplayer/hunt/advanced/EyeOfTheStorm_Hunt.jpg new file mode 100644 index 00000000..00abd6d1 Binary files /dev/null and b/data/multiplayer/hunt/advanced/EyeOfTheStorm_Hunt.jpg differ diff --git a/data/multiplayer/hunt/advanced/EyeOfTheStorm_Hunt.mis b/data/multiplayer/hunt/advanced/EyeOfTheStorm_Hunt.mis new file mode 100644 index 00000000..8ca723d4 --- /dev/null +++ b/data/multiplayer/hunt/advanced/EyeOfTheStorm_Hunt.mis @@ -0,0 +1,706 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + desc = "Use the tornado to your advantage!"; + artist = "Alex Swanson"; + type = "Advanced"; + level = "7"; + name = "Eye of the Storm"; + music = "Beach Party.ogg"; + startHelpText = "Move back and forth to escape the tornado\'s pull!"; + time = "240000"; + Gamemode = "Hunt"; + game = "Gold"; + MaxGemsPerSpawn = "6"; + RadiusFromGem = "15"; + score[0] = "15"; + score[1] = "35"; + platinumScore[0] = "35"; + platinumScore[1] = "60"; + ultimateScore[0] = "85"; + ultimateScore[1] = "125"; + alarmStartTime = "20"; + overviewHeight = "15"; + glassCenter = "Glassy"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.638261 0.459006 -0.61801"; + color = "1.400000 1.200000 0.400000 1.000000"; + ambient = "0.300000 0.300000 0.400000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "Dusk"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbg/addon/eyeofthestorm.dif"; + showTerrainInside = "0"; + }; + new Trigger(Bounds) { + position = "-25 22 -5"; + rotation = "1 0 0 0"; + scale = "50 40 500"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new StaticShape() { + position = "0.06875 3.62188 0.4125"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "Tornado"; + }; + new SimGroup(OldVersion) { + + new Item() { + position = "0.43 -6.1 5.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7.2 -7.6 9.35"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4.9 7.45 1.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.9 -6.9 1.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10.29 11.25 8.47"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2.5 17.1 14.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-0.9 10.6 4.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 -10.8 11.85"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15.2 -5.2 13.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7.9 10.4 7.4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14.8 8.3 11.85"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.4 13.8 6.85"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.9 11.3 5.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7.2 7.5 2.76"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 2.3 3.19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 -1.66 5.49"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7.6 -5 5.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.73 -2.2 1.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.4 1 1.12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.25 6.34 0.43"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2.64 0.93 0.43"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.5 -2 2.65"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9.75 -2.26 5.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.8 -2.18 8.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.3 -7.4 10.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.2 4.7 4.84367"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.2 2.4 4.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7.24 -0.12 3.17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9.64 8.1 5.47"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.3 6.25 0.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.67 6.51 20.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2.88985 6.30134 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7.03 9.5 17.35"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(NewVersion) { + + new Item() { + position = "0.43 -6.1 5.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7.2 -7.6 9.35"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4.9 7.45 1.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.9 -6.9 1.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10.29 11.25 8.47"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.3 6.25 0.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-0.9 10.6 4.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7.24 -0.12 3.17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.2 2.4 4.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4.75 13.25 8.23988"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9.64 8.1 5.47"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.4 13.8 6.85"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.9 11.3 5.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7.2 7.5 2.76"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 3.55 3.10058"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 -1.66 5.49"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7.6 -5 5.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.73 -2.2 1.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.4 1 1.12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.25 6.34 0.43"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2.64 0.93 0.43"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.5 -2 2.65"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9.75 -2.26 5.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.8 -2.18 8.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.5 -6.25 10.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.2 4.7 4.12109"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(SpawnPoints) { + + new Trigger() { + position = "-2.5 4 2"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "1 0 2"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "3 3.1 2"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "0 7 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "3.4 6.7 2"; + rotation = "0 0 1 45"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "4 1 2"; + rotation = "0 0 1 125"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-2.5 6 2"; + rotation = "0 0 -1 45"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-3 0.5 2"; + rotation = "0 0 1 225"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + }; + new Marker(Glassy) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Pianoforte.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/advanced/Horizon.jpg b/data/multiplayer/hunt/advanced/Horizon.jpg new file mode 100644 index 00000000..ab5103f4 Binary files /dev/null and b/data/multiplayer/hunt/advanced/Horizon.jpg differ diff --git a/data/multiplayer/hunt/advanced/Horizon.mis b/data/multiplayer/hunt/advanced/Horizon.mis new file mode 100644 index 00000000..a8f83703 --- /dev/null +++ b/data/multiplayer/hunt/advanced/Horizon.mis @@ -0,0 +1,1469 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + game = "Ultra"; + level = "3"; + gameMode = "Hunt"; + score0 = "30"; + ultimateScore0 = "135"; + type = "Advanced"; + radiusFromGem = "25"; + desc = "Use the Super Speeds to your advantage, but beware not to fall in the gaps."; + music = "Tim Trance.ogg"; + score1 = "60"; + artist = "Alex Swanson"; + ultimateScore1 = "170"; + platinumScore0 = "85"; + maxGemsPerSpawn = "6"; + name = "Horizon"; + time = "300000"; + overviewHeight = "15"; + platinumScore1 = "110"; + alarmStartTime = "25"; + glassCenter = "Glassy"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.573201 0.275357 -0.771764"; + color = "1.080000 1.030000 0.900000 1.000000"; + ambient = "0.400000 0.400000 0.500000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "Dusk"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/Horizon.dif"; + showTerrainInside = "0"; + }; + new SimGroup(SpawnPoints) { + + new Trigger() { + position = "37.8523 -61.6372 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-1.17765 -60.5227 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-50.9583 -68.8081 8.65"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-49.4114 -15.572 4.4"; + rotation = "0 0 1 126.624"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "9.14701 31.6894 10.5"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "56.1202 15.8035 10"; + rotation = "0 0 -1 90.5273"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "32.5358 -17.6503 9"; + rotation = "0 0 -1 88.991"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "28.7283 -51.3758 3"; + rotation = "0 0 -1 90.5273"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-1.77853 -20.6139 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "10.7075 -1.40116 6"; + rotation = "0 0 1 215.042"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-3 9 3"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "33 3 5"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-3 -15 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-27 -11 7"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "27 27 7"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-3 -57 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-15 -39 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "15 -39 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + }; + new SimGroup(GemSpawns) { + + new Item() { + position = "-44.8686 -57 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33.2 -40.43 4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2.54 -38.3 4.87"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9.26 8.42 4.56"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20.64 1.8 4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15.1 14.9 4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21.35 -26.16 7.4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20.86 -68.89 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14.84 -3.63 7.08"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -3 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 9 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 9 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 3 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -27 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 -39 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -39 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 -39 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 -33 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -21 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -21 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 -33 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 -33 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 -27 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 -27 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 -27 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 -27 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 -15 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 -3 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39 -9 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 -15 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 -21 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51 -45 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39 -57 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 -57 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 -51 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 -75 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 -63 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 -57 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 -51 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-55 -51 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-55 -33 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39 -3 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 15 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37 25 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 33 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 27 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 15 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 51 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 33 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 21 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 45 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "51 27 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "51 45 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 45 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 33 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "57 9 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "51 -15 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 -15 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 -63 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 -57 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 -51 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 -51 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 -39 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 -15 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 -3 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 3 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 9 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "57 -3 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "63 29 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "63 15 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 -39 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 -21 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -69 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 -69 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 -45 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51 -63 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57 -63 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39 -69 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new Item() { + position = "3 -9 1.734"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 -69 1.734"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 -69 3.734"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 27 1.734"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "51 15 3.734"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51 -27 2.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 -39 2.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 -27 2.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -15 0.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 15 2.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 39 2.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 -27 4.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 -63 6.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39 15 2.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 -75 4.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 51 2.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 9 2.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "51 -3 2.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "63 21 6.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57 -47.2 2.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 -21 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "43.6004 -69.5168 3.16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 45 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39 -45 0.000505984"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 34 3.0005"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 -21 3.0005"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 15 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 -75 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger(Bounds) { + position = "-63 57 -4"; + rotation = "1 0 0 0"; + scale = "132 138 1000"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Item() { + position = "-21 -74.75 4.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7.5 -2.75 0.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "62.6 8.4 6.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14.9 44.8 2.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new TSStatic() { + position = "24 -72.5 0"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/Col/3x3.dts"; + }; + new TSStatic() { + position = "-24 -78.5 4"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/Col/18x3.dts"; + }; + new TSStatic() { + position = "-42 -12 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/6x3.dts"; + }; + new TSStatic() { + position = "-36 -72.5 2"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/Col/6x3.dts"; + }; + new TSStatic() { + position = "-60 -60 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/18x3.dts"; + }; + new TSStatic() { + position = "36 -72.5 4"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/Col/6x3.dts"; + }; + new TSStatic() { + position = "30 -72.5 2"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/Col/3x3.dts"; + }; + new TSStatic() { + position = "-60 -66.5 4"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/Col/3x3.dts"; + }; + new TSStatic() { + position = "-60.5 -24 2"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/Col/3x3.dts"; + }; + new TSStatic() { + position = "-54.5 -12 0"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/Col/6x3.dts"; + }; + new TSStatic() { + position = "-54 -24 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/6x3.dts"; + }; + new TSStatic() { + position = "60.5 5.5 6"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/Col/3x3.dts"; + }; + new TSStatic() { + position = "48.5 -30.5 2"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/Col/3x3.dts"; + }; + new TSStatic() { + position = "-12 36.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/Col/6x3.dts"; + }; + new TSStatic() { + position = "60.5 -6 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/6x3.dts"; + }; + new TSStatic() { + position = "0 48.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/Col/3x3.dts"; + }; + new TSStatic() { + position = "18.5 48.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/Col/3x3.dts"; + }; + new TSStatic() { + position = "54.5 36.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/6x3.dts"; + }; + new TSStatic() { + position = "48.5 -72 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/6x3.dts"; + }; + new TSStatic() { + position = "66.5 6 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/15x3.dts"; + }; + new TSStatic() { + position = "60.5 -18 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/6x3.dts"; + }; + new TSStatic() { + position = "54.5 -30 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/6x3.dts"; + }; + new TSStatic() { + position = "60 36 6"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/Col/3x3.dts"; + }; + new TSStatic() { + position = "48.5 -60 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/9x3.dts"; + }; + new TSStatic() { + position = "-42 12 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/Col/12x3.dts"; + }; + new TSStatic() { + position = "18 48 2"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/Col/18x3.dts"; + }; + new TSStatic() { + position = "-54 -72.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/3x3.dts"; + }; + new TSStatic() { + position = "-60 -66 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/3x3.dts"; + }; + new TSStatic() { + position = "-24 -78.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/3x3.dts"; + }; + new TSStatic() { + position = "12.5 -78.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/3x3.dts"; + }; + new TSStatic() { + position = "48.5 -42 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/6x3.dts"; + }; + new TSStatic() { + position = "54 36 4"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/Col/3x3.dts"; + }; + new TSStatic() { + position = "54.5 -18.5 4"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/Col/3x3.dts"; + }; + new TSStatic() { + position = "-54 -72.5 4"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/Col/9x3.dts"; + }; + new TSStatic() { + position = "-12 48 2"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/Col/6x3.dts"; + }; + new TSStatic() { + position = "-42 36 2"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/Col/6x3.dts"; + }; + new TSStatic() { + position = "-30 36 0"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/Col/9x3.dts"; + }; + new TSStatic() { + position = "0 54 2"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/Col/9x3.dts"; + }; + new TSStatic() { + position = "12 -72.5 4"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + shapeName = "~/data/shapes/Glass/Col/3x3.dts"; + }; + new Marker(Glassy) { + position = "-6 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Comforting Mystery.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/advanced/MaximoCenter.jpg b/data/multiplayer/hunt/advanced/MaximoCenter.jpg new file mode 100644 index 00000000..3c1c482a Binary files /dev/null and b/data/multiplayer/hunt/advanced/MaximoCenter.jpg differ diff --git a/data/multiplayer/hunt/advanced/MaximoCenter.mis b/data/multiplayer/hunt/advanced/MaximoCenter.mis new file mode 100644 index 00000000..b34cd413 --- /dev/null +++ b/data/multiplayer/hunt/advanced/MaximoCenter.mis @@ -0,0 +1,8902 @@ +// Ported to PlatinumQuest by Pablo, proper gemspawns by Matan +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + name = "Maximo Center"; + artist = "Popsip"; + music = "Tim Trance.ogg"; + desc = "Roll around the massive lands as you hunt for the many gems and discover secrets."; + gameMode = "Hunt"; + level = "14"; + type = "Intermediate"; + time = "300000"; + maxGemsPerSpawn = "8"; + radiusFromGem = "15"; + alarmStartTime = "25"; + game = "PlatinumQuest"; + overviewHeight = "15"; + score0 = "35"; + score1 = "70"; + platinumScore0 = "100"; + platinumScore1 = "150"; + ultimateScore0 = "180"; + ultimateScore1 = "275"; + spawnChanceYellow = "0.71"; + spawnChanceBlue = "0.4"; + spawnChancePlatinum = "0.25"; + RedSpawnChance = "0.9"; + yellowSpawnChance = "0.71"; + blueSpawnChance = "0.3"; + glassCenter = "Glassy"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.638261 0.459006 -0.61801"; + color = "1.400000 1.200000 0.400000 1.000000"; + ambient = "0.300000 0.300000 0.400000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "clear"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/PlatinumQuest/MaximoCenter.dif"; + showTerrainInside = "0"; + }; + new SimGroup(SpawnPointGroup) { + + new Trigger() { + position = "77 -61.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 2"; + center = "1"; + }; + new Trigger() { + position = "43 -32.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 2"; + center = "1"; + }; + new Trigger() { + position = "58 -11.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 2"; + center = "1"; + }; + new Trigger() { + position = "34 36.5 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 2"; + center = "1"; + }; + new Trigger() { + position = "53 29.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 2"; + center = "1"; + }; + new Trigger() { + position = "-68 50.5 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 2"; + center = "1"; + }; + new Trigger() { + position = "34 6.5 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 2"; + center = "1"; + }; + new Trigger() { + position = "2 6.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 2"; + center = "1"; + }; + new Trigger() { + position = "-16 -13.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 2"; + center = "1"; + }; + new Trigger() { + position = "-52 -5.5 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 2"; + center = "1"; + }; + new Trigger() { + position = "-58 10.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 2"; + center = "1"; + }; + new Trigger() { + position = "-52 34.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 2"; + center = "1"; + }; + new Trigger() { + position = "-4 48.5 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 2"; + center = "1"; + }; + new Trigger() { + position = "-1 25.5 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 2"; + center = "1"; + }; + new Trigger() { + position = "58 66.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 2"; + center = "1"; + }; + new Trigger() { + position = "82 48.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 2"; + center = "1"; + }; + new Trigger() { + position = "78 18.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 2"; + center = "1"; + }; + new Trigger() { + position = "80 -13.5 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 2"; + center = "1"; + }; + new Trigger() { + position = "82 -39.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 2"; + center = "1"; + }; + new Trigger() { + position = "60 -63.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 2"; + center = "1"; + }; + new Trigger() { + position = "31 -64.5 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 2"; + center = "1"; + }; + new Trigger() { + position = "2 -61.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 2"; + center = "1"; + }; + new Trigger() { + position = "-18 -59.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 2"; + center = "1"; + }; + new Trigger() { + position = "-37 -64.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 2"; + center = "1"; + }; + new Trigger() { + position = "-88 -65.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 2"; + center = "1"; + }; + new Trigger() { + position = "-61 -64.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 2"; + center = "1"; + }; + new Trigger() { + position = "-81 -26.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 2"; + center = "1"; + }; + new Trigger() { + position = "-100 -45.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 2"; + center = "1"; + }; + new Trigger() { + position = "-81 65.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 2"; + center = "1"; + }; + new Trigger() { + position = "-55 65.5 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 2"; + center = "1"; + }; + new Trigger() { + position = "-22 66.5 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 2"; + center = "1"; + }; + new Trigger() { + position = "8 62.5 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 2"; + center = "1"; + }; + new Trigger() { + position = "80 64.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 2"; + center = "1"; + }; + new Trigger() { + position = "36 66.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 2"; + center = "1"; + }; + new Trigger() { + position = "-99 47.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 2"; + center = "1"; + }; + new Trigger() { + position = "-98 12.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 2"; + center = "1"; + }; + }; + new SimGroup(ItemGroup) { + + new Item() { + position = "69 15.5 4.687"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-34 -34.5 2.687"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4 30.5 4.687"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-36 -11.5 4.70001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -15.5 4.70001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 10.5 4.70001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4 -5.5 4.687"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-50 16.5 4.70001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-62 -9.5 4.687"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "64 -11.5 6.70001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-79 35.5 2.70001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-88 10.5 4.687"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-80 0.5 4.70001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 31.5 4.70001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 -29.5 4.70001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64 -63.5 6.687"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 -60 4.687"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 -58.5 4.70001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39 38 4.687"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 -26.5 6.70001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "76 38.5 4.70001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-76 -23.5 6.687"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "84 -29.5 5.20001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "84 -47.5 5.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "52 -47.5 5.20001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "68 -67.5 5.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "52 54.5 6.70001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "70 58.5 4.687"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32 60.5 4.687"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "52 -5.5 4.70001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "70 -29.5 5.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "58 42.5 6.687"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-96 -7.5 9.20001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-86 -31.5 6.70001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64 -51.5 2.687"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-54 -47.5 2.70001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-56 -29.5 4.70001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64 30.5 4.687"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "69 -47.5 5.20001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20 8.5 8.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40 -59.5 6.70001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40 -53.5 6.70001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40 36.5 6.687"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "74 -13.5 9.20001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46 30.5 6.70001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64 66.5 6.70001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-78 58.5 4.687"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-94 -45.5 4.687"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-88 -57.5 4.70001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40 48.5 4.70001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 50.5 10.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 68.5 10.2686"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28 36.5 9.26864"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "64 30.5 6.26864"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "52 -67.5 4.76864"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34 -41.5 8.26864"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30 6.5 10.2686"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-46 53.5 10.2686"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64 6.5 10.2686"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 -25.5 10.687"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -41.5 4.70001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 30.5 4.70001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40 12.5 4.70001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34 42.5 10.4841"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 68.5 10.4842"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-88 42.5 2.48422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-70 -5.5 4.48422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-52 -11.5 4.48422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30 31.5 4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57 15.5 4.48422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 3.5 4.48422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20 -17.5 6.48422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "76 60.5 4.48422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34 24.5 10.5005"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30 29.5 4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-55 59.5 10.5005"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-68 30.5 2.5005"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 -27.5 4.5005"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 -57.5 4.5005"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "55 -26.5 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-52 -5.5 10.5005"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20 -11.5 10.5005"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(OldVersion) { + new SimGroup(GemGroup) { + + new Item() { + position = "-36 30.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40 30.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-42 30.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-44 28.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-44 22.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32 6.5 9.5"; + rotation = "-0.650791 0.759257 0 21.1833"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 14.5 8.5"; + rotation = "0.658505 -0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 12.5 10"; + rotation = "0.658505 -0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 12.5 9.5"; + rotation = "0.658505 -0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 -1.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 6.5 9.5"; + rotation = "-0.658505 -0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 4.5 8.5"; + rotation = "-0.658505 -0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 0.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 -3.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -7.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 -7.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-34 4.5 8.5"; + rotation = "-0.650791 0.759257 0 21.1833"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 3.5 9.5"; + rotation = "-0.650791 0.759257 0 21.1833"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 -7.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 9.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemPlatinum"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 3.5 9.5"; + rotation = "-0.658505 -0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 6.5 10"; + rotation = "-0.658505 -0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 4.5 10"; + rotation = "-0.650791 0.759257 0 19.3446"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 18.5 8.5"; + rotation = "0.658505 -0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19.0603 15.4473 9.52826"; + rotation = "0.658505 -0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 16.5 8"; + rotation = "0.658505 -0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32 18.5 8"; + rotation = "0.658505 0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 15.5 9.5"; + rotation = "0.658505 0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 16.5 9.5"; + rotation = "0.658505 0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-34 16.5 8"; + rotation = "0.658505 0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 14.5 10"; + rotation = "0.658505 0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32.0636 12.5557 9.48126"; + rotation = "0.658505 0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30 12.5 10"; + rotation = "0.658505 0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-34 14.5 8.5"; + rotation = "0.658505 0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30 18.5 8.5"; + rotation = "0.658505 0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32 0.5 8"; + rotation = "-0.650791 0.759257 0 21.1833"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 16.5 9.5"; + rotation = "0.658505 -0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 4.5 10"; + rotation = "-0.658505 -0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 18.5 8"; + rotation = "0.658505 -0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 2.5 8"; + rotation = "-0.658505 -0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 0.5 8.5"; + rotation = "-0.658505 -0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 0.5 8"; + rotation = "-0.658505 -0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 2.5 9.5"; + rotation = "-0.658505 -0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-50 26.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-34 30.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38 30.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-44 24.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-44 30.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32 30.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 2.5 9.5"; + rotation = "-0.650791 0.759257 0 19.3446"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 -7.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-34 2.5 8"; + rotation = "-0.650791 0.759257 0 21.1833"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30 0.5 8.5"; + rotation = "-0.650791 0.759257 0 19.3446"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 -5.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30 6.5 10"; + rotation = "-0.650791 0.759257 0 21.1833"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22.0301 14.4736 10.0141"; + rotation = "0.658505 -0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 -7.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-44 26.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "54 6.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "51.5 2.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(GemGroup2) { + nickname = "2"; + + new Item() { + position = "7 32.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 38.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 30.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 24.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 13.5 5.83275"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 40.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 36.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.5 30.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemPlatinum"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.5 22.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6.14573 18.5932 10.5882"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(GemGroup3) { + nickname = "3"; + + new Item() { + position = "16 -3.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20 0.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 2.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 0.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20 2.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 2.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 0.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 -1.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20 -1.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 -1.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 0.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(GemGroup4) { + nickname = "4"; + + new Item() { + position = "20 -41.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 -35.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 -29.5 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 -33.5 10.1667"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 -21.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 -18.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 -23.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 -23.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 -30.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(GemGroup5) { + nickname = "5"; + + new Item() { + position = "34 -67.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32 -67.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34 -61.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36 -61.5 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36 -59.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 -53.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30 -57.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32 -55.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30 -55.5 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30 -53.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36 -67.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(GemGroup6) { + nickname = "6"; + + new Item() { + position = "56 -59.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "74 -33.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "74 -43.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "80 -43.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "80 -33.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "78 -39.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "76 -37.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "78 -35.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "76 -41.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "76 -35.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "78 -37.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "76 -39.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "78 -41.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "78 -65.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "80 -63.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "82 -61.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "82 -57.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "80 -57.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "80 -61.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemPlatinum"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "80 -59.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "82 -59.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "82 -65.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "78 -57.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "56 -55.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "56 -53.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "56 -51.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "52 -53.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "54 -55.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "54 -51.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "66 -55.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "64 -53.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "66 -51.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "68 -53.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "54 -59.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "52 -61.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "54 -63.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "64 -51.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "64 -55.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "56 -63.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "56 -61.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "60 -57.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "66 -59.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "64 -59.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "66 -63.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "68 -61.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "64 -63.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "64 -61.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(GemGroup7) { + nickname = "7"; + + new Item() { + position = "52 -19.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "52 -21.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "54 -23.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "56 -23.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "56 -21.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "58 -21.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "58 -19.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "56 -17.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "54 -17.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "54 -19.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "54 -21.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "56 -19.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "56 -35.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "54 -35.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "54 -33.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "52 -33.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "52 -31.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "54 -29.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "54 -31.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "56 -33.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "56 -29.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "56 -31.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "58 -31.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "58 -33.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(GemGroup8) { + nickname = "8"; + + new Item() { + position = "78 -7.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "80 -9.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "80 -7.5 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "82 -7.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "84 -3.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "84 -11.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "84 -9.5 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "84 -5.5 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "84 -7.5 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "70 -7.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "72 -13.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "72 -11.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "72 -9.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "72 -7.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "72 -5.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "72 -3.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "70 -9.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(GemGroup9) { + nickname = "9"; + + new Item() { + position = "48 8.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46 8.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44 8.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44 4.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46 4.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48 4.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46 6.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44 6.5 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48 6.5 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34 16.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemPlatinum"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36 12.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42 -9.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -5.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32 0.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(GemGroup10) { + nickname = "10"; + + new Item() { + position = "80 36.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "80 38.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "80 40.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "82 42.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "84 42.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "80 34.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "82 30.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "84 32.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "84 30.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "84 28.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "84 26.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "82 26.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "82 24.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "82 22.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "84 24.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "82 38.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(GemGroup11) { + nickname = "11"; + + new Item() { + position = "44 32.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42 34.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44 34.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42 32.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46 32.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46 34.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44 36.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42 36.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40 34.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40 32.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44 30.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42 30.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(GemGroup12) { + nickname = "12"; + + new Item() { + position = "52 46.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "50 46.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "50 48.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "50 50.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "52 50.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "54 50.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "54 48.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "54 46.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "52 48.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "66 54.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "66 48.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "66 50.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "66 52.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "64 54.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "64 52.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "64 48.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "64 50.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "62 54.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "62 52.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "62 50.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "62 48.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48 60.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46 60.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44 58.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44 60.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46 62.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48 62.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44 62.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46 58.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48 58.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48 50.5 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46 50.5 12.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44 50.5 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48 46.5 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46 46.5 12.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44 46.5 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44 48.5 12.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46 48.5 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48 48.5 12.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(GemGroup13) { + nickname = "13"; + + new Item() { + position = "8 56.5 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemPlatinum"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 46.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 46.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 46.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 46.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 52.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 50.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 48.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 44.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 42.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 40.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20 46.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 46.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24 46.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(GemGroup14) { + nickname = "14"; + + new Item() { + position = "-8 60.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 60.5 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 60.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 62.5 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 64.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 64.5 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 64.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 62.5 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 62.5 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(GemGroup15) { + nickname = "15"; + + new Item() { + position = "-32 68.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-36 62.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37 65.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemPlatinum"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40 66.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(GemGroup16) { + nickname = "16"; + + new Item() { + position = "-96 62.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-96 64.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-96 66.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-94 66.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-94 64.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-94 62.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-94 60.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-96 60.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-98 62.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-98 64.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-98 66.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-102 70.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-98 60.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(GemGroup17) { + nickname = "17"; + + new Item() { + position = "-102 38.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-102 40.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-100 38.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-100 36.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-100 34.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-100 28.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-98 32.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-102 32.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-102 30.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-100 30.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-102 28.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-102 26.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-98 34.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-102 34.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-100 32.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-102 36.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(GemGroup18) { + nickname = "18"; + + new Item() { + position = "-94 -27.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-96 -27.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-96 -29.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-94 -29.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-92 -29.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-92 -31.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-94 -31.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-96 -31.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-92 -27.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-92 -11.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-92 -7.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-92 2.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-96 -5.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-92 -5.5 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-98 0.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-100 -9.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-100 -13.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-102 -3.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-102 -7.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-100 -5.5 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-102 -5.5 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-86 2.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-90 2.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-90 -1.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-90 -9.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-88 -7.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-90 -7.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-90 -3.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-88 -3.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-86 -5.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-88 -5.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-90 -5.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-94 -1.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(GemGroup19) { + nickname = "19"; + + new Item() { + position = "-67 30.5 12.9434"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-70 28.5 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-72 32.5 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-62 24.5 10.9993"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64 30.5 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64 42.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(GemGroup20) { + nickname = "20"; + + new Item() { + position = "-22 -35.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-46 -35.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40 -29.5 11.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 -29.5 11.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 -34.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 -37.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 -31.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 -23.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-36 -22.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 -27 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-46 -23.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37 -35 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-44 -29 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-50.5 -21 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-52 -11 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 -18.5 5.8348"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-58 -4.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64 -7.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-70 -3.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(GemGroup21) { + nickname = "21"; + + new Item() { + position = "-92 -49.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-92 -51.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-90 -51.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-90 -53.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-92 -53.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-100 -65.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-96 -61.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-96 -59.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-94 -61.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-90 -43.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-90 -41.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-88 -43.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-88 -41.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-86 -39.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-90 -39.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-88 -39.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-86 -43.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-96 -57.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-86 -41.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-90 -49.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-92 -61.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-94 -59.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(GemGroup22) { + nickname = "22"; + + new Item() { + position = "-70 -29.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64 -37.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-66 -33.5 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-62 -33.5 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64 -33.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-62 -35.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-62 -37.5 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-66 -37.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-66 -35.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64 -35.5 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-68 -39.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-70 -35.5 5.49854"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(GemGroup23) { + nickname = "23"; + + new Item() { + position = "-28 -65.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30 -67.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26 -67.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 -67.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 -63.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 -67.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 -67.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 -65.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 -67.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 -67.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 -65.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 -47.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 -45.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 -45.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 -49.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 -49.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 -49.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 -49.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 -47.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 -47.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 -47.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 -45.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 -45.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 -33.5 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 -37.5 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 -37.5 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 -35.5 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 -33.5 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 -33.5 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 -35.5 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 -35.5 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 -37.5 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(GemGroup24) { + nickname = "24"; + + new Item() { + position = "34 -17.5 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34 -19.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36 -19.5 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36 -17.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36 -15.5 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34 -15.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32 -15.5 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32 -17.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32 -19.5 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + }; + new SimGroup(NewVersion) { + + new SimGroup(GemGroup1) { + + new Item() { + position = "-36 30.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-40 30.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-44 26.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "54 6.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-44 22.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-32 6.5 9.5"; + rotation = "-0.650791 0.759257 0 21.1833"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-16 14.5 8.5"; + rotation = "0.658505 -0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-20 12.5 10"; + rotation = "0.658505 -0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-44 30.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-30 0.5 8.5"; + rotation = "-0.650791 0.759257 0 19.3446"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-18 6.5 9.5"; + rotation = "-0.658505 -0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-2 -5.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-2 0.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-2 -3.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-10 -7.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-6 -7.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-22 16.5 9.5"; + rotation = "0.658505 -0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-31 3.5 9.5"; + rotation = "-0.650791 0.759257 0 21.1833"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-16 2.5 8"; + rotation = "-0.658505 -0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-25 9.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-19 3.5 9.5"; + rotation = "-0.658505 -0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-18 18.5 8"; + rotation = "0.658505 -0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-28 4.5 10"; + rotation = "-0.650791 0.759257 0 19.3446"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-2 -7.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-19.0603 15.4473 9.52826"; + rotation = "0.658505 -0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-34 30.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-32 18.5 8"; + rotation = "0.658505 0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-31 15.5 9.5"; + rotation = "0.658505 0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-44 24.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-34 2.5 8"; + rotation = "-0.650791 0.759257 0 21.1833"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-28 16.5 9.5"; + rotation = "0.658505 0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "51.5 2.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-30 12.5 10"; + rotation = "0.658505 0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-34 14.5 8.5"; + rotation = "0.658505 0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-20 0.5 8.5"; + rotation = "-0.658505 -0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-22 4.5 10"; + rotation = "-0.658505 -0.752577 0 25.004"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + }; + new SimGroup(GemGroup2) { + nickname = "2"; + + new Item() { + position = "7 32.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "2 38.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-2 30.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "5 24.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "9 13.5 5.83275"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-8 40.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-4 36.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "1.5 30.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-4.5 22.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "6.14573 18.5932 10.5882"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + }; + new SimGroup(GemGroup3) { + nickname = "3"; + + new Item() { + position = "14 -7.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "20 0.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "18 2.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "16 6.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "22 -1.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "22 2.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "18 -1.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + }; + new SimGroup(GemGroup4) { + nickname = "4"; + + new Item() { + position = "20 -41.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "14 -35.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "12 -29.5 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "6 -33.5 10.1667"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "8 -21.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "19 -18.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "16 -23.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "18 -23.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "22 -30.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + }; + new SimGroup(GemGroup5) { + nickname = "5"; + + new Item() { + position = "34 -67.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "32 -67.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "34 -61.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "36 -61.5 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "36 -59.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "26 -53.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "30 -57.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "32 -55.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "30 -55.5 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "30 -53.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "36 -67.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + }; + new SimGroup(GemGroup6) { + nickname = "6"; + + new Item() { + position = "56 -59.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "74 -33.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "74 -43.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "80 -43.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "80 -33.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "78 -39.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "76 -37.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "78 -35.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "76 -41.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "76 -35.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "68 -61.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "60 -57.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "78 -41.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "78 -65.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "80 -63.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "82 -61.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "60 -65.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "80 -57.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "80 -61.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "56 -63.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "82 -59.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "82 -65.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "78 -57.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "56 -55.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "56 -53.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "66 -63.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "52 -53.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "64 -61.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "54 -51.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "60 -49.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "64 -53.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "66 -51.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "68 -53.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "54 -59.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "52 -61.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + }; + new SimGroup(GemGroup7) { + nickname = "7"; + + new Item() { + position = "52 -19.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "56 -31.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "54 -31.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "56 -23.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "52 -31.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "58 -21.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "58 -19.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "56 -33.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "54 -17.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "54 -19.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "54 -21.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "56 -19.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "58 -33.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "54 -35.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "56 -29.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "52 -33.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + }; + new SimGroup(GemGroup8) { + nickname = "8"; + + new Item() { + position = "78 -7.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "80 -9.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "76 -13.5 8.99967"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "82 -7.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "80 -3.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "84 -13.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "84 -9.5 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "70 -9.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "84 -7.5 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "70 -7.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "72 -3.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "72 -11.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "72 -9.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + }; + new SimGroup(GemGroup9) { + nickname = "9"; + + new Item() { + position = "35 -5.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "46 8.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "44 8.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "44 4.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "32 0.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "48 4.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "46 6.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "44 6.5 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "48 6.5 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "34 16.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "36 12.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "42 -9.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + }; + new SimGroup(GemGroup10) { + nickname = "10"; + + new Item() { + position = "80 36.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "82 38.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "80 40.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "84 24.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "84 42.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "80 34.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "82 30.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "84 32.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "84 30.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "82 22.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "84 26.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + }; + new SimGroup(GemGroup11) { + nickname = "11"; + + new Item() { + position = "42 30.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "44 34.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "44 30.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "42 32.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "40 34.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "46 34.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "44 36.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + }; + new SimGroup(GemGroup12) { + nickname = "12"; + + new Item() { + position = "52 46.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "48 46.5 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "50 48.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "44 50.5 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "52 50.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "46 48.5 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "54 48.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "44 46.5 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "52 48.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "66 54.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "66 48.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "44 58.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "66 52.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "64 54.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "44 62.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "64 48.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "48 62.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "48 50.5 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "62 52.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "62 50.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "62 48.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "48 58.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "46 60.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + }; + new SimGroup(GemGroup13) { + nickname = "13"; + + new Item() { + position = "8 56.5 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "24 46.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "12 46.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "22 46.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "16 46.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "18 52.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "18 40.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "18 48.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "20 46.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "18 42.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + }; + new SimGroup(GemGroup14) { + nickname = "14"; + + new Item() { + position = "-8 62.5 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-10 60.5 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-10 62.5 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-12 62.5 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-10 64.5 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + }; + new SimGroup(GemGroup15) { + nickname = "15"; + + new Item() { + position = "-32 68.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-36 62.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-37 65.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-40 66.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + }; + new SimGroup(GemGroup16) { + nickname = "16"; + + new Item() { + position = "-96 62.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-96 64.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-96 66.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-94 66.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-94 64.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-98 60.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-94 60.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-98 64.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-102 70.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + }; + new SimGroup(GemGroup17) { + nickname = "17"; + + new Item() { + position = "-98 36.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-102 40.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-100 38.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-89 36.5 3.49968"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-100 34.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-89 29.5 3.16633"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-98 32.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-102 32.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-87 33.5 3.16633"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-100 30.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-102 28.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-102 34.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + }; + new SimGroup(GemGroup18) { + nickname = "18"; + + new Item() { + position = "-90 -5.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-96 -27.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-94 -1.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-94 -29.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-92 -29.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-88 -3.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-94 -31.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-96 -31.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-92 -27.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-92 -11.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-92 -7.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-92 2.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-96 -5.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-92 -5.5 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-98 0.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-100 -9.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-100 -13.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-102 -3.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-88 -7.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-100 -5.5 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-102 -5.5 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-86 2.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-90 2.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-90 -1.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-90 -9.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + }; + new SimGroup(GemGroup19) { + nickname = "19"; + + new Item() { + position = "-67 30.5 12.9434"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-70 28.5 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-72 32.5 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-62 24.5 10.9993"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-64 30.5 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-64 42.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + }; + new SimGroup(GemGroup20) { + nickname = "20"; + + new Item() { + position = "-22 -35.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-46 -35.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-64 -7.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-28 -29.5 11.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-31 -34.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-70 -3.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-24 -31.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-28 -23.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-36 -22.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-33 -27 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-46 -23.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-37 -35 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-44 -29 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-50.5 -21 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-52 -11 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-47 -18.5 5.8348"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-58 -11.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-68 -5.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-72 -13.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-58 -4.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + }; + new SimGroup(GemGroup21) { + nickname = "21"; + + new Item() { + position = "-96 -57.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-92 -51.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-88 -39.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-90 -53.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-90 -49.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-100 -65.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-96 -61.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-92 -61.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-94 -59.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-90 -43.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-90 -41.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-88 -43.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-86 -41.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-86 -39.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + }; + new SimGroup(GemGroup22) { + nickname = "22"; + + new Item() { + position = "-70 -29.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-64 -37.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-66 -33.5 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-52 -29.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-58 -43.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-62 -33.5 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-70 -35.5 5.49854"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-64 -35.5 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-62 -37.5 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-68 -39.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-66 -35.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + }; + new SimGroup(GemGroup23) { + nickname = "23"; + + new Item() { + position = "-32 -65.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-24 -67.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-28 -65.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-4 -33.5 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-6 -33.5 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-28 -67.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-22 -63.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-20 -67.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-18 -67.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-16 -65.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-2 -37.5 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-4 -35.5 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-14 -65.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-6 -37.5 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-2 -35.5 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-24 -45.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-24 -49.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-22 -49.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-14 -45.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-14 -49.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-16 -45.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-20 -47.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-18 -47.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + }; + new SimGroup(GemGroup24) { + nickname = "24"; + + new Item() { + position = "34 -17.5 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "34 -19.5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "36 -19.5 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "32 -15.5 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "36 -15.5 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "32 -19.5 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + }; + }; + new Trigger(Bounds) { + position = "-110 80 -2.5"; + rotation = "1 0 0 0"; + scale = "204 159 1000"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Marker(Glassy) { + position = "-7 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Comforting Mystery.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/advanced/Megas.jpg b/data/multiplayer/hunt/advanced/Megas.jpg new file mode 100644 index 00000000..e9f763a3 Binary files /dev/null and b/data/multiplayer/hunt/advanced/Megas.jpg differ diff --git a/data/multiplayer/hunt/advanced/Megas.mis b/data/multiplayer/hunt/advanced/Megas.mis new file mode 100644 index 00000000..313aa0fb --- /dev/null +++ b/data/multiplayer/hunt/advanced/Megas.mis @@ -0,0 +1,2157 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + level = "11"; + maxGemsPerSpawn = "6"; + game = "Custom"; + time = "300000"; + type = "beginner"; + gameMode = "hunt"; + artist = "CyberFox"; + radiusFromGem = "20"; + desc = "CyberFox\'s multiplayer map"; + name = "Megas"; + }; + new SimGroup(SpawnPoints) { + + new Trigger() { + position = "-7.875 17 10.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "-23.5 -39.625 10.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "1.75 -26 11.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "35 -69.625 17.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "20 -10.875 12.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "32 19 10.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "9 32 12.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "32 32.125 12.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "78.25 37.5 12.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "99.75 16 12.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "78.25 -5.5 12.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "68.875 25.5 25.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "87.625 6.5 25.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "-38.25 19.25 10.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "-42.25 43.125 10.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "-76 29 12.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "-51 -12 10.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "-58.375 4 10.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "-54.25 -29.125 10.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "56.75 16 12.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "22.8 -84.225 17.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "19.8 -61.75 17.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + }; + new Item() { + position = "39.25 -58.75 17.48343"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "1500"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "1000"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-31 1.3684e-38"; + fogVolume2 = "-1 1.07208e-14 8.756e-14"; + fogVolume3 = "-1 5.1012e-10 2.05098e-08"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.573201 0.275357 -0.771764"; + color = "1.080000 1.030000 0.900000 1.000000"; + ambient = "0.400000 0.400000 0.500000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1000 1000 1000"; + dataBlock = "clear"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/Megas.dif"; + showTerrainInside = "0"; + }; + new Trigger(Bounds) { + position = "-105 80 -9"; + rotation = "1 0 0 0"; + scale = "225 180 300"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Item() { + position = "78.24999 3.5 14.73422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "78.25 28.5 14.73422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "-33.25 47.25 12.48343"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51.25 47 12.48343"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-81.24999 27 16.48343"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51.25 -25 14.48343"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-42.25 -2 18.98343"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22.75 39 14.98343"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "87.62499 25.625 24.98343"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10.25 -36 11.48343"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 -4 12.48343"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 22 10.937"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49 41 10.937"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-48 57 15.437"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-76 36 12.937"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-54.25 -5 11.437"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 13 10.937"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 48 16.937"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31 48 16.937"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.25 -39 12.937"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 -14 12.937"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "68.75 6.625 25.437"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-76.25 22.375 12.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-69 23 10.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-69 35 10.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45.25 47.25 12.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39.25 47.25 12.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-54.25 -9 11.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57.25 -27 11.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38.25 -2 18.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.25 -28.5 12.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16.25 -43.5 10.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -18 10.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 6 12.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "56.75 19 10.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "56.75 13 10.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "60.5 27.5 10.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "67 34 10.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "67 -1.75 10.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "60.5 4.625 10.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "81.25 -5.45 10.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "99.8 19 10.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "75.125 37.6 10.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13.375 -13 20.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7.25 -22.875 20.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "75.125 -5.45 10.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "99.8 13 10.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "81.25 37.6 10.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-60.25 29 10.7505"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37 57 15.2505"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38.25 2 18.2505"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-54.25 -19.125 10.7505"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24.125 -4 10.7505"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16.25 -33 10.7505"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 0 12.7505"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "78.24999 16 27.2505"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "78 25.5 25.23422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "78 6.625 25.23422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "90.75 16 14.73422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "65.75 16 14.73422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "32 13 10.73422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "-1.125 32 12.73422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "20.875 32 12.73422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "42.75 32 12.73422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "19.75 0 12.73422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "19.75 -40 15.23422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "48.75 -69.75 17.73422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "22.75 -76 17.73422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "1.75 -36 11.73422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "-17 -6 10.73422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "-35 41 10.73422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "-40.25 28 10.73422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "-71.25 17 17.23422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "-71.25 41 17.23422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "-58.875 -8 10.73422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "-46.375 -4.875 14.73422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new SimGroup(GemSpawns) { + + new Item() { + position = "-62 23 10.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64 17 17.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64 41 17.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 29 12.15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-81.24999 33 16.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-83.25 27 12.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-62 35 10.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51.5 59.5 15.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-42.5 59.5 15.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33.375 59.5 15.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53.25 52 12.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-48.25 52 12.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-42.25 52 12.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-36.25 52 12.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31.25 52 12.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41 30 9.299999"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39 27 9.299999"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41.375 29.375 10.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39.25 25.5 10.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38.25 29.875 12.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38.25 26 12.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-42.25 28 12.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40.25 28 12.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-54.25 -33 10.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-59.5 -29 10.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49 -25 10.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57.25 -23 11.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51.375 -17 10.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-58 -13 10.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-50.5 -7 10.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-54.25 -1 11.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-42.5 5.375 14.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38.25 -6 20.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-42.25 -4 16.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38.25 0 16.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38.25 7.5 16.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.25 49 17.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.75 47 17.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22.75 49 17.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18.75 47 17.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40.75 49 17.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44.75 47 17.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44.75 41 15.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40.75 39 15.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18.75 41 15.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24.75 40 14.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.75 41 15.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.25 39 15.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.75 35.98325 14.29891"; + rotation = "-1 0 0 34.99996"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.75 31 13.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25.25 35.98325 14.29891"; + rotation = "-1 0 0 34.99996"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18.75 31 13.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40.75 33 13.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "38.25 35.98325 14.29891"; + rotation = "-1 0 0 34.99996"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "47.25 35.98325 14.29891"; + rotation = "-1 0 0 34.99996"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44.75 25 11.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40.75 23 11.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18.75 25 11.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22.75 23 11.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.25 23 11.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.75 25 11.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "41.75 16 10.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21.625 16 10.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.75 16 10.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 17 10.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 3 12.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19.75 3 12.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15.75 -5 12.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.75 -3.125 12.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15.75 -14 12.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.75 -17 12.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 -26 12.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19.75 -26 12.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19.75 -54 17.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23 -61.75 17.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 -61.75 17.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32.25 -59.75 17.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.75 -68.25 17.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22.75 -80.25 19.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18.75 -84.24999 17.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.75 -84.24999 17.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18.875 -76 17.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.75 -76 17.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34.75 -78 17.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42 -72.5 17.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48.75 -76 17.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39.25 -62.75 17.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46.875 -58.75 17.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16.25 -39 10.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10.25 -30 11.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10.25 -42 11.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.25 -33 12.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.75 -42 11.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.75 -30 11.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.25 -36 14.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16.25 -36 12.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6.75 -13 25.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13.5 -22.625 25.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11.375 -19.5 25.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9.25 -16.5 26.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9.874999 -21.125 20.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10.25 -23 20.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9.25 -19 20.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11.875 -19.5 20.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11.875 -17.625 20.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10.25 -17.5 20.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10.5 -19.375 20.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 -15.875 20.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10.5 -14 20.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9.125 -15.875 20.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9.75 -22.5 22.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9.625 -16.125 22.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "74.25 20 26.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "82.25 20 26.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "74.25 12 26.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "82.25 12 26.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "74.75 16 27.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "81.75 16 27.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "78.24999 19.5 27.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "78.24999 12.5 27.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "86.5 7.75 25.425"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "70 24.25 25.425"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "86.5 24.25 25.425"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "70 7.75 25.425"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "76.5 17.75 20.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "80 14.25 20.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "80 17.75 19.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "76.5 14.25 19.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "90.75 20.125 14.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "90.75 12 14.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "65.75 12 14.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "65.75 20 14.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "74 28.5 14.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "82.875 28.5 14.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "74 3.5 14.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "82.875 3.5 14.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Comforting Mystery.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/advanced/ParPit_Hunt.jpg b/data/multiplayer/hunt/advanced/ParPit_Hunt.jpg new file mode 100644 index 00000000..46a0463d Binary files /dev/null and b/data/multiplayer/hunt/advanced/ParPit_Hunt.jpg differ diff --git a/data/multiplayer/hunt/advanced/ParPit_Hunt.mis b/data/multiplayer/hunt/advanced/ParPit_Hunt.mis new file mode 100644 index 00000000..8e62b669 --- /dev/null +++ b/data/multiplayer/hunt/advanced/ParPit_Hunt.mis @@ -0,0 +1,1518 @@ +///--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + radiusFromGem = "11"; + level = "4"; + gameMode = "Hunt"; + alarmStartTime = "20"; + name = "Par Pit"; + music = "Astrolabe.ogg"; + desc = "Use wall-hits to get gems more easily."; + maxGemsPerSpawn = "6"; + artist = "Ian and Phil"; + game = "Platinum"; + glassCenter = "interiorGuy"; + time = "240000"; + type = "Advanced"; + overviewHeight = "2"; + score[0] = "40"; + score[1] = "60"; + platinumScore[0] = "90"; + platinumScore[1] = "120"; + ultimateScore[0] = "140"; + ultimateScore[1] = "175"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.638261 0.459006 -0.61801"; + color = "1.400000 1.200000 0.400000 1.000000"; + ambient = "0.300000 0.300000 0.400000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "Wintry"; + }; + new SimGroup(OldVersion) { + new InteriorInstance(interiorguy) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/advanced/ParPit.dif"; + showTerrainInside = "0"; + }; + new Trigger(Bounds) { + position = "-36 60 -8"; + rotation = "1 0 0 0"; + scale = "68 68 100"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "0 2 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-4 2 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-18 10 6.5"; + rotation = "0 0 1 45"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-26 24 6.5"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-26 28 6.5"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-18 42 6.5"; + rotation = "0 0 1 135"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-4 50 6.5"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "0 50 6.5"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "14 42 6.5"; + rotation = "0 0 1 225"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "22 28 6.5"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "22 24 6.5"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "14 10 6.5"; + rotation = "0 0 -1 45"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Item() { + position = "18 26 0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 14 -2.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 38 -0.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 38 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 22 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 24 18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new StaticShape(mrTornado) { + position = "-2 25.95 -6.85"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "Tornado"; + }; + new Item() { + position = "-22 26 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 30 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 6 3.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 10 1.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 10 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 10 1.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 22 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 18 0.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 14 -2.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 14 -1.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 18 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 26 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 30 -2.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 34 -2.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 38 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 46 1.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 42 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 42 1.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 34 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 38 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 38 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 6 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 18 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 30 3.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 22 3.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 40 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 34 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 30 1.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 42 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 18 -1.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 22 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 34 -2.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 30 -2.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 42 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 2 4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 38 -2.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 34 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 42 -2.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 30 -1.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 50 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 22 -5.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 26 -5.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 30 -5.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 26 -5.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 10 1.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 10 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 26 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 34 3.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26 26 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 18 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 38 3.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 12 0.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 30 1.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 34 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(NewVersion) { + new InteriorInstance(interiorguy) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/advanced/ParPit.dif"; + showTerrainInside = "0"; + }; + new Trigger(Bounds) { + position = "-36 60 -8"; + rotation = "1 0 0 0"; + scale = "68 68 100"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "0 2 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + gravity = "0"; + }; + new Trigger() { + position = "-4 2 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + gravity = "0"; + }; + new Trigger() { + position = "-18 10 6.5"; + rotation = "0 0 1 45"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + gravity = "0"; + }; + new Trigger() { + position = "-26 24 6.5"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + gravity = "0"; + }; + new Trigger() { + position = "-26 28 6.5"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + gravity = "0"; + }; + new Trigger() { + position = "-18 42 6.5"; + rotation = "0 0 1 135"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + gravity = "0"; + }; + new Trigger() { + position = "-4 50 6.5"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + gravity = "0"; + }; + new Trigger() { + position = "0 50 6.5"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + gravity = "0"; + }; + new Trigger() { + position = "14 42 6.5"; + rotation = "0 0 1 225"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + gravity = "0"; + }; + new Trigger() { + position = "22 28 6.5"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + gravity = "0"; + }; + new Trigger() { + position = "22 24 6.5"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + gravity = "0"; + }; + new Trigger() { + position = "14 10 6.5"; + rotation = "0 0 -1 45"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + gravity = "0"; + }; + new Item() { + position = "18 26 0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 14 -2.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 38 -0.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 38 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 22 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + showHelpOnPickup = "0"; + }; + new Item() { + position = "-2 24 18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new StaticShape(mrTornado) { + position = "-2 25.95 -6.85"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "Tornado"; + }; + new Item() { + position = "-22 26 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 30 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 6 3.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 10 1.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 10 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 10 1.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 22 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 18 0.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 14 -2.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 14 -1.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 18 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 26 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 30 -2.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 34 -2.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 38 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 46 1.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 42 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 42 1.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 34 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 38 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 30 1.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 6 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 18 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 30 3.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 22 3.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 40 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 34 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 30 1.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 42 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 18 -1.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 22 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 34 -2.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 30 -2.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 42 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 2 4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 38 -2.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 34 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 46 3.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 30 -1.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 50 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 22 -5.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 26 -5.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 30 -5.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 26 -5.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 10 1.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 10 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 26 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 34 3.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26 26 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 18 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 38 3.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 10 0.0499998"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 30 1.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 26 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 34 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 6 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 14 0.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 22 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 30 -1.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 46 1.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 42 -2.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 18 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 30 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 26 0.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 14 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 14 0.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 22 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + } + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Comforting Mystery.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/advanced/Promontory.jpg b/data/multiplayer/hunt/advanced/Promontory.jpg new file mode 100644 index 00000000..3cac403e Binary files /dev/null and b/data/multiplayer/hunt/advanced/Promontory.jpg differ diff --git a/data/multiplayer/hunt/advanced/Promontory.mis b/data/multiplayer/hunt/advanced/Promontory.mis new file mode 100644 index 00000000..6dfc307a --- /dev/null +++ b/data/multiplayer/hunt/advanced/Promontory.mis @@ -0,0 +1,3033 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + level = "9"; + name = "Promontory"; + desc = "Roll on the large slopes as you seek for the gems and the king of the hill."; + music = "Tim Trance.ogg"; + artist = "Alex Swanson"; + game = "Ultra"; + gameMode = "Hunt"; + radiusFromGem = "20"; + time = "300000"; + maxGemsPerSpawn = "7"; + alarmStartTime = "25"; + type = "Advanced"; + overviewHeight = "0"; + score[0] = "20"; + score[1] = "60"; + platinumScore[0] = "60"; + platinumScore[1] = "120"; + ultimateScore[0] = "145"; + ultimateScore[1] = "180"; + glassCenter = "Glassy"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.573201 0.275357 -0.771764"; + color = "1.080000 1.030000 0.900000 1.000000"; + ambient = "0.400000 0.400000 0.500000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "Wintry"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/Promontory1a.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/Promontory1b.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/Promontory2.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-81.5 -8.5 13"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_8_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-82.5 -7.5 13"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_8_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-50.5 24.5 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_8_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-49.5 23.5 13"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_8_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-49.5 -7.5 13"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_8_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-2.5 -39.5 21"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_8_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "13.5 -55.5 21"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_8_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "30.5 -55.5 21"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_8_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-1.5 -40.5 21"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_8_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "45.5 -40.5 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_8_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "45.5 -23.5 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_8_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "30.5 -8.5 21"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_8_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "29.5 -7.5 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_8_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-9.5 -7.5 21"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_8_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-50.5 -8.5 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_8_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-81.5 -8.5 21"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-49.5 23.5 21"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-49.5 7.5 21"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-49.5 -7.5 21"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-49.5 8.5 21"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-65.5 -8.5 21"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-50.5 -8.5 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "30.5 -55.5 29"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "13.5 -40.5 29"; + rotation = "1 0 0 0"; + scale = "1 1 1.005"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-1.5 -40.5 29"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-9.5 -24.5 21"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "45.5 -40.5 29"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "46.5 -39.5 29"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "30.5 -23.5 29"; + rotation = "0 0 1 180"; + scale = "1 1 1.005"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "10.5 -7.5 29"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-9.5 -7.5 29"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-10.5 -8.5 29"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-18.5 39.5 9"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-2.5 40.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-1.5 24.5 9"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-17.5 23.5 9"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-2.5 23.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-1.5 39.5 9"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-17.5 40.5 9"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-2.5 -24.5 29"; + rotation = "0 0 -1 90"; + scale = "1 1 1.005"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-2.5 -39.5 29"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-10.5 -23.5 29"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "9.5 -7.5 29"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "29.5 -7.5 29"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "45.5 -23.5 29"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "46.5 -24.5 29"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "30.5 -40.5 29"; + rotation = "0 0 1 180"; + scale = "1 1 1.005"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "13.5 -55.5 29"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-66.5 -8.5 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-82.5 7.5 21"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-65.5 24.5 21"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-50.5 24.5 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-66.5 24.5 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-82.5 -7.5 21"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-82.5 8.5 21"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-18.5 24.5 9"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new Item() { + position = "70 -48 -15.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30.5 19.5 -4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36 -80 -2.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 -82 -2.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "50 44 -10.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "70 -48 -6.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-74 -16 -16.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new StaticShape() { + position = "-71.9106 -13.9786 -16.76"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SignUp"; + }; + new Item() { + position = "-30 -92 -15.925"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new SimGroup(GemSpawns) { + + new Item() { + position = "10 -15.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 -11 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -10.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 -13 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 -19 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 -19 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 -23 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6.5 -13 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8.5 -16 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 -22.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 -20 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57 -6 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49 3 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-44.5 6.5 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51 10.5 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-56 7.5 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-60 4 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64.5 -2.5 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-69 0.5 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-72.5 3.5 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-76 9.5 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-81 1 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-77 -3 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-81 -3 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14.5 29.5 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8.5 29 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.5 27.5 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 35.5 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 37 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 33.5 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 33 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 38 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "85 -14.5 -7.6875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "88.5 -10.5 -7.6875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "83 -20 -7.6875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "92 -20 -7.6875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "97 -24 -7.6875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "107 -21 -13.9375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "112.5 -19.5 -13.9375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "109 -13.5 -13.9375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "111.5 -9 -13.9375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "112 -13.5 -13.625"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "112 -16 -13.625"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "117 -103 -15.8125"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "115 -109 -15.8125"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "109 -106 -15.8125"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "105.5 -103 -15.8125"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "109 -99 -15.8125"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "111 -103 -15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "113 -106.5 -15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "109.5 -101 -15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "101 -111 -15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "99 -109 -15.8125"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "103 -113 -15.8125"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "97 -104.5 -15.8125"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "91 -103 -15.8125"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "93 -109 -15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "94.5 -105.5 -15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "97 -113 -15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "95 -111 -15.1875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 -126 -10.8125"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23 -123 -10.8125"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24.5 -121 -10.1875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 -119.5 -10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24.5 -117 -10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 -116 -10.8125"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24 -115 -10.8125"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27.5 -120.5 -10.8125"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 -127 -10.8125"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-70 -82.5 -11.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-61 -79 -11.4375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-72 -68.5 -11.9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-74 -87.5 -12.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 -96 -14.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -90.5 -16.3425"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 -101 -16.4006"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 -97.5 -17.2557"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 -93 -16.125"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14.5 -80.5 -18.3125"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21.5 -78.5 -17.375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16.5 -86 -17.375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -80.5 -17.375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25.5 -75.5 -17.375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-36 -74.5 -17.375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 -70.5 -17.375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37 -70 -17.375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-94 -11.5 -16.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-94 4 -16.695"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-102.5 -5.5 -19.3322"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-111 -8 -18.8112"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-104.5 -12.5 -18.4309"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-107.5 0.5 -18.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-104 9.5 -18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-87.5 17 -18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75 14.5 -18.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-77 21 -19.4473"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20.5 58 -18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 67 -18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 66 -18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 59.5 -18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.5 68.5 -18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 46.5 -18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 53.5 -18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "71.5 -41.5 -16.125"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "80 -44 -17.2559"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "80 -58.5 -17.375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "65.5 -57.5 -17.1267"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "60.5 -49.5 -17.175"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "70 -62.5 -16.8896"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "69.5 -73.5 -17.175"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-106.706 24.7125 -12.6651"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "80 -28 -17.375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "91 -27.5 -16.9721"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "70 -18 -18.3418"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "64.5 -24 -18.7627"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "69.5 -29 -18.625"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "58 -29.5 -18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "55 -36 -18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "85 -38.5 -18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "88.5 -44.5 -18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "73.5 -34 -18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "80 -63 -18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "80 -71.5 -18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14.5 51.5 -19.4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "38.5 52 -19.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 40.5 -20.1875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 44.5 -20.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34 45 -20.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-110.5 8 -18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-91 9.5 -17.1291"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-86 5 -16.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-79.5 -79.5 -12.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51 -84 -12.575"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57.5 -73.5 -12.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57.5 -66.5 -11.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47.5 -61 -9.5625"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47.5 -74.5 -12.15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-43 -81.5 -10.8125"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "90 -111 -15.8125"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "95 -28 -7.6875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "88 -15.5 -7.375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "91.5 -17 -7.375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "92.5 -12.5 -7.375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 34 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12.5 35 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 39 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 84 -15.1875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 87 -15.1875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16.5 90.5 -15.1875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 95 -15.1875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 101 -15.1875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 94 -15.1875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 91 -15.1875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 88.5 -14.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 93 -14.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 99 -14.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 102.5 -14.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 97 -14.5625"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75 13 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-67.5 9 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-66 18.5 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53.5 18 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-61 17 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-59 13 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64 6.5 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-66 2.5 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-61 11 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-48 5 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.5 -13 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 -10 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28.5 -15 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 -18 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30.5 -29 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 -25 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.5 -23 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.5 -25 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 -30 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10.5 -33 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -38.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 -35.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -38 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 -39 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 -33 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 -43 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 -50 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 -54.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -34.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44.5 -36 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40.5 -29.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "37 -25 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44 -27.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40 -37 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 -37.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 -40 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23 -33.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 -29 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24 -11.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28.5 -10 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-110.624 18.6526 -12.3456"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-107.672 14.456 -17.9868"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-105.038 28.5985 -12.4069"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-108.776 29.8682 -12.6718"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-112.671 29.1508 -12.6823"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + permanent = "0"; + }; + new Item() { + position = "-96.9184 33.1858 -12.6747"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-101.221 35.1878 -12.6786"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-100.703 26.6474 -12.6796"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-104.508 14.8748 -12.62"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-111.054 12.2047 -12.6283"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-113.305 21.1928 -12.6621"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new Item() { + position = "22 32 -19.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new StaticShape() { + position = "-70.0641 -20.2054 -8.02"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SignDown"; + }; + new Item() { + position = "-68.5 60.5 -15.313"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-90 -6 -15.313"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32 -78 -17.188"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "55 -51 -17.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 59.5 -17.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-101.5 -59 -15.313"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "37.5 -138 -15.938"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.5 -139 -15.938"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "82 28.5 -15.313"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.5 64 -10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-103.444 33.5379 -12.4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-50 -50.5 -6.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 -99.5 -6.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14.5 -16 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22.5 -160.5 -16.392"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "109 -19 -15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49.0788 -1.20625 -8.267"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-122 -32 -15.675"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-58.5 -80 -10.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-93 52 -15.767"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "38 80 -15.71"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22.5 -30 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 -21 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-54 -6 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-73 14.5 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 39 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "88 -18.5 -7.37"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "107.5 -101 -15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24 -127.5 -10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 84.5 -15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new SimGroup(SpawnPoints) { + + new Trigger() { + position = "-4.5 -63 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-13.5 -34 0.5"; + rotation = "0 0 -1 26.3561"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-39 0.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-8 16 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "33 31.5 -4.62391"; + rotation = "0 0 1 236.814"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "76.5 44.5 -13"; + rotation = "0 0 1 231.657"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "98.5 22 -13.0029"; + rotation = "0 0 1 205.301"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "94 -100 -13.1593"; + rotation = "0 0 -1 35.5234"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "106 -12 -13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "32.5 -142.5 -13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "11 -143.5 -13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-89 -81.5 -8.9375"; + rotation = "0 0 1 49.2744"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-124 -46 -8.9375"; + rotation = "0 0 1 48.1284"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-100 20.5 -8.96577"; + rotation = "0 0 1 153.735"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-62 76 -13.2126"; + rotation = "0 0 1 114.592"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-15.5 83.5 -13.625"; + rotation = "0 0 1 170.741"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + }; + new Item() { + position = "-77.0947 20.3986 -8.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.17395 -27.363 -2.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "108.93 -18.9437 -13.892"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-109.059 0.976627 -13.267"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.52251 103.558 -15.767"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new StaticShape() { + position = "25.953 36.2378 -8.04"; + rotation = "0 0 1 1.71869"; + scale = "1 1 1"; + dataBlock = "SignDown"; + }; + new StaticShape() { + position = "17.7198 28.0975 -8.04"; + rotation = "0 0 1 89.3814"; + scale = "1 1 1"; + dataBlock = "SignDown"; + }; + new StaticShape() { + position = "24.1485 29.9749 -19.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SignUp"; + }; + new StaticShape() { + position = "74.2684 -44.0546 -3.04"; + rotation = "0 0 -1 85.9437"; + scale = "1 1 1"; + dataBlock = "SignDown"; + }; + new StaticShape() { + position = "66.0435 -52.2773 -3.04"; + rotation = "0 0 1 180.482"; + scale = "1 1 1"; + dataBlock = "SignDown"; + }; + new StaticShape() { + position = "68.167 -46.0497 -15.543"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SignUp"; + }; + new StaticShape() { + position = "-78.2978 -12.0434 -8.04"; + rotation = "0 0 -1 89.9544"; + scale = "1 1 1"; + dataBlock = "SignDown"; + }; + new StaticShape() { + position = "-33.8048 -87.6554 -8.04"; + rotation = "0 0 -1 90.5273"; + scale = "1 1 1"; + dataBlock = "SignDown"; + }; + new StaticShape() { + position = "-27.0443 -89.0808 -16.17"; + rotation = "0 0 -1 92.2462"; + scale = "1 1 1"; + dataBlock = "SignUp"; + }; + new Item() { + position = "15.9432 -35.33 29.233"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-60.8525 2.69454 21.233"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6.61948 31.0663 9.233"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.51123 -17.1107 29.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40.4785 -29.598 29.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 32 -11.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Marker(Glassy) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + }; + new Trigger(Bounds) { + position = "-141 115 -25.8226"; + rotation = "1 0 0 0"; + scale = "270 286 1000"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Comforting Mystery.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/advanced/RampsReloaded_Hunt.jpg b/data/multiplayer/hunt/advanced/RampsReloaded_Hunt.jpg new file mode 100644 index 00000000..0a8f7cc9 Binary files /dev/null and b/data/multiplayer/hunt/advanced/RampsReloaded_Hunt.jpg differ diff --git a/data/multiplayer/hunt/advanced/RampsReloaded_Hunt.mis b/data/multiplayer/hunt/advanced/RampsReloaded_Hunt.mis new file mode 100644 index 00000000..be694fcb --- /dev/null +++ b/data/multiplayer/hunt/advanced/RampsReloaded_Hunt.mis @@ -0,0 +1,502 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + name = "Ramps Reloaded"; + type = "Advanced"; + level = "1"; + desc = "We need gems. Lots of gems."; + startHelpText = "Be careful when crossing between platforms."; + artist = "Alex Swanson"; + music = "Classic Vibe.ogg"; + Gamemode = "Hunt"; + game = "Gold"; + time = "270000"; + MaxGemsPerSpawn = "5"; + RadiusFromGem = "25"; + score[0] = "30"; + score[1] = "50"; + platinumScore[0] = "70"; + platinumScore[1] = "100"; + ultimateScore[0] = "105"; + ultimateScore[1] = "150"; + alarmStartTime = "20"; + overviewHeight = "10"; + glassCenter = "Glassy"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.638261 0.459006 -0.61801"; + color = "1.400000 1.200000 0.400000 1.000000"; + ambient = "0.300000 0.300000 0.400000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "Clear"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbg/addon/reloaded.dif"; + showTerrainInside = "0"; + }; + new Trigger(Bounds) { + position = "-31 27 -9.5"; + rotation = "1 0 0 0"; + scale = "70 54 34.5"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "-26 2 5"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-14 14 -3"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-26 -6 5"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-6 6 5"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "22 14 5"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "26 14 5"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "22 -22 3"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "22 -14 -3"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Item() { + position = "2 14 0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 -14 0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 -14 -3.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 14 -3.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 2 -1.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 -2 -1.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 -2 6.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 2 6.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 -22 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 22 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 -14 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 6 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 14 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 6 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 -14 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 -6 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 6 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 22 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 22 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 -2 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 -2 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 -6 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34 -2 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 -22 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 -22 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30 -14 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 14 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 -6 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 10 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30 -22 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34 6 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 14 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 -2 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 2 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 -14 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 22 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 14 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 -14 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Marker(Glassy) { + position = "4 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Comforting Mystery.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/advanced/Sacred.jpg b/data/multiplayer/hunt/advanced/Sacred.jpg new file mode 100644 index 00000000..dfec6abb Binary files /dev/null and b/data/multiplayer/hunt/advanced/Sacred.jpg differ diff --git a/data/multiplayer/hunt/advanced/Sacred.mis b/data/multiplayer/hunt/advanced/Sacred.mis new file mode 100644 index 00000000..6ed05dd2 --- /dev/null +++ b/data/multiplayer/hunt/advanced/Sacred.mis @@ -0,0 +1,6856 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + startHelpText = "Watch out for pitfalls when travelling long distances!"; + gameMode = "Hunt"; + level = "8"; + alarmStartTime = "25"; + name = "Sacred"; + desc = "An ancient landscape surrounding a unique formation..."; + maxGemsPerSpawn = "8"; + RadiusFromGem = "20"; + artist = "Phil"; + game = "Platinum"; + time = "300000"; + type = "Advanced"; + music = "Astrolabe.ogg"; + score[0] = "40"; + score[1] = "60"; + platinumScore[0] = "90"; + platinumScore[1] = "110"; + ultimateScore[0] = "145"; + ultimateScore[1] = "170"; + overviewHeight = "15"; + glassCenter = "Glassy"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.638261 0.459006 -0.61801"; + color = "1.400000 1.200000 0.400000 1.000000"; + ambient = "0.300000 0.300000 0.400000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "Clear"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/Advanced/Sacred.dif"; + showTerrainInside = "0"; + }; + new SimGroup(OldVersion) { + new Item() { + position = "-10 -11 0.375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -37 0.375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41 -83 -5.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 -23 -1.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 -1 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23 -1 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 19 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 17 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 13 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4 13 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -24 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42 -10 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 35 5.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-91 11 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51 25 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-67 27 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-81 -63 -0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-97 -137 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 -135 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "84 -56 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 -93 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -91 -5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-103 -33 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51 33 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-80 -34 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64 -20 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 43 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 19 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 -24 -0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 -24 -0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -18 -0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -30 -0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 -57 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -61 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 -63 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -61 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 41 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 37 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 41 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 -19 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 -32 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "47 -27 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 -61 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "86 -70 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "54 -68 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42 -87 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42 -68 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46 -96 0.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 -97 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 -91 -5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 -85 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 -97 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 -93 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 -100 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -101 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -107 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 -127 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 -121 -5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 -145 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-77 -135 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-90 -110 -5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-66 -110 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 -91 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-73 -91 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75 -69 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51 -41 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-94 -38 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-103 -25 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-90 -30 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64 -14 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49 -33 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 -45 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53 -13 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-89 19 -8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-101 9 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-74 14 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-73 37 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-65 31 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-69 29 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 27 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 -91 -5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29 -69 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "80 -58 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 41 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 30 1.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 30 2.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 30 2.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 39 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 41 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 41 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 43 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 43 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 34 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 -52 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-55 33 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41 5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41 1 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30 12 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 33 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 -32 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 -16 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 -15 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 -17 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 -33 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 -31 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 15 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 17 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 19 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32 12 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29 33 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 39 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 31 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 21 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 23 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29 21 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29 27 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 27 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "37.5 -9 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "37.5 -7 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -25 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -29 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31 -31 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -31 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 -35 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 -29 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 -25 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "47 -25 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "47 -29 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 -33 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "43 -23 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -19 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -21 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "41 -33 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "47 -33 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "47 -23 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 -31 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "43 -55 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "41 -55 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 -59 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "53 -51 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "54 -59 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "62 -67 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "70 -69 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "78 -67 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -31 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 27 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "71 -55 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "73 -55 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "77 -55 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "86 -68 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "85.5 -63 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "38 -72 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42 -72 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46 -76 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -69 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 -69 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 -71 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29 -65 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 -53 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 -53 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 -53 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 -55 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 -59 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 -63 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 -61 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -59 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -61 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 -63 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 -65 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 -65 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 -61 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -63 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 -61 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 -65 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 -59 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-43 -61 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 -61 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 -63 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-43 -63 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-43 -59 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 -65 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 -59 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-43 -65 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-66 -80 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-73 -80 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-67 -72 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39 -81 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 -86 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 -90 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32 -96 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 -86 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40 -88 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-42 -94 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 -92 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 -94 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26 -94 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 -96 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 -100 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -96 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -100 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 -95 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 -92 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 -89 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 -83 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 -83 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 -90 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 -85 -5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 -85 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 -87 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 -91 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 -93 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 -93 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 -87 -0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -97 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75 -65 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-77 -69 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-77 -67 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75 -71 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-81 -75 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-79 -57 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75 -57 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75 -61 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-63 -65 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-67 -67 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-67 -67 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 -71 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-63 -73 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-80 -38 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-80 -48 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-74 -48 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-74 -38 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-69 -41 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-69 -37 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-63 -41 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-63 -37 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-67 -37 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-63 -33 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-67 -41 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-67 -45 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 -33 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 -35 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 -37 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 -45 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51 -39 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 -27 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 -31 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -83 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -89 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -91 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -97 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 -95 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42 -76 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42 -80 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42 -92 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-68 -30 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-68 -28 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-66 -28 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-97 -25 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-97 -27 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-101 -37 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-99 -37 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-99 -41 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-94 -42 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-86 -38 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-86 -26 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-87 -21 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-91 -21 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-95 -21 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-80 -30 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75 -14.5 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64 -8 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49 -7 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-55 -5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53 -9 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-95 3 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-97 11 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-97 5 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-91 19 -8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-82 18 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75 6.5 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-66 6 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39 5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37 5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39 3 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37 3 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 3 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39 7 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41 5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38 5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35 5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57 33 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53 33 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49 33 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 33 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 31 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-55 27 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53 25 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-58 10 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-42 10 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-69 31 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-67 31 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-73 25 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75 27 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-66 36 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-66 34 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75 31 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-70 28 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-68 26 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-66 30 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 17 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 17.5 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27.5 18 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 1 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 1 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-67 29 -7.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-66 4 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 -1 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 -97 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 -111 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 -105 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -107 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -113 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 -115 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 -111 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -103 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 -105 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 -111 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -115.5 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 -111 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 -109 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40 -136 -5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40 -132 -5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-36 -136 -5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30 -136 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 -132 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-36 -122 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40 -122 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 -121 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 -126.5 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 -135 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-50 -131 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-48 -92 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53 -93 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-63 -93 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-65 -91 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-66 -118 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-72 -118 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-78 -120 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-78 -108 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-84 -100 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-70 -102 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-97 -131 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-97 -133 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-93 -137 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-89 -137 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-93 -131 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-90 -120 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-88 -100 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-84 -110 -5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26 -136 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 -136 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 -135 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 35 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-54 4 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 12 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-78 17 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-83 -34 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 -63 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -111 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46 -72 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31 -90 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -103 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-50 -121 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75 -91 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28 18 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42 -30 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -93 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -83 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 -24 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42 -8 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57 -83 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-66.05 -61 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -95 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-78 -114 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 -24 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger(Bounds) { + position = "-141 73 -10.15"; + rotation = "1 0 0 0"; + scale = "237 229 1000"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "26.5 9.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "-10.5 -61.5 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "26.5 -60.5 -4.84288e-008"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "32.5 -28.5 -4.84288e-008"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "41.5 -69.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "3.5 -91.5 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "-30.5 -91.5 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "-38.5 -123.5 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "-60.5 -113.5 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "-84.5 -89.5 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "-67.5 -64.5 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "-74.5 -33.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "-47.5 -40.5 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "-62.5 -27.5 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "-54.5 0.500001 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "-80.5 5.5 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "-8.5 4.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1"; + }; + new Item() { + position = "-66.15 -30.05 -5.01578"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-72 -47.8 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(NewVersion) { + new Item() { + position = "-10 -11 0.375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -37 0.375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41 -83 -5.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 -23 -1.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 -1 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23 -1 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 -137 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 17 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 13 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4 13 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -24 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "41 -9 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 35 5.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57 -83 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-52 25 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-67 27 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-81 -63 -0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-97 -137 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 -135 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "84 -56 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 -91 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -91 -5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-103 -33 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51 33 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-79 -29 -1.78814e-007"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64 -21 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 43 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 19 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 -24 -0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 -24 -0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -18 -0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -30 -0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 -57 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -61 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 -63 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -61 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 41 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 37 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 41 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 -16 6.55651e-007"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 -32 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-55 -137 -1.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 -61 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "86 -70 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "54 -68 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42 -87 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42 -68 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46 -96 0.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 -97 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 -94 -5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 -85 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 -97 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 -93 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 -100 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 -98 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -107 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 -127 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 -121 -5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 -145 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-77 -135 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-90 -110 -5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-66 -110 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 -91 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-82 -87 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-76 -69 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51 -41 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-94 -38 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-103 -25 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-90 -30 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64 -15 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "26.5 -60.5 -4.84288e-008"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + gravity = "0"; + }; + new Item() { + position = "-47 -45 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53 -13 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-90 18 -8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-101 9 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-74 14 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-73 37 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-65 31 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-50 -121 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42 -30 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 -94 -5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30 -72 -1.04308e-007"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "80 -58 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 -135 -1.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 30 1.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 30 2.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 30 1.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 39 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 41 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 41 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32 21.25 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 -135 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 34 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 -52 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-55 33 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41 5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41 1 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30 12 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 33 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 -32 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 -16 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-72 -47.8 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 -16 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "26.5 9.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + gravity = "0"; + }; + new Item() { + position = "-2 -32 -5.96046e-008"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 15 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 -136 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20 18 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 -137 -6.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29 33 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 39 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 31 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 21 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32 12 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-78 -126 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32 24 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-88 -100 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31 -5 0.0499997"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "37.5 -8 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -25 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-89 -137 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 -38 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 -29 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 -35 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46 -26 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-90 -130 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-90 -120 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 -13 2.88333"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 -33 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "43 -21 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31 -16 0.0500006"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -20 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "41 -33 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "47 -33 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "47 -23 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "38 -24 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-97 -132 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42 -55 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 -57 0.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "53 -51 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "54 -59 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "62 -67 0.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "70 -69 1.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "78 -67 1.9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -31 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 27 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "72 -56 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-70 -102 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-79 -98 -4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-78 -108 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "84 -63 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "38 -72 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -64 0.0500003"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46 -76 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -69 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 -67 -1.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 -71 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29 -65 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 -53 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30 -46 0.0500004"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31 -53 0.0500002"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 -55 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 -61 -3.8743e-007"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-54 -130 -4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 -60 -2.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -61 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-66.15 -30.05 -5.01578"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "-8.5 4.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + gravity = "0"; + }; + new Item() { + position = "3 -67 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 -65 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 -61 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "-80.5 5.5 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + gravity = "0"; + }; + new Item() { + position = "-21 -61 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 -65 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 -59 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-43 -63 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "-47.5 -40.5 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + gravity = "0"; + }; + new Item() { + position = "-47 -61 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "-74.5 -33.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + gravity = "0"; + }; + new Item() { + position = "-43 -59 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 -65 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "-62.5 -27.5 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + gravity = "0"; + }; + new Trigger() { + position = "-54.5 0.500001 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + gravity = "0"; + }; + new Item() { + position = "-66 -80 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-73 -80 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-67 -72 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35 -81 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 -86 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-62 -88 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32 -96 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 -86 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40 -88 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-42 -94 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-66 -94 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53 -93 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26 -90 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 -97 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 -100 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -96 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 -83 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 -95 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 -92 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 -89 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 -83 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 -88 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 -96 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 -85 -5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 -85 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-48 -92 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 -91 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 -93 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 -93 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 -87 -0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -97 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49 -111 -3.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "-38.5 -123.5 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + gravity = "0"; + }; + new Trigger() { + position = "-60.5 -113.5 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + gravity = "0"; + }; + new Trigger() { + position = "-30.5 -91.5 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + gravity = "0"; + }; + new Item() { + position = "-81 -75 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "-84.5 -89.5 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + gravity = "0"; + }; + new Item() { + position = "-77 -57 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-74 -61 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-63 -65 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "-67.5 -64.5 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + gravity = "0"; + }; + new Item() { + position = "-67 -67 -4.65"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 -71 -4.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-63 -73 -4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-80 -38 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-80 -48 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-74 -48 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75 -39 1.78814e-007"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-70 -43 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-70 -35 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-63 -41 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "41.5 -69.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + gravity = "0"; + }; + new Item() { + position = "-67 -37 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-63 -33 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "3.5 -91.5 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + gravity = "0"; + }; + new Item() { + position = "-67 -45 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49 -33 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "-10.5 -61.5 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + gravity = "0"; + }; + new Item() { + position = "-47 -37 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 -49 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51 -47 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 -27 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51 -29 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -83 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "38 -60 4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -90 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -97 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "38 -44 0.0500002"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42 -76 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "41 -57 4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32 -67 2.85"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-69 -29 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "32.5 -28.5 -4.84288e-008"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + gravity = "0"; + }; + new Item() { + position = "-65 -27 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 -24 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-97 -27 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-101 -37 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger(Bounds) { + position = "-141 73 -10.15"; + rotation = "1 0 0 0"; + scale = "237 229 1000"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Item() { + position = "-99 -41 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-94 -42 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-85 -41 1.78814e-007"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-86 -26 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-87 -21 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-78 -114 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-95 -21 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75 -23 -1.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75 -15 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64 -9 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49 -7 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-55 -5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -95 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-95 3 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-97 11 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-97 5 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-66.05 -61 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-82 18 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75 6.5 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-62 -133 -0.450006"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31 -90 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -103 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46 -72 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37 3 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 35 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -111 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41 5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 -63 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35 5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-59 32 3.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-78 17 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-54 4 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 12 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 31 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-55 27 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-83 -34 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-58 10 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-42 10 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28 18 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -93 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-73 25 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75 27 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 -83 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-66 35 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75 31 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-70 28 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-65 25 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 -24 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 17 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 17.5 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27.5 18 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 1 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 1 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75 -91 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-66 5 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 -1 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 -97 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 -103 -1.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 -97 -2.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 -107 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-66 -130 -4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 -115 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 -112 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-66 -118 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 -104 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 -111 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -115.5 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 -111 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 -109 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40 -136 -5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-36 -132 -5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38 -116 -4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26 -116 -2.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 -132 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-36 -122 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35 -105 -2.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 -121 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-56 -118 -4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 25 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 26 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new Marker(Glassy) { + position = "-26.4 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Comforting Mystery.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/advanced/Spires.jpg b/data/multiplayer/hunt/advanced/Spires.jpg new file mode 100644 index 00000000..b19f1a93 Binary files /dev/null and b/data/multiplayer/hunt/advanced/Spires.jpg differ diff --git a/data/multiplayer/hunt/advanced/Spires.mis b/data/multiplayer/hunt/advanced/Spires.mis new file mode 100644 index 00000000..c91900fe --- /dev/null +++ b/data/multiplayer/hunt/advanced/Spires.mis @@ -0,0 +1,2081 @@ +// THIS MIS IS THE ORIGINAL (from QuArK), NOT MBU/O FINAL. +// +// position = "33.4171 32.1268 9.60371"; +// position = "34.705 1.9607 12.0092"; +// position = "41.3318 1.92379 12.0112"; +// All had GemItem in addition to the GemItemRed. +// I think they are red, and based on LE positions they should be. +// +// Two gems were moved at some point (possibly for MBU/O): +// position = "42.0318 1.92379 12.0112"; +// position = "34.105 1.9607 12.0092"; +// became: +// position = "34.705 1.9607 12.0092"; +// position = "41.3318 1.92379 12.0112"; +// +// Difference between MBU/O to original QuArK (which is used here) +// is the addition of 5 more gems. +// They actually exist in MBU/O, but the way the game worked was +// Any gem not sitting in SimGroup(GemSpawn) would not be spawned +// And since these 5 were outside... well, they never spawned. +// +// The two moved gems from MBU/O were moved here as well. +// The difference is whether they are on the edge of the platform or not. +// I think it's better that they are moved but we'll see... +// +// +// Alternative to the slope Super Speed (last one in the .mis) +// position = "-0.096945 -1.56056 8.71"; +// rotation = "-1 0 0 45"; +// But faces in a way you can only collect it vertically +// This is horizontally, so easier for players. +// So add this to the list of changes. + +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + name = "Spires"; + type = "Advanced"; + level = "12"; + desc = "Master the hardest level of all."; + artist = "Alex Swanson"; + music = "Tim Trance.ogg"; + Gamemode = "Hunt"; + game = "Ultra"; + time = "360000"; + MaxGemsPerSpawn = "5"; + RadiusFromGem = "50"; + score[0] = "15"; + score[1] = "30"; + platinumScore[0] = "75"; + platinumScore[1] = "85"; + ultimateScore[0] = "125"; + ultimateScore[1] = "150"; + alarmStartTime = "30"; + overviewHeight = "15"; + glassCenter = "Glassy"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "5000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.573201 0.275357 -0.771764"; + color = "1.080000 1.030000 0.900000 1.000000"; + ambient = "0.400000 0.400000 0.500000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "5000 5000 5000"; + dataBlock = "Wintry"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/Spires.dif"; + showTerrainInside = "0"; + }; + new Item() { + position = "8 -32 -0.267"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 -4 -0.267"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29 25 -0.267"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 32 -0.267"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "65 -47 -0.267"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "57 5 -0.267"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "60 -21 -0.267"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 -6 3.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 -46 3.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "37 -20 3.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "53 27 3.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 40 3.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 8 3.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "77 -43 7.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26 48 7.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40 -8 7.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "86 26 11.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "52 -42 0.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "66 9 0.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 5 0.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 -25 0.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 38 0.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 31 0.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 4 4.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 -50 4.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35 -41 4.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "86 -28 8.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "76 -59 8.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38 -16 8.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26 26 8.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24 44 8.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 -8 4.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36 -57 4.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 18 0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 -14 0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 24 0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 7 0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "69 -29 0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "65 -5 0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 -7 4.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 -36 4.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "82 0 4.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "52 -58 8.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 -46 4.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "53 36 4.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 48 8.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 -16 0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "72 -32 24"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "92 -58 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "64 35 13.5"; + rotation = "-1 0 0 50"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 48 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35 -51 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "38 2 24"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -56 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-34 11 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "64 40 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "92 -14 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -25 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26 8 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new SimGroup(GemSpawns) { + + new Item() { + position = "0 20 24"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 2 24"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 -2 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 -5 19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "50 -5 19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "50 9 19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 9 19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 6 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "50 6 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "50 -2 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "50 2 24"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "38 2 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "38 11.2 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "38 14 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "38 -8 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 -9 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "50 -9 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "50 13 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 13 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "38 -12 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 20 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 20 19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 20 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 20 20"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 23.2 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 23.2 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 26 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 26 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 14 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 11 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 11 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 14 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17.8 32 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.9887 15.6606 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 20 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 22 16.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "60 36 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 32 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26 47 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23.2 49 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 52 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 54 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 53 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 44 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 48 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32 43 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36 32 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40 32 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "64 20 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "65 16 19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "72 16 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "73 26 24"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "81 28 24"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "82 22 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "70 30 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "89 30 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "90 22 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "89 13 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "82 10 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "74 -22 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "74 -28 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "68 -34 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "62 -34 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "66 -26 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "66 -22 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "62 -26 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "78 -34 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "78 -22 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "58 -34 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "62 -38 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "62 -42 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "74 -42 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "82 -34 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "82 -22 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "74 -38 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "58 -55 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "75 -54 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "91 -45 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "93 -39 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44 -62 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 -60 18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20 -52 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 -46 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 -48 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 -48 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26 -55 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40 -36 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35 -10 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40 -20 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40 -6 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 -30 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 -25 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 -35 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 -32 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 -32 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -36 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -40 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -45 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 -12 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9.5 -12 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 -12 20"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 -12 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4 -12 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 -12 20"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24 -24 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 -24 18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 -12 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 -12 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 0 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 0 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 0 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 -62 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 -30 26"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 -36 26"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 -39 25.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "62 -62 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "67 -54 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "65 30 19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "60 22 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "90.2771 -28.0474 16.9933"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-0.343405 1.76466 16.1971"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33.4171 32.1268 9.60371"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34.0685 51.6012 17.0709"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25.8395 11.0293 14.0263"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49.9176 10.948 13.8248"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49.8289 -6.94233 14.1988"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.0786 -7.02413 13.8598"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19.2568 -28.4707 16.0594"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19.5061 -38.8233 16.0403"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.3112 -33.9391 16.1153"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34.705 1.9607 12.0092"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "41.3318 1.92379 12.0112"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(SpawnPoints) { + + new Trigger() { + position = "7 0 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-5 0 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "10 37 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "38 -20 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "38 10 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "16 10 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-6 34 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-12 -23 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "49 -28 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "67 1 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "86 1 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "80 26 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "53 32 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-23 -41 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "11 -45 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-35 -32 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-33 -8 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-26 37 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-14 48 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "9 48 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "60 -58 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "80 -58 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "88 -47 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "30 36 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + }; + new Trigger(Bounds) { + position = "-47 61 -2.32207"; + rotation = "1 0 0 0"; + scale = "146.5 128 1000"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Item() { + position = "-0.102821 -1.55464 8.71425"; + rotation = "-0.363126 -0.362837 0.85819 98.6834"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "38.0301 2.23432 2.7"; + rotation = "1 0 0 30"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36.25 48.0502 7.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "96.1245 -45.9798 7.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Marker(Glassy) { + position = "26 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Comforting Mystery.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/advanced/Zenith.jpg b/data/multiplayer/hunt/advanced/Zenith.jpg new file mode 100644 index 00000000..21cbc683 Binary files /dev/null and b/data/multiplayer/hunt/advanced/Zenith.jpg differ diff --git a/data/multiplayer/hunt/advanced/Zenith.mis b/data/multiplayer/hunt/advanced/Zenith.mis new file mode 100644 index 00000000..e3b640e4 --- /dev/null +++ b/data/multiplayer/hunt/advanced/Zenith.mis @@ -0,0 +1,1997 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + name = "Zenith"; + type = "Advanced"; + level = "10"; + desc = "Watch your step as you collect the gems in this slippery arena."; + artist = "Alex Swanson"; + music = "Tim Trance.ogg"; + Gamemode = "Hunt"; + time = "300000"; + game = "Ultra"; + MaxGemsPerSpawn = "6"; + RadiusFromGem = "17.5"; + score[0] = "20"; + score[1] = "30"; + platinumScore[0] = "70"; + platinumScore[1] = "85"; + ultimateScore[0] = "135"; + ultimateScore[1] = "185"; + alarmStartTime = "25"; + overviewHeight = "15"; + glassCenter = "Glassy"; + }; + new Trigger(Bounds) { + position = "-92.5 39 -6.46107"; + rotation = "1 0 0 0"; + scale = "183 96 1000"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + sphereFront = "platinum/data/shapes/skies/wintry/front.png"; + sphereBack = "platinum/data/shapes/skies/wintry/back.png"; + }; + new Sun() { + direction = "0.573201 0.275357 -0.771764"; + color = "1.080000 1.030000 0.900000 1.000000"; + ambient = "0.400000 0.400000 0.500000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "Wintry"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/Zenith.dif"; + showTerrainInside = "0"; + }; + new SimGroup(GemSpawns) { + + new Item() { + position = "-25 -27 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22.5 5 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20 8 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25.5 2 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26 -22 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 -30 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 -30 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26 -18 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 -22 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 -22 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 -22 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 -30 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 -30 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 -30 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20 -30 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 -40 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 -34 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 -40 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32 -40 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32 -36 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-36 -32 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46 28 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 -8 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 -4 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 -2 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 8 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 2 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 30 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 30 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 -12 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 -12 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 14 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 20 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20 18 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20 12 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24 18 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 26 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 26 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 26 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34 28 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "72 20 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "74 24 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "78 22 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "82 24 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "86 20 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "78 10 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "72 6 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "78 4 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "54 8 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44 2 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "78 -2 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "76 -6 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "80 -10 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "76 -12 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "78 -16 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "72 -22 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "68 -26 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "66 -22 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "64 -26 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "60 -22 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "56 -26 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "62 -16 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40 -26 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40 -18 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40 -14 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30 -4 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-36 -48 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-74 -40 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-76 -44 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-80 -42 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-84 -44 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-88 -40 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-80 -30 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-74 -26 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-80 -24 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-56 -28 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-46 -22 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-80 -18 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-78 -14 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-82 -10 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-78 -8 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-80 -4 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-74 2 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-70.0974 3.82235 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-68 2 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-66 6 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-62 2 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-58 6 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64 -4 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-42 6 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-42 -2 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-42 -6 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32 -16 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39 -9 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 -9 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-69.5 -18 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49 -21.5 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-48.5 -31 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71.5 -24 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-65.5 -28 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 -21 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-65.5 -21 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-69.5 -29.5 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-66.5 -8 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-55.5 -9.5 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-44.5 -27.5 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-44 -50 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-50 -52 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-54 -50 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-58 -52 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-48 -48 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20 -14 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 -18 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 16 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 12 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 16 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 12 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 20 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 20.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10.5 18 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 13 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 10 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.5 -6.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 -17 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 -17.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 -26.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16.5 -25 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 -35 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.5 -46.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 -36 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 -7 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -9 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14.5 -5.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 13.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 1 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "37 -11 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 -11 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "67.5 -2 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "47 1.5 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46.5 11 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "69.5 4 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "63.5 8 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "69 1 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "63.5 1 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "67.5 9.5 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "64.5 -12 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "53.5 -10.5 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42.5 7.5 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42 30 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48 32 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "52 30 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "56 32 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(SpawnPoints) { + + new Trigger() { + position = "-10 -12 2"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "2 -30 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "14.5 -40 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "12.5 14 2"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-15.5 23.5 2"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-30 3.5 2"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-26.5 -40 2"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "30 18 2"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "52 0 2"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "45 -21.5 2"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-68 -4.5 2"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-66 -42 2"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-59 -22 -3"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-60 -8 -3"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-47.5 -2 -3"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "47.5 5.5 -3"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "58 -4 -3"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "45.5 -18.5 -3"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "47.5 8.5 -3"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "51.5 -14 -3"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-68 -24 -3"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-49.5 -26.5 -3"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-47 1 -3"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + }; + new Item() { + position = "-51.5 -13.5 -3.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-50.65 -38.5 -3.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37 -4 -3.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49 -5.5 -3.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49.75 5.45 -3.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "38.185 -0.6 -3.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20.5 -45.5 0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 33 0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 30 0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22.3 -46.65 0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.5 -5.5 -0.266"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40.5 20 0.234"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "71 -24 0.234"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "85 23 0.234"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-85.5 -42 0.234"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-62.5 5 0.234"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75.5 -20 -4.267"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "73.5 1 -4.267"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12.5 -17 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 10.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-59.5 -19 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "59.5 -1 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "56.5 -18.5 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49.5 16.5 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57 -1.5 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-56 -29 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45.5 -16 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "43 -4 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "79.5 -5 0.687"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "43.5 32 0.687"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-79 -11.5 0.687"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-50.5 -49 0.687"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35 -26.5 0.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28.5 13 0.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30 -17.5 0.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 7 0.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Marker(Glassy) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Comforting Mystery.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/advanced/lupus.mis b/data/multiplayer/hunt/advanced/lupus.mis new file mode 100644 index 00000000..945e0291 --- /dev/null +++ b/data/multiplayer/hunt/advanced/lupus.mis @@ -0,0 +1,1811 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + name = "Lupus"; + artist = "Moshe"; + music = "Tim Trance.ogg"; + desc = "Roll around the structure, collect the gems and figure out the best routes."; + gameMode = "Hunt"; + level = "13"; + type = "Intermediate"; + time = "240000"; + maxGemsPerSpawn = "6"; + radiusFromGem = "15"; + RedSpawnChance = "0.9"; + yellowSpawnChance = "0.8"; + blueSpawnChance = "0.25"; + alarmStartTime = "20"; + game = "PlatinumQuest"; + overviewHeight = "5"; + score[0] = "30"; + score[1] = "50"; + platinumScore[0] = "70"; + platinumScore[1] = "100"; + ultimateScore[0] = "125"; + ultimateScore[1] = "175"; + spawnChance["Blue"] = "0.4"; + spawnChance["Platinum"] = "0.23"; + glassCenter = "Glassy"; + }; + new Trigger() { + position = "-25 17.5 25"; + rotation = "1 0 0 0"; + scale = "50 50 1000"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.638261 0.459006 -0.61801"; + color = "1.400000 1.200000 0.400000 1.000000"; + ambient = "0.300000 0.300000 0.400000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "Dusk"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/PlatinumQuest/Lupus.dif"; + showTerrainInside = "0"; + }; + new SimGroup(SpawnPointGroup) { + + new Trigger() { + position = "5.85 -5.35 37.875"; + rotation = "0 0 1 226.501"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "15.875 -0.275 29.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "-11.7 -7.9 47.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "-8 -9.5 33.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "-14.125 6.625 33.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "-2 -17.375 30.375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "5.875 6.675 37.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "15 -16 29.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + }; + new SimGroup(MustChange_g) { + + new Path() { + + new Marker() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "0"; + msToNext = "2500"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "0 0 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "1"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "0 0 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "2"; + msToNext = "2500"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "3"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "4"; + msToNext = "0"; + smoothingType = "Accelerate"; + }; + }; + new PathedInterior(MustChange) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "PathedDefault"; + interiorResource = $usermods @ "/data/multiplayer/interiors/PlatinumQuest/Lupus.dif"; + interiorIndex = "0"; + basePosition = "0 0 0"; + baseRotation = "1 0 0 0"; + baseScale = "1 1 1"; + initialTargetPosition = "-1"; + }; + }; + new SimGroup(ItemGroup) { + + new Item() { + position = "11.8806 -8.37462 32.075"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16.8027 1.65043 32.062"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11.6136 -17.8249 48.6436"; + rotation = "0 0 1 45"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14.95 7.45 46.8755"; + rotation = "0 0 1 45"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(OldVersion) { + new Item() { + position = "13.875 -21.375 28.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemPlatinum"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.8 5.55 31.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7.2 -0.35 35.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemPlatinum"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.63809 4.25 46.1283"; + rotation = "0 -1 0 14"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4.35133 -5.875 47.2"; + rotation = "0 1 0 14"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6.3 -7.875 47.1"; + rotation = "0 1 0 14"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.6 4.125 45.1188"; + rotation = "0 -1 0 14"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.6102 2.225 45.6213"; + rotation = "0 -1 0 14"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.6 -13.9 46.1188"; + rotation = "0 -1 0 14"; + scale = "1 1 1"; + dataBlock = "GemItemPlatinum"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.25 -7.9 45.7188"; + rotation = "0 1 0 14"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.375 -10.125 46.125"; + rotation = "0 1 0 14"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.7 -6.15 46.1437"; + rotation = "0 -1 0 14"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11.4812 -9.72292 46.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13.3562 -7.59792 46.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11.875 -1.95 37.45"; + rotation = "1 0 0 45"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11.875 -1.75 46.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9.875 -4.275 38.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6.625 4.125 36.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11.875 2.625 28.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15.875 0.625 28.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10.125 -16.625 28.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15.875 -9.375 28.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 -12.875 31.125"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.375 -14.5 30.8125"; + rotation = "-1 0 0 26.5"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -12.875 31.625"; + rotation = "-1 0 0 25"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6.75 -17.75 29.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6.75 -22.35 29.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.2 -22.35 29.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 -16.75 30.375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4.9 -20.35 30.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.625 -15.625 28.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2.625 -20 28.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 -18 30.3203"; + rotation = "1 0 0 17.5"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13.2326 -22.4 31.7903"; + rotation = "0 -1 0 21.5"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8.25 -22.875 31.375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15.25 -14.375 31.625"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15.25 -12.75 28.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15.25 -18.75 32.5469"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11.25 -18.625 28.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13.375 -8.7 35.55"; + rotation = "-1 0 0 45"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12.875 -15.6535 33.9446"; + rotation = "1 0 0 14"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10.126 2.37117 31.7499"; + rotation = "-1 0 0 26.5"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8.875 -0.125 30.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10.75 -2.375 30.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.12664 -0.875 29.8758"; + rotation = "0 -1 0 25"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13.375 2.875 32.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14.875 -4.75 32.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 -0.375 28.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.125 -2.375 28.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.875 -1.325 30.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.25 -4.25 31.3125"; + rotation = "1 0 0 26.5"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7.375 -5.75 32.0625"; + rotation = "1 0 0 26.5"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18.625 1 31.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17.375 2.875 31.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19.125 5.625 31.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2.75 5.625 32.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 8 36.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2.75 5.625 36.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13.375 -4.3 39.625"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6.75 -3.125 37.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7.175 -5.35 37.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.125 -2.5 36.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2.75 -2.5 36.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 -10 38.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.875 -5.75 36.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15.125 -4.5 36"; + rotation = "1 0 0 45"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18.65 -4.05 35.55"; + rotation = "1 0 0 45"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -8.55 38.05"; + rotation = "1 0 0 45"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 7.5 32.375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 5.55 32.375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 7.75 31.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.8715 1.55 32.6259"; + rotation = "0 -1 0 14"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 3.5 31.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.625 -8.05 37.55"; + rotation = "1 0 0 45"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16.625 -10.625 38.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.4 -9.85 47.375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.875 6.6 36.8774"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 7.5 32.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.88 3.5 28.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7.875 -1.375 28.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 -9.375 32.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(NewVersion) { + + new Item() { + position = "12.8 5.55 31.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "7.2 -0.35 35.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-5.63809 4.25 46.1283"; + rotation = "0 -1 0 14"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "4.35133 -5.875 47.2"; + rotation = "0 1 0 14"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "6.3 -7.875 47.1"; + rotation = "0 1 0 14"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-1.6 4.125 45.1188"; + rotation = "0 -1 0 14"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-3.6102 2.225 45.6213"; + rotation = "0 -1 0 14"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-5.6 -13.9 46.1188"; + rotation = "0 -1 0 14"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-1.25 -7.9 45.7188"; + rotation = "0 1 0 14"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "0.25 -9.875 46.125"; + rotation = "0 1 0 14"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-5.7 -6.15 46.1437"; + rotation = "0 -1 0 14"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-11.625 -9.75 46.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-13.5 -7.875 46.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-11.875 -1.95 37.45"; + rotation = "1 0 0 45"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-11.625 -1.75 46.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-9.875 -4.275 38.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "6.625 4.125 36.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "11.875 2.625 28.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "15.875 0.625 28.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "10.125 -16.625 28.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "15.875 -9.375 28.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "5 -12.875 31.125"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "1.375 -14.5 30.8125"; + rotation = "-1 0 0 26.5"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "8.75 -12.5 31.7768"; + rotation = "-1 0 0 25"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "3 -17.75 29.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "6.75 -22.35 29.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "7.875 -1.375 28.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "6.75 -16.75 29.8747"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "4.9 -20.35 30.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-6 -15 28.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-5 -9.375 32.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-9 -18 30.3203"; + rotation = "1 0 0 17.5"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-13.2326 -22.4 31.7903"; + rotation = "0 -1 0 21.5"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-8.25 -22.875 31.375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-15.25 -14.375 31.625"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-15.25 -12.75 28.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-15.25 -18.75 32.5469"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-11.25 -18.625 28.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-13.125 -8.7 35.55"; + rotation = "-1 0 0 45"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-12.875 -15.6535 33.9446"; + rotation = "1 0 0 14"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-10.126 2.37117 31.7499"; + rotation = "-1 0 0 26.5"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-1.626 2.37117 31.7499"; + rotation = "-1 0 0 26.5"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-10.75 -2.375 30.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-4.12664 -0.875 29.8758"; + rotation = "0 -1 0 25"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-13.375 2.875 32.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-14.875 -4.75 32.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "0.25 -1.5 28.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-9 7.5 32.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "0.875 -1.325 30.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-3.25 -4.25 31.3125"; + rotation = "1 0 0 26.5"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-7.375 -5.75 32.0625"; + rotation = "1 0 0 26.5"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-18.625 1 31.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-17.375 2.875 31.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-19.125 5.625 31.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-2.75 5.625 32.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-7 8 36.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-2.75 5.625 36.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-13.375 -4.3 39.625"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-6.75 -5.375 37.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "3.875 6.6 36.8774"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-4 -2.5 36.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "2.75 -2.5 36.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "12 -10 38.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "8.75 -6.25 36.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "12.625 -4.5 36"; + rotation = "1 0 0 45"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "18.65 -4.05 35.55"; + rotation = "1 0 0 45"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "15 -8.55 38.05"; + rotation = "1 0 0 45"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "15 7.5 32.375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "5.88 3.5 28.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "19 7.75 31.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "12.8715 1.55 32.6259"; + rotation = "0 -1 0 14"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "19 3.5 31.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "19.125 -8.05 37.55"; + rotation = "1 0 0 45"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "16.625 -10.625 38.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "8.4 -9.85 47.375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-1.525 -22.425 28.8747"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-1.25 -17.75 28.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "3 -10.5 38.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "5.75 -8.55 38.05"; + rotation = "1 0 0 45"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "13.875 -21.375 28.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + }; + new Marker(Glassy) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Comforting Mystery.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/advanced/lupus.png b/data/multiplayer/hunt/advanced/lupus.png new file mode 100644 index 00000000..4aad786b Binary files /dev/null and b/data/multiplayer/hunt/advanced/lupus.png differ diff --git a/data/multiplayer/hunt/beginner/Battlecube_Hunt.jpg b/data/multiplayer/hunt/beginner/Battlecube_Hunt.jpg new file mode 100644 index 00000000..476db13d Binary files /dev/null and b/data/multiplayer/hunt/beginner/Battlecube_Hunt.jpg differ diff --git a/data/multiplayer/hunt/beginner/Battlecube_Hunt.mis b/data/multiplayer/hunt/beginner/Battlecube_Hunt.mis new file mode 100644 index 00000000..708510f3 --- /dev/null +++ b/data/multiplayer/hunt/beginner/Battlecube_Hunt.mis @@ -0,0 +1,1022 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + name = "Battlecube"; + type = "Beginner"; + level = "12"; + desc = "Collect the diamonds around the different faces."; + artist = "Alex Swanson"; + music = "Tim Trance.ogg"; + Gamemode = "Hunt"; + game = "Ultra"; + time = "180000"; + MaxGemsPerSpawn = "4"; + RadiusFromGem = "15"; + score[0] = "20"; + score[1] = "30"; + platinumScore[0] = "40"; + platinumScore[1] = "60"; + ultimateScore[0] = "65"; + ultimateScore[1] = "90"; + alarmStartTime = "15"; + overviewHeight = "-6"; + glassCenter = "Glassy"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.573201 0.275357 -0.771764"; + color = "1.080000 1.030000 0.900000 1.000000"; + ambient = "0.400000 0.400000 0.500000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "Wintry"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/Battlecube.dif"; + showTerrainInside = "0"; + }; + new Trigger(stayhere) { + position = "-40 22 -10"; + rotation = "1 0 0 0"; + scale = "65 80 80"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Item() { + position = "8 15.8 9"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -26 0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.8 10 12"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4.5 6 0.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.813 -2 24"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 16 15"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 -11 4"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 -43.6 -3"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20.8 -26 30"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 -15 38"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20.8 -28 28"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11.1699 -16.7125 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 6 38"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "1.8 -29 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "11 -20 3"; + rotation = "-0.369768 -0.852119 -0.370358 99.2202"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "-31 -5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "-9 10 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "8 -4 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "6 13 23"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "-4 13 7"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "11 -9 25"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "1"; + add = "0 0 1"; + }; + new Item() { + position = "13 -26 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 -20 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 0.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7.8 -26.8 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.2 3.2 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 -29 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 -11 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 13 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.5 9 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.2 -30.4 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7.6 -15.6 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9.6 5.4 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -22.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12.2 -6 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12.6 2.8 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14.6 -20.6 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 15 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 -4.4 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22.8 10.8 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27.8 -4.2 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31.5 4 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9.8 -7.8 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6.8 10.8 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2.4 16 29.2"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.6 16 23.4"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7.8 16 18"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4.6 16 11.4"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-0.6 16 7"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 16 1.6"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12.6 16 7"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7.6 16 11"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10.4 16 14"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 16 15"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23.4 16 12.6"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30.6 16 15"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33.2 16 8.8"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.8 16 5"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4.4 16 22.6"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 -21.2 1"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 7.4 1.8"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 -25 3"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 0.5 3"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 -15 4.8"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 -23 5"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 6.6 5.4"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 10 8"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 -9.2 8.8"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 5.4 11"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 -11 12"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 12 16"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 -13 17"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 6 18"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 -9 21"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 3 23"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 8 24"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 -11 27"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 -1 27"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 12.8 28.4"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.481 15.51 0.579601"; + rotation = "-0.251566 0.71909 -0.647784 66.5618"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30 15.23 2"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32.3 15.2 0.73"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16.5 15.3 9.15"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.23 15.2 4.13"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12.2 15.23 18"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6.8 15.23 2"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 15.2 0.73"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6.4 15.3 30.5"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 15.23 2"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 15.23 27.4"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.2 12 0.73"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 15.23 12.7"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.23 15.2 18.8"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.2302 -14.1971 25.6"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.3 9 30.5"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.3 -11 30.5"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.23 -29.4 1.3"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.23 -3.8 1.3"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.2 -15.6 0.73"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13.2 -32.2 0.73"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-34.4 -6.7 0.73"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16.4 -11 0.73"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 -32.2 0.73"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Marker(Glassy) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Pianoforte.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/beginner/BlastClub.jpg b/data/multiplayer/hunt/beginner/BlastClub.jpg new file mode 100644 index 00000000..e6984d30 Binary files /dev/null and b/data/multiplayer/hunt/beginner/BlastClub.jpg differ diff --git a/data/multiplayer/hunt/beginner/BlastClub.mis b/data/multiplayer/hunt/beginner/BlastClub.mis new file mode 100644 index 00000000..0411ce73 --- /dev/null +++ b/data/multiplayer/hunt/beginner/BlastClub.mis @@ -0,0 +1,1039 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + name = "Blast Club"; + type = "Beginner"; + level = "8"; + desc = "Blast your opponents but beware not to be hit yourself."; + artist = "Alex Swanson"; + music = "Tim Trance.ogg"; + gameMode = "Hunt"; + game = "Ultra"; + time = "240000"; + MaxGemsPerSpawn = "5"; + RadiusFromGem = "22"; + score[0] = "30"; + score[1] = "60"; + platinumScore[0] = "60"; + platinumScore[1] = "100"; + ultimateScore[0] = "100"; + ultimateScore[1] = "145"; + alarmStartTime = "20"; + overviewHeight = "-35"; + glassCenter = "Glassy"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.573201 0.275357 -0.771764"; + color = "1.080000 1.030000 0.900000 1.000000"; + ambient = "0.400000 0.400000 0.500000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "Clear"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/BlastClub.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-39.5 8.5 -9"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/arch_8_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "39.5 -8.5 -9"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/arch_8_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "28.5 8.5 -13"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/arch_8_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "8.5 28.5 -13"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/arch_8_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "23.5 -8.5 -9"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/arch_8_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "8.5 -23.5 -9"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/arch_8_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "8.5 -39.5 -9"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/arch_8_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "10.5 7.5 -9"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/arch_4_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "7.5 25.5 -9"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/arch_4_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "7.5 10.5 -9"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/arch_4_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "25.5 7.5 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/arch_4_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "10.5 7.5 -17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "7.5 10.5 -17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "7.5 25.5 -17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "25.5 7.5 -17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "28.5 8.5 -29"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "8.5 28.5 -29"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "23.5 -8.5 -25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "39.5 -8.5 -25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "8.5 -39.5 -25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "8.5 -23.5 -25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-28.5 -8.5 -13"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/arch_8_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-8.5 -28.5 -13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/arch_8_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-23.5 8.5 -9"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/arch_8_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-8.5 23.5 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/arch_8_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-8.5 39.5 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/arch_8_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-10.5 -7.5 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/arch_4_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-7.5 -25.5 -9"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/arch_4_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-7.5 -10.5 -9"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/arch_4_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-25.5 -7.5 -9"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/arch_4_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-10.5 -7.5 -17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-7.5 -10.5 -17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-7.5 -25.5 -17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-25.5 -7.5 -17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-28.5 -8.5 -29"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-8.5 -28.5 -29"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-23.5 8.5 -25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-39.5 8.5 -25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-8.5 39.5 -25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-8.5 23.5 -25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-20.5 -15.5 -10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/arch_2_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-20.5 -12.5 -10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/arch_2_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-15.5 -20.5 -10.5"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/arch_2_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "20.5 15.5 -10.5"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/arch_2_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "20.5 12.5 -10.5"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/arch_2_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "15.5 20.5 -10.5"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/arch_2_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "12.5 20.5 -10.5"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/arch_2_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-12.5 -20.5 -10.5"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/interiors_mbu/parts/arch_2_corner.dif"; + showTerrainInside = "0"; + }; + new SimGroup(GemSpawns) { + + new Item() { + position = "0 6 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 0 1.61967"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 -4 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 4 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4 4 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4 -4 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -19 -8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 0 -8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 19 -8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 0 -8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30.5 5 -8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34.5 -5 -8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.5 5 -8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.5 14 -8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 13 -8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 4.5 -8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 -4.5 -8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.5 -11 -8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4.5 -15.5 -8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 -5 -8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.5 30.5 -8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 35.5 -8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37 5 -8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 -4.5 -8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.5 -31.5 -8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 -35.5 -8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 -33 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 -25 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32 -21.5 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39.5 -22 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26 21.5 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37 21.5 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 37.5 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 30 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 22 -10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 18 -10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 13.5 -10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22.5 -14 -10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 -18 -10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 -22 -10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 -31 -12.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31 31 -12.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -6 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(SpawnPoints) { + + new Trigger() { + position = "5 37 -6"; + rotation = "0 0 1 177.617"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-37 -5 -6"; + rotation = "0 0 1 77.9223"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-5.5 -38 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "36.5 5 -6"; + rotation = "0 0 -1 90.7099"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-30 22 -3"; + rotation = "0 0 1 91.6732"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "22 -29 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "7.5 -8 -5.5"; + rotation = "0 0 -1 49.8473"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-7 -7.5 -5.5"; + rotation = "0 0 1 45.2637"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-7.5 7.5 -5.5"; + rotation = "0 0 1 122.613"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "7.5 7 -5.5"; + rotation = "0 0 1 228.793"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + }; + new Item() { + position = "0 0 -9.425"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 22 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 -22 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 17.5 -10.266"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 -29 -12.766"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38.5 0 -8.313"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "38.5 0 -8.313"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 38.5 -8.313"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -38.5 -8.313"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 -17 -10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28.5 28.5 -12.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -9 -8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 9 -8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger(Bounds) { + position = "-51.5 51.5 -24"; + rotation = "1 0 0 0"; + scale = "103 103 1000"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Marker(Glassy) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Pianoforte.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/beginner/Bowl.jpg b/data/multiplayer/hunt/beginner/Bowl.jpg new file mode 100644 index 00000000..9357e835 Binary files /dev/null and b/data/multiplayer/hunt/beginner/Bowl.jpg differ diff --git a/data/multiplayer/hunt/beginner/Bowl.mis b/data/multiplayer/hunt/beginner/Bowl.mis new file mode 100644 index 00000000..fb269fe3 --- /dev/null +++ b/data/multiplayer/hunt/beginner/Bowl.mis @@ -0,0 +1,3104 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + name = "Bowl"; + type = "Beginner"; + level = "9"; + desc = "Speed along the slopes of this wide level."; + artist = "Alex Swanson"; + music = "Tim Trance.ogg"; + Gamemode = "Hunt"; + game = "Ultra"; + time = "300000"; + MaxGemsPerSpawn = "5"; + RadiusFromGem = "50"; + score[0] = "40"; + score[1] = "80"; + platinumScore[0] = "80"; + platinumScore[1] = "120"; + ultimateScore[0] = "130"; + ultimateScore[1] = "170"; + alarmStartTime = "25"; + overviewHeight = "30"; + glassCenter = "Glassy"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.573201 0.275357 -0.771764"; + color = "1.080000 1.030000 0.900000 1.000000"; + ambient = "0.400000 0.400000 0.500000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "Clear"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/Bowl.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/BowlOuterRing.dif"; + showTerrainInside = "0"; + }; + new SimGroup(SpawnPoints) { + + new Trigger() { + position = "-144 -64.5 -4"; + rotation = "0 0 1 30.9397"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "0.760625 -64.6644 -20"; + rotation = "0 0 1 30.9397"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-40.32 8.36844 -20"; + rotation = "0 0 1 91.6732"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "39.5594 41.0809 -20"; + rotation = "0 0 1 236.241"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "88.2478 -39.5594 -20"; + rotation = "0 0 -1 44.6907"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-108 75.5 -4"; + rotation = "0 0 1 122.613"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "68 147.5 -4"; + rotation = "0 0 1 187.357"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "146 67.5 -4"; + rotation = "0 0 1 228.22"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "152 -44.5 -4"; + rotation = "0 0 -1 52.7121"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "104 -120.5 -4"; + rotation = "0 0 -1 52.7121"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + }; + new SimGroup(GemSpawns) { + + new Item() { + position = "56 -96 -19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "80 -72 -19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48 -56 -27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "72 -32 -27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "96 -24 -27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "120 -11 -26.7682"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "81 -8 -27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "56 -2 -27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49 24 -27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24 33 -27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 56 -27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 32 -27.021"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 24 -27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40 -8 -26.6366"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 -16 -27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 -32 -27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-36 -24 -27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 -40 -27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29 -72 -27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28 -44 -29"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 45 -29"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28 20 -29"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36 -60 -29"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24 60 -25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "104 -4 -25.006"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 -44 -24.752"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 40 -24.8293"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-36 -36 -29"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "60 -36 -29"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40 -120 -19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 -104 -19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 -88 -19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40 -56 -19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-72 -24 -19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-88 -8 -19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 56 -19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40 40 -19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 80 -19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 120 -19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 88 -19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40 96 -19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "56 96 -19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "72 96 -19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "56 72 -19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "72 48 -19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "76 20 -19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "108 24 -19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "120 8 -19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "136 -32 -18.9101"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "104 -40 -19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "120 -72 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "124 -84 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "108 -92 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "84 -124 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -140 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-52 -112 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-109 -96 -8.3876"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-149 -16 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-116 24 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-83 76 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-83 76 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-76 100 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75.9884 -74.1806 -16.823"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-87.7826 -68.9788 -17.3661"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-66.363 -87.2754 -15.974"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-130.306 -61.3519 -6.91996"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-122.507 -105.739 -6.75985"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "47.1155 44.1674 -22.8171"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40.634 54.9657 -22.8614"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "66.8836 51.9651 -18.9444"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "85.3294 40.7751 -14.8999"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "91.0639 56.4287 -14.9789"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "87.6508 85.0477 -14.8301"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "61.3256 115.714 -14.9455"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21.6405 114.385 -14.8021"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "82.1368 20.6278 -18.7879"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "98.5327 3.47229 -22.8357"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "66.0189 2.85052 -22.9232"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "85.653 -36.2964 -22.8431"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "72.844 -55.5532 -22.8302"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "56.8455 -67.9043 -23.0117"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24.5129 -102.69 -22.9293"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35.7502 -90.2028 -22.7962"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "57.5563 -120.778 -14.8785"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "93.8221 -82.2279 -15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "98.4544 -113.16 -6.83894"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "82.8707 -139.575 -6.93788"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "154.158 -105.758 -6.82837"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "151.477 -49.0232 -6.87983"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "216.423 -37.8321 -6.84465"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "177.58 -18.5131 -2.81227"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "183.667 11.0757 -2.84367"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "198.876 1.65432 -2.81291"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "193.361 57.6171 -6.92666"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "175.206 65.35 -6.96621"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "167.558 91.4439 -6.91132"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "150.18 51.217 -6.8839"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "134.503 63.0692 -6.82623"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "139.983 83.9782 -6.80962"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "138.021 102.879 -2.93955"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "124.161 137.759 -6.88427"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "88.9779 140.085 -6.85447"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36.1375 156.192 -6.84447"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20.3315 139.875 -6.97154"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14.9689 146.955 -6.95845"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37.9772 153.974 -6.94612"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-60 145 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-100 145 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-127.001 118.5 -6.95117"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-92.699 108.41 -6.89883"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-82.631 82.0788 -6.9748"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "148.211 -13.2429 -6.84947"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-115.765 75.84 -6.90021"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-127.462 53.3129 -6.99256"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-181.157 42.1244 -6.94909"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-180.641 -17.5401 -6.96705"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-113.764 -17.3948 -14.9037"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-60.5995 -90.8722 -14.9793"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4.53825 -51.9178 -22.9373"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "57.8208 -19.8543 -30.995"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45.7285 -36.8502 -30.969"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9.83821 1.89329 -30.8827"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-0.0799713 27.6008 -30.9445"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2.25426 -26.8617 -30.8758"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-34.6893 3.51507 -22.9234"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39.2987 28.9624 -22.9971"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-84.7687 24.9691 -14.9587"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-44.4327 54.1045 -14.9584"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "88 132 -8.80333"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "115 120 -9.36655"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "120 84 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "156 32 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "140 -56 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-44 -78 -13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-90.4005 -51.8514 -14.9241"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75 -44 -13.3177"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-124 60 -8.68876"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-100 96 -8.8602"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "172 48 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "180 45 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "206 52 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "212 44 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "196 -48 -4.79543"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "204 -45 -4.72104"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "177 -44 -4.65113"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "173 -51 -4.50404"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "170 -28 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "197 -28 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "166 -4 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "181 0 -4.35343"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "164 15 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "185 28 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "207 12 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "218 -12 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "131 -104 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "109 -136 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "134 -116 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "148 -79 -4.7475"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "172 -77 -4.80162"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "125 101 -4.34334"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "144 92 -4.8232"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "153 116 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "135 132 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-121 109 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-134 83 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-173 -51 -5.4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-132 -90 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-140 -96 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-171 -64 -1.32882"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-124 96 -0.93333"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "160 -76 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "123 -127 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 140 -8.8299"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "88 -104 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "56 -136 -10.801"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24 -136 -10.9147"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 -136 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40 -128 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-48 -104 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-72 -136 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-48 -80 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-80 -48 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-104 -112 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-104 -72 -10.8566"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-112 -48 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-144 -40 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-168 -32 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-168 16 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-144 24 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-136 16 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-144 -8 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-152 56 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-168 72 -10.809"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-128 40 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-112 8 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-104 32 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-96 64 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64 72 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-48 88 -10.8531"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-56 112 -10.6749"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40 120 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-96 120 -10.9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-104 136 -10.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64 136 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 136 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 128 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "56 128 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "104 128 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "112 40 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "144 40 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "144 24 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "152 -16 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "60 -84 -21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36 -104 -21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "68 -75 -20.7452"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "92 -52 -21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "123 -36 -21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "132 -16 -21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "88 12 -21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "68 31 -21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "60 56 -21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36 75 -21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 88 -21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 72 -20.9112"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 68 -20.9728"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20.0043 102.001 -21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30 46 -20.0026"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-59 27 -21.4036"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-68 11 -21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57 -4 -22.9958"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-52 -30 -21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 -62 -21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -84 -21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 -120 -21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new Item() { + position = "-24 8 -30.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 40 -30.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40 8 -30.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40 -41 -30.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 -24 -30.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 -72 -22.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48 56 -22.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "92 116 -14.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "104 -72 -14.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-88 -88 -14.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "147 104 -2.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "215 -1 -2.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "71 63 -18.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "104 -136 -2.85"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-146 -87 -3.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-136.2 96 -2.85"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24 -8 -30.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 152 -7.267"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-183 17 -7.267"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "119 -105 -7.267"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "179 83 -7.267"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "187 -48 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "192 46 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "103 148 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-116 53 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37 -68 -15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "72 -104 -15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 117 -15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-84 51 -15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-100 -37 -15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-159.901 0.0424097 -15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-84 106 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "148 -21 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "134 119 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "108 13 -23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36 -85 -22.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-59 19 -22.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-95.9574 -0.0409622 -14.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 80 -14.85"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "110.375 46.8985 -10.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "174.762 53.5465 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32 -32 -30.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "64 96 -22.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-127 -1 -14.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "226.858 0.0439141 -2.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "226 65.2 -3.813"; + rotation = "0 0 1 45"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "180.2 110.8 -3.813"; + rotation = "0 0 1 45"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "129 162 -3.813"; + rotation = "0 0 1 25"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "71.4014 162.223 -3.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16.4722 162.06 -3.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39 162 -3.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-97.1485 162.242 -3.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-142.628 116.377 -3.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-194 65 -3.813"; + rotation = "0 0 1 45"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-194 6.5 -3.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-194 -49 -3.813"; + rotation = "0 0 -1 45"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-125.4 -117.6 -3.813"; + rotation = "0 0 -1 45"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-97 -146 -3.813"; + rotation = "0 0 1 45"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41.5 -146 -3.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28 -146 -3.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "78.2 -146 -3.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "129.236 -145.862 -3.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "167.712 -107.144 -3.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "226 -49 -3.813"; + rotation = "0 0 1 45"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "162.35 108.222 -6.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "169.134 111.126 -6.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "135.243 137.735 -6.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "132.293 146.613 -6.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-77 128 -14.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64 120 -14.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-128 64 -10.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-159.974 11.3167 -14.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-159.982 -31.7894 -14.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-159.085 -79.2444 -6.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-80 -112 -22.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23.7161 -125.376 -22.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24.2444 -97.3578 -22.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "147.555 -105.807 -6.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "152.17 -100.902 -6.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "182.394 -71.2294 -6.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "198.167 -59.6783 -6.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "213.314 -24.1675 -6.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "214.696 24.9285 -6.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23.5903 105.315 -22.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6.01285 104.536 -22.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-85.6436 86.0263 -6.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-143.394 -31.8632 -14.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "37.0146 -26.7893 -30.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "59.2351 -22.7147 -30.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.06625 23.3642 -30.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger(Bounds) { + position = "-203 171 -36"; + rotation = "1 0 0 0"; + scale = "438 326 1000"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Marker(Glassy) { + position = "22 0 -30"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Comforting Mystery.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/beginner/KingOfTheMarble_Hunt.jpg b/data/multiplayer/hunt/beginner/KingOfTheMarble_Hunt.jpg new file mode 100644 index 00000000..c741c8e0 Binary files /dev/null and b/data/multiplayer/hunt/beginner/KingOfTheMarble_Hunt.jpg differ diff --git a/data/multiplayer/hunt/beginner/KingOfTheMarble_Hunt.mis b/data/multiplayer/hunt/beginner/KingOfTheMarble_Hunt.mis new file mode 100644 index 00000000..edff2feb --- /dev/null +++ b/data/multiplayer/hunt/beginner/KingOfTheMarble_Hunt.mis @@ -0,0 +1,379 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + name = "King of the Marble"; + type = "Beginner"; + level = "1"; + desc = "With little room to escape, show your opponents why you are the King."; + artist = "Tim Aste & Matan"; + music = "Tim Trance.ogg"; + Gamemode = "Hunt"; + game = "Ultra"; + glassCenter = "glassCenter"; + time = "180000"; + MaxGemsPerSpawn = "4"; + RadiusFromGem = "15"; + score[0] = "30"; + score[1] = "60"; + platinumScore[0] = "60"; + platinumScore[1] = "110"; + ultimateScore[0] = "120"; + ultimateScore[1] = "155"; + alarmStartTime = "15"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.573201 0.275357 -0.771764"; + color = "1.080000 1.030000 0.900000 1.000000"; + ambient = "0.400000 0.400000 0.500000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "Clear"; + }; + new InteriorInstance() { + position = "-28.2 0 20.4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/KingOfTheMarble.dif"; + showTerrainInside = "0"; + }; + new Trigger(stayhere) { + position = "-62 52 16"; + rotation = "1 0 0 0"; + scale = "75 75 75"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "-13 35.25 23"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-25 35.25 23"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-37 35.25 23"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-45.25 27 23"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-45.25 15 23"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-45.25 3 23"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-37.25 -5 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-25.25 -5 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-13.25 -5 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-5.25 27 23"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-5.25 15 23"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-5.25 3 23"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Item() { + position = "-27.2 17 20.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23.2 13 20.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23.2 17 20.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27.2 13 20.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13.2 15 20.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25.2 27 20.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37.2 15 20.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25.2 3 20.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13.2 3 20.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37.2 27 20.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13.2 27 20.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37.2 3 20.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37.2 9 20.85"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19.2 3 20.85"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13.2 21 20.85"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37.2 21 20.837"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31.2 3 20.837"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19.2 27 20.837"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13.2 9.2 20.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31.2 27 20.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25.2 15 21.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Marker(glassCenter) { + position = "-25.2 15 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Pianoforte.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/beginner/KingOfTheRing.jpg b/data/multiplayer/hunt/beginner/KingOfTheRing.jpg new file mode 100644 index 00000000..2f93ea41 Binary files /dev/null and b/data/multiplayer/hunt/beginner/KingOfTheRing.jpg differ diff --git a/data/multiplayer/hunt/beginner/KingOfTheRing.mis b/data/multiplayer/hunt/beginner/KingOfTheRing.mis new file mode 100644 index 00000000..b4f0e2c1 --- /dev/null +++ b/data/multiplayer/hunt/beginner/KingOfTheRing.mis @@ -0,0 +1,542 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + name = "King of the Ring"; + type = "Beginner"; + level = "2"; + desc = "Round and Round..."; + artist = "Kurt"; + music = "Tim Trance.ogg"; + Gamemode = "Hunt"; + game = "Platinum"; + time = "180000"; + MaxGemsPerSpawn = "5"; + RadiusFromGem = "15"; + score[0] = "20"; + score[1] = "30"; + platinumScore[0] = "40"; + platinumScore[1] = "60"; + ultimateScore[0] = "65"; + ultimateScore[1] = "90"; + alarmStartTime = "15"; + overviewHeight = "-6"; + glassCenter = "Glassy"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "500"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-31 1.3684e-38"; + fogVolume2 = "-1 1.07208e-14 8.756e-14"; + fogVolume3 = "-1 5.1012e-10 2.05098e-08"; + materialList = "~/data/skies/Intermediate/Intermediate_Sky.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.573201 0.275357 -0.771764"; + color = "1.080000 1.030000 0.900000 1.000000"; + ambient = "0.400000 0.400000 0.500000 1.000000"; + }; + new InteriorInstance() { + position = "-0.5 -1 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/KingOfTheRing.dif"; + showTerrainInside = "0"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "500 500 500"; + dataBlock = "clear"; + }; + new Trigger() { + position = "-0.5 -7.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Item() { + position = "4 4 0.9842213"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 0 -0.4994973"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 0 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4 -4 1.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 -4 1.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 4 0.768644"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "-0.5 8.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "-8.5 0.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "7.5 0.5 0.9999998"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Item() { + position = "20 0 4.658161"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 20 4.65816"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 0 4.658127"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 14 2.247848"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -20 4.658127"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new TSStatic() { + position = "10.07219 5.009139 1.05"; + rotation = "0 1 0 22.00001"; + scale = "1 1 0.01"; + shapeName = "~/data/custom_marbles/MBUltra/marble06.dts"; + }; + new Item() { + position = "0 -14 2.247838"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 0 2.247849"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 0 2.247839"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 14 4.577429"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 -14 4.577416"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 14 4.57743"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 -14 4.577416"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 10 2.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -10 2.304946"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 10 2.304945"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 -10 2.304946"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 8 3.101237"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 14 3.101239"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 14 3.101242"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 8 3.101239"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 -14 3.101242"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 -14 3.101239"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 -8 3.101242"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 -8 3.101232"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 6 4.232153"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 -6 4.232141"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 18 4.232151"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 18 4.232089"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 -6 4.23215"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 6 4.232091"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 -18 4.232153"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 -18 4.232094"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4 -12 1.696009"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 -12 1.692367"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4 12 1.696017"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 -4 1.69236"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 4 1.696022"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 12 1.696008"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 -4 1.696015"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 4 1.69601"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger(Bounds) { + position = "-29.79376 31.04235 -0.250042"; + rotation = "1 0 0 0"; + scale = "60 60 60"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Pianoforte.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/beginner/MarbleAgilityCourse_Hunt.jpg b/data/multiplayer/hunt/beginner/MarbleAgilityCourse_Hunt.jpg new file mode 100644 index 00000000..cd52e8ef Binary files /dev/null and b/data/multiplayer/hunt/beginner/MarbleAgilityCourse_Hunt.jpg differ diff --git a/data/multiplayer/hunt/beginner/MarbleAgilityCourse_Hunt.mis b/data/multiplayer/hunt/beginner/MarbleAgilityCourse_Hunt.mis new file mode 100644 index 00000000..ff677b98 --- /dev/null +++ b/data/multiplayer/hunt/beginner/MarbleAgilityCourse_Hunt.mis @@ -0,0 +1,1131 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + name = "Marble Agility Course"; + type = "Beginner"; + level = "10"; + desc = "Can you take it all in stride?"; + startHelpText = "Jump for the gems!"; + artist = "Technostick, Matan and Phil"; + music = "Astrolabe.ogg"; + Gamemode = "Hunt"; + game = "Platinum"; + time = "180000"; + MaxGemsPerSpawn = "5"; + RadiusFromGem = "10"; + score[0] = "25"; + score[1] = "40"; + platinumScore[0] = "60"; + platinumScore[1] = "80"; + ultimateScore[0] = "100"; + ultimateScore[1] = "130"; + alarmStartTime = "15"; + overviewHeight = "-3"; + glassCenter = "Glassy"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.638261 0.459006 -0.61801"; + color = "1.400000 1.200000 0.400000 1.000000"; + ambient = "0.300000 0.300000 0.400000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "Dusk"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/beginner/MarbleAgilityCourse.dif"; + showTerrainInside = "0"; + }; + new Trigger(Bounds) { + position = "-30 30 -5"; + rotation = "1 0 0 0"; + scale = "60 60 200"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new SimGroup(SpawnPoints) { + + new Trigger() { + position = "-13.5 -14.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "-7.7 18.37 2.5"; + rotation = "0 0 1 137"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "-18 3 2.5"; + rotation = "0 0 1 102.5"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "-18 -4 2.5"; + rotation = "0 0 1 77.5"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "-10.9 16.05 2.5"; + rotation = "0 0 1 130"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "-2.5 -18.3 2.5"; + rotation = "0 0 1 9.99997"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "5.5 -17.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "10.5 15.8 2.5"; + rotation = "0 0 1 220"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "19.5 -7 2.5"; + rotation = "0 0 -1 77.5"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "20.6 -1.2 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1"; + }; + }; + new SimGroup(OldVersion) { + new SimGroup(GemSpawns) { + + new Item() { + position = "7.75 17.5 1.625"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.75 18.5 1.625"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-0.75 19.5 1.625"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.75 19 1.625"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 10 0.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14.5 3.5 1.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.5 6.5 1.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14.5 9.5 1.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.5 12.5 1.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 6 0.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 7.5 0"; + rotation = "1 0 0 0"; + scale = "0.75 0.75 0.75"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2.89361 4.07036 0"; + rotation = "1 0 0 0"; + scale = "0.75 0.75 0.75"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2.5 0.5 0"; + rotation = "1 0 0 0"; + scale = "0.75 0.75 0.75"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11.75 -12.25 1.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-0.75 -14.75 1.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.25 -13.75 1.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7.25 -13.75 1.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 -16 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 -10 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 -6 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9.6 6 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15.4 12.4 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.8 3.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18.6 9.2 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20.4 4.8 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 5.16 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.3 12 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 23.63 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.4 16.4 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.2 21.38 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14.2 15.7 0.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9.27 -15.43 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18.5 9.6 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15.3 -5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 6 1.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 9 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2.9 -16.86 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14.5 2.78 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.2 -1.25 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6.17 -5.85 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.9 9.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.7 7.5 0.85"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4.1 0.5 0.85"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -6.15 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 -12 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13.9 -16.85 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8.75 -12.6 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 -2 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 -7 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + }; + new SimGroup(NewVersion) { + new SimGroup(GemSpawns) { + new Item() { + position = "7.75 17.5 1.625"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.75 18.5 1.625"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-0.75 19.5 1.625"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.75 19 1.625"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 10 0.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14.5 3.5 1.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.5 6.5 1.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14.5 9.5 1.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.5 12.5 1.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 6 0.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 7.5 0"; + rotation = "1 0 0 0"; + scale = "0.75 0.75 0.75"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2.89361 4.07036 0"; + rotation = "1 0 0 0"; + scale = "0.75 0.75 0.75"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2.5 0.5 0"; + rotation = "1 0 0 0"; + scale = "0.75 0.75 0.75"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11.75 -12.25 1.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-0.75 -14.75 1.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.25 -13.75 1.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7.25 -13.75 1.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 -16 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 -10 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 -6 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9.6 6 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 15 2.08616e-007"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 -21 -7.15256e-007"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20 6 2.68221e-007"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 -7 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 5.16 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.3 12 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 23 -4.47035e-007"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 13 -1.78814e-007"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 21 3.8743e-007"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14.2 15.7 0.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 -17.25 5.96046e-008"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18.5 9.6 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15.3 -5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 6 0.0500002"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 9 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-0.25 -20 -2.98023e-007"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14.5 2.78 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.2 -1.25 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6.17 -5.85 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 2 3.57628e-007"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 -2 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 -11 3.8743e-007"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -6.15 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 -12 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13.9 -16.85 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + }; + new StaticShape() { + position = "16.7273 -12.1422 0"; + rotation = "0 0 1 64.1713"; + scale = "1 1 1"; + dataBlock = "SignSide"; + }; + new StaticShape() { + position = "16.2 2.07 2.5"; + rotation = "0 0 -1 67.609"; + scale = "1 1 1"; + dataBlock = "SignDownSide"; + }; + new StaticShape() { + position = "14 16.8 0"; + rotation = "0 0 1 100"; + scale = "1 1 1"; + dataBlock = "SignSide"; + }; + new StaticShape() { + position = "-13.7 15.9 -0.02"; + rotation = "-0.235113 -0.0631334 -0.969916 30.95"; + scale = "1 1 1"; + dataBlock = "SignSide"; + }; + new Item() { + position = "0 14 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 6 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16.9236 -12.5723 0.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14.2428 17.2351 0.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12.2 -1 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2.4 -20.8 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Marker(Glassy) { + position = "2.9 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Pianoforte.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/beginner/MarbleCity.jpg b/data/multiplayer/hunt/beginner/MarbleCity.jpg new file mode 100644 index 00000000..9e6e7a5d Binary files /dev/null and b/data/multiplayer/hunt/beginner/MarbleCity.jpg differ diff --git a/data/multiplayer/hunt/beginner/MarbleCity.mis b/data/multiplayer/hunt/beginner/MarbleCity.mis new file mode 100644 index 00000000..2248dd48 --- /dev/null +++ b/data/multiplayer/hunt/beginner/MarbleCity.mis @@ -0,0 +1,2162 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + artist = "Alex Swanson"; + music = "Tim Trance.ogg"; + name = "Marble City"; + desc = "Use the powerups to help you navigate to the gems."; + type = "Beginner"; + level = "11"; + Gamemode = "Hunt"; + game = "Ultra"; + time = "300000"; + MaxGemsPerSpawn = "6"; + RadiusFromGem = "25"; + score[0] = "40"; + score[1] = "50"; + platinumScore[0] = "80"; + platinumScore[1] = "100"; + ultimateScore[0] = "140"; + ultimateScore[1] = "175"; + alarmStartTime = "25"; + overviewHeight = "10"; + glassCenter = "Glassy"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.573201 0.275357 -0.771764"; + color = "1.080000 1.030000 0.900000 1.000000"; + ambient = "0.400000 0.400000 0.500000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "Clear"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/MarbleCity.dif"; + showTerrainInside = "0"; + }; + new Trigger(Bounds) { + position = "-58 87 -22"; + rotation = "1 0 0 0"; + scale = "109.5 137 1000"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new SimGroup(GemSpawns) { + + new Item() { + position = "-41 17 -5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39 15 -5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39 19 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37 17 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41 13 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-43 15 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-43.5 19.5 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-36.5 12.5 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37.5 26 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-43 26 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53.5 30.5 -7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53.5 -2 -7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 34 -7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22.5 39 -7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 38 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.5 39.5 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-50 18.5 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-50 13.5 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-42.5 6 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-37.5 6 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-30 13 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-18 0 -7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-12 0 -7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-6 0 -7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-3 21 -7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-1 19 -7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + pickUpCheckpoint = "0"; + pickup = "5322"; + }; + new Item() { + position = "5 19 -7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "7 21 -7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-7 20 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "11 20 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + pickUpCheckpoint = "0"; + pickup = "5322"; + }; + new Item() { + position = "4 21 -11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "2 23 -11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-6 23 -11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-4 21 -11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-3 13 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "0 10 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-3 7 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-5.5 2 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-1 1 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-3 -2 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "5 6 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "7 9.5 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "5 12.5 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-6 10 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-6 10 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-3 -11 -10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "5 -11 -10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "13 -29 -10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "8.5 -30.5 -10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "4 -29 -10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "2.5 -24 -10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "5.5 -20 -10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "10 -19.5 -10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "13 -23 -10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "43 -26 -10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "40 -23 -10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "34 -29 -10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "40 -34.5 -10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + + pickUpCheckpoint = "0"; + pickup = "5322"; + }; + new Item() { + position = "28 -23 -10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "25 -26 -10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "29 -3 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "29 7 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "27 2 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "31 2 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + pickUpCheckpoint = "0"; + pickup = "5322"; + }; + new Item() { + position = "27 11.5 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "31 11.5 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "42 -2.5 -10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "42 2 -10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "42 7 -10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "46 2 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "38 20.5 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "36.5 19 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "35 26.5 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "30.5 26 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "32 22 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "23.5 25.5 -7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "34 35 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "32 35 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "32.5 39.5 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "34.5 41.5 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "28 41.5 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "28 39 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "39 46 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "39 30 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "26.5 33.5 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "44 18.5 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "43 24.5 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "23.5 46.5 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + pickUpCheckpoint = "0"; + pickup = "5322"; + }; + new Item() { + position = "20 43.5 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "23.5 39.5 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + pickUpCheckpoint = "0"; + pickup = "5322"; + }; + new Item() { + position = "20 36 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "24 32.5 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "20 28 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "24 21.5 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "19.5 17.5 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-6 42.5 -11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-5.5 37 -11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "2.5 37 -11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "3 40 -11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "4 43 -11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-1 33.5 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + pickUpCheckpoint = "0"; + pickup = "5322"; + }; + new Item() { + position = "-1 46 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "2 66.5 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "2 72.5 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "8 72.5 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "8 66.5 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "5 69.5 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "19.5 70.5 -9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "21.5 68.5 -9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "20.5 79.5 -9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "20.5 59.5 -9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "7 80.5 -10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "1 80.5 -10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-8 71.5 -10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-5 77.5 -10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "16.5 74.5 -10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "16.5 64 -10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "11 58.5 -10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-2 58 -10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-8 65.5 -10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-4.5 40 -11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-3.5 -20 -10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-26 -32 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-26 -27 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-21 -27 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-21 -31.5 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-21 -37 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "21.5 -45.5 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "17.5 -42 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "16 -38 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "12.5 -42 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "9.5 -38 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "6 -42 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-26 -37 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-29.5 -41.5 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-23 -41.5 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-29.5 -21 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + pickUpCheckpoint = "0"; + pickup = "5322"; + }; + new Item() { + position = "-34 -24 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-18 -21 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-31 -37 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-31 -32 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-31 -27 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-37.5 -45.5 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-9 -20 -10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-14 -20 -10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-1 0 -7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-23 0 -7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "2 5 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-8 15 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "1.5 13 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-7.5 7 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-4 11 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-2 9 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-30 18.5 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + }; + new Item() { + position = "35 57 -8.267"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-20 60 -7.767"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-47 30.5 -7.767"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "46 -29 -10.767"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-9.5 -31 -4.767"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-3 10 2.233"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-7.5 -27 -8.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "24 -1 -11.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "40 -44.5 -10.313"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "16 22 -7.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-12 -40 -6.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new SimGroup(SpawnPoints) { + + new Trigger() { + position = "-32 0 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-50 26 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-34.5 -41.5 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "0 -40.5 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "1.5 -27 -8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "34 -21.5 -8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "34 8 -10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "22 21.5 -10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "22 44.5 -12.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-1 40 -10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-1 22 -12.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "2 0 -12.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-18.5 11.5 -10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-23 31.5 -5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "2 20 -5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "43 22 -5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "35 50.5 -5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "20.5 64.5 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-8 58.5 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + }; + new Item() { + position = "-13.5 43.5 -12.313"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "13.2359 56.4838 -9.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-13.5 -6.5 -12.313"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-45.5 -1.5 -7.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "7 0.5 -8.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-7 27.5 -7.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "7 46 -11.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "37.5 -6.5 -11.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "34 13 -11.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "45 30 -7.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-37.5 -27.5 -6.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-10 82.5 -9.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "24.8598 68.4566 -9.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "47 6 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "43 -23 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "10 80.5 -8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-31.5 42 -7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-18 -45.5 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-3 10 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "1 -11 -10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "47 -2 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-0.932445 27.9891 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "27 9 -10.5"; + rotation = "1 0 0 0"; + scale = "1.3 1.3 1.3"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-8 62.5 -8.5"; + rotation = "1 0 0 0"; + scale = "1.3 1.3 1.3"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "8 -25 -10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + + }; + new Item() { + position = "-0.25 14.75 -7.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Marker(Glassy) { + position = "3 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Pianoforte.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/beginner/Playground.jpg b/data/multiplayer/hunt/beginner/Playground.jpg new file mode 100644 index 00000000..422b2cbc Binary files /dev/null and b/data/multiplayer/hunt/beginner/Playground.jpg differ diff --git a/data/multiplayer/hunt/beginner/Playground.mis b/data/multiplayer/hunt/beginner/Playground.mis new file mode 100644 index 00000000..00a9669a --- /dev/null +++ b/data/multiplayer/hunt/beginner/Playground.mis @@ -0,0 +1,1460 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + name = "Playground"; + type = "Beginner"; + level = "5"; + desc = "Play around and collect the gems, but beware of the ice."; + artist = "Alex Swanson"; + music = "Tim Trance.ogg"; + gameMode = "Hunt"; + game = "Ultra"; + time = "300000"; + MaxGemsPerSpawn = "7"; + RadiusFromGem = "20"; + score[0] = "40"; + score[1] = "70"; + platinumScore[0] = "90"; + platinumScore[1] = "140"; + ultimateScore[0] = "150"; + ultimateScore[1] = "200"; + alarmStartTime = "25"; + overviewHeight = "-40"; + glassCenter = "Glassy"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + sphereFront = "platinum/data/shapes/skies/clear/front.png"; + sphereBack = "platinum/data/shapes/skies/clear/back.png"; + }; + new Sun() { + direction = "0.573201 0.275357 -0.771764"; + color = "1.080000 1.030000 0.900000 1.000000"; + ambient = "0.400000 0.400000 0.500000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "clear"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/playground.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "16.5 -8 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "9.5 -8 6"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "16.5 6 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "9.5 6 6"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-7.5 6 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-14.5 6 6"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-7.5 -8 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-14.5 -8 6"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-28 -44 1"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-30.5 -51.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-28.5 17.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "32.5 41.5 6"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "30.5 -19.5 6"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "28 42 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "32.5 41.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "30.5 -19.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-28.5 17.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-30.5 -51.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-41.5 -51.5 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-41.5 17.5 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "43.5 -19.5 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "43.5 41.5 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-28 -44 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "43.5 -19.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "43.5 41.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-41.5 17.5 6"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-41.5 -51.5 6"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new SimGroup(GemSpawns) { + + new Item() { + position = "5.63869 -9.72336 1.03143"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.37336 7.85693 1.00706"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 48.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 50 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.5 46.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.5 42.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.5 42.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 34.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 34 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10.5 42.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.5 49 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 53.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 48 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.5 38 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 50 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 54.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 41 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.5 57 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16.5 44 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 29 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7.5 33.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.5 -42 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 -43.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.5 -53.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "41 -0.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32 -2 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19.5 22 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20.5 30 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22.5 16 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40.5 8.5 7.4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40.0422 -10.5003 7.4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36 -16.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32.5 -6 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34 -1 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32 6 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34 15 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28.5 27 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 36.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "41 30 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39.5 23 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38 -29.5 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23.5 -29 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 -1 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30 6 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32.5 -6 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 -13 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18.5 -10 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.37989 -10.0196 1.04564"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.43988 7.6396 1.02233"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 1.5 1.00164"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21.5 6.5 1.03048"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22.5 29 1.04689"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24.5 -7.5 1.03764"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24 -31.5 1.05531"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 -3.5 1.03162"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 -3.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 1 1.02531"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32 -19.5 7.4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31.5 -32 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 -34 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 -49 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39 -40 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39.5 -22 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38 -12 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38 -3 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 0.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39.5 10 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32 15 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22.5 -48.5 4.4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30 -26 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "43 16.5 5.4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19.5 8.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24.5 -1 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 -1 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8.5 -42 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 -35.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 -58.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 -51.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.5 -35.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -51.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.5 -57.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7.5 -56 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.5 -47.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-0.5 -45 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 -38 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 -34 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9.5 -40 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.5 -47 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 -46 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 -35.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 38.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 4.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.5 4.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.5 1.35 7.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.5 -7.25 6.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 -4.6 7.575"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.5 1.35 7.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.5 -1.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.5 -7.25 6.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(SpawnPoints) { + + new Trigger() { + position = "-39.5 -1.5 11.5"; + rotation = "0 0 1 89.3814"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "41.5 -2.5 11.5"; + rotation = "0 0 -1 87.6625"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "22 23.5 11.5"; + rotation = "0 0 -1 103.705"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-32 -26 11.5"; + rotation = "0 0 1 79.6411"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-24 -58 8"; + rotation = "0 0 1 29.2209"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "24 55.5 8"; + rotation = "0 0 1 210.276"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-22 58.5 3.5"; + rotation = "0 0 1 133.499"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "4 58.5 3.5"; + rotation = "0 0 1 174.179"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-22.5 13.5 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "11.5 17.5 3.5"; + rotation = "0 0 -1 28.0749"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-9 -18.5 3.5"; + rotation = "0 0 1 134.072"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "23.5 -60 3.5"; + rotation = "0 0 -1 25.7831"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "24 -19 3.5"; + rotation = "0 0 -1 81.933"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-18 -59 3.5"; + rotation = "0 0 1 36.6693"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "40.5 39 9.5"; + rotation = "0 0 1 221.917"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-39 15.5 8"; + rotation = "0 0 1 119.175"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-38.5 -47.5 9.5"; + rotation = "0 0 1 36.0964"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + }; + new SimGroup(BigBallsOfFun) { + + new Item() { + position = "-14.5 -1 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -1 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(UltraBlast) { + + new Item() { + position = "5 -37 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 47 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(Rockets) { + + new Item() { + position = "-0.5 26 1.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 -28 1.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(Gyrocopter) { + + new Item() { + position = "-40.5 -50.5 6.233"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36 40 6.233"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 43 0.734"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.5 -52 0.734"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(Springs) { + + new Item() { + position = "-14 -21 1.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 26 1.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42 23.5 4.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40 -29 3.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new Trigger(Bounds) { + position = "-45.5 63.5 -3.5"; + rotation = "1 0 0 0"; + scale = "93 129 1000"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Marker(Glassy) { + position = "1 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Comforting Mystery.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/beginner/RampMatrix_Hunt.jpg b/data/multiplayer/hunt/beginner/RampMatrix_Hunt.jpg new file mode 100644 index 00000000..fa563a0f Binary files /dev/null and b/data/multiplayer/hunt/beginner/RampMatrix_Hunt.jpg differ diff --git a/data/multiplayer/hunt/beginner/RampMatrix_Hunt.mis b/data/multiplayer/hunt/beginner/RampMatrix_Hunt.mis new file mode 100644 index 00000000..29fbd5d9 --- /dev/null +++ b/data/multiplayer/hunt/beginner/RampMatrix_Hunt.mis @@ -0,0 +1,699 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + name = "Ramp Matrix"; + type = "Beginner"; + level = "3"; + desc = "Woah! I know marble-fu!"; + artist = "Alex Swanson"; + music = "Classic Vibe.ogg"; + Gamemode = "Hunt"; + game = "Gold"; + time = "210000"; + MaxGemsPerSpawn = "6"; + RadiusFromGem = "10"; + score[0] = "20"; + score[1] = "35"; + platinumScore[0] = "50"; + platinumScore[1] = "70"; + ultimateScore[0] = "90"; + ultimateScore[1] = "115"; + alarmStartTime = "20"; + overviewHeight = "2"; + glassCenter = "Glassy"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.638261 0.459006 -0.61801"; + color = "1.400000 1.200000 0.400000 1.000000"; + ambient = "0.300000 0.300000 0.400000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "Clear"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbg/intermediate/rampmatrix.dif"; + showTerrainInside = "0"; + }; + new Trigger(Bounds) { + position = "-43 35 -19"; + rotation = "1 0 0 0"; + scale = "86 70 90"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "-32 -16 -6"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-32 -8 -6"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-32 8 -6"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-32 16 -6"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "32 16 -6"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "32 8 -6"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "32 -8 -6"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "32 -16 -6"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Item() { + position = "16 -14 -5.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 26 -8.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 -26 -8.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 -24 -8.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 8 -14.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 24 -8.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -8 -14.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 14 -5.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 0 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 0 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 16 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -16 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 0 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-0.46 -20.53 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 -24 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 -24 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 24 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 24 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.28 18.53 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.42 -3.27 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.68 2.04 -0.61"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2.46 -9.77 -2.14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9.14 3.03 -1.9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18.75 4.88 -3.32"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18.92 -10.82 -5.54"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9.45 -13.78 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.09 13.73 -3.38"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6.49 17.73 -3.9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 0.1 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18.84 7.88 -4.43"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19.03 -15.78 -10.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7.7 26.26 -10.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10.45 22.43 -9.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-0.07 17.68 -12.84"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.06 17.56 -9.9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17.24 14.45 -11.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14.92 -18.5 -9.53"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6.56 -21.48 -11.02"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11.05 -27.06 -9.35"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.57 9.5 -15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2.45 -9.94 -15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.32 -5.25 -15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18.72 -10.05 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15.13 9.34 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19.11 4.91 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13.99 -7.87 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 0 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 16 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 -16 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 0 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.8 8.74 -1.76"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14.5 -18 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 18 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.56 -18.08 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 -10 -14.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 5.75 -15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 24 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -24 -12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 0 -15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Marker(Glassy) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Pianoforte.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/beginner/Sprawl.jpg b/data/multiplayer/hunt/beginner/Sprawl.jpg new file mode 100644 index 00000000..b393bd88 Binary files /dev/null and b/data/multiplayer/hunt/beginner/Sprawl.jpg differ diff --git a/data/multiplayer/hunt/beginner/Sprawl.mis b/data/multiplayer/hunt/beginner/Sprawl.mis new file mode 100644 index 00000000..d5dee084 --- /dev/null +++ b/data/multiplayer/hunt/beginner/Sprawl.mis @@ -0,0 +1,2271 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + name = "Sprawl"; + type = "Beginner"; + level = "6"; + desc = "Collect the gems in this classic Marble Blast level."; + artist = "Alex Swanson"; + music = "Tim Trance.ogg"; + gameMode = "Hunt"; + game = "Ultra"; + time = "300000"; + MaxGemsPerSpawn = "7"; + RadiusFromGem = "20"; + score[0] = "60"; + score[1] = "120"; + platinumScore[0] = "110"; + platinumScore[1] = "190"; + ultimateScore[0] = "165"; + ultimateScore[1] = "250"; + alarmStartTime = "25"; + overviewHeight = "15"; + glassCenter = "Glassy"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.573201 0.275357 -0.771764"; + color = "1.080000 1.030000 0.900000 1.000000"; + ambient = "0.400000 0.400000 0.500000 1.000000"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/Sprawl.dif"; + showTerrainInside = "0"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "Clear"; + }; + new SimGroup(GemSpawns) { + + new Item() { + position = "-2.96521 -15.0494 0.0286771"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.94457 -6.00843 2.04104"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-58.7792 -76.7685 5.74756"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-46.8487 40.8693 3.92232"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44.8863 38.8983 6.01243"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46.808 -70.8133 3.69901"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.9219 -74.9767 6.02883"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15.1353 11.1683 0.0121482"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16.9992 46.8128 2.00111"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14.6526 35.4148 2.03049"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20.889 -63.1549 6.0047"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22.8795 -57.2005 6.00842"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2.8273 -74.7821 6.03562"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27.098 -33.1002 6.01597"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.875 -44.9148 6.01806"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "50.92 -27.111 2.00796"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45.0653 2.85532 6.02157"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40.915 6.80653 6.03481"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "50.8055 32.8344 4.01634"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27.1098 43.1175 2.0149"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "37 -65 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 -61 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -51 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "37 -49 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 -65 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "37 -51 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 -49 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 -49 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 -63 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "37 -61 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 -51 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -49 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 -29 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51 -33 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51 -35 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53 -31 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49 -33 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53 -33 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51 -31 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49 -37 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 -29 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49 -29 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49 -31 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 33 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 35 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 35 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 31 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 37 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "59 13 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "61 13 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "61 17 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "55 13 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "59 11 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "63 15 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "61 19 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "57 13 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "57 17 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "59 15 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "55 15 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "61 15 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 -47 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 -43 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "41 -45 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 -45 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "55 17 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "59 17 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "57 15 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 33 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 39 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 37 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 35 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 35 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 33 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 33 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 35 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 33 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23 -17 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 -19 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 -15 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23 -19 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 -17 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23 -15 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 35 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 -23 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 17 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 -21 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 13 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 -19 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 15 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 -17 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 -19 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 -21 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 17 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 -23 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 17 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 -33 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-43 -33 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 -35 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 -31 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 -33 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 -21 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41 29 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 -17 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -15 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39 31 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37 33 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 35 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35 35 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 -31 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 -33 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 -31 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 -33 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 -35 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 -31 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -17 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 -61 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 -59 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 -63 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 -59 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 -63 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 -61 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 -59 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 -59 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 -63 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 -59 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 -59 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 -63 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 -61 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 -61 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 -61 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49 -67 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51 -63 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53 -61 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49 -61 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 -63 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49 -63 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 -61 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49 -65 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41 31 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 -15 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -13 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -19 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37 35 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35 33 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37 31 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39 29 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 35 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53 -63 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51 -65 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 -61 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "52.9113 14.9113 4.03145"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "54.9907 19.026 4.02018"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "50.9925 16.9913 4.03417"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10.9301 28.9051 4.0005"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7.09894 26.9601 4.02198"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.0602 37.0227 4.03096"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33.0365 17.1011 2.03556"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35.0647 20.9249 2.05956"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37.0616 18.8037 2.05671"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41.022 -37.1052 0.0173963"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38.9795 -52.9191 0.0200398"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-50.9905 -59.163 2.03003"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49.1873 -56.9214 2.01198"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-55.0492 -52.9127 2.04634"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.14393 -52.9598 4.06144"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7.06355 -51.0825 4.02074"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9.07069 -69.0022 4.03088"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13.0592 -67.1167 4.01648"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "37.1124 -40.9255 2.07825"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "41.009 -38.9692 2.04297"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16.9227 -15.0778 0.0244732"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14.9327 -19.0988 0.038113"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31.1497 -23.1609 4.02841"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42.9562 -15.006 2.02574"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39.0285 -2.87853 2.01249"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42.9745 -0.876734 2.05317"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10.9146 -16.9573 0.00785819"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13.0903 -24.9631 2.02956"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17.0217 -27.0725 2.04253"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(SpawnPoints) { + + new Trigger() { + position = "-3 9 3"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "33 3 5"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-5 -15 1"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-27 -3 7"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "27 27 7"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-27 -51 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "3 -39 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "51 -15 6.2"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + }; + new SimGroup(Gyrocopter) { + + new Item() { + position = "3 -9 1.734"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 -69 1.734"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-56.9671 -63.0662 3.734"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26.8741 27 2.81968"; + rotation = "0 1 0 17.7617"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 21 5.734"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 15 5.734"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27.0095 -62.9259 5.734"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 -45 5.734"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -75 5.734"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.8 51 1.734"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(Rockets) { + + new Item() { + position = "-51 -27 2.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 -39 2.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 15 2.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 39 2.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 -27 4.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 -51 0.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39 8.8 2.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51.037 -15.0393 0.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32.9725 -57.1062 2.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.0758 -52.9202 3.83049"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.93187 50.9896 2.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(Springs) { + + new Item() { + position = "-3 -75 4.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "43.0073 12.8526 4.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 9 2.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 -3 0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 17 1.92"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -3 2.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 -39 0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "51 -3 2.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 45 2.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-54 -49 2.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(UltraBlast) { + + new Item() { + position = "3.18427 -26.9022 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25.0002 -49.0463 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45.2402 -56.7868 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45.1178 20.9234 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "57 27 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(BigBallsOfDoom) { + + new Item() { + position = "-39 -45 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 -21 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 15 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27.2 -39 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15.2 27 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 -69 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 39 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27.0499 -11.0159 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new InteriorInstance() { + position = "17.5 -42.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_3_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "23.5 -59.5 5.5"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_3_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "23.5 -48.5 5.5"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_3_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "6.5 -42.5 5.5"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_3_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "18.5 -23.5 5.5"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_3_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "18.5 -12.5 5.5"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_3_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-0.5 12.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_3_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-6.5 6.5 5.5"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_3_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-12.5 -17.5 5.5"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_3_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-12.5 -6.5 5.5"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_3_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-11.5 6.5 5.5"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_3_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-11.5 17.5 5.5"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_3_normal.dif"; + showTerrainInside = "0"; + }; + new Marker(Glassy) { + position = "6 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + }; + new Trigger(Bounds) { + position = "-63 57 -5.5"; + rotation = "1 0 0 0"; + scale = "132 138 1000"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Flanked.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/beginner/TripleDecker_Hunt.jpg b/data/multiplayer/hunt/beginner/TripleDecker_Hunt.jpg new file mode 100644 index 00000000..43132f6e Binary files /dev/null and b/data/multiplayer/hunt/beginner/TripleDecker_Hunt.jpg differ diff --git a/data/multiplayer/hunt/beginner/TripleDecker_Hunt.mis b/data/multiplayer/hunt/beginner/TripleDecker_Hunt.mis new file mode 100644 index 00000000..d81eaebd --- /dev/null +++ b/data/multiplayer/hunt/beginner/TripleDecker_Hunt.mis @@ -0,0 +1,1457 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + maxGemsPerSpawn = "7"; + name = "Triple Decker"; + level = "4"; + game = "Platinum"; + time = "240000"; + glassCenter = "glassCenter"; + music = "Grudge.ogg"; + gameMode = "Hunt"; + alarmStartTime = "20"; + radiusFromGem = "10"; + type = "Beginner"; + score[0] = "25"; + score[1] = "50"; + platinumScore[0] = "70"; + platinumScore[1] = "120"; + ultimateScore[0] = "140"; + ultimateScore[1] = "200"; + artist = "Phil"; + desc = "Go around the 3 story building, collecting the gems!"; + overviewHeight = "5"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.638261 0.459006 -0.61801"; + color = "1.400000 1.200000 0.400000 1.000000"; + ambient = "0.300000 0.300000 0.400000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "Dusk"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbp/mbp-online_tripledecker.dif"; + showTerrainInside = "0"; + }; + new Item() { + position = "-9 -9 5.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger(Bounds) { + position = "-36.8 43 -3"; + rotation = "1 0 0 0"; + scale = "60 70 1000"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Item() { + position = "-8 8 6.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new StaticShape() { + position = "-4 3.7 1"; + rotation = "0 0 -1 55"; + scale = "1 1 1"; + dataBlock = "SignDownSide"; + }; + new StaticShape() { + position = "-12.2 12.2 1"; + rotation = "0 0 1 125"; + scale = "1 1 1"; + dataBlock = "SignDownSide"; + }; + new StaticShape() { + position = "-10.946 24.616 4.4"; + rotation = "1 0 0 9.99997"; + scale = "1 1 1"; + dataBlock = "SignSide"; + }; + new StaticShape() { + position = "-15.7401 8.1014 5.02"; + rotation = "0.586249 0.803252 -0.10535 180"; + scale = "1 1 1"; + dataBlock = "SignSide"; + }; + new StaticShape() { + position = "-0.986827 7.96786 5.02"; + rotation = "-0.586249 0.803252 0.10535 180"; + scale = "1 1 1"; + dataBlock = "SignSide"; + }; + new StaticShape() { + position = "-8 5 10.1"; + rotation = "1 0 0 150"; + scale = "1 1 1"; + dataBlock = "SignSide"; + }; + new StaticShape() { + position = "-9 -9 4.4"; + rotation = "1 0 0 25"; + scale = "1 1 1"; + dataBlock = "SignUpSide"; + }; + new SimGroup(NewVersion) { + new SimGroup(GemGroup0) { + + new Item() { + position = "-11 -15 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 -18 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 -11 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 -7 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7.06386 -3.03214 1.05087"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 2 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.5 7 -0.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10.8 9 0.15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 13 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 17 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9.5 22.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 25 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 35 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 34 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 31 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(GemGroup1) { + + new Item() { + position = "8 -7 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 3 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 -7 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 -2 4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 23 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 19 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 23 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 18 4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24.8 15 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 23 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 23 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 18 4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 -1 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 -7 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 -7 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 -2 4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.25 11 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 8 6.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 2 6.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14.75 5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 11 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 15 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 14 6.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(GemGroup2) { + + new Item() { + position = "2 0 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 1 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 1 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 3 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 8 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 13 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 18 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 11 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 18 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 11 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 13 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 16 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 8 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 3 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 0 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 5 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 1 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + }; + new SimGroup(OldVersion) { + new Item() { + position = "-8 2 6.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.5 7 -0.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 17 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 18 4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 1 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 5 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 15 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 11 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 -2 4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 -2 4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 18 4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 14 6.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 8 6.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 8 6.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 2 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 3 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 -2 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 -2 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 18 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 18 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 13 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 13 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 3 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 1 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 3 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 15 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 11 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 8 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.5 -0.5 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 3 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 13 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 18 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 8 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16.5 16.5 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 -7 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 23 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 23 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 -7 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 23 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 -7 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 -1 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24.8 15 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 23 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 21 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 19 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 3 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 -5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -7 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 -7 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 23 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 15 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 11 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.25 11 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14.75 5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 31 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 -7 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 27.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 34 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 -18 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 -15 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 -11 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7.06386 -3.03214 1.05087"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 13 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10.8 9 0.15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.5 17 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9.5 22.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 35 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new Item() { + position = "-29.75 25.75 5.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.75 -9.75 5.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10.95 25 5.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "9.5 8.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-26.5 8.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-8.5 22.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-8.5 -5.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-8.5 28.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-8.5 -13.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-8.5 18.5 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-8.5 -1.5 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-3 8.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-14.5 8.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Item() { + position = "13.5 25.5 5.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.5 -9.5 5.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 16 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11.2 5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 15 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 0 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 8 -1.9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Comforting Mystery.ogg"; + description = "AudioMusic"; + preload = "0"; + }; + new Marker(glassCenter) { + position = "-8 8 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "0"; + msToNext = "1000"; + smoothingType = "Linear"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/beginner/Triumvirate.jpg b/data/multiplayer/hunt/beginner/Triumvirate.jpg new file mode 100644 index 00000000..aa46f6f7 Binary files /dev/null and b/data/multiplayer/hunt/beginner/Triumvirate.jpg differ diff --git a/data/multiplayer/hunt/beginner/Triumvirate.mis b/data/multiplayer/hunt/beginner/Triumvirate.mis new file mode 100644 index 00000000..1ff8042c --- /dev/null +++ b/data/multiplayer/hunt/beginner/Triumvirate.mis @@ -0,0 +1,2897 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + game = "Ultra"; + gameMode = "Hunt"; + time = "300000"; + music = "Tim Trance.ogg"; + name = "Triumvirate"; + radiusFromGem = "25"; + level = "13"; + desc = "Navigation skills are required if you want to master your pathway to the top."; + artist = "Alex Swanson"; + maxGemsPerSpawn = "6"; + type = "Beginner"; + alarmStartTime = "25"; + overviewHeight = "-65"; + score[0] = "30"; + score[1] = "35"; + platinumScore[0] = "60"; + platinumScore[1] = "75"; + ultimateScore[0] = "90"; + ultimateScore[1] = "115"; + glassCenter = "Glassy"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.573201 0.275357 -0.771764"; + color = "1.080000 1.030000 0.900000 1.000000"; + ambient = "0.400000 0.400000 0.500000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "Clear"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/Triumvirate.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-15.5 -15.5 -1.5"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-15.5 -8.5 -1.5"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-15.5 -15.5 2.5"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-3.5 -11.5 8.5"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "3.5 -11.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-15.5 -8.5 2.5"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-11.5 11.5 4.5"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "3.5 11.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-11.5 11.5 0.5"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new Item() { + position = "27 12 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "56 -59 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new InteriorInstance() { + position = "4.5 3.5 31"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-4.5 3.5 31"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-3.5 4.5 31"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-3.5 -4.5 31"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-4.5 -3.5 31"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "4.5 -3.5 31"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "3.5 -4.5 31"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "3.5 4.5 31"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new SimGroup(GemSpawns) { + + new Item() { + position = "-1.5 3 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10.5 -4.5 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 4 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 9.5 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.5 -3 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27.5 -40.5 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 -50 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35.5 -51.5 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42.5 -49.5 19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 -42 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "51.5 -55 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48 -63 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "51.5 -77 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44 -82.5 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "52 -92.5 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "47 -99 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40.5 -94.5 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31 -97 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19.5 -94.5 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.5 -97 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10.5 -91 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19.5 -85 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17.5 -73.5 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21.5 -62.5 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 -64.5 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-0.5 -72 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 -86.5 9.41702"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 -82.5 27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 -78.5 28"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-34 -78.5 29"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-48 -69 29"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57.5 -51.5 29"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-58 -39.5 27.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-58 -25 25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-50 -30 23.228"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39.5 -26.5 19.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32 -17 19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 -11.5 19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32 2.5 19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40.5 -1.5 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51 4.5 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-42.5 11.5 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31.5 11 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 10 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 14 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10.5 2 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12.5 -10.5 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -11.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20.5 -14.5 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-61.5 -0.5 12.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-81 0.5 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-72 -9 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-60.5 -6.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47.5 -8.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-50.5 -26.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35.5 -26.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 -22.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -7 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 -21.5 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-60 -21 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-56.5 -7 25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-48.5 -11.5 25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-55.5 -62.5 29"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-68 -60 27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-60 -61.5 37.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-58 -67 37.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 -95.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10.5 -94.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 -91 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 -80.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 -69.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.5 -71 -0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 -73.5 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7.5 -54.5 -7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 -78.5 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 -82.5 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32.5 -72.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.5 -83 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38.5 -75.5 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-68 -85.5 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-78.5 -81 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-58.5 -74 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-78 -60.5 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-58.5 -67 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-58.5 -54.5 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-72.5 -50.5 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-44.5 -39.5 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45.5 -27.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45.5 -17.5 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-55 -4.5 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47.5 2.5 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28.5 0 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 -9 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-43 -36 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-54 -28 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-59.5 -42 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 -64 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-44.5 -74 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-63 -74 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-68 -61.5 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-60.5 -64 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-55 -64.5 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-44 -62.5 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-44 -54 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-58 -50.5 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-68.5 -53 25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 -65.5 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-46 -51 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-54.5 -79 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17.5 -85.5 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10.5 -97.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 -93.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36 -99 25.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "38 -93 25.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34 -31 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 -16 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25.5 -39 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 -48 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28.5 -59.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 -69 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36 -78.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28 -90 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23.5 -99.5 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34.5 -96 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "43 -106 -0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31.5 -107 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24.5 -96 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32.5 -50.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 -58.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "53 -48 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "58.5 -39.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "58.5 -39.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44 -32 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36.5 -4 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18.5 0.5 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.5 0.5 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.5 2.5 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 10 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 -23 -5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20 -10 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28 -17 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27.5 -33 -8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36.5 -29.5 -5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46.5 -34 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40.5 -52.5 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48.5 -62.5 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48.5 -75.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "50.5 -86.5 1.65"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "54 -95.5 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15.6192 -33.041 -8.9693"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9.21957 -37.3763 -8.99757"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14.1064 -45.6822 -8.97859"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23.329 -44.0758 -8.95189"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19.4513 -42.2098 -8.85285"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10.2487 -42.8195 -9.00229"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6.5625 -37.7549 -8.87305"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-0.354931 -38.3338 -8.92579"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.00795 -33.0767 -8.95968"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.45921 -44.5768 -8.84412"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19.9993 -69.6618 -8.96569"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22.527 -63.899 -8.98442"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25.5553 -37.2159 -8.97069"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21.9207 -49.7964 -8.98849"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12.0122 -53.1102 -8.94201"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.69594 -53.8626 -8.96842"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "57 -82.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "58.5 -71 7.30572"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48 -42.5 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49 -1 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36 -20.5 7.89095"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.5 2.5 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.5 12 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 -18.5 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45.5 -16 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -17 18.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22.5 -15 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4.5 -17 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8.5 -11.5 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14.5 -14.5 19.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2.5 -2.5 31.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2.5 3 31.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new InteriorInstance() { + position = "3.5 11.5 -11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "3.5 11.5 -7.5"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "3.5 11.5 8.5"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-3.5 -7 15"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-3.5 7 15"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "3.5 -7 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "3.5 7 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "11.5 11.5 18.5"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-3.5 11.5 22.5"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "11.5 11.5 14.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_8_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-65.5 -48.5 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-34.5 -87.5 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_8_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-81.5 -87.5 -3.5"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_8_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-42.5 -79.5 4.5"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-49.5 -79.5 4.5"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-42.5 -79.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-46.5 -67.5 14.5"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-46.5 -60.5 14.5"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-49.5 -79.5 8.5"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-69.5 -75.5 10.5"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-69.5 -60.5 6.5"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-69.5 -75.5 6.5"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-42.5 -48.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-65.5 -48.5 2.5"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-61.5 -59.5 37"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-61.5 -68.5 37"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-62.5 -67.5 37"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-53.5 -67.5 37"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-54.5 -68.5 37"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-54.5 -59.5 37"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-53.5 -60.5 37"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-62.5 -60.5 37"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new Item() { + position = "-59 -28 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new InteriorInstance() { + position = "-34.5 -87.5 -19.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-81.5 -87.5 -19.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-69.5 -60.5 -5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-69.5 -60.5 -1.5"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-69.5 -60.5 14.5"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-51 -67.5 21"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-65 -67.5 21"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-51 -60.5 21"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-65 -60.5 21"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-69.5 -52.5 24.5"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-69.5 -67.5 28.5"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-69.5 -52.5 20.5"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_8_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "22.5 -111.5 -7.5"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "29.5 -111.5 -7.5"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_4_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "22.5 -111.5 -3.5"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "26.5 -99.5 2.5"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "26.5 -92.5 2.5"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "29.5 -111.5 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new Trigger(Bounds) { + position = "-87.5 21.5 -10.898"; + rotation = "1 0 0 0"; + scale = "153 139 1000"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new InteriorInstance() { + position = "33.5 -92.5 25"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "42.5 -92.5 25"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "41.5 -91.5 25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "41.5 -100.5 25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "42.5 -99.5 25"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "33.5 -99.5 25"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "34.5 -100.5 25"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "34.5 -91.5 25"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new Item() { + position = "-11 -71.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new InteriorInstance() { + position = "31 -99.5 9"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "45 -99.5 9"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "31 -92.5 9"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "45 -92.5 9"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_corner.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "49.5 -84.5 12.5"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "49.5 -99.5 16.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_2_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "49.5 -84.5 8.5"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_8_normal.dif"; + showTerrainInside = "0"; + }; + new SimGroup(SpawnPoints) { + + new Trigger() { + position = "18.5 -64.5 -5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "20 -27.5 -5.5"; + rotation = "0 0 1 195.952"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-1 -29 -5.5"; + rotation = "0 0 1 180.482"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-18.5 -33 -5.5"; + rotation = "0 0 1 128.915"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-35 -46.5 -5.5"; + rotation = "0 0 1 62.4524"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-16 -57.5 -5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "1 -58 -5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "2.64825e-007 -10.5 25.5"; + rotation = "0 0 1 180.482"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "47.378 -95.6791 5.49658"; + rotation = "0 0 -1 90.5273"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "27.5 -96 20"; + rotation = "0 0 -1 89.9544"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-48 -78 31"; + rotation = "0 0 1 49.2744"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-67.0332 -65.6457 18"; + rotation = "0 0 1 89.9544"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-80 -85 0.5"; + rotation = "0 0 1 46.9825"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "13.7932 13.2416 0.5"; + rotation = "0 0 1 180.664"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "2.08616e-007 9.5 12.7981"; + rotation = "0 0 1 182.774"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + }; + new Item() { + position = "-1.5 0.125 22.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32 -30.375 18.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57 -9.875 6.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 -8.875 -1.267"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48 -10 0.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.5 -65 12.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19.5 -95 4.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -82 -3.267"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 -56 9.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "50.5 -42 16.766"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.5 0.125 8.766"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 0.125 -6.667"; + rotation = "0 1 0 25"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36.625 -96.375 16.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39.125 -96.375 2.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57.125 -63.375 28.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57.125 -64.375 14.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57.125 -64.875 -0.577"; + rotation = "-1 0 0 25"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27.5958 -47.2968 -9.267"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-78 -4 11.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new InteriorInstance() { + position = "29.5 -111.5 -15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new Item() { + position = "-11 -13 3.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40.1085 -10.718 -8.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36.069 -42.251 -8.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35.9186 -69.0434 -8.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10.1668 -81.8818 -8.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-52.5 -74 9.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-76.5 -84 -2.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-46.5 -92.5 13.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.5 -95 17.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28 -80 5.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "58 -94.5 3.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "58 -30 9.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36 2 3.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.93075 -26.5746 -8.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-58 -64 37.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 0 31.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "38 -96 25.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-78.5 -51.5 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-54.5 -83 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 -110.5 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new InteriorInstance() { + position = "22.5 -111.5 -15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new Item() { + position = "-21.9877 -28.1012 7.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25.9006 11.4372 10.766"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27.6086 -42.0608 -9.267"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9.77132 -71.8047 -9.267"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32.1241 -18.1499 -9.267"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23.3483 -57.6483 -8.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20.8045 -25.0526 -8.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14.6851 5.06634 -8.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Marker(Glassy) { + position = "-8 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Comforting Mystery.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/custom/Apex.jpg b/data/multiplayer/hunt/custom/Apex.jpg new file mode 100644 index 00000000..e65e3161 Binary files /dev/null and b/data/multiplayer/hunt/custom/Apex.jpg differ diff --git a/data/multiplayer/hunt/custom/Apex.mis b/data/multiplayer/hunt/custom/Apex.mis new file mode 100644 index 00000000..d1a7871c --- /dev/null +++ b/data/multiplayer/hunt/custom/Apex.mis @@ -0,0 +1,3029 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + desc = "Roll through the colorful grounds while collecting the gems."; + level = "2"; + name = "Apex"; + artist = "Trace"; + music = "Astrolabe.ogg"; + type = "custom"; + Gamemode = "Hunt"; + game = "Platinum"; + time = "300000"; + MaxGemsPerSpawn = "7"; + RadiusFromGem = "15"; + score[0] = "40"; + score[1] = "70"; + platinumScore[0] = "100"; + platinumScore[1] = "135"; + ultimateScore[0] = "175"; + ultimateScore[1] = "225"; + alarmStartTime = "25"; + overviewHeight = "7"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "500"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.638261 0.459006 -0.61801"; + color = "1.400000 1.200000 0.400000 1.000000"; + ambient = "0.300000 0.300000 0.400000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "Dusk"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/custom/Apex.dif"; + showTerrainInside = "0"; + }; + new Trigger() { + position = "-112.5 65 -8"; + rotation = "1 0 0 0"; + scale = "135 130 1000"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new SimGroup(SpawnPoints) { + + new Trigger() { + position = "-46 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1.5"; + }; + new Trigger() { + position = "1.49981 -9.5031 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1.5"; + }; + new Trigger() { + position = "-9.5 23.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1.5"; + }; + new Trigger() { + position = "-43.5012 25.5008 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1.5"; + }; + new Trigger() { + position = "-61.5 43.5 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1.5"; + }; + new Trigger() { + position = "-97.5 21.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1.5"; + }; + new Trigger() { + position = "-93.5 47.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1.5"; + }; + new Trigger() { + position = "-81.5 -8.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1.5"; + }; + new Trigger() { + position = "-97.5 -2.5 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1.5"; + }; + new Trigger() { + position = "-83.5 -30.59 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1.5"; + }; + new Trigger() { + position = "-78.5 -43.5 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1.5"; + }; + new Trigger() { + position = "-48.5 -47.5 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1.5"; + }; + new Trigger() { + position = "4.5 -42.5 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1.5"; + }; + new Trigger() { + position = "-5.5 -53.5 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1.5"; + }; + new Trigger() { + position = "0.5 -28.5 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1.5"; + }; + new Trigger() { + position = "-8.5 0.5 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1.5"; + }; + new Trigger() { + position = "-62.5 10.5 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1.5"; + }; + new Trigger() { + position = "-62.5 -21.5 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1.5"; + }; + new Trigger() { + position = "-62.5 25.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1.5"; + }; + new Trigger() { + position = "-71.5 25.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1.5"; + }; + new Trigger() { + position = "-58.5 -25.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1.5"; + }; + new Trigger() { + position = "-16.5 -49.5 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1.5"; + }; + new Trigger() { + position = "-23.5 -22.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1.5"; + }; + new Trigger() { + position = "-62.5 -0.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1.5"; + }; + new Trigger() { + position = "-62.5 -12.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1.5"; + }; + new Trigger() { + position = "-40.5 11.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1.5"; + }; + new Trigger() { + position = "0.5 13.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1.5"; + }; + new Trigger() { + position = "-36.5 50.5 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1.5"; + }; + new Trigger() { + position = "-16.5 50.5 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1.5"; + }; + new Trigger() { + position = "-79.5 7.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1.5"; + }; + new Trigger() { + position = "-23.5 -10.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 1.5"; + }; + }; + new SimGroup(GemSpawns) { + + new Item() { + position = "1 1 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 -1 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 1 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 -47 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 -51 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 -47 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 -43 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 -43 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 -39 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 -39 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 -17 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 -15 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -15 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 -21 -0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 -19 -0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-91 35 -0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 -23 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 -23 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 -9 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -5 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 1 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 13 4.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 11 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 25 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 13 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-43 -21 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 -5 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-36 -4 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30 -6 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 -25 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49 -25 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53 -23 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 -27 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-43 -31 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2.5 20 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 20 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2.5 23 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 29 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 23 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-69 25 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26 24 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 27 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26 31.5 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 34 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 43.5 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 43 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24.5 41.5 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37.5 42 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 -44 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-63 -27 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-65 -29 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-89 39 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-61 -31 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-63 -33 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-65 -11 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-65 -7 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-62 -7 -0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-63 -3 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-60 -7 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75 -44 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-77 -48 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-81 -45 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-79 -48 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-95 -51 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 44.5 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2.5 -3 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 11 6.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35 -19 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 -15 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-93 -31 -4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-89 -28.9375 -4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 -25 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 19 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-73 -24 -3.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-91 -11 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-89 -3 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-95 -3 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-93 -9 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-91 -5 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-81 38 -0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-80 45 -0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-77 41 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-60 27 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-55 23 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 21 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-65 25 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-63 23 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-60 23 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-63 27 -0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-62 25 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-61 15 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 -17 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-59 -37 -1.325"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 0 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-81 -29 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 11 4.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 -23 5.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-62 -7 4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 -55 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 -1 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 4.6 -0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 7 -0.575"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 -16 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 -12.75 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11.2 -29.2 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15.1 -27 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15.25 -29 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 -23 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 -8.8 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 -1.2 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-42.6 -2.8 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39 -17 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 -3 -0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 11 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 9 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 11 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 19 3.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.75 13.65 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 21.25 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-34 -28 2.48423"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 -57.5 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 -42 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 -33 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 -53 -2.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.2 -35 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 -55 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 -54 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9.2 -47.2 -4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 -46 -3.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 -37.65 -4.1875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8.15 -39.4 -4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.3 -48.8 -4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 17 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-42.9515 43.6858 -4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7.75 40.45 -4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11.0757 53.2204 -1.18726"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.1861 42.7047 -1.44131"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16.2 43.5 -4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31.4678 36.129 -3.35858"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-48.8824 52.8885 -1.3947"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25.0533 17.8178 -4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-34 33 8.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 33 8.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32.2425 24.0888 -1.97521"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19.4193 29.3472 -2.94459"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-79 41 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-91 41 1.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-95 35 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-93 33 -0.907388"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-87 41 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-87 37 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-93 37 -0.950001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-95 41 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-80 22 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-95 25 0.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-87 21 -0.949999"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-77 11 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-81 13 -0.949999"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 5 -0.283336"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-92 4 -0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-81 -1 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-97 -15 0.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-87 -15 0.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-97 -7 0.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-81 -27 -4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-95 -29 -4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-95 -33 -4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-97 -31 -4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-90 -27 -2.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-87 -33 -2.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-85 -31 -2.44999"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-87 -31 -4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75.75 -33.25 -4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-80 -24 -3.28333"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-81 -35.75 -4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-91 -35 -4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75 -29 -2.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-79 -33 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-59 29 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49 25 -0.949998"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 31 -0.949999"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-73 27 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-60 16.5 -0.450001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-65 15 0.049999"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57 -45 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57 -45 0.550003"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-54.5 -48.45 0.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-60.5 -47.3 0.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53.5 -42.5 0.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-59.45 -41.5 0.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51 -51 1.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53 -37 1.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 -46 1.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-68.9948 -49.001 -0.699991"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-59 -51 0.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 -37.75 -2.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 -49.2 -2.94999"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.8 -41 -4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.75 -41.4 -4.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 -31 -2.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39 -37 0.549999"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 -12.001 -0.949998"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -16 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 -16 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-65 15 -2.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-65 27 -4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-59 29 -4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-59 19 -2.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-65 19 -4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-62 6 -4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-58.5 -14.5 -4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-65.5 0.5 -4.45001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-61.0002 -10.9978 -4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-65 -29 -2.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-59 -31 -4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-59 -27 -4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-69.0006 -37.0027 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 -25 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-59 -21 3.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-55 -31 0.550001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51 -29 3.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37 -23 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39 -29 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 -33 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 9 4.55001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 5 4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13.5 13.25 4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51 5 -0.949999"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-55 9 5.55001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51 15 5.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-61 19 5.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-67 7 5.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-69 13 5.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-72.9981 10.9994 5.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75 27 5.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 33 5.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-69 37 5.14137"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-55 33 5.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 33 5.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 -24.25 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 -24.25 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-97 -51 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-95 -53 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-73 -31 -4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-73 -27 -4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-77 -29 -4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-79 -33 -4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-81 -31 -4.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new Item() { + position = "-39 27 -0.3225"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-79 35 -0.8225"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-77 -7 -0.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26 -34 -2.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-83 -49 -1.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-55 35 1.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-93 -24 -3.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 -7 -0.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 27 -0.3225"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -12 0.1775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51 27 5.6775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 -5 -0.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16.0288 49.8541 -3.1"; + rotation = "-1 0 0 35.5234"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-62 22 -4.313"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-62 -26 -4.313"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-92.125 14.125 -0.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-36.0288 49.8541 -3.1"; + rotation = "-1 0 0 35.5234"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-100.99 46.9891 -0.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 -21 -0.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-103 -7 17.845"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperBounceItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 -53 -3.26657"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 33 7.73343"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-97 -53 1.73343"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-65 45 0.233427"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-65 -31 2.23343"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 -25 0.500503"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-74 36 5.00051"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 33 8.5005"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35 -7 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-106 52 17.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-102 -58 17.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 -60 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 60 20.4766"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-55 25 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 13 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 22 -1.01578"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75 -17 -1.01578"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-77 -33 -2.51577"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-67.25 -35 7.98422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49 -43 0.984218"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-62 8 2.31756"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-43 21 -1.01578"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 53 -1.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-87 33 0.984231"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-91 21 -0.515778"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 -6 3.98422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.4 52.6 -1.64078"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Pianoforte.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/custom/Daedalus_Hunt.jpg b/data/multiplayer/hunt/custom/Daedalus_Hunt.jpg new file mode 100644 index 00000000..a13e5490 Binary files /dev/null and b/data/multiplayer/hunt/custom/Daedalus_Hunt.jpg differ diff --git a/data/multiplayer/hunt/custom/Daedalus_Hunt.mis b/data/multiplayer/hunt/custom/Daedalus_Hunt.mis new file mode 100644 index 00000000..aa314ff5 --- /dev/null +++ b/data/multiplayer/hunt/custom/Daedalus_Hunt.mis @@ -0,0 +1,854 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + level = "4"; + name = "Daedalus"; + desc = "Find the gems and escape this labyrinth!"; + music = "Classic Vibe.ogg"; + artist = "Alex Swanson"; + game = "Gold"; + gameMode = "hunt"; + radiusFromGem = "15"; + time = "240000"; + maxGemsPerSpawn = "5"; + alarmStartTime = "20"; + type = "Advanced"; + overviewHeight = "5"; + score[0] = "15"; + score[1] = "40"; + platinumScore[0] = "40"; + platinumScore[1] = "90"; + ultimateScore[0] = "70"; + ultimateScore[1] = "125"; + }; + new Item() { + position = "-1 27 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new InteriorInstance() { + position = "31.5 39.5 20"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbg/addon/arch_blue.dif"; + showTerrainInside = "0"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.638261 0.459006 -0.61801"; + color = "1.400000 1.200000 0.400000 1.000000"; + ambient = "0.300000 0.300000 0.400000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "Clear"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbg/addon/daedalus1.dif"; + showTerrainInside = "0"; + }; + new Trigger() { + position = "6.5 19.5 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new InteriorInstance() { + position = "-4.5 22.5 20"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbg/addon/arch_blue.dif"; + showTerrainInside = "0"; + }; + new Item() { + position = "7 17 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 37 18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 11 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 1 18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new InteriorInstance() { + position = "5.5 18.5 12"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbg/addon/arch_blue.dif"; + showTerrainInside = "0"; + }; + new Item() { + position = "-2.93406 7.18739 16.2059"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 41 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new InteriorInstance() { + position = "31.5 31.5 20"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbg/addon/arch_blue.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "30 35.5 20"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbg/addon/arch_blue.dif"; + showTerrainInside = "0"; + }; + new Trigger(Bounds) { + position = "-46.5 70.5 5.5"; + rotation = "1 0 0 0"; + scale = "101 91.0625 1000"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbg/addon/daedalus2.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-4.5 20 20"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbg/addon/arch_blue.dif"; + showTerrainInside = "0"; + }; + new Trigger() { + position = "-1.5 1.5 18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "26.5 17.5 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new InteriorInstance() { + position = "15.5 14.5 14"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbg/addon/arch_blue.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "15.5 4 14"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbg/addon/arch_blue.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-14.5 24.5 16"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbg/addon/arch_blue.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-14.5 30 16"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbg/addon/arch_blue.dif"; + showTerrainInside = "0"; + }; + new Trigger() { + position = "-25.5 11.5 20"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new InteriorInstance() { + position = "-12.5 4 18"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbg/addon/arch_blue.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "9.5 40 16"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbg/addon/arch_blue.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "15.5 40 16"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbg/addon/arch_blue.dif"; + showTerrainInside = "0"; + }; + new Item() { + position = "-1 7 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new InteriorInstance() { + position = "5.5 44.5 6"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbg/addon/arch_green.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-10.5 29.5 24"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbg/addon/arch_blue.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-24 9.5 20"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbg/addon/arch_blue.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-24 15.5 20"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbg/addon/arch_blue.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "0 -0.5 18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbg/addon/arch_red.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "3.5 -0.5 18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbg/addon/arch_red.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "3.5 35.5 28"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbg/addon/arch_red.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "0 35.5 28"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbg/addon/arch_red.dif"; + showTerrainInside = "0"; + }; + new Item() { + position = "16.9536 1.06171 13.7973"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new InteriorInstance() { + position = "-10.5 35.5 24"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbg/addon/arch_blue.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "20 35.5 24"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbg/addon/arch_blue.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "5.5 36.5 8"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbg/addon/arch_green.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "15.5 25.5 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbg/addon/arch_blue.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-2 25.5 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbg/addon/arch_blue.dif"; + showTerrainInside = "0"; + }; + new Trigger() { + position = "9.5 48.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "10.5 41.5 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "32.5 41.5 20"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Item() { + position = "-1 37 28"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "-3.5 31.5 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Item() { + position = "-12 27 20"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 31 24"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 37 24"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 37 28"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 37 24"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 37 20"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 33 20"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 33 20"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 25 18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 17 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 27 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 9 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 21 20"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 1 18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 1 18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 9 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 11 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 14 20"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 17 18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 17 18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 25 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 27 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 29 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 37 18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "-15.5 37.5 18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Item() { + position = "-17 27 20"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 17 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 21 20"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 9 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 7 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 9 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 37 28"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29 41 20"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 41 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 39 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 31 18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 31 18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 33 18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 31 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 29 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 1 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 27 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 37 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 45 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 49 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 49 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 47 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Comforting Mystery.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/custom/ExampleMission.mis b/data/multiplayer/hunt/custom/ExampleMission.mis new file mode 100644 index 00000000..ca617d39 --- /dev/null +++ b/data/multiplayer/hunt/custom/ExampleMission.mis @@ -0,0 +1,524 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + level = "1"; + type = "Custom"; + gameMode = "Hunt"; + game = "Custom"; + time = "180000"; + ultimatescore0 = "0"; + maxGemsPerSpawn = "6"; + startHelpText = "Press F11 to open the level editor. Select any item to read notes on how to use it."; + platinumscore0 = "0"; + alarmStartTime = "15"; + music = "Tim Trance.ogg"; + score0 = "0"; + overviewHeight = "5"; + radiusFromGem = "20"; + score1 = "0"; + desc = "An example level which includes notes on all the ingame elements added in MultiPlayer."; + ultimatescore1 = "0"; + name = "Example Mission"; + platinumscore1 = "0"; + artist = "Threefolder / Notes by HiGuy"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Comforting Mystery.ogg"; + description = "AudioMusic"; + preload = "0"; + }; + new Item() { + position = "25 5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated."; + }; + new Item() { + position = "1 -5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated."; + }; + new Item() { + position = "5 -7 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated."; + }; + new SimGroup(Skies) { + note = "These SimGroups are not required, I just added them to create a nice level hierarchy tree."; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun(Sun) { + direction = "0.638261 0.459006 -0.61801"; + color = "1.400000 1.200000 0.400000 1.000000"; + ambient = "0.300000 0.300000 0.400000 1.000000"; + }; + new StaticShape(ExampleSky) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1000 1000 1000"; + dataBlock = "clear"; + note = "These example SkySpheres are the three official skies you can choose from. Simply place one at the origin with a scale of \\\"1000 1000 1000\\\" to make it your SkySphere."; + }; + new Trigger(stayHere) { + position = "-38 59.5 2.5"; + rotation = "1 0 0 0"; + scale = "100 100 1000"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + note = "Bounds triggers generally have a height of 1000 (virtually unlimited) to replicate MBUltra\'s bounds triggers."; + }; + new SimGroup(SpawnTriggers) { + note = "These SimGroups are not required, I just added them to create a nice level hierarchy tree."; + + new Trigger(BasicSpawnTrigger) { + position = "-9 25 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + note = "For a spawn point, just place a basic spawn trigger. Players will spawn 3 units above the trigger\'s (+x, -y, -z) corner."; + }; + new Trigger(CenterSpawnTrigger) { + position = "-1.5 -12.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + note = "Defining the \"center\" field as 1 will spawn the player in the trigger\'s wiremesh center, rather than in the corner."; + }; + new Trigger(AddSpawnTrigger) { + position = "29 -1 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + note = "The \"add\" parameter allows you to customize where the player will spawn in relation to the triggers (+x, -y, -z) corner"; + add = "0 0 3"; + }; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/custom/exampleMission.dif"; + showTerrainInside = "0"; + }; + new Item() { + position = "23 31 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "For a yellow (2 point) gem, use GemItemYellow instead of GemItemRed."; + }; + new Trigger(CenterSpawnTrigger) { + position = "18.5 37.5 12.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + note = "Defining the \"center\" field as 1 will spawn the player in the trigger\'s wiremesh center, rather than in the corner."; + }; + new Item() { + position = "19 20 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "Mega marbles are just simple PowerUp items like any other."; + }; + new Item() { + position = "4 8 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "Blast items are basic PowerUps and can be placed like any other PowerUp."; + }; + new Item() { + position = "12 -8 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "Blast items are basic PowerUps and can be placed like any other PowerUp."; + }; + new Item() { + position = "18 0 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "Mega marbles are just simple PowerUp items like any other."; + }; + new Item() { + position = "28 36 12.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "Blast items are basic PowerUps and can be placed like any other PowerUp."; + }; + new Item() { + position = "10 14 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "Blue gems (5 points) are placed in the same way as a yellow gem, but with GemItemBlue instead of GemItemYellow."; + }; + new Item() { + position = "1 -9 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated."; + }; + new Item() { + position = "3 -7 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated."; + }; + new Item() { + position = "3 -9 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "For a yellow (2 point) gem, use GemItemYellow instead of GemItemRed."; + }; + new Item() { + position = "3 -11 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated."; + }; + new Item() { + position = "23 1 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated."; + }; + new Item() { + position = "-7 17 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated."; + }; + new Item() { + position = "-7 19 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated."; + }; + new Item() { + position = "-7 21 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated."; + }; + new Item() { + position = "-5 21 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated."; + }; + new Item() { + position = "-5 23 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated."; + }; + new Item() { + position = "-5 19 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated."; + }; + new Item() { + position = "23 33 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated."; + }; + new Item() { + position = "21 33 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated."; + }; + new Item() { + position = "21 31 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated."; + }; + new Item() { + position = "23 29 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated."; + }; + new Item() { + position = "25 29 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated."; + }; + new Item() { + position = "25 31 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated."; + }; + new Item() { + position = "13 23 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "For a yellow (2 point) gem, use GemItemYellow instead of GemItemRed."; + }; + new Item() { + position = "11 21 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated."; + }; + new Item() { + position = "13 21 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated."; + }; + new Item() { + position = "13 25 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated."; + }; + new Item() { + position = "11 23 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated."; + }; + new Item() { + position = "9 23 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated."; + }; + new Item() { + position = "23 7 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated."; + }; + new Item() { + position = "21 7 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated."; + }; + new Item() { + position = "21 5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated."; + }; + new Item() { + position = "23 5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated."; + }; + new Item() { + position = "21 3 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated."; + }; + new Item() { + position = "23 3 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated."; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/custom/ExampleMission.png b/data/multiplayer/hunt/custom/ExampleMission.png new file mode 100644 index 00000000..b75f15b8 Binary files /dev/null and b/data/multiplayer/hunt/custom/ExampleMission.png differ diff --git a/data/multiplayer/hunt/custom/GoodToBeKing.jpg b/data/multiplayer/hunt/custom/GoodToBeKing.jpg new file mode 100644 index 00000000..feff8bf5 Binary files /dev/null and b/data/multiplayer/hunt/custom/GoodToBeKing.jpg differ diff --git a/data/multiplayer/hunt/custom/GoodToBeKing.mis b/data/multiplayer/hunt/custom/GoodToBeKing.mis new file mode 100644 index 00000000..c15b6c25 --- /dev/null +++ b/data/multiplayer/hunt/custom/GoodToBeKing.mis @@ -0,0 +1,1244 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + name = "Good to be King"; + type = "Beginner"; + level = "7"; + desc = "Now with multiple floors, prove that you are the king."; + artist = "pocket83"; + music = "Tim Trance.ogg"; + gameMode = "Hunt"; + game = "Platinum"; + time = "180000"; + MaxGemsPerSpawn = "6"; + RadiusFromGem = "15"; + score[0] = "40"; + score[1] = "70"; + platinumScore[0] = "90"; + platinumScore[1] = "140"; + ultimateScore[0] = "150"; + ultimateScore[1] = "200"; + alarmStartTime = "15"; + overviewHeight = "-100"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "1000"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-31 1.3684e-38"; + fogVolume2 = "-1 1.07208e-14 8.756e-14"; + fogVolume3 = "-1 5.1012e-10 2.05098e-08"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.573201 0.275357 -0.771764"; + color = "1.080000 1.030000 0.900000 1.000000"; + ambient = "0.400000 0.400000 0.500000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "5000 5000 5000"; + dataBlock = "clear"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/GoodtobeKing.dif"; + showTerrainInside = "0"; + }; + new SimGroup(GemSpawns) { + + new Item() { + position = "-1 -7 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 -7 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 -13 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 -13 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.5 -18.5 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6.5 -15.5 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7.5 -1.5 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10.5 -4.5 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 -8 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 -8 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 -12 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 -10 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 -10 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.5 -1.5 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6.5 -4.5 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7.5 -18.5 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10.5 -15.5 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 -12 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -10 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 -10 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 -10 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 -10 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 -10 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 -10 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 -10 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 -10 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19.5 -2 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19.5 0 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19.5 2 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 7.5 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 7.5 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 7.5 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 13 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 11 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 9 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 7 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 -27 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 -29 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 -31 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 -33 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 -31 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 -29 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 -27 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 -25 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 11 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 9 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 7 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 5 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 7.5 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 7.5 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 7.5 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15.5 2 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15.5 0 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15.5 -2 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15.5 -22 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15.5 -20 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15.5 -18 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 -27.5 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -27.5 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 -27.5 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 -27.5 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19.5 -22 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19.5 -20 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19.5 -18 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 -27.5 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 -27.5 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 -10 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 -10 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 -10 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -10 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 -10 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 -10 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 -10 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 -10 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 11 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 11 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 7 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 7 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 11 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 -27 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 -31 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 -31 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 -27 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -31 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 11 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 9 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 -29 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 -31 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 -31 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 -29 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 9 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 11 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 11 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemblue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 -31 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemblue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 -10 3.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new Item() { + position = "17 -29 1.537288"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -21 -4.031558"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "-13 1 -4.015779"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "17 9 1.968442"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "-2 -3 1.968442"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "-2 23.75 5.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 -43.75 5.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 -17 1.968442"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "-21 -29 1.968442"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "-21 9 1.537288"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 -37 -4.462712"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 17 -4.462712"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 -37 -3.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 17 -3.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 -21 -3.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 1 -3.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 -10 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 -10 -3.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -10 -3.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 7 -3.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 -27 -3.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 -10 2.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 -10 2.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 0 116"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new SimGroup(SpawnPoints) { + + new Trigger() { + position = "19 19 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "27 11 3.499998"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "-31 11 3.499503"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "27 -31 3.499998"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "19 -39 3.499501"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "-23 -39 3.499501"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "-31 -31 3.499503"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "-26 -34 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "-26 14 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "22 14 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "22 -34 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "-23 19 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + }; + new Trigger(Bounds) { + position = "-53 53 -15"; + rotation = "1 0 0 0"; + scale = "106 106 5000"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Flanked.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/custom/Grassy.mis b/data/multiplayer/hunt/custom/Grassy.mis new file mode 100644 index 00000000..53d3999e --- /dev/null +++ b/data/multiplayer/hunt/custom/Grassy.mis @@ -0,0 +1,1071 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + name = "Grassy"; + type = "Custom"; + level = "5"; + desc = "Hop around the grassy fields collecting the gems on the pillars!"; + artist = "HiGuy"; + music = "Tim Trance.ogg"; + game = "Custom"; + gameMode = "Hunt"; + time = "210000"; + maxGemsPerSpawn = "6"; + radiusFromGem = "25"; + score[0] = "30"; + score[1] = "40"; + platinumscore[0] = "60"; + platinumscore[1] = "90"; + ultimatescore[0] = "110"; + ultimatescore[1] = "150"; + alarmStartTime = "25"; + overviewHeight = "15"; + }; + new Item() { + position = "0 -9 7.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -15 5.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 0 3.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 -4 4.9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 4 1.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 -4 2.15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 4 4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 4 1.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 12 2.57501"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 -16 10.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "1000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-31 1.3684e-38"; + fogVolume2 = "-1 1.07208e-14 8.756e-14"; + fogVolume3 = "-1 5.1012e-10 2.05098e-08"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun(Sun) { + direction = "0.638261 0.459006 -0.61801"; + color = "1.400000 1.200000 0.400000 1.000000"; + ambient = "0.300000 0.300000 0.400000 1.000000"; + }; + new StaticShape(SkySphere) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1000 1000 1000"; + dataBlock = "clear"; + }; + new Item() { + position = "-8 10 4.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/custom/Grassy.dif"; + showTerrainInside = "0"; + }; + new Item() { + position = "0 0 1.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 2 1.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 4 2.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -4 2.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4 -2 1.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Flanked.ogg"; + description = "AudioMusic"; + preload = "0"; + }; + new Item() { + position = "2 2 3.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemblue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 18 4.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -18 4.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 -16 5.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 -12 5.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 -6 5.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 -6 3.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 2 4.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 16 7.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 18 6.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 18 6.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 18 8.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 2 4.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 -12 6.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 -14 5.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 14 6.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 10 7.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 -4 6.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 2 7.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 14 10.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 16 7.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 -18 8.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 -12 5.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 -16 10.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 -8 7.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 -2 5.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 10 6.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4 14 5.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 -16 7.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20 20 11.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemblue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 -16 8.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 -20 12.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemblue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20 -20 11.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemblue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 20 12.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemblue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 16 10.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 -10 8.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 14 8.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 10 4.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 0 5.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 6 5.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 -6 5.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 -6 5.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 0 5.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 6 5.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -6 5.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 6 5.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 18 8.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.39169 0 12.2308"; + rotation = "0 -1 0 45"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7.6 0 17.5"; + rotation = "0 -1 0 90.0002"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.52427 0 22.6164"; + rotation = "0 1 0 225"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7.10311e-07 0 25"; + rotation = "0 1 0 180"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.3475 0 22.7932"; + rotation = "0 1 0 135"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7.6 0 17.5"; + rotation = "0 1 0 90.0002"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.39169 0 12.2308"; + rotation = "0 1 0 45"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 0 9.937"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -12 5.925"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -6 8.675"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 6 8.675"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 12 5.925"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "-4.5 8.5 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "7.5 -5.5 4.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "-8.5 6.5 4.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "3.75 4.5 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "1.5 -1.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "-4.5 -3.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "-2.5 2.5 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "5 -5.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Item() { + position = "-4 0 0.643646"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger(Bounds) { + position = "-41 41 0.25"; + rotation = "1 0 0 0"; + scale = "82 82 1000"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Item() { + position = "2 4 0.95001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 5.25 0.89047"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -6 1.07501"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 -14 2.82501"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 10 2.07501"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -8 2.57501"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 -2 1.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 -6 1.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 -6 1.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4 2 1.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 6 1.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 6 1.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 0 3.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 -6 5.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 -6 5.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 -3 5.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 3 5.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 6 5.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 6 5.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 3 5.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 -3 5.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 9 7.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 15 5.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 3 9.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -3 9.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 -2 3.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/custom/Grassy.png b/data/multiplayer/hunt/custom/Grassy.png new file mode 100644 index 00000000..77871903 Binary files /dev/null and b/data/multiplayer/hunt/custom/Grassy.png differ diff --git a/data/multiplayer/hunt/custom/Gym_Hunt.jpg b/data/multiplayer/hunt/custom/Gym_Hunt.jpg new file mode 100644 index 00000000..ab75b917 Binary files /dev/null and b/data/multiplayer/hunt/custom/Gym_Hunt.jpg differ diff --git a/data/multiplayer/hunt/custom/Gym_Hunt.mis b/data/multiplayer/hunt/custom/Gym_Hunt.mis new file mode 100644 index 00000000..26a011b5 --- /dev/null +++ b/data/multiplayer/hunt/custom/Gym_Hunt.mis @@ -0,0 +1,1576 @@ +// Rep. by Perishingflames and Pablo +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + name = "Gym"; + music = "Seaside Revisited.ogg"; + desc = "Use your marble skills to find all the diamonds!"; + startHelpText = "Don\'t forget your towel!"; + radiusFromGem = "15"; + gameMode = "Hunt"; + level = "6"; + type = "Intermediate"; + time = "240000"; + maxGemsPerSpawn = "7"; + alarmStartTime = "20"; + game = "Platinum"; + artist = "Ian"; + overviewHeight = "5"; + score[0] = "20"; + score[1] = "40"; + platinumScore[0] = "50"; + platinumScore[1] = "85"; + ultimateScore[0] = "110"; + ultimateScore[1] = "150"; + glassCenter = "Glassy"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0.349971"; + cloudHeightPer[1] = "0.3"; + cloudHeightPer[2] = "0.199973"; + cloudSpeed1 = "0.0005"; + cloudSpeed2 = "0.001"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "0 0 0"; + fogVolume2 = "0 0 0"; + fogVolume3 = "0 0 0"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 1 0"; + windEffectPrecipitation = "1"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 -222768174765569860000000000000000000000.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 -170698929442160050000000000000000000000.000000"; + locked = "true"; + }; + new Sun() { + direction = "-0.992164 0.0686804 -0.104368"; + color = "1.400000 1.200000 0.400000 1.000000"; + ambient = "0.300000 0.300000 0.400000 1.000000"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + position = "0 0 0"; + }; + new InteriorInstance() { + position = "8.72103 -6.88873 496.828"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbp/Gym.dif"; + showTerrainInside = "0"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "Wintry"; + }; + new StaticShape() { + position = "35.8825 -69.3844 494.578"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "Nuke"; + resetTime = "Default"; + }; + new Trigger(stayhere) { + position = "-14 12.5 487.5"; + rotation = "1 0 0 0"; + scale = "80 116.5 10000"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new StaticShape() { + position = "35.1912 -74.4986 494.578"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "Nuke"; + resetTime = "Default"; + }; + new StaticShape() { + position = "36.3136 -72.9543 494.578"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "Nuke"; + resetTime = "Default"; + }; + new StaticShape() { + position = "37.7206 -74.901 495.559"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + new StaticShape() { + position = "37.7206 -82.922 495.559"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + new StaticShape() { + position = "33.7211 -78.8675 495.567"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + new Item() { + position = "18.6442 -10.9101 498.261"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new StaticShape() { + position = "35.6969 -79.084 494.578"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "Nuke"; + resetTime = "Default"; + }; + new StaticShape() { + position = "33.7211 -70.8845 495.567"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + new StaticShape() { + position = "37.5542 -90.1516 498.02"; + rotation = "1 0 0 6.8755"; + scale = "1 1 1"; + dataBlock = "SignDownSide"; + }; + new TSStatic() { + position = "17.6879 -30.8427 498.058"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + shapeName = "~/data/shapes/signs/signup-side.dts"; + }; + new StaticShape() { + position = "27.2353 -93.0039 497.9"; + rotation = "-0.157334 -0.157334 -0.974932 91.4544"; + scale = "1 1 1"; + dataBlock = "SignUpSide"; + }; + new StaticShape() { + position = "19.35 -6 498"; + rotation = "-0.0166201 0.133243 0.990944 152.511"; + scale = "1 1 1"; + dataBlock = "SignUpSide"; + }; + new StaticShape() { + position = "10.65 -62.8 498.9"; + rotation = "0 0 1 112.873"; + scale = "1 1 1"; + dataBlock = "SignDown"; + }; + new StaticShape() { + position = "23.3367 -70.9892 498.07"; + rotation = "0 0 1 83.6518"; + scale = "1 1 1"; + dataBlock = "SignSide"; + }; + new StaticShape() { + position = "37.7206 -68.869 495.559"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + new StaticShape() { + position = "36.9303 -80.4778 494.578"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "Nuke"; + resetTime = "Default"; + }; + new StaticShape() { + position = "37.5542 -61.6421 498.04"; + rotation = "-1.31114e-009 -0.0299955 0.99955 180"; + scale = "1 1 1"; + dataBlock = "SignDownSide"; + }; + new Item() { + position = "4.22537 -83.3664 505"; + rotation = "0 1 0 160"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4.22537 -79.4664 505"; + rotation = "0 1 0 160"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.8 -81.8683 513.323"; + rotation = "1 0 0 180"; + scale = "0.2 0.2 0.2"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new SimGroup(SpawnPoints) { + + new Trigger() { + position = "4.0374 -10.9699 498.078"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "54.3381 -4.36851 498.078"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "27.1419 1.63289 498.078"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "48.2195 1.68732 498.078"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "17.3092 -90.8464 504.078"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "52.5687 -34.5456 498.078"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "51.7981 -59.1233 498.078"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "47.986 -89.2694 498.078"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "26.5113 -82.452 498.078"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "29.1519 -75.8457 498.078"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "41.4876 -69.8039 498.078"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "41.7256 -83.6491 498.078"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "26.3577 -55.4141 498.078"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "27.1584 -36.3684 498.078"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "28.8759 -26.9623 498.078"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "27.7697 -13.25 490.578"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "44.0292 -8.87572 490.578"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "15.0928 -34.4019 497.578"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "-3.15339 -35.9499 497.578"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "0.0883837 -60.0685 498.078"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "-1.86138 -79.5608 498.078"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "12.9047 -86.416 498.078"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "21.7151 -62.2895 498.078"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "15.0403 -78.2126 504.078"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + }; + new SimGroup(GemSpawns) { + + new Item() { + position = "24.7594 -4.163 490.628"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34.2206 -16.2917 490.628"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27.75 -10.75 512.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "50.057 -17.6717 490.628"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49.3105 -6.81547 490.628"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44.7791 -17.6365 490.628"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30.309 -4.76336 490.628"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "38.335 -5.30969 490.628"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32.2644 -9.19638 490.628"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25.187 -16.0063 490.628"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46.5767 -12.2956 502.522"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42.7771 -12.2997 503.898"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.81012 -18.1895 502.925"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.0614 -21.3923 498.128"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4.2389 -17.2806 498.128"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.895041 -25.3741 498.128"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19.3102 -31.4263 504.217"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.8755 -27.3482 502.872"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.97724 -23.9688 503.092"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.35271 -19.4469 502.781"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.27912 -7.52726 498.128"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2.03178 1.97529 498.128"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4.42125 0.462437 498.128"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19.1692 -0.97252 498.128"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20.7924 -32.8878 501.028"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31.8684 -32.8629 499.628"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25.4157 -32.8679 499.628"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20.8499 -46.9 501.028"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29.2409 -46.9479 499.628"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23.2539 -46.7848 499.628"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23.3741 -42.0149 498.128"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29.1461 -40.5749 498.128"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19.0292 -55.2581 497.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.43564 -32.6817 497.732"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.52229 -55.1067 497.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7.73662 -47.269 497.628"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.2068 -51.083 497.628"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.9246 -50.4675 497.628"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.62674 -42.0651 497.627"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.68128 -37.885 497.628"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16.9551 -38.2839 497.628"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15.0064 -44.8041 497.628"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-0.388083 -47.4639 497.628"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10.7156 -62.8829 498.078"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2.74852 -92.9099 499.146"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.5345 -70.1393 499.128"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2.42568 -70.16 499.128"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14.3803 -70.0265 505.128"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.246661 -70.1222 505.128"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2.64892 -89.558 499.957"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.79634 -93.1217 499.757"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.923 -89.9129 499.087"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14.0388 -91.1432 498.498"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.92288 -70.7777 498.128"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4.4279 -94.179 501.628"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.48582 -84.6549 498.128"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15.5546 -89.6949 498.128"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19.9768 -86.8629 500.878"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20.0582 -76.6183 499.128"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19.9714 -78.4378 499.128"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35.2311 -74.5247 494.628"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34.5772 -80.679 494.628"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "37.0355 -69.2971 494.628"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7.78066 -72.402 504.128"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.70272 -84.5466 504.128"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.889995 -77.6508 504.128"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.34298 -81.7956 513.628"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.84609 -92.7447 504.128"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.5018 -78.4697 509.495"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.26242 -85.1509 509.471"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49.9003 -66.0217 498.128"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48.808 -78.8779 501.378"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42.8341 -88.3884 498.128"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34.6752 -79.6398 498.128"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30.8913 -71.7401 498.128"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44.662 -56.8693 498.628"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44.7629 -24.4396 498.628"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46.7096 -47.0168 498.628"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "43.0225 -34.8024 498.628"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32.1907 -58.4908 498.128"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.9772 -84.5516 504.128"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.35 -93.35 504.128"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7.29803 -66.902 503.141"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.0342 -67.1153 503.355"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "50.6 -28.6 498.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "50.2 -39.4 498.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40.6 -53.6 498.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39.4 -39.4 498.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40.2 -74 498.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "51.8 -89.6 498.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.79331 -81.6881 508.134"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "50.2 -52.8 498.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 -28 498.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new Item() { + position = "40.8522 -4.07743 490.779"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49.1569 -11.4037 490.778"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25.0893 -17.9601 490.778"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20.9106 -70.964 498.279"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44.842 -48.798 498.562"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "54.9717 -78.9198 498.063"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.55046 -43.1924 497.562"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10.3182 -7.07355 498.061"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "38.7443 1.14526 498.062"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "54.7279 -9.97738 498.062"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.01661 -82.4628 518.221"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.2 -93.4 504.372"; + rotation = "1 0 0 0"; + scale = "0.75 0.75 0.75"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7.3417 -68.6156 506.55"; + rotation = "1 0 0 39.5341"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "54.7879 1.14391 497.812"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40.9718 -9.43162 490.579"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34.7746 -32.938 498.578"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34.7689 -46.8792 498.579"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.31674 -36.444 497.579"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11.1238 -63.296 498.953"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.1769 -92.4531 516.562"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2.51782 -74.186 516.578"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18.1441 -92.5688 516.579"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25.4482 -60.9187 498.265"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44.804 -29.6002 498.765"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2.29872 -57.2519 498.265"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "38.1297 -78.7856 494.765"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "38.264 -71.0633 494.765"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33.2935 -69.0223 494.765"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7.23538 -79.1253 498.265"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28.8048 -92.8464 498.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2.28506 -63.8925 498.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.8 -88 498"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36.8 -75.4 498.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Marker(Glassy) { + position = "17.72 0 500"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Pianoforte.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/custom/Heart_of_the_Typhoon.jpg b/data/multiplayer/hunt/custom/Heart_of_the_Typhoon.jpg new file mode 100644 index 00000000..b9193e94 Binary files /dev/null and b/data/multiplayer/hunt/custom/Heart_of_the_Typhoon.jpg differ diff --git a/data/multiplayer/hunt/custom/Heart_of_the_Typhoon.mis b/data/multiplayer/hunt/custom/Heart_of_the_Typhoon.mis new file mode 100644 index 00000000..fb351bd5 --- /dev/null +++ b/data/multiplayer/hunt/custom/Heart_of_the_Typhoon.mis @@ -0,0 +1,11742 @@ +$server::servertype=multiplayer; +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + gameMode = "Hunt"; + RadiusFromGem = "25"; + music = "Tim Trance.ogg"; + type = "Custom"; + alarmStartTime = "25"; + desc = "In the eternal tempest\nOne ascends unto\nThe ethereal gleam of fate."; + overviewHeight = "50"; + level = "7"; + artist = "UltraRobot"; + name = "Heart of the Typhoon"; + game = "Ultra"; + score0 = "10"; + score1 = "25"; + platinumScore0 = "50"; + platinumScore1 = "75"; + ultimateScore0 = "110"; + ultimateScore1 = "160"; + MaxGemsPerSpawn = "7"; + time = "330000"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.638261 0.459006 -0.61801"; + color = "1.400000 1.200000 0.400000 1.000000"; + ambient = "0.300000 0.300000 0.400000 1.000000"; + }; + new InteriorInstance() { + position = "0 0 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/custom/Heart_of_the_Typhoon.dif"; + showTerrainInside = "0"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "Dusk"; + }; + new Trigger(Bounds) { + position = "-150 150 0"; + rotation = "1 0 0 0"; + scale = "300 300 1000"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "-90 -26 24"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new StaticShape() { + position = "0 0 0.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "Tornado"; + }; + new Item() { + position = "0 0 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new StaticShape() { + position = "7 -7 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + new StaticShape() { + position = "7 7 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + new StaticShape() { + position = "-7 -7 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + new StaticShape() { + position = "-7 7 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + new Item() { + position = "3 7 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 -3 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 3 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 -3 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 3 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 -7 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 -5 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 -3 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 11 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 11 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 -11 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 -11 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 -9 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -9 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 9 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 9 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 5 3.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 -5 3.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 -5 2.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 5 2.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -22 5.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 0 5.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 22 5.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 0 5.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new StaticShape() { + position = "-19 -9 5"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "19 15 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-19 -11 5"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-19 -13 5"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-19 -15 5"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "19 9 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "19 11 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "19 13 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "15 -19 5"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "9 -19 5"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "11 -19 5"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "13 -19 5"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-15 19 5"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-9 19 5"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-11 19 5"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-13 19 5"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new Item() { + position = "-15 19 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "29 53 18"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-53 29 18"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "53 -29 18"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-29 -53 18"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Item() { + position = "25 -15 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 19 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 19 5.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 19 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 25 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 25 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 25 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 25 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 9 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 13 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 11 5.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 15 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 -13 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 -9 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 -11 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 9 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -19 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 -19 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 -19 5.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -19 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 -25 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 -25 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 -25 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 -25 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 -9 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 -13 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 -11 5.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 -15 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 13 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 15 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 11 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 -17 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 -15 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 -17 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 -15 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 -17 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 11 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 15 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 13 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 17 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 15 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 17 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 15 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 17 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -11 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 -13 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -15 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 2 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 16 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 -2 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 -16 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 4 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 19 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 13 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 0 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 -4 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -13 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4 -19 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 0 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 21 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30 24 14.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 23 14.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 21 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23 13 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29 19 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29 15 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 15 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 19 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 17 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23 17 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 -27 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -31 14.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -25 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 -29 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 -33 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -29 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 -31 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -25 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 -27 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 -33 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 -31 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 -13 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 -17 13.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 -21 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 -21 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 -21 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 -17 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -19 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 -17 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -15 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 -19 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 -15 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 31 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 27 14.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 25 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 27 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 29 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 25 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 23 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 27 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 27 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 31 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 31 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -13 13.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 -15 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 15 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 13 13.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 -30 9.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 29 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 29 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 29 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 29 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 29 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 31 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 33 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 27 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 27 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 33 9.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 17 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29 17 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31 15 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31 19 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 7 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 11 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 9 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31 7 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31 11 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31 17 9.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20 -30 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 -29 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -33 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 -27 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -31 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 -27 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 -27 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 -33 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 -27 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 -17 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30 -9 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30 -19 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 -14 9.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 -21 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 -21 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 -7 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 -7 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30 -11 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 -14 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37 12 9.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 -37 9.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "37 -12 9.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 37 9.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39 -15 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41 -15 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-43 -15 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41 -19 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39 -17 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39 -13 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-43 -13 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-43 -17 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41 -11 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -43 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 -43 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 -39 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -41 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 -39 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 -43 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 -41 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -41 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "43 15 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -39 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 15 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "43 18 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "41 15 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "41 9 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "41 21 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 18 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 12 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "43 12 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 39 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 43 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 42 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 41 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 39 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 43 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 43 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 41 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 41 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 35 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35 31 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35 33 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35 29 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35 35 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 35 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29 35 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31 35 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 -35 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -31 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -33 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -29 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -35 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 -35 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35 -35 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 -35 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "43.75 43.75 9.375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-43.75 43.75 9.375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "43.75 -43.75 9.375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-43.75 -43.75 9.375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "47 0 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 47 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 0 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -47 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41 -47 14.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41 -50 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38 -50 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-44 -50 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 -47 14.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35 -47 14.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35 -53 14.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 -53 14.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41 -53 14.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46 51 14.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "41 50 14.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 47 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "43 53 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "37 53 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 47 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "43 50 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 50 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36 49 14.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53 45 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-50 41 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-50 39 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-50 43 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-50 35 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-50 47 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53 39 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 43 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 37 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "47 47 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "50 -41 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49 -47 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "53 -37 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49 -43 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "51 -39 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "47 -35 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "53 -45 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "47 -42 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "51 -35 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35 -50 14.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 -50 14.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 53 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49 -38 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53 41 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 41 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "50 -45 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49 -3 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 45 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 45 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 49 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 49 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 3 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 -3 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49 -3 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49 3 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 -45 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 -45 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 -49 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 -49 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 -3 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 3 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49 3 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 -18 15.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 47 14.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 47 15.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "47 -18 14.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "47 18 15.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 -47 14.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 -47 15.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 18 14.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "75 -100 15.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "75 -87.9603 16.7565"; + rotation = "-1 0 0 18.5"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "75 -112 15.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "63 -87 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "75 -125 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "82 -126 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "75 -83 13.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "63 -119 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "47 -103 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "63 -103 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "71 -93 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "71 -97 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "67 -97 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "67 -93 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "71 -109 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "71 -113 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "67 -113 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "67 -109 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "55 -109 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "55 -113 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "57 -111 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "53 -111 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "57 -95 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "53 -95 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "55 -97 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "55 -93 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "69 -95 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "69 -111 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "55 -111 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "55 -95 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "75 -86 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "81 -103 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "-22 -22 8"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Item() { + position = "75 -103 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "75 -109 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "75 -97 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "103 63 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "87.9603 75 16.7565"; + rotation = "0 -1 0 18.5"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "75 -115 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "100 75 15.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "112 75 15.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "103 53 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "125 75 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "103 81 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "86 75 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "83 75 13.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "69 -103 18"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Item() { + position = "103 75 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "115 75 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "109 75 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "97 75 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "93 63 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "113 63 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "99 55 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "93 67 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "93 59 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "113 59 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "113 67 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "107 67 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "107 59 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "99 59 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "99 67 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "89 67 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "89 59 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "117 59 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "117 67 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "99 71 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "107 71 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "107 55 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-59 107 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "126 82 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-82 126 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75 87.9603 16.7565"; + rotation = "1 0 0 18.5"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-81 103 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75 86 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75 100 15.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75 112 15.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75 125 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75 83 13.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-63 103 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "22 22 8"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Item() { + position = "-75 103 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75 97 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75 115 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75 109 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51 103 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57 97 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57 109 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-65 91 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-61 91 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-61 89 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-65 89 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-65 93 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-61 93 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-61 113 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-61 115 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-61 117 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-65 117 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-65 115 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-65 113 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-69 97 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-69 109 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-59 99 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-112 -69 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-87.9603 -75 16.7565"; + rotation = "0 1 0 18.5"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-83 -75 13.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-125 -75 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-126 -82 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-86 -75 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-103 -81 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-100 -75 15.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-112 -75 15.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-115 -75 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-109 -75 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-103 -75 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-97 -75 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "-22 22 8"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Item() { + position = "-103 -63 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-103 -51 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-115 -63 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-91 -63 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-97 -69 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-91 -69 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-91 -57 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-97 -57 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-109 -57 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-115 -57 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-115 -69 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-109 -69 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-94 -69 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-91 -66 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-91 -60 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-94 -57 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-112 -57 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-115 -60 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-115 -66 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 71 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-59 71 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-55 71 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51 71 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-65 63 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-59 67 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57 63 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-62 65 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 65 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-67 65 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57 65 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53 65 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-67 67 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-63 67 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-61 63 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-69 -53 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-73 -57 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-73 -53 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-73 -65 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-73 -49 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-69 -57 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-73 -61 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-73 -69 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-73 -73 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-73 -45 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-73 -41 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-69 -41 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-69 -45 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-69 -49 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-69 -61 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-69 -65 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "47 71 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 -3 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 3 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 3 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 5 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "53 71 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "51 69 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49 73 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "69 47 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "50 71 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "69 57 19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "69 45 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "71 45 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "67 45 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "69 43 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "97 43 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "71 67 19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "71 71 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "73 69 18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "69 69 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "41 77 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "57 71 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "59 71 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "63 71 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "65 71 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "65 73 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "65 69 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "57 73 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "57 69 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 77 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "61 73 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "61 69 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49 79 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 79 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 75 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "41 75 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "43 79 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 79 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "71 69 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "61 71 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "71 57 19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "69 53 19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "69 61 19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "67 57 19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "65 63 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "65 51 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "83 41 16.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "95 41 17.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "81 43 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "81 39 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "85 39 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "85 43 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "93 43 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "93 39 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "97 39 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 -86 16.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30 -70 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "37 -71 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34 -73 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28 -73 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 -71 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 -69 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 -89 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 -83 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 -86 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 -86 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 -79 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "37 -79 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "41 -79 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 -77 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 -81 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "71 -63 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "71 -67 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "75 -67 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "75 -63 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "73 -65 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 -68 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 -67 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "51 -73 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "47 -71 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "43 -69 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-59 53 12.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-91 6 24"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 -63 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "43 -63 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "43 -65 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-87 6 24"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "47 -63 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "47 -65 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "47 -67 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-89 6 24"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "51 -63 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "51 -65 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "51 -67 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "51 -69 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "57 -71 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "61 -68 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "63 -65 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "59 -71 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "57 -65 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "65 -71 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "65 -65 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 -87 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34.9593 71 18.2568"; + rotation = "0 -1 0 18.5"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -87 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -91 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 -91 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 -89 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-58.9593 -71 18.2568"; + rotation = "0 1 0 18.5"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40.9593 65 18.2568"; + rotation = "0 1 0 18.5"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 52.9593 18.2568"; + rotation = "1 0 0 18.5"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 -28.9593 18.2568"; + rotation = "-1 0 0 18.5"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "71 28.9593 18.2568"; + rotation = "1 0 0 18.5"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.9593 -71 18.2568"; + rotation = "0 -1 0 18.5"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "67 -52.9593 18.2568"; + rotation = "-1 0 0 18.5"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 -89 12.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 -89 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 -89 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 -89 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new StaticShape() { + position = "-45 -81 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new Item() { + position = "-19 -89 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 -89 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35 -89 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53 -85 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 -81 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new StaticShape() { + position = "-47 -81 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-51 -85 15"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new Item() { + position = "-17 83 21.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new StaticShape() { + position = "-51 -83 15"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-49 -85 15"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-47 -85 15"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-57 -83 15"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-55 -83 15"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new Item() { + position = "-45 -83 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49 -83 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57 -83 15.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 -81 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51 -85 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 -85 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51 -81 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57 -79 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41 -79 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41 -83 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 -79 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 -87 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49 -79 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53 -79 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53 -87 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-55 -85 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 -93 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 -85 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 -85 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -85 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 -85 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 -85 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 -85 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 -93 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 -93 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 -93 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -93 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 -93 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31 -95 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 -86 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 -86 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 -86 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 -86 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28 -86 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31 -86 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 -75 23.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 -97 23.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 -75 22.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 -97 22.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 -81 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 -81 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 -91 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 -91 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -93 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31 -77 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 -77 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 -95 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29 -93 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29 -79 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -79 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 -79 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 -81 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 -75 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 -91 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 -97 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 -75 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 -81 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 -91 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 -97 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 -79 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 -93 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 -83 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 -89 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 -93 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 -67 34"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 -71 21.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 -71 33"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 -67 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 -75 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 -77 27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 -65 27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 -77 33"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 -65 33"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 -75 34"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 -71 25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -73 33"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 -73 33"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 -69 33"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -69 33"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 -75 33"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 -67 33"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 -67 33.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "91 27 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 -71 33.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 -71 33.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new StaticShape() { + position = "-25 -69 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + new StaticShape() { + position = "-21 -69 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + new StaticShape() { + position = "-21 -73 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + new StaticShape() { + position = "-25 -73 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + new Item() { + position = "-21 -73 26.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -73 26.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -69 26.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 -69 26.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 -75 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 -67 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 -67 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 -75 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 -75 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 -67 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37 -71 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 -71 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 -71 25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 -71 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 -71 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26 -71 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-87 -49 15.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 -77 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 -65 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 -65 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 -77 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 -71 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35 -71 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-109 -45 14.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-85 -47 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-107 -43 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-111 -43 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-111 -47 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-107 -47 14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-89 -47 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-89 -51 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-85 -51 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "97 21 21.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "67 -23 28"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "71 -1 28"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "93 -1 27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "97 21 27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "67 -23 21.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "71 -1 21.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "93 -1 21.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "79 -9 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "59 -31 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "59 -15 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "75 -15 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "75 -31 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "63 -9 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "63 7 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "79 7 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "69 -12 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "63 -27 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "63 -19 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "75 -5 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "75 3 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "67 -1 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "71 -23 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "67 -27 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "71 -12 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "67 -12 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "71 3 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "71 -5 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "67 -19 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "77 5 27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "59 -23 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "79 -1 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "73 -29 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "73 -17 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "69 -17 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "67 -29 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "69 -7 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "65 -7 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "65 5 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "71 5 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "71 -12 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "67 -12 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "61 -29 27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "61 -17 27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "77 -7 27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "62 -25 27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "69 -23 27.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "69 -1 27.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "103 27 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 -75 33.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "72 -5 27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "72 3 27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "66 -19 27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "66 -27 27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "76 1 27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "76 -3 27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "62 -21 27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "85 -1 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "69 -21 28"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "69 -25 28"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "65 -25 28"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "65 -21 28"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "69 -3 28"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "69 1 28"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "73 1 28"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "73 -3 28"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "95 10 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "85 7 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "85 -9 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "101 -9 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "101 7 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "105 13 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "105 29 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "89 29 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "89 13 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "105 21 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "93 -9 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "97 29 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "87 5 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "87 -7 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "99 -7 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "99 5 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "91 15 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "103 15 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "62 -23 27.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "76 -1 27.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "93 10 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "97 10 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "89 21 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "101 -1 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "101 21 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "95 1 28"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "95 -3 28"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "91 -3 28"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "91 1 28"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "95 19 28"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "95 23 28"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "99 23 28"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "99 19 28"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "93 -4 27.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "97 24 27.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "93 2 27.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "97 18 27.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "89 -1 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "97 -1 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "93 21 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "101 21 27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "97 -5 25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "89 3 25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "101 17 25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "93 25 25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "89 -1 27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "97 -1 27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "93 21 27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new StaticShape() { + position = "95 1 11"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "91 -3 11"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "91 -1 11"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "91 1 11"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "93 1 11"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "93 -1 11"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "93 -3 11"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "95 -3 11"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "95 -1 11"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "99 23 11"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "95 19 11"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "95 21 11"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "95 23 11"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "97 23 11"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "97 21 11"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "97 19 11"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "99 19 11"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "99 21 11"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new Item() { + position = "-23 -71 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 -71 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 -75 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 -75 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 -67 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 -67 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "77 -7 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "71 -1 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "93 -1 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "97 21 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "67 -23 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "61 -17 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "61 -29 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "73 -29 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "73 -17 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "65 -7 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "65 5 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "77 5 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "95 23 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "87 5 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "99 5 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "99 -7 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "87 -7 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "91 15 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "103 15 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "103 27 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "91 27 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "73 1 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "73 -3 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "69 -3 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "69 1 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "69 -21 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "69 -25 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "65 -25 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "65 -21 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "91 -3 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "95 -3 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "95 1 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "91 1 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "95 19 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "99 19 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "99 23 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "82 -1 13.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "85 -26 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "85 -32 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "85 -51 13.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "85 -38 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "85 -44 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "85 -20 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "85 -13 13.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "79 -41 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "82 -41 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "72 -41 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "88 -23 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "98 -23 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "93 -23 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "77 -41 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "91 -23 17"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "91 -13 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "79 -51 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "79 -31 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "91 -33 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 87 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 91 14.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 99 14.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 99 14.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 91 14.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37 106 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 106 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 103 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 87 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 84 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40 103 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40 87 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37 84 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 95 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 97 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 97 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 93 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 93 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37 95 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 95 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 103 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 87 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 95 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 95 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 95 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 99 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 91 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35 103 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37 101 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35 87 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37 89 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 89 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 87 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 103 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 101 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 93 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 97 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 97 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 93 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 101 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35 89 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35 101 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 89 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37 95 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 95 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 103 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 100 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new StaticShape() { + position = "-35 87 13"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-33 87 13"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-25 87 13"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-23 87 13"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-23 103 13"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-25 103 13"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-33 103 13"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-35 103 13"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-21 89 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-21 91 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-21 99 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-21 101 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-37 89 13"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-37 91 13"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-37 99 13"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-37 101 13"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new Item() { + position = "-37 100 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37 90 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-34 87 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 87 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 90 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 103 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-34 103 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 77 19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 59 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 65 19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 71 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 71 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 65 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 65 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 65 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 71 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 85 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 69 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 73 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 73 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 69 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 65 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 65 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 77 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 77 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 77 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 77 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 65 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 65 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 86 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 80 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 81 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 92 21.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 71 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 71 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 95 23.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 89 23.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 89 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 95 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 95 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 93 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 97 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 97 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 93 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 91 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 91 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 87 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 87 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 95 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 89 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 93 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 93 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 97 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 97 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 91 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 91 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 87 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 87 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 93 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 97 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 91 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 87 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 89 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 95 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 89 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 89 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 89 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 95 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 95 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 83 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 77.0397 12.2565"; + rotation = "-1 0 0 18.5"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 101 13.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 71 11.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 89 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 71 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 71 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 71 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 71 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 73 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 69 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 69 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 73 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 73 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 69 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4 69 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4 73 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 95 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new StaticShape() { + position = "5 93 13"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "5 97 13"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "5 95 13"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new Item() { + position = "5 92 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new StaticShape() { + position = "5 87 13"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "5 89 13"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "5 91 13"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new Item() { + position = "13 91 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 99 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 89 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 89 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 89 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 95 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-94 -30 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new StaticShape() { + position = "-101 -37 13"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new Item() { + position = "-94 -30 14.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new StaticShape() { + position = "-101 -27 13"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-101 -25 13"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-101 -33 13"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-101 -35 13"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-87 -33 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-87 -35 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-87 -27 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-87 -25 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-89 -23 13"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-87 -23 13"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-99 -23 13"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-101 -23 13"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-89 -37 13"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-87 -37 13"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-99 -37 13"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new Item() { + position = "-89 -30 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-94 -33 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-97 -30 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-94 -27 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-91 -30 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-101 -37 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-101 -23 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-87 -23 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-87 -37 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-97 -39 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-91 -39 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-85 -30 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-91 -21 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-97 -21 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-103 -30 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-101 -27 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-101 -33 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-87 -33 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-87 -27 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-99 -30 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-88 -36 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-100 -36 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-100 -24 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-88 -24 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-87 -30 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-91 -27 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-91 -33 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-97 -33 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-97 -27 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-94 -37 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-94 -23 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-101 -30 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-89 21 21.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-89 -9 21.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-63 5 13.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-89 37 14.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-89 35 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-89 39 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-93 35 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-91 33 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-93 39 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-91 41 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-87 41 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-85 39 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-85 35 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-87 33 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-93 33 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-85 33 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-85 41 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-93 41 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-89 27 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-89 -15 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-81 7 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-81 -1 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-83 7 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-83 -1 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-91 9 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-56 -62 12.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-87 9 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-87 3 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-91 3 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-73 -3 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-83 15 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-83 -9 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-79 -9 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-79 -13 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-83 -13 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-83 19 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-79 19 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-65 3 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-61 3 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-61 7 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-65 7 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-68 18 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-68 20 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-68 22 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-65 -9 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-65 -11 21.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-65 -7 22.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-65 -5 22.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-89 37 20.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-77 30 19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-77 34 19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-77 26 19"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-59 33 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-59 13 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-59 23 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-63 33 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-63 13 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-63 23 21"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 3 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-73 13 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 11 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-73 5 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 7 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-73 1 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 -1 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 -5 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-73 -7 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-73 9 22"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-76 -1 23.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-76 7 23.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new StaticShape() { + position = "-89 7 11"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-91 7 11"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-91 5 11"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-87 5 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-87 7 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-89 1 11"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-89 3 11"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-89 5 11"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-89 11 11"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-89 9 11"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "TrapDoor"; + open = "0"; + timeout = "200"; + resetTime = "Default"; + }; + new Item() { + position = "53 59 12.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-77 -15 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-65 39 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-77 15 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-77 3 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-83 -9 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-95 -9 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-95 21 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-83 21 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-89 15 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 -6 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-89 -3 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 27 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-89 6 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-89 2 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-89 10 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-87 6 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-91 6 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 21 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 33 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 30 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 24 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 -2 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 -4 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 -8 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 -10 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-77 9 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 9 13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-87 17 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-87 13 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-91 13 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-91 17 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-87 -1 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-87 -5 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-91 -5 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-91 -1 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-59 0 13.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "59 0 13.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -59 13.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 59 13.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "57 -51 12.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new StaticShape() { + position = "68 -1 24"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "SmallDuctFan"; + }; + new StaticShape() { + position = "94 21 24"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "SmallDuctFan"; + }; + new StaticShape() { + position = "100 21 24"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "SmallDuctFan"; + }; + new StaticShape() { + position = "60 -23 24"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "SmallDuctFan"; + }; + new StaticShape() { + position = "90 -1 24"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "SmallDuctFan"; + }; + new StaticShape() { + position = "78 -1 24"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "SmallDuctFan"; + }; + new StaticShape() { + position = "70 -23 24"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "SmallDuctFan"; + }; + new StaticShape() { + position = "96 -1 24"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "SmallDuctFan"; + }; + new Trigger() { + position = "22 -22 8"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-103 -69 18"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "103 69 18"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-69 103 18"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "42 -73 18"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-71 -57 18"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-54 68 18"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "75 41 18"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-13 92 16"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "82 -12 16"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-23 -83 16"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-74 9 16"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "7 71 25"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "82 -1 24.5"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "15 -86 26"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Pianoforte.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/custom/HikarusVShape.jpg b/data/multiplayer/hunt/custom/HikarusVShape.jpg new file mode 100644 index 00000000..56ae629f Binary files /dev/null and b/data/multiplayer/hunt/custom/HikarusVShape.jpg differ diff --git a/data/multiplayer/hunt/custom/HikarusVShape.mis b/data/multiplayer/hunt/custom/HikarusVShape.mis new file mode 100644 index 00000000..e63d9055 --- /dev/null +++ b/data/multiplayer/hunt/custom/HikarusVShape.mis @@ -0,0 +1,292 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + desc = "Hikaru\'s requested mission with shit quarking by Matan (good level editing)."; + gameMode = "hunt"; + gemGroupRadius = "30"; + goldTime = "0"; + level = "8"; + maxGemsPerGroup = "4"; + name = "Hikaru\'s V Shape"; + numgems = "1"; + time = "300000"; + type = "Intermediate"; + artist = "Hikaru"; + }; + new MissionArea(MissionArea) { + Area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "1000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun(Sun) { + direction = "0.5732009 0.2753569 -0.7717638"; + color = "1.000000 1.000000 0.900000 1.000000"; + ambient = "0.400000 0.400000 0.500000 1.000000"; + }; + new StaticShape(SkySphere) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1000 1000 1000"; + dataBlock = "Clear"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/custom/mbu/VShape.dif"; + showTerrainInside = "0"; + }; + new Trigger(Bounds) { + position = "-41.3023 43.7973 7.1459"; + rotation = "1 0 0 0"; + scale = "68.925 37.7473 33.3361"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new SimGroup(GemSpawns) { + + new Item() { + position = "-22.7096 26.0589 16.6281"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + datablock = "GemItemRed"; + rotate = "1"; + static = "1"; + collideable = "0"; + }; + new Item() { + position = "-24.293 23.6833 16.4703"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + datablock = "GemItemYellow"; + rotate = "1"; + static = "1"; + collideable = "0"; + }; + new Item() { + position = "-12.905 16.981 12.1696"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + datablock = "GemItemRed"; + rotate = "1"; + static = "1"; + collideable = "0"; + }; + new Item() { + position = "-7.82642 14.0246 10.9526"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + datablock = "GemItemRed"; + rotate = "1"; + static = "1"; + collideable = "0"; + }; + new Item() { + position = "-17.7852 18.4793 13.7399"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + datablock = "GemItemRed"; + rotate = "1"; + static = "1"; + collideable = "0"; + }; + new Item() { + position = "-27.0342 29.649 18.4265"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + datablock = "GemItemYellow"; + rotate = "1"; + static = "1"; + collideable = "0"; + }; + new Item() { + position = "-36.8498 39.762 23.2814"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + datablock = "GemItemBlue"; + rotate = "1"; + static = "1"; + collideable = "0"; + }; + new Item() { + position = "-1.73613 14.4699 11.8777"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + datablock = "GemItemYellow"; + rotate = "1"; + static = "1"; + collideable = "0"; + }; + new Item() { + position = "5.53063 18.7909 14.6495"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + datablock = "GemItemRed"; + rotate = "1"; + static = "1"; + collideable = "0"; + }; + new Item() { + position = "4.03459 21.4152 14.9927"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + datablock = "GemItemRed"; + rotate = "1"; + static = "1"; + collideable = "0"; + }; + new Item() { + position = "13.4732 25.4567 18.322"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + datablock = "GemItemYellow"; + rotate = "1"; + static = "1"; + collideable = "0"; + }; + new Item() { + position = "13.7174 28.3771 18.7549"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + datablock = "GemItemRed"; + rotate = "1"; + static = "1"; + collideable = "0"; + }; + new Item() { + position = "24.5569 37.8522 23.482"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + datablock = "GemItemBlue"; + rotate = "1"; + static = "1"; + collideable = "0"; + }; + }; + new SimGroup(SpawnPoints) { + + new Trigger() { + position = "-10 11 14.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "-8 11 14.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "-6 11 14.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + }; + new StaticShape() { + position = "-11.7647 15.3986 11.4091"; + rotation = "-0.721511 -0.691263 0.0397232 25.4742"; + scale = "1 1 1"; + dataBlock = "RoundBumper"; + }; + new StaticShape() { + position = "-17.3289 17.7765 13.3"; + rotation = "-0.825907 -0.557047 0.0870404 21.4263"; + scale = "1 1 1"; + dataBlock = "RoundBumper"; + }; + new StaticShape() { + position = "-23.2389 22.6717 15.8"; + rotation = "-0.825907 -0.557047 0.0870404 21.4263"; + scale = "1 1 1"; + dataBlock = "RoundBumper"; + }; + new StaticShape() { + position = "-36.1312 39.0096 22.6718"; + rotation = "-0.721385 -0.688348 0.0760252 17.409"; + scale = "1 1 1"; + dataBlock = "RoundBumper"; + }; + new StaticShape() { + position = "-24.021 27.2722 17.05"; + rotation = "-0.825907 -0.557047 0.0870404 21.4263"; + scale = "1 1 1"; + dataBlock = "RoundBumper"; + }; + new StaticShape() { + position = "-25.2505 26.2772 17.08"; + rotation = "-0.825907 -0.557047 0.0870404 21.4263"; + scale = "1 1 1"; + dataBlock = "RoundBumper"; + }; + new StaticShape() { + position = "-1.09001 14.8137 12.0374"; + rotation = "-0.574424 0.714778 -0.398909 21.0594"; + scale = "1 1 1"; + dataBlock = "RoundBumper"; + }; + new StaticShape() { + position = "4.69876 17.7235 14.05"; + rotation = "-0.620488 0.736034 -0.270645 25.9615"; + scale = "1 1 1"; + dataBlock = "RoundBumper"; + }; + new StaticShape() { + position = "5.09267 19.7178 14.65"; + rotation = "-0.613468 0.730574 -0.299866 22.3664"; + scale = "1 1 1"; + dataBlock = "RoundBumper"; + }; + new StaticShape() { + position = "12.6723 26.4924 17.9777"; + rotation = "-0.613468 0.730574 -0.299866 22.3664"; + scale = "1 1 1"; + dataBlock = "RoundBumper"; + }; + new StaticShape() { + position = "22.99 36.3711 22.7056"; + rotation = "-0.5961 0.669711 -0.44289 20.0079"; + scale = "1 1 1"; + dataBlock = "RoundBumper"; + }; + new StaticShape() { + position = "15.1458 29.847 19.3517"; + rotation = "-0.623573 0.596785 -0.504981 18.7582"; + scale = "1 1 1"; + dataBlock = "RoundBumper"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/custom/Landscape.mis b/data/multiplayer/hunt/custom/Landscape.mis new file mode 100644 index 00000000..6b0c9791 --- /dev/null +++ b/data/multiplayer/hunt/custom/Landscape.mis @@ -0,0 +1,1755 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + name = "Landscape"; + type = "custom"; + level = "8"; + desc = "Collect the gems on this diverse landscape of frictions!"; + artist = "Kwill"; + gameMode = "hunt"; + game = "Platinum"; + time = "210000"; + maxGemsPerSpawn = "5"; + radiusFromGem = "15"; + score0 = "25"; + score1 = "50"; + platinumscore0 = "60"; + platinumscore1 = "90"; + ultimatescore0 = "110"; + ultimatescore1 = "150"; + alarmStartTime = "20"; + overviewHeight = "-2"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "500"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-31 1.3684e-38"; + fogVolume2 = "-1 1.07208e-14 8.756e-14"; + fogVolume3 = "-1 5.1012e-10 2.05098e-08"; + materialList = "~/data/skies/Bonus/Bonus_Sky.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.638261 0.459006 -0.61801"; + color = "1.400000 1.200000 0.400000 1.000000"; + ambient = "0.300000 0.300000 0.400000 1.000000"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Flanked.ogg"; + description = "AudioMusic"; + preload = "0"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/custom/landscape.dif"; + showTerrainInside = "0"; + }; + new Trigger(Bounds) { + position = "-100 100 -3.75"; + rotation = "1 0 0 0"; + scale = "200 200 200"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Item() { + position = "15.5 4 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10.5 7.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 10.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 15.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 19.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 18 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13.5 15 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 12 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 21.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 14 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19.5 18.5 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17.5 15.5 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 13 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16.5 23 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 27 3.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25.5 15.5 3.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22.5 21 3.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.5 22 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23.5 27.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17.5 32 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24.5 31.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30 26 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27.5 29 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31.5 33.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemblue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 -1 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.6 -6.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.5 -8.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 -13.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10.5 -13.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 -15 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 -17 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 -19 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 -19 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 -17 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 -19 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 -12.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 -9 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 -15.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 -9.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26 -13 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 -1 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 1 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 3 11.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 5 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 -1 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16.5 1 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14.5 -4 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 4 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 4 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 4 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18.5 9.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13.5 9.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 7 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemblue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "-25.6 -33 4.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Item() { + position = "-21.5 -18 6.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18.5 -18 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 -18 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 -29 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 -29 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 -33 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 -37 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 -37 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26 -46 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20.5 -46 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15.5 -46 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32 -40 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32 -35 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32 -30.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 -36 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 -44 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4 -52 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemblue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7.5 -52 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemblue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 -50.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.5 -47 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 -47 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-0.5 -50.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9.5 -24.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 -24.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.5 -30.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.5 -36.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 -36.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14.5 -34 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6.5 -31 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 -32 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23.5 -37 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemblue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19.5 -35 3.9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23 -31 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.5 -26 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22.5 -24.5 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 -9 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 -5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -3 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 -9 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -7 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -11 4.4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -3 4.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 3.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 3.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 0 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23 -16 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 -12 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 -12 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 -4 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23 -8.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 -8.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 11 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.5 11 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4.5 12 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 14 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 19 2.35"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10.5 6.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 19 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 19 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 21 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 21 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 23 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 23 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 21 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 25 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 25 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 33 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 33 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 29 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 23 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23 21 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 35 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemblue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9.5 15.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 21 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 13 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 -1 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 -23 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 -25 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 -24 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 -19 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 -15 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -17 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 -19 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 -20 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23.5 -21 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemblue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30.5 19.5 4.1775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15.5 18 2.6775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.5 -3.5 2.1775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30 -4 6.1775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32 -28 6.1775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 -33 4.1775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 -16 5.6775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9.5 -0.5 2.1775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 29 2.1775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 -17 2.1775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21.5 30 4.1875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 7 3.4375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 2 6.1875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -17.5 6.1875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.5 -28.5 0.1875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 -13 2.1875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23 -0.5 6.1875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9.5 11.5 2.1875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 -21 2.1875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22.6 17 3.4835"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 8 5.9835"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32 -46 5.9835"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 6 2.625"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -16 2.625"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "3 -18 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Item() { + position = "-9 1 5.945"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 -37 2.145"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 -47 2.145"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 -21 2.145"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 27 1.945"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 5 3.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 9 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 7 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 3 4.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 15 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 8 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24 8 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.5 8 6.4835"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 19 2.125"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 -9 5.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "5.8 14.6 4.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "-20.8 15.4 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "-8 9.2 3.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "-4.2 -2 2.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "-21.6 -4.6 7.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "10 -29.6 -0.4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "17 -4.8 7.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "16.6 9.2 7.4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/custom/Landscape.png b/data/multiplayer/hunt/custom/Landscape.png new file mode 100644 index 00000000..c97e2df2 Binary files /dev/null and b/data/multiplayer/hunt/custom/Landscape.png differ diff --git a/data/multiplayer/hunt/custom/Layered.mis b/data/multiplayer/hunt/custom/Layered.mis new file mode 100644 index 00000000..e24f857a --- /dev/null +++ b/data/multiplayer/hunt/custom/Layered.mis @@ -0,0 +1,1099 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + gameMode = "Hunt"; + name = "Layered"; + music = "Tim Trance.ogg"; + type = "Custom"; + level = "9"; + desc = "Layered"; + artist = "Buzzmusic"; + Gamemode = "Hunt"; + game = "Custom"; + time = "240000"; + maxGemsPerSpawn = "7"; + radiusFromGem = "45"; + score[0] = "20"; + score[1] = "40"; + platinumScore[0] = "50"; + platinumScore[1] = "75"; + ultimateScore[0] = "80"; + ultimateScore[1] = "125"; + alarmStartTime = "20"; + overviewHeight = "15"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "500"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-31 1.3684e-38"; + fogVolume2 = "-1 1.07208e-14 8.756e-14"; + fogVolume3 = "-1 5.1012e-10 2.05098e-08"; + materialList = "~/data/skies/Beginner/Beginner_Sky.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.638261 0.459006 -0.61801"; + color = "1.400000 1.200000 0.400000 1.000000"; + ambient = "0.300000 0.300000 0.400000 1.000000"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/custom/Layered.dif"; + showTerrainInside = "0"; + }; + new Item() { + position = "42 38 92.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "48 28 94.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "37.5 22.5 91"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "45.5 16 93.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "39.5 6 91.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "50.5 6 95.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "5 3 86.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "13 -1 86.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "11 -17 86.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-4 -10.5 89"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-6 -6 89"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "0 -9 89"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "2 -6 89"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-13 -33 83"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-21 -33 82"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-29 -25 83"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-32 -36 79.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-28 -48 79.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-18 -42 79.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-41 -41 79"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-41 -25 79"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-53 -21 79"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-49 -29 79"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-49 -37 79"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-57 -37 79"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "1 -42 77.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 -50 76.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -45 77"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 -41 77"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 -51 77"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29 -51 77"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -41 77"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31 -43 77"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 -34 98"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20 -26 98"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24 -30 98"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32 -21 98"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 -24 118"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28 -44 118"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 -34 118"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 34 118"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28 44 118"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 24 118"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 0 121.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 43 126.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-46 30 113"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-46 18 113"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-54 24 113"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-59.5 26 88"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-59.5 16 88"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-49.5 16 88"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-53.5 22 87"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-45 39 112"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-68 -34 78.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-66 -40 78.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-25 9 116"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-45 -11 116"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-25 9 95.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-45 -11 95.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-40 -6 74.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-35 -1 95.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-30 4 74.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-25 9 74.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-45 -11 74.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-35 -1 74.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-30 31 97"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "14 22 92.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "18 14 90.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "22 18 89.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-6 18 90.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-10 20 92.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-13 29 95.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "14 19 89"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-38 56 92"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-42 52 92"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-48 50 92"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-50 58 92"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-54 54 92"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-28 52 92.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-26 58 93.125"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-32 54 92"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + pickUpCheckpoint = "0"; + }; + new Item() { + position = "-68.5 53 92.1775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-76 55 102.177"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-68.5 60.5 112.177"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-65 43 99.1775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53 41 107.177"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-69 -48 97.2666"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 -43 79.2666"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 -43 79.6775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 -23 79.6775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 -25 84.7666"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 3 86.7666"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 -19 87.1869"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 -13 87.1869"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 1 87.1775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 58 95.1869"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 -41 77.2666"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 -49 77.6775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 53 118.177"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger(Bounds) { + position = "-182.5 167.5 59.2"; + rotation = "1 0 0 0"; + scale = "336 321 396.5"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Metropolis.ogg"; + description = "AudioMusic"; + preload = "0"; + }; + new Trigger(frfrf) { + position = "-13.5188 57.5522 94.5859"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger(frfrf) { + position = "18.6527 29.6843 88.3995"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger(frfrf) { + position = "10.6347 -6.283 85.2152"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger(frfrf) { + position = "-21.4753 -24.4545 83.2339"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger(frfrf) { + position = "-69.7154 -50.7708 97.3526"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger(frfrf) { + position = "-53.4651 15.4324 111.886"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger(frfrf) { + position = "-35.3241 -0.476662 115.459"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger(frfrf) { + position = "26.6237 -52.4982 117.256"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger(frfrf) { + position = "-37.762 31.3275 95.4073"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/custom/Layered.png b/data/multiplayer/hunt/custom/Layered.png new file mode 100644 index 00000000..624e3722 Binary files /dev/null and b/data/multiplayer/hunt/custom/Layered.png differ diff --git a/data/multiplayer/hunt/custom/Meltdown.mis b/data/multiplayer/hunt/custom/Meltdown.mis new file mode 100644 index 00000000..335cb41f --- /dev/null +++ b/data/multiplayer/hunt/custom/Meltdown.mis @@ -0,0 +1,640 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + name = "Meltdown"; + type = "Custom"; + level = "10"; + desc = "Fierce competition is heard from within the meltdown arena...can you handle the pressure?"; + startHelpText = "When in doubt, camp the blue."; + artist = "Aayrl"; + music = "The Race.ogg"; + Gamemode = "hunt"; + game = "Custom"; + time = "180000"; + maxGemsPerSpawn = "6"; + radiusFromGem = "15"; + score[0] = "20"; + score[1] = "40"; + platinumScore[0] = "45"; + platinumScore[1] = "75"; + ultimateScore[0] = "90"; + ultimateScore[1] = "130"; + alarmStartTime = "25"; + overviewHeight = "15"; + }; + + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "1000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun(Sun) { + direction = "0.638261 0.459006 -0.61801"; + color = "1.400000 1.200000 0.400000 1.000000"; + ambient = "0.300000 0.300000 0.400000 1.000000"; + }; + new StaticShape(SkySphere) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1000 1000 1000"; + dataBlock = "Dusk"; + }; + new Trigger(Bounds) { + position = "-51 51 -3"; + rotation = "1 0 0 0"; + scale = "102 102 1000"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new SimGroup(Interiors) { + + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/custom/meltdown.dif"; + showTerrainInside = "0"; + }; + }; + new SimGroup(SpawnTriggers) { + + new Trigger(BasicSpawnTrigger) { + position = "25 0 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger(BasicSpawnTrigger) { + position = "-25 0 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger(BasicSpawnTrigger) { + position = "0 25 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger(BasicSpawnTrigger) { + position = "0 -25 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + }; + new SimGroup(Gems) { + + new Item() { + position = "-9 0 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 0 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 0 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 17 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -17 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40 -31 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 -40 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31 -40 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31 -31 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31 31 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40 31 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31 40 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40 -31 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40 -40 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40 40 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40 40 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40 -40 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 -31 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 -41 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41 -24 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41 24 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 41 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24 41 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 9 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 9 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 0 10.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 9 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 0 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -9 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -9 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 -9 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "41 24 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "41 -24 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24 -41 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 31 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 40 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40 31 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(PowerUps) { + + new Item() { + position = "0 -41 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "41 0 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41 0 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 41 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 25 4.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 25 4.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 -25 4.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -25 4.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 -33 2.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 -17 2.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 -17 2.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 17 2.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 17 2.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 33 2.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 33 2.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-42 -42 6.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42 -42 6.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42 42 6.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-42 42 6.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 -33 2.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; +}; +//--- OBJECT WRITE END --- + diff --git a/data/multiplayer/hunt/custom/Meltdown.png b/data/multiplayer/hunt/custom/Meltdown.png new file mode 100644 index 00000000..a4917d3b Binary files /dev/null and b/data/multiplayer/hunt/custom/Meltdown.png differ diff --git a/data/multiplayer/hunt/custom/PointsOfTheRadar.jpg b/data/multiplayer/hunt/custom/PointsOfTheRadar.jpg new file mode 100644 index 00000000..dcf4c021 Binary files /dev/null and b/data/multiplayer/hunt/custom/PointsOfTheRadar.jpg differ diff --git a/data/multiplayer/hunt/custom/PointsOfTheRadar.mis b/data/multiplayer/hunt/custom/PointsOfTheRadar.mis new file mode 100644 index 00000000..ff8de59d --- /dev/null +++ b/data/multiplayer/hunt/custom/PointsOfTheRadar.mis @@ -0,0 +1,5435 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + artist = "Xi am classicx"; + name = "Points of the Radar"; + maxGemsPerSpawn = "5"; + Difficulty = "8"; + game = "Ultra"; + time = "240000"; + type = "Custom"; + level = "13"; + gameMode = "hunt"; + desc = "Grab the gems on the islands, but mind the gaps!"; + radiusFromGem = "10"; + }; + new SimGroup(SpawnPoints) { + + new Trigger() { + position = "42.5 -4.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "34.5 -12.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "34.5 3.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "12.5 25.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "4.5 33.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "-3.5 25.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "-25.5 3.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "-33.5 -4.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "-25.5 -12.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "-3.5 -34.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "4.5 -42.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "12.5 -34.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "4.5 -10.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "-1.5 -4.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "4.5 1.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "10.5 -4.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + }; + new Item() { + position = "5 25 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 -0.930435 -0.365184"; + fogVolume2 = "-1 0.0780969 -0.701916"; + fogVolume3 = "-1 0.998288 0.0494325"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 0.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "5000 5000 5000"; + dataBlock = "clear"; + }; + new Sun() { + direction = "0.5732009 0.2753569 -0.7717638"; + color = "1.000000 1.000000 0.900000 1.000000"; + ambient = "0.400000 0.400000 0.500000 1.000000"; + shadowColor = "0.000000 0.000000 0.150000 0.350000"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/custom/mbu/pointsoftheradarMBU.dif"; + showTerrainInside = "0"; + }; + new SimGroup(MustChange_g) { + + new Path() { + isLooping = "0"; + + new Marker() { + position = "5.25 7 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "1"; + msToNext = "2500"; + smoothingType = "Spline"; + }; + new Marker() { + position = "17.25 7 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "2"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "17.25 7 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "3"; + msToNext = "5000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "17.25 -17 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "4"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "17.25 -17 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "5"; + msToNext = "5000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-6.75 -17 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "6"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-6.75 -17 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "7"; + msToNext = "5000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-6.75 7 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "8"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-6.75 7 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "9"; + msToNext = "2500"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "5.25 7 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "10"; + msToNext = "0"; + smoothingType = "Spline"; + }; + }; + new PathedInterior(MustChange) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "PathedDefault"; + interiorResource = "platinum/data/multiplayer/interiors/custom/mbu/pointsoftheradarMBU.dif"; + interiorIndex = "0"; + basePosition = "0 0 0"; + baseRotation = "1 0 0 0"; + baseScale = "1 1 1"; + initialTargetPosition = "-1"; + }; + }; + new SimGroup(MustChange_g) { + + new Path() { + isLooping = "0"; + + new Marker() { + position = "17.25 -4.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "1"; + msToNext = "2500"; + smoothingType = "Spline"; + }; + new Marker() { + position = "17.25 -16.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "2"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "17.25 -16.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "3"; + msToNext = "5000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-6.75 -16.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "4"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-6.75 -16.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "5"; + msToNext = "5000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-6.75 7.25 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "6"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-6.75 7.25 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "7"; + msToNext = "5000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "17.25 7.25 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "8"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "17.25 7.25 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "9"; + msToNext = "2500"; + smoothingType = "Spline"; + }; + new Marker() { + position = "17.25 -4.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "10"; + msToNext = "0"; + smoothingType = "Spline"; + }; + }; + new PathedInterior(MustChange) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "PathedDefault"; + interiorResource = "platinum/data/multiplayer/interiors/custom/mbu/pointsoftheradarMBU.dif"; + interiorIndex = "1"; + basePosition = "0 0 0"; + baseRotation = "1 0 0 0"; + baseScale = "1 1 1"; + initialTargetPosition = "-1"; + }; + }; + new SimGroup(MustChange_g) { + + new Path() { + isLooping = "0"; + + new Marker() { + position = "5.25 -16.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "1"; + msToNext = "2500"; + smoothingType = "Spline"; + }; + new Marker() { + position = "-6.75 -16.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "2"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-6.75 -16.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "3"; + msToNext = "5000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-6.75 7.25 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "4"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-6.75 7.25 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "5"; + msToNext = "5000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "17.25 7.25 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "6"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "17.25 7.25 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "7"; + msToNext = "5000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "17.25 -16.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "8"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "17.25 -16.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "9"; + msToNext = "2500"; + smoothingType = "Spline"; + }; + new Marker() { + position = "5.25 -16.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "10"; + msToNext = "0"; + smoothingType = "Spline"; + }; + }; + new PathedInterior(MustChange) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "PathedDefault"; + interiorResource = "platinum/data/multiplayer/interiors/custom/mbu/pointsoftheradarMBU.dif"; + interiorIndex = "2"; + basePosition = "0 0 0"; + baseRotation = "1 0 0 0"; + baseScale = "1 1 1"; + initialTargetPosition = "-1"; + }; + }; + new SimGroup(MustChange_g) { + + new Path() { + isLooping = "0"; + + new Marker() { + position = "-6.75 -4.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "1"; + msToNext = "2500"; + smoothingType = "Spline"; + }; + new Marker() { + position = "-6.75 7.25 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "2"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-6.75 7.25 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "3"; + msToNext = "5000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "17.25 7.25 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "4"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "17.25 7.25 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "5"; + msToNext = "5000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "17.25 -16.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "6"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "17.25 -16.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "7"; + msToNext = "5000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-6.75 -16.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "8"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-6.75 -16.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "9"; + msToNext = "2500"; + smoothingType = "Spline"; + }; + new Marker() { + position = "-6.75 -4.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "10"; + msToNext = "0"; + smoothingType = "Spline"; + }; + }; + new PathedInterior(MustChange) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "PathedDefault"; + interiorResource = "platinum/data/multiplayer/interiors/custom/mbu/pointsoftheradarMBU.dif"; + interiorIndex = "3"; + basePosition = "0 0 0"; + baseRotation = "1 0 0 0"; + baseScale = "1 1 1"; + initialTargetPosition = "-1"; + }; + }; + new SimGroup(MustChange_g) { + + new Path() { + isLooping = "0"; + + new Marker() { + position = "-9.75 10.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "1"; + msToNext = "7500"; + smoothingType = "Spline"; + }; + new Marker() { + position = "20.25 10.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "2"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "20.25 10.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "3"; + msToNext = "7500"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "20.25 -19.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "4"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "20.25 -19.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "5"; + msToNext = "7500"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-9.75 -19.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "6"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-9.75 -19.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "7"; + msToNext = "7500"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-9.75 10.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "8"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + }; + new PathedInterior(MustChange) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "PathedDefault"; + interiorResource = "platinum/data/multiplayer/interiors/custom/mbu/pointsoftheradarMBU.dif"; + interiorIndex = "4"; + basePosition = "0 0 0"; + baseRotation = "1 0 0 0"; + baseScale = "1 1 1"; + initialTargetPosition = "-1"; + }; + }; + new SimGroup(MustChange_g) { + + new Path() { + isLooping = "0"; + + new Marker() { + position = "20.25 10.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "1"; + msToNext = "7500"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "20.25 -19.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "2"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "20.25 -19.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "3"; + msToNext = "7500"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-9.75 -19.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "4"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-9.75 -19.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "5"; + msToNext = "7500"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-9.75 10.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "6"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-9.75 10.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "7"; + msToNext = "7500"; + smoothingType = "Spline"; + }; + new Marker() { + position = "20.25 10.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "8"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + }; + new PathedInterior(MustChange) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "PathedDefault"; + interiorResource = "platinum/data/multiplayer/interiors/custom/mbu/pointsoftheradarMBU.dif"; + interiorIndex = "5"; + basePosition = "0 0 0"; + baseRotation = "1 0 0 0"; + baseScale = "1 1 1"; + initialTargetPosition = "-1"; + }; + }; + new SimGroup(MustChange_g) { + + new Path() { + isLooping = "0"; + + new Marker() { + position = "20.25 -19.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "1"; + msToNext = "7500"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-9.75 -19.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "2"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-9.75 -19.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "3"; + msToNext = "7500"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-9.75 10.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "4"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-9.75 10.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "5"; + msToNext = "7500"; + smoothingType = "Spline"; + }; + new Marker() { + position = "20.25 10.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "6"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "20.25 10.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "7"; + msToNext = "7500"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "20.25 -19.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "8"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + }; + new PathedInterior(MustChange) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "PathedDefault"; + interiorResource = "platinum/data/multiplayer/interiors/custom/mbu/pointsoftheradarMBU.dif"; + interiorIndex = "6"; + basePosition = "0 0 0"; + baseRotation = "1 0 0 0"; + baseScale = "1 1 1"; + initialTargetPosition = "-1"; + }; + }; + new SimGroup(MustChange_g) { + + new Path() { + isLooping = "0"; + + new Marker() { + position = "-9.75 -19.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "1"; + msToNext = "7500"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-9.75 10.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "2"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-9.75 10.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "3"; + msToNext = "7500"; + smoothingType = "Spline"; + }; + new Marker() { + position = "20.25 10.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "4"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "20.25 10.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "5"; + msToNext = "7500"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "20.25 -19.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "6"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "20.25 -19.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "7"; + msToNext = "7500"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-9.75 -19.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "8"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + }; + new PathedInterior(MustChange) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "PathedDefault"; + interiorResource = "platinum/data/multiplayer/interiors/custom/mbu/pointsoftheradarMBU.dif"; + interiorIndex = "7"; + basePosition = "0 0 0"; + baseRotation = "1 0 0 0"; + baseScale = "1 1 1"; + initialTargetPosition = "-1"; + }; + }; + new SimGroup(MustChange_g) { + + new Path() { + isLooping = "0"; + + new Marker() { + position = "5.25 13 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "1"; + msToNext = "6000"; + smoothingType = "Spline"; + }; + new Marker() { + position = "23.25 13 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "2"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "23.25 13 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "3"; + msToNext = "12000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "23.25 -23 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "4"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "23.25 -23 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "5"; + msToNext = "12000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-12.75 -23 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "6"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-12.75 -23 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "7"; + msToNext = "12000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-12.75 13 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "8"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-12.75 13 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "9"; + msToNext = "6000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "5.25 13 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "10"; + msToNext = "0"; + smoothingType = "Spline"; + }; + }; + new PathedInterior(MustChange) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "PathedDefault"; + interiorResource = "platinum/data/multiplayer/interiors/custom/mbu/pointsoftheradarMBU.dif"; + interiorIndex = "8"; + basePosition = "0 0 0"; + baseRotation = "1 0 0 0"; + baseScale = "1 1 1"; + initialTargetPosition = "-1"; + }; + }; + new SimGroup(MustChange_g) { + + new Path() { + isLooping = "0"; + + new Marker() { + position = "23.25 -4.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "1"; + msToNext = "6000"; + smoothingType = "Spline"; + }; + new Marker() { + position = "23.25 -22.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "2"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "23.25 -22.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "3"; + msToNext = "12000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-12.75 -22.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "4"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-12.75 -22.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "5"; + msToNext = "12000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-12.75 13.25 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "6"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-12.75 13.25 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "7"; + msToNext = "12000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "23.25 13.25 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "8"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "23.25 13.25 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "9"; + msToNext = "6000"; + smoothingType = "Spline"; + }; + new Marker() { + position = "23.25 -4.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "10"; + msToNext = "0"; + smoothingType = "Spline"; + }; + }; + new PathedInterior(MustChange) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "PathedDefault"; + interiorResource = "platinum/data/multiplayer/interiors/custom/mbu/pointsoftheradarMBU.dif"; + interiorIndex = "9"; + basePosition = "0 0 0"; + baseRotation = "1 0 0 0"; + baseScale = "1 1 1"; + initialTargetPosition = "-1"; + }; + }; + new SimGroup(MustChange_g) { + + new Path() { + isLooping = "0"; + + new Marker() { + position = "5.25 -22.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "1"; + msToNext = "6000"; + smoothingType = "Spline"; + }; + new Marker() { + position = "-12.75 -22.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "2"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-12.75 -22.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "3"; + msToNext = "12000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-12.75 13.25 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "4"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-12.75 13.25 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "5"; + msToNext = "12000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "23.25 13.25 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "6"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "23.25 13.25 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "7"; + msToNext = "12000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "23.25 -22.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "8"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "23.25 -22.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "9"; + msToNext = "6000"; + smoothingType = "Spline"; + }; + new Marker() { + position = "5.25 -22.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "10"; + msToNext = "0"; + smoothingType = "Spline"; + }; + }; + new PathedInterior(MustChange) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "PathedDefault"; + interiorResource = "platinum/data/multiplayer/interiors/custom/mbu/pointsoftheradarMBU.dif"; + interiorIndex = "10"; + basePosition = "0 0 0"; + baseRotation = "1 0 0 0"; + baseScale = "1 1 1"; + initialTargetPosition = "-1"; + }; + }; + new SimGroup(MustChange_g) { + + new Path() { + isLooping = "0"; + + new Marker() { + position = "-12.75 -4.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "1"; + msToNext = "6000"; + smoothingType = "Spline"; + }; + new Marker() { + position = "-12.75 13.25 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "2"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-12.75 13.25 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "3"; + msToNext = "12000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "23.25 13.25 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "4"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "23.25 13.25 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "5"; + msToNext = "12000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "23.25 -22.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "6"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "23.25 -22.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "7"; + msToNext = "12000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-12.75 -22.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "8"; + msToNext = "1000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-12.75 -22.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "9"; + msToNext = "6000"; + smoothingType = "Spline"; + }; + new Marker() { + position = "-12.75 -4.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "10"; + msToNext = "0"; + smoothingType = "Spline"; + }; + }; + new PathedInterior(MustChange) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "PathedDefault"; + interiorResource = "platinum/data/multiplayer/interiors/custom/mbu/pointsoftheradarMBU.dif"; + interiorIndex = "11"; + basePosition = "0 0 0"; + baseRotation = "1 0 0 0"; + baseScale = "1 1 1"; + initialTargetPosition = "-1"; + }; + }; + new Trigger(Bounds) { + position = "-169.459 269.651 -3"; + rotation = "1 0 0 0"; + scale = "309.196 880.96 5000"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Item() { + position = "30 -0 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40 0 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40 -10 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30 -10 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -9 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31 -5 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -1 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 -5 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -5 0.5500002"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 5 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 5 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 -15 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 -15 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31 -15 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 -15 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 -1 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 -9 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 5 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31 5 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 3 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "43 -5 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -13 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 -5 2.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 -9 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 -1 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 29 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6.75 26.75 3.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.25 26.75 3.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.25 23.25 3.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6.75 23.25 3.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 35 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 35 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 35 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 35 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 29 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 21 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 15 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 15 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 21 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 20 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 15 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 15 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 -29 2.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 31 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 25 2.268644"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7.25 -2.75 2.687"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 30 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 20 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 -25 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 30 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -5 4.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26.25 -6.25 3.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23.75 -6.25 3.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23.75 -3.75 3.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26.25 -3.75 3.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30 0 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 0 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 -10 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30 -10 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 -5 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -11 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 -15 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 -15 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 -9 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 -1 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 5 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 5 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 5 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35 5 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35 -1 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35 -9 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35 -15 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 -15 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 19 2.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 1 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22.5 -5 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -2.5 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27.5 -5 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -7.5 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17.5 -12.5 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17.5 2.5 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32.5 2.5 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32.5 -12.5 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 -35 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 -33.25 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 -36.75 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.25 -35 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6.75 -35 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 -40 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -40 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -30 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 -30 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 -38 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 -39 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 -41 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -42 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 -42 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 -39 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 -38 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 -41 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 -32 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 -31 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 -29 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 -28 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 -31 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -28 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 -32 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 -29 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 -35 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 -5 2.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 -35 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 -41 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 -45 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 -45 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 -39 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 -31 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -25 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 -25 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -25 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -39 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -31 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 5 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -45 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -45 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 -5 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4 -4 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 -4 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 -6 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4 -6 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -10 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 0 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 0 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 -10 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 -14 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 4 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 4 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 -14 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 -9 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 -5 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 -1 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -5 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "37.5 -2.5 2.484221"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 -5 2.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 3 2.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 -5.25 2.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 2.25 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2.25 0 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.25 0 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 2.25 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 -12.25 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.25 -10 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2.25 -10 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -12.25 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 -1 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 -9 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 -15 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -15 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -9 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -1 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 5 2.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 -13 2.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "37.5 -7.5 2.500503"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32.5 -2.5 2.500503"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32.5 -7.5 2.484221"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 25 2.268644"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2.75 -7.25 2.687"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2.75 -32.75 2.268644"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7.25 -7.25 2.484221"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2.75 -2.75 2.484221"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 35 2.484221"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.75 17.25 2.484221"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2.75 17.25 2.484221"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27.5 -2.5 2.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27.5 -7.5 2.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22.5 -7.5 2.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22.5 -2.5 2.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2.75 -42.75 2.268644"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7.25 -42.75 2.484221"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.75 -37.25 2.268644"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.75 -32.75 2.484221"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2.75 -37.25 2.484221"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new ScriptObject() { + obj = "72943"; + amount = "1"; + user = "7024"; + this = "116"; + }; + new ScriptObject() { + obj = "85885"; + amount = "1"; + user = "7024"; + this = "132"; + }; + new ScriptObject() { + obj = "85885"; + amount = "1"; + user = "7024"; + this = "132"; + }; + new ScriptObject() { + obj = "87177"; + amount = "1"; + user = "7024"; + this = "149"; + }; + new ScriptObject() { + obj = "87177"; + amount = "1"; + user = "7024"; + this = "149"; + }; + new ScriptObject() { + obj = "28931"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "28700"; + amount = "1"; + user = "7024"; + this = "105"; + }; + new ScriptObject() { + obj = "28700"; + amount = "1"; + user = "7024"; + this = "105"; + }; + new ScriptObject() { + obj = "28931"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "31440"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "31440"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "31620"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "31620"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "31725"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "31725"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "36679"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "36679"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "30368"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "30368"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "74455"; + amount = "1"; + user = "7024"; + this = "116"; + }; + new ScriptObject() { + obj = "74455"; + amount = "1"; + user = "7024"; + this = "116"; + }; + new ScriptObject() { + obj = "25555"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "25555"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "14846"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "14846"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "23542"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "23542"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "14790"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "14790"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "15512"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "15512"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "15408"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "15408"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "13572"; + amount = "1"; + user = "7024"; + this = "105"; + }; + new ScriptObject() { + obj = "13572"; + amount = "1"; + user = "7024"; + this = "105"; + }; + new ScriptObject() { + obj = "36038"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "36038"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "28931"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "28931"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "36248"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "28856"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "36248"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "28856"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "28700"; + amount = "1"; + user = "7024"; + this = "105"; + }; + new ScriptObject() { + obj = "28700"; + amount = "1"; + user = "7024"; + this = "105"; + }; + new ScriptObject() { + obj = "36353"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "36353"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "31440"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "31440"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "74455"; + amount = "1"; + user = "7024"; + this = "116"; + }; + new ScriptObject() { + obj = "74455"; + amount = "1"; + user = "7024"; + this = "116"; + }; + new ScriptObject() { + obj = "39426"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "39426"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "42195"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "42350"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "42195"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "42350"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "86600"; + amount = "1"; + user = "7024"; + this = "132"; + }; + new ScriptObject() { + obj = "86600"; + amount = "1"; + user = "7024"; + this = "132"; + }; + new ScriptObject() { + obj = "42832"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "42832"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "43424"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "39886"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "39886"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "43424"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "39094"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "39094"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "11699"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "11699"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "9937"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "9937"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "10013"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "10013"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "10997"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "10997"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "8931"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "8931"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "8947"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "8947"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "71946"; + amount = "1"; + user = "7024"; + this = "149"; + }; + new ScriptObject() { + obj = "71946"; + amount = "1"; + user = "7024"; + this = "149"; + }; + new ScriptObject() { + obj = "8893"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "8893"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "68394"; + amount = "1"; + user = "7024"; + this = "116"; + }; + new ScriptObject() { + obj = "68394"; + amount = "1"; + user = "7024"; + this = "116"; + }; + new ScriptObject() { + obj = "39251"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "39251"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "38660"; + amount = "1"; + user = "7024"; + this = "105"; + }; + new ScriptObject() { + obj = "38660"; + amount = "1"; + user = "7024"; + this = "105"; + }; + new ScriptObject() { + obj = "41318"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "41318"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "46119"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "46119"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "46326"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "46326"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "44985"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "44985"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "45443"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "45443"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "49847"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "49847"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "41318"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "46326"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "44985"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "41318"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "44985"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "46326"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "38937"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "38937"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "46119"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "46119"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "49255"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "49255"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "78280"; + amount = "1"; + user = "7024"; + this = "124"; + }; + new ScriptObject() { + obj = "78280"; + amount = "1"; + user = "7024"; + this = "124"; + }; + new ScriptObject() { + obj = "28002"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "28002"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "77083"; + amount = "1"; + user = "7024"; + this = "132"; + }; + new ScriptObject() { + obj = "77083"; + amount = "1"; + user = "7024"; + this = "132"; + }; + new ScriptObject() { + obj = "20774"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "20774"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "16542"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "16542"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "16437"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "16437"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "23542"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "23542"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "14790"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "14790"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "13572"; + amount = "1"; + user = "7024"; + this = "105"; + }; + new ScriptObject() { + obj = "13572"; + amount = "1"; + user = "7024"; + this = "105"; + }; + new ScriptObject() { + obj = "28856"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "28700"; + amount = "1"; + user = "7024"; + this = "105"; + }; + new ScriptObject() { + obj = "28700"; + amount = "1"; + user = "7024"; + this = "105"; + }; + new ScriptObject() { + obj = "28856"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "36353"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "36353"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "28931"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "28931"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "84100"; + amount = "1"; + user = "7024"; + this = "152"; + }; + new ScriptObject() { + obj = "84100"; + amount = "1"; + user = "7024"; + this = "152"; + }; + new ScriptObject() { + obj = "29178"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "36038"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "29178"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "36038"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "30368"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "30368"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "78871"; + amount = "1"; + user = "7024"; + this = "124"; + }; + new ScriptObject() { + obj = "78871"; + amount = "1"; + user = "7024"; + this = "124"; + }; + new ScriptObject() { + obj = "67322"; + amount = "1"; + user = "7024"; + this = "116"; + }; + new ScriptObject() { + obj = "67322"; + amount = "1"; + user = "7024"; + this = "116"; + }; + new ScriptObject() { + obj = "9002"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "71443"; + amount = "1"; + user = "7024"; + this = "152"; + }; + new ScriptObject() { + obj = "9002"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "71443"; + amount = "1"; + user = "7024"; + this = "152"; + }; + new ScriptObject() { + obj = "8751"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "8751"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "9078"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "9078"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "8839"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "8839"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "69398"; + amount = "1"; + user = "7024"; + this = "152"; + }; + new ScriptObject() { + obj = "69398"; + amount = "1"; + user = "7024"; + this = "152"; + }; + new ScriptObject() { + obj = "9243"; + amount = "1"; + user = "7024"; + this = "105"; + }; + new ScriptObject() { + obj = "9243"; + amount = "1"; + user = "7024"; + this = "105"; + }; + new ScriptObject() { + obj = "8931"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "8931"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "71946"; + amount = "1"; + user = "7024"; + this = "149"; + }; + new ScriptObject() { + obj = "71946"; + amount = "1"; + user = "7024"; + this = "149"; + }; + new ScriptObject() { + obj = "8737"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "8737"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "9614"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "9614"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "71443"; + amount = "1"; + user = "7024"; + this = "152"; + }; + new ScriptObject() { + obj = "71443"; + amount = "1"; + user = "7024"; + this = "152"; + }; + new ScriptObject() { + obj = "70106"; + amount = "1"; + user = "7024"; + this = "149"; + }; + new ScriptObject() { + obj = "70106"; + amount = "1"; + user = "7024"; + this = "149"; + }; + new ScriptObject() { + obj = "9243"; + amount = "1"; + user = "7024"; + this = "105"; + }; + new ScriptObject() { + obj = "9243"; + amount = "1"; + user = "7024"; + this = "105"; + }; + new ScriptObject() { + obj = "9002"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "9002"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "10680"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "10819"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "10819"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "10680"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "11946"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "11946"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "64541"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "64541"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "57600"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "57600"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "53799"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "53799"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "78280"; + amount = "1"; + user = "7024"; + this = "124"; + }; + new ScriptObject() { + obj = "78280"; + amount = "1"; + user = "7024"; + this = "124"; + }; + new ScriptObject() { + obj = "53210"; + amount = "1"; + user = "7024"; + this = "105"; + }; + new ScriptObject() { + obj = "53210"; + amount = "1"; + user = "7024"; + this = "105"; + }; + new ScriptObject() { + obj = "61533"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "61533"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "55659"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "55659"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "79543"; + amount = "1"; + user = "7024"; + this = "149"; + }; + new ScriptObject() { + obj = "79543"; + amount = "1"; + user = "7024"; + this = "149"; + }; + new ScriptObject() { + obj = "64384"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "64384"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "61409"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "61409"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "49430"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "49430"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "49847"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "49847"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "41318"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "41318"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "48133"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "44985"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "44985"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "48133"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "87408"; + amount = "1"; + user = "7024"; + this = "132"; + }; + new ScriptObject() { + obj = "87408"; + amount = "1"; + user = "7024"; + this = "132"; + }; + new ScriptObject() { + obj = "49255"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "46119"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "49255"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "46119"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "29178"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "29178"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "84157"; + amount = "1"; + user = "7024"; + this = "152"; + }; + new ScriptObject() { + obj = "84157"; + amount = "1"; + user = "7024"; + this = "152"; + }; + new ScriptObject() { + obj = "29232"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "29232"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "36143"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "36143"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "29622"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "29622"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "28700"; + amount = "1"; + user = "7024"; + this = "105"; + }; + new ScriptObject() { + obj = "28700"; + amount = "1"; + user = "7024"; + this = "105"; + }; + new ScriptObject() { + obj = "84100"; + amount = "1"; + user = "7024"; + this = "152"; + }; + new ScriptObject() { + obj = "84100"; + amount = "1"; + user = "7024"; + this = "152"; + }; + new ScriptObject() { + obj = "36353"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "36353"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "36038"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "36038"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "74455"; + amount = "1"; + user = "7024"; + this = "116"; + }; + new ScriptObject() { + obj = "74455"; + amount = "1"; + user = "7024"; + this = "116"; + }; + new ScriptObject() { + obj = "60574"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "60574"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "60731"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "60731"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "53210"; + amount = "1"; + user = "7024"; + this = "105"; + }; + new ScriptObject() { + obj = "53518"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "53210"; + amount = "1"; + user = "7024"; + this = "105"; + }; + new ScriptObject() { + obj = "53518"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "79795"; + amount = "1"; + user = "7024"; + this = "149"; + }; + new ScriptObject() { + obj = "79795"; + amount = "1"; + user = "7024"; + this = "149"; + }; + new ScriptObject() { + obj = "54860"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "54860"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "56524"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "56524"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "65212"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "65212"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "79543"; + amount = "1"; + user = "7024"; + this = "149"; + }; + new ScriptObject() { + obj = "78871"; + amount = "1"; + user = "7024"; + this = "124"; + }; + new ScriptObject() { + obj = "78871"; + amount = "1"; + user = "7024"; + this = "124"; + }; + new ScriptObject() { + obj = "79543"; + amount = "1"; + user = "7024"; + this = "149"; + }; + new ScriptObject() { + obj = "44078"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "44337"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "44078"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "44337"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "41143"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "41143"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "44723"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "44723"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "85885"; + amount = "1"; + user = "7024"; + this = "132"; + }; + new ScriptObject() { + obj = "85885"; + amount = "1"; + user = "7024"; + this = "132"; + }; + new ScriptObject() { + obj = "48461"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "48461"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "48617"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "48617"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "44442"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "44442"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "38660"; + amount = "1"; + user = "7024"; + this = "105"; + }; + new ScriptObject() { + obj = "38660"; + amount = "1"; + user = "7024"; + this = "105"; + }; + new ScriptObject() { + obj = "38937"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "38937"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "46326"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "45443"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "41318"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "46326"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "41318"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "45443"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "44985"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "44985"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "39251"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "39251"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "53799"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "53210"; + amount = "1"; + user = "7024"; + this = "105"; + }; + new ScriptObject() { + obj = "53799"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "53694"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "53210"; + amount = "1"; + user = "7024"; + this = "105"; + }; + new ScriptObject() { + obj = "53694"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "60574"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "60574"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "53518"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "53518"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "78871"; + amount = "1"; + user = "7024"; + this = "124"; + }; + new ScriptObject() { + obj = "78871"; + amount = "1"; + user = "7024"; + this = "124"; + }; + new ScriptObject() { + obj = "57495"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "57495"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "61201"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "61201"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "60731"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "60731"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "54860"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "54860"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "63158"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "63158"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "53210"; + amount = "1"; + user = "7024"; + this = "105"; + }; + new ScriptObject() { + obj = "53210"; + amount = "1"; + user = "7024"; + this = "105"; + }; + new ScriptObject() { + obj = "78871"; + amount = "1"; + user = "7024"; + this = "124"; + }; + new ScriptObject() { + obj = "78871"; + amount = "1"; + user = "7024"; + this = "124"; + }; + new ScriptObject() { + obj = "60574"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "60574"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "56524"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "56524"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "65212"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "65212"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "53799"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "53210"; + amount = "1"; + user = "7024"; + this = "105"; + }; + new ScriptObject() { + obj = "53799"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "53210"; + amount = "1"; + user = "7024"; + this = "105"; + }; + new ScriptObject() { + obj = "53518"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "53694"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "53694"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "53518"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "53954"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "53954"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "57600"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "55066"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "57600"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "55066"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "53694"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "53210"; + amount = "1"; + user = "7024"; + this = "105"; + }; + new ScriptObject() { + obj = "53694"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "53210"; + amount = "1"; + user = "7024"; + this = "105"; + }; + new ScriptObject() { + obj = "53954"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "78871"; + amount = "1"; + user = "7024"; + this = "124"; + }; + new ScriptObject() { + obj = "53954"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "78871"; + amount = "1"; + user = "7024"; + this = "124"; + }; + new ScriptObject() { + obj = "79795"; + amount = "1"; + user = "7024"; + this = "149"; + }; + new ScriptObject() { + obj = "79795"; + amount = "1"; + user = "7024"; + this = "149"; + }; + new ScriptObject() { + obj = "57390"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "57390"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "53518"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "53518"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "79543"; + amount = "1"; + user = "7024"; + this = "149"; + }; + new ScriptObject() { + obj = "53799"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "53799"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "79543"; + amount = "1"; + user = "7024"; + this = "149"; + }; + new ScriptObject() { + obj = "57233"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "57233"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "78280"; + amount = "1"; + user = "7024"; + this = "124"; + }; + new ScriptObject() { + obj = "78280"; + amount = "1"; + user = "7024"; + this = "124"; + }; + new ScriptObject() { + obj = "38660"; + amount = "1"; + user = "7024"; + this = "105"; + }; + new ScriptObject() { + obj = "38660"; + amount = "1"; + user = "7024"; + this = "105"; + }; + new ScriptObject() { + obj = "39426"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "39426"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "46808"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "41524"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "41524"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "46808"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "47327"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "47327"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "46652"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "46652"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "47540"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "86811"; + amount = "1"; + user = "7024"; + this = "149"; + }; + new ScriptObject() { + obj = "86811"; + amount = "1"; + user = "7024"; + this = "149"; + }; + new ScriptObject() { + obj = "47540"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "48617"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "85885"; + amount = "1"; + user = "7024"; + this = "132"; + }; + new ScriptObject() { + obj = "85885"; + amount = "1"; + user = "7024"; + this = "132"; + }; + new ScriptObject() { + obj = "48617"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "41143"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "44078"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "44078"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "41143"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "44723"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "44723"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "48461"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "44337"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "44442"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "44442"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "44337"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "48461"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "86162"; + amount = "1"; + user = "7024"; + this = "149"; + }; + new ScriptObject() { + obj = "86162"; + amount = "1"; + user = "7024"; + this = "149"; + }; + new ScriptObject() { + obj = "86811"; + amount = "1"; + user = "7024"; + this = "149"; + }; + new ScriptObject() { + obj = "86811"; + amount = "1"; + user = "7024"; + this = "149"; + }; + new ScriptObject() { + obj = "9243"; + amount = "1"; + user = "7024"; + this = "105"; + }; + new ScriptObject() { + obj = "9243"; + amount = "1"; + user = "7024"; + this = "105"; + }; + new ScriptObject() { + obj = "8893"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "8893"; + amount = "1"; + user = "7024"; + this = "107"; + }; + new ScriptObject() { + obj = "10997"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "10997"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "10013"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "10013"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "11699"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "9937"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "11699"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "9937"; + amount = "1"; + user = "7024"; + this = "106"; + }; + new ScriptObject() { + obj = "72943"; + amount = "1"; + user = "7024"; + this = "116"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Flanked.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/custom/Quartile.mis b/data/multiplayer/hunt/custom/Quartile.mis new file mode 100644 index 00000000..6269b296 --- /dev/null +++ b/data/multiplayer/hunt/custom/Quartile.mis @@ -0,0 +1,1782 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + name = "Quartile"; + type = "Custom"; + level = "1"; + desc = "A maze of symmetry, just try not to fall off!"; + artist = "HiGuy"; + gameMode = "hunt"; + game = "Custom"; + time = "240000"; + maxGemsPerSpawn = "6"; + radiusFromGem = "25"; + score[0] = "30"; + score[1] = "80"; + platinumScore[0] = "110"; + platinumScore[1] = "210"; + ultimateScore[0] = "140"; + ultimateScore[1] = "250"; + alarmStartTime = "25"; + overviewHeight = "15"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "1000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun(Sun) { + direction = "0.638261 0.459006 -0.61801"; + color = "1.400000 1.200000 0.400000 1.000000"; + ambient = "0.300000 0.300000 0.400000 1.000000"; + }; + new Trigger(Bounds) { + position = "-73 73 -8"; + rotation = "1 0 0 0"; + scale = "146 146 1000"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new SimGroup(SpawnTriggers) { + new Trigger() { + position = "11.5 -25.5 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "25.5 -11.5 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "25.5 12.5 -3.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "11.5 26.5 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "-12.5 -25.5 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "-26.5 -11.5 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "-26.5 12.5 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "-12.5 26.5 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + }; + new SimGroup(Gems) { + new Item() { + position = "2 -22 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.5 5.5 1.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -12 1.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 2 3.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 0 3.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 12 0.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.5 5.5 1.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 6 0.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 -2 3.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 0 1.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 -6 0.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 -2 3.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 0 2.175"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 -12 0.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.5 -5.5 1.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 2 3.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.5 -5.5 1.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 12 1.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 0 1.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 -22 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 -12 0.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 -14 -2.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 -6 0.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 12 0.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 6 0.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 0 2.175"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -6 2.175"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 6 2.175"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 0 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 -2 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 2 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 26 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 22 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 22 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26 0 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 -2 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 2 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -26 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 0 0.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 -28 -2.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24 -10 -2.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -18 0.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24 10 -2.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28 -14 -2.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28 14 -2.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 24 -2.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 28 -2.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 24 -2.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 0 0.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 28 -2.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 10 -2.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 14 -2.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 -10 -2.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 18 0.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.5 26.5 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 -28 -2.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -24 -2.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 -24 -2.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 10 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 14 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -10 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 -14 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 -14 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 -10 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 10 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 14 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 26 -1.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26 6 -1.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26 -6 -1.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 -26 -1.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 -26 -1.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 -6 -1.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 6 -1.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 26 -1.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 51 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 52 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26.5 -26.5 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.5 -26.5 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35.5 17.5 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.5 35.5 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 38 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 45 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 32 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32 12 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32 -12 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 -32 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 -32 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32 -12 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32 12 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 32 -3.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "38 12 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 11 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "51 5 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "52 0 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "51 -5 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 -11 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "38 -12 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35.5 -17.5 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.5 -35.5 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 -38 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 -45 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 -51 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -52 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 -51 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 -45 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 -38 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17.5 -35.5 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35.5 -17.5 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38 -12 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 -11 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51 -5 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26.5 26.5 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51 5 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 11 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38 12 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35.5 17.5 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17.5 35.5 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 38 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 45 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 51 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 17 -2.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + spawnWeight = "0"; + }; + new Item() { + position = "17 21 -2.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + spawnWeight = "7"; + }; + new Item() { + position = "-17 21 -2.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + spawnWeight = "0"; + }; + new Item() { + position = "-21 17 -2.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + spawnWeight = "0"; + }; + new Item() { + position = "5 21 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + spawnWeight = "14"; + }; + new Item() { + position = "9 17 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + spawnWeight = "0"; + }; + new Item() { + position = "17 9 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + spawnWeight = "0"; + }; + new Item() { + position = "21 5 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + spawnWeight = "0"; + }; + new Item() { + position = "21 -5 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + spawnWeight = "7"; + }; + new Item() { + position = "17 -9 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + spawnWeight = "10"; + }; + new Item() { + position = "9 -17 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + spawnWeight = "0"; + }; + new Item() { + position = "5 -21 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + spawnWeight = "0"; + }; + new Item() { + position = "-5 -21 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + spawnWeight = "0"; + }; + new Item() { + position = "-9 -17 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + spawnWeight = "0"; + }; + new Item() { + position = "-17 -9 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + spawnWeight = "0"; + }; + new Item() { + position = "-21 -5 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + spawnWeight = "0"; + }; + new Item() { + position = "-21 5 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + spawnWeight = "0"; + }; + new Item() { + position = "-17 9 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + spawnWeight = "0"; + }; + new Item() { + position = "-9 17 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + spawnWeight = "0"; + }; + new Item() { + position = "-5 21 -0.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + spawnWeight = "14"; + }; + new Item() { + position = "-22 31 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 22 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 31 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31 22 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31 -22 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-52 0 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 -31 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 -31 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 -22 -4.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 -17 -2.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + spawnWeight = "0"; + }; + new Item() { + position = "-17 -21 -2.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + spawnWeight = "0"; + }; + new Item() { + position = "17 -21 -2.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + spawnWeight = "0"; + }; + new Item() { + position = "21 -17 -2.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + spawnWeight = "0"; + }; + }; + new SimGroup(PowerUps) { + new Item() { + position = "-12 12 -1.23136"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 -12 -1.23136"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 52 -5.23136"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "52 0 -5.23136"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -24 -0.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -52 -5.23136"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24 0 -0.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 24 -0.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-52 0 -5.23136"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 0 -0.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 0 0.98422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 29 -5.01578"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -14 1.0005"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 -29 -5.01578"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24 29 -5.01578"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 0 0.98422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 14 1.0005"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 24 -5.01578"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29 24 -5.01578"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 -24 -5.01578"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24 -29 -5.01578"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29 -24 -5.01578"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 -19 -2.99951"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 -19 -2.99951"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 19 -2.99951"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 19 -2.9995"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/custom/Quartile.dif"; + showTerrainInside = "1"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/custom/Quartile.png b/data/multiplayer/hunt/custom/Quartile.png new file mode 100644 index 00000000..b58fa5f2 Binary files /dev/null and b/data/multiplayer/hunt/custom/Quartile.png differ diff --git a/data/multiplayer/hunt/custom/TripleDeckers.jpg b/data/multiplayer/hunt/custom/TripleDeckers.jpg new file mode 100644 index 00000000..7f7e8621 Binary files /dev/null and b/data/multiplayer/hunt/custom/TripleDeckers.jpg differ diff --git a/data/multiplayer/hunt/custom/TripleDeckers.mis b/data/multiplayer/hunt/custom/TripleDeckers.mis new file mode 100644 index 00000000..0dc05a77 --- /dev/null +++ b/data/multiplayer/hunt/custom/TripleDeckers.mis @@ -0,0 +1,1816 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + type = "Beginner"; + artist = "Matan Weissman"; + time = "210000"; + radiusFromGem = "15"; + level = "15"; + maxGemsPerSpawn = "6"; + name = "Triple Deckers"; + gameMode = "hunt"; + desc = "Triple Decker, what else to say?"; + }; + new SimGroup(SpawnPoints) { + + new Trigger() { + position = "-9 -17 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "-3 -17 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "17 3 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "17 9 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "-3 29 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "-9 29 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "-29 9 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "-29 3 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "-27 27 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "15 27 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "15 -15 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "-27 -15 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "1000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-31 1.3684e-38"; + fogVolume2 = "-1 1.07208e-14 8.756e-14"; + fogVolume3 = "-1 5.1012e-10 2.05098e-08"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun(Sun) { + direction = "0.5732009 0.2753569 -0.7717638"; + color = "1.000000 1.000000 0.900000 1.000000"; + ambient = "0.400000 0.400000 0.500000 1.000000"; + }; + new StaticShape(SkySphere) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1000 1000 1000"; + dataBlock = "clear"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/custom/mbu/TripleDeckers.dif"; + showTerrainInside = "0"; + }; + new Trigger(Bounds) { + position = "-45 45 -2"; + rotation = "1 0 0 0"; + scale = "80 80 52"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Item() { + position = "-1 11 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 31 4.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 -4 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 16 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 12 2.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4 0 2.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 33 4.437"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23 -7 8.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 -21 4.437"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35 5 8.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 35 8.000503"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 -23 8.000503"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 -19 4.001006"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 31 4.000503"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 27 4.001509"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 3 2.968442"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "-10 16 1.984221"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "-15 -1 1.984221"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "-33 -21 4.234221"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "21 -21 4.234221"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "21 33 4.234221"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "-33 33 4.218442"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new SimGroup(GemSpawns) { + + new Item() { + position = "1 1 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 29 4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 21 4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 25 4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 -19 4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 31 4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 31 4.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 31 4.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 31 4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 17 4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 -7 4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.25 -13.5 4.225"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 -9 4.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.5 -4.5 4.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 15 4.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 -19 5.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -17 4.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 -19 4.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 -17 4.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 23 5.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 25 5.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 31 5.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 29 4.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 29 5.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 19 5.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 -17 5.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 -19 4.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 -17 4.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 13 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 3 8.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 9 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 -1 8.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 11 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 9 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 1 8.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 6 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 9 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 7 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 9 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 7 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 7 8.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 -1 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 11 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 8 0.05000015"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 8 0.5500001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 6 0.05000015"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 4 0.3000002"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 4 1.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 4 0.05000015"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 -6 5.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemblue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 16 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 19 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 13 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 18 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 22 2.716667"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.25 8 1.216667"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10.25 5.25 0.8833332"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 1.5 1.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7.25 10.75 1.216666"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 10.75 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 6.75 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 3 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 5 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 7 3.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 8.75 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 5 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 3 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 3 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 7 3.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 -5 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 -11.75 3.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 -7 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.25 -5 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 -3 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 5 4.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 12 4.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 15 4.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 15 5.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 31 4.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 29 5.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 31 4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 29 4.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 29 4.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 33 4.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 33.5 4.425001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 31 4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 29 4.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 29 4.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 29 5.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 31 4.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 31 4.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 29 5.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 31 4.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.5 26.5 4.425"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 23 4.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 21 5.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 18 4.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 19 4.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 17 4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 12 4.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32.5 -0.75 4.175001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 -3 4.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 -5 4.800001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 -9.5 4.425"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30.5 -9 4.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 -13 4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 -13 4.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30 -15 4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 -17 5.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 -17 4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 -19 4.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 -17 4.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -19 4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 -17 5.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 -19 5.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 -17 4.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 -21 4.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 -21.75 4.4875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 -17 4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 -19 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 -17 4.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 -19 4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.5 -19.25 4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 -19 4.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19.75 -16.45 4.15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19.25 -12.5 4.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 -11 4.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 -11 4.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 -3 4.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 -5.25 5.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 -8 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11.25 -3.5 5.425"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 -7 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 19 7.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7.5 15 7.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 15 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 21 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 22.75 5.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11.25 19 5.425"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 -12 5.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22.5 -11 5.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 13 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 11 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 9 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 5 8.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 3 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 -1 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 3 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 1 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 3 8.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 13 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 13 8.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 4.5 9.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 5 8.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 7 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13.5 13.5 2.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 18 5.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemblue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 18 5.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemblue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 -6 5.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemblue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Flanked.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/custom/archipelago.mis b/data/multiplayer/hunt/custom/archipelago.mis new file mode 100644 index 00000000..0e0a6037 --- /dev/null +++ b/data/multiplayer/hunt/custom/archipelago.mis @@ -0,0 +1,1353 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + overviewHeight = "-2"; + level = "3"; + name = "Archipelago"; + alarmStartTime = "25"; + artist = "Kwill"; + desc = "Use careful and precise jumping to get from island to island."; + radiusFromGem = "40"; + goldTime = "0"; + type = "Custom"; + gameMode = "Hunt"; + ultimateTime = "0"; + time = "180000"; + game = "Platinum"; + maxGemsPerSpawn = "5"; + score0 = "10"; + score1 = "20"; + platinumscore0 = "35"; + platinumscore1 = "50"; + ultimatescore0 = "70"; + ultimatescore1 = "100"; + }; + new Trigger() { + position = "-35.1 -15.3 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "-16.9 -30.7 0.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Item() { + position = "-1 -34 0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "500"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-31 1.3684e-38"; + fogVolume2 = "-1 1.07208e-14 8.756e-14"; + fogVolume3 = "-1 5.1012e-10 2.05098e-08"; + materialList = "~/data/skies/Intermediate/Intermediate_Sky.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.638261 0.459006 -0.61801"; + color = "1.400000 1.200000 0.400000 1.000000"; + ambient = "0.300000 0.300000 0.400000 1.000000"; + }; + new Trigger() { + position = "29.7 -10.3 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Item() { + position = "0 0 4.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemblue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger(Bounds) { + position = "-100 100 -5.6"; + rotation = "1 0 0 0"; + scale = "200 200 200"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/custom/archipelagio.dif"; + showTerrainInside = "0"; + }; + new Item() { + position = "-15.5 -19.5 0.3225"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -4.5 0.3225"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 24.5 0.3225"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14.5 35 0.3225"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25.5 5.5 0.3225"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32 -21.5 0.3225"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37.5 29 0.0165"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15.5 17 0.0165"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 -35 0.0165"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32 -27.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 33 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 0 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 0 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 -39 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2.5 -2.5 3.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39.5 7.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39.5 -0.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 39 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39.5 1 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 -29 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 -24 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 -19 1.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 -14 1.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 -9 2.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9.5 1 2.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 9 2.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9.5 -0.5 2.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14.5 -1 1.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 14 1.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14.5 1.5 1.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19.5 1 1.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 19 1.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19.5 -0.5 1.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24.5 -1 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 24 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24.5 1.5 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29.5 1 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34.5 -1 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 29 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 34 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.5 -0.5 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-34.5 1.5 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 -36.5 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.5 -28 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16.5 -26.5 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19.5 -34.5 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13.5 -35.3 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.5 -35 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-34.5 -12 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37.5 -19.5 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31.5 -19.5 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33.5 13.5 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-36.5 20 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30.5 20 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "-17.3 28.1 0.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Item() { + position = "-19 31 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 31 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 28.5 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 28.5 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 -28 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 -28 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31 20 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28 13 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34 13 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29 -14 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 -7.5 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32 -7.5 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-43.5 -25 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 -9.5 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 -15.5 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 -9 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9.5 -4.5 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 -9.5 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23.5 -18 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 -25 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37 -31.5 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemblue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40.5 -5.5 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31.5 -5 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28.5 6 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40.5 7 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23.5 11.5 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21.5 18.5 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 39 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 16.5 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 39 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20.5 42.5 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.5 32 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25.5 26.5 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemblue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34 27.5 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42.5 17.5 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 -31.5 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 -25 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32 -28.5 0.35"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32.5 -37.5 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.5 -42 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.5 -14.5 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-34.5 35.5 0.35"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-44.5 25 0.35"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 29.5 0.35"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 13.5 0.35"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 41.5 0.35"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 41 0.35"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 33.5 0.35"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 23.5 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.5 10.5 0.35"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 6 0.35"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.5 10.5 0.35"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 5.5 0.35"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 9 0.35"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7.5 19 0.35"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 42.5 0.35"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.5 39 0.35"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "41.5 26.5 0.35"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40.5 -6.5 0.35"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39.5 -16 0.35"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40 -24 0.35"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16.5 -9.5 0.35"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10.5 -6.5 0.35"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 -11.5 0.35"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6.5 -20 0.35"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20.5 -19.5 0.35"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24.5 -39.5 0.35"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40 -35.5 0.35"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.5 -3.5 3.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.5 3.5 3.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2.5 2.5 3.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "-0.5 0.499998 -0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "13.6 -30.6 0.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "30.5 16.1 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "13.1 32.3 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "-34.1 17.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new ScriptObject() { + value = "MissionInfoDlg"; + }; + new ScriptObject() { + value = "AddMIFieldDlg"; + }; + new ScriptObject() { + value = "WorldEditorSettingsDlg"; + }; + new ScriptObject() { + value = "MissionInfoDlg"; + }; + new ScriptObject() { + value = "EditorGui"; + }; + new ScriptObject() { + value = "ETContextPopupDlg"; + }; + new ScriptObject() { + value = "EmptyControl"; + }; + new ScriptObject() { + value = "ObjectBuilderGui"; + }; + new ScriptObject() { + value = "WEContextPopupDlg"; + }; + new ScriptObject() { + value = "MissionInfoDlg"; + }; + new ScriptObject() { + value = "AddMIFieldDlg"; + }; + new ScriptObject() { + value = "WorldEditorSettingsDlg"; + }; + new ScriptObject() { + value = "MissionInfoDlg"; + }; + new ScriptObject() { + value = "EditorGui"; + }; + new ScriptObject() { + value = "ETContextPopupDlg"; + }; + new ScriptObject() { + value = "EmptyControl"; + }; + new ScriptObject() { + value = "ObjectBuilderGui"; + }; + new ScriptObject() { + value = "WEContextPopupDlg"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Flanked.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/custom/archipelago.png b/data/multiplayer/hunt/custom/archipelago.png new file mode 100644 index 00000000..729c866c Binary files /dev/null and b/data/multiplayer/hunt/custom/archipelago.png differ diff --git a/data/multiplayer/hunt/custom/prophetic.jpg b/data/multiplayer/hunt/custom/prophetic.jpg new file mode 100644 index 00000000..ccc737cf Binary files /dev/null and b/data/multiplayer/hunt/custom/prophetic.jpg differ diff --git a/data/multiplayer/hunt/custom/prophetic.mis b/data/multiplayer/hunt/custom/prophetic.mis new file mode 100644 index 00000000..db4fb484 --- /dev/null +++ b/data/multiplayer/hunt/custom/prophetic.mis @@ -0,0 +1,5635 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + type = "custom"; + radiusFromGem = "15"; + score1 = "125"; + level = "108"; + game = "Evolved"; + platinumScore1 = "200"; + ultimateScore1 = "250"; + desc = "This massive map will test your marbling abilities to the max!"; + ultimateTime = "0"; + score0 = "50"; +Gamemode = "Hunt"; + alarmStartTime = "30"; + goldTime = "0"; + platinumScore0 = "140"; + glassCenter = "glassCenter"; + name = "Prophetic"; + ultimateScore0 = "150"; + time = "360000"; + artist = "Greed rep. Kwill"; + maxGemsPerSpawn = "9"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "500"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.638261 0.459006 -0.61801"; + color = "1.400000 1.200000 0.400000 1.000000"; + ambient = "0.300000 0.300000 0.400000 1.000000"; + }; + new Item() { + position = "20.5 -34 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger(Bounds) { + position = "-100 100 -20"; + rotation = "1 0 0 0"; + scale = "200 200 200"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Item() { + position = "20.5 -43 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/custom/prophetic.dif"; + showTerrainInside = "0"; + }; + new Item() { + position = "-8 -41 2.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 -10.5 6.6775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -10.5 6.6775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 10.5 6.6775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 10.5 6.6775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40 -25 4.1775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40 25 4.1775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49 10 2.1775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 -10 2.1775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.5 42.5 0.6775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35.5 33.5 0.6775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35.5 15.5 0.6775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35.5 51.5 6.6775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.5 33.5 6.6775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "59.5 0.5 6.6775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48.5 -18.5 7.1775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26 -21 0.6875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 -21 0.6875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 21 0.6875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26 21 0.6875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-59 -26 3.6875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-61 26 3.6875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-81 10.5 3.6875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-81 -10 3.6875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-60 -10 8.6875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-60 10 8.6875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40.5 -18.5 7.1875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 -5 0.1875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4 5.5 0.1875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49 -10 1.9835"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 10 1.9835"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 0 8.4835"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "53.5 15.5 0.4835"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35.5 33.5 6.4835"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.5 51.5 6.4835"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35.5 9.5 4.4835"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "53.5 9.5 4.4835"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "53.5 -8.5 4.4835"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35.5 -8.5 4.4835"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 -16 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8.5 -7 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.5 7 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20.5 0 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20.5 0 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38 -9 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38 3 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49 0 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "53.5 33.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 14 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 9.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 -9.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38 -3 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38 9 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18.5 49.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "53.5 23.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "53.5 33.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48 -28 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "41.5 -35 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 -30 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 -30 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23.75 48.5 3.6875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 -9.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 9.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 9.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8.5 3 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8.5 -3 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.5 3 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.5 -3 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 -1 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 1 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 1 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 3 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 -3 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 -1 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 3 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 -3 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 -5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 -5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 0 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 0 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 -5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 -5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.5 -6 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.5 -4 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.5 -2 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.5 0 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.5 2 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.5 4 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.5 6 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 2 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -2 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 -16 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 -14 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 -14 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 16 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 16 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 14 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 -5 4.4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 -4 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 -5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 -5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.5 -4.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.5 -3.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 -3 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.5 -1.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4.5 1 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.5 3.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.5 4 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.5 4.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.5 1.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 1 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2.5 2.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.5 -1.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13.5 9 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13.5 7 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15.5 9 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16.5 5.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16.5 3.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14.5 3.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11.5 -6 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16.5 -6 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16.5 -8 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14.5 -7.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14.5 -9.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.5 -7.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 -5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 -5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 -5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 -3 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -3 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 8 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 8 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 10.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 8.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 10.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 8.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 -8.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 -10.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 -8.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 -10.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -8.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 8.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 8.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 -8.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 -41 2.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.75 3.25 14.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.75 3.25 14.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.75 -3.25 14.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.75 -3.25 14.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.25 1.75 14.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.25 -1.75 14.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.25 1.75 14.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.25 -1.75 14.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.5 -9.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8.5 9.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.5 9.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 -16 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 -14 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 16 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 14 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4.5 -0.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.5 0.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2.5 2.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.5 -3.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 -1 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 -3 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 -3 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.5 -9.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 -3.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 0 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-44 -19 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-46 -19 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-46 -17 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "53.5 -37.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + collideable = "0"; + static = "1"; + rotate = "1"; + add = "0 0 1"; + }; + new Item() { + position = "-46 -21 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-48 -21 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-50 -21 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-52 -19 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-52 -17 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-52 -21 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-54 -19 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-66 -17 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-68 -17 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-68 -19 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-74 -19 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-74 -17 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-76 -19 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-70 -21 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-72 -15 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-74 17 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-76 17 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-70 17 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-72 15 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-72 19 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-70 21 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-66 19 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-68 19 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "44.5 -18.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + collideable = "0"; + static = "1"; + rotate = "1"; + add = "0 0 1"; + }; + new Item() { + position = "-45.5 17.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45.5 19.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45.5 15.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51.5 17.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51.5 19.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51.5 15.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49.5 15.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49.5 21.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47.5 21.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 1 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 -1 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75 1 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75 -1 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-43 1 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-43 -1 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-77 1 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-77 -1 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-76 13 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-76 11 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-76 -11 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-76 -13 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-44 13 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-44 11 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-44 -11 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-44 -13 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-46 15 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-48 15 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-72 15 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-74 15 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-46 -15 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-48 -15 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-72 -15 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-74 -15 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-60 0 1.9835"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-60 0 28.2835"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-60 0 8.4835"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-60 0 13.3835"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-60 0 19.6835"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-82 -24.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-80.5 -24 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-80 -25.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-81.5 20.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-81.5 24 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-80 25 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-77 26.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-72 -21 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-70 -15 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-66 -19 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-76 -17 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-74 19 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-68 17 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-54 -21 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-44 -21 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45.5 21.5 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51.5 21.5 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49.5 17.5 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-44 15 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-44 -15 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-76 15 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-76 -15 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-46 13 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-46 -13 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-74 13 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-74 -13 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-79.25 -27.25 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-82.25 -22.75 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-81.75 22.25 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-78.75 26.75 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-81.5 -26.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-81.5 26.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14.5 30 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12.5 30 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10.5 30 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16.5 28 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14.5 28 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12.5 28 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 33.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 35.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 37.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 42 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 44 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 44 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 44 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 44 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 40 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 42 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 44 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.5 44.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.5 42.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.5 42.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "49 33.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + collideable = "0"; + static = "1"; + rotate = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "44.5 15.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + collideable = "0"; + static = "1"; + rotate = "1"; + add = "0 0 1"; + }; + new Item() { + position = "7 43.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 43.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 41.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18.5 51.5 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12.5 51.5 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6.5 53.5 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8.5 51.5 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6.5 51.5 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.5 53.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.5 53.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.5 51.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.75 33.25 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.25 33.25 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.25 31.75 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9.25 29.75 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10.75 29.75 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 37.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 35.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 33.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 31.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 33.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 35.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 35.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16.5 30 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10.5 28 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 33.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 38 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 44 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 40 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.5 44.5 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 41.5 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.5 51.5 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8.5 53.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15.5 51.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.75 37.25 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.75 31.75 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10.75 31.25 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23.75 40 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8.300001 -9.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19.75 36.75 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21.25 38.25 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20.75 42.75 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20.75 41.25 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19.25 41.25 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22.75 47.75 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22.75 46.25 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22.75 44.75 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24.25 44.75 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25.75 44.75 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27.25 49.25 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27.25 47.75 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27.25 46.25 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24.25 49.25 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25.75 49.25 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31.25 45.25 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32.75 46.75 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "35 43.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + collideable = "0"; + static = "1"; + rotate = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "-4.5 36 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + collideable = "0"; + static = "1"; + rotate = "1"; + add = "0 0 1"; + }; + new Item() { + position = "31.25 40.75 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29.75 42.25 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29.75 40.75 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31.75 37.75 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31.75 36.25 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30.25 34.75 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.75 36.25 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28.25 36.25 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25.25 36.25 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36 -33.5 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "42.5 -23 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "0"; + }; + new Item() { + position = "46.5 -40 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39.5 29.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "41.5 29.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "43.5 29.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39.5 27.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39.5 25.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45.5 25.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "43.5 25.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "43.5 23.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "47.5 21.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "41.5 19.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39.5 21.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45.5 21.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45.5 25.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "41.5 25.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "43.5 29.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45.5 29.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49.5 29.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49.5 25.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49.5 23.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.5 35.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.5 40 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.5 45 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.5 49.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19.5 37.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21.5 37.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31.5 37.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33.5 37.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19.5 47.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21.5 47.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31.5 47.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33.5 47.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19.5 42.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23.5 42.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29.5 42.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33.5 42.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35.5 49.5 14.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35.5 35.5 14.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.5 49.5 14.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.5 35.5 14.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19.5 51.5 14.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33.5 51.5 14.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19.5 33.5 14.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33.5 33.5 14.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.5 39.5 14.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.5 45.5 14.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29.5 42.5 14.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23.5 42.5 14.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31.75 34.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30.25 37.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31.25 42.25 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31.25 46.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27.25 44.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22.75 49.25 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19.25 42.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21.25 36.75 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45.5 29.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39.5 23.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "43.5 21.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "47.5 25.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "12 51 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + collideable = "0"; + static = "1"; + rotate = "1"; + add = "0 0 1"; + }; + new Item() { + position = "49.5 21.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49.5 27.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "47.5 29.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45.5 23.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "43.5 25.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "41.5 21.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.5 42.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.5 33.5 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35.5 33.5 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29.5 39.5 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23.5 39.5 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.5 42.5 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.5 33.5 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.5 51.5 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35.5 42.5 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.5 51.5 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35.5 51.5 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29.5 45.5 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23.5 45.5 15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.5 42.5 15.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24.7 46.6 2.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "37.5 7.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "51.5 7.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "37.5 -6.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "51.5 -6.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44.5 4.5 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48.5 0.5 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40.5 0.5 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44.5 -3.5 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46.5 2.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "-61 26 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + collideable = "0"; + static = "1"; + rotate = "1"; + add = "0 0 1"; + }; + new Item() { + position = "42.5 2.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "-52.5 0 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + collideable = "0"; + static = "1"; + rotate = "1"; + add = "0 0 1"; + }; + new Item() { + position = "46.5 -1.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "-59 -26 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + collideable = "0"; + static = "1"; + rotate = "1"; + add = "0 0 1"; + }; + new Item() { + position = "42.5 -1.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "-75 0 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + collideable = "0"; + static = "1"; + rotate = "1"; + add = "0 0 1"; + }; + new Item() { + position = "43.75 -26.25 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "21 33.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + collideable = "0"; + static = "1"; + rotate = "1"; + add = "0 0 1"; + }; + new Item() { + position = "40.75 -26.25 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40.75 -26.25 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48.25 -26.25 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "53 -31.5 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45.25 -26.25 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "28 23 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + collideable = "0"; + static = "1"; + rotate = "1"; + add = "0 0 1"; + }; + new Item() { + position = "43.75 -36.75 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -30 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40.75 -36.75 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -36 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48.25 -36.75 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 -48 1.4835"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45.25 -36.75 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 -30 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39.25 -27.75 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 -38 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39.25 -30.75 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 -36 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39.25 -32.25 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 -36 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39.25 -35.25 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 -36 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49.75 -27.75 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44.5 0.5 18.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49.75 -30.75 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "47.3 19.4 1.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49.75 -32.25 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44.5 0.5 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49.75 -35.25 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 -48 1.4835"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46.5 -23 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40 5 18.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44.5 -23 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49 5 18.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36 -29.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46.75 -28.75 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36 -31.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46.25 -33.25 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "53 -29.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49 -4 18.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "53 -33.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40 -4 18.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44.5 -40 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 -54 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42.5 -40 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42.25 -33.75 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "41.5 -36.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 -38 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39.5 -36.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 -30 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45.5 -36.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 -46 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "43.5 -36.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 -46 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49.5 -36.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 -30 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "47.5 -36.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 -30 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 -36 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 -45 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "41.5 -26.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 -52 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39.5 -26.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -42 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45.5 -26.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 -36 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "43.5 -26.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 -52 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49.5 -26.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 -38 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "47.5 -26.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 -32 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39.5 -34.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 -30 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39.5 -32.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 -30 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39.5 -30.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -30 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39.5 -28.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -38 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49.5 -34.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 -30 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49.5 -32.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -30 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49.5 -30.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 -36 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49.5 -28.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 -32 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35.5 -36.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 -40 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39.5 -40.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 -48 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49.5 -40.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 -48 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "53.5 -36.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 -44 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35.5 -26.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -36 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39.5 -22.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 -42 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49.5 -22.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 -46 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "53.5 -26.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 -40 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 -44 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 -44 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44.5 -3.5 18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "-28 -23 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + collideable = "0"; + static = "1"; + rotate = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "28 -23 3.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + collideable = "0"; + static = "1"; + rotate = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "-28 23 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + collideable = "0"; + static = "1"; + rotate = "1"; + add = "0 0 1"; + }; + new Item() { + position = "48.5 0.5 18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -32 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 -30 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 -30 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40.5 0.5 18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 -34 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 -38 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "0 -29.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + collideable = "0"; + static = "1"; + rotate = "1"; + add = "0 0 1"; + }; + new Item() { + position = "44.5 4.5 18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 -42 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -46 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 -46 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36.5 0.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44.5 -7.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44.5 8.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "52.5 0.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40.5 -3.5 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40.5 4.5 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48.5 -3.5 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48.5 4.5 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "38.1 -25.1 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "51.3 -24.9 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "38.1 -38.1 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "51 -38 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "37.5 -24.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "51.5 -24.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "37.5 -38.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "51.5 -38.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42.25 -29.25 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Pianoforte.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/custom/timbertown.mis b/data/multiplayer/hunt/custom/timbertown.mis new file mode 100644 index 00000000..01e65db9 --- /dev/null +++ b/data/multiplayer/hunt/custom/timbertown.mis @@ -0,0 +1,1068 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + name = "Timbertown"; + type = "Custom"; + level = "11"; + artist = "Kwill15"; + desc = "Find the fastest path through this massive, wooden world. Based off a real playground."; + gameMode = "Hunt"; + game = "Custom"; + time = "240000"; + startHelpText = "Use the powerups to get a faster time and pull of some crazy stunts!"; + maxGemsPerSpawn = "5"; + overviewHeight = "15"; + radiusFromGem = "25"; + score[0] = "15"; + score[1] = "25"; + platinumScore[0] = "40"; + platinumScore[1] = "60"; + ultimateScore[0] = "85"; + ultimateScore[1] = "110"; + alarmStartTime = "20"; + jumpImpulse = "10"; + }; + new Trigger() { + position = "-31 61.5 78.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Item() { + position = "18 8.6 82.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemblue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "66.3252 52.8657 81.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemblue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.537069 -8.2026 79.0629"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "500"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-31 1.3684e-38"; + fogVolume2 = "-1 1.07208e-14 8.756e-14"; + fogVolume3 = "-1 5.1012e-10 2.05098e-08"; + materialList = "~/data/skies/sky_day.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.638261 0.459006 -0.61801"; + color = "1.400000 1.200000 0.400000 1.000000"; + ambient = "0.300000 0.300000 0.400000 1.000000"; + }; + new Item() { + position = "0 4.5 79"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "38.1549 79.8557 79.8487"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 32 79"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 32 79"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 28 79"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 24 79"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 24 79"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.74816 127.181 83.0931"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemblue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 16 79.4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 16 79"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 32 79"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new InteriorInstance() { + position = "70.0938 18.568 77.4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/custom/ttownWoodchips.dif"; + showTerrainInside = "0"; + }; + new Item() { + position = "-27 36 79"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 44 79"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-36 48 79"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 40 79"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 8 79"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 0 79"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6.2 -8 79"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13.9 -8 79"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 -7.5 80.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-34 17.6 80"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new InteriorInstance() { + position = "-0.00624911 0.197358 78.425"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/custom/ttown.dif"; + showTerrainInside = "0"; + }; + new Item() { + position = "-37.5 14 81.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32.5 -3.8 82.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 5 82.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-50 12 83.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-55 18 84.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6.1 2.4 79.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9.5 -1.5 80.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 2 81.9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 8 82.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 8 82.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 24 82.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 8 82.9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20 32 83.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 30 82.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 33.5 80.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18.34 30.5026 79.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 16 79"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28 16 79"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27.5 32 79"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35.5 24 79"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44 32 79"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35.5 40 79"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29 42 79"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "47.5 49 79.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "47.5 60 80.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "59 60 81"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44.5 68 82.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34 97 83.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 73 83.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemblue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "15.75 111.25 82.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Item() { + position = "19.9536 24.0478 82.5148"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 68 83.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49 82 82.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "43.5 112.2 83.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "50 98 81.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40.5 112.2 83.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 112 81"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 120 83.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 120 83.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 120 83.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 108 81.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 96 79.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16.2 81.6 79.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 82 79.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 93 79.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 74 79.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 67 79.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25.5 71 79.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21.5 73.5 79.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 60 79.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger(Bounds) { + position = "-101.4 154.5 79.3"; + rotation = "1 0 0 0"; + scale = "201 201 300.5"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Item() { + position = "55.5255 75.7531 82.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemblue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "-11 102.75 78.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Item() { + position = "-17.8 34.6 79"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-0.0236328 15.96 79.4365"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-0.141471 40.7375 79.1279"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10.1179 60.3785 79.4252"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57.3797 21.2527 84.7049"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32.8753 3.99172 82.4155"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-34.2101 13.9017 81.7695"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19.9194 55.701 83.2204"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35.5097 32.0774 79.2166"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "64.7111 65.4074 81.1887"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11.6541 69.5038 83.9121"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6.23232 74.2124 83.2404"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6.20519 73.5687 79.1516"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10.0064 76.6842 79.6721"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49.1413 110.292 79.3062"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34.1198 111.851 79.3015"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16.0593 126.691 83.0694"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15.6573 103.995 78.9206"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9.6416 -8.201 79.4997"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22.0408 22.4797 79.3231"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.53066 49.2464 82.3836"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53.6159 12.8862 84.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemblue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "40.25 50.5 78.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "-43 3.75 81.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "-22.25 -5.75 80"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "-0.5 17.5 78.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "6.75 8 82.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "19.75 47.5 82.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "38.5 91.75 82"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "57.5 61.5 80.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "33.75 19.25 78.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "-9 80 78.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "50 110 78.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Flanked.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- + diff --git a/data/multiplayer/hunt/custom/timbertown.png b/data/multiplayer/hunt/custom/timbertown.png new file mode 100644 index 00000000..bc791387 Binary files /dev/null and b/data/multiplayer/hunt/custom/timbertown.png differ diff --git a/data/multiplayer/hunt/intermediate/AllAngles.jpg b/data/multiplayer/hunt/intermediate/AllAngles.jpg new file mode 100644 index 00000000..df298fc7 Binary files /dev/null and b/data/multiplayer/hunt/intermediate/AllAngles.jpg differ diff --git a/data/multiplayer/hunt/intermediate/AllAngles.mis b/data/multiplayer/hunt/intermediate/AllAngles.mis new file mode 100644 index 00000000..09df6ac5 --- /dev/null +++ b/data/multiplayer/hunt/intermediate/AllAngles.mis @@ -0,0 +1,1627 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + name = "All Angles"; + music = "Tim Trance.ogg"; + desc = "Master your geometry and navigation skills on ice."; + radiusFromGem = "20"; + gameMode = "Hunt"; + level = "2"; + type = "Intermediate"; + time = "180000"; + maxGemsPerSpawn = "4"; + alarmStartTime = "15"; + game = "Ultra"; + artist = "Tim Aste"; + overviewHeight = "5"; + score[0] = "20"; + score[1] = "50"; + platinumScore[0] = "60"; + platinumScore[1] = "100"; + ultimateScore[0] = "95"; + ultimateScore[1] = "135"; + glassCenter = "Glassy"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + sphereFront = "platinum/data/shapes/skies/dusk/front.png"; + sphereBack = "platinum/data/shapes/skies/dusk/back.png"; + }; + new Sun() { + direction = "0.573201 0.275357 -0.771764"; + color = "1.080000 1.030000 0.900000 1.000000"; + ambient = "0.400000 0.400000 0.500000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "Dusk"; + }; + new InteriorInstance() { + position = "0 0 100"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/AllAngles.dif"; + showTerrainInside = "0"; + }; + new Trigger(Bounds) { + position = "-75.7397 74.0485 81.3624"; + rotation = "1 0 0 0"; + scale = "150 150 1000"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new SimGroup(OldVersion) { + + new Item() { + position = "-5.119 -33.9338 87.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.162994 -0.0155624 98.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31.5421 -31.5353 86.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35.5353 -35.5405 87.3425"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27.5072 -35.4542 87.3425"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27.4878 -27.4728 86.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35.6136 -27.204 87.3425"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.0116 -38.9777 90.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.99987 -39.0555 88"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.97052 -42.5558 87.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4.97378 -42.4702 89.65"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.0565414 -38.9513 88.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.05292 -33.9597 89.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.5598 -12.551 86.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16.553 -16.5562 86.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16.6313 -8.21968 87.3906"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.5249 -16.4699 87.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.5055 -8.48848 87.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.4763 12.5514 89.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16.4695 8.54622 89.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16.5478 16.8827 89.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.44139 8.63251 89.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.422 16.6139 89.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31.4867 31.4787 89.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35.4799 27.4735 89.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35.5582 35.81 89.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27.4518 27.5598 89.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27.4324 35.5412 89.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12.5457 -12.6527 84.5017"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8.55246 -16.6579 85.0617"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8.47416 -8.32136 85.1117"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16.5806 -16.5716 84.5017"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16.6 -8.59015 85.0617"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31.528 -31.5129 84.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27.5348 -35.5181 85.0537"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27.4565 -27.1816 84.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35.5629 -35.4318 85.0537"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35.5823 -27.4504 85.0537"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12.463 12.5616 91.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8.46983 8.55635 91.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8.39153 16.8929 91.85"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16.4979 8.64265 91.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16.5173 16.6241 91.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31.6128 31.4441 91.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27.6196 27.4389 91.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27.5413 35.7754 91.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35.6477 27.5252 91.85"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35.6671 35.5066 91.85"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34.1436 5.22408 91.55"; + rotation = "0 0 -1 88.8085"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39.1597 5.07842 92.5"; + rotation = "0 0 -1 88.8085"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42.6506 4.968 91.95"; + rotation = "0 0 -1 88.8085"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39.0302 0.125002 90.5"; + rotation = "0 0 -1 88.8085"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42.5294 -4.97594 89.7"; + rotation = "0 0 -1 88.8085"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39.0293 -4.93249 90.25"; + rotation = "0 0 -1 88.8085"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33.9062 -4.94508 89.3"; + rotation = "0 0 -1 88.8085"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.06658 34.1408 93.8"; + rotation = "0 0 1 181.055"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.93289 39.1572 94.7"; + rotation = "0 0 1 181.055"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.83079 42.6484 94.25"; + rotation = "0 0 1 181.055"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.0208478 39.0396 92.65"; + rotation = "0 0 1 181.055"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.1134 42.551 92"; + rotation = "0 0 1 181.055"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.07831 39.0507 92.5"; + rotation = "0 0 1 181.055"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.10314 33.9277 91.55"; + rotation = "0 0 1 181.055"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(NewVersion) { + + new Item() { + position = "-5.119 -33.9338 87.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "0.238877 0.0126674 98.07"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "22 -30 87.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "35.5353 -35.5405 87.3425"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "27.5072 -35.4542 87.3425"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "30 -22 87.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "35.6136 -27.204 87.3425"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "10 -39 89.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-9.75 -39 87"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-4.97052 -42.5558 87.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "4.97378 -42.4702 89.65"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "0.0565414 -38.9513 88.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "5.05292 -33.9597 89.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "10 39 91.55"; + rotation = "0 0 1 181.055"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "14 -22 87.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "16.6313 -8.21968 87.3906"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "8.5249 -16.4699 87.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "8.5055 -8.48848 87.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "5.07831 39.0507 92.5"; + rotation = "0 0 1 181.055"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "16.4695 8.54622 89.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "22 13 90"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "8.44139 8.63251 89.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "8.422 16.6139 89.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "5.1134 42.551 92"; + rotation = "0 0 1 181.055"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "35.4799 27.4735 89.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "35.5582 35.81 89.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "22 30 90"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "27.4324 35.5412 89.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-26 -5 85.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-8.55246 -16.6579 85.0617"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-8.47416 -8.32136 85.1117"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-22 -14 85.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-18.25 -8.75 85.0617"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-26.5 -35.5 85.0537"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-22 -29 85.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-30 -22 85.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-35.5629 -35.4318 85.0537"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-35.5823 -27.4504 85.0537"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-22 13 92.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-8.46983 8.55635 91.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-8.39153 16.8929 91.85"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-16.4979 8.64265 91.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-14 22 92.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-22 30 92.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-30 22 92.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-27.5413 35.7754 91.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-35.6477 27.5252 91.85"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-35.6671 35.5066 91.85"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "34.1436 5.22408 91.55"; + rotation = "0 0 -1 88.8085"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "39.1597 5.07842 92.5"; + rotation = "0 0 -1 88.8085"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "42.6506 4.968 91.95"; + rotation = "0 0 -1 88.8085"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "39.0302 0.125002 90.5"; + rotation = "0 0 -1 88.8085"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "42.5294 -4.97594 89.7"; + rotation = "0 0 -1 88.8085"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "38.9305 -9.68146 89.25"; + rotation = "0 0 -1 88.8084"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "33.9062 -4.94508 89.3"; + rotation = "0 0 -1 88.8085"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-9.99996 39.0046 93.8"; + rotation = "0 0 1 181.055"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-4.93289 39.1572 94.7"; + rotation = "0 0 1 181.055"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-4.83079 42.6484 94.25"; + rotation = "0 0 1 181.055"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "0.0208478 39.0396 92.65"; + rotation = "0 0 1 181.055"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "39 -39 90.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-39 -39 88"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "39 39 92.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-39 39 94.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "30 22 90"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-31.5 12.5 91.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + }; + new SimGroup(SpawnPoints) { + + new Trigger() { + position = "31.5315 -12.4894 87.3751"; + rotation = "0 0 1 226.501"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "12.5504 -31.4522 87.4598"; + rotation = "0 0 1 45.8366"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-12.4651 -31.4901 85.1228"; + rotation = "0 0 -1 41.253"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-38.9933 21.9635 92.8681"; + rotation = "0 0 1 89.9544"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-21.9405 38.9093 92.8099"; + rotation = "0 0 1 179.909"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "38.9254 22.0585 90.5527"; + rotation = "0 0 -1 89.9544"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "-31.5303 -12.4949 85.1771"; + rotation = "0 0 1 134.645"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-39.0071 -22.0552 86.2122"; + rotation = "0 0 1 89.3814"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "-21.9016 -39.0454 86.1461"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "21.9431 38.9986 90.6454"; + rotation = "0 0 1 179.336"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "12.4059 31.581 89.6855"; + rotation = "0 0 1 137.51"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "31.4633 12.5773 89.5966"; + rotation = "0 0 -1 47.5555"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "38.8984 -21.9178 88.3454"; + rotation = "0 0 -1 88.2355"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "22.0436 -38.9041 88.4098"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + }; + new Item() { + position = "-28.0675 -0.462635 85.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16.0353 -0.464771 85.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.589828 -11.4906 84.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.484825 -32.5744 84.95"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11.4611 0.446449 87.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32.6157 0.527088 87.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-0.540768 11.6526 89.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-0.490334 32.6309 89.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.97352 -4.91221 87.0954"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.0159 1.99169 90.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.94653 17.001 92.983"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22.049 4.97051 91.983"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2.019 -17.0435 88.483"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22.0542 -21.9735 86.4734"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22.0872 -21.8907 88.6959"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22.0292 22.0807 90.9601"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21.8241 21.7914 93.1462"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22.0364 -12.8206 87.937"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13.0099 -22.0037 85.687"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.0397 21.9894 90.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Marker(Glassy) { + position = "5 0 100"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Comforting Mystery.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- \ No newline at end of file diff --git a/data/multiplayer/hunt/intermediate/BasicAgilityCourse_Hunt.jpg b/data/multiplayer/hunt/intermediate/BasicAgilityCourse_Hunt.jpg new file mode 100644 index 00000000..1490f6c7 Binary files /dev/null and b/data/multiplayer/hunt/intermediate/BasicAgilityCourse_Hunt.jpg differ diff --git a/data/multiplayer/hunt/intermediate/BasicAgilityCourse_Hunt.mis b/data/multiplayer/hunt/intermediate/BasicAgilityCourse_Hunt.mis new file mode 100644 index 00000000..450f7c08 --- /dev/null +++ b/data/multiplayer/hunt/intermediate/BasicAgilityCourse_Hunt.mis @@ -0,0 +1,1139 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + name = "Basic Agility Course"; + type = "Intermediate"; + level = "1"; + desc = "Test your skills on ice."; + startHelpText = "Don\'t slip off the level."; + artist = "Matan"; + music = "Astrolabe.ogg"; + Gamemode = "Hunt"; + game = "Platinum"; + time = "210000"; + MaxGemsPerSpawn = "6"; + RadiusFromGem = "20"; + score[0] = "40"; + score[1] = "60"; + platinumScore[0] = "90"; + platinumScore[1] = "110"; + ultimateScore[0] = "140"; + ultimateScore[1] = "175"; + alarmStartTime = "15"; + overviewHeight = "-2"; + glassCenter = "Glassy"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + sphereFront = "platinum/data/shapes/skies/dusk/front.png"; + sphereBack = "platinum/data/shapes/skies/dusk/back.png"; + }; + new Sun() { + direction = "0.638261 0.459006 -0.61801"; + color = "1.400000 1.200000 0.400000 1.000000"; + ambient = "0.300000 0.300000 0.400000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "Dusk"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/intermediate/BasicAgilityCourse.dif"; + showTerrainInside = "0"; + }; + new Trigger(Bounds) { + position = "-10 42 -3"; + rotation = "1 0 0 0"; + scale = "60 60 103"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new SimGroup(OldVersion) { + new Trigger() { + position = "21 27 1.5"; + rotation = "0 0 1 140"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "27 -3 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "15 3 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "3 9 1.5"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "9 21 1.5"; + rotation = "0 0 1 140"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "21 15 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "39 3 1.5"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "39 15 1.5"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Item() { + position = "45 9 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 31 8.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 17 8.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 23 0.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 9.25 0.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30 -3 0.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 15 0.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 9 0.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 24 0.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 29 0.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 3 0.233"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 3 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 29 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 25 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 15 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 9 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 19 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 15 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 9 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 3 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 6 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 9 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 12 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29 7 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 -5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23 -1.25 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -1.25 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 15 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 21 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 25 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 3 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 1 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35.25 9 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31 11 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "47 11 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 13 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 17 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 35 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 33 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29 31 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23 17 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 21 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 35 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 33 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 15 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 3 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 3 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 9 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 3 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 9 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 -5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 27 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 15 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 3 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 27 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 -9 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -3 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(NewVersion) { + new Item() { + position = "15 -3 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "26.5 21.5 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + gravity = "0"; + }; + new Trigger() { + position = "24.5 -2.5 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + gravity = "0"; + }; + new Trigger() { + position = "20.5 3.5 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + gravity = "0"; + }; + new Trigger() { + position = "2.5 9.5 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + gravity = "0"; + }; + new Item() { + position = "9 13 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "38.5 2.5 1.5"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + gravity = "0"; + }; + new Trigger() { + position = "38.5 14.5 1.5"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + gravity = "0"; + }; + new Item() { + position = "45 9 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16.5 33 8.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 17 8.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.75 21 0.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 3 0.699999"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 -3 0.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 15 0.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 9 0.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 27 0.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29 15 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 9 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "26.5 3.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + gravity = "0"; + }; + new Item() { + position = "13.5 31.25 8.05"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 25 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 15 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 29 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noRespawn = "0"; + }; + new Item() { + position = "9 27 13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 15 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 9 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 3 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 -9 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 9 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31 1 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23 16.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 -3 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 27 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29 -3 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "41 17 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 21 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 21 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 1 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35.25 9 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31 11 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 3 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 13.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 16.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.5 34.75 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 35 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29 31 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "32.5 9.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + gravity = "0"; + }; + }; + new Marker(Glassy) { + position = "21 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Comforting Mystery.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/intermediate/BattlecubeRevisited_Hunt.jpg b/data/multiplayer/hunt/intermediate/BattlecubeRevisited_Hunt.jpg new file mode 100644 index 00000000..fb5cbc42 Binary files /dev/null and b/data/multiplayer/hunt/intermediate/BattlecubeRevisited_Hunt.jpg differ diff --git a/data/multiplayer/hunt/intermediate/BattlecubeRevisited_Hunt.mis b/data/multiplayer/hunt/intermediate/BattlecubeRevisited_Hunt.mis new file mode 100644 index 00000000..5c424fa3 --- /dev/null +++ b/data/multiplayer/hunt/intermediate/BattlecubeRevisited_Hunt.mis @@ -0,0 +1,1859 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + name = "Battlecube Revisited"; + type = "Intermediate"; + level = "10"; + desc = "Conquer gravity in this hexad-faced mayhem!"; + artist = "Matan"; + music = "Astrolabe.ogg"; + gameMode = "Hunt"; + game = "Platinum"; + time = "300000"; + MaxGemsPerSpawn = "8"; + RadiusFromGem = "15"; + score[0] = "25"; + score[1] = "45"; + platinumScore[0] = "80"; + platinumScore[1] = "140"; + ultimateScore[0] = "120"; + ultimateScore[1] = "205"; + alarmStartTime = "25"; + overviewHeight = "-15"; + glassCenter = "Glassy"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.573201 0.275357 -0.771764"; + color = "1.080000 1.030000 0.900000 1.000000"; + ambient = "0.400000 0.400000 0.500000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "Dusk"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/BattlecubeRevisited.dif"; + showTerrainInside = "0"; + }; + new Trigger(stayhere) { + position = "-50 70 -10"; + rotation = "1 0 0 0"; + scale = "90 90 55"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Item() { + position = "-29.2 43 1.3"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.2 47.3 5.5"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 47.2 1.3"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.2 29 1.35"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.2 19 1.3"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 0.8 1.3"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.15 0.8 5.5"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.2 5 1.35"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 0.8 1.4"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 0.8 1.3"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 0.8 1.4"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.2 5 1.3"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.2 0.9 5.5"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.2 19 1.2"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.2 29 1.3"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 47.25 1.3"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 47.2 1.3"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 47.25 1.3"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.2 43 1.2"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.2 47.2 5.5"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 47.2 29.6"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.2 43 29.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.2 47.2 25.5"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 47.2 29.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 47.2 29.6"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.15 47.2 25.5"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 47.2 29.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.2 43 29.7"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.1607 29.003 29.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.2 19.1 29.7"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.15 5 29.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.2 0.8 25.5"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 0.8 29.7"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 0.9 29.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 0.8 29.7"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 0.9 29.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.2 5 29.65"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.2 0.8 25.5"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.2 19 29.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.2 29 29.65"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.2 47.2 19.5"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.2 47.2 11.5"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.15 47.2 11.5"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.2 47.3 19.5"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.2 0.9 19.5"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.2 0.8 11.5"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.2 0.8 11.5"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.15 0.8 19.5"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 39 30.3"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 21 0.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 45 0.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 45 0.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 21 0.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.8 3 15.5"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.8 27 15.5"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 9 30.3"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 24 30.3"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 24 30.3"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.8 21 21.5"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 0.2 7.5"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.8 43 17.5"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 0.2 23.5"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 15 30.3"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18.266 27 9.5"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 33 30.766"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.95 13.2 26.7"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.5541 0.385869 30.25"; + rotation = "0.946023 0.301371 -0.119231 130.657"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.675 47.6297 30.2"; + rotation = "-0.312698 0.9498 -0.00997943 135.163"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.6559 0.333553 30.26"; + rotation = "0.906868 -0.369157 0.203258 126.116"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.625 47.63 0.7"; + rotation = "-0.680215 -0.24445 -0.691052 54.9522"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.624 47.6335 30.3"; + rotation = "0.934792 0.335938 0.115367 215.595"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.6182 47.6559 0.7"; + rotation = "-0.456472 0.560688 -0.690842 40.8865"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.6 0.4 0.7"; + rotation = "0.473971 -0.198593 0.857853 50.5095"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.6339 0.364782 0.7"; + rotation = "0.659473 0.257106 -0.706393 46.131"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 21 0.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 7 0.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 33 0.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25.3 25.15 0.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 4 0.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 47.95 21.5"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 47.95 21.5"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 47.95 9.5"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 47.95 9.5"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 48 9.5"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 48 9.5"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 47.95 21.5"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 47.95 21.5"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.95 35 13.5"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.95 9 17.3"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.95 27 21.5"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.95 21 9.5"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.575 20 15.5"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.575 28 15.5"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 12 1.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 0.05 21.5"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 0.05 21.5"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 0.05 9.5"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 0.05 9.5"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.95 5 22.5"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.95 4 6.5"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.95 39 5.5"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.95 26 9.5"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.95 43 13.5"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.95 35 25.5"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 33 30.45"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 15 30.45"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 5 30.45"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 5 30.45"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 15 30.45"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 33 30.45"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 43 30.45"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 43 30.45"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 33.2 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 33.2 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 12 1.275"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 15 15.5"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 47.45 15.5"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 47.45 15.5"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.075 24 15.5"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 0.05 9.5"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 0.05 21.5"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 33 0.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 1.25 15.5"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 24 28.5"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "-23.5 33.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "0.5 21.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "-6.5 3.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "-6.5 3.5 28.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "16 7.5 15"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "16 41.5 15"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "16 24.5 24"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "16 24.5 6"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "-6.5 46 6"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "-6.5 46 24"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "14.5 45 15"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "11.5 2 24"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "-23.5 2 7"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "-28 5.5 19"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "-28 45.5 15"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "-28 13.5 3"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "-6.5 43.5 28.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "13.5 24.5 28.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "-27.5 24.5 28.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "1"; + add = "0 0 1"; + }; + new Item() { + position = "-15 48 3.5"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 48 27.5"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 48 27.5"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 48 3.5"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.95 12 27.5"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.95 12 3.5"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.95 36 3.5"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.95 36 27.5"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.95 39 15.5"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.95 13 14.5"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.95 23 25.5"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.95 24 5.5"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 39 0.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11.6 20 0.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26.3 12.95 0.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.6 4 0.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 44 0.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.95 28 21.5"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.95 17.8 3.7"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 0 27.5"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 0.05 4.5"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 0.05 3.5"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 0 26.5"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 0.05 15.5"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16.6 0.05 16.7"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.6 0.05 1.3"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 27 28.5"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 24 28.5"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 24 28.5"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 21 28.5"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 45 30.45"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 3 30.45"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 3 30.45"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 45 30.45"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 47.95 5.5"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.95 1.4 14.5"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 47.95 25.5"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 47.95 25.5"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 48 5.3"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.95 8.8 29.1"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.95 35 2.5"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.95 46 22.5"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17.4 0.05 2.1"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 0 28.9"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 15 30.5"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 33 30.5"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 24 27.5"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 48 24.5"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 48 5.5"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 20 4.5"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30 27 4.5"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30 17 27.5"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 21 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Marker(Glassy) { + position = "-6 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Pianoforte.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/intermediate/Core.jpg b/data/multiplayer/hunt/intermediate/Core.jpg new file mode 100644 index 00000000..8a0ce892 Binary files /dev/null and b/data/multiplayer/hunt/intermediate/Core.jpg differ diff --git a/data/multiplayer/hunt/intermediate/Core.mis b/data/multiplayer/hunt/intermediate/Core.mis new file mode 100644 index 00000000..c7955e12 --- /dev/null +++ b/data/multiplayer/hunt/intermediate/Core.mis @@ -0,0 +1,2693 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + level = "11"; + name = "Core"; + desc = "Don\'t get lost in the gravity maze on your way to the gems."; + music = "Tim Trance.ogg"; + artist = "Alex Swanson"; + game = "Ultra"; + gameMode = "Hunt"; + radiusFromGem = "20"; + time = "300000"; + maxGemsPerSpawn = "6"; + alarmStartTime = "25"; + type = "Intermediate"; + overviewHeight = "-5"; + score[0] = "20"; + score[1] = "20"; + platinumScore[0] = "40"; + platinumScore[1] = "60"; + ultimateScore[0] = "75"; + ultimateScore[1] = "110"; + glassCenter = "Glassy"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.573201 0.275357 -0.771764"; + color = "1.080000 1.030000 0.900000 1.000000"; + ambient = "0.400000 0.400000 0.500000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "Wintry"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/Core.dif"; + showTerrainInside = "0"; + }; + new SimGroup(SpawnPoints) { + + new Trigger() { + position = "6 6 2"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "6 2 6"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "2 6 6"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "16 16 26"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "-16 16 26"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "16 -16 26"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "-16 16 -25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "-16 -16 -25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "16 -16 -25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "24 -16 -14"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "24 16 18"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "-24 -16 -14"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "-24 16 18"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "-24 -16 18"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "-16 24 18"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "16 -24 -14"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "1"; + add = "0 0 1"; + }; + new Trigger() { + position = "-16 -24 18"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + g = "1"; + add = "0 0 1"; + }; + }; + new SimGroup(GemSpawns) { + + new Item() { + position = "-0.75 -0.75 -0.527433"; + rotation = "0.707107 0.707107 0 60"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31.4413 1.50611 -8"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31.4413 11.0061 -2.5"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31.4413 7.50611 11.5"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31.4413 -13.4939 6"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32 -4.5 9.57222"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32 9.5 -8.5"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30.9449 2.88744 2"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28 14.5 21.5"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28 21.5 15.5"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28 -15 22"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28 -21 15.5"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28 -21.5 -15"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28 -15.5 -21.5"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28 14.5 -21.5"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28 20.5 -15.5"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 21.5 -15.5"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 14.5 -21"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 -15 -21.5"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 -21.5 15"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 -15 21"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 15 21"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 21 16.5"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30 3 -2.5"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30 3 4.5"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30 -4.5 3"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 -11.5 0"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32 -1 12"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 -22 -28"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 -14.5 -28"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 14.5 -28"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14.5 22 -28"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 22.5 -28"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 15 -28"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21.5 -15 -28"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 -21.5 -28"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9.5 0 -30"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 0 -30"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11.6566 6.64876 0.192948"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17.1957 2.06728 0.148912"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2.12135 -16.1306 0.0649506"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6.17529 -10.6651 0.0390642"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7.13293 0.23424 -7.56451"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.1089 0.142027 -13.3742"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.77102 0.478433 -18.8579"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.39114 0.273117 13.0054"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.16021 0.130381 23.1957"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12.2356 0.185587 5.81692"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19.5582 0.111458 2.76687"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.139948 3.77459 -10.7163"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.204707 1.57283 -16.599"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.279673 -10.2578 6.05468"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.131041 -4.03641 12.2799"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.281044 -23.1101 1.6972"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.308665 -0.936942 18.7127"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.227269 4.28445 -2.71885"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 6 -30"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6.5 11 -29"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -14.5 -30"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14.5 -21.5 28"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21.5 -15.5 28"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 15.5 28"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 20.5 28"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 21.5 28"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20.5 16.5 28"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 -15 28"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -22 28"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 -12 31"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 7.5 30.9074"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 9.5 30.9074"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 4.5 32"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6.5 -9 31"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 -5 31.1394"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 3 31.4563"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 10 8"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32 12.5 -4"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32 -6 -12"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 -21 -15.5"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7.97022 0.482076 0.512877"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6.02983 -0.355828 6"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-0.347757 5.96967 6"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 6 -0.411104"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.75 -30 -3.5"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.75 -30 4"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.25 -30 3"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14.25 -31 3.5"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16.3204 -29.5569 0.0505596"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.25 -32 -12.5"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.75 -32 -12.5"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.25 -32 12.5"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.75 -32 12.5"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21.25 -28 16.5"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17.25 -28 21"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15.75 -28 22"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21.75 -28 16.5"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21.25 -28 -16"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16.25 -28 -21.5"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16.25 -28 -22"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21.25 -28 -16.5"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21.25 28 -17"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16.25 28 -22"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16.25 28 -21.5"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21.25 28 -16"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21.75 28 16.5"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15.75 28 22"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15.75 28 21.5"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21.25 28 16.5"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9.25 32 7.5"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.74133 31.2081 14.0854"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.25 32 4"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6.25736 31.3767 15"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2.75 18.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2.25 10 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11.25 -2.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22.25 0 -3"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.75 0 -1.5"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22.75 -2.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 7 -3"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 19.5 -3"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8.25736 31.3767 -8"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12.25 -31 -4"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.331948 -7.97624 0.454675"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.449052 0.467071 -4.03665"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new Item() { + position = "3.2 -1.7 6"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6.02934 -1.8 8.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.8 -1.7 6"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6.29073 -1.12531 3.44334"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6.07144 3.40802 -1.7"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.2 6.07001 -1.7"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.9487 8.8 -1.7"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.8 6.21579 -1.7"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.7 8.9 6.12517"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.7 6.11491 8.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.32911 3.40857 6"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.7 6.32019 3.2"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.25 -1.25 30.6"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.2 -1.2 -28.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12.0035 -26.9696 23.6514"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23.6634 3.98816 -27.0572"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11.9965 -26.9696 23.6514"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23.6634 11.9882 -27.0572"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23.6634 -4.01184 -27.0572"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.0035 -26.9696 23.6514"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23.4634 -12.0118 -27.0572"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31 -1.25015 -1.20178"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23.4293 4.00299 26.9758"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30.2479 -2.25501 1.05278"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23.4293 12.003 26.9758"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23.4293 -3.99701 26.9758"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.6 -1.2 -1.2"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23.4293 -11.997 26.9758"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 -30.813 -7"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.2415 30.1946 -2.45238"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23.5686 4.00875 -27.014"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4.01814 -23.3688 26.9857"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23.5686 12.0087 -27.014"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.0181 -23.3688 26.9857"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.98186 -23.3688 26.9857"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.02841 23.5673 -26.9913"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11.9819 -23.3688 26.9857"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.95894 23.3672 26.9762"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2.47336 30.1717 0.919035"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11.9589 23.3672 26.9762"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.04106 23.3672 26.9762"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2.20347 0.854829 31.25"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12.0411 23.3672 26.9762"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23.2398 4.01747 27.0239"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 -29.813 2"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23.2398 12.0175 27.0239"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23.2398 -3.98253 27.0239"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 -29.5 12"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23.2398 -11.9825 27.0239"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23.7139 -26.9716 12"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11.9529 -27.0108 -23.6458"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12.0284 23.5673 -26.9913"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.99869 -23.6709 -26.9973"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23.7139 -26.9716 4"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11.9987 -23.6709 -26.9973"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.00131 -23.6709 -26.9973"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.5 12 -14"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12.0013 -23.6709 -26.9973"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.5 -12 14"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26.9909 -23.6282 -4"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 2 30.8"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26.9909 -23.6282 -12"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26.9909 -23.6282 4"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.7 -13.65 -29"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26.9909 -23.6282 12"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 -8 -32.267"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.9783 -23.6671 -4"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4 -10 32"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.9783 -23.6671 -12"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.9783 -23.6671 4"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7.97958 -30.8 7.11408"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.9783 -23.6671 12"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28 -23 -2"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4.04709 -27.0108 -23.6458"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.9529 -27.0108 -23.6458"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.8503 -4.13446 23.8409"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23.5686 -11.9913 -27.014"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.8503 -12.1345 23.8409"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.8503 3.86555 23.8409"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23.5686 -3.99125 -27.014"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.8503 11.8655 23.8409"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27.0575 -4.05206 -23.6247"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30.8 -10.1126 -8"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27.0575 -12.0521 -23.6247"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27.0575 3.94794 -23.6247"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.0471 -27.0108 -23.6458"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27.0575 11.9479 -23.6247"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27.0464 23.7115 -4"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.82558 31 11"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27.0464 23.7115 -12"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27.0464 23.7115 4"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 -28 -23"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27.0464 23.7115 12"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.2 3 1.05"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.97159 23.5673 -26.9913"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 2 -28.313"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26.9893 -4.00371 23.67"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.908119 -2.57777 31.25"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26.9893 -12.0037 23.67"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26.9893 3.99629 23.67"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.813 2 2"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26.9893 11.9963 23.67"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26.9697 -3.99582 -23.6674"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11.9716 23.5673 -26.9913"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26.9697 -11.9958 -23.6674"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26.9697 4.00417 -23.6674"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 13 -30"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26.9697 12.0042 -23.6674"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26.9439 23.6597 -4"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.02033 -29.163 2.96416"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26.9439 23.6597 -12"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26.9439 23.6597 4"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2.98152 1.00136 -27.75"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26.9439 23.6597 12"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31.267 -10 8"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23.664 -26.9988 -4"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32 -4 14"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23.664 -26.9988 -12"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23.664 -26.9988 4"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 32.267 -10"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23.664 -26.9988 12"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 27.6 23"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23.8247 26.9387 -4"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 23.4 -2"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23.8247 26.9387 -12"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23.8247 26.9387 4"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger(Bounds) { + position = "-35.5 35.5 -35.5"; + rotation = "1 0 0 0"; + scale = "71 71 85"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Item() { + position = "23.8247 26.9387 12"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.2 0.905182 2.9916"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23.7139 -26.9716 -4"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.18803 30.5992 -1.35638"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.97288 26.9491 23.6486"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.2 -29.6 -1.3"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11.9729 26.9491 23.6486"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.02713 26.9491 23.6486"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30.75 1.1799 -2.43529"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12.0271 26.9491 23.6486"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4.02931 27.0027 -23.6848"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.9965 -26.9696 23.6514"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.0293 27.0027 -23.6848"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.97069 27.0027 -23.6848"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23.7139 -26.9716 -12"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11.9707 27.0027 -23.6848"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23.6203 26.9634 -4"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.06837 -29.217 0.994485"; + rotation = "1 0 0 180"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23.6203 26.9634 -12"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23.6203 26.9634 4"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23.6203 26.9634 12"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.00005 3.03539 -27.75"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "NoRespawnAntiGravityItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Marker(Glassy) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Pianoforte.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/intermediate/Epicenter.jpg b/data/multiplayer/hunt/intermediate/Epicenter.jpg new file mode 100644 index 00000000..4f0fc764 Binary files /dev/null and b/data/multiplayer/hunt/intermediate/Epicenter.jpg differ diff --git a/data/multiplayer/hunt/intermediate/Epicenter.mis b/data/multiplayer/hunt/intermediate/Epicenter.mis new file mode 100644 index 00000000..6f6b906b --- /dev/null +++ b/data/multiplayer/hunt/intermediate/Epicenter.mis @@ -0,0 +1,2130 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + level = "6"; + time = "300000"; + music = "Tim Trance.ogg"; + name = "Epicenter"; + maxGemsPerSpawn = "7"; + desc = "Curves galore!"; + alarmStartTime = "25"; + artist = "Alex Swanson"; + gameMode = "Hunt"; + type = "Intermediate"; + radiusFromGem = "20"; + game = "Ultra"; + overviewHeight = "5"; + score[0] = "50"; + score[1] = "80"; + platinumScore[0] = "100"; + platinumScore[1] = "150"; + ultimateScore[0] = "160"; + ultimateScore[1] = "215"; + glassCenter = "Glassy"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.573201 0.275357 -0.771764"; + color = "1.080000 1.030000 0.900000 1.000000"; + ambient = "0.400000 0.400000 0.500000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "Clear"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/Epicenter.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "51 -17.5 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_tight_curve.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "36.5 48 4"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_wide_curve.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-36.5 -48 4"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_wide_curve.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-17 -21 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-17 21 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-17 57 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-11 57 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "21 57 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-21 -57 2"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-26 12 0"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-26 32 -2"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-26 -26 0"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-40 -26 0"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-40 -42 2"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-37 21 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-26 0 0"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-26 -12 0"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-26 0 0"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "26 -12 0"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "26 -32 -2"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "40 42 2"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "0 26 2"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "0 -26 2"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "0 -52 2"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "26 26 0"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "40 26 0"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "56 -8 -2"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-56 8 -2"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "39 9 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-39 -9 -2"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "11 39 2"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-11 -39 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "11 -57 0"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "17 -57 -2"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "26 0 0"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "0 52 2"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "26 12 0"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "26 0 0"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "17 -21 0"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "37 -21 -2"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-37 37.5 -2"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_wide_curve.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-17 53.5 -2"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_wide_curve.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-13.5 32 -2"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_wide_curve.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-42.5 14 -2"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_wide_curve.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "17.5 18 -2"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_wide_curve.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-17.5 -18 -2"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_wide_curve.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "13.5 -32 -2"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_wide_curve.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "37 -37.5 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_wide_curve.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "17 -53.5 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_wide_curve.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "42.5 -14 -2"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_wide_curve.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "52.5 12 0"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_wide_curve.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-52.5 -12 0"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_wide_curve.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-25 8.5 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_tight_curve.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-10.5 -24 -2"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_tight_curve.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-15 18.5 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_tight_curve.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "10.5 24 -2"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_tight_curve.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-15 11.5 -2"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_tight_curve.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-51 17.5 -2"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_tight_curve.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "15 -18.5 -2"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_tight_curve.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "25 -8.5 -2"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_tight_curve.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "15 -11.5 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_tight_curve.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "17 21 0"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif"; + showTerrainInside = "0"; + }; + new SimGroup(SpawnPoints) { + + new Trigger() { + position = "-25.6484 45.2322 -0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "-56.3848 0.388292 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-19.0921 -56.9283 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "18.7395 -41.0599 -0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "55.143 -0.1 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "41.5069 39.2771 3.57334"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-18.7335 8.22464 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "-18.7565 -9.92249 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "16.9705 -12.4369 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "18.4582 9.30917 -0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "33.8265 -0.162903 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "-34.7007 -0.0185242 1.24747"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-26.3 20.7 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-24.5 -19.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "26.3 -21.1 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "0 -20 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "0 20 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "24.5 19.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "17.9 11.5 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-17.8 -13 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-19 13.5 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "18 -14 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "16 57 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-16 -57 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-40.1 -38.9 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "39.5 38 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-33.5 41 -0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-46 28 -0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "32.5 -41 -0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "46 -28.5 -0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-53 -18.5 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "54 18 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + }; + new SimGroup(GemSpawns) { + + new Item() { + position = "-26 -48 8.52147"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.5 3.5 2.50978"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.5 3.5 2.50978"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.5 -3.5 2.50978"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.5 -3.5 2.50978"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.5 0 2.50978"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 3.5 2.50978"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.5 0 2.50978"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -3.5 2.50978"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8.0125 -4 0.551902"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8.01186 4.00657 0.530601"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 8.0125 0.547623"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4 8.0125 0.527067"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 12 -1.48196"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 0 -1.41292"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -12 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 0 -1.47132"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 8 -2.63938"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 12 -2.572"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 12 -2.53026"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 8 -2.55242"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 -8 -2.56563"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 -12 -2.55222"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 -12 -2.46886"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 -8 -2.54186"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.01186 4.00657 0.500425"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.0125 -4 0.508267"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4 -8.0125 0.48162"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 -8.0125 0.524163"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30 -48 8.52147"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-36 31 5.02147"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 -48 12.0215"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -57 2.02147"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 -52 2.02147"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 -43.5 2.02147"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 -39 2.02147"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32 -39 2.02147"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40 -34.5 2.02147"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-46 33 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39 41 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 41.5 -1.97849"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28 -42.5 -1.97849"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "47 -23.5 -1.97849"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-46 24 -1.97849"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26 35 -1.97849"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40 20.5 -1.97849"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-55 19.5 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 28 -1.97849"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6.5 29 -1.97849"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 -29 -1.97849"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-56.5 -1.5 0.021504"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-48.5 -9 0.021504"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47.5 -21 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-34 5.5 -1.97849"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41.5 6 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-34 -9 -1.97849"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34 2 -1.97849"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34 9 -1.97849"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-34 -2 -1.97849"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-46.5 13 -1.97849"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 10 -1.97849"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -15 -1.97849"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 9 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 16.5 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21.5 -9 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14.5 -15.5 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 15 -1.97849"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 39 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25.5 50 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36 -31 5.02147"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46 -33 -1.97849"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 -41 -1.97849"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 -35 -1.97849"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40 -20.5 -1.97849"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "55 -19.5 -1.97849"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 -28 -1.97849"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "56.5 1.5 0.021504"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48.5 9 0.021504"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "47.5 21 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33.5 21 0.021504"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20.5 21 0.021504"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 -21.5 0.021504"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33.5 -21.5 0.021504"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.5 -21 2.03465"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 -20.5 2.00415"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.5 20.5 2.01727"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 23.5 2.04558"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -23 2.00415"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 20.5 2.01969"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34 -5.5 -1.97849"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "41.5 -6 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45.5 -11.5 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20 -10 -1.97849"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 -39 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25.5 -50 -1.97849"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28.5 -21.5 0.021504"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28.5 21.5 0.021504"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 57 2.02147"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32 -57 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -36 4.02147"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -42.5 4.02147"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -57 2.02147"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 48 8.52147"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30 48 8.52147"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 48 12.0215"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.0700012 0.00802624 3.08124"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26.1187 6.09831 2.01593"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26.0331 -5.92502 2.01975"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26.0923 0.00164119 0.00653255"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25.8822 -0.0144566 0.0156422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.9615 5.99621 2.00386"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25.0132 -5.99985 2.00764"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 57 2.02147"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 52 2.02147"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 43.5 2.02147"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20 39 2.02147"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32 39 2.02147"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40 34.5 2.02147"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 42.5 4.02147"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32 57 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 36 4.02147"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new Item() { + position = "0 0 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 40 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -40 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-56 -8 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "56 8 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24.1265 -18.7741 0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24.0933 19.0456 0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46 -21 -1.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 -41.5 -1.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26 41 -1.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-46 21 -1.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40 -21 0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40.5 20.5 0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 48 2.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 57 2.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 -57 2.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 -48.5 2.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25.5 -39 2.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 38.5 2.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39.2989 -53.3531 3.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40.5823 53.1317 3.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 -11.5 -2.267"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 13.1 -2.267"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44 -38.5 -2.267"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-43.5 38.5 -2.267"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26.868 5.08622 -2.267"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25.182 -4.68998 -2.267"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger(Bounds) { + position = "-62.5 63.5 -7.56266"; + rotation = "1 0 0 0"; + scale = "125 127 1000"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Marker(Glassy) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Comforting Mystery.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/intermediate/GemsInTheRoad.jpg b/data/multiplayer/hunt/intermediate/GemsInTheRoad.jpg new file mode 100644 index 00000000..b27093ac Binary files /dev/null and b/data/multiplayer/hunt/intermediate/GemsInTheRoad.jpg differ diff --git a/data/multiplayer/hunt/intermediate/GemsInTheRoad.mis b/data/multiplayer/hunt/intermediate/GemsInTheRoad.mis new file mode 100644 index 00000000..53c118d9 --- /dev/null +++ b/data/multiplayer/hunt/intermediate/GemsInTheRoad.mis @@ -0,0 +1,1732 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + name = "Gems in the Road"; + music = "Tim Trance.ogg"; + desc = "Find the gems in the maze of roads!"; + radiusFromGem = "20"; + gameMode = "Hunt"; + level = "5"; + type = "Intermediate"; + time = "300000"; + maxGemsPerSpawn = "6"; + alarmStartTime = "25"; + game = "Ultra"; + artist = "Alex Swanson"; + overviewHeight = "10"; + score[0] = "25"; + score[1] = "50"; + platinumScore[0] = "75"; + platinumScore[1] = "100"; + ultimateScore[0] = "125"; + ultimateScore[1] = "160"; + glassCenter = "Glassy"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.573201 0.275357 -0.771764"; + color = "1.080000 1.030000 0.900000 1.000000"; + ambient = "0.400000 0.400000 0.500000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "Clear"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/GemsInTheRoad.dif"; + showTerrainInside = "0"; + }; + new SimGroup(SpawnPoints) { + + new Trigger() { + position = "-2 68 8"; + rotation = "0 0 1 177.044"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "0 -13 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "-68 69 -2"; + rotation = "0 0 1 90.5273"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "-55 41 3"; + rotation = "0 0 1 91.6732"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-14 37 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "55.0036 30.8524 10"; + rotation = "0 0 -1 92.8192"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "74 69 0"; + rotation = "0 0 -1 91.6732"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-2 115 2.99992"; + rotation = "0 0 1 179.909"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + }; + new Item() { + position = "58 53 5.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.13405 78.3885 -1.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 1 2.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30 43 3.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 29 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 55 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10.7324 27.7237 2.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-66.3189 69.5255 -5.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new SimGroup(GemSpawns) { + + new Item() { + position = "-64 58 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-68 57 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-60 50 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-60 42 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-48 41 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51 45 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49 50 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 49 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38 50 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38.5 45 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 42 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 37 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-34.5 29 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-42 30.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53.5 28.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-56.5 30.5 0.0552206"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64 70 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-56 69 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-46 69 -1.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32 69 2.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-50 70 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39 70 0.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26 70 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 68 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 66 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 69 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 69 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 65 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 78 4.4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 86 3.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 96 2.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + Gem = "21671"; + }; + new Item() { + position = "-3 106 1.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 118 0.4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 109 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 100 -0.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 92 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 83 -1.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 74 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 64 -2.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 56 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23 70 4.40934"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30 68 3.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36 70 2.49787"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48 68 0.65"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "58 70 -0.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "69 68 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "69 62 -3.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "59 60 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48 62 -1.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 60 -1.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32 54 -0.316899"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "38 54 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46 54 2.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "54 54 4.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "58 49 5.4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "58 44 6.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "58 38 7.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "51 31 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44 32 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "37 30 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30 32 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23 30 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 32 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 31 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 30 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 32 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 38 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 47 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 60 5.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 29 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17.5 28 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13.5 27 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8.5 28.5 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.5 27 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 28 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 22.5 2.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 16.5 1.65"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 10.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 3.5 -0.4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -2 -0.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 25 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 20 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 14 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 8 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 2 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 -4 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 -4 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 -12 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 -13 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 -11 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 -13 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 -6 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 -7 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 -4 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 -7 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 -5 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 -7 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 0 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 6 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 11 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 14 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 13 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 14 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4 14 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 17 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 21 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 29 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.5 31.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.5 35 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.5 38 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.5 42 0.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.5 43.5 -0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.5 46 -2.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.5 48 -3.9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.5 51 -5.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.5 53.5 -6.9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.5 56.5 -7.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.5 60.5 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.5 63.5 -7.9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.5 67.5 -6.9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.5 71.5 -4.9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.5 74.5 -2.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.5 77 -0.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.5 80 1.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.5 84.5 3.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + Gem = "21672"; + }; + new Item() { + position = "1.5 89.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + Gem = "21668"; + }; + new Item() { + position = "1 25 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 54 5.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 45 -3.65"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 49.5 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 45.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 41.5 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 38 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 34.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 30.5 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 26.5 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 23 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 17.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 10.5 0.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 7 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.933423 19.0874 -2.36"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.21419 24.6763 -2.78815"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.82988 25.1702 -2.95229"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10.2714 23.4062 -2.80436"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19.0121 38.6106 -3.91575"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19.2424 42.5503 -3.28026"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.4769 45.1442 -2.41269"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.5504 48.373 -1.8525"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18.1358 53.2657 -1.90712"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23.0695 54.0353 -1.81224"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.8033 55.3933 -1.59033"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33.8188 56.9357 -0.912791"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36.4718 61.5082 -0.977313"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.0072 8.72995 0.134761"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.1887 5.37368 0.0657947"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new Trigger(Bounds) { + position = "-73.5 125.25 -11.5575"; + rotation = "1 0 0 0"; + scale = "153 142.75 1000"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Item() { + position = "2.77053 67.4212 4.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-0.0094304 -9.88306 -1.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.90932 31.2926 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "58.18 31.0773 8.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-63.9569 49.4291 -1.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.49587 92.5937 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "73.9294 61.3301 -3.313"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2.806 120.641 0.687"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15.1023 4.89509 0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7.10936 23.0114 -2.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Marker(Glassy) { + position = "1.5 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Comforting Mystery.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- + diff --git a/data/multiplayer/hunt/intermediate/MarbleItUp.jpg b/data/multiplayer/hunt/intermediate/MarbleItUp.jpg new file mode 100644 index 00000000..cce3588e Binary files /dev/null and b/data/multiplayer/hunt/intermediate/MarbleItUp.jpg differ diff --git a/data/multiplayer/hunt/intermediate/MarbleItUp.mis b/data/multiplayer/hunt/intermediate/MarbleItUp.mis new file mode 100644 index 00000000..88beaca3 --- /dev/null +++ b/data/multiplayer/hunt/intermediate/MarbleItUp.mis @@ -0,0 +1,2324 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + level = "5"; + name = "Marble It Up!"; + desc = "Show off your skills and collect the gems but above all else, Marble It Up!"; + music = "Tim Trance.ogg"; + artist = "Alex Swanson"; + game = "Ultra"; + gameMode = "Hunt"; + radiusFromGem = "20"; + time = "300000"; + maxGemsPerSpawn = "6"; + alarmStartTime = "25"; + type = "Intermediate"; + overviewHeight = "10"; + score[0] = "25"; + score[1] = "40"; + platinumScore[0] = "60"; + platinumScore[1] = "90"; + ultimateScore[0] = "120"; + ultimateScore[1] = "170"; + glassCenter = "Glassy"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + sphereFront = "platinum/data/shapes/skies/dusk/front.png"; + sphereBack = "platinum/data/shapes/skies/dusk/back.png"; + }; + new Sun() { + direction = "0.573201 0.275357 -0.771764"; + color = "1.080000 1.030000 0.900000 1.000000"; + ambient = "0.400000 0.400000 0.500000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "Dusk"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/MarbleItUp.dif"; + showTerrainInside = "0"; + }; + new SimGroup(GemSpawns) { + + new Item() { + position = "-34.0142 38.0662 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33.5 40.5 9.4928"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37.1591 31.3447 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-36.7023 41.3832 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-43.962 41.4128 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-46.1537 37.774 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40.4988 31.5228 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33.5 35.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40 38 7.46506"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-55 57 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38.5 64 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64 37.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 23 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-50.5 49.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-62.5 13.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53 25.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12.5 62 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26.5 56.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 28 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27.5 47.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-46 68.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-65 56.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-61 69 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-36 70 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-69.5 50 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-69 34 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-69 -20 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-70 -10 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-69.5 0 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40 11.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 42.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 68 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31.5 74.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 45.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 33.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35.5 17 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "72 15.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "57 20 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23 22.5 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42 27 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.5 42 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "38 54 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "54 38 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "55 47.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "53.5 55 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36 48 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40.5 40 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46 35.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "56.5 30 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "59 49 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49 59 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "67 36.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29 28.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 33 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27.5 13 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.5 28.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28 56 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "60 63 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "67 60 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "66 44 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "66 54 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "54 66.5 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44.5 66.5 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "69 75.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "75.5 68.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49 74.5 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "74.5 49 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "65 -8.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "52.5 -10.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42 -18.5 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "66 -25.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "63 -30.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "55.5 -34 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "71.5 -39.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "77 -35 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "50 -50 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48.5 -45.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "75.5 -55.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "75.5 -75.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49.5 -35 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 -48.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "62 -62 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28.5 -29 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "52.5 -29.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 -50.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "56.5 -75.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "41.5 -44.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36.5 -27 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48.5 -25.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.5 -34.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 -42 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42.5 -35 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34.5 -42 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "41 -69.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34.5 -75.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34 -55 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27.5 -63.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "43.5 -40 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-59.5 0 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-59.5 0 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-70 9.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-67 -28.5 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 -51 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-69.5 -61 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-70.5 -71 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-52 -52 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-48 -44 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-60 -40 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-63 -47 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-46 -58.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39.5 -63 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-44 -48 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39 -48.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-43.5 -39 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-48 -36 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-36 -41.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 -32 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47.5 -32.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32 -47 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-58.5 -57.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-63 -27.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22.5 -63 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14.5 -71 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 -15 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22.5 -22.5 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 -34 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35.5 -18.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-48.5 -18 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -42 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.5 0 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.32754 -0.415785 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4.5 4.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.5 4.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 -68.5 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18.5 -59.5 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-50.5 -72 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8.5 -10 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 13 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9.5 -9.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18.5 0 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 18.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18.5 0 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -18.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 -12.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 -21.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 21.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 21.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21.5 -21.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.5 13 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 13.5 2.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13.1 -13 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19.5 -46.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 -70 10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9.5 -70 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.0806305 0.00997359 6.19851"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2.72588 -6.61069 4.01005"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2.75514 6.60023 4.01072"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7.32488 17.3575 1.60143"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6.78813 16.7318 1.17508"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18.4664 7.80979 2.20641"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17.9106 -7.38035 1.84872"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8.101 -18.4645 2.39194"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6.67977 -16.8377 1.29481"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.7068 -7.32571 1.74977"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.4543 7.1416 1.70318"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23 -70 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-34.5 -30 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-62 -69.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-52 -61 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-61 -52 9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(SpawnPoints) { + + new Trigger() { + position = "23 0 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + }; + new Trigger() { + position = "0 23 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + }; + new Trigger() { + position = "-23 0 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + center = "1"; + }; + new Trigger() { + position = "-29.5 28.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + center = "1"; + }; + new Trigger() { + position = "27.5 27.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + }; + new Trigger() { + position = "26.5 -27 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + }; + new Trigger() { + position = "-26.5 -26.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + }; + new Trigger() { + position = "0 -42.5 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + }; + new Trigger() { + position = "42.5 1 11"; + rotation = "0 0 -1 93.9651"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + }; + new Trigger() { + position = "-0.5 42 11"; + rotation = "0 0 1 174.752"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + }; + new Trigger() { + position = "-42 2.67012e-007 11"; + rotation = "0 0 1 91.1003"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + }; + new Trigger() { + position = "-57 20 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + center = "1"; + }; + new Trigger() { + position = "-54.5 53.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + }; + new Trigger() { + position = "-18.5 56 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + center = "1"; + }; + new Trigger() { + position = "15 58 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + }; + new Trigger() { + position = "56 75 15.5137"; + rotation = "0 0 1 186.784"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + }; + new Trigger() { + position = "75 55.5 12.595"; + rotation = "0 0 -1 95.6839"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + }; + new Trigger() { + position = "38.5 46.5 10.5"; + rotation = "0 0 1 211.604"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + }; + new Trigger() { + position = "74 11 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + }; + new Trigger() { + position = "53.5 3.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + }; + new Trigger() { + position = "73 -34 11"; + rotation = "0 0 -1 91.6733"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + }; + new Trigger() { + position = "62 -59 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + }; + new Trigger() { + position = "39.5 -74 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + }; + new Trigger() { + position = "0 -57 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + }; + new Trigger() { + position = "-20 -68.5 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + }; + new Trigger() { + position = "-54 -68.5 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + }; + new Trigger() { + position = "-43.5 -43.5 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + }; + new Trigger() { + position = "-71 -45 11"; + rotation = "0 0 1 92.2462"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + }; + new Trigger() { + position = "-69 21 11.5"; + rotation = "0 0 1 86.5166"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + center = "1"; + }; + new Trigger() { + position = "-69.5 44 11.529"; + rotation = "0 0 1 90.5273"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + center = "1"; + }; + new Trigger() { + position = "-53 69.5 11.5"; + rotation = "0 0 1 171.887"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + }; + new Trigger() { + position = "-21 68.5 11.5"; + rotation = "0 0 1 163.293"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + }; + new Trigger() { + position = "26.5 75.5 11.5"; + rotation = "0 0 1 178.19"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + center = "1"; + }; + }; + new Item() { + position = "-35 0 8.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41.5 19.5 2.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 42 2.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "65 49 2.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 0 8.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 -55 4.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 -56 2.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 59.5 8.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-67.5 -68 8.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "70.5 -55 4.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "70 70.5 8.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-69.5 68.5 8.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "68.5 -4 3.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "73 -74 3.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2.78741 6.65219 5.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-46.5426 40.6361 13.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-70.5 -24.5 9.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 75.5 3.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 -19.5 10.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20.5 20 10.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57.5 38 2.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6.69834 -2.65797 7.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37 -59 4.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "63.5 -12 4.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "62 20 4.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31.5 62 4.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.5 63.5 4.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-58.5 -10.5 4.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6.37055 6.5953 1.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 -35.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46 -49 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 41.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57.5 -22.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42 26.5 2.00049"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 35 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 17 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18.5 -18 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49.5 65 1.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38 56.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49 -49 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44 44 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.88496 -7.27892 1.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger(Bounds) { + position = "-77.5 81.5 -3.5"; + rotation = "1 0 0 0"; + scale = "159 163 1000"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Marker(Glassy) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Comforting Mystery.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- + diff --git a/data/multiplayer/hunt/intermediate/Marbleland.jpg b/data/multiplayer/hunt/intermediate/Marbleland.jpg new file mode 100644 index 00000000..9e3c1a8b Binary files /dev/null and b/data/multiplayer/hunt/intermediate/Marbleland.jpg differ diff --git a/data/multiplayer/hunt/intermediate/Marbleland.mis b/data/multiplayer/hunt/intermediate/Marbleland.mis new file mode 100644 index 00000000..c861ed53 --- /dev/null +++ b/data/multiplayer/hunt/intermediate/Marbleland.mis @@ -0,0 +1,6694 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + name = "Marbleland"; + artist = "Matan"; + music = "Tim Trance.ogg"; + desc = "Traverse the spacious Marbleland while hunting for its dispersed gems, but beware its hazardous side."; + gameMode = "Hunt"; + level = "13"; + type = "Advanced"; + time = "300000"; + maxGemsPerSpawn = "8"; + radiusFromGem = "27.5"; + alarmStartTime = "25"; + game = "PlatinumQuest"; + overviewHeight = "5"; + score[0] = "30"; + score[1] = "60"; + platinumScore[0] = "80"; + platinumScore[1] = "130"; + ultimateScore[0] = "140"; + ultimateScore[1] = "200"; + RedSpawnChance = "0.9"; + yellowSpawnChance = "0.6"; + blueSpawnChance = "0.2"; + fanStrength = "30"; + glassCenter = "Glassy"; + }; + new Marker(Glassy) { + position = "-27 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "0"; + msToNext = "1000"; + smoothingType = "Linear"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.638261 0.459006 -0.61801"; + color = "1.400000 1.200000 0.400000 1.000000"; + ambient = "0.300000 0.300000 0.400000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "clear"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/PlatinumQuest/Marbleland.dif"; + showTerrainInside = "0"; + }; + new SimGroup(SpawnPointGroup) { + + new Trigger() { + position = "-80 8 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "-66 -6 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "3.5 -48 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "62 -2 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "69.5 22 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "19 56.5 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "-20 66 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "-59 64 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "-58 -34 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "26.5 -21.75 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "-9 -24 3.375"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "41 5 3.875"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "45 19 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "36 35 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "1 41 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "-54 45 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "-30 39 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "-68 17 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "-23 -7 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "-56 13 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "-43 28 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "-11 27 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "23 17 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "34 -8 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "2 -9 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + }; + new SimGroup(MPGroup) { + + new SimGroup(MustChange_g) { + + new Path() { + + new Marker() { + position = "-60.75 15 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "0"; + msToNext = "5500"; + smoothingType = "Linear"; + }; + new Marker() { + position = "8.875 15 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "1"; + msToNext = "250"; + smoothingType = "Linear"; + }; + new Marker() { + position = "8.875 15 -8.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "2"; + msToNext = "426"; + smoothingType = "Linear"; + }; + new Marker() { + position = "-60.75 15 -8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "3"; + msToNext = "250"; + smoothingType = "Linear"; + }; + new Marker() { + position = "-60.75 15 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "4"; + msToNext = "100"; + smoothingType = "Accelerate"; + }; + }; + new PathedInterior(MustChange) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "PathedDefault"; + interiorResource = $usermods @ "/data/multiplayer/interiors/PlatinumQuest/Marbleland.dif"; + interiorIndex = "5"; + basePosition = "0 0 0"; + baseRotation = "1 0 0 0"; + baseScale = "1 1 1"; + initialTargetPosition = "-1"; + initialPosition = "2345"; + }; + }; + new SimGroup(MustChange_g) { + + new Path() { + + new Marker() { + position = "-43.5 15 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "0"; + msToNext = "5500"; + smoothingType = "Linear"; + }; + new Marker() { + position = "26.125 15 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "1"; + msToNext = "250"; + smoothingType = "Linear"; + }; + new Marker() { + position = "26.125 15 -8.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "2"; + msToNext = "426"; + smoothingType = "Linear"; + }; + new Marker() { + position = "-43.5 15 -8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "3"; + msToNext = "250"; + smoothingType = "Linear"; + }; + new Marker() { + position = "-43.5 15 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "4"; + msToNext = "100"; + smoothingType = "Accelerate"; + }; + }; + new PathedInterior(MustChange) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "PathedDefault"; + interiorResource = $usermods @ "/data/multiplayer/interiors/PlatinumQuest/Marbleland.dif"; + interiorIndex = "4"; + basePosition = "0 0 0"; + baseRotation = "1 0 0 0"; + baseScale = "1 1 1"; + initialTargetPosition = "-1"; + initialPosition = "2345"; + }; + }; + new SimGroup(MustChange_g) { + + new Path() { + + new Marker() { + position = "-39.25 8.75 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "0"; + msToNext = "5755"; + smoothingType = "Linear"; + }; + new Marker() { + position = "30.375 8.75 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "1"; + msToNext = "250"; + smoothingType = "Linear"; + }; + new Marker() { + position = "30.375 8.75 -8.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "2"; + msToNext = "555"; + smoothingType = "Linear"; + }; + new Marker() { + position = "-39.25 8.75 -8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "3"; + msToNext = "250"; + smoothingType = "Linear"; + }; + new Marker() { + position = "-39.25 8.75 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "4"; + msToNext = "100"; + smoothingType = "Accelerate"; + }; + }; + new PathedInterior(MustChange) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "PathedDefault"; + interiorResource = $usermods @ "/data/multiplayer/interiors/PlatinumQuest/Marbleland.dif"; + interiorIndex = "3"; + basePosition = "0 0 0"; + baseRotation = "1 0 0 0"; + baseScale = "1 1 1"; + initialTargetPosition = "-1"; + initialPosition = "1337"; + }; + }; + new SimGroup(MustChange_g) { + + new Path() { + + new Marker() { + position = "-56 9 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "0"; + msToNext = "5755"; + smoothingType = "Linear"; + }; + new Marker() { + position = "13.625 9 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "1"; + msToNext = "250"; + smoothingType = "Linear"; + }; + new Marker() { + position = "8.625 9 -8.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "2"; + msToNext = "555"; + smoothingType = "Linear"; + }; + new Marker() { + position = "-56 9 -8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "3"; + msToNext = "250"; + smoothingType = "Linear"; + }; + new Marker() { + position = "-56 9 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "4"; + msToNext = "100"; + smoothingType = "Accelerate"; + }; + }; + new PathedInterior(MustChange) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "PathedDefault"; + interiorResource = $usermods @ "/data/multiplayer/interiors/PlatinumQuest/Marbleland.dif"; + interiorIndex = "2"; + basePosition = "0 0 0"; + baseRotation = "1 0 0 0"; + baseScale = "1 1 1"; + initialTargetPosition = "-1"; + initialPosition = "1337"; + }; + }; + new SimGroup(MustChange_g) { + + new Path() { + + new Marker() { + position = "-46.25 2.75 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "0"; + msToNext = "5325"; + smoothingType = "Linear"; + }; + new Marker() { + position = "23.375 2.75 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "1"; + msToNext = "250"; + smoothingType = "Linear"; + }; + new Marker() { + position = "23.375 2.75 -8.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "2"; + msToNext = "331"; + smoothingType = "Linear"; + }; + new Marker() { + position = "-46.25 2.75 -8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "3"; + msToNext = "250"; + smoothingType = "Linear"; + }; + new Marker() { + position = "-46.25 2.75 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "4"; + msToNext = "100"; + smoothingType = "Accelerate"; + }; + }; + new PathedInterior(MustChange) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "PathedDefault"; + interiorResource = $usermods @ "/data/multiplayer/interiors/PlatinumQuest/Marbleland.dif"; + interiorIndex = "1"; + basePosition = "0 0 0"; + baseRotation = "1 0 0 0"; + baseScale = "1 1 1"; + initialTargetPosition = "-1"; + initialPosition = "517"; + }; + }; + new SimGroup(MustChange_g) { + + new Path() { + + new Marker() { + position = "-64 3 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "0"; + msToNext = "5325"; + smoothingType = "Linear"; + }; + new Marker() { + position = "5.625 3 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "1"; + msToNext = "250"; + smoothingType = "Linear"; + }; + new Marker() { + position = "5.625 3 -8.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "2"; + msToNext = "331"; + smoothingType = "Linear"; + }; + new Marker() { + position = "-64 3 -8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "3"; + msToNext = "250"; + smoothingType = "Linear"; + }; + new Marker() { + position = "-64 3 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "4"; + msToNext = "100"; + smoothingType = "Accelerate"; + }; + }; + new PathedInterior(MustChange) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "PathedDefault"; + interiorResource = $usermods @ "/data/multiplayer/interiors/PlatinumQuest/Marbleland.dif"; + interiorIndex = "0"; + basePosition = "0 0 0"; + baseRotation = "1 0 0 0"; + baseScale = "1 1 1"; + initialTargetPosition = "-1"; + initialPosition = "517"; + }; + }; + }; + new SimGroup(ItemGroup) { + + new Item() { + position = "74.5 -8 3.20001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "74.5 26 3.20001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 43 0.200001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.5 3.875 1.20001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 14 -4.29999"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-44 21 0.200001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-56.5 -3 0.200001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39.25 -35 0.699997"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 -43 0.200001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 -22 0.200001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42 -47 1.20001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 -54 0.200001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-74 2 2.20001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 -48 0.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-43 -42 0.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 -22 0.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49 -23 0.687"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-76 16 2.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-63 34 0.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-42.625 55.375 1.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 27 0.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 62 1.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11.875 41 0.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49 -11 2.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 9 -0.231356"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "83.5 6 4.76865"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 45 -0.231356"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-50 67 -0.231356"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19.125 43.75 0.76865"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 16 -4.73136"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-50 15 -0.231356"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 -57 0.76865"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49 -45 -0.231356"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 24 0.000503004"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-52.15 3.85 1.00049"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-54.5 -60.5 0.500503"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "51 -3 3.5005"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 66 -0.015779"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19.1381 7.61349 0.984223"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39.5144 -24.6483 1.48422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-89 23 3.98422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-89 -7 3.98422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18.5 6.5 -4.51578"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "59 17 3.48422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-66.9239 55.7603 0.984219"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36.0616 43.8294 0.984226"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28.826 37.0528 0.984221"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(HazardGroup) { + + new StaticShape() { + position = "-62 -16 1"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + new StaticShape() { + position = "-62 -22 1"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + new StaticShape() { + position = "-62 -28 1"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + new StaticShape() { + position = "-22 -26 1"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + new StaticShape() { + position = "-22 -22 1"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + new StaticShape() { + position = "-22 -18 1"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + new StaticShape() { + position = "-29 -30 1"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + new StaticShape() { + position = "-29 -32 1"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + new StaticShape() { + position = "-47 -35 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + new StaticShape() { + position = "-47 -34 1"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + new StaticShape() { + position = "-47 -36 1"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + new StaticShape() { + position = "-48 -35 1"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + new StaticShape() { + position = "-46 -35 1"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + new StaticShape() { + position = "-41.625 -49.25 -0.45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + new StaticShape() { + position = "-30 -57 1"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + new StaticShape() { + position = "-31 -58 1"; + rotation = "0 1 0 90"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + new StaticShape() { + position = "-42 -62 1"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + new StaticShape() { + position = "-34 -62 1"; + rotation = "1 0 0 90"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + new StaticShape() { + position = "-60 60 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "RoundBumper"; + }; + new StaticShape() { + position = "-53 45.6 0"; + rotation = "0 0 1 17"; + scale = "1 1 1"; + dataBlock = "RoundBumper"; + }; + new StaticShape() { + position = "-37 39 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "RoundBumper"; + }; + new StaticShape() { + position = "-32 62 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "RoundBumper"; + }; + new StaticShape() { + position = "-22 48 0"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + dataBlock = "RoundBumper"; + }; + new StaticShape() { + position = "-1.3 66.2 0"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + dataBlock = "RoundBumper"; + }; + new StaticShape() { + position = "32 46 0"; + rotation = "0 0 -1 47"; + scale = "1 1 1"; + dataBlock = "RoundBumper"; + }; + new StaticShape() { + position = "8 40 0"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + dataBlock = "RoundBumper"; + }; + new StaticShape() { + position = "22.4 18.4 0"; + rotation = "0 0 1 234"; + scale = "1 1 1"; + dataBlock = "RoundBumper"; + }; + new StaticShape() { + position = "18 0 0"; + rotation = "0 0 1 63"; + scale = "1 1 1"; + dataBlock = "RoundBumper"; + }; + new StaticShape() { + position = "24.5 10.6 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "RoundBumper"; + }; + new StaticShape() { + position = "12 10 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "RoundBumper"; + }; + }; + new SimGroup(OldVersion) { + + new Item() { + position = "26.75 -43 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.25 -31.75 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemPlatinum"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41.2 54.75 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-69.2 36.9 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-67.25 54.65 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-58.9 58.75 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-62.45 62.55 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-56.6 39.75 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-63.25 67 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53 62.9 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47.2 64.9 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41 66.75 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-34 61.9 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 59 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 64.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24.75 66.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16.6 60.75 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 53 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 57 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23 65 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 66.4 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7.25 62.7 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22.9 49 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 46.75 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16.9 42.4 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11.1 35.1 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.3 34.9 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2.8 32.95 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 41 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 36.9 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-67 26.75 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25.1 44.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 44.75 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30.85 52.75 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-61 28.85 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 38.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30.85 54.6 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33.2 32.6 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20.85 32.85 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30.8 34.4 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18.8 26.8 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-36.8 6.4 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32.75 25 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33.4 20.85 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19.25 26.75 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24.6 19 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 20.8 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.75 29.15 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2.7 24.9 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 16.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.25 7 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2.5 -6.8 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.25 -8.75 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-34.1 -2.2 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16.85 -5.2 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9.2 -2.85 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.7 -8.7 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 27 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 -13.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28.4 -13.6 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 -37 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28.95 -30.35 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.8 -47.6 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4.35 -45 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23.35 -34.8 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-58.6 -39.4 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-60.8 -46.8 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-46.25 -0.75 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41.25 -3.8 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41 -5.75 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41.4 -0.5 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45.25 -4.7 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "76.4 11.1 4.225"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "80.35 9 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "86.5 12 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "86.5 6 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "83.5 12.25 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "86.2 9.05 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "72.35 21.15 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "74.5 29 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "70.5 29.3 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "69.85 15.1 3.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "71.85 3 3.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "68.2 -2.75 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "74.4 -13 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "76.15 7.1 4.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "62.8 11 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "60.8 11 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "62.9 3.15 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "64.65 1.25 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "62.85 17.25 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "52.7 21.15 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "54.15 7.05 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "50.9 5.15 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49 -3 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "52.7 -9 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49.05 29 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "43 16.7 1.175"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46.6 7.1 1.775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40.7 -5 0.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40.6 28.7 0.775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-87 9 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemPlatinum"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-86.75 17 2.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-87 5 12"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemPlatinum"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-82.9 0.9 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-82.6 4.7 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-78.8 17.2 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-80.9 -6.8 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-76.6 -5.1 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-72.9 22.9 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-70.6 -1 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-77.2 26.7 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-72 -7.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-74.5 -9 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-78.9 25 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-65 20 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-58.875 23.375 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-62.375 23.375 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-60.25 20.75 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-60.375 17.75 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-58.375 15.125 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53.5 15.625 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47.375 16 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53.5 20 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-50.5 23.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-50.375 18.375 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39 15.875 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-43.875 16.125 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39.875 18.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38.125 20.75 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47.5 11.875 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40 7.625 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-42.5 11.625 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45.5 5.75 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-48.5 5.75 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-52.25 8.625 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-65 10.25 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-61.75 5.25 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-63 8 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-58.125 11 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-60.875 11 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-50 -5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-52 2 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57 5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-63 2 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-60.5 -2 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-55.125 -0.875 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-55.875 -7 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57.5 -4.125 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 15 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28.9675 19.7544 4.775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24 -0.25 5.575"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.375 9 7.775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28 22 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32.75 22 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22.5 12 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23.125 1 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 3.875 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemPlatinum"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29 12.625 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32.875 5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21.125 8 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29 1 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32 -3 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 -5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 -6 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21.125 -2 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14.875 -1.375 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.625 -4 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.125 -4.125 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 -1 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 6 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 12.625 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15.25 13.25 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 17 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18.375 20.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11.25 23.125 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15.75 2 3.775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19.5 9 5.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22.3581 14.3125 4.425"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 12.125 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemPlatinum"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-36 -54 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49 -57 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 4.125 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 10 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 12.125 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38.375 -60.875 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-43 -57 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37 -61 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 16 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30 3 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51 -60 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 1 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 8 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-54 -56 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28 66 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24 57 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 63 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 56 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23 54 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 53 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34 54 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30 46 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "38 44 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 48 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 40 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 49 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40.6444 33.0993 0.0606694"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 42 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 38 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 48 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.875 54 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.125 60 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 66.125 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 66 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27.875 65.625 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39 62 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-48 56 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 54 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30 54 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30.125 45.6 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 33 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38 43.125 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-36 35.125 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-44 44.875 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-50 47 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53.125 42.125 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemPlatinum"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-52 36 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-68 32 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64 38 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64 41 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-67 47 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64 58 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-55 65 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-58 54 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-68 66 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "83.5 9 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemPlatinum"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "72 9 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "71.5 -8 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "71.5 26 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "65 29 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "65 11 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "63 -7 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "59 -13 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "56 -2 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "58 5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "57 20 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "51 16 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "63 22 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "58 28 2.125"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 24 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 13 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "43 1 1.175"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44 -9 1.35"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-82 21 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-94 4 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-95 11 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-93 -2 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-94 16 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-89.125 7 3.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-85 -2 2.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-81.125 12 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-78 -8 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-72 25.2 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75 21 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-74 -2.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 -40 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 -56 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42 -52 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22.75 -47 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.75 -47 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.75 -39 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22.75 -43 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30.75 -43 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 -57 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 -51 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 -58 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 -58 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 -47 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.25 -38 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.25 -33.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "37.75 -26.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18.75 -28 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6.25 -14.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4 -22 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 -24 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 -35 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemPlatinum"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-48 -28 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-54 -29.875 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-60 -25 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57 -22 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-61 -18.875 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-54.5 -17.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-52.375 -17.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-48 -15 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-46 -19 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-43.75 -15.875 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-50.25 -24.25 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35.5 -24.75 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39.5 -20.75 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37 -21 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-34 -22 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39 -26 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 -15 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27.375 -17.25 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 -20 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -24 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -29.875 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-36 -32 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39.25 -32 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35 -35 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25.25 -38.75 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-32 -40 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41.125 -38.75 8.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-50.6875 -40.9831 5.925"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57 -37 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-50.5 -41.375 0.625"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39.375 -46 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37.25 -46.75 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-44 -49.625 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-42.125 -45 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-40 -51.625 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41.625 -49.25 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemPlatinum"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30 -51 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30 -61 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 -58 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(NewVersion) { + + new SimGroup(GemGroup295) { + + new Item() { + position = "-5.5 -14 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-18 -14 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "37.5 -56 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "6 -14 2.98023e-008"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "26 -14 1.49012e-008"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "37.75 -23 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "37.75 -27 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "17.25 -20 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "3.5 -22 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-11 -24 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "18.75 -28 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "28.75 -30.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "8.25 -31.75 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-5.25 -37.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-5.25 -33.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-15.25 -37.75 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-23 -47 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-6 -58.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-14 -58.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-6 -50.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "4 -44 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "8 -40 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "13.75 -48.25 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "12.5 -56.75 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "26.75 -43 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "41.5 -52 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "26.75 -47 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "26.75 -39 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "22.75 -43 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "30.75 -43 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + }; + new SimGroup(GemGroup196) { + + new Item() { + position = "-34.1 -2.2 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-15.5 -6.5 4.47035e-007"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-20 10 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-18 2 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "2.5 -6.8 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "1 16.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-14 7 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-11 20.8 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-19.25 26.75 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-3 1 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-32.75 25 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-15.75 2 3.775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-19.5 9 5.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-22.3581 14.3125 4.425"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-30 3 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-29 16 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-9 14 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-21 15.125 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-4 8 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + }; + new SimGroup(GemGroup130) { + + new Item() { + position = "-77.2 26.7 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-72 25.2 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-94 16 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-75 21 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-82 21 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-94 4 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-93 -2 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-95 11 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-89.125 7 3.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-74 -2.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-72 -7.5 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-80.9 -6.8 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-78 -8 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-85 -2 2.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-86.75 17 2.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + }; + new SimGroup(GemGroup171) { + + new Item() { + position = "-58.375 15.125 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-36.8 4.4 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-40 18.25 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-58.125 11 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-41.25 23.5 -1.63913e-007"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-40 7.625 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-45.25 -4.7 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-41.25 -5.75 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-66 7 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-61.75 5.25 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-41.4 -0.5 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-65.25 -0.25 -1.49012e-007"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-48.5 5.75 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-42.5 11.625 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-43.875 16.125 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-47.5 11.875 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-65 10.25 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-47.5 23.25 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-60.5 19.25 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-50.375 18.375 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-53.35 15.25 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-52.25 8.625 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-52 2 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-57 5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-54.625 -0.875 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-55.625 -7 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-62.4 23.2 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-60.5 -2 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + }; + new SimGroup(GemGroup264) { + + new Item() { + position = "83.5 9 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "40.7 -5 0.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "71.85 3 3.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "39 13 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "63 -9 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "68.2 -2.75 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "45 24 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "49.05 29 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "58 28 2.125"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "57 20 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "51 16 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "71.5 -8 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "46.6 7.1 1.775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "58 5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "52 7 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "56 -2 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "72 9 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "59 -13 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "52.7 -9 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "72.35 21.15 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "63 25 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "62.85 17.25 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "69.85 15.1 3.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "65 11 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "71.5 26 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "62.9 3.15 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + }; + new SimGroup(GemGroup343) { + + new Item() { + position = "-27.25 -17.25 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-47 -35 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-40 -51.625 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-23 -20 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-25 -24 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-33 -15 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-39.5 -20.75 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-35.5 -24.75 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-51 -60 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-34 -22 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-30 -51 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-49 -57 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-43.75 -15.875 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-54 -56 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-53.5 -17.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-29.25 -8.75 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-61 -18.875 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-60 -25 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-55.75 -22 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-48 -28 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-28 -58 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-54 -29.875 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-35 -35 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-36 -32 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-39.25 -32 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-23.35 -34.8 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-25.25 -38.75 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-36 -55.75 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-38.375 -60.875 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-58.6 -39.4 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-60.8 -46.8 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-50.5 -41.375 0.625"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-50.6875 -40.9831 5.925"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-41.125 -38.75 8.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-32.75 -37 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-37.25 -46.75 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-30 -61 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-42.125 -45 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-41.625 -49.25 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-44 -49.625 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + }; + new SimGroup(GemGroup110) { + + new Item() { + position = "-61 28.85 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-41 66.75 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-68 66 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-24 66.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-69.2 33.9 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-53 62.9 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-52 36 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-40 33 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-3 67 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-28 33 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-14 66 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-63.25 67 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-11 35 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-16 38 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "3 66.125 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "2 33 -2.98023e-008"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "23 32.5 8.9407e-008"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "34 54 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "12 37 1.19209e-007"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "15 57 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "33 33 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "39 37 2.98023e-008"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "29.5 53 3.57628e-007"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "38 44 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "30 46 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "22 40 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "22.5 54 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "13 44.75 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "7 41 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "23 65 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-7 47 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "19 67 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "22 48 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-3 42 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-16.9 42.4 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "9 65 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-30.125 45.6 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-30 40 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-38 43.125 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-35 37 5.96046e-008"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-44 44.875 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-34 61.9 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-53.125 42.125 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-56.6 39.75 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-64 40 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-55 67 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-31 67 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-69 47 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-69 58 -1.15484e-007"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "28 66 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-29 59 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-58 54 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-58.9 58.75 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-51 47 2.98023e-008"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-48 56 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-39.5 55.75 -5.96046e-008"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-41 61 -6.70552e-008"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-26 54 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-17 59 7.45058e-008"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-22 48 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-1.125 60 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-5.875 54 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "8 49 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "9 56 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + }; + new SimGroup(GemGroup223) { + + new Item() { + position = "5.25 7 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "29.75 -2 -1.93715e-007"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "8 -1 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "32.875 5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "8 12.625 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "11.25 23.125 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "17 17 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "24 -0.25 5.575"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "12.25 -4 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "14.875 -1.375 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "28.9675 19.7544 4.775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "15.25 13.25 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "32.75 22 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "18.375 20.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "19 27 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "21.125 8 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "29 12.625 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "19 -6 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "23.125 1 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "22.5 12 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "28 22 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "26.375 9 7.775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + }; + }; + new Trigger(Bounds) { + position = "-102 75 -7.5"; + rotation = "1 0 0 0"; + scale = "195 145 5000"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Comforting Mystery.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- + diff --git a/data/multiplayer/hunt/intermediate/Nadir.mis b/data/multiplayer/hunt/intermediate/Nadir.mis new file mode 100644 index 00000000..4657df17 --- /dev/null +++ b/data/multiplayer/hunt/intermediate/Nadir.mis @@ -0,0 +1,4170 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + name = "Nadir"; + artist = "Andrew"; + music = "Tim Trance.ogg"; + desc = "In this sequel to \'Zenith\', rack up as many points as you can while battling moving platforms, frictions, and hazards."; + gameMode = "Hunt"; + level = "12"; + type = "Advanced"; + time = "270000"; + maxGemsPerSpawn = "7"; + radiusFromGem = "40"; + alarmStartTime = "20"; + game = "PlatinumQuest"; + overviewHeight = "5"; + score[0] = "30"; + score[1] = "70"; + platinumScore[0] = "90"; + platinumScore[1] = "145"; + ultimateScore[0] = "165"; + ultimateScore[1] = "220"; + RedSpawnChance = "0.9"; + yellowSpawnChance = "0.8"; + blueSpawnChance = "0.25"; + glassCenter = "Glassy"; + }; + new Trigger() { + position = "-38.5 34.5 8.5"; + rotation = "1 0 0 0"; + scale = "2 2 1"; + dataBlock = "TeleportTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + delay = "1500"; + destination = "dest2"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.638261 0.459006 -0.61801"; + color = "1.400000 1.200000 0.400000 1.000000"; + ambient = "0.300000 0.300000 0.400000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "Wintry"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/PlatinumQuest/Nadir.dif"; + showTerrainInside = "0"; + }; + new SimGroup(SpawnPointGroup) { + + new Trigger() { + position = "0.5 13.5 7.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "-13.5 7.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "8.5 -1.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "28.5 37.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "22.5 5.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "18 -19 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "-7 -24.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "-25.5 -8.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "-44.5 -19.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "-49.5 9.5 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "-53.5 29.5 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "-37.5 13.5 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "-33.5 30.5 11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "-11.5 27.5 7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + new Trigger() { + position = "8.5 31.5 4.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + add = "0 0 2"; + }; + }; + new SimGroup(MPGroup) { + + new SimGroup(MustChange_g) { + + new Path() { + + new Marker() { + position = "-45.5 13.5 8.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "0"; + msToNext = "4000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-37.5 21.5 8.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "1"; + msToNext = "500"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-37.5 21.5 8.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "2"; + msToNext = "4000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-49.5 27.5 8.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "3"; + msToNext = "500"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-49.5 27.5 8.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "4"; + msToNext = "4000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-45.5 13.5 8.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "5"; + msToNext = "500"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-45.5 13.5 8.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "6"; + msToNext = "0"; + smoothingType = "Accelerate"; + }; + }; + new PathedInterior(MustChange) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "PathedDefault"; + interiorResource = $usermods @ "/data/multiplayer/interiors/PlatinumQuest/Nadir.dif"; + interiorIndex = "3"; + basePosition = "0 0 0"; + baseRotation = "1 0 0 0"; + baseScale = "1 1 1"; + initialTargetPosition = "-1"; + }; + }; + new SimGroup(MustChange_g) { + + new Path() { + + new Marker() { + position = "-28.5 -16.5 4.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "0"; + msToNext = "5000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-28.5 -30.5 4.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "1"; + msToNext = "500"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-28.5 -30.5 4.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "2"; + msToNext = "5000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-28.5 -16.5 4.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "3"; + msToNext = "500"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "-28.5 -16.5 4.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "4"; + msToNext = "0"; + smoothingType = "Accelerate"; + }; + }; + new PathedInterior(MustChange) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "PathedDefault"; + interiorResource = $usermods @ "/data/multiplayer/interiors/PlatinumQuest/Nadir.dif"; + interiorIndex = "1"; + basePosition = "0 0 0"; + baseRotation = "1 0 0 0"; + baseScale = "1 1 1"; + initialTargetPosition = "-1"; + }; + }; + new SimGroup(MustChange_g) { + + new Path() { + + new Marker() { + position = "-21.5 7.6 4.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "0"; + msToNext = "2500"; + smoothingType = "Linear"; + }; + new Marker() { + position = "-21.5 7.6 8.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "1"; + msToNext = "500"; + smoothingType = "Linear"; + }; + new Marker() { + position = "-21.5 7.6 8.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "2"; + msToNext = "2500"; + smoothingType = "Linear"; + }; + new Marker() { + position = "-21.5 7.6 4.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "3"; + msToNext = "500"; + smoothingType = "Linear"; + }; + new Marker() { + position = "-21.5 7.6 4.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "4"; + msToNext = "0"; + smoothingType = "Linear"; + }; + }; + new PathedInterior(MustChange) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "PathedDefault"; + interiorResource = $usermods @ "/data/multiplayer/interiors/PlatinumQuest/Nadir.dif"; + interiorIndex = "0"; + basePosition = "0 0 0"; + baseRotation = "1 0 0 0"; + baseScale = "1 1 1"; + initialTargetPosition = "-1"; + }; + }; + new SimGroup(MustChange_g) { + + new Path() { + + new Marker() { + position = "12.5 -10.5 4.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "0"; + msToNext = "5000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "2.5 -10.5 4.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "1"; + msToNext = "500"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "2.5 -10.5 4.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "2"; + msToNext = "5000"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "12.5 -10.5 4.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "3"; + msToNext = "500"; + smoothingType = "Accelerate"; + }; + new Marker() { + position = "12.5 -10.5 4.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + seqNum = "4"; + msToNext = "0"; + smoothingType = "Accelerate"; + }; + }; + new PathedInterior(MustChange) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "PathedDefault"; + interiorResource = $usermods @ "/data/multiplayer/interiors/PlatinumQuest/Nadir.dif"; + interiorIndex = "2"; + basePosition = "0 0 0"; + baseRotation = "1 0 0 0"; + baseScale = "1 1 1"; + initialTargetPosition = "-1"; + }; + }; + }; + new SimGroup(ItemGroup) { + + new Item() { + position = "-1.47886 27.5236 3.76864"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41.5122 9.5769 8.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-55.5836 33.449 8.0005"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30.583 26.0517 8.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39.2519 -24.8192 4.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-52.1704 21.328 7.76864"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9.47663 20.3934 4.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.497 -3.85919 4.0005"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18.9136 -6.42338 3.76864"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14.6855 21.3384 4.20001"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.81703 -17.7409 4.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4.48552 12.4692 3.98422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28.4049 16.7221 7.98422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20.4923 -27.4944 3.98422"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(HazardGroup) { + + new StaticShape() { + position = "20.5 19.05 4.5"; + rotation = "0 0 1 200"; + scale = "1 1 1"; + dataBlock = "RoundBumper"; + }; + new StaticShape() { + position = "15.1 27.05 4.5"; + rotation = "0 0 1 166"; + scale = "1 1 1"; + dataBlock = "RoundBumper"; + }; + new StaticShape() { + position = "20.9068 27.9269 4.5"; + rotation = "0 0 1 71"; + scale = "1 1 1"; + dataBlock = "RoundBumper"; + }; + new StaticShape() { + position = "20.1 24 4.5"; + rotation = "0 0 1 230"; + scale = "1 1 1"; + dataBlock = "RoundBumper"; + }; + new StaticShape() { + position = "20.9 21.5 4.5"; + rotation = "0 0 1 115"; + scale = "1 1 1"; + dataBlock = "RoundBumper"; + }; + new StaticShape() { + position = "20.35 26.3 4.5"; + rotation = "0 0 1 150"; + scale = "1 1 1"; + dataBlock = "RoundBumper"; + }; + new StaticShape() { + position = "17.65 27.65 4.5"; + rotation = "0 0 1 36"; + scale = "1 1 1"; + dataBlock = "RoundBumper"; + }; + new StaticShape() { + position = "-15.0295 -10.6602 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "Nuke"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-10.1654 -10.6571 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "Nuke"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-7.76656 -10.2558 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "Nuke"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-6.84705 -11.2025 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "Nuke"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-8.65003 -10.9914 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "Nuke"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-9.20063 -9.85125 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "Nuke"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-13.9379 -9.74459 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "Nuke"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-11.9104 -7.8758 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "Nuke"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-11.2457 -10.0391 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "Nuke"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-13.7809 -11.0024 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "Nuke"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-11.1162 -8.56569 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "Nuke"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-12.1431 -9.45633 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "Nuke"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-11.4037 -6.62024 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "Nuke"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-11.322 -11.0556 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "Nuke"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-15.9397 -10.0983 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "Nuke"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-12.8398 -10.3492 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "Nuke"; + resetTime = "Default"; + }; + new StaticShape() { + position = "-64 37.5 9"; + rotation = "0 -1 0 90"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + new StaticShape() { + position = "-59.5 42 9"; + rotation = "-1 0 0 90"; + scale = "1 1 1"; + dataBlock = "DuctFan"; + }; + }; + new SimGroup(OldVersion) { + + new Item() { + position = "-45.5 -19.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.5 2 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37.5 25.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-36.5 17.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25.5 4.3 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 11.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24.5 7.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27.5 11.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33.5 13.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37.5 11.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25.5 21.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25.5 27.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27.5 31.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33.5 19.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31.5 21.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33.5 21.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemPlatinum"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35.5 21.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33.5 23.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41.5 29.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37.5 29.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33.5 29.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33.5 33.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.5 35.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33.5 37.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41.5 37.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41.5 33.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37.5 37.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-46.5 37 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45.5 30 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-52.5 29.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49.5 33.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-51.5 36.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-59.5 26.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-55.5 26.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57.5 23 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49.5 6 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49.5 13 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57.5 17.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-55.5 37.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-59.5 32.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-59.5 37.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57.5 10.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-60.5 13.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-55.5 14.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-56.5 7.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-61.5 7.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53.5 10.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45.5 9.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-43.5 5.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37.5 5.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 30.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18.5 20.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19.5 11.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2.5 10 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-44.5 -13.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39.5 -12.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8.5 30.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28.5 24.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10.5 37.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22.5 37.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6.5 37.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4.5 34.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.5 33 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.5 37.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24.5 32.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 32.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16.5 32.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16.5 35 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16.5 37.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28.5 37.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14.8556 28.1731 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.1482 27.0104 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19.6542 27.4594 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20.9212 24.7 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19.8914 22 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20.8671 20.0157 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.5 35.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6.5 31.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.5 26.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2.5 23.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.5 31.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.5 31.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11.5 37.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17.5 33.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17.5 37.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11.5 33.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31.5 -4.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15.5 3.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17.5 27.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13.5 20.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12.5 27.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.5 27.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.5 21 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24.5 23 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24.5 14.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.5 27.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.5 21.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 19.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemPlatinum"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28.5 27.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28.5 21.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20.5 13.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14.5 14.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.5 9.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.5 15.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28.5 12.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24.5 9.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20.5 9.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20.5 5.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24.5 5.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22.5 7.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.5 0.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22.1 0.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1.5 19.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.5 6.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.5 5.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.5 9.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.5 15.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13.5 13.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.5 3.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5.5 13.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 10.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8.5 7 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 -20.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20.5 -16.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15.5 7.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11.5 5.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11.5 -0.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16.5 -0.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 -16.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.78725 -2.53262 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.86767 -4.58462 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2.20918 4.25858 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1.37455 -1.76026 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.244318 -1.99841 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2.80824 -0.313468 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.5 0.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19.5 -12.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14.5 -12.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19.5 -8.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24.5 -10.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28.5 -8.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24.5 -15.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15.2342 -9.9334 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12.8984 -11.0975 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12.1219 -6.27072 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11.707 -8.6989 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10.7353 -10.5161 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8.2 -9.8 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21.5 -2.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31.5 -8.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41.5 -4.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37.5 -2.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45.5 -8.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45.5 -2.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37.5 -8.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35.5 -12.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28.9 -12.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35.5 -16.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39.5 -18.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-43.5 -26.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38.5 -30.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25.5 -8.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21.5 -10.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21.5 -16.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.5 -10.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15.5 -24.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9.5 -24.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.5 -24.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18.5 -30.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9.5 -30.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.5 -30.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.5 -24.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6.5 -24.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.5 -24.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.5 -17.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 -24.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 -26.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 -30.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17.5 -30.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24.5 -19.5 5.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20.5 -24.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24.5 -22.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24.5 -26.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24.5 -30.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28.5 -28.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32.3 -34.3 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemPlatinum"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14.5 -4.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 -4.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22 -4.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19.5 -4.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24.5 -4.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 -24.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 -22.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18.5 -20.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17.5 -24.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23.5 -24.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23.5 -30.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12.2 -28.9 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33.5 -26.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33.5 -24 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 -24 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-36 -24 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-36 -26.5 7.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(NewVersion) { + new Item() { + position = "-36 -26.5 7.55"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "17.5 2 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-37.5 25.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-36.5 17.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "18.5 -30.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-17.5 -24.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-24.5 7.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-27.5 11.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-33.5 13.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-23.5 -30.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-28.5 21.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-25.5 27.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-27.5 34 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + noRespawn = "0"; + }; + new Item() { + position = "-21.5 -16.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-23.5 -24.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "9.5 -24.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-35.5 21.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "0.5 -10.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-38.5 -30.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-37.5 29.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-33.5 -24 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-33.5 33.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-27 39 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-39.5 -18.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-43.5 -26.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-41.5 33.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-37.5 37.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-30.5 37.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-45.5 30 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-33.5 -16.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-49.5 31.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-28.5 -16.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-59.5 26.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-55.5 26.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-57.5 21 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-31 -24 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-49.5 13 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-35.5 -12.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-54 37.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-59.5 32.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-59.5 37.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-45.5 -2.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-60.5 13.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-55.5 14.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-45.5 -8.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-61.5 7.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-53.5 9.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-45.5 9.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-21.5 -10.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-37.5 5.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-21 30.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-18.5 20.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-19.5 11.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-7 -30.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-44.5 -13.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-39.5 -12.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-8.5 30.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "28.5 24.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "10.5 37.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "22.5 37.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-18.5 -20.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "24.5 -30.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "12.5 33 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "2.25 37.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "24.5 32.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "19 32.5 7.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "16.5 32.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "28.5 -28.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "16.5 37.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "28.5 37.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "14.8556 28.1731 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "17.1482 27.0104 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "19.6542 27.4594 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "20.9212 24.7 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "19.8914 22 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "20.8671 20.0157 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-5.5 35.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "5.5 31.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "5.5 26.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "2.5 23.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "18.5 -24.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-3.5 31.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-11.5 37.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-14.5 33.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-17.5 37.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "24.5 -22.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-31.5 -3.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-15.5 3.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-17.5 27.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-13.5 20.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "24.5 -19.5 5.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-5.5 27.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-5.5 21 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "24.5 23 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "32.3 -34.3 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-17.5 -30.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "8.5 21.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "5 19.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "28.5 27.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "28.5 21.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "20.5 13.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "14.5 14.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-33.5 -28 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "8.5 15.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "28.5 12.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "24.5 9.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "17 -4.5 5.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "20.5 5.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "19.5 -4.5 6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "22.5 7.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "26.5 0.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "22.1 0.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-1.5 19.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "8.5 6.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "12.5 5.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "0.5 9.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "0.5 15.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-13.5 13.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-5.5 3.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-5.5 13.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-12 10.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-8.5 7 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "18 -20.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-12 -24.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-15.5 7.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-5 -24.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-11.5 -3.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-16.5 -0.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-5 -16.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "5 -1.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "0.5 -17.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "1.5 2.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "0.5 -2.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "0.5 -24.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "6.5 -24.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "13.5 0.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "19.5 -12.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "14.5 -12.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "24.5 -4.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-9 -20.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "28.5 -8.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "24.5 -14 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-15.2342 -9.9334 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-12.8984 -11.0975 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "12.5 -24.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-11.707 -8.6989 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-9.25 -10.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "0.5 -30.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-21.5 -2.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-31.5 -8.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-41.5 -4.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + new Item() { + position = "-37.5 -2.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + noParticles = "0"; + }; + }; + new Trigger(Bounds) { + position = "-81.4 53 0"; + rotation = "1 0 0 0"; + scale = "130 100 1000"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger(dest1) { + position = "-37.5 33.5 8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "DestinationTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "-10 -19.5 4.5"; + rotation = "1 0 0 0"; + scale = "2 2 1"; + dataBlock = "TeleportTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + delay = "1500"; + destination = "dest1"; + }; + new Trigger(dest2) { + position = "-9 -20.5 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "DestinationTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Marker(Glassy) { + position = "-5.5 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Comforting Mystery.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/intermediate/Nadir.png b/data/multiplayer/hunt/intermediate/Nadir.png new file mode 100644 index 00000000..8e1f160e Binary files /dev/null and b/data/multiplayer/hunt/intermediate/Nadir.png differ diff --git a/data/multiplayer/hunt/intermediate/SkateBattleRoyale.jpg b/data/multiplayer/hunt/intermediate/SkateBattleRoyale.jpg new file mode 100644 index 00000000..41a6a6b0 Binary files /dev/null and b/data/multiplayer/hunt/intermediate/SkateBattleRoyale.jpg differ diff --git a/data/multiplayer/hunt/intermediate/SkateBattleRoyale.mis b/data/multiplayer/hunt/intermediate/SkateBattleRoyale.mis new file mode 100644 index 00000000..36407f79 --- /dev/null +++ b/data/multiplayer/hunt/intermediate/SkateBattleRoyale.mis @@ -0,0 +1,1652 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + gameMode = "Hunt"; + level = "7"; + alarmStartTime = "25"; + name = "Skate Battle Royale"; + music = "Tim Trance.ogg"; + desc = "Show off your skating skills!"; + radiusFromGem = "20"; + artist = "Alex Swanson"; + game = "Ultra"; + maxGemsPerSpawn = "7"; + time = "300000"; + type = "Intermediate"; + overviewHeight = "12.5"; + score[0] = "20"; + score[1] = "40"; + platinumScore[0] = "55"; + platinumScore[1] = "100"; + ultimateScore[0] = "100"; + ultimateScore[1] = "140"; + glassCenter = "Glassy"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.573201 0.275357 -0.771764"; + color = "1.080000 1.030000 0.900000 1.000000"; + ambient = "0.400000 0.400000 0.500000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "Wintry"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/SkateBattleRoyale.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-33 29.5 -9"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/SkateBattleRoyale_corner1.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-33 29.5 -9"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/SkateBattleRoyale_corner2.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "33 28.5 -9"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/SkateBattleRoyale_corner1.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "33 28.5 -9"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/SkateBattleRoyale_corner2.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-10.5 29 -8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/SkateBattleRoyale_pipe.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "10.5 29 -8.5"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/SkateBattleRoyale_pipe.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "33.5 6 -8.5"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/SkateBattleRoyale_pipe.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "33.5 -15 -8.5"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/SkateBattleRoyale_pipe.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "33.5 -28 -8.5"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/SkateBattleRoyale_pipe.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-33.5 52 -8.5"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/SkateBattleRoyale_pipe.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-33.5 73 -8.5"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/SkateBattleRoyale_pipe.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-33.5 86 -8.5"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/SkateBattleRoyale_pipe.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "0 41 -8.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/SkateBattleRoyale_climb.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "0 17 -8.5"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/SkateBattleRoyale_climb.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "55.5 33.5 8"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/SkateBattleRoyale_climb.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "21.5 -4.5 -8.5"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/SkateBattleRoyale_climb.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-45.5 62.5 -8.5"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/SkateBattleRoyale_climb.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-55.5 24.5 8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/SkateBattleRoyale_climb.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-21.5 62.5 -8.5"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/SkateBattleRoyale_climb.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "45.5 -4.5 -8.5"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/SkateBattleRoyale_climb.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "50.5 1 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_8_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-16.5 68 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_8_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "5.5 12 16"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_8_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-5.5 12 16"; + rotation = "0 0 1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_8_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-5.5 46 16"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_8_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "5.5 46 16"; + rotation = "0 0 -1 90"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_8_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-16.5 57 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_8_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-50.5 57 16"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_8_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "-50.5 68 16"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_8_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "50.5 -10 16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_8_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "16.5 -10 16"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_8_normal.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "16.5 1 16"; + rotation = "0 0 1 180"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/arch_8_normal.dif"; + showTerrainInside = "0"; + }; + new SimGroup(GemSpawns) { + + new Item() { + position = "-72.5 66 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-71 64 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-85 80 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-61 79.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-59.5 81 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57.5 49 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-59.5 51 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-75 43 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-86.5 51 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "78 -23.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "79.5 -25 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "85.5 -13.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "64 -19 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "73 1.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "61.5 10 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "86.5 16 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "88 14.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 -16 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -12 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7.5 -15 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 -13.5 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17.5 -16.5 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11.5 -7 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -21.5 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 -19.5 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7.5 -9 -1.65"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15.5 -12.5 -1.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 -7 -0.193323"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 -21 -0.258238"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.5 -21 -0.159432"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.5 -7.5 -0.271914"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 71 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 43 16.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.5 38.5 16.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 33 16.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 26.5 16.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 18.5 16.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 -0.5 16.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20.5 -3.5 16.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11.5 -8.5 16.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29.5 -6.5 16.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "37 -3 16.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 66.5 16.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 59.5 16.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 64.5 16.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26 60 16.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-34.5 67.5 16.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-48.7872 71.4988 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-46.5 85.5 -9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-43.5 77.5 -13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37.5 69.5 -16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 79.5 -13.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18.1576 73.5175 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17.5 87.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49.5 43.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.5 7.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.5 -12 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 13 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10.0009 13.7331 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-35.9927 15.8754 -9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 19 -13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 25 -16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 33 -16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30 38.5 -13.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11.9916 41.9101 -9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 44.3 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20 45 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18.2489 -26.0075 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23.5 -14 -13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29.5 -24 -16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "37.5 -12 -16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42.8016 -22.0011 -13.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46.3532 -27.9717 -9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48.8484 -11.9776 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20.5 15.5 -9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23.5396 3.50242 -13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29.5 15.5 -16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "37.5 5.5 -16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "41 35.5 -14.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46.5 29.5 -9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48.8217 21.6021 -4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49.5 7.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-48.7539 19.5589 -4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-46.5 37.5 -9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-43.5 53.5 -13"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37.5 33.5 -16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29.5 45.5 -16"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 39.5 -13.3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20.5 53.5 -9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17.5 49.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.5 7.5 16.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.5 52.5 16.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 38 18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 13 18"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 75 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7.5 72 -2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3 73.5 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.5 70.5 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11.5 80 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 65.5 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 67.5 -1.65"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7.5 78 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15.5 74.5 -1.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 80 -0.0711262"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 66 -0.278873"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.5 66 -0.274312"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.5 79.5 -0.261152"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(SpawnPoints) { + + new Trigger() { + position = "33.5 -4.5 -14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "0 29 -14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "-33.5 62.5 -14"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "-87 65.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "-55.5 6.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "55.5 51.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-3 61 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "4 -1 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "87.5 0.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "56 -5 18.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-56 63 18.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + }; + new Item() { + position = "-68 53 0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-72.5 79.5 0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8.5 77.5 0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13.5 53 0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 6 0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 -18.5 0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "74.5 -10.5 0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "73 15 0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "66 52 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-66 7 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24.5 -29.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24.5 87 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "55.5 13.5 16.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-56 45.5 16.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 7.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 51 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-54.5 73.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "54 -25.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33.5 -21.5 -16.317"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33.5 12.5 -16.317"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 29 -16.282"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-17 29 -16.282"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33.5 29 -16.282"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33.5 29 -16.282"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33.5 45.5 -16.282"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33.5 79.5 -16.282"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.5 60 17.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-0.5 -5.5 17.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "50.3 45 0.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-50.5 13 0.733"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger(Bounds) { + position = "-102.646 98.4477 -19.5"; + rotation = "1 0 0 0"; + scale = "205.637 138.987 10000"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Marker(Glassy) { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Comforting Mystery.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/intermediate/Tilo.jpg b/data/multiplayer/hunt/intermediate/Tilo.jpg new file mode 100644 index 00000000..0ca8f49d Binary files /dev/null and b/data/multiplayer/hunt/intermediate/Tilo.jpg differ diff --git a/data/multiplayer/hunt/intermediate/Tilo.mis b/data/multiplayer/hunt/intermediate/Tilo.mis new file mode 100644 index 00000000..189ba873 --- /dev/null +++ b/data/multiplayer/hunt/intermediate/Tilo.mis @@ -0,0 +1,2420 @@ +//rep. by Kwill +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + name = "Tilo"; + type = "Intermediate"; + level = "8"; + desc = "Find the gems in this large arena."; + artist = "CyberFox"; + gameMode = "hunt"; + game = "Platinum"; + time = "300000"; + maxGemsPerSpawn = "6"; + radiusFromGem = "25"; + score[0] = "20"; + score[1] = "40"; + platinumScore[0] = "65"; + platinumScore[1] = "100"; + ultimateScore[0] = "100"; + ultimateScore[1] = "175"; + alarmStartTime = "25"; + overviewHeight = "-2"; + }; + new Trigger() { + position = "113.8 29 28"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "Dusk"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "500"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-31 1.3684e-38"; + fogVolume2 = "-1 1.07208e-14 8.756e-14"; + fogVolume3 = "-1 5.1012e-10 2.05098e-08"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.638261 0.459006 -0.61801"; + color = "1.400000 1.200000 0.400000 1.000000"; + ambient = "0.300000 0.300000 0.400000 1.000000"; + }; + new Trigger() { + position = "147.8 18 32"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "120.8 11.2 31.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger(Bounds) { + position = "-24.8 41.2 4.2"; + rotation = "1 0 0 0"; + scale = "240 100 200"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "78.6 19.6 30.4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new InteriorInstance() { + position = "0.00414276 -0.0175381 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/intermediate/TiloLeft.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/intermediate/TiloRight.dif"; + showTerrainInside = "0"; + }; + new Item() { + position = "56 -14.5 43.6775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "114 -31 35.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemblue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18.5 -36.5 49.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemblue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "168 30 30.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemblue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "149 15.5 25.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemblue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "149 20 27.6775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "182 15 29.6775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "160 -12 27.6775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "176.5 -40 29.6775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "150 -16 32.6775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "128 -19 25.6775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "89 18 29.6775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "129.5 -31 29.1775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "71.5 -31 42.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "192 -5 28.1775"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "140 27 27.8745"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "150 -3.5 32.8744"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "173 -7 25.8745"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "183 -2 33.8744"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "179 -18 27.8745"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "147 -33 33.8744"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "170 -45 29.8745"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "164 -16 27.8745"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "179 -18 27.8745"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "73.5 13 29.8745"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "79.5 6 29.8745"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14.5 -8.5 47.8744"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "47.5 4 43.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "55 -39.5 45.7584"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "183 -45.5 29.2585"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "193.5 8.5 29.7585"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "166 -21 31.2584"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "122 -19 26.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "154 14.2 31.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "162.5 -38.5 27.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "110 -31 38"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44.5 -11 45.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "101.5 24.5 27.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "107 29 27.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "119.5 27.5 27.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "127 29 27.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "131 25.4 27.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "138 24 27.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "139 18.5 27.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "143.5 20.5 27.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "148 23.5 27.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "144.5 27 27.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "135.5 27.5 27.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "133 18.5 27.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "145.7 13.4 27.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "139 11.5 27.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "108 23 28.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "115 24 29.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "115 16.5 29.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "124 18 29.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "135.5 18 29.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "139.5 11.5 29.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "128.5 11.5 29.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23.8 -28.6 47.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "154 30 28.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "159 28 28.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "161 23 28.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "161 19.5 28.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "165 22.5 29.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "169 19.5 29.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "169 15.5 31.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "164 15.5 31.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "159.5 15.5 31.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "161.2 9.5 30.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "154 5 31.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "160.6 1 28.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "170 34 28.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "177 35 29"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "175 28 28.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "177.5 22 29"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "174 15 28"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "199.5 15 31.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "189.5 6 29"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "186.5 10.5 30.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "197.5 10 30.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "200.5 6.5 31"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "196.5 4 29.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "199.5 -0.5 30.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "193.5 -2 28.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "197.5 -6 30"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "187.5 0.5 27.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "187.5 -6 26.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "183 2.5 28"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "179 11 30.9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "173 7.7 29.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "170.5 10 30.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "168 4.5 29"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "172 2.5 27.9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "178.5 4 28.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "176 -0.5 27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "169.5 -2 26.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "183 -5 25.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "178.5 -8 25.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "169.5 -6 25.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "150.5 30 27.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "158 23.5 27.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "165.5 -8.5 26.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "171.5 -12 26.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "166 -13.5 27.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "170 -16 27.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "175 -19 27.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "167 -19 27.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "171 -22 27"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "162 -22 26.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "156 -15 26.9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "154 -7.5 26"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "150.5 -8.5 25.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "149 -14.5 25.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "150.5 -24.5 25.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "154 -26.5 25.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "163 -27 25.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "161.5 -33 26.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "170.5 -38 27.7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "166.5 -33.5 28.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "157.5 -32 29"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "149 -40 27.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "154 -42.5 29.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "158.5 -46.5 29.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "165 -43.5 29.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "176.5 -45.5 29.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "180.5 -42.5 29.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "183 -37.5 29.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "183 -28.5 29.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "183 -21.5 29.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "183 -15.5 29.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "174.5 -33 33.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29.4 -21.8 46.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "166.2 -33 33.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemblue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45.5 17 43.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "156.5 -33 33.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "163.5 -27 31"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "155 10.8098 25.7773"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "156.5 -25.5 31.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "161 -21 31.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "151.5 -21 31.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "150 -10.5 32.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "142 -4 32"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "135.5 -4 31.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "123.5 -4 30.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "116 -4 30"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "111.5 -9.5 30"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "111.5 -19.5 29.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "116.5 -25.5 28.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "143.5 -18.5 25.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "128 -24 25.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "133 -15 25.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "135.5 -10.5 25.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "132.5 -6.5 25.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "144.5 -4.5 25.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "109.5 -15 29.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "109.5 -5 29.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "109.5 7.5 29.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "111.5 1.5 29.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "109 18 29.8745"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "102 18 29.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "93.5 18 29.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "84 11 29.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "78.5 15 29.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "67.5 11 34"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "61.5 15.5 39.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "64 6 37"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "58 9 42.6205"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "59 0.5 42"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "66 -2.5 36.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "68 -9 42.6003"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "61.5 -8 41.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "71.5 -5.5 39.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "75 1.5 33"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "81 -3 37"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "85 2.5 32"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "52 13 43.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "55 3.5 43.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "51.5 -6.5 43.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48.5 -16 43.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "61 -19.5 43.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "72 -12.5 43.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "86.5 -18.8 45.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemblue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "78.5 -13.4 43.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "70 -18.5 45.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "72.5 -26.5 44"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "78 -31 42.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "67.5 -41.5 43.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "83.5 -32.5 42.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "95.5 -29.5 41.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "107.5 -33 38"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "123 -30 31.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "132 -31.5 28.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "136 -29.5 27.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "139.5 -32.5 26.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "141.5 -31.5 28.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "140.5 -29.5 28.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "64 -37.5 44"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "53 -43.5 46.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "60 -41.5 45"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44.5 -40 47.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 -26 46"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "38 -21 45.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16.5 -30 47.4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30.5 -26.5 47"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36 -26.5 46.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40 -33.5 47.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 -32 48.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15.5 -21.5 47.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15.5 -40 47.2584"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 -9 47.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4 -5.5 47.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4.5 0 47.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.5 4 47.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 4 47.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16.5 -3.5 47.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0.5 5 47.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 12.5 47.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 17.5 47.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17.5 14.5 47.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34.5 18.5 45.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 6 47.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40 2.5 44.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48 2.5 44.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48 -7 44.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44 -4 45.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "38.5 10 46.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30.5 10 48.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemred"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22.5 10 49.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14.5 10 49.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4.5 10 49.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemyellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "119.8 6.8 29.4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "153 25 27.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "178.6 -26 30.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "134.6 -27.4 31.4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "83.4 -12.6 43.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9.8 -2.6 47.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger() { + position = "14.8 -15.6 49"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "146.2 -4.2 33.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "26.8 -40 48.4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "23.2 -25 49"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "45.8 11.6 45.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "53.2 -11.2 46.4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "68.2 -24 48.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "92.6 -31.8 42"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "125.8 -30 31"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "156 -45 31.4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "156.4 -22 32"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "170.6 -24.4 28.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "159.6 -44.2 31.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "177.8 -31.6 34"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "148.8 -7.6 32.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "160.4 -3.4 29.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "174.4 -16.4 30.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "178.4 -3.4 29.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "195 16.6 32.4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "167.6 25.2 31.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new Trigger() { + position = "139.8 29.8 29"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + center = "1"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Flanked.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/intermediate/VortexEffect.jpg b/data/multiplayer/hunt/intermediate/VortexEffect.jpg new file mode 100644 index 00000000..eb8654da Binary files /dev/null and b/data/multiplayer/hunt/intermediate/VortexEffect.jpg differ diff --git a/data/multiplayer/hunt/intermediate/VortexEffect.mis b/data/multiplayer/hunt/intermediate/VortexEffect.mis new file mode 100644 index 00000000..672b40c6 --- /dev/null +++ b/data/multiplayer/hunt/intermediate/VortexEffect.mis @@ -0,0 +1,2036 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + name = "Vortex Effect"; + type = "Intermediate"; + level = "9"; + desc = "Go around or cut across."; + artist = "Alex Swanson"; + music = "Tim Trance.ogg"; + Gamemode = "Hunt"; + game = "Ultra"; + time = "300000"; + MaxGemsPerSpawn = "6"; + RadiusFromGem = "22"; + score = "40"; + platinumScore = "80"; + ultimateScore = "120"; + score[0] = "25"; + score[1] = "40"; + platinumScore[0] = "60"; + platinumScore[1] = "80"; + ultimateScore[0] = "100"; + ultimateScore[1] = "150"; + alarmStartTime = "25"; + overviewHeight = "0"; + glassCenter = "Glassy"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + }; + new Sun() { + direction = "0.573201 0.275357 -0.771764"; + color = "1.080000 1.030000 0.900000 1.000000"; + ambient = "0.400000 0.400000 0.500000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "Dusk"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/VortexEffect.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "15 -29 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "15 -35 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "9 -35 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new InteriorInstance() { + position = "9 -29 -1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/lbinteriors_mbu/parts/vertical_support.dif"; + showTerrainInside = "0"; + }; + new Item() { + position = "9 -29 10.234"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-46 -66 0.234"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "60 -66 2.734"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 7.5 -3.266"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 23 1.234"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34 -66 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "51 -21 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 26 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 -10 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 -58 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 -9 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "50 -49 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36 4.5 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37.3504 -34.0349 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -35 10.6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 -81 0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 -81 0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36 42 2.734"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "52 12 0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 31 1.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "38 -12 3.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "60 -40 4.687"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-34 -58 3.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41 7 0.187"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 -68 1.687"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new SimGroup(GemSpawns) { + + new Item() { + position = "21 -9 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 -5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 -1 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29 -5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29 3 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 3 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 11 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21 7 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32 8 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "21.5 17 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14 17 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "9 20.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4 19 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "3.5 11 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 3 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 3 6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 3 5.15"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.5 3 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 -1.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 4.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-6 7 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2.5 25 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5 26.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 18 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 23.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 18 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 12 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 12 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 3 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 3 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -1 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-29 -1 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 -1 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 -5.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38.5 -1 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38.5 5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-34 4.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-21 -5 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 -21 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41 -21 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 -21 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 -24.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-26 -32 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 -32 9.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44 -4.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "52.5 -4 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "53 -9 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "52.5 2 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33.5 -34 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41 -34 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41.5 -27 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49 -39 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 -39 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41 -39 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-45 -43 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-49 -43 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53 -43 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-53 -49 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41.5 -53 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-50 -55.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-48.5 -50.5 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-41 -67 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37 -63 2.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 -63 2.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 -63 2.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 -63 2.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 -58 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 -48 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 -48.25 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10.25 -47.5 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 -53 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 -63 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.25 -63.25 0.85"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 -58.75 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9.75 -58.75 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.75 -57.25 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 -58 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 -68 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18.5 -73.25 0.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13.75 -71 1.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15.5 -75.25 0.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 -78.25 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20.75 -83.25 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 -83 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 -77 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 -81 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 -75 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24.75 -73 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-9 -73 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-0.75 -79 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8.75 -64.75 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 -61 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "14.75 -62.75 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20.75 -65 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "22.5 -61 2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29 -65 2.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "53 -81 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "55 -74.75 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "61 -79 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "57 -85.25 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "55 -67 3.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "55 -57 3.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44.75 -67 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49 -63 3.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 -57 3.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49 -73 5.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 -71.25 3.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 -61.25 4.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42.75 -49.5 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48.25 -53 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46.75 -48.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "53 -51.25 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "57 -48.25 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "51.5 -45.25 4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "61.25 -48 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "55 -41 3.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45.25 -41 3.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "51 -35.25 3.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 -31 3.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "55.2 -31 4.55"; + rotation = "0 0 -1 2.8649"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "15 -69 2.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10.75 -69 2.75"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 -57.25 1.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19 -56.75 2.25"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 18 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7 35 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 40 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12.5 40 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7.5 40 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32 45.5 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23.5 45 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 45 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32 36.5 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32 26.5 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "37 19 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "37 23.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "37 26.5 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "27 41.5 2.1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.8694 38.4536 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 34.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 29.5 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "1 33 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 31 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32 31 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "37 31 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32 -0.5 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "39 7 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "43.5 7 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48.5 7 0.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "52 7 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "57 9 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "59.5 13 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "61 4 1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36.5 11.5 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "41.5 11.5 -1.9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46.5 13 -0.4"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31 12.5 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26.5 9 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "23.5 12 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18.5 7.5 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 3 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "17 3 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "41.5 2 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "47.5 1.5 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40.5 -1 2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20.1817 -23.8305 5.52913"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4.10787 -23.9168 5.50788"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4.06041 -39.9544 5.51305"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "19.8039 -39.9594 5.50701"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(SpawnPoints) { + + new Trigger() { + position = "-38 2.5 2"; + rotation = "0 0 1 106.57"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-47.5 -53.5 2"; + rotation = "0 0 1 54.431"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-25 -58.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-13 -68 3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "3 -57.5 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-2 -9.5 5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Trigger() { + position = "-2 7.5 2"; + rotation = "0 0 1 91.1003"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-1.5 26 2"; + rotation = "0 0 1 180.482"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "25.5 26 2"; + rotation = "0 0 1 234.34"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "32 42.5 5"; + rotation = "0 0 1 175.898"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "32 19 5"; + rotation = "0 0 1 229.939"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "31.5 5 5"; + rotation = "0 0 1 220.771"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "56 12 2"; + rotation = "0 0 1 220.198"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "50 -30 7"; + rotation = "0 0 -1 89.3814"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "40 -41.5 7"; + rotation = "0 0 1 218.87"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "60 -56 7"; + rotation = "0 0 -1 101.596"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "38 -76 4.5"; + rotation = "0 0 -1 10.8861"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "26 12.5 -1"; + rotation = "0 0 1 178.19"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "-32.5 -49 5"; + rotation = "0 0 1 53.2851"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + }; + new Marker(Glassy) { + position = "12 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + }; + new Trigger(Bounds) { + position = "-57.5 51.5 -6.5"; + rotation = "1 0 0 0"; + scale = "123 141 1000"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Comforting Mystery.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/hunt/intermediate/Ziggurat.jpg b/data/multiplayer/hunt/intermediate/Ziggurat.jpg new file mode 100644 index 00000000..c38730d8 Binary files /dev/null and b/data/multiplayer/hunt/intermediate/Ziggurat.jpg differ diff --git a/data/multiplayer/hunt/intermediate/Ziggurat.mis b/data/multiplayer/hunt/intermediate/Ziggurat.mis new file mode 100644 index 00000000..391856ad --- /dev/null +++ b/data/multiplayer/hunt/intermediate/Ziggurat.mis @@ -0,0 +1,1791 @@ +//--- OBJECT WRITE BEGIN --- +new SimGroup(MissionGroup) { + + new ScriptObject(MissionInfo) { + music = "Tim Trance.ogg"; + time = "240000"; + radiusFromGem = "20"; + alarmStartTime = "25"; + artist = "Alex Swanson"; + name = "Ziggurat"; + maxGemsPerSpawn = "7"; + level = "3"; + desc = "Don't let the slopes beat you!"; + game = "Ultra"; + gameMode = "Hunt"; + type = "Intermediate"; + overviewHeight = "15"; + score[0] = "15"; + score[1] = "30"; + platinumScore[0] = "40"; + platinumScore[1] = "65"; + ultimateScore[0] = "75"; + ultimateScore[1] = "110"; + glassCenter = "Glassy"; + }; + new MissionArea(MissionArea) { + area = "-360 -648 720 1296"; + flightCeiling = "300"; + flightCeilingRange = "20"; + locked = "true"; + }; + new Sky(Sky) { + position = "336 136 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + cloudHeightPer[0] = "0"; + cloudHeightPer[1] = "0"; + cloudHeightPer[2] = "0"; + cloudSpeed1 = "0.0001"; + cloudSpeed2 = "0.0002"; + cloudSpeed3 = "0.0003"; + visibleDistance = "10000"; + useSkyTextures = "1"; + renderBottomTexture = "1"; + SkySolidColor = "0.600000 0.600000 0.600000 1.000000"; + fogDistance = "300"; + fogColor = "0.600000 0.600000 0.600000 1.000000"; + fogVolume1 = "-1 7.45949e-031 1.3684e-038"; + fogVolume2 = "-1 1.07208e-014 8.756e-014"; + fogVolume3 = "-1 5.1012e-010 2.05098e-008"; + materialList = "~/data/skies/Cloudy/cloudy.dml"; + windVelocity = "1 0 0"; + windEffectPrecipitation = "0"; + noRenderBans = "1"; + fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000"; + fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004"; + fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000"; + sphereFront = "platinum/data/shapes/skies/wintry/front.png"; + sphereBack = "platinum/data/shapes/skies/wintry/back.png"; + }; + new Sun() { + direction = "0.573201 0.275357 -0.771764"; + color = "1.080000 1.030000 0.900000 1.000000"; + ambient = "0.400000 0.400000 0.500000 1.000000"; + }; + new StaticShape() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "10000 10000 10000"; + dataBlock = "Wintry"; + }; + new InteriorInstance() { + position = "0 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + interiorFile = "~/data/multiplayer/interiors/mbu/Ziggurat.dif"; + showTerrainInside = "0"; + }; + new SimGroup(GemSpawns) { + + new Item() { + position = "2 12 3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemBlue"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-0.5 16.5 1.16426"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4.5 7.5 1.1224"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "7.5 10.5 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 20.5 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6 24 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4.5 27.5 -6.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 21.5 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "78 7 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "60 3 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 0.5 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-11 16 -2.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3.5 10 1.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "0 0 -1"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "6.5 2.5 -3.5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 -2 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 -8 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-7 -8 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 3 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 24 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "5.5 32 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 32 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20 22.5 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20 11 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20 -0.5 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 32 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30 18 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-42 6 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-48 18 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-54 12 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-70 22 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64 36 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-60 54 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64 2 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64 -10 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-56 -24 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-46 -14 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30 -20 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -26 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 -22 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-18 -36 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "8 -38 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 -46 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-10 -56 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 -62 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "4 -80 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "70 -46 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "86 -34 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34 -18 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "40 -6 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "52 -12 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "72 -6 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "58 16 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "86 30 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30 32 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "68 38 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "70 54 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "78 42 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "84 44 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "68 60 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "68 44 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49 4 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "26 4 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "84 13 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "77 -40 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "76 -52 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-48 -20 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64 -16 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64 44 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64 13 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 76 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30 24 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "58 24 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "46 -12 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-36 -20 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "13 -69 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-48 12 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-64 28 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-24 12 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38 -34 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-46 -3 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-31 27 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-27 -2 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 29 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-16 75 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-13 67 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-34 71 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-47 62 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-15 59 -10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-8 48 -10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-36 44 -10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-3 42 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20 60 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "32 60 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "54 46 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "59 41 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "55 52 -10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "48 48 -10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "45 76 -10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31 68 -10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "31 51 -10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 76 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 51 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-14 87 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "34 87 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44 65 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "38 48 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44 24 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "73 24 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "80 -19 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "89 -21 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "24 -24 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "30 -30 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36 -36 -10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "52 -36 -10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "52 -52 -10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "60 -28 -10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36 -68 -10"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "29 -53 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "36 -50 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "58 -63 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44 -73 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-23 50 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-30 59 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 71 -11"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-38 -4 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 -38 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-19 -20 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "11 -22 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-22 -51 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-2 -67 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemYellow"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "12 -53 -9"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "35 5 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44.0417 -42.6651 -10.9661"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "49.3078 -29.1619 -10.9583"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "57.9226 -46.4265 -10.9721"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "GemItemRed"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + }; + new SimGroup(SpawnPoints) { + + new Trigger() { + position = "-28 88 -5"; + rotation = "0 0 1 143.812"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "46 88 -5"; + rotation = "0 0 1 207.984"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "10 88 -5"; + rotation = "0 0 1 179.336"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-59 60 -5"; + rotation = "0 0 1 120.894"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-70 39 -5"; + rotation = "0 0 1 103.705"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "-70 -4 -5"; + rotation = "0 0 1 81.36"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-51 -33 -5"; + rotation = "0 0 1 44.1177"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-18 -66 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "14 -80 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "73 -60 -5"; + rotation = "0 0 -1 17.7617"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "81 -34 -3"; + rotation = "0 0 -1 88.2355"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "81 3 -1"; + rotation = "0 0 -1 91.1003"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "87 38 -5"; + rotation = "0 0 -1 93.3921"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "75 60 -5"; + rotation = "0 0 1 225.355"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "61 73 -5"; + rotation = "0 0 1 216.761"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + new Trigger() { + position = "10 41 -5"; + rotation = "0 0 -1 56.1498"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-24 18 -5"; + rotation = "0 0 -1 92.8192"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "-10 -17 -5"; + rotation = "0 0 1 186.784"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "26 -4 -4.96686"; + rotation = "0 0 1 95.111"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + add = "0 0 1"; + }; + new Trigger() { + position = "57 -73 -7"; + rotation = "0 0 -1 48.1284"; + scale = "1 1 1"; + dataBlock = "SpawnTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + block = "0"; + add = "0 0 1"; + }; + }; + new Item() { + position = "-64 51 -6.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-57 -18 -6.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-28 -44 -6.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "18 -74 -6.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "74 -34 -6.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "63 24 -6.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "37 74 -10.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-25 73 -10.813"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperSpeedItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "28 -76 -10.267"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "84 -20 -3.267"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "76 52 -6.267"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 88 -7.267"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-36 12 -8.267"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-33 -49 -7.267"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "HelicopterItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "42 56 -10.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "52 -44 -10.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-43 53 -10.8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "2 12 0.2"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "SuperJumpItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "10 59 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "44 34 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "20 -52 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-20 -12 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-37 36 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "59 -12 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "MegaMarbleItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "16 14 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-12 9 -3"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-1 36 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "25 88 -7"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "33 -12 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-39 28 -5"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "80 -6 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-5 -20 -8"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Item() { + position = "-4 -52 -6"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + dataBlock = "BlastItem"; + collideable = "0"; + static = "1"; + rotate = "1"; + }; + new Trigger(Bounds) { + position = "-83.5 103.5 -16"; + rotation = "1 0 0 0"; + scale = "187 199 1000"; + dataBlock = "InBoundsTrigger"; + polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; + }; + new Marker(Glassy) { + position = "6 0 0"; + rotation = "1 0 0 0"; + scale = "1 1 1"; + }; + new AudioProfile(MusicProfile) { + fileName = "~/data/sound/music/Comforting Mystery.ogg"; + description = "AudioMusic"; + preload = "0"; + }; +}; +//--- OBJECT WRITE END --- diff --git a/data/multiplayer/interiors/MBP_wall.jpg b/data/multiplayer/interiors/MBP_wall.jpg new file mode 100644 index 00000000..160f6f15 Binary files /dev/null and b/data/multiplayer/interiors/MBP_wall.jpg differ diff --git a/data/multiplayer/interiors/MBP_warm.jpg b/data/multiplayer/interiors/MBP_warm.jpg new file mode 100644 index 00000000..d0ff42b4 Binary files /dev/null and b/data/multiplayer/interiors/MBP_warm.jpg differ diff --git a/data/multiplayer/interiors/PlatinumQuest/DefaultSpec.png b/data/multiplayer/interiors/PlatinumQuest/DefaultSpec.png new file mode 100644 index 00000000..71237778 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/DefaultSpec.png differ diff --git a/data/multiplayer/interiors/PlatinumQuest/Marbleland.dif b/data/multiplayer/interiors/PlatinumQuest/Marbleland.dif new file mode 100644 index 00000000..e1841273 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/Marbleland.dif differ diff --git a/data/multiplayer/interiors/PlatinumQuest/MaximoCenter.dif b/data/multiplayer/interiors/PlatinumQuest/MaximoCenter.dif new file mode 100644 index 00000000..b7b40c09 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/MaximoCenter.dif differ diff --git a/data/multiplayer/interiors/PlatinumQuest/Nadir.dif b/data/multiplayer/interiors/PlatinumQuest/Nadir.dif new file mode 100644 index 00000000..2386d646 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/Nadir.dif differ diff --git a/data/multiplayer/interiors/PlatinumQuest/ice.normal.png b/data/multiplayer/interiors/PlatinumQuest/ice.normal.png new file mode 100644 index 00000000..92cd7a30 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/ice.normal.png differ diff --git a/data/multiplayer/interiors/PlatinumQuest/lupus.dif b/data/multiplayer/interiors/PlatinumQuest/lupus.dif new file mode 100644 index 00000000..119b24cd Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/lupus.dif differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_construction_wood.jpg b/data/multiplayer/interiors/PlatinumQuest/pq_construction_wood.jpg new file mode 100644 index 00000000..88bb89c4 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_construction_wood.jpg differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_edge_cream_2.jpg b/data/multiplayer/interiors/PlatinumQuest/pq_edge_cream_2.jpg new file mode 100644 index 00000000..b354e308 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_edge_cream_2.jpg differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_edge_white_1.jpg b/data/multiplayer/interiors/PlatinumQuest/pq_edge_white_1.jpg new file mode 100644 index 00000000..eb141d7b Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_edge_white_1.jpg differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_edge_white_2.jpg b/data/multiplayer/interiors/PlatinumQuest/pq_edge_white_2.jpg new file mode 100644 index 00000000..cda94761 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_edge_white_2.jpg differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_fossil_rock.jpg b/data/multiplayer/interiors/PlatinumQuest/pq_fossil_rock.jpg new file mode 100644 index 00000000..d1adbe5c Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_fossil_rock.jpg differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_friction_bouncy.jpg b/data/multiplayer/interiors/PlatinumQuest/pq_friction_bouncy.jpg new file mode 100644 index 00000000..93a4601b Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_friction_bouncy.jpg differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_friction_grass.jpg b/data/multiplayer/interiors/PlatinumQuest/pq_friction_grass.jpg new file mode 100644 index 00000000..e53b312d Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_friction_grass.jpg differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_friction_ice.jpg b/data/multiplayer/interiors/PlatinumQuest/pq_friction_ice.jpg new file mode 100644 index 00000000..6d83869e Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_friction_ice.jpg differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_friction_mud.jpg b/data/multiplayer/interiors/PlatinumQuest/pq_friction_mud.jpg new file mode 100644 index 00000000..de368c56 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_friction_mud.jpg differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_friction_sand.jpg b/data/multiplayer/interiors/PlatinumQuest/pq_friction_sand.jpg new file mode 100644 index 00000000..91822efc Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_friction_sand.jpg differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_friction_space.jpg b/data/multiplayer/interiors/PlatinumQuest/pq_friction_space.jpg new file mode 100644 index 00000000..b643b84a Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_friction_space.jpg differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_hot_1_med.jpg b/data/multiplayer/interiors/PlatinumQuest/pq_hot_1_med.jpg new file mode 100644 index 00000000..6a47e562 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_hot_1_med.jpg differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_hot_2_light.jpg b/data/multiplayer/interiors/PlatinumQuest/pq_hot_2_light.jpg new file mode 100644 index 00000000..4514373b Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_hot_2_light.jpg differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_hot_4_med.jpg b/data/multiplayer/interiors/PlatinumQuest/pq_hot_4_med.jpg new file mode 100644 index 00000000..de5bbfd1 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_hot_4_med.jpg differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_1.normal.png b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_1.normal.png new file mode 100644 index 00000000..e3578059 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_1.normal.png differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_1.png b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_1.png new file mode 100644 index 00000000..40a0d903 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_1.png differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_1.spec.png b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_1.spec.png new file mode 100644 index 00000000..14842481 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_1.spec.png differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_2.normal.png b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_2.normal.png new file mode 100644 index 00000000..5ba49517 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_2.normal.png differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_2.png b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_2.png new file mode 100644 index 00000000..77b4c943 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_2.png differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_2.spec.png b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_2.spec.png new file mode 100644 index 00000000..72df0e9d Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_2.spec.png differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_3.normal.png b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_3.normal.png new file mode 100644 index 00000000..babab0c4 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_3.normal.png differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_3.png b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_3.png new file mode 100644 index 00000000..ec7c36b8 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_3.png differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_3.spec.png b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_3.spec.png new file mode 100644 index 00000000..97875929 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_3.spec.png differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_4.normal.png b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_4.normal.png new file mode 100644 index 00000000..b8cd5abc Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_4.normal.png differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_4.png b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_4.png new file mode 100644 index 00000000..38f6d565 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_4.png differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_4.spec.png b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_4.spec.png new file mode 100644 index 00000000..b725693e Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_4.spec.png differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_5.normal.png b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_5.normal.png new file mode 100644 index 00000000..ea87b986 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_5.normal.png differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_5.png b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_5.png new file mode 100644 index 00000000..65acce71 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_5.png differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_5.spec.png b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_5.spec.png new file mode 100644 index 00000000..ec51b5a3 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_5.spec.png differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_6.normal.png b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_6.normal.png new file mode 100644 index 00000000..40924ce8 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_6.normal.png differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_6.png b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_6.png new file mode 100644 index 00000000..45baabed Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_6.png differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_6.spec.png b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_6.spec.png new file mode 100644 index 00000000..861a9c01 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_6.spec.png differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_7.normal.png b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_7.normal.png new file mode 100644 index 00000000..6a62c85a Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_7.normal.png differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_7.png b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_7.png new file mode 100644 index 00000000..e6586e3c Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_7.png differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_7.spec.png b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_7.spec.png new file mode 100644 index 00000000..06724ad2 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_7.spec.png differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_8.normal.png b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_8.normal.png new file mode 100644 index 00000000..d4f38741 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_8.normal.png differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_8.png b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_8.png new file mode 100644 index 00000000..8a9bb313 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_8.png differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_8.spec.png b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_8.spec.png new file mode 100644 index 00000000..c36e5621 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_8.spec.png differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_combo.normal.png b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_combo.normal.png new file mode 100644 index 00000000..d26707cc Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_combo.normal.png differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_combo.png b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_combo.png new file mode 100644 index 00000000..684fc87f Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_combo.png differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_combo.spec.png b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_combo.spec.png new file mode 100644 index 00000000..de7a8c7c Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_combo.spec.png differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_combo_2.normal.png b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_combo_2.normal.png new file mode 100644 index 00000000..2f5b74cb Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_combo_2.normal.png differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_combo_2.png b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_combo_2.png new file mode 100644 index 00000000..bc77e196 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_combo_2.png differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_combo_2.spec.png b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_combo_2.spec.png new file mode 100644 index 00000000..a2b8b3cf Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_combo_2.spec.png differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_combo_2_medium.png b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_combo_2_medium.png new file mode 100644 index 00000000..155797a7 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_combo_2_medium.png differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_combo_small.png b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_combo_small.png new file mode 100644 index 00000000..3af38ac0 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_ray_wall_combo_small.png differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_rays_blue_med.jpg b/data/multiplayer/interiors/PlatinumQuest/pq_rays_blue_med.jpg new file mode 100644 index 00000000..828e1f13 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_rays_blue_med.jpg differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_rays_green_dark.jpg b/data/multiplayer/interiors/PlatinumQuest/pq_rays_green_dark.jpg new file mode 100644 index 00000000..56884064 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_rays_green_dark.jpg differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_rays_green_light.jpg b/data/multiplayer/interiors/PlatinumQuest/pq_rays_green_light.jpg new file mode 100644 index 00000000..72a41916 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_rays_green_light.jpg differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_rays_green_med.jpg b/data/multiplayer/interiors/PlatinumQuest/pq_rays_green_med.jpg new file mode 100644 index 00000000..71c991d2 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_rays_green_med.jpg differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_rays_green_random.jpg b/data/multiplayer/interiors/PlatinumQuest/pq_rays_green_random.jpg new file mode 100644 index 00000000..a9a47566 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_rays_green_random.jpg differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_rays_purple_light.jpg b/data/multiplayer/interiors/PlatinumQuest/pq_rays_purple_light.jpg new file mode 100644 index 00000000..092d14b4 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_rays_purple_light.jpg differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_rays_purple_med.jpg b/data/multiplayer/interiors/PlatinumQuest/pq_rays_purple_med.jpg new file mode 100644 index 00000000..909c7df2 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_rays_purple_med.jpg differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_rays_red_light.jpg b/data/multiplayer/interiors/PlatinumQuest/pq_rays_red_light.jpg new file mode 100644 index 00000000..35904baf Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_rays_red_light.jpg differ diff --git a/data/multiplayer/interiors/PlatinumQuest/pq_under_tile_brown.jpg b/data/multiplayer/interiors/PlatinumQuest/pq_under_tile_brown.jpg new file mode 100644 index 00000000..fa29cdc3 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/pq_under_tile_brown.jpg differ diff --git a/data/multiplayer/interiors/PlatinumQuest/stripe_caution.jpg b/data/multiplayer/interiors/PlatinumQuest/stripe_caution.jpg new file mode 100644 index 00000000..26570f9c Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/stripe_caution.jpg differ diff --git a/data/multiplayer/interiors/PlatinumQuest/tile.normal.png b/data/multiplayer/interiors/PlatinumQuest/tile.normal.png new file mode 100644 index 00000000..0dffcdcb Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/tile.normal.png differ diff --git a/data/multiplayer/interiors/PlatinumQuest/tile.spec.png b/data/multiplayer/interiors/PlatinumQuest/tile.spec.png new file mode 100644 index 00000000..8beba789 Binary files /dev/null and b/data/multiplayer/interiors/PlatinumQuest/tile.spec.png differ diff --git a/data/multiplayer/interiors/Spleef.dif b/data/multiplayer/interiors/Spleef.dif new file mode 100644 index 00000000..7ed7f639 Binary files /dev/null and b/data/multiplayer/interiors/Spleef.dif differ diff --git a/data/multiplayer/interiors/advanced/Architecture.dif b/data/multiplayer/interiors/advanced/Architecture.dif new file mode 100644 index 00000000..a8cc2cf5 Binary files /dev/null and b/data/multiplayer/interiors/advanced/Architecture.dif differ diff --git a/data/multiplayer/interiors/advanced/Concentric1.dif b/data/multiplayer/interiors/advanced/Concentric1.dif new file mode 100644 index 00000000..8e0b5de8 Binary files /dev/null and b/data/multiplayer/interiors/advanced/Concentric1.dif differ diff --git a/data/multiplayer/interiors/advanced/Concentric2.dif b/data/multiplayer/interiors/advanced/Concentric2.dif new file mode 100644 index 00000000..c69ef36e Binary files /dev/null and b/data/multiplayer/interiors/advanced/Concentric2.dif differ diff --git a/data/multiplayer/interiors/advanced/Horizon.dif b/data/multiplayer/interiors/advanced/Horizon.dif new file mode 100644 index 00000000..5cbaf15f Binary files /dev/null and b/data/multiplayer/interiors/advanced/Horizon.dif differ diff --git a/data/multiplayer/interiors/advanced/NukesweeperRevisitedMultiplayer.dif b/data/multiplayer/interiors/advanced/NukesweeperRevisitedMultiplayer.dif new file mode 100644 index 00000000..c834149e Binary files /dev/null and b/data/multiplayer/interiors/advanced/NukesweeperRevisitedMultiplayer.dif differ diff --git a/data/multiplayer/interiors/advanced/NukesweeperRevisitedMultiplayerCovering.dif b/data/multiplayer/interiors/advanced/NukesweeperRevisitedMultiplayerCovering.dif new file mode 100644 index 00000000..8fc43735 Binary files /dev/null and b/data/multiplayer/interiors/advanced/NukesweeperRevisitedMultiplayerCovering.dif differ diff --git a/data/multiplayer/interiors/advanced/ParPit.dif b/data/multiplayer/interiors/advanced/ParPit.dif new file mode 100644 index 00000000..32e00aa3 Binary files /dev/null and b/data/multiplayer/interiors/advanced/ParPit.dif differ diff --git a/data/multiplayer/interiors/advanced/Promontory1a.dif b/data/multiplayer/interiors/advanced/Promontory1a.dif new file mode 100644 index 00000000..3c65d7c2 Binary files /dev/null and b/data/multiplayer/interiors/advanced/Promontory1a.dif differ diff --git a/data/multiplayer/interiors/advanced/Promontory1b.dif b/data/multiplayer/interiors/advanced/Promontory1b.dif new file mode 100644 index 00000000..332c0596 Binary files /dev/null and b/data/multiplayer/interiors/advanced/Promontory1b.dif differ diff --git a/data/multiplayer/interiors/advanced/Promontory2.dif b/data/multiplayer/interiors/advanced/Promontory2.dif new file mode 100644 index 00000000..f9b20a7e Binary files /dev/null and b/data/multiplayer/interiors/advanced/Promontory2.dif differ diff --git a/data/multiplayer/interiors/advanced/Ring-0.dif b/data/multiplayer/interiors/advanced/Ring-0.dif new file mode 100644 index 00000000..d75a57cb Binary files /dev/null and b/data/multiplayer/interiors/advanced/Ring-0.dif differ diff --git a/data/multiplayer/interiors/advanced/Ring-1.dif b/data/multiplayer/interiors/advanced/Ring-1.dif new file mode 100644 index 00000000..54b91f2e Binary files /dev/null and b/data/multiplayer/interiors/advanced/Ring-1.dif differ diff --git a/data/multiplayer/interiors/advanced/Ring-2.dif b/data/multiplayer/interiors/advanced/Ring-2.dif new file mode 100644 index 00000000..5f149928 Binary files /dev/null and b/data/multiplayer/interiors/advanced/Ring-2.dif differ diff --git a/data/multiplayer/interiors/advanced/Ring-3.dif b/data/multiplayer/interiors/advanced/Ring-3.dif new file mode 100644 index 00000000..8a1b0dfe Binary files /dev/null and b/data/multiplayer/interiors/advanced/Ring-3.dif differ diff --git a/data/multiplayer/interiors/advanced/Ring-4.dif b/data/multiplayer/interiors/advanced/Ring-4.dif new file mode 100644 index 00000000..e32c1301 Binary files /dev/null and b/data/multiplayer/interiors/advanced/Ring-4.dif differ diff --git a/data/multiplayer/interiors/advanced/Ring-5.dif b/data/multiplayer/interiors/advanced/Ring-5.dif new file mode 100644 index 00000000..b9a8c2b5 Binary files /dev/null and b/data/multiplayer/interiors/advanced/Ring-5.dif differ diff --git a/data/multiplayer/interiors/advanced/Ring-6.dif b/data/multiplayer/interiors/advanced/Ring-6.dif new file mode 100644 index 00000000..221bf5e3 Binary files /dev/null and b/data/multiplayer/interiors/advanced/Ring-6.dif differ diff --git a/data/multiplayer/interiors/advanced/Ring-7.dif b/data/multiplayer/interiors/advanced/Ring-7.dif new file mode 100644 index 00000000..c4c4c60d Binary files /dev/null and b/data/multiplayer/interiors/advanced/Ring-7.dif differ diff --git a/data/multiplayer/interiors/advanced/Sacred.dif b/data/multiplayer/interiors/advanced/Sacred.dif new file mode 100644 index 00000000..06260817 Binary files /dev/null and b/data/multiplayer/interiors/advanced/Sacred.dif differ diff --git a/data/multiplayer/interiors/advanced/Spires.dif b/data/multiplayer/interiors/advanced/Spires.dif new file mode 100644 index 00000000..ec07d5d6 Binary files /dev/null and b/data/multiplayer/interiors/advanced/Spires.dif differ diff --git a/data/multiplayer/interiors/advanced/Zenith.dif b/data/multiplayer/interiors/advanced/Zenith.dif new file mode 100644 index 00000000..1021b228 Binary files /dev/null and b/data/multiplayer/interiors/advanced/Zenith.dif differ diff --git a/data/multiplayer/interiors/apexTex.jpg b/data/multiplayer/interiors/apexTex.jpg new file mode 100644 index 00000000..e9063142 Binary files /dev/null and b/data/multiplayer/interiors/apexTex.jpg differ diff --git a/data/multiplayer/interiors/arrow_cool1.jpg b/data/multiplayer/interiors/arrow_cool1.jpg new file mode 100644 index 00000000..52da75ce Binary files /dev/null and b/data/multiplayer/interiors/arrow_cool1.jpg differ diff --git a/data/multiplayer/interiors/arrow_neutral1.jpg b/data/multiplayer/interiors/arrow_neutral1.jpg new file mode 100644 index 00000000..6328cf38 Binary files /dev/null and b/data/multiplayer/interiors/arrow_neutral1.jpg differ diff --git a/data/multiplayer/interiors/arrow_neutral2.jpg b/data/multiplayer/interiors/arrow_neutral2.jpg new file mode 100644 index 00000000..f3bff588 Binary files /dev/null and b/data/multiplayer/interiors/arrow_neutral2.jpg differ diff --git a/data/multiplayer/interiors/arrow_warm1.jpg b/data/multiplayer/interiors/arrow_warm1.jpg new file mode 100644 index 00000000..fac5ce66 Binary files /dev/null and b/data/multiplayer/interiors/arrow_warm1.jpg differ diff --git a/data/multiplayer/interiors/beginner/Battlecube.dif b/data/multiplayer/interiors/beginner/Battlecube.dif new file mode 100644 index 00000000..3f1b5554 Binary files /dev/null and b/data/multiplayer/interiors/beginner/Battlecube.dif differ diff --git a/data/multiplayer/interiors/beginner/BlastClub.dif b/data/multiplayer/interiors/beginner/BlastClub.dif new file mode 100644 index 00000000..d99971ab Binary files /dev/null and b/data/multiplayer/interiors/beginner/BlastClub.dif differ diff --git a/data/multiplayer/interiors/beginner/Bowl.dif b/data/multiplayer/interiors/beginner/Bowl.dif new file mode 100644 index 00000000..4e58eb17 Binary files /dev/null and b/data/multiplayer/interiors/beginner/Bowl.dif differ diff --git a/data/multiplayer/interiors/beginner/BowlOuterRing.dif b/data/multiplayer/interiors/beginner/BowlOuterRing.dif new file mode 100644 index 00000000..2ee9250a Binary files /dev/null and b/data/multiplayer/interiors/beginner/BowlOuterRing.dif differ diff --git a/data/multiplayer/interiors/beginner/KingOfTheMarble.dif b/data/multiplayer/interiors/beginner/KingOfTheMarble.dif new file mode 100644 index 00000000..4ff4facd Binary files /dev/null and b/data/multiplayer/interiors/beginner/KingOfTheMarble.dif differ diff --git a/data/multiplayer/interiors/beginner/MarbleAgilityCourse.dif b/data/multiplayer/interiors/beginner/MarbleAgilityCourse.dif new file mode 100644 index 00000000..4ab8fe77 Binary files /dev/null and b/data/multiplayer/interiors/beginner/MarbleAgilityCourse.dif differ diff --git a/data/multiplayer/interiors/beginner/MarbleCity.dif b/data/multiplayer/interiors/beginner/MarbleCity.dif new file mode 100644 index 00000000..11afab28 Binary files /dev/null and b/data/multiplayer/interiors/beginner/MarbleCity.dif differ diff --git a/data/multiplayer/interiors/beginner/MinuteMadness.dif b/data/multiplayer/interiors/beginner/MinuteMadness.dif new file mode 100644 index 00000000..99f5141d Binary files /dev/null and b/data/multiplayer/interiors/beginner/MinuteMadness.dif differ diff --git a/data/multiplayer/interiors/beginner/Playground.dif b/data/multiplayer/interiors/beginner/Playground.dif new file mode 100644 index 00000000..43f33d6e Binary files /dev/null and b/data/multiplayer/interiors/beginner/Playground.dif differ diff --git a/data/multiplayer/interiors/beginner/Sprawl.dif b/data/multiplayer/interiors/beginner/Sprawl.dif new file mode 100644 index 00000000..667d9c05 Binary files /dev/null and b/data/multiplayer/interiors/beginner/Sprawl.dif differ diff --git a/data/multiplayer/interiors/beginner/Triumvirate.dif b/data/multiplayer/interiors/beginner/Triumvirate.dif new file mode 100644 index 00000000..0a6ff28b Binary files /dev/null and b/data/multiplayer/interiors/beginner/Triumvirate.dif differ diff --git a/data/multiplayer/interiors/beginner/thearena.dif b/data/multiplayer/interiors/beginner/thearena.dif new file mode 100644 index 00000000..39f3b399 Binary files /dev/null and b/data/multiplayer/interiors/beginner/thearena.dif differ diff --git a/data/multiplayer/interiors/blah.jpg b/data/multiplayer/interiors/blah.jpg new file mode 100644 index 00000000..393f999f Binary files /dev/null and b/data/multiplayer/interiors/blah.jpg differ diff --git a/data/multiplayer/interiors/blue.jpg b/data/multiplayer/interiors/blue.jpg new file mode 100644 index 00000000..7792d3c8 Binary files /dev/null and b/data/multiplayer/interiors/blue.jpg differ diff --git a/data/multiplayer/interiors/blue_grid.jpg b/data/multiplayer/interiors/blue_grid.jpg new file mode 100644 index 00000000..b7e58345 Binary files /dev/null and b/data/multiplayer/interiors/blue_grid.jpg differ diff --git a/data/multiplayer/interiors/blue_grid2.jpg b/data/multiplayer/interiors/blue_grid2.jpg new file mode 100644 index 00000000..340cf221 Binary files /dev/null and b/data/multiplayer/interiors/blue_grid2.jpg differ diff --git a/data/multiplayer/interiors/carpet.jpg b/data/multiplayer/interiors/carpet.jpg new file mode 100644 index 00000000..76eddd9c Binary files /dev/null and b/data/multiplayer/interiors/carpet.jpg differ diff --git a/data/multiplayer/interiors/chevron_cool.jpg b/data/multiplayer/interiors/chevron_cool.jpg new file mode 100644 index 00000000..c14c5837 Binary files /dev/null and b/data/multiplayer/interiors/chevron_cool.jpg differ diff --git a/data/multiplayer/interiors/chevron_cool2.jpg b/data/multiplayer/interiors/chevron_cool2.jpg new file mode 100644 index 00000000..e51ea8f5 Binary files /dev/null and b/data/multiplayer/interiors/chevron_cool2.jpg differ diff --git a/data/multiplayer/interiors/chevron_neutral.jpg b/data/multiplayer/interiors/chevron_neutral.jpg new file mode 100644 index 00000000..ea0d566f Binary files /dev/null and b/data/multiplayer/interiors/chevron_neutral.jpg differ diff --git a/data/multiplayer/interiors/chevron_neutral2.jpg b/data/multiplayer/interiors/chevron_neutral2.jpg new file mode 100644 index 00000000..8cf876c9 Binary files /dev/null and b/data/multiplayer/interiors/chevron_neutral2.jpg differ diff --git a/data/multiplayer/interiors/chevron_warm.jpg b/data/multiplayer/interiors/chevron_warm.jpg new file mode 100644 index 00000000..ddcb716d Binary files /dev/null and b/data/multiplayer/interiors/chevron_warm.jpg differ diff --git a/data/multiplayer/interiors/chevron_warm2.jpg b/data/multiplayer/interiors/chevron_warm2.jpg new file mode 100644 index 00000000..1a114381 Binary files /dev/null and b/data/multiplayer/interiors/chevron_warm2.jpg differ diff --git a/data/multiplayer/interiors/concrete.jpg b/data/multiplayer/interiors/concrete.jpg new file mode 100644 index 00000000..4d6a87e6 Binary files /dev/null and b/data/multiplayer/interiors/concrete.jpg differ diff --git a/data/multiplayer/interiors/custom/Apex.dif b/data/multiplayer/interiors/custom/Apex.dif new file mode 100644 index 00000000..1c443162 Binary files /dev/null and b/data/multiplayer/interiors/custom/Apex.dif differ diff --git a/data/multiplayer/interiors/custom/Doors01.dif b/data/multiplayer/interiors/custom/Doors01.dif new file mode 100644 index 00000000..820466c9 Binary files /dev/null and b/data/multiplayer/interiors/custom/Doors01.dif differ diff --git a/data/multiplayer/interiors/custom/Doors02.dif b/data/multiplayer/interiors/custom/Doors02.dif new file mode 100644 index 00000000..26b821ec Binary files /dev/null and b/data/multiplayer/interiors/custom/Doors02.dif differ diff --git a/data/multiplayer/interiors/custom/Doors02_MPs.dif b/data/multiplayer/interiors/custom/Doors02_MPs.dif new file mode 100644 index 00000000..bc082cb4 Binary files /dev/null and b/data/multiplayer/interiors/custom/Doors02_MPs.dif differ diff --git a/data/multiplayer/interiors/custom/Doors03.dif b/data/multiplayer/interiors/custom/Doors03.dif new file mode 100644 index 00000000..6ccbb8c6 Binary files /dev/null and b/data/multiplayer/interiors/custom/Doors03.dif differ diff --git a/data/multiplayer/interiors/custom/Doors03_MPs.dif b/data/multiplayer/interiors/custom/Doors03_MPs.dif new file mode 100644 index 00000000..5299851e Binary files /dev/null and b/data/multiplayer/interiors/custom/Doors03_MPs.dif differ diff --git a/data/multiplayer/interiors/custom/Doors04.dif b/data/multiplayer/interiors/custom/Doors04.dif new file mode 100644 index 00000000..b2e611f4 Binary files /dev/null and b/data/multiplayer/interiors/custom/Doors04.dif differ diff --git a/data/multiplayer/interiors/custom/Doors04_MPs.dif b/data/multiplayer/interiors/custom/Doors04_MPs.dif new file mode 100644 index 00000000..c69c8bc8 Binary files /dev/null and b/data/multiplayer/interiors/custom/Doors04_MPs.dif differ diff --git a/data/multiplayer/interiors/custom/Doors05.dif b/data/multiplayer/interiors/custom/Doors05.dif new file mode 100644 index 00000000..0fd99b1e Binary files /dev/null and b/data/multiplayer/interiors/custom/Doors05.dif differ diff --git a/data/multiplayer/interiors/custom/Doors05_MPs.dif b/data/multiplayer/interiors/custom/Doors05_MPs.dif new file mode 100644 index 00000000..571f2d9b Binary files /dev/null and b/data/multiplayer/interiors/custom/Doors05_MPs.dif differ diff --git a/data/multiplayer/interiors/custom/Doors06.dif b/data/multiplayer/interiors/custom/Doors06.dif new file mode 100644 index 00000000..068f1cf9 Binary files /dev/null and b/data/multiplayer/interiors/custom/Doors06.dif differ diff --git a/data/multiplayer/interiors/custom/Doors06_MPs.dif b/data/multiplayer/interiors/custom/Doors06_MPs.dif new file mode 100644 index 00000000..79e0ec83 Binary files /dev/null and b/data/multiplayer/interiors/custom/Doors06_MPs.dif differ diff --git a/data/multiplayer/interiors/custom/Doors07.dif b/data/multiplayer/interiors/custom/Doors07.dif new file mode 100644 index 00000000..ee4cf7f6 Binary files /dev/null and b/data/multiplayer/interiors/custom/Doors07.dif differ diff --git a/data/multiplayer/interiors/custom/Doors07_MPs.dif b/data/multiplayer/interiors/custom/Doors07_MPs.dif new file mode 100644 index 00000000..e7ad216f Binary files /dev/null and b/data/multiplayer/interiors/custom/Doors07_MPs.dif differ diff --git a/data/multiplayer/interiors/custom/Doors08.dif b/data/multiplayer/interiors/custom/Doors08.dif new file mode 100644 index 00000000..03691f69 Binary files /dev/null and b/data/multiplayer/interiors/custom/Doors08.dif differ diff --git a/data/multiplayer/interiors/custom/Doors08_MPs.dif b/data/multiplayer/interiors/custom/Doors08_MPs.dif new file mode 100644 index 00000000..61c6252a Binary files /dev/null and b/data/multiplayer/interiors/custom/Doors08_MPs.dif differ diff --git a/data/multiplayer/interiors/custom/Doors09.dif b/data/multiplayer/interiors/custom/Doors09.dif new file mode 100644 index 00000000..b416d9f9 Binary files /dev/null and b/data/multiplayer/interiors/custom/Doors09.dif differ diff --git a/data/multiplayer/interiors/custom/Doors09_MPs.dif b/data/multiplayer/interiors/custom/Doors09_MPs.dif new file mode 100644 index 00000000..1dd6dee9 Binary files /dev/null and b/data/multiplayer/interiors/custom/Doors09_MPs.dif differ diff --git a/data/multiplayer/interiors/custom/Doors_Tut2.dif b/data/multiplayer/interiors/custom/Doors_Tut2.dif new file mode 100644 index 00000000..9d9bf1d2 Binary files /dev/null and b/data/multiplayer/interiors/custom/Doors_Tut2.dif differ diff --git a/data/multiplayer/interiors/custom/Grassy.dif b/data/multiplayer/interiors/custom/Grassy.dif new file mode 100644 index 00000000..30259b89 Binary files /dev/null and b/data/multiplayer/interiors/custom/Grassy.dif differ diff --git a/data/multiplayer/interiors/custom/Heart_of_the_Typhoon.dif b/data/multiplayer/interiors/custom/Heart_of_the_Typhoon.dif new file mode 100644 index 00000000..99e3099d Binary files /dev/null and b/data/multiplayer/interiors/custom/Heart_of_the_Typhoon.dif differ diff --git a/data/multiplayer/interiors/custom/KingOfTheRing.dif b/data/multiplayer/interiors/custom/KingOfTheRing.dif new file mode 100644 index 00000000..17fbad4d Binary files /dev/null and b/data/multiplayer/interiors/custom/KingOfTheRing.dif differ diff --git a/data/multiplayer/interiors/custom/Layered.dif b/data/multiplayer/interiors/custom/Layered.dif new file mode 100644 index 00000000..1f352450 Binary files /dev/null and b/data/multiplayer/interiors/custom/Layered.dif differ diff --git a/data/multiplayer/interiors/custom/Metropolis.dif b/data/multiplayer/interiors/custom/Metropolis.dif new file mode 100644 index 00000000..3a0f9765 Binary files /dev/null and b/data/multiplayer/interiors/custom/Metropolis.dif differ diff --git a/data/multiplayer/interiors/custom/Pillar.dif b/data/multiplayer/interiors/custom/Pillar.dif new file mode 100644 index 00000000..75607465 Binary files /dev/null and b/data/multiplayer/interiors/custom/Pillar.dif differ diff --git a/data/multiplayer/interiors/custom/Quartile.dif b/data/multiplayer/interiors/custom/Quartile.dif new file mode 100644 index 00000000..d81cba4f Binary files /dev/null and b/data/multiplayer/interiors/custom/Quartile.dif differ diff --git a/data/multiplayer/interiors/custom/TimelyAscent.dif b/data/multiplayer/interiors/custom/TimelyAscent.dif new file mode 100644 index 00000000..5683906d Binary files /dev/null and b/data/multiplayer/interiors/custom/TimelyAscent.dif differ diff --git a/data/multiplayer/interiors/custom/Turning_Point.dif b/data/multiplayer/interiors/custom/Turning_Point.dif new file mode 100644 index 00000000..085d0a12 Binary files /dev/null and b/data/multiplayer/interiors/custom/Turning_Point.dif differ diff --git a/data/multiplayer/interiors/custom/TutMPs.dif b/data/multiplayer/interiors/custom/TutMPs.dif new file mode 100644 index 00000000..2b0c88bb Binary files /dev/null and b/data/multiplayer/interiors/custom/TutMPs.dif differ diff --git a/data/multiplayer/interiors/custom/WoodDoor.dif b/data/multiplayer/interiors/custom/WoodDoor.dif new file mode 100644 index 00000000..36d737d3 Binary files /dev/null and b/data/multiplayer/interiors/custom/WoodDoor.dif differ diff --git a/data/multiplayer/interiors/custom/archipelagio.dif b/data/multiplayer/interiors/custom/archipelagio.dif new file mode 100644 index 00000000..c120faa4 Binary files /dev/null and b/data/multiplayer/interiors/custom/archipelagio.dif differ diff --git a/data/multiplayer/interiors/custom/custom_mirror.png b/data/multiplayer/interiors/custom/custom_mirror.png new file mode 100644 index 00000000..9ac9db52 Binary files /dev/null and b/data/multiplayer/interiors/custom/custom_mirror.png differ diff --git a/data/multiplayer/interiors/custom/custom_rubber.png b/data/multiplayer/interiors/custom/custom_rubber.png new file mode 100644 index 00000000..c8730a39 Binary files /dev/null and b/data/multiplayer/interiors/custom/custom_rubber.png differ diff --git a/data/multiplayer/interiors/custom/custom_woodchips.png b/data/multiplayer/interiors/custom/custom_woodchips.png new file mode 100644 index 00000000..13c78e27 Binary files /dev/null and b/data/multiplayer/interiors/custom/custom_woodchips.png differ diff --git a/data/multiplayer/interiors/custom/exampleMission.dif b/data/multiplayer/interiors/custom/exampleMission.dif new file mode 100644 index 00000000..2769bd7a Binary files /dev/null and b/data/multiplayer/interiors/custom/exampleMission.dif differ diff --git a/data/multiplayer/interiors/custom/landscape.dif b/data/multiplayer/interiors/custom/landscape.dif new file mode 100644 index 00000000..3bfb845c Binary files /dev/null and b/data/multiplayer/interiors/custom/landscape.dif differ diff --git a/data/multiplayer/interiors/custom/mbu/TripleDeckers.dif b/data/multiplayer/interiors/custom/mbu/TripleDeckers.dif new file mode 100644 index 00000000..907ab7ae Binary files /dev/null and b/data/multiplayer/interiors/custom/mbu/TripleDeckers.dif differ diff --git a/data/multiplayer/interiors/custom/mbu/VShape.dif b/data/multiplayer/interiors/custom/mbu/VShape.dif new file mode 100644 index 00000000..3687e1b1 Binary files /dev/null and b/data/multiplayer/interiors/custom/mbu/VShape.dif differ diff --git a/data/multiplayer/interiors/custom/mbu/beam.png b/data/multiplayer/interiors/custom/mbu/beam.png new file mode 100644 index 00000000..112c5932 Binary files /dev/null and b/data/multiplayer/interiors/custom/mbu/beam.png differ diff --git a/data/multiplayer/interiors/custom/mbu/beam_side.png b/data/multiplayer/interiors/custom/mbu/beam_side.png new file mode 100644 index 00000000..d6722245 Binary files /dev/null and b/data/multiplayer/interiors/custom/mbu/beam_side.png differ diff --git a/data/multiplayer/interiors/custom/mbu/edge_white.jpg b/data/multiplayer/interiors/custom/mbu/edge_white.jpg new file mode 100644 index 00000000..8cd8f91b Binary files /dev/null and b/data/multiplayer/interiors/custom/mbu/edge_white.jpg differ diff --git a/data/multiplayer/interiors/custom/mbu/edge_white_shadow.png b/data/multiplayer/interiors/custom/mbu/edge_white_shadow.png new file mode 100644 index 00000000..e5d9dec5 Binary files /dev/null and b/data/multiplayer/interiors/custom/mbu/edge_white_shadow.png differ diff --git a/data/multiplayer/interiors/custom/mbu/friction_high.png b/data/multiplayer/interiors/custom/mbu/friction_high.png new file mode 100644 index 00000000..d33f6e81 Binary files /dev/null and b/data/multiplayer/interiors/custom/mbu/friction_high.png differ diff --git a/data/multiplayer/interiors/custom/mbu/friction_high_shadow.jpg b/data/multiplayer/interiors/custom/mbu/friction_high_shadow.jpg new file mode 100644 index 00000000..70e216a3 Binary files /dev/null and b/data/multiplayer/interiors/custom/mbu/friction_high_shadow.jpg differ diff --git a/data/multiplayer/interiors/custom/mbu/friction_low.jpg b/data/multiplayer/interiors/custom/mbu/friction_low.jpg new file mode 100644 index 00000000..ba711fe3 Binary files /dev/null and b/data/multiplayer/interiors/custom/mbu/friction_low.jpg differ diff --git a/data/multiplayer/interiors/custom/mbu/friction_low_shadow.png b/data/multiplayer/interiors/custom/mbu/friction_low_shadow.png new file mode 100644 index 00000000..8ed4affa Binary files /dev/null and b/data/multiplayer/interiors/custom/mbu/friction_low_shadow.png differ diff --git a/data/multiplayer/interiors/custom/mbu/plate_1.jpg b/data/multiplayer/interiors/custom/mbu/plate_1.jpg new file mode 100644 index 00000000..1d00ade5 Binary files /dev/null and b/data/multiplayer/interiors/custom/mbu/plate_1.jpg differ diff --git a/data/multiplayer/interiors/custom/mbu/pointsoftheradarMBU.dif b/data/multiplayer/interiors/custom/mbu/pointsoftheradarMBU.dif new file mode 100644 index 00000000..715b3d43 Binary files /dev/null and b/data/multiplayer/interiors/custom/mbu/pointsoftheradarMBU.dif differ diff --git a/data/multiplayer/interiors/custom/mbu/stripe_caution.png b/data/multiplayer/interiors/custom/mbu/stripe_caution.png new file mode 100644 index 00000000..d6d12447 Binary files /dev/null and b/data/multiplayer/interiors/custom/mbu/stripe_caution.png differ diff --git a/data/multiplayer/interiors/custom/mbu/tile_advanced.jpg b/data/multiplayer/interiors/custom/mbu/tile_advanced.jpg new file mode 100644 index 00000000..c9dc27a5 Binary files /dev/null and b/data/multiplayer/interiors/custom/mbu/tile_advanced.jpg differ diff --git a/data/multiplayer/interiors/custom/mbu/tile_advanced_blue.jpg b/data/multiplayer/interiors/custom/mbu/tile_advanced_blue.jpg new file mode 100644 index 00000000..44d93563 Binary files /dev/null and b/data/multiplayer/interiors/custom/mbu/tile_advanced_blue.jpg differ diff --git a/data/multiplayer/interiors/custom/mbu/tile_advanced_blue_shadow.png b/data/multiplayer/interiors/custom/mbu/tile_advanced_blue_shadow.png new file mode 100644 index 00000000..dd3acee1 Binary files /dev/null and b/data/multiplayer/interiors/custom/mbu/tile_advanced_blue_shadow.png differ diff --git a/data/multiplayer/interiors/custom/mbu/tile_advanced_green.jpg b/data/multiplayer/interiors/custom/mbu/tile_advanced_green.jpg new file mode 100644 index 00000000..9f390ba1 Binary files /dev/null and b/data/multiplayer/interiors/custom/mbu/tile_advanced_green.jpg differ diff --git a/data/multiplayer/interiors/custom/mbu/tile_advanced_green_shadow.png b/data/multiplayer/interiors/custom/mbu/tile_advanced_green_shadow.png new file mode 100644 index 00000000..9f9c2fc3 Binary files /dev/null and b/data/multiplayer/interiors/custom/mbu/tile_advanced_green_shadow.png differ diff --git a/data/multiplayer/interiors/custom/mbu/tile_advanced_shadow.jpg b/data/multiplayer/interiors/custom/mbu/tile_advanced_shadow.jpg new file mode 100644 index 00000000..9a97e889 Binary files /dev/null and b/data/multiplayer/interiors/custom/mbu/tile_advanced_shadow.jpg differ diff --git a/data/multiplayer/interiors/custom/mbu/tile_beginner.png b/data/multiplayer/interiors/custom/mbu/tile_beginner.png new file mode 100644 index 00000000..7d070e98 Binary files /dev/null and b/data/multiplayer/interiors/custom/mbu/tile_beginner.png differ diff --git a/data/multiplayer/interiors/custom/mbu/tile_beginner_blue.jpg b/data/multiplayer/interiors/custom/mbu/tile_beginner_blue.jpg new file mode 100644 index 00000000..7216244c Binary files /dev/null and b/data/multiplayer/interiors/custom/mbu/tile_beginner_blue.jpg differ diff --git a/data/multiplayer/interiors/custom/mbu/tile_beginner_blue_shadow.png b/data/multiplayer/interiors/custom/mbu/tile_beginner_blue_shadow.png new file mode 100644 index 00000000..6af3490e Binary files /dev/null and b/data/multiplayer/interiors/custom/mbu/tile_beginner_blue_shadow.png differ diff --git a/data/multiplayer/interiors/custom/mbu/tile_beginner_red.jpg b/data/multiplayer/interiors/custom/mbu/tile_beginner_red.jpg new file mode 100644 index 00000000..06f2bc14 Binary files /dev/null and b/data/multiplayer/interiors/custom/mbu/tile_beginner_red.jpg differ diff --git a/data/multiplayer/interiors/custom/mbu/tile_beginner_red_shadow.png b/data/multiplayer/interiors/custom/mbu/tile_beginner_red_shadow.png new file mode 100644 index 00000000..17123d91 Binary files /dev/null and b/data/multiplayer/interiors/custom/mbu/tile_beginner_red_shadow.png differ diff --git a/data/multiplayer/interiors/custom/mbu/tile_beginner_shadow.png b/data/multiplayer/interiors/custom/mbu/tile_beginner_shadow.png new file mode 100644 index 00000000..b5d0b5ec Binary files /dev/null and b/data/multiplayer/interiors/custom/mbu/tile_beginner_shadow.png differ diff --git a/data/multiplayer/interiors/custom/mbu/tile_intermediate.jpg b/data/multiplayer/interiors/custom/mbu/tile_intermediate.jpg new file mode 100644 index 00000000..170bf5f6 Binary files /dev/null and b/data/multiplayer/interiors/custom/mbu/tile_intermediate.jpg differ diff --git a/data/multiplayer/interiors/custom/mbu/tile_intermediate_green.jpg b/data/multiplayer/interiors/custom/mbu/tile_intermediate_green.jpg new file mode 100644 index 00000000..d3b0c4ac Binary files /dev/null and b/data/multiplayer/interiors/custom/mbu/tile_intermediate_green.jpg differ diff --git a/data/multiplayer/interiors/custom/mbu/tile_intermediate_green_shadow.png b/data/multiplayer/interiors/custom/mbu/tile_intermediate_green_shadow.png new file mode 100644 index 00000000..7771840d Binary files /dev/null and b/data/multiplayer/interiors/custom/mbu/tile_intermediate_green_shadow.png differ diff --git a/data/multiplayer/interiors/custom/mbu/tile_intermediate_red.jpg b/data/multiplayer/interiors/custom/mbu/tile_intermediate_red.jpg new file mode 100644 index 00000000..8317e672 Binary files /dev/null and b/data/multiplayer/interiors/custom/mbu/tile_intermediate_red.jpg differ diff --git a/data/multiplayer/interiors/custom/mbu/tile_intermediate_red_shadow.png b/data/multiplayer/interiors/custom/mbu/tile_intermediate_red_shadow.png new file mode 100644 index 00000000..ec97ebd1 Binary files /dev/null and b/data/multiplayer/interiors/custom/mbu/tile_intermediate_red_shadow.png differ diff --git a/data/multiplayer/interiors/custom/mbu/tile_intermediate_shadow.png b/data/multiplayer/interiors/custom/mbu/tile_intermediate_shadow.png new file mode 100644 index 00000000..02b92b34 Binary files /dev/null and b/data/multiplayer/interiors/custom/mbu/tile_intermediate_shadow.png differ diff --git a/data/multiplayer/interiors/custom/mbu/tile_underside.jpg b/data/multiplayer/interiors/custom/mbu/tile_underside.jpg new file mode 100644 index 00000000..7891a03a Binary files /dev/null and b/data/multiplayer/interiors/custom/mbu/tile_underside.jpg differ diff --git a/data/multiplayer/interiors/custom/mbu/wall_beginner.png b/data/multiplayer/interiors/custom/mbu/wall_beginner.png new file mode 100644 index 00000000..afbd9b10 Binary files /dev/null and b/data/multiplayer/interiors/custom/mbu/wall_beginner.png differ diff --git a/data/multiplayer/interiors/custom/mbu/wall_brown.png b/data/multiplayer/interiors/custom/mbu/wall_brown.png new file mode 100644 index 00000000..afbd9b10 Binary files /dev/null and b/data/multiplayer/interiors/custom/mbu/wall_brown.png differ diff --git a/data/multiplayer/interiors/custom/meltdown.dif b/data/multiplayer/interiors/custom/meltdown.dif new file mode 100644 index 00000000..17613be7 Binary files /dev/null and b/data/multiplayer/interiors/custom/meltdown.dif differ diff --git a/data/multiplayer/interiors/custom/prophetic.dif b/data/multiplayer/interiors/custom/prophetic.dif new file mode 100644 index 00000000..d04c004a Binary files /dev/null and b/data/multiplayer/interiors/custom/prophetic.dif differ diff --git a/data/multiplayer/interiors/custom/spherep/SpherePlate-0.dif b/data/multiplayer/interiors/custom/spherep/SpherePlate-0.dif new file mode 100644 index 00000000..ff0d8654 Binary files /dev/null and b/data/multiplayer/interiors/custom/spherep/SpherePlate-0.dif differ diff --git a/data/multiplayer/interiors/custom/spherep/SpherePlate-1.dif b/data/multiplayer/interiors/custom/spherep/SpherePlate-1.dif new file mode 100644 index 00000000..fb20d4c5 Binary files /dev/null and b/data/multiplayer/interiors/custom/spherep/SpherePlate-1.dif differ diff --git a/data/multiplayer/interiors/custom/spherep/SpherePlate-2.dif b/data/multiplayer/interiors/custom/spherep/SpherePlate-2.dif new file mode 100644 index 00000000..1ca8d9b6 Binary files /dev/null and b/data/multiplayer/interiors/custom/spherep/SpherePlate-2.dif differ diff --git a/data/multiplayer/interiors/custom/spherep/SpherePlate-3.dif b/data/multiplayer/interiors/custom/spherep/SpherePlate-3.dif new file mode 100644 index 00000000..f3643cd8 Binary files /dev/null and b/data/multiplayer/interiors/custom/spherep/SpherePlate-3.dif differ diff --git a/data/multiplayer/interiors/custom/spherep/SpherePlate-4.dif b/data/multiplayer/interiors/custom/spherep/SpherePlate-4.dif new file mode 100644 index 00000000..8bb3294a Binary files /dev/null and b/data/multiplayer/interiors/custom/spherep/SpherePlate-4.dif differ diff --git a/data/multiplayer/interiors/custom/spherep/SpherePlate-5.dif b/data/multiplayer/interiors/custom/spherep/SpherePlate-5.dif new file mode 100644 index 00000000..9f9f8622 Binary files /dev/null and b/data/multiplayer/interiors/custom/spherep/SpherePlate-5.dif differ diff --git a/data/multiplayer/interiors/custom/spherep/SpherePlate-6.dif b/data/multiplayer/interiors/custom/spherep/SpherePlate-6.dif new file mode 100644 index 00000000..ae457333 Binary files /dev/null and b/data/multiplayer/interiors/custom/spherep/SpherePlate-6.dif differ diff --git a/data/multiplayer/interiors/custom/spherep/SpherePlate-7.dif b/data/multiplayer/interiors/custom/spherep/SpherePlate-7.dif new file mode 100644 index 00000000..c1064bd4 Binary files /dev/null and b/data/multiplayer/interiors/custom/spherep/SpherePlate-7.dif differ diff --git a/data/multiplayer/interiors/custom/spherep/SpherePlate-8.dif b/data/multiplayer/interiors/custom/spherep/SpherePlate-8.dif new file mode 100644 index 00000000..da9a0631 Binary files /dev/null and b/data/multiplayer/interiors/custom/spherep/SpherePlate-8.dif differ diff --git a/data/multiplayer/interiors/custom/spherep/SpherePlate-9.dif b/data/multiplayer/interiors/custom/spherep/SpherePlate-9.dif new file mode 100644 index 00000000..f1ad8aa0 Binary files /dev/null and b/data/multiplayer/interiors/custom/spherep/SpherePlate-9.dif differ diff --git a/data/multiplayer/interiors/custom/spherep/SpherePlateBridge-0.dif b/data/multiplayer/interiors/custom/spherep/SpherePlateBridge-0.dif new file mode 100644 index 00000000..c53491c4 Binary files /dev/null and b/data/multiplayer/interiors/custom/spherep/SpherePlateBridge-0.dif differ diff --git a/data/multiplayer/interiors/custom/spherep/SpherePlateBridge-1.dif b/data/multiplayer/interiors/custom/spherep/SpherePlateBridge-1.dif new file mode 100644 index 00000000..45828b90 Binary files /dev/null and b/data/multiplayer/interiors/custom/spherep/SpherePlateBridge-1.dif differ diff --git a/data/multiplayer/interiors/custom/spherep/SpherePlateBridge-2.dif b/data/multiplayer/interiors/custom/spherep/SpherePlateBridge-2.dif new file mode 100644 index 00000000..06cbbd79 Binary files /dev/null and b/data/multiplayer/interiors/custom/spherep/SpherePlateBridge-2.dif differ diff --git a/data/multiplayer/interiors/custom/spherep/SpherePlateBridge-3.dif b/data/multiplayer/interiors/custom/spherep/SpherePlateBridge-3.dif new file mode 100644 index 00000000..d0b122bd Binary files /dev/null and b/data/multiplayer/interiors/custom/spherep/SpherePlateBridge-3.dif differ diff --git a/data/multiplayer/interiors/custom/threefolder_coop_similarity.dif b/data/multiplayer/interiors/custom/threefolder_coop_similarity.dif new file mode 100644 index 00000000..feb90781 Binary files /dev/null and b/data/multiplayer/interiors/custom/threefolder_coop_similarity.dif differ diff --git a/data/multiplayer/interiors/custom/threefolder_coop_superplatformrace.dif b/data/multiplayer/interiors/custom/threefolder_coop_superplatformrace.dif new file mode 100644 index 00000000..b4953187 Binary files /dev/null and b/data/multiplayer/interiors/custom/threefolder_coop_superplatformrace.dif differ diff --git a/data/multiplayer/interiors/custom/ttown.dif b/data/multiplayer/interiors/custom/ttown.dif new file mode 100644 index 00000000..2a4f363f Binary files /dev/null and b/data/multiplayer/interiors/custom/ttown.dif differ diff --git a/data/multiplayer/interiors/custom/ttownWoodchips.dif b/data/multiplayer/interiors/custom/ttownWoodchips.dif new file mode 100644 index 00000000..c4649497 Binary files /dev/null and b/data/multiplayer/interiors/custom/ttownWoodchips.dif differ diff --git a/data/multiplayer/interiors/custom_crate.jpg b/data/multiplayer/interiors/custom_crate.jpg new file mode 100644 index 00000000..eb1e1460 Binary files /dev/null and b/data/multiplayer/interiors/custom_crate.jpg differ diff --git a/data/multiplayer/interiors/custom_dirt.jpg b/data/multiplayer/interiors/custom_dirt.jpg new file mode 100644 index 00000000..77893eba Binary files /dev/null and b/data/multiplayer/interiors/custom_dirt.jpg differ diff --git a/data/multiplayer/interiors/custom_insd_track.jpg b/data/multiplayer/interiors/custom_insd_track.jpg new file mode 100644 index 00000000..2e49b8e1 Binary files /dev/null and b/data/multiplayer/interiors/custom_insd_track.jpg differ diff --git a/data/multiplayer/interiors/custom_logend.jpg b/data/multiplayer/interiors/custom_logend.jpg new file mode 100644 index 00000000..6f774357 Binary files /dev/null and b/data/multiplayer/interiors/custom_logend.jpg differ diff --git a/data/multiplayer/interiors/custom_logside.jpg b/data/multiplayer/interiors/custom_logside.jpg new file mode 100644 index 00000000..37930586 Binary files /dev/null and b/data/multiplayer/interiors/custom_logside.jpg differ diff --git a/data/multiplayer/interiors/custom_mid_track.jpg b/data/multiplayer/interiors/custom_mid_track.jpg new file mode 100644 index 00000000..ad7c5b60 Binary files /dev/null and b/data/multiplayer/interiors/custom_mid_track.jpg differ diff --git a/data/multiplayer/interiors/custom_parking.jpg b/data/multiplayer/interiors/custom_parking.jpg new file mode 100644 index 00000000..02bcf260 Binary files /dev/null and b/data/multiplayer/interiors/custom_parking.jpg differ diff --git a/data/multiplayer/interiors/custom_red_brick.jpg b/data/multiplayer/interiors/custom_red_brick.jpg new file mode 100644 index 00000000..d90b0b7e Binary files /dev/null and b/data/multiplayer/interiors/custom_red_brick.jpg differ diff --git a/data/multiplayer/interiors/custom_road.jpg b/data/multiplayer/interiors/custom_road.jpg new file mode 100644 index 00000000..620bb2b3 Binary files /dev/null and b/data/multiplayer/interiors/custom_road.jpg differ diff --git a/data/multiplayer/interiors/custom_sand.jpg b/data/multiplayer/interiors/custom_sand.jpg new file mode 100644 index 00000000..c8e44f0a Binary files /dev/null and b/data/multiplayer/interiors/custom_sand.jpg differ diff --git a/data/multiplayer/interiors/custom_skyscrape2.jpg b/data/multiplayer/interiors/custom_skyscrape2.jpg new file mode 100644 index 00000000..166b6bcc Binary files /dev/null and b/data/multiplayer/interiors/custom_skyscrape2.jpg differ diff --git a/data/multiplayer/interiors/custom_water.jpg b/data/multiplayer/interiors/custom_water.jpg new file mode 100644 index 00000000..e1e4c9bd Binary files /dev/null and b/data/multiplayer/interiors/custom_water.jpg differ diff --git a/data/multiplayer/interiors/custom_water_bttm.jpg b/data/multiplayer/interiors/custom_water_bttm.jpg new file mode 100644 index 00000000..4e9925ad Binary files /dev/null and b/data/multiplayer/interiors/custom_water_bttm.jpg differ diff --git a/data/multiplayer/interiors/custom_water_lft.jpg b/data/multiplayer/interiors/custom_water_lft.jpg new file mode 100644 index 00000000..66d5162f Binary files /dev/null and b/data/multiplayer/interiors/custom_water_lft.jpg differ diff --git a/data/multiplayer/interiors/custom_water_rte.jpg b/data/multiplayer/interiors/custom_water_rte.jpg new file mode 100644 index 00000000..468da21b Binary files /dev/null and b/data/multiplayer/interiors/custom_water_rte.jpg differ diff --git a/data/multiplayer/interiors/custom_water_top.jpg b/data/multiplayer/interiors/custom_water_top.jpg new file mode 100644 index 00000000..d1475c9a Binary files /dev/null and b/data/multiplayer/interiors/custom_water_top.jpg differ diff --git a/data/multiplayer/interiors/custom_woodblockside.jpg b/data/multiplayer/interiors/custom_woodblockside.jpg new file mode 100644 index 00000000..7cc2ed05 Binary files /dev/null and b/data/multiplayer/interiors/custom_woodblockside.jpg differ diff --git a/data/multiplayer/interiors/custom_woodblocktop.jpg b/data/multiplayer/interiors/custom_woodblocktop.jpg new file mode 100644 index 00000000..67911d69 Binary files /dev/null and b/data/multiplayer/interiors/custom_woodblocktop.jpg differ diff --git a/data/multiplayer/interiors/custom_woodbox.jpg b/data/multiplayer/interiors/custom_woodbox.jpg new file mode 100644 index 00000000..a3b0839a Binary files /dev/null and b/data/multiplayer/interiors/custom_woodbox.jpg differ diff --git a/data/multiplayer/interiors/dirttrimwhite.png b/data/multiplayer/interiors/dirttrimwhite.png new file mode 100644 index 00000000..477a7b08 Binary files /dev/null and b/data/multiplayer/interiors/dirttrimwhite.png differ diff --git a/data/multiplayer/interiors/edge_cool1.jpg b/data/multiplayer/interiors/edge_cool1.jpg new file mode 100644 index 00000000..b6991eba Binary files /dev/null and b/data/multiplayer/interiors/edge_cool1.jpg differ diff --git a/data/multiplayer/interiors/edge_cool2.jpg b/data/multiplayer/interiors/edge_cool2.jpg new file mode 100644 index 00000000..c0a15cb1 Binary files /dev/null and b/data/multiplayer/interiors/edge_cool2.jpg differ diff --git a/data/multiplayer/interiors/edge_neutral1.jpg b/data/multiplayer/interiors/edge_neutral1.jpg new file mode 100644 index 00000000..3fef9854 Binary files /dev/null and b/data/multiplayer/interiors/edge_neutral1.jpg differ diff --git a/data/multiplayer/interiors/edge_neutral2.jpg b/data/multiplayer/interiors/edge_neutral2.jpg new file mode 100644 index 00000000..458f7939 Binary files /dev/null and b/data/multiplayer/interiors/edge_neutral2.jpg differ diff --git a/data/multiplayer/interiors/edge_warm1.jpg b/data/multiplayer/interiors/edge_warm1.jpg new file mode 100644 index 00000000..3519883e Binary files /dev/null and b/data/multiplayer/interiors/edge_warm1.jpg differ diff --git a/data/multiplayer/interiors/edge_warm2.jpg b/data/multiplayer/interiors/edge_warm2.jpg new file mode 100644 index 00000000..d35e4d8a Binary files /dev/null and b/data/multiplayer/interiors/edge_warm2.jpg differ diff --git a/data/multiplayer/interiors/edge_white.jpg b/data/multiplayer/interiors/edge_white.jpg new file mode 100644 index 00000000..624e49cd Binary files /dev/null and b/data/multiplayer/interiors/edge_white.jpg differ diff --git a/data/multiplayer/interiors/edge_white2.jpg b/data/multiplayer/interiors/edge_white2.jpg new file mode 100644 index 00000000..263e7995 Binary files /dev/null and b/data/multiplayer/interiors/edge_white2.jpg differ diff --git a/data/multiplayer/interiors/floor_bounce.jpg b/data/multiplayer/interiors/floor_bounce.jpg new file mode 100644 index 00000000..75f2eb5e Binary files /dev/null and b/data/multiplayer/interiors/floor_bounce.jpg differ diff --git a/data/multiplayer/interiors/friction_high.jpg b/data/multiplayer/interiors/friction_high.jpg new file mode 100644 index 00000000..a2376d76 Binary files /dev/null and b/data/multiplayer/interiors/friction_high.jpg differ diff --git a/data/multiplayer/interiors/friction_low.jpg b/data/multiplayer/interiors/friction_low.jpg new file mode 100644 index 00000000..e3cc333c Binary files /dev/null and b/data/multiplayer/interiors/friction_low.jpg differ diff --git a/data/multiplayer/interiors/friction_mp_high.jpg b/data/multiplayer/interiors/friction_mp_high.jpg new file mode 100644 index 00000000..248c3e6e Binary files /dev/null and b/data/multiplayer/interiors/friction_mp_high.jpg differ diff --git a/data/multiplayer/interiors/friction_mp_high_shadow.jpg b/data/multiplayer/interiors/friction_mp_high_shadow.jpg new file mode 100644 index 00000000..6817ea4e Binary files /dev/null and b/data/multiplayer/interiors/friction_mp_high_shadow.jpg differ diff --git a/data/multiplayer/interiors/friction_none.jpg b/data/multiplayer/interiors/friction_none.jpg new file mode 100644 index 00000000..b6e66e0a Binary files /dev/null and b/data/multiplayer/interiors/friction_none.jpg differ diff --git a/data/multiplayer/interiors/friction_ramp_yellow.jpg b/data/multiplayer/interiors/friction_ramp_yellow.jpg new file mode 100644 index 00000000..583fa02b Binary files /dev/null and b/data/multiplayer/interiors/friction_ramp_yellow.jpg differ diff --git a/data/multiplayer/interiors/granite_tile3.jpg b/data/multiplayer/interiors/granite_tile3.jpg new file mode 100644 index 00000000..c15d5e3b Binary files /dev/null and b/data/multiplayer/interiors/granite_tile3.jpg differ diff --git a/data/multiplayer/interiors/grass.jpg b/data/multiplayer/interiors/grass.jpg new file mode 100644 index 00000000..72a4dc9e Binary files /dev/null and b/data/multiplayer/interiors/grass.jpg differ diff --git a/data/multiplayer/interiors/green.jpg b/data/multiplayer/interiors/green.jpg new file mode 100644 index 00000000..51082fe4 Binary files /dev/null and b/data/multiplayer/interiors/green.jpg differ diff --git a/data/multiplayer/interiors/grid_cool.jpg b/data/multiplayer/interiors/grid_cool.jpg new file mode 100644 index 00000000..7a1e1b23 Binary files /dev/null and b/data/multiplayer/interiors/grid_cool.jpg differ diff --git a/data/multiplayer/interiors/grid_cool2.jpg b/data/multiplayer/interiors/grid_cool2.jpg new file mode 100644 index 00000000..b51ad9e2 Binary files /dev/null and b/data/multiplayer/interiors/grid_cool2.jpg differ diff --git a/data/multiplayer/interiors/grid_cool3.jpg b/data/multiplayer/interiors/grid_cool3.jpg new file mode 100644 index 00000000..5866e1e8 Binary files /dev/null and b/data/multiplayer/interiors/grid_cool3.jpg differ diff --git a/data/multiplayer/interiors/grid_cool4.jpg b/data/multiplayer/interiors/grid_cool4.jpg new file mode 100644 index 00000000..dad10ecc Binary files /dev/null and b/data/multiplayer/interiors/grid_cool4.jpg differ diff --git a/data/multiplayer/interiors/grid_neutral.jpg b/data/multiplayer/interiors/grid_neutral.jpg new file mode 100644 index 00000000..9e16db06 Binary files /dev/null and b/data/multiplayer/interiors/grid_neutral.jpg differ diff --git a/data/multiplayer/interiors/grid_neutral1.jpg b/data/multiplayer/interiors/grid_neutral1.jpg new file mode 100644 index 00000000..9e16db06 Binary files /dev/null and b/data/multiplayer/interiors/grid_neutral1.jpg differ diff --git a/data/multiplayer/interiors/grid_neutral2.jpg b/data/multiplayer/interiors/grid_neutral2.jpg new file mode 100644 index 00000000..b28ea51b Binary files /dev/null and b/data/multiplayer/interiors/grid_neutral2.jpg differ diff --git a/data/multiplayer/interiors/grid_neutral3.jpg b/data/multiplayer/interiors/grid_neutral3.jpg new file mode 100644 index 00000000..44dcefbc Binary files /dev/null and b/data/multiplayer/interiors/grid_neutral3.jpg differ diff --git a/data/multiplayer/interiors/grid_neutral4.jpg b/data/multiplayer/interiors/grid_neutral4.jpg new file mode 100644 index 00000000..2e30a4a6 Binary files /dev/null and b/data/multiplayer/interiors/grid_neutral4.jpg differ diff --git a/data/multiplayer/interiors/grid_new1.jpg b/data/multiplayer/interiors/grid_new1.jpg new file mode 100644 index 00000000..aa8e94fd Binary files /dev/null and b/data/multiplayer/interiors/grid_new1.jpg differ diff --git a/data/multiplayer/interiors/grid_new2.jpg b/data/multiplayer/interiors/grid_new2.jpg new file mode 100644 index 00000000..a3dcaa64 Binary files /dev/null and b/data/multiplayer/interiors/grid_new2.jpg differ diff --git a/data/multiplayer/interiors/grid_new3.jpg b/data/multiplayer/interiors/grid_new3.jpg new file mode 100644 index 00000000..e1914fdf Binary files /dev/null and b/data/multiplayer/interiors/grid_new3.jpg differ diff --git a/data/multiplayer/interiors/grid_new4.jpg b/data/multiplayer/interiors/grid_new4.jpg new file mode 100644 index 00000000..a66d41de Binary files /dev/null and b/data/multiplayer/interiors/grid_new4.jpg differ diff --git a/data/multiplayer/interiors/grid_warm.jpg b/data/multiplayer/interiors/grid_warm.jpg new file mode 100644 index 00000000..7745511a Binary files /dev/null and b/data/multiplayer/interiors/grid_warm.jpg differ diff --git a/data/multiplayer/interiors/grid_warm1.jpg b/data/multiplayer/interiors/grid_warm1.jpg new file mode 100644 index 00000000..aa69bc62 Binary files /dev/null and b/data/multiplayer/interiors/grid_warm1.jpg differ diff --git a/data/multiplayer/interiors/grid_warm2.jpg b/data/multiplayer/interiors/grid_warm2.jpg new file mode 100644 index 00000000..0de2fc34 Binary files /dev/null and b/data/multiplayer/interiors/grid_warm2.jpg differ diff --git a/data/multiplayer/interiors/grid_warm3.jpg b/data/multiplayer/interiors/grid_warm3.jpg new file mode 100644 index 00000000..e1fa6f9f Binary files /dev/null and b/data/multiplayer/interiors/grid_warm3.jpg differ diff --git a/data/multiplayer/interiors/grid_warm4.jpg b/data/multiplayer/interiors/grid_warm4.jpg new file mode 100644 index 00000000..1e6b153a Binary files /dev/null and b/data/multiplayer/interiors/grid_warm4.jpg differ diff --git a/data/multiplayer/interiors/ice1.jpg b/data/multiplayer/interiors/ice1.jpg new file mode 100644 index 00000000..78faf65f Binary files /dev/null and b/data/multiplayer/interiors/ice1.jpg differ diff --git a/data/multiplayer/interiors/intermediate/AllAngles.dif b/data/multiplayer/interiors/intermediate/AllAngles.dif new file mode 100644 index 00000000..002e6437 Binary files /dev/null and b/data/multiplayer/interiors/intermediate/AllAngles.dif differ diff --git a/data/multiplayer/interiors/intermediate/BasicAgilityCourse.dif b/data/multiplayer/interiors/intermediate/BasicAgilityCourse.dif new file mode 100644 index 00000000..a876b2cd Binary files /dev/null and b/data/multiplayer/interiors/intermediate/BasicAgilityCourse.dif differ diff --git a/data/multiplayer/interiors/intermediate/BattlecubeRevisited.dif b/data/multiplayer/interiors/intermediate/BattlecubeRevisited.dif new file mode 100644 index 00000000..c2b56881 Binary files /dev/null and b/data/multiplayer/interiors/intermediate/BattlecubeRevisited.dif differ diff --git a/data/multiplayer/interiors/intermediate/Core.dif b/data/multiplayer/interiors/intermediate/Core.dif new file mode 100644 index 00000000..d9a1d7b9 Binary files /dev/null and b/data/multiplayer/interiors/intermediate/Core.dif differ diff --git a/data/multiplayer/interiors/intermediate/Epicenter.dif b/data/multiplayer/interiors/intermediate/Epicenter.dif new file mode 100644 index 00000000..e0fbc21b Binary files /dev/null and b/data/multiplayer/interiors/intermediate/Epicenter.dif differ diff --git a/data/multiplayer/interiors/intermediate/GemsInTheRoad.dif b/data/multiplayer/interiors/intermediate/GemsInTheRoad.dif new file mode 100644 index 00000000..50c6a66c Binary files /dev/null and b/data/multiplayer/interiors/intermediate/GemsInTheRoad.dif differ diff --git a/data/multiplayer/interiors/intermediate/MarbleItUp.dif b/data/multiplayer/interiors/intermediate/MarbleItUp.dif new file mode 100644 index 00000000..14581b4a Binary files /dev/null and b/data/multiplayer/interiors/intermediate/MarbleItUp.dif differ diff --git a/data/multiplayer/interiors/intermediate/SkateBattleRoyale.dif b/data/multiplayer/interiors/intermediate/SkateBattleRoyale.dif new file mode 100644 index 00000000..9c1fc572 Binary files /dev/null and b/data/multiplayer/interiors/intermediate/SkateBattleRoyale.dif differ diff --git a/data/multiplayer/interiors/intermediate/TiloLeft.dif b/data/multiplayer/interiors/intermediate/TiloLeft.dif new file mode 100644 index 00000000..b0aad9b5 Binary files /dev/null and b/data/multiplayer/interiors/intermediate/TiloLeft.dif differ diff --git a/data/multiplayer/interiors/intermediate/TiloRight.dif b/data/multiplayer/interiors/intermediate/TiloRight.dif new file mode 100644 index 00000000..dd549437 Binary files /dev/null and b/data/multiplayer/interiors/intermediate/TiloRight.dif differ diff --git a/data/multiplayer/interiors/intermediate/VortexEffect.dif b/data/multiplayer/interiors/intermediate/VortexEffect.dif new file mode 100644 index 00000000..09fd072d Binary files /dev/null and b/data/multiplayer/interiors/intermediate/VortexEffect.dif differ diff --git a/data/multiplayer/interiors/intermediate/Ziggurat.dif b/data/multiplayer/interiors/intermediate/Ziggurat.dif new file mode 100644 index 00000000..5035bcf1 Binary files /dev/null and b/data/multiplayer/interiors/intermediate/Ziggurat.dif differ diff --git a/data/multiplayer/interiors/intermediate/meltdown.dif b/data/multiplayer/interiors/intermediate/meltdown.dif new file mode 100644 index 00000000..17613be7 Binary files /dev/null and b/data/multiplayer/interiors/intermediate/meltdown.dif differ diff --git a/data/multiplayer/interiors/mbp_blue_rope.jpg b/data/multiplayer/interiors/mbp_blue_rope.jpg new file mode 100644 index 00000000..38d6d91f Binary files /dev/null and b/data/multiplayer/interiors/mbp_blue_rope.jpg differ diff --git a/data/multiplayer/interiors/mbp_chevron_friction.jpg b/data/multiplayer/interiors/mbp_chevron_friction.jpg new file mode 100644 index 00000000..3a790f73 Binary files /dev/null and b/data/multiplayer/interiors/mbp_chevron_friction.jpg differ diff --git a/data/multiplayer/interiors/mbp_chevron_friction2.jpg b/data/multiplayer/interiors/mbp_chevron_friction2.jpg new file mode 100644 index 00000000..84c8acc8 Binary files /dev/null and b/data/multiplayer/interiors/mbp_chevron_friction2.jpg differ diff --git a/data/multiplayer/interiors/mbp_chevron_friction3.jpg b/data/multiplayer/interiors/mbp_chevron_friction3.jpg new file mode 100644 index 00000000..d498d764 Binary files /dev/null and b/data/multiplayer/interiors/mbp_chevron_friction3.jpg differ diff --git a/data/multiplayer/interiors/mbp_chevron_neutral.jpg b/data/multiplayer/interiors/mbp_chevron_neutral.jpg new file mode 100644 index 00000000..960a2695 Binary files /dev/null and b/data/multiplayer/interiors/mbp_chevron_neutral.jpg differ diff --git a/data/multiplayer/interiors/mbp_chevron_neutral1.jpg b/data/multiplayer/interiors/mbp_chevron_neutral1.jpg new file mode 100644 index 00000000..c09cf342 Binary files /dev/null and b/data/multiplayer/interiors/mbp_chevron_neutral1.jpg differ diff --git a/data/multiplayer/interiors/mbp_chevron_neutral2.jpg b/data/multiplayer/interiors/mbp_chevron_neutral2.jpg new file mode 100644 index 00000000..3d145ad3 Binary files /dev/null and b/data/multiplayer/interiors/mbp_chevron_neutral2.jpg differ diff --git a/data/multiplayer/interiors/mbp_chevron_neutral3.jpg b/data/multiplayer/interiors/mbp_chevron_neutral3.jpg new file mode 100644 index 00000000..347bfc31 Binary files /dev/null and b/data/multiplayer/interiors/mbp_chevron_neutral3.jpg differ diff --git a/data/multiplayer/interiors/mbp_chevron_neutral4.jpg b/data/multiplayer/interiors/mbp_chevron_neutral4.jpg new file mode 100644 index 00000000..2343fb2c Binary files /dev/null and b/data/multiplayer/interiors/mbp_chevron_neutral4.jpg differ diff --git a/data/multiplayer/interiors/mbp_grid_black.jpg b/data/multiplayer/interiors/mbp_grid_black.jpg new file mode 100644 index 00000000..d8cb6b09 Binary files /dev/null and b/data/multiplayer/interiors/mbp_grid_black.jpg differ diff --git a/data/multiplayer/interiors/mbp_grid_blue1.jpg b/data/multiplayer/interiors/mbp_grid_blue1.jpg new file mode 100644 index 00000000..2daccd5a Binary files /dev/null and b/data/multiplayer/interiors/mbp_grid_blue1.jpg differ diff --git a/data/multiplayer/interiors/mbp_grid_white.jpg b/data/multiplayer/interiors/mbp_grid_white.jpg new file mode 100644 index 00000000..0fefb4be Binary files /dev/null and b/data/multiplayer/interiors/mbp_grid_white.jpg differ diff --git a/data/multiplayer/interiors/mbp_hot2.jpg b/data/multiplayer/interiors/mbp_hot2.jpg new file mode 100644 index 00000000..f3768e25 Binary files /dev/null and b/data/multiplayer/interiors/mbp_hot2.jpg differ diff --git a/data/multiplayer/interiors/mbp_hot3.jpg b/data/multiplayer/interiors/mbp_hot3.jpg new file mode 100644 index 00000000..2eee8083 Binary files /dev/null and b/data/multiplayer/interiors/mbp_hot3.jpg differ diff --git a/data/multiplayer/interiors/mbp_hot4.jpg b/data/multiplayer/interiors/mbp_hot4.jpg new file mode 100644 index 00000000..e7659bba Binary files /dev/null and b/data/multiplayer/interiors/mbp_hot4.jpg differ diff --git a/data/multiplayer/interiors/mbp_hot5.jpg b/data/multiplayer/interiors/mbp_hot5.jpg new file mode 100644 index 00000000..48123a8d Binary files /dev/null and b/data/multiplayer/interiors/mbp_hot5.jpg differ diff --git a/data/multiplayer/interiors/mbp_hot6.jpg b/data/multiplayer/interiors/mbp_hot6.jpg new file mode 100644 index 00000000..259f5f7e Binary files /dev/null and b/data/multiplayer/interiors/mbp_hot6.jpg differ diff --git a/data/multiplayer/interiors/mbp_hot7.jpg b/data/multiplayer/interiors/mbp_hot7.jpg new file mode 100644 index 00000000..656ddfa7 Binary files /dev/null and b/data/multiplayer/interiors/mbp_hot7.jpg differ diff --git a/data/multiplayer/interiors/mbp_hot_apex.jpg b/data/multiplayer/interiors/mbp_hot_apex.jpg new file mode 100644 index 00000000..c6777315 Binary files /dev/null and b/data/multiplayer/interiors/mbp_hot_apex.jpg differ diff --git a/data/multiplayer/interiors/mbp_multi.jpg b/data/multiplayer/interiors/mbp_multi.jpg new file mode 100644 index 00000000..8e81ebf4 Binary files /dev/null and b/data/multiplayer/interiors/mbp_multi.jpg differ diff --git a/data/multiplayer/interiors/mbp_multi1.jpg b/data/multiplayer/interiors/mbp_multi1.jpg new file mode 100644 index 00000000..23c4f096 Binary files /dev/null and b/data/multiplayer/interiors/mbp_multi1.jpg differ diff --git a/data/multiplayer/interiors/mbp_multi2.jpg b/data/multiplayer/interiors/mbp_multi2.jpg new file mode 100644 index 00000000..10465810 Binary files /dev/null and b/data/multiplayer/interiors/mbp_multi2.jpg differ diff --git a/data/multiplayer/interiors/mbp_neon1.jpg b/data/multiplayer/interiors/mbp_neon1.jpg new file mode 100644 index 00000000..0499c9ad Binary files /dev/null and b/data/multiplayer/interiors/mbp_neon1.jpg differ diff --git a/data/multiplayer/interiors/mbp_neon2.jpg b/data/multiplayer/interiors/mbp_neon2.jpg new file mode 100644 index 00000000..b43dfffa Binary files /dev/null and b/data/multiplayer/interiors/mbp_neon2.jpg differ diff --git a/data/multiplayer/interiors/mbp_neon3.jpg b/data/multiplayer/interiors/mbp_neon3.jpg new file mode 100644 index 00000000..2da065c8 Binary files /dev/null and b/data/multiplayer/interiors/mbp_neon3.jpg differ diff --git a/data/multiplayer/interiors/mbp_rock.jpg b/data/multiplayer/interiors/mbp_rock.jpg new file mode 100644 index 00000000..8fc26649 Binary files /dev/null and b/data/multiplayer/interiors/mbp_rock.jpg differ diff --git a/data/multiplayer/interiors/mbp_tri.jpg b/data/multiplayer/interiors/mbp_tri.jpg new file mode 100644 index 00000000..bf9adad1 Binary files /dev/null and b/data/multiplayer/interiors/mbp_tri.jpg differ diff --git a/data/multiplayer/interiors/mbp_wall_blue.jpg b/data/multiplayer/interiors/mbp_wall_blue.jpg new file mode 100644 index 00000000..2cd26a8b Binary files /dev/null and b/data/multiplayer/interiors/mbp_wall_blue.jpg differ diff --git a/data/multiplayer/interiors/mbp_wall_brown.jpg b/data/multiplayer/interiors/mbp_wall_brown.jpg new file mode 100644 index 00000000..2c68aae8 Binary files /dev/null and b/data/multiplayer/interiors/mbp_wall_brown.jpg differ diff --git a/data/multiplayer/interiors/mbp_wall_dark.jpg b/data/multiplayer/interiors/mbp_wall_dark.jpg new file mode 100644 index 00000000..94f38124 Binary files /dev/null and b/data/multiplayer/interiors/mbp_wall_dark.jpg differ diff --git a/data/multiplayer/interiors/mbp_wall_green.jpg b/data/multiplayer/interiors/mbp_wall_green.jpg new file mode 100644 index 00000000..d61531ac Binary files /dev/null and b/data/multiplayer/interiors/mbp_wall_green.jpg differ diff --git a/data/multiplayer/interiors/mbp_wall_orange.jpg b/data/multiplayer/interiors/mbp_wall_orange.jpg new file mode 100644 index 00000000..13479cb3 Binary files /dev/null and b/data/multiplayer/interiors/mbp_wall_orange.jpg differ diff --git a/data/multiplayer/interiors/mbp_wall_pink.jpg b/data/multiplayer/interiors/mbp_wall_pink.jpg new file mode 100644 index 00000000..8f6dd4b2 Binary files /dev/null and b/data/multiplayer/interiors/mbp_wall_pink.jpg differ diff --git a/data/multiplayer/interiors/mbp_wall_purple.jpg b/data/multiplayer/interiors/mbp_wall_purple.jpg new file mode 100644 index 00000000..2b7fcf6a Binary files /dev/null and b/data/multiplayer/interiors/mbp_wall_purple.jpg differ diff --git a/data/multiplayer/interiors/mbp_wall_red.jpg b/data/multiplayer/interiors/mbp_wall_red.jpg new file mode 100644 index 00000000..ef106434 Binary files /dev/null and b/data/multiplayer/interiors/mbp_wall_red.jpg differ diff --git a/data/multiplayer/interiors/mbp_wall_white.jpg b/data/multiplayer/interiors/mbp_wall_white.jpg new file mode 100644 index 00000000..971e8593 Binary files /dev/null and b/data/multiplayer/interiors/mbp_wall_white.jpg differ diff --git a/data/multiplayer/interiors/mbp_wall_yellow.jpg b/data/multiplayer/interiors/mbp_wall_yellow.jpg new file mode 100644 index 00000000..700e3d9e Binary files /dev/null and b/data/multiplayer/interiors/mbp_wall_yellow.jpg differ diff --git a/data/multiplayer/interiors/mbu/AllAngles.dif b/data/multiplayer/interiors/mbu/AllAngles.dif new file mode 100644 index 00000000..b436a35b Binary files /dev/null and b/data/multiplayer/interiors/mbu/AllAngles.dif differ diff --git a/data/multiplayer/interiors/mbu/Battlecube.dif b/data/multiplayer/interiors/mbu/Battlecube.dif new file mode 100644 index 00000000..6670c79e Binary files /dev/null and b/data/multiplayer/interiors/mbu/Battlecube.dif differ diff --git a/data/multiplayer/interiors/mbu/BattlecubeRevisited.dif b/data/multiplayer/interiors/mbu/BattlecubeRevisited.dif new file mode 100644 index 00000000..f46d4257 Binary files /dev/null and b/data/multiplayer/interiors/mbu/BattlecubeRevisited.dif differ diff --git a/data/multiplayer/interiors/mbu/BlastClub.dif b/data/multiplayer/interiors/mbu/BlastClub.dif new file mode 100644 index 00000000..0ee7cc5a Binary files /dev/null and b/data/multiplayer/interiors/mbu/BlastClub.dif differ diff --git a/data/multiplayer/interiors/mbu/Bowl.dif b/data/multiplayer/interiors/mbu/Bowl.dif new file mode 100644 index 00000000..4d96c992 Binary files /dev/null and b/data/multiplayer/interiors/mbu/Bowl.dif differ diff --git a/data/multiplayer/interiors/mbu/BowlOuterRing.dif b/data/multiplayer/interiors/mbu/BowlOuterRing.dif new file mode 100644 index 00000000..2d0fa27c Binary files /dev/null and b/data/multiplayer/interiors/mbu/BowlOuterRing.dif differ diff --git a/data/multiplayer/interiors/mbu/Concentric.dif b/data/multiplayer/interiors/mbu/Concentric.dif new file mode 100644 index 00000000..3e425a41 Binary files /dev/null and b/data/multiplayer/interiors/mbu/Concentric.dif differ diff --git a/data/multiplayer/interiors/mbu/Core.dif b/data/multiplayer/interiors/mbu/Core.dif new file mode 100644 index 00000000..de21d329 Binary files /dev/null and b/data/multiplayer/interiors/mbu/Core.dif differ diff --git a/data/multiplayer/interiors/mbu/Epicenter.dif b/data/multiplayer/interiors/mbu/Epicenter.dif new file mode 100644 index 00000000..34c6d258 Binary files /dev/null and b/data/multiplayer/interiors/mbu/Epicenter.dif differ diff --git a/data/multiplayer/interiors/mbu/GemsInTheRoad.dif b/data/multiplayer/interiors/mbu/GemsInTheRoad.dif new file mode 100644 index 00000000..9f6bce89 Binary files /dev/null and b/data/multiplayer/interiors/mbu/GemsInTheRoad.dif differ diff --git a/data/multiplayer/interiors/mbu/GoodToBeKing.dif b/data/multiplayer/interiors/mbu/GoodToBeKing.dif new file mode 100644 index 00000000..12aa12e7 Binary files /dev/null and b/data/multiplayer/interiors/mbu/GoodToBeKing.dif differ diff --git a/data/multiplayer/interiors/mbu/Horizon.dif b/data/multiplayer/interiors/mbu/Horizon.dif new file mode 100644 index 00000000..d50be15f Binary files /dev/null and b/data/multiplayer/interiors/mbu/Horizon.dif differ diff --git a/data/multiplayer/interiors/mbu/KingOfTheMarble.dif b/data/multiplayer/interiors/mbu/KingOfTheMarble.dif new file mode 100644 index 00000000..8755ca09 Binary files /dev/null and b/data/multiplayer/interiors/mbu/KingOfTheMarble.dif differ diff --git a/data/multiplayer/interiors/mbu/KingOfTheRing.dif b/data/multiplayer/interiors/mbu/KingOfTheRing.dif new file mode 100644 index 00000000..d7796bd1 Binary files /dev/null and b/data/multiplayer/interiors/mbu/KingOfTheRing.dif differ diff --git a/data/multiplayer/interiors/mbu/MarbleCity.dif b/data/multiplayer/interiors/mbu/MarbleCity.dif new file mode 100644 index 00000000..6884d93b Binary files /dev/null and b/data/multiplayer/interiors/mbu/MarbleCity.dif differ diff --git a/data/multiplayer/interiors/mbu/MarbleItUp.dif b/data/multiplayer/interiors/mbu/MarbleItUp.dif new file mode 100644 index 00000000..00465048 Binary files /dev/null and b/data/multiplayer/interiors/mbu/MarbleItUp.dif differ diff --git a/data/multiplayer/interiors/mbu/Megas.dif b/data/multiplayer/interiors/mbu/Megas.dif new file mode 100644 index 00000000..9c41703f Binary files /dev/null and b/data/multiplayer/interiors/mbu/Megas.dif differ diff --git a/data/multiplayer/interiors/mbu/Playground.dif b/data/multiplayer/interiors/mbu/Playground.dif new file mode 100644 index 00000000..a3332a15 Binary files /dev/null and b/data/multiplayer/interiors/mbu/Playground.dif differ diff --git a/data/multiplayer/interiors/mbu/Promontory1a.dif b/data/multiplayer/interiors/mbu/Promontory1a.dif new file mode 100644 index 00000000..df385929 Binary files /dev/null and b/data/multiplayer/interiors/mbu/Promontory1a.dif differ diff --git a/data/multiplayer/interiors/mbu/Promontory1b.dif b/data/multiplayer/interiors/mbu/Promontory1b.dif new file mode 100644 index 00000000..643277fd Binary files /dev/null and b/data/multiplayer/interiors/mbu/Promontory1b.dif differ diff --git a/data/multiplayer/interiors/mbu/Promontory2.dif b/data/multiplayer/interiors/mbu/Promontory2.dif new file mode 100644 index 00000000..f6d3e530 Binary files /dev/null and b/data/multiplayer/interiors/mbu/Promontory2.dif differ diff --git a/data/multiplayer/interiors/mbu/SkateBattleRoyale.dif b/data/multiplayer/interiors/mbu/SkateBattleRoyale.dif new file mode 100644 index 00000000..7004a008 Binary files /dev/null and b/data/multiplayer/interiors/mbu/SkateBattleRoyale.dif differ diff --git a/data/multiplayer/interiors/mbu/SkateBattleRoyale_climb.dif b/data/multiplayer/interiors/mbu/SkateBattleRoyale_climb.dif new file mode 100644 index 00000000..9faf58ac Binary files /dev/null and b/data/multiplayer/interiors/mbu/SkateBattleRoyale_climb.dif differ diff --git a/data/multiplayer/interiors/mbu/SkateBattleRoyale_corner1.dif b/data/multiplayer/interiors/mbu/SkateBattleRoyale_corner1.dif new file mode 100644 index 00000000..ec3627e1 Binary files /dev/null and b/data/multiplayer/interiors/mbu/SkateBattleRoyale_corner1.dif differ diff --git a/data/multiplayer/interiors/mbu/SkateBattleRoyale_corner2.dif b/data/multiplayer/interiors/mbu/SkateBattleRoyale_corner2.dif new file mode 100644 index 00000000..90ccbe54 Binary files /dev/null and b/data/multiplayer/interiors/mbu/SkateBattleRoyale_corner2.dif differ diff --git a/data/multiplayer/interiors/mbu/SkateBattleRoyale_pipe.dif b/data/multiplayer/interiors/mbu/SkateBattleRoyale_pipe.dif new file mode 100644 index 00000000..a46889c6 Binary files /dev/null and b/data/multiplayer/interiors/mbu/SkateBattleRoyale_pipe.dif differ diff --git a/data/multiplayer/interiors/mbu/Spires.dif b/data/multiplayer/interiors/mbu/Spires.dif new file mode 100644 index 00000000..90b39340 Binary files /dev/null and b/data/multiplayer/interiors/mbu/Spires.dif differ diff --git a/data/multiplayer/interiors/mbu/Sprawl.dif b/data/multiplayer/interiors/mbu/Sprawl.dif new file mode 100644 index 00000000..b621431b Binary files /dev/null and b/data/multiplayer/interiors/mbu/Sprawl.dif differ diff --git a/data/multiplayer/interiors/mbu/Triumvirate.dif b/data/multiplayer/interiors/mbu/Triumvirate.dif new file mode 100644 index 00000000..f1a3e6e0 Binary files /dev/null and b/data/multiplayer/interiors/mbu/Triumvirate.dif differ diff --git a/data/multiplayer/interiors/mbu/VortexEffect.dif b/data/multiplayer/interiors/mbu/VortexEffect.dif new file mode 100644 index 00000000..0486dfde Binary files /dev/null and b/data/multiplayer/interiors/mbu/VortexEffect.dif differ diff --git a/data/multiplayer/interiors/mbu/Zenith.dif b/data/multiplayer/interiors/mbu/Zenith.dif new file mode 100644 index 00000000..0e8480a1 Binary files /dev/null and b/data/multiplayer/interiors/mbu/Zenith.dif differ diff --git a/data/multiplayer/interiors/mbu/Ziggurat.dif b/data/multiplayer/interiors/mbu/Ziggurat.dif new file mode 100644 index 00000000..5d493481 Binary files /dev/null and b/data/multiplayer/interiors/mbu/Ziggurat.dif differ diff --git a/data/multiplayer/interiors/mbu/beam.png b/data/multiplayer/interiors/mbu/beam.png new file mode 100644 index 00000000..112c5932 Binary files /dev/null and b/data/multiplayer/interiors/mbu/beam.png differ diff --git a/data/multiplayer/interiors/mbu/beam_side.png b/data/multiplayer/interiors/mbu/beam_side.png new file mode 100644 index 00000000..d6722245 Binary files /dev/null and b/data/multiplayer/interiors/mbu/beam_side.png differ diff --git a/data/multiplayer/interiors/mbu/edge_white.jpg b/data/multiplayer/interiors/mbu/edge_white.jpg new file mode 100644 index 00000000..8cd8f91b Binary files /dev/null and b/data/multiplayer/interiors/mbu/edge_white.jpg differ diff --git a/data/multiplayer/interiors/mbu/edge_white_shadow.png b/data/multiplayer/interiors/mbu/edge_white_shadow.png new file mode 100644 index 00000000..e5d9dec5 Binary files /dev/null and b/data/multiplayer/interiors/mbu/edge_white_shadow.png differ diff --git a/data/multiplayer/interiors/mbu/friction_high.png b/data/multiplayer/interiors/mbu/friction_high.png new file mode 100644 index 00000000..bfbe46a0 Binary files /dev/null and b/data/multiplayer/interiors/mbu/friction_high.png differ diff --git a/data/multiplayer/interiors/mbu/friction_high_shadow.png b/data/multiplayer/interiors/mbu/friction_high_shadow.png new file mode 100644 index 00000000..9cd2e7ac Binary files /dev/null and b/data/multiplayer/interiors/mbu/friction_high_shadow.png differ diff --git a/data/multiplayer/interiors/mbu/friction_low.jpg b/data/multiplayer/interiors/mbu/friction_low.jpg new file mode 100644 index 00000000..ba711fe3 Binary files /dev/null and b/data/multiplayer/interiors/mbu/friction_low.jpg differ diff --git a/data/multiplayer/interiors/mbu/friction_low_shadow.png b/data/multiplayer/interiors/mbu/friction_low_shadow.png new file mode 100644 index 00000000..8ed4affa Binary files /dev/null and b/data/multiplayer/interiors/mbu/friction_low_shadow.png differ diff --git a/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif b/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif new file mode 100644 index 00000000..27a5acba Binary files /dev/null and b/data/multiplayer/interiors/mbu/intermediate_gentleslope.dif differ diff --git a/data/multiplayer/interiors/mbu/intermediate_tight_curve.dif b/data/multiplayer/interiors/mbu/intermediate_tight_curve.dif new file mode 100644 index 00000000..b7162004 Binary files /dev/null and b/data/multiplayer/interiors/mbu/intermediate_tight_curve.dif differ diff --git a/data/multiplayer/interiors/mbu/intermediate_wide_curve.dif b/data/multiplayer/interiors/mbu/intermediate_wide_curve.dif new file mode 100644 index 00000000..865e2ce4 Binary files /dev/null and b/data/multiplayer/interiors/mbu/intermediate_wide_curve.dif differ diff --git a/data/multiplayer/interiors/mbu/plate_1.jpg b/data/multiplayer/interiors/mbu/plate_1.jpg new file mode 100644 index 00000000..1d00ade5 Binary files /dev/null and b/data/multiplayer/interiors/mbu/plate_1.jpg differ diff --git a/data/multiplayer/interiors/mbu/stripe_caution.png b/data/multiplayer/interiors/mbu/stripe_caution.png new file mode 100644 index 00000000..d6d12447 Binary files /dev/null and b/data/multiplayer/interiors/mbu/stripe_caution.png differ diff --git a/data/multiplayer/interiors/mbu/tile_advanced.jpg b/data/multiplayer/interiors/mbu/tile_advanced.jpg new file mode 100644 index 00000000..c9dc27a5 Binary files /dev/null and b/data/multiplayer/interiors/mbu/tile_advanced.jpg differ diff --git a/data/multiplayer/interiors/mbu/tile_advanced_blue.jpg b/data/multiplayer/interiors/mbu/tile_advanced_blue.jpg new file mode 100644 index 00000000..44d93563 Binary files /dev/null and b/data/multiplayer/interiors/mbu/tile_advanced_blue.jpg differ diff --git a/data/multiplayer/interiors/mbu/tile_advanced_blue_shadow.png b/data/multiplayer/interiors/mbu/tile_advanced_blue_shadow.png new file mode 100644 index 00000000..dd3acee1 Binary files /dev/null and b/data/multiplayer/interiors/mbu/tile_advanced_blue_shadow.png differ diff --git a/data/multiplayer/interiors/mbu/tile_advanced_green.jpg b/data/multiplayer/interiors/mbu/tile_advanced_green.jpg new file mode 100644 index 00000000..9f390ba1 Binary files /dev/null and b/data/multiplayer/interiors/mbu/tile_advanced_green.jpg differ diff --git a/data/multiplayer/interiors/mbu/tile_advanced_green_shadow.png b/data/multiplayer/interiors/mbu/tile_advanced_green_shadow.png new file mode 100644 index 00000000..9f9c2fc3 Binary files /dev/null and b/data/multiplayer/interiors/mbu/tile_advanced_green_shadow.png differ diff --git a/data/multiplayer/interiors/mbu/tile_advanced_shadow.jpg b/data/multiplayer/interiors/mbu/tile_advanced_shadow.jpg new file mode 100644 index 00000000..9a97e889 Binary files /dev/null and b/data/multiplayer/interiors/mbu/tile_advanced_shadow.jpg differ diff --git a/data/multiplayer/interiors/mbu/tile_beginner.png b/data/multiplayer/interiors/mbu/tile_beginner.png new file mode 100644 index 00000000..7d070e98 Binary files /dev/null and b/data/multiplayer/interiors/mbu/tile_beginner.png differ diff --git a/data/multiplayer/interiors/mbu/tile_beginner_blue.jpg b/data/multiplayer/interiors/mbu/tile_beginner_blue.jpg new file mode 100644 index 00000000..7216244c Binary files /dev/null and b/data/multiplayer/interiors/mbu/tile_beginner_blue.jpg differ diff --git a/data/multiplayer/interiors/mbu/tile_beginner_blue_shadow.png b/data/multiplayer/interiors/mbu/tile_beginner_blue_shadow.png new file mode 100644 index 00000000..6af3490e Binary files /dev/null and b/data/multiplayer/interiors/mbu/tile_beginner_blue_shadow.png differ diff --git a/data/multiplayer/interiors/mbu/tile_beginner_red.jpg b/data/multiplayer/interiors/mbu/tile_beginner_red.jpg new file mode 100644 index 00000000..06f2bc14 Binary files /dev/null and b/data/multiplayer/interiors/mbu/tile_beginner_red.jpg differ diff --git a/data/multiplayer/interiors/mbu/tile_beginner_red_shadow.png b/data/multiplayer/interiors/mbu/tile_beginner_red_shadow.png new file mode 100644 index 00000000..17123d91 Binary files /dev/null and b/data/multiplayer/interiors/mbu/tile_beginner_red_shadow.png differ diff --git a/data/multiplayer/interiors/mbu/tile_beginner_shadow.png b/data/multiplayer/interiors/mbu/tile_beginner_shadow.png new file mode 100644 index 00000000..b5d0b5ec Binary files /dev/null and b/data/multiplayer/interiors/mbu/tile_beginner_shadow.png differ diff --git a/data/multiplayer/interiors/mbu/tile_intermediate.jpg b/data/multiplayer/interiors/mbu/tile_intermediate.jpg new file mode 100644 index 00000000..170bf5f6 Binary files /dev/null and b/data/multiplayer/interiors/mbu/tile_intermediate.jpg differ diff --git a/data/multiplayer/interiors/mbu/tile_intermediate_green.jpg b/data/multiplayer/interiors/mbu/tile_intermediate_green.jpg new file mode 100644 index 00000000..d3b0c4ac Binary files /dev/null and b/data/multiplayer/interiors/mbu/tile_intermediate_green.jpg differ diff --git a/data/multiplayer/interiors/mbu/tile_intermediate_green_shadow.png b/data/multiplayer/interiors/mbu/tile_intermediate_green_shadow.png new file mode 100644 index 00000000..7771840d Binary files /dev/null and b/data/multiplayer/interiors/mbu/tile_intermediate_green_shadow.png differ diff --git a/data/multiplayer/interiors/mbu/tile_intermediate_red.jpg b/data/multiplayer/interiors/mbu/tile_intermediate_red.jpg new file mode 100644 index 00000000..8317e672 Binary files /dev/null and b/data/multiplayer/interiors/mbu/tile_intermediate_red.jpg differ diff --git a/data/multiplayer/interiors/mbu/tile_intermediate_red_shadow.png b/data/multiplayer/interiors/mbu/tile_intermediate_red_shadow.png new file mode 100644 index 00000000..ec97ebd1 Binary files /dev/null and b/data/multiplayer/interiors/mbu/tile_intermediate_red_shadow.png differ diff --git a/data/multiplayer/interiors/mbu/tile_intermediate_shadow.png b/data/multiplayer/interiors/mbu/tile_intermediate_shadow.png new file mode 100644 index 00000000..02b92b34 Binary files /dev/null and b/data/multiplayer/interiors/mbu/tile_intermediate_shadow.png differ diff --git a/data/multiplayer/interiors/mbu/tile_underside.jpg b/data/multiplayer/interiors/mbu/tile_underside.jpg new file mode 100644 index 00000000..7891a03a Binary files /dev/null and b/data/multiplayer/interiors/mbu/tile_underside.jpg differ diff --git a/data/multiplayer/interiors/mbu/wall_beginner.png b/data/multiplayer/interiors/mbu/wall_beginner.png new file mode 100644 index 00000000..afbd9b10 Binary files /dev/null and b/data/multiplayer/interiors/mbu/wall_beginner.png differ diff --git a/data/multiplayer/interiors/mbu/wall_brown.png b/data/multiplayer/interiors/mbu/wall_brown.png new file mode 100644 index 00000000..afbd9b10 Binary files /dev/null and b/data/multiplayer/interiors/mbu/wall_brown.png differ diff --git a/data/multiplayer/interiors/mbu_edge_white.jpg b/data/multiplayer/interiors/mbu_edge_white.jpg new file mode 100644 index 00000000..6c35d655 Binary files /dev/null and b/data/multiplayer/interiors/mbu_edge_white.jpg differ diff --git a/data/multiplayer/interiors/mbu_edge_white2.jpg b/data/multiplayer/interiors/mbu_edge_white2.jpg new file mode 100644 index 00000000..afb67039 Binary files /dev/null and b/data/multiplayer/interiors/mbu_edge_white2.jpg differ diff --git a/data/multiplayer/interiors/mbu_edge_white2_large.jpg b/data/multiplayer/interiors/mbu_edge_white2_large.jpg new file mode 100644 index 00000000..d73c49ff Binary files /dev/null and b/data/multiplayer/interiors/mbu_edge_white2_large.jpg differ diff --git a/data/multiplayer/interiors/mbu_edge_white2_large_shadow.jpg b/data/multiplayer/interiors/mbu_edge_white2_large_shadow.jpg new file mode 100644 index 00000000..8cd23923 Binary files /dev/null and b/data/multiplayer/interiors/mbu_edge_white2_large_shadow.jpg differ diff --git a/data/multiplayer/interiors/mbu_edge_white2_small.jpg b/data/multiplayer/interiors/mbu_edge_white2_small.jpg new file mode 100644 index 00000000..e2511f5c Binary files /dev/null and b/data/multiplayer/interiors/mbu_edge_white2_small.jpg differ diff --git a/data/multiplayer/interiors/mbu_edge_white_large.jpg b/data/multiplayer/interiors/mbu_edge_white_large.jpg new file mode 100644 index 00000000..f0b37551 Binary files /dev/null and b/data/multiplayer/interiors/mbu_edge_white_large.jpg differ diff --git a/data/multiplayer/interiors/mbu_edge_white_large_shadow.jpg b/data/multiplayer/interiors/mbu_edge_white_large_shadow.jpg new file mode 100644 index 00000000..ac331258 Binary files /dev/null and b/data/multiplayer/interiors/mbu_edge_white_large_shadow.jpg differ diff --git a/data/multiplayer/interiors/mbu_edge_white_small.jpg b/data/multiplayer/interiors/mbu_edge_white_small.jpg new file mode 100644 index 00000000..0f967476 Binary files /dev/null and b/data/multiplayer/interiors/mbu_edge_white_small.jpg differ diff --git a/data/multiplayer/interiors/mbu_glass.jpg b/data/multiplayer/interiors/mbu_glass.jpg new file mode 100644 index 00000000..9ebed63e Binary files /dev/null and b/data/multiplayer/interiors/mbu_glass.jpg differ diff --git a/data/multiplayer/interiors/mbu_grid_blue1.jpg b/data/multiplayer/interiors/mbu_grid_blue1.jpg new file mode 100644 index 00000000..de571894 Binary files /dev/null and b/data/multiplayer/interiors/mbu_grid_blue1.jpg differ diff --git a/data/multiplayer/interiors/mbu_grid_cool1.jpg b/data/multiplayer/interiors/mbu_grid_cool1.jpg new file mode 100644 index 00000000..b7a523e9 Binary files /dev/null and b/data/multiplayer/interiors/mbu_grid_cool1.jpg differ diff --git a/data/multiplayer/interiors/mbu_grid_green1.jpg b/data/multiplayer/interiors/mbu_grid_green1.jpg new file mode 100644 index 00000000..892626ed Binary files /dev/null and b/data/multiplayer/interiors/mbu_grid_green1.jpg differ diff --git a/data/multiplayer/interiors/mbu_grid_green2.jpg b/data/multiplayer/interiors/mbu_grid_green2.jpg new file mode 100644 index 00000000..be16d51e Binary files /dev/null and b/data/multiplayer/interiors/mbu_grid_green2.jpg differ diff --git a/data/multiplayer/interiors/mbu_grid_hot1.jpg b/data/multiplayer/interiors/mbu_grid_hot1.jpg new file mode 100644 index 00000000..c33cf40d Binary files /dev/null and b/data/multiplayer/interiors/mbu_grid_hot1.jpg differ diff --git a/data/multiplayer/interiors/mbu_grid_neutral1.jpg b/data/multiplayer/interiors/mbu_grid_neutral1.jpg new file mode 100644 index 00000000..7ff3fbd3 Binary files /dev/null and b/data/multiplayer/interiors/mbu_grid_neutral1.jpg differ diff --git a/data/multiplayer/interiors/mbu_grid_warm5.jpg b/data/multiplayer/interiors/mbu_grid_warm5.jpg new file mode 100644 index 00000000..624f67e1 Binary files /dev/null and b/data/multiplayer/interiors/mbu_grid_warm5.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral.jpg b/data/multiplayer/interiors/mbu_neutral.jpg new file mode 100644 index 00000000..32f0501a Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral10_dark.jpg b/data/multiplayer/interiors/mbu_neutral10_dark.jpg new file mode 100644 index 00000000..49ebbd8a Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral10_dark.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral10_dark_small.jpg b/data/multiplayer/interiors/mbu_neutral10_dark_small.jpg new file mode 100644 index 00000000..2c805c63 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral10_dark_small.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral10_light.jpg b/data/multiplayer/interiors/mbu_neutral10_light.jpg new file mode 100644 index 00000000..35a943d9 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral10_light.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral10_light_small.jpg b/data/multiplayer/interiors/mbu_neutral10_light_small.jpg new file mode 100644 index 00000000..aeb71ea8 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral10_light_small.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral10_med.jpg b/data/multiplayer/interiors/mbu_neutral10_med.jpg new file mode 100644 index 00000000..17d6aced Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral10_med.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral10_med_small.jpg b/data/multiplayer/interiors/mbu_neutral10_med_small.jpg new file mode 100644 index 00000000..ea4a27f6 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral10_med_small.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral10_random.jpg b/data/multiplayer/interiors/mbu_neutral10_random.jpg new file mode 100644 index 00000000..d35dc660 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral10_random.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral10_random_2.jpg b/data/multiplayer/interiors/mbu_neutral10_random_2.jpg new file mode 100644 index 00000000..32e79728 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral10_random_2.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral10_random_2_small.jpg b/data/multiplayer/interiors/mbu_neutral10_random_2_small.jpg new file mode 100644 index 00000000..8ecd5aac Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral10_random_2_small.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral10_random_small.jpg b/data/multiplayer/interiors/mbu_neutral10_random_small.jpg new file mode 100644 index 00000000..5d01f098 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral10_random_small.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral10_tile.jpg b/data/multiplayer/interiors/mbu_neutral10_tile.jpg new file mode 100644 index 00000000..17d6aced Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral10_tile.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral11_dark.jpg b/data/multiplayer/interiors/mbu_neutral11_dark.jpg new file mode 100644 index 00000000..98628331 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral11_dark.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral11_light.jpg b/data/multiplayer/interiors/mbu_neutral11_light.jpg new file mode 100644 index 00000000..7694ab5c Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral11_light.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral11_med.jpg b/data/multiplayer/interiors/mbu_neutral11_med.jpg new file mode 100644 index 00000000..1c63aa66 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral11_med.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral11_random.jpg b/data/multiplayer/interiors/mbu_neutral11_random.jpg new file mode 100644 index 00000000..9174967d Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral11_random.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral11_random_2.jpg b/data/multiplayer/interiors/mbu_neutral11_random_2.jpg new file mode 100644 index 00000000..8370203c Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral11_random_2.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral11_random_2_small.jpg b/data/multiplayer/interiors/mbu_neutral11_random_2_small.jpg new file mode 100644 index 00000000..0ddf17e4 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral11_random_2_small.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral11_random_small.jpg b/data/multiplayer/interiors/mbu_neutral11_random_small.jpg new file mode 100644 index 00000000..7abf66be Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral11_random_small.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral11_tile.jpg b/data/multiplayer/interiors/mbu_neutral11_tile.jpg new file mode 100644 index 00000000..1c63aa66 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral11_tile.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral2.jpg b/data/multiplayer/interiors/mbu_neutral2.jpg new file mode 100644 index 00000000..dd06c003 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral2.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral2_dark.jpg b/data/multiplayer/interiors/mbu_neutral2_dark.jpg new file mode 100644 index 00000000..fd4dbd22 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral2_dark.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral2_dark_small.jpg b/data/multiplayer/interiors/mbu_neutral2_dark_small.jpg new file mode 100644 index 00000000..c5ef73c6 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral2_dark_small.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral2_light.jpg b/data/multiplayer/interiors/mbu_neutral2_light.jpg new file mode 100644 index 00000000..d4654a02 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral2_light.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral2_light_small.jpg b/data/multiplayer/interiors/mbu_neutral2_light_small.jpg new file mode 100644 index 00000000..e423c640 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral2_light_small.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral2_med.jpg b/data/multiplayer/interiors/mbu_neutral2_med.jpg new file mode 100644 index 00000000..dd06c003 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral2_med.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral2_med_small.jpg b/data/multiplayer/interiors/mbu_neutral2_med_small.jpg new file mode 100644 index 00000000..b211b439 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral2_med_small.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral2_random.jpg b/data/multiplayer/interiors/mbu_neutral2_random.jpg new file mode 100644 index 00000000..61aac0d3 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral2_random.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral2_random_2.jpg b/data/multiplayer/interiors/mbu_neutral2_random_2.jpg new file mode 100644 index 00000000..2f2ef5e7 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral2_random_2.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral2_random_2_small.jpg b/data/multiplayer/interiors/mbu_neutral2_random_2_small.jpg new file mode 100644 index 00000000..9bb6d7b0 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral2_random_2_small.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral2_random_small.jpg b/data/multiplayer/interiors/mbu_neutral2_random_small.jpg new file mode 100644 index 00000000..074d4fa1 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral2_random_small.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral2_tile.jpg b/data/multiplayer/interiors/mbu_neutral2_tile.jpg new file mode 100644 index 00000000..dd06c003 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral2_tile.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral3.jpg b/data/multiplayer/interiors/mbu_neutral3.jpg new file mode 100644 index 00000000..19eb97b5 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral3.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral3_dark.jpg b/data/multiplayer/interiors/mbu_neutral3_dark.jpg new file mode 100644 index 00000000..bba39916 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral3_dark.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral3_light.jpg b/data/multiplayer/interiors/mbu_neutral3_light.jpg new file mode 100644 index 00000000..069bcba5 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral3_light.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral3_med.jpg b/data/multiplayer/interiors/mbu_neutral3_med.jpg new file mode 100644 index 00000000..5a1c710f Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral3_med.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral3_random.jpg b/data/multiplayer/interiors/mbu_neutral3_random.jpg new file mode 100644 index 00000000..59a19ecf Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral3_random.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral3_random_2.jpg b/data/multiplayer/interiors/mbu_neutral3_random_2.jpg new file mode 100644 index 00000000..9d335da4 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral3_random_2.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral3_random_2_small.jpg b/data/multiplayer/interiors/mbu_neutral3_random_2_small.jpg new file mode 100644 index 00000000..3916924a Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral3_random_2_small.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral3_random_small.jpg b/data/multiplayer/interiors/mbu_neutral3_random_small.jpg new file mode 100644 index 00000000..11b404c2 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral3_random_small.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral3_tile.jpg b/data/multiplayer/interiors/mbu_neutral3_tile.jpg new file mode 100644 index 00000000..19eb97b5 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral3_tile.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral4.jpg b/data/multiplayer/interiors/mbu_neutral4.jpg new file mode 100644 index 00000000..40de7cc8 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral4.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral4_dark.jpg b/data/multiplayer/interiors/mbu_neutral4_dark.jpg new file mode 100644 index 00000000..ff6dc5de Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral4_dark.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral4_light.jpg b/data/multiplayer/interiors/mbu_neutral4_light.jpg new file mode 100644 index 00000000..3375f7ea Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral4_light.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral4_med.jpg b/data/multiplayer/interiors/mbu_neutral4_med.jpg new file mode 100644 index 00000000..3fe656f7 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral4_med.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral4_random.jpg b/data/multiplayer/interiors/mbu_neutral4_random.jpg new file mode 100644 index 00000000..16849852 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral4_random.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral4_random_2.jpg b/data/multiplayer/interiors/mbu_neutral4_random_2.jpg new file mode 100644 index 00000000..ce6b55d6 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral4_random_2.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral4_random_2_small.jpg b/data/multiplayer/interiors/mbu_neutral4_random_2_small.jpg new file mode 100644 index 00000000..884882d9 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral4_random_2_small.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral4_random_small.jpg b/data/multiplayer/interiors/mbu_neutral4_random_small.jpg new file mode 100644 index 00000000..4e1fcc2a Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral4_random_small.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral4_tile.jpg b/data/multiplayer/interiors/mbu_neutral4_tile.jpg new file mode 100644 index 00000000..40de7cc8 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral4_tile.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral5.jpg b/data/multiplayer/interiors/mbu_neutral5.jpg new file mode 100644 index 00000000..e5ac8854 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral5.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral5_dark.jpg b/data/multiplayer/interiors/mbu_neutral5_dark.jpg new file mode 100644 index 00000000..00be12b7 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral5_dark.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral5_light.jpg b/data/multiplayer/interiors/mbu_neutral5_light.jpg new file mode 100644 index 00000000..bf60000f Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral5_light.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral5_med.jpg b/data/multiplayer/interiors/mbu_neutral5_med.jpg new file mode 100644 index 00000000..61b4b14b Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral5_med.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral5_random.jpg b/data/multiplayer/interiors/mbu_neutral5_random.jpg new file mode 100644 index 00000000..d7b47d8a Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral5_random.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral5_random_2.jpg b/data/multiplayer/interiors/mbu_neutral5_random_2.jpg new file mode 100644 index 00000000..37e25f99 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral5_random_2.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral5_random_2_small.jpg b/data/multiplayer/interiors/mbu_neutral5_random_2_small.jpg new file mode 100644 index 00000000..fe8b4d83 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral5_random_2_small.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral5_random_small.jpg b/data/multiplayer/interiors/mbu_neutral5_random_small.jpg new file mode 100644 index 00000000..2009f867 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral5_random_small.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral5_tile.jpg b/data/multiplayer/interiors/mbu_neutral5_tile.jpg new file mode 100644 index 00000000..e5ac8854 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral5_tile.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral6_dark.jpg b/data/multiplayer/interiors/mbu_neutral6_dark.jpg new file mode 100644 index 00000000..57be7041 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral6_dark.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral6_dark_small.jpg b/data/multiplayer/interiors/mbu_neutral6_dark_small.jpg new file mode 100644 index 00000000..e0a2c3c2 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral6_dark_small.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral6_light.jpg b/data/multiplayer/interiors/mbu_neutral6_light.jpg new file mode 100644 index 00000000..8af71269 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral6_light.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral6_light_small.jpg b/data/multiplayer/interiors/mbu_neutral6_light_small.jpg new file mode 100644 index 00000000..ad5c4b2f Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral6_light_small.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral6_med.jpg b/data/multiplayer/interiors/mbu_neutral6_med.jpg new file mode 100644 index 00000000..1173fe52 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral6_med.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral6_med_small.jpg b/data/multiplayer/interiors/mbu_neutral6_med_small.jpg new file mode 100644 index 00000000..f39f4390 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral6_med_small.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral6_random.jpg b/data/multiplayer/interiors/mbu_neutral6_random.jpg new file mode 100644 index 00000000..7afa2472 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral6_random.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral6_random_2.jpg b/data/multiplayer/interiors/mbu_neutral6_random_2.jpg new file mode 100644 index 00000000..eb969a55 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral6_random_2.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral6_random_2_small.jpg b/data/multiplayer/interiors/mbu_neutral6_random_2_small.jpg new file mode 100644 index 00000000..e5a5e47b Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral6_random_2_small.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral6_random_small.jpg b/data/multiplayer/interiors/mbu_neutral6_random_small.jpg new file mode 100644 index 00000000..e0813564 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral6_random_small.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral6_tile.jpg b/data/multiplayer/interiors/mbu_neutral6_tile.jpg new file mode 100644 index 00000000..1173fe52 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral6_tile.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral7_dark.jpg b/data/multiplayer/interiors/mbu_neutral7_dark.jpg new file mode 100644 index 00000000..d70ba2cc Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral7_dark.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral7_light.jpg b/data/multiplayer/interiors/mbu_neutral7_light.jpg new file mode 100644 index 00000000..28cdb370 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral7_light.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral7_med.jpg b/data/multiplayer/interiors/mbu_neutral7_med.jpg new file mode 100644 index 00000000..5cc0fa58 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral7_med.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral7_random.jpg b/data/multiplayer/interiors/mbu_neutral7_random.jpg new file mode 100644 index 00000000..95ff813f Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral7_random.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral7_random_2.jpg b/data/multiplayer/interiors/mbu_neutral7_random_2.jpg new file mode 100644 index 00000000..85935a5e Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral7_random_2.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral7_random_2_small.jpg b/data/multiplayer/interiors/mbu_neutral7_random_2_small.jpg new file mode 100644 index 00000000..89e673a2 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral7_random_2_small.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral7_random_small.jpg b/data/multiplayer/interiors/mbu_neutral7_random_small.jpg new file mode 100644 index 00000000..4a674d1e Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral7_random_small.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral7_tile.jpg b/data/multiplayer/interiors/mbu_neutral7_tile.jpg new file mode 100644 index 00000000..5cc0fa58 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral7_tile.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral8_dark.jpg b/data/multiplayer/interiors/mbu_neutral8_dark.jpg new file mode 100644 index 00000000..20a39279 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral8_dark.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral8_dark_small.jpg b/data/multiplayer/interiors/mbu_neutral8_dark_small.jpg new file mode 100644 index 00000000..61dcefcf Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral8_dark_small.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral8_light.jpg b/data/multiplayer/interiors/mbu_neutral8_light.jpg new file mode 100644 index 00000000..62cfb744 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral8_light.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral8_light_small.jpg b/data/multiplayer/interiors/mbu_neutral8_light_small.jpg new file mode 100644 index 00000000..5aaa545a Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral8_light_small.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral8_med.jpg b/data/multiplayer/interiors/mbu_neutral8_med.jpg new file mode 100644 index 00000000..c295f036 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral8_med.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral8_med_small.jpg b/data/multiplayer/interiors/mbu_neutral8_med_small.jpg new file mode 100644 index 00000000..b62d9134 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral8_med_small.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral8_random.jpg b/data/multiplayer/interiors/mbu_neutral8_random.jpg new file mode 100644 index 00000000..bfd6309d Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral8_random.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral8_random_2.jpg b/data/multiplayer/interiors/mbu_neutral8_random_2.jpg new file mode 100644 index 00000000..9166fe88 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral8_random_2.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral8_random_2_small.jpg b/data/multiplayer/interiors/mbu_neutral8_random_2_small.jpg new file mode 100644 index 00000000..0d816813 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral8_random_2_small.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral8_random_small.jpg b/data/multiplayer/interiors/mbu_neutral8_random_small.jpg new file mode 100644 index 00000000..70184db3 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral8_random_small.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral8_tile.jpg b/data/multiplayer/interiors/mbu_neutral8_tile.jpg new file mode 100644 index 00000000..c295f036 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral8_tile.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral9_dark.jpg b/data/multiplayer/interiors/mbu_neutral9_dark.jpg new file mode 100644 index 00000000..3f976b20 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral9_dark.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral9_light.jpg b/data/multiplayer/interiors/mbu_neutral9_light.jpg new file mode 100644 index 00000000..d051f093 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral9_light.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral9_med.jpg b/data/multiplayer/interiors/mbu_neutral9_med.jpg new file mode 100644 index 00000000..028b71de Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral9_med.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral9_random.jpg b/data/multiplayer/interiors/mbu_neutral9_random.jpg new file mode 100644 index 00000000..2d8130ec Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral9_random.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral9_random_2.jpg b/data/multiplayer/interiors/mbu_neutral9_random_2.jpg new file mode 100644 index 00000000..122977fa Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral9_random_2.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral9_random_2_small.jpg b/data/multiplayer/interiors/mbu_neutral9_random_2_small.jpg new file mode 100644 index 00000000..1f577acc Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral9_random_2_small.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral9_random_small.jpg b/data/multiplayer/interiors/mbu_neutral9_random_small.jpg new file mode 100644 index 00000000..508f4699 Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral9_random_small.jpg differ diff --git a/data/multiplayer/interiors/mbu_neutral9_tile.jpg b/data/multiplayer/interiors/mbu_neutral9_tile.jpg new file mode 100644 index 00000000..028b71de Binary files /dev/null and b/data/multiplayer/interiors/mbu_neutral9_tile.jpg differ diff --git a/data/multiplayer/interiors/mbu_pattern_cool2.jpg b/data/multiplayer/interiors/mbu_pattern_cool2.jpg new file mode 100644 index 00000000..05fdcc18 Binary files /dev/null and b/data/multiplayer/interiors/mbu_pattern_cool2.jpg differ diff --git a/data/multiplayer/interiors/mmg_grass.jpg b/data/multiplayer/interiors/mmg_grass.jpg new file mode 100644 index 00000000..14455ca5 Binary files /dev/null and b/data/multiplayer/interiors/mmg_grass.jpg differ diff --git a/data/multiplayer/interiors/mmg_ice.jpg b/data/multiplayer/interiors/mmg_ice.jpg new file mode 100644 index 00000000..e2b22f96 Binary files /dev/null and b/data/multiplayer/interiors/mmg_ice.jpg differ diff --git a/data/multiplayer/interiors/mmg_ice_shadow.jpg b/data/multiplayer/interiors/mmg_ice_shadow.jpg new file mode 100644 index 00000000..72449898 Binary files /dev/null and b/data/multiplayer/interiors/mmg_ice_shadow.jpg differ diff --git a/data/multiplayer/interiors/mmg_jellyfish.jpg b/data/multiplayer/interiors/mmg_jellyfish.jpg new file mode 100644 index 00000000..04e1f209 Binary files /dev/null and b/data/multiplayer/interiors/mmg_jellyfish.jpg differ diff --git a/data/multiplayer/interiors/mmg_sand.jpg b/data/multiplayer/interiors/mmg_sand.jpg new file mode 100644 index 00000000..73fd857d Binary files /dev/null and b/data/multiplayer/interiors/mmg_sand.jpg differ diff --git a/data/multiplayer/interiors/mmg_water.jpg b/data/multiplayer/interiors/mmg_water.jpg new file mode 100644 index 00000000..eb49c733 Binary files /dev/null and b/data/multiplayer/interiors/mmg_water.jpg differ diff --git a/data/multiplayer/interiors/parts/SkateBattleRoyale_climb.dif b/data/multiplayer/interiors/parts/SkateBattleRoyale_climb.dif new file mode 100644 index 00000000..6e93fc7d Binary files /dev/null and b/data/multiplayer/interiors/parts/SkateBattleRoyale_climb.dif differ diff --git a/data/multiplayer/interiors/parts/SkateBattleRoyale_corner1.dif b/data/multiplayer/interiors/parts/SkateBattleRoyale_corner1.dif new file mode 100644 index 00000000..1f3107f3 Binary files /dev/null and b/data/multiplayer/interiors/parts/SkateBattleRoyale_corner1.dif differ diff --git a/data/multiplayer/interiors/parts/SkateBattleRoyale_corner2.dif b/data/multiplayer/interiors/parts/SkateBattleRoyale_corner2.dif new file mode 100644 index 00000000..6760b7cd Binary files /dev/null and b/data/multiplayer/interiors/parts/SkateBattleRoyale_corner2.dif differ diff --git a/data/multiplayer/interiors/parts/SkateBattleRoyale_pipe-180.dif b/data/multiplayer/interiors/parts/SkateBattleRoyale_pipe-180.dif new file mode 100644 index 00000000..201e5725 Binary files /dev/null and b/data/multiplayer/interiors/parts/SkateBattleRoyale_pipe-180.dif differ diff --git a/data/multiplayer/interiors/parts/SkateBattleRoyale_pipe.dif b/data/multiplayer/interiors/parts/SkateBattleRoyale_pipe.dif new file mode 100644 index 00000000..c66ddcb0 Binary files /dev/null and b/data/multiplayer/interiors/parts/SkateBattleRoyale_pipe.dif differ diff --git a/data/multiplayer/interiors/parts/arch_2_corner.dif b/data/multiplayer/interiors/parts/arch_2_corner.dif new file mode 100644 index 00000000..41944d17 Binary files /dev/null and b/data/multiplayer/interiors/parts/arch_2_corner.dif differ diff --git a/data/multiplayer/interiors/parts/arch_2_normal.dif b/data/multiplayer/interiors/parts/arch_2_normal.dif new file mode 100644 index 00000000..931d9465 Binary files /dev/null and b/data/multiplayer/interiors/parts/arch_2_normal.dif differ diff --git a/data/multiplayer/interiors/parts/arch_3_corner.dif b/data/multiplayer/interiors/parts/arch_3_corner.dif new file mode 100644 index 00000000..6c4dd8bc Binary files /dev/null and b/data/multiplayer/interiors/parts/arch_3_corner.dif differ diff --git a/data/multiplayer/interiors/parts/arch_3_normal.dif b/data/multiplayer/interiors/parts/arch_3_normal.dif new file mode 100644 index 00000000..9ad00168 Binary files /dev/null and b/data/multiplayer/interiors/parts/arch_3_normal.dif differ diff --git a/data/multiplayer/interiors/parts/arch_4_corner.dif b/data/multiplayer/interiors/parts/arch_4_corner.dif new file mode 100644 index 00000000..27980e42 Binary files /dev/null and b/data/multiplayer/interiors/parts/arch_4_corner.dif differ diff --git a/data/multiplayer/interiors/parts/arch_4_normal.dif b/data/multiplayer/interiors/parts/arch_4_normal.dif new file mode 100644 index 00000000..ad1a959b Binary files /dev/null and b/data/multiplayer/interiors/parts/arch_4_normal.dif differ diff --git a/data/multiplayer/interiors/parts/arch_8_corner.dif b/data/multiplayer/interiors/parts/arch_8_corner.dif new file mode 100644 index 00000000..4643ba8e Binary files /dev/null and b/data/multiplayer/interiors/parts/arch_8_corner.dif differ diff --git a/data/multiplayer/interiors/parts/arch_8_normal.dif b/data/multiplayer/interiors/parts/arch_8_normal.dif new file mode 100644 index 00000000..5f0ef795 Binary files /dev/null and b/data/multiplayer/interiors/parts/arch_8_normal.dif differ diff --git a/data/multiplayer/interiors/parts/intermediate_gentleslope-180.dif b/data/multiplayer/interiors/parts/intermediate_gentleslope-180.dif new file mode 100644 index 00000000..bf7ca862 Binary files /dev/null and b/data/multiplayer/interiors/parts/intermediate_gentleslope-180.dif differ diff --git a/data/multiplayer/interiors/parts/intermediate_gentleslope-90.dif b/data/multiplayer/interiors/parts/intermediate_gentleslope-90.dif new file mode 100644 index 00000000..82321d38 Binary files /dev/null and b/data/multiplayer/interiors/parts/intermediate_gentleslope-90.dif differ diff --git a/data/multiplayer/interiors/parts/intermediate_gentleslope.dif b/data/multiplayer/interiors/parts/intermediate_gentleslope.dif new file mode 100644 index 00000000..7a249183 Binary files /dev/null and b/data/multiplayer/interiors/parts/intermediate_gentleslope.dif differ diff --git a/data/multiplayer/interiors/parts/intermediate_tight_curve-180.dif b/data/multiplayer/interiors/parts/intermediate_tight_curve-180.dif new file mode 100644 index 00000000..0139cd84 Binary files /dev/null and b/data/multiplayer/interiors/parts/intermediate_tight_curve-180.dif differ diff --git a/data/multiplayer/interiors/parts/intermediate_tight_curve-90.dif b/data/multiplayer/interiors/parts/intermediate_tight_curve-90.dif new file mode 100644 index 00000000..e3509a10 Binary files /dev/null and b/data/multiplayer/interiors/parts/intermediate_tight_curve-90.dif differ diff --git a/data/multiplayer/interiors/parts/intermediate_tight_curve.dif b/data/multiplayer/interiors/parts/intermediate_tight_curve.dif new file mode 100644 index 00000000..4fd18575 Binary files /dev/null and b/data/multiplayer/interiors/parts/intermediate_tight_curve.dif differ diff --git a/data/multiplayer/interiors/parts/intermediate_wide_curve-180.dif b/data/multiplayer/interiors/parts/intermediate_wide_curve-180.dif new file mode 100644 index 00000000..1395b8b3 Binary files /dev/null and b/data/multiplayer/interiors/parts/intermediate_wide_curve-180.dif differ diff --git a/data/multiplayer/interiors/parts/intermediate_wide_curve-90.dif b/data/multiplayer/interiors/parts/intermediate_wide_curve-90.dif new file mode 100644 index 00000000..ddc7b233 Binary files /dev/null and b/data/multiplayer/interiors/parts/intermediate_wide_curve-90.dif differ diff --git a/data/multiplayer/interiors/parts/intermediate_wide_curve.dif b/data/multiplayer/interiors/parts/intermediate_wide_curve.dif new file mode 100644 index 00000000..bcedf358 Binary files /dev/null and b/data/multiplayer/interiors/parts/intermediate_wide_curve.dif differ diff --git a/data/multiplayer/interiors/parts/vertical_support.dif b/data/multiplayer/interiors/parts/vertical_support.dif new file mode 100644 index 00000000..113f8b01 Binary files /dev/null and b/data/multiplayer/interiors/parts/vertical_support.dif differ diff --git a/data/multiplayer/interiors/pattern_cool1.jpg b/data/multiplayer/interiors/pattern_cool1.jpg new file mode 100644 index 00000000..778bd219 Binary files /dev/null and b/data/multiplayer/interiors/pattern_cool1.jpg differ diff --git a/data/multiplayer/interiors/pattern_cool2.jpg b/data/multiplayer/interiors/pattern_cool2.jpg new file mode 100644 index 00000000..4ce70965 Binary files /dev/null and b/data/multiplayer/interiors/pattern_cool2.jpg differ diff --git a/data/multiplayer/interiors/pattern_neutral1.jpg b/data/multiplayer/interiors/pattern_neutral1.jpg new file mode 100644 index 00000000..00616343 Binary files /dev/null and b/data/multiplayer/interiors/pattern_neutral1.jpg differ diff --git a/data/multiplayer/interiors/pattern_neutral2.jpg b/data/multiplayer/interiors/pattern_neutral2.jpg new file mode 100644 index 00000000..ad2eb594 Binary files /dev/null and b/data/multiplayer/interiors/pattern_neutral2.jpg differ diff --git a/data/multiplayer/interiors/pattern_neutral3.jpg b/data/multiplayer/interiors/pattern_neutral3.jpg new file mode 100644 index 00000000..1c1dd2bc Binary files /dev/null and b/data/multiplayer/interiors/pattern_neutral3.jpg differ diff --git a/data/multiplayer/interiors/pattern_warm1.jpg b/data/multiplayer/interiors/pattern_warm1.jpg new file mode 100644 index 00000000..6b30c77d Binary files /dev/null and b/data/multiplayer/interiors/pattern_warm1.jpg differ diff --git a/data/multiplayer/interiors/pattern_warm2.jpg b/data/multiplayer/interiors/pattern_warm2.jpg new file mode 100644 index 00000000..540166c2 Binary files /dev/null and b/data/multiplayer/interiors/pattern_warm2.jpg differ diff --git a/data/multiplayer/interiors/pattern_warm3.jpg b/data/multiplayer/interiors/pattern_warm3.jpg new file mode 100644 index 00000000..c4b33720 Binary files /dev/null and b/data/multiplayer/interiors/pattern_warm3.jpg differ diff --git a/data/multiplayer/interiors/pattern_warm4.jpg b/data/multiplayer/interiors/pattern_warm4.jpg new file mode 100644 index 00000000..050d297c Binary files /dev/null and b/data/multiplayer/interiors/pattern_warm4.jpg differ diff --git a/data/multiplayer/interiors/philsmbu_dirttrim.jpg b/data/multiplayer/interiors/philsmbu_dirttrim.jpg new file mode 100644 index 00000000..b0d45565 Binary files /dev/null and b/data/multiplayer/interiors/philsmbu_dirttrim.jpg differ diff --git a/data/multiplayer/interiors/philsmbu_dirttrim2.jpg b/data/multiplayer/interiors/philsmbu_dirttrim2.jpg new file mode 100644 index 00000000..6d95171e Binary files /dev/null and b/data/multiplayer/interiors/philsmbu_dirttrim2.jpg differ diff --git a/data/multiplayer/interiors/philsmbu_grid_cool2.jpg b/data/multiplayer/interiors/philsmbu_grid_cool2.jpg new file mode 100644 index 00000000..ec278aa8 Binary files /dev/null and b/data/multiplayer/interiors/philsmbu_grid_cool2.jpg differ diff --git a/data/multiplayer/interiors/repairbay.jpg b/data/multiplayer/interiors/repairbay.jpg new file mode 100644 index 00000000..d9dcb35f Binary files /dev/null and b/data/multiplayer/interiors/repairbay.jpg differ diff --git a/data/multiplayer/interiors/rug.jpg b/data/multiplayer/interiors/rug.jpg new file mode 100644 index 00000000..30349339 Binary files /dev/null and b/data/multiplayer/interiors/rug.jpg differ diff --git a/data/multiplayer/interiors/sand.jpg b/data/multiplayer/interiors/sand.jpg new file mode 100644 index 00000000..5af778ba Binary files /dev/null and b/data/multiplayer/interiors/sand.jpg differ diff --git a/data/multiplayer/interiors/signwood.jpg b/data/multiplayer/interiors/signwood.jpg new file mode 100644 index 00000000..59e526ff Binary files /dev/null and b/data/multiplayer/interiors/signwood.jpg differ diff --git a/data/multiplayer/interiors/solid_cool1.jpg b/data/multiplayer/interiors/solid_cool1.jpg new file mode 100644 index 00000000..72d0788e Binary files /dev/null and b/data/multiplayer/interiors/solid_cool1.jpg differ diff --git a/data/multiplayer/interiors/solid_cool2.jpg b/data/multiplayer/interiors/solid_cool2.jpg new file mode 100644 index 00000000..55d7e523 Binary files /dev/null and b/data/multiplayer/interiors/solid_cool2.jpg differ diff --git a/data/multiplayer/interiors/solid_green.jpg b/data/multiplayer/interiors/solid_green.jpg new file mode 100644 index 00000000..8275c8fa Binary files /dev/null and b/data/multiplayer/interiors/solid_green.jpg differ diff --git a/data/multiplayer/interiors/solid_neutral1.jpg b/data/multiplayer/interiors/solid_neutral1.jpg new file mode 100644 index 00000000..cdfeac73 Binary files /dev/null and b/data/multiplayer/interiors/solid_neutral1.jpg differ diff --git a/data/multiplayer/interiors/solid_neutral2.jpg b/data/multiplayer/interiors/solid_neutral2.jpg new file mode 100644 index 00000000..8ada486e Binary files /dev/null and b/data/multiplayer/interiors/solid_neutral2.jpg differ diff --git a/data/multiplayer/interiors/solid_warm1.jpg b/data/multiplayer/interiors/solid_warm1.jpg new file mode 100644 index 00000000..cd44f460 Binary files /dev/null and b/data/multiplayer/interiors/solid_warm1.jpg differ diff --git a/data/multiplayer/interiors/solid_warm2.jpg b/data/multiplayer/interiors/solid_warm2.jpg new file mode 100644 index 00000000..4fad07cf Binary files /dev/null and b/data/multiplayer/interiors/solid_warm2.jpg differ diff --git a/data/multiplayer/interiors/solid_warm3.JPG b/data/multiplayer/interiors/solid_warm3.JPG new file mode 100644 index 00000000..d9d31421 Binary files /dev/null and b/data/multiplayer/interiors/solid_warm3.JPG differ diff --git a/data/multiplayer/interiors/solid_white.jpg b/data/multiplayer/interiors/solid_white.jpg new file mode 100644 index 00000000..91d97ab1 Binary files /dev/null and b/data/multiplayer/interiors/solid_white.jpg differ diff --git a/data/multiplayer/interiors/stripe_caution.jpg b/data/multiplayer/interiors/stripe_caution.jpg new file mode 100644 index 00000000..26570f9c Binary files /dev/null and b/data/multiplayer/interiors/stripe_caution.jpg differ diff --git a/data/multiplayer/interiors/stripe_cool.jpg b/data/multiplayer/interiors/stripe_cool.jpg new file mode 100644 index 00000000..2494d3e6 Binary files /dev/null and b/data/multiplayer/interiors/stripe_cool.jpg differ diff --git a/data/multiplayer/interiors/stripe_cool2.jpg b/data/multiplayer/interiors/stripe_cool2.jpg new file mode 100644 index 00000000..9843b88b Binary files /dev/null and b/data/multiplayer/interiors/stripe_cool2.jpg differ diff --git a/data/multiplayer/interiors/stripe_neutral.jpg b/data/multiplayer/interiors/stripe_neutral.jpg new file mode 100644 index 00000000..cfdb05e3 Binary files /dev/null and b/data/multiplayer/interiors/stripe_neutral.jpg differ diff --git a/data/multiplayer/interiors/stripe_neutral2.jpg b/data/multiplayer/interiors/stripe_neutral2.jpg new file mode 100644 index 00000000..cd7de121 Binary files /dev/null and b/data/multiplayer/interiors/stripe_neutral2.jpg differ diff --git a/data/multiplayer/interiors/stripe_warm.jpg b/data/multiplayer/interiors/stripe_warm.jpg new file mode 100644 index 00000000..6797c65d Binary files /dev/null and b/data/multiplayer/interiors/stripe_warm.jpg differ diff --git a/data/multiplayer/interiors/stripe_warm2.jpg b/data/multiplayer/interiors/stripe_warm2.jpg new file mode 100644 index 00000000..10dbbe91 Binary files /dev/null and b/data/multiplayer/interiors/stripe_warm2.jpg differ diff --git a/data/multiplayer/interiors/tarmac.jpg b/data/multiplayer/interiors/tarmac.jpg new file mode 100644 index 00000000..9678c14f Binary files /dev/null and b/data/multiplayer/interiors/tarmac.jpg differ diff --git a/data/multiplayer/interiors/trim_cool1.jpg b/data/multiplayer/interiors/trim_cool1.jpg new file mode 100644 index 00000000..d2d7106b Binary files /dev/null and b/data/multiplayer/interiors/trim_cool1.jpg differ diff --git a/data/multiplayer/interiors/trim_cool2.jpg b/data/multiplayer/interiors/trim_cool2.jpg new file mode 100644 index 00000000..46c52bb8 Binary files /dev/null and b/data/multiplayer/interiors/trim_cool2.jpg differ diff --git a/data/multiplayer/interiors/trim_cool3.jpg b/data/multiplayer/interiors/trim_cool3.jpg new file mode 100644 index 00000000..dcfd35a8 Binary files /dev/null and b/data/multiplayer/interiors/trim_cool3.jpg differ diff --git a/data/multiplayer/interiors/trim_neutral1.jpg b/data/multiplayer/interiors/trim_neutral1.jpg new file mode 100644 index 00000000..af426739 Binary files /dev/null and b/data/multiplayer/interiors/trim_neutral1.jpg differ diff --git a/data/multiplayer/interiors/trim_neutral2.jpg b/data/multiplayer/interiors/trim_neutral2.jpg new file mode 100644 index 00000000..6c189ce5 Binary files /dev/null and b/data/multiplayer/interiors/trim_neutral2.jpg differ diff --git a/data/multiplayer/interiors/trim_warm1.jpg b/data/multiplayer/interiors/trim_warm1.jpg new file mode 100644 index 00000000..9cda4e92 Binary files /dev/null and b/data/multiplayer/interiors/trim_warm1.jpg differ diff --git a/data/multiplayer/interiors/trim_warm2.jpg b/data/multiplayer/interiors/trim_warm2.jpg new file mode 100644 index 00000000..9c69014a Binary files /dev/null and b/data/multiplayer/interiors/trim_warm2.jpg differ diff --git a/data/multiplayer/interiors/trim_white1.jpg b/data/multiplayer/interiors/trim_white1.jpg new file mode 100644 index 00000000..38d7f63a Binary files /dev/null and b/data/multiplayer/interiors/trim_white1.jpg differ diff --git a/data/multiplayer/interiors/trim_white2.jpg b/data/multiplayer/interiors/trim_white2.jpg new file mode 100644 index 00000000..ed5aaa57 Binary files /dev/null and b/data/multiplayer/interiors/trim_white2.jpg differ diff --git a/data/multiplayer/interiors/tube_cool.jpg b/data/multiplayer/interiors/tube_cool.jpg new file mode 100644 index 00000000..b7e58345 Binary files /dev/null and b/data/multiplayer/interiors/tube_cool.jpg differ diff --git a/data/multiplayer/interiors/tube_neutral.jpg b/data/multiplayer/interiors/tube_neutral.jpg new file mode 100644 index 00000000..fcb84f2d Binary files /dev/null and b/data/multiplayer/interiors/tube_neutral.jpg differ diff --git a/data/multiplayer/interiors/tube_warm.jpg b/data/multiplayer/interiors/tube_warm.jpg new file mode 100644 index 00000000..730d8dd7 Binary files /dev/null and b/data/multiplayer/interiors/tube_warm.jpg differ diff --git a/data/multiplayer/interiors/wall_cool1.jpg b/data/multiplayer/interiors/wall_cool1.jpg new file mode 100644 index 00000000..13af3708 Binary files /dev/null and b/data/multiplayer/interiors/wall_cool1.jpg differ diff --git a/data/multiplayer/interiors/wall_cool2.jpg b/data/multiplayer/interiors/wall_cool2.jpg new file mode 100644 index 00000000..b2ce12e8 Binary files /dev/null and b/data/multiplayer/interiors/wall_cool2.jpg differ diff --git a/data/multiplayer/interiors/wall_crack1.jpg b/data/multiplayer/interiors/wall_crack1.jpg new file mode 100644 index 00000000..629c7bc2 Binary files /dev/null and b/data/multiplayer/interiors/wall_crack1.jpg differ diff --git a/data/multiplayer/interiors/wall_crack2.jpg b/data/multiplayer/interiors/wall_crack2.jpg new file mode 100644 index 00000000..66843b8c Binary files /dev/null and b/data/multiplayer/interiors/wall_crack2.jpg differ diff --git a/data/multiplayer/interiors/wall_crack3.jpg b/data/multiplayer/interiors/wall_crack3.jpg new file mode 100644 index 00000000..73a926a5 Binary files /dev/null and b/data/multiplayer/interiors/wall_crack3.jpg differ diff --git a/data/multiplayer/interiors/wall_crack4.jpg b/data/multiplayer/interiors/wall_crack4.jpg new file mode 100644 index 00000000..1d121a88 Binary files /dev/null and b/data/multiplayer/interiors/wall_crack4.jpg differ diff --git a/data/multiplayer/interiors/wall_crack5.jpg b/data/multiplayer/interiors/wall_crack5.jpg new file mode 100644 index 00000000..4b7a280a Binary files /dev/null and b/data/multiplayer/interiors/wall_crack5.jpg differ diff --git a/data/multiplayer/interiors/wall_neutral1.jpg b/data/multiplayer/interiors/wall_neutral1.jpg new file mode 100644 index 00000000..ea31ecbc Binary files /dev/null and b/data/multiplayer/interiors/wall_neutral1.jpg differ diff --git a/data/multiplayer/interiors/wall_neutral2.jpg b/data/multiplayer/interiors/wall_neutral2.jpg new file mode 100644 index 00000000..75012498 Binary files /dev/null and b/data/multiplayer/interiors/wall_neutral2.jpg differ diff --git a/data/multiplayer/interiors/wall_neutral3.jpg b/data/multiplayer/interiors/wall_neutral3.jpg new file mode 100644 index 00000000..de0dccc9 Binary files /dev/null and b/data/multiplayer/interiors/wall_neutral3.jpg differ diff --git a/data/multiplayer/interiors/wall_warm1.jpg b/data/multiplayer/interiors/wall_warm1.jpg new file mode 100644 index 00000000..de271d65 Binary files /dev/null and b/data/multiplayer/interiors/wall_warm1.jpg differ diff --git a/data/multiplayer/interiors/wall_warm2.jpg b/data/multiplayer/interiors/wall_warm2.jpg new file mode 100644 index 00000000..d0788512 Binary files /dev/null and b/data/multiplayer/interiors/wall_warm2.jpg differ diff --git a/data/multiplayer/interiors/wall_warm3.jpg b/data/multiplayer/interiors/wall_warm3.jpg new file mode 100644 index 00000000..8c79279d Binary files /dev/null and b/data/multiplayer/interiors/wall_warm3.jpg differ diff --git a/data/multiplayer/interiors/wall_white.jpg b/data/multiplayer/interiors/wall_white.jpg new file mode 100644 index 00000000..7d2584e7 Binary files /dev/null and b/data/multiplayer/interiors/wall_white.jpg differ diff --git a/data/multiplayer/interiors/water.jpg b/data/multiplayer/interiors/water.jpg new file mode 100644 index 00000000..dd84aab9 Binary files /dev/null and b/data/multiplayer/interiors/water.jpg differ diff --git a/data/multiplayer/interiors/white.jpg b/data/multiplayer/interiors/white.jpg new file mode 100644 index 00000000..f6e4e512 Binary files /dev/null and b/data/multiplayer/interiors/white.jpg differ diff --git a/data/multiplayer/interiors/wood01.jpg b/data/multiplayer/interiors/wood01.jpg new file mode 100644 index 00000000..67e92702 Binary files /dev/null and b/data/multiplayer/interiors/wood01.jpg differ diff --git a/data/multiplayer/interiors/wood04.jpg b/data/multiplayer/interiors/wood04.jpg new file mode 100644 index 00000000..dc4cc2d2 Binary files /dev/null and b/data/multiplayer/interiors/wood04.jpg differ diff --git a/data/multiplayer/interiors/yellowtrim.png b/data/multiplayer/interiors/yellowtrim.png new file mode 100644 index 00000000..b0d0c73e Binary files /dev/null and b/data/multiplayer/interiors/yellowtrim.png differ diff --git a/data/shapes/gemlights/base.lightbeam.PNG b/data/shapes/gemlights/base.lightbeam.PNG new file mode 100644 index 00000000..986807ec Binary files /dev/null and b/data/shapes/gemlights/base.lightbeam.PNG differ diff --git a/data/shapes/gemlights/black.lightbeam.png b/data/shapes/gemlights/black.lightbeam.png new file mode 100644 index 00000000..92fd607e Binary files /dev/null and b/data/shapes/gemlights/black.lightbeam.png differ diff --git a/data/shapes/gemlights/blue.lightbeam.PNG b/data/shapes/gemlights/blue.lightbeam.PNG new file mode 100644 index 00000000..86e13d24 Binary files /dev/null and b/data/shapes/gemlights/blue.lightbeam.PNG differ diff --git a/data/shapes/gemlights/gemlight.dts b/data/shapes/gemlights/gemlight.dts new file mode 100644 index 00000000..26cc660f Binary files /dev/null and b/data/shapes/gemlights/gemlight.dts differ diff --git a/data/shapes/gemlights/orange.lightbeam.png b/data/shapes/gemlights/orange.lightbeam.png new file mode 100644 index 00000000..ec92a22a Binary files /dev/null and b/data/shapes/gemlights/orange.lightbeam.png differ diff --git a/data/shapes/gemlights/platinum.lightbeam.PNG b/data/shapes/gemlights/platinum.lightbeam.PNG new file mode 100644 index 00000000..81a6b7de Binary files /dev/null and b/data/shapes/gemlights/platinum.lightbeam.PNG differ diff --git a/data/shapes/gemlights/red.lightbeam.PNG b/data/shapes/gemlights/red.lightbeam.PNG new file mode 100644 index 00000000..986807ec Binary files /dev/null and b/data/shapes/gemlights/red.lightbeam.PNG differ diff --git a/data/shapes/gemlights/yellow.lightbeam.PNG b/data/shapes/gemlights/yellow.lightbeam.PNG new file mode 100644 index 00000000..8b8f1a50 Binary files /dev/null and b/data/shapes/gemlights/yellow.lightbeam.PNG differ diff --git a/data/shapes/glass/col/base.glass.png b/data/shapes/glass/col/base.glass.png new file mode 100644 index 00000000..13c674e2 Binary files /dev/null and b/data/shapes/glass/col/base.glass.png differ diff --git a/data/shapes/glass/col/glasswall.jpg b/data/shapes/glass/col/glasswall.jpg new file mode 100644 index 00000000..58246384 Binary files /dev/null and b/data/shapes/glass/col/glasswall.jpg differ diff --git a/data/sound/opponentdiamond.wav b/data/sound/opponentdiamond.wav new file mode 100644 index 00000000..e7318823 Binary files /dev/null and b/data/sound/opponentdiamond.wav differ diff --git a/data/ui/game/timerhuntrespawn.png b/data/ui/game/timerhuntrespawn.png new file mode 100644 index 00000000..f6f63ae0 Binary files /dev/null and b/data/ui/game/timerhuntrespawn.png differ diff --git a/data/ui/mp/end/continue_d.png b/data/ui/mp/end/continue_d.png new file mode 100644 index 00000000..3bb99204 Binary files /dev/null and b/data/ui/mp/end/continue_d.png differ diff --git a/data/ui/mp/end/continue_h.png b/data/ui/mp/end/continue_h.png new file mode 100644 index 00000000..ce8e3e99 Binary files /dev/null and b/data/ui/mp/end/continue_h.png differ diff --git a/data/ui/mp/end/continue_i.png b/data/ui/mp/end/continue_i.png new file mode 100644 index 00000000..04eb0093 Binary files /dev/null and b/data/ui/mp/end/continue_i.png differ diff --git a/data/ui/mp/end/continue_n.png b/data/ui/mp/end/continue_n.png new file mode 100644 index 00000000..5f172b07 Binary files /dev/null and b/data/ui/mp/end/continue_n.png differ diff --git a/data/ui/mp/end/exit_d.png b/data/ui/mp/end/exit_d.png new file mode 100644 index 00000000..cf81741f Binary files /dev/null and b/data/ui/mp/end/exit_d.png differ diff --git a/data/ui/mp/end/exit_h.png b/data/ui/mp/end/exit_h.png new file mode 100644 index 00000000..c1078196 Binary files /dev/null and b/data/ui/mp/end/exit_h.png differ diff --git a/data/ui/mp/end/exit_i.png b/data/ui/mp/end/exit_i.png new file mode 100644 index 00000000..a39b77bc Binary files /dev/null and b/data/ui/mp/end/exit_i.png differ diff --git a/data/ui/mp/end/exit_n.png b/data/ui/mp/end/exit_n.png new file mode 100644 index 00000000..80f0ed44 Binary files /dev/null and b/data/ui/mp/end/exit_n.png differ diff --git a/data/ui/mp/end/lobby_d.png b/data/ui/mp/end/lobby_d.png new file mode 100644 index 00000000..7fdb8cbc Binary files /dev/null and b/data/ui/mp/end/lobby_d.png differ diff --git a/data/ui/mp/end/lobby_h.png b/data/ui/mp/end/lobby_h.png new file mode 100644 index 00000000..9c01ff19 Binary files /dev/null and b/data/ui/mp/end/lobby_h.png differ diff --git a/data/ui/mp/end/lobby_i.png b/data/ui/mp/end/lobby_i.png new file mode 100644 index 00000000..73af6070 Binary files /dev/null and b/data/ui/mp/end/lobby_i.png differ diff --git a/data/ui/mp/end/lobby_n.png b/data/ui/mp/end/lobby_n.png new file mode 100644 index 00000000..b7f90389 Binary files /dev/null and b/data/ui/mp/end/lobby_n.png differ diff --git a/data/ui/mp/end/restart_d.png b/data/ui/mp/end/restart_d.png new file mode 100644 index 00000000..989cfc88 Binary files /dev/null and b/data/ui/mp/end/restart_d.png differ diff --git a/data/ui/mp/end/restart_h.png b/data/ui/mp/end/restart_h.png new file mode 100644 index 00000000..e941e743 Binary files /dev/null and b/data/ui/mp/end/restart_h.png differ diff --git a/data/ui/mp/end/restart_i.png b/data/ui/mp/end/restart_i.png new file mode 100644 index 00000000..00ea1073 Binary files /dev/null and b/data/ui/mp/end/restart_i.png differ diff --git a/data/ui/mp/end/restart_n.png b/data/ui/mp/end/restart_n.png new file mode 100644 index 00000000..7c1dd250 Binary files /dev/null and b/data/ui/mp/end/restart_n.png differ diff --git a/data/ui/mp/end/save_d.png b/data/ui/mp/end/save_d.png new file mode 100644 index 00000000..3486ccba Binary files /dev/null and b/data/ui/mp/end/save_d.png differ diff --git a/data/ui/mp/end/save_h.png b/data/ui/mp/end/save_h.png new file mode 100644 index 00000000..d93802f1 Binary files /dev/null and b/data/ui/mp/end/save_h.png differ diff --git a/data/ui/mp/end/save_i.png b/data/ui/mp/end/save_i.png new file mode 100644 index 00000000..50abf3f4 Binary files /dev/null and b/data/ui/mp/end/save_i.png differ diff --git a/data/ui/mp/end/save_n.png b/data/ui/mp/end/save_n.png new file mode 100644 index 00000000..8aa71734 Binary files /dev/null and b/data/ui/mp/end/save_n.png differ diff --git a/data/ui/mp/end/window.png b/data/ui/mp/end/window.png new file mode 100644 index 00000000..8d13d8cb Binary files /dev/null and b/data/ui/mp/end/window.png differ diff --git a/data/ui/mp/exit/complete_d.png b/data/ui/mp/exit/complete_d.png new file mode 100644 index 00000000..535fa2cc Binary files /dev/null and b/data/ui/mp/exit/complete_d.png differ diff --git a/data/ui/mp/exit/complete_h.png b/data/ui/mp/exit/complete_h.png new file mode 100644 index 00000000..b019824d Binary files /dev/null and b/data/ui/mp/exit/complete_h.png differ diff --git a/data/ui/mp/exit/complete_i.png b/data/ui/mp/exit/complete_i.png new file mode 100644 index 00000000..ffbac5a7 Binary files /dev/null and b/data/ui/mp/exit/complete_i.png differ diff --git a/data/ui/mp/exit/complete_n.png b/data/ui/mp/exit/complete_n.png new file mode 100644 index 00000000..35167921 Binary files /dev/null and b/data/ui/mp/exit/complete_n.png differ diff --git a/data/ui/mp/exit/disconnect_d.png b/data/ui/mp/exit/disconnect_d.png new file mode 100644 index 00000000..57f10d66 Binary files /dev/null and b/data/ui/mp/exit/disconnect_d.png differ diff --git a/data/ui/mp/exit/disconnect_h.png b/data/ui/mp/exit/disconnect_h.png new file mode 100644 index 00000000..a35099e7 Binary files /dev/null and b/data/ui/mp/exit/disconnect_h.png differ diff --git a/data/ui/mp/exit/disconnect_n.png b/data/ui/mp/exit/disconnect_n.png new file mode 100644 index 00000000..72f4c908 Binary files /dev/null and b/data/ui/mp/exit/disconnect_n.png differ diff --git a/data/ui/mp/exit/levelselect_d.png b/data/ui/mp/exit/levelselect_d.png new file mode 100644 index 00000000..592a957a Binary files /dev/null and b/data/ui/mp/exit/levelselect_d.png differ diff --git a/data/ui/mp/exit/levelselect_h.png b/data/ui/mp/exit/levelselect_h.png new file mode 100644 index 00000000..84081081 Binary files /dev/null and b/data/ui/mp/exit/levelselect_h.png differ diff --git a/data/ui/mp/exit/levelselect_n.png b/data/ui/mp/exit/levelselect_n.png new file mode 100644 index 00000000..a7ee4660 Binary files /dev/null and b/data/ui/mp/exit/levelselect_n.png differ diff --git a/data/ui/mp/exit/partial_d.png b/data/ui/mp/exit/partial_d.png new file mode 100644 index 00000000..40f85348 Binary files /dev/null and b/data/ui/mp/exit/partial_d.png differ diff --git a/data/ui/mp/exit/partial_h.png b/data/ui/mp/exit/partial_h.png new file mode 100644 index 00000000..d7b14dab Binary files /dev/null and b/data/ui/mp/exit/partial_h.png differ diff --git a/data/ui/mp/exit/partial_i.png b/data/ui/mp/exit/partial_i.png new file mode 100644 index 00000000..14790069 Binary files /dev/null and b/data/ui/mp/exit/partial_i.png differ diff --git a/data/ui/mp/exit/partial_n.png b/data/ui/mp/exit/partial_n.png new file mode 100644 index 00000000..5b44e6e2 Binary files /dev/null and b/data/ui/mp/exit/partial_n.png differ diff --git a/data/ui/mp/exit/respawn_d.png b/data/ui/mp/exit/respawn_d.png new file mode 100644 index 00000000..63e8b314 Binary files /dev/null and b/data/ui/mp/exit/respawn_d.png differ diff --git a/data/ui/mp/exit/respawn_h.png b/data/ui/mp/exit/respawn_h.png new file mode 100644 index 00000000..e9e9c674 Binary files /dev/null and b/data/ui/mp/exit/respawn_h.png differ diff --git a/data/ui/mp/exit/respawn_n.png b/data/ui/mp/exit/respawn_n.png new file mode 100644 index 00000000..3eabe9d4 Binary files /dev/null and b/data/ui/mp/exit/respawn_n.png differ diff --git a/data/ui/mp/exit/resume_d.png b/data/ui/mp/exit/resume_d.png new file mode 100644 index 00000000..8f1f8d81 Binary files /dev/null and b/data/ui/mp/exit/resume_d.png differ diff --git a/data/ui/mp/exit/resume_h.png b/data/ui/mp/exit/resume_h.png new file mode 100644 index 00000000..5184b5af Binary files /dev/null and b/data/ui/mp/exit/resume_h.png differ diff --git a/data/ui/mp/exit/resume_n.png b/data/ui/mp/exit/resume_n.png new file mode 100644 index 00000000..88fe4ea4 Binary files /dev/null and b/data/ui/mp/exit/resume_n.png differ diff --git a/data/ui/mp/exit/teamjoin.png b/data/ui/mp/exit/teamjoin.png new file mode 100644 index 00000000..e7c39def Binary files /dev/null and b/data/ui/mp/exit/teamjoin.png differ diff --git a/data/ui/mp/join/cancel_d.png b/data/ui/mp/join/cancel_d.png new file mode 100644 index 00000000..a9f88430 Binary files /dev/null and b/data/ui/mp/join/cancel_d.png differ diff --git a/data/ui/mp/join/cancel_h.png b/data/ui/mp/join/cancel_h.png new file mode 100644 index 00000000..d745b684 Binary files /dev/null and b/data/ui/mp/join/cancel_h.png differ diff --git a/data/ui/mp/join/cancel_i.png b/data/ui/mp/join/cancel_i.png new file mode 100644 index 00000000..ae1dc56e Binary files /dev/null and b/data/ui/mp/join/cancel_i.png differ diff --git a/data/ui/mp/join/cancel_n.png b/data/ui/mp/join/cancel_n.png new file mode 100644 index 00000000..311624e4 Binary files /dev/null and b/data/ui/mp/join/cancel_n.png differ diff --git a/data/ui/mp/join/host_d.png b/data/ui/mp/join/host_d.png new file mode 100644 index 00000000..8ea6839f Binary files /dev/null and b/data/ui/mp/join/host_d.png differ diff --git a/data/ui/mp/join/host_h.png b/data/ui/mp/join/host_h.png new file mode 100644 index 00000000..ad67dfac Binary files /dev/null and b/data/ui/mp/join/host_h.png differ diff --git a/data/ui/mp/join/host_i.png b/data/ui/mp/join/host_i.png new file mode 100644 index 00000000..cc332d56 Binary files /dev/null and b/data/ui/mp/join/host_i.png differ diff --git a/data/ui/mp/join/host_n.png b/data/ui/mp/join/host_n.png new file mode 100644 index 00000000..3b9a7221 Binary files /dev/null and b/data/ui/mp/join/host_n.png differ diff --git a/data/ui/mp/join/join_d.png b/data/ui/mp/join/join_d.png new file mode 100644 index 00000000..15ec163d Binary files /dev/null and b/data/ui/mp/join/join_d.png differ diff --git a/data/ui/mp/join/join_h.png b/data/ui/mp/join/join_h.png new file mode 100644 index 00000000..a4070f3c Binary files /dev/null and b/data/ui/mp/join/join_h.png differ diff --git a/data/ui/mp/join/join_i.png b/data/ui/mp/join/join_i.png new file mode 100644 index 00000000..0b49e5b7 Binary files /dev/null and b/data/ui/mp/join/join_i.png differ diff --git a/data/ui/mp/join/join_n.png b/data/ui/mp/join/join_n.png new file mode 100644 index 00000000..d4d6f53d Binary files /dev/null and b/data/ui/mp/join/join_n.png differ diff --git a/data/ui/mp/join/leave_d.png b/data/ui/mp/join/leave_d.png new file mode 100644 index 00000000..6d38c603 Binary files /dev/null and b/data/ui/mp/join/leave_d.png differ diff --git a/data/ui/mp/join/leave_h.png b/data/ui/mp/join/leave_h.png new file mode 100644 index 00000000..84bb45ea Binary files /dev/null and b/data/ui/mp/join/leave_h.png differ diff --git a/data/ui/mp/join/leave_i.png b/data/ui/mp/join/leave_i.png new file mode 100644 index 00000000..ca42c13b Binary files /dev/null and b/data/ui/mp/join/leave_i.png differ diff --git a/data/ui/mp/join/leave_n.png b/data/ui/mp/join/leave_n.png new file mode 100644 index 00000000..f3079e6e Binary files /dev/null and b/data/ui/mp/join/leave_n.png differ diff --git a/data/ui/mp/join/refresh/refresh-1_d.png b/data/ui/mp/join/refresh/refresh-1_d.png new file mode 100644 index 00000000..11d4db95 Binary files /dev/null and b/data/ui/mp/join/refresh/refresh-1_d.png differ diff --git a/data/ui/mp/join/refresh/refresh-1_h.png b/data/ui/mp/join/refresh/refresh-1_h.png new file mode 100644 index 00000000..533e116e Binary files /dev/null and b/data/ui/mp/join/refresh/refresh-1_h.png differ diff --git a/data/ui/mp/join/refresh/refresh-1_i.png b/data/ui/mp/join/refresh/refresh-1_i.png new file mode 100644 index 00000000..ab187733 Binary files /dev/null and b/data/ui/mp/join/refresh/refresh-1_i.png differ diff --git a/data/ui/mp/join/refresh/refresh-1_n.png b/data/ui/mp/join/refresh/refresh-1_n.png new file mode 100644 index 00000000..50585503 Binary files /dev/null and b/data/ui/mp/join/refresh/refresh-1_n.png differ diff --git a/data/ui/mp/join/save_d.png b/data/ui/mp/join/save_d.png new file mode 100644 index 00000000..3a876977 Binary files /dev/null and b/data/ui/mp/join/save_d.png differ diff --git a/data/ui/mp/join/save_h.png b/data/ui/mp/join/save_h.png new file mode 100644 index 00000000..200229f9 Binary files /dev/null and b/data/ui/mp/join/save_h.png differ diff --git a/data/ui/mp/join/save_i.png b/data/ui/mp/join/save_i.png new file mode 100644 index 00000000..896ff1b9 Binary files /dev/null and b/data/ui/mp/join/save_i.png differ diff --git a/data/ui/mp/join/save_n.png b/data/ui/mp/join/save_n.png new file mode 100644 index 00000000..229aa267 Binary files /dev/null and b/data/ui/mp/join/save_n.png differ diff --git a/data/ui/mp/join/textbar.png b/data/ui/mp/join/textbar.png new file mode 100644 index 00000000..fedea508 Binary files /dev/null and b/data/ui/mp/join/textbar.png differ diff --git a/data/ui/mp/join/username_d.png b/data/ui/mp/join/username_d.png new file mode 100644 index 00000000..069edceb Binary files /dev/null and b/data/ui/mp/join/username_d.png differ diff --git a/data/ui/mp/join/username_h.png b/data/ui/mp/join/username_h.png new file mode 100644 index 00000000..a8b0d02c Binary files /dev/null and b/data/ui/mp/join/username_h.png differ diff --git a/data/ui/mp/join/username_n.png b/data/ui/mp/join/username_n.png new file mode 100644 index 00000000..c047011c Binary files /dev/null and b/data/ui/mp/join/username_n.png differ diff --git a/data/ui/mp/join/window.png b/data/ui/mp/join/window.png new file mode 100644 index 00000000..db833417 Binary files /dev/null and b/data/ui/mp/join/window.png differ diff --git a/data/ui/mp/join/window2.png b/data/ui/mp/join/window2.png new file mode 100644 index 00000000..940ed3d2 Binary files /dev/null and b/data/ui/mp/join/window2.png differ diff --git a/data/ui/mp/kickban/kick_d.png b/data/ui/mp/kickban/kick_d.png new file mode 100644 index 00000000..7c0c3c91 Binary files /dev/null and b/data/ui/mp/kickban/kick_d.png differ diff --git a/data/ui/mp/kickban/kick_h.png b/data/ui/mp/kickban/kick_h.png new file mode 100644 index 00000000..ed8d51ea Binary files /dev/null and b/data/ui/mp/kickban/kick_h.png differ diff --git a/data/ui/mp/kickban/kick_i.png b/data/ui/mp/kickban/kick_i.png new file mode 100644 index 00000000..ba053cda Binary files /dev/null and b/data/ui/mp/kickban/kick_i.png differ diff --git a/data/ui/mp/kickban/kick_n.png b/data/ui/mp/kickban/kick_n.png new file mode 100644 index 00000000..10514bb7 Binary files /dev/null and b/data/ui/mp/kickban/kick_n.png differ diff --git a/data/ui/mp/kickban/window.png b/data/ui/mp/kickban/window.png new file mode 100644 index 00000000..d06a1732 Binary files /dev/null and b/data/ui/mp/kickban/window.png differ diff --git a/data/ui/mp/lb_chkbx_d.png b/data/ui/mp/lb_chkbx_d.png new file mode 100644 index 00000000..51ed12d3 Binary files /dev/null and b/data/ui/mp/lb_chkbx_d.png differ diff --git a/data/ui/mp/lb_chkbx_di_h.png b/data/ui/mp/lb_chkbx_di_h.png new file mode 100644 index 00000000..3613cef9 Binary files /dev/null and b/data/ui/mp/lb_chkbx_di_h.png differ diff --git a/data/ui/mp/lb_chkbx_di_i.png b/data/ui/mp/lb_chkbx_di_i.png new file mode 100644 index 00000000..3613cef9 Binary files /dev/null and b/data/ui/mp/lb_chkbx_di_i.png differ diff --git a/data/ui/mp/lb_chkbx_di_n.png b/data/ui/mp/lb_chkbx_di_n.png new file mode 100644 index 00000000..3613cef9 Binary files /dev/null and b/data/ui/mp/lb_chkbx_di_n.png differ diff --git a/data/ui/mp/lb_chkbx_h.png b/data/ui/mp/lb_chkbx_h.png new file mode 100644 index 00000000..ac43e81a Binary files /dev/null and b/data/ui/mp/lb_chkbx_h.png differ diff --git a/data/ui/mp/lb_chkbx_i.png b/data/ui/mp/lb_chkbx_i.png new file mode 100644 index 00000000..9f8342ca Binary files /dev/null and b/data/ui/mp/lb_chkbx_i.png differ diff --git a/data/ui/mp/lb_chkbx_n.png b/data/ui/mp/lb_chkbx_n.png new file mode 100644 index 00000000..e4d78667 Binary files /dev/null and b/data/ui/mp/lb_chkbx_n.png differ diff --git a/data/ui/mp/play/choose_d.png b/data/ui/mp/play/choose_d.png new file mode 100644 index 00000000..31f39a5b Binary files /dev/null and b/data/ui/mp/play/choose_d.png differ diff --git a/data/ui/mp/play/choose_h.png b/data/ui/mp/play/choose_h.png new file mode 100644 index 00000000..43ad5655 Binary files /dev/null and b/data/ui/mp/play/choose_h.png differ diff --git a/data/ui/mp/play/choose_i.png b/data/ui/mp/play/choose_i.png new file mode 100644 index 00000000..1cbae3a2 Binary files /dev/null and b/data/ui/mp/play/choose_i.png differ diff --git a/data/ui/mp/play/choose_n.png b/data/ui/mp/play/choose_n.png new file mode 100644 index 00000000..2c983640 Binary files /dev/null and b/data/ui/mp/play/choose_n.png differ diff --git a/data/ui/mp/play/connection-high.png b/data/ui/mp/play/connection-high.png new file mode 100644 index 00000000..10cf5cd3 Binary files /dev/null and b/data/ui/mp/play/connection-high.png differ diff --git a/data/ui/mp/play/connection-low.png b/data/ui/mp/play/connection-low.png new file mode 100644 index 00000000..bb1c33ff Binary files /dev/null and b/data/ui/mp/play/connection-low.png differ diff --git a/data/ui/mp/play/connection-matanny.png b/data/ui/mp/play/connection-matanny.png new file mode 100644 index 00000000..0ca616f6 Binary files /dev/null and b/data/ui/mp/play/connection-matanny.png differ diff --git a/data/ui/mp/play/connection-medium.png b/data/ui/mp/play/connection-medium.png new file mode 100644 index 00000000..e768a847 Binary files /dev/null and b/data/ui/mp/play/connection-medium.png differ diff --git a/data/ui/mp/play/connection-unknown.png b/data/ui/mp/play/connection-unknown.png new file mode 100644 index 00000000..8bb700bf Binary files /dev/null and b/data/ui/mp/play/connection-unknown.png differ diff --git a/data/ui/mp/play/difficulty_advanced_d.png b/data/ui/mp/play/difficulty_advanced_d.png new file mode 100644 index 00000000..9c9972b7 Binary files /dev/null and b/data/ui/mp/play/difficulty_advanced_d.png differ diff --git a/data/ui/mp/play/difficulty_advanced_h.png b/data/ui/mp/play/difficulty_advanced_h.png new file mode 100644 index 00000000..4f4db41d Binary files /dev/null and b/data/ui/mp/play/difficulty_advanced_h.png differ diff --git a/data/ui/mp/play/difficulty_advanced_i.png b/data/ui/mp/play/difficulty_advanced_i.png new file mode 100644 index 00000000..85143a64 Binary files /dev/null and b/data/ui/mp/play/difficulty_advanced_i.png differ diff --git a/data/ui/mp/play/difficulty_advanced_n.png b/data/ui/mp/play/difficulty_advanced_n.png new file mode 100644 index 00000000..092e0279 Binary files /dev/null and b/data/ui/mp/play/difficulty_advanced_n.png differ diff --git a/data/ui/mp/play/difficulty_beginner_d.png b/data/ui/mp/play/difficulty_beginner_d.png new file mode 100644 index 00000000..2cbabb39 Binary files /dev/null and b/data/ui/mp/play/difficulty_beginner_d.png differ diff --git a/data/ui/mp/play/difficulty_beginner_h.png b/data/ui/mp/play/difficulty_beginner_h.png new file mode 100644 index 00000000..92bbf212 Binary files /dev/null and b/data/ui/mp/play/difficulty_beginner_h.png differ diff --git a/data/ui/mp/play/difficulty_beginner_i.png b/data/ui/mp/play/difficulty_beginner_i.png new file mode 100644 index 00000000..8125fdbf Binary files /dev/null and b/data/ui/mp/play/difficulty_beginner_i.png differ diff --git a/data/ui/mp/play/difficulty_beginner_n.png b/data/ui/mp/play/difficulty_beginner_n.png new file mode 100644 index 00000000..0b2f8934 Binary files /dev/null and b/data/ui/mp/play/difficulty_beginner_n.png differ diff --git a/data/ui/mp/play/difficulty_custom_d.png b/data/ui/mp/play/difficulty_custom_d.png new file mode 100644 index 00000000..5f764f54 Binary files /dev/null and b/data/ui/mp/play/difficulty_custom_d.png differ diff --git a/data/ui/mp/play/difficulty_custom_h.png b/data/ui/mp/play/difficulty_custom_h.png new file mode 100644 index 00000000..29daa365 Binary files /dev/null and b/data/ui/mp/play/difficulty_custom_h.png differ diff --git a/data/ui/mp/play/difficulty_custom_i.png b/data/ui/mp/play/difficulty_custom_i.png new file mode 100644 index 00000000..d40ff061 Binary files /dev/null and b/data/ui/mp/play/difficulty_custom_i.png differ diff --git a/data/ui/mp/play/difficulty_custom_n.png b/data/ui/mp/play/difficulty_custom_n.png new file mode 100644 index 00000000..4bd95797 Binary files /dev/null and b/data/ui/mp/play/difficulty_custom_n.png differ diff --git a/data/ui/mp/play/difficulty_d.png b/data/ui/mp/play/difficulty_d.png new file mode 100644 index 00000000..37887d6b Binary files /dev/null and b/data/ui/mp/play/difficulty_d.png differ diff --git a/data/ui/mp/play/difficulty_h.png b/data/ui/mp/play/difficulty_h.png new file mode 100644 index 00000000..7e57ff96 Binary files /dev/null and b/data/ui/mp/play/difficulty_h.png differ diff --git a/data/ui/mp/play/difficulty_i.png b/data/ui/mp/play/difficulty_i.png new file mode 100644 index 00000000..3e75e2df Binary files /dev/null and b/data/ui/mp/play/difficulty_i.png differ diff --git a/data/ui/mp/play/difficulty_intermediate_d.png b/data/ui/mp/play/difficulty_intermediate_d.png new file mode 100644 index 00000000..c94b1937 Binary files /dev/null and b/data/ui/mp/play/difficulty_intermediate_d.png differ diff --git a/data/ui/mp/play/difficulty_intermediate_h.png b/data/ui/mp/play/difficulty_intermediate_h.png new file mode 100644 index 00000000..16e5ea65 Binary files /dev/null and b/data/ui/mp/play/difficulty_intermediate_h.png differ diff --git a/data/ui/mp/play/difficulty_intermediate_i.png b/data/ui/mp/play/difficulty_intermediate_i.png new file mode 100644 index 00000000..84429ee3 Binary files /dev/null and b/data/ui/mp/play/difficulty_intermediate_i.png differ diff --git a/data/ui/mp/play/difficulty_intermediate_n.png b/data/ui/mp/play/difficulty_intermediate_n.png new file mode 100644 index 00000000..85674194 Binary files /dev/null and b/data/ui/mp/play/difficulty_intermediate_n.png differ diff --git a/data/ui/mp/play/difficulty_n.png b/data/ui/mp/play/difficulty_n.png new file mode 100644 index 00000000..cfab5284 Binary files /dev/null and b/data/ui/mp/play/difficulty_n.png differ diff --git a/data/ui/mp/play/difficultymenu_d.png b/data/ui/mp/play/difficultymenu_d.png new file mode 100644 index 00000000..c97514df Binary files /dev/null and b/data/ui/mp/play/difficultymenu_d.png differ diff --git a/data/ui/mp/play/difficultymenu_h.png b/data/ui/mp/play/difficultymenu_h.png new file mode 100644 index 00000000..c97514df Binary files /dev/null and b/data/ui/mp/play/difficultymenu_h.png differ diff --git a/data/ui/mp/play/difficultymenu_n.png b/data/ui/mp/play/difficultymenu_n.png new file mode 100644 index 00000000..c97514df Binary files /dev/null and b/data/ui/mp/play/difficultymenu_n.png differ diff --git a/data/ui/mp/play/difficultysel_d.png b/data/ui/mp/play/difficultysel_d.png new file mode 100644 index 00000000..71e573b8 Binary files /dev/null and b/data/ui/mp/play/difficultysel_d.png differ diff --git a/data/ui/mp/play/difficultysel_h.png b/data/ui/mp/play/difficultysel_h.png new file mode 100644 index 00000000..ec6c68a6 Binary files /dev/null and b/data/ui/mp/play/difficultysel_h.png differ diff --git a/data/ui/mp/play/difficultysel_i.png b/data/ui/mp/play/difficultysel_i.png new file mode 100644 index 00000000..13fb8ffc Binary files /dev/null and b/data/ui/mp/play/difficultysel_i.png differ diff --git a/data/ui/mp/play/difficultysel_n.png b/data/ui/mp/play/difficultysel_n.png new file mode 100644 index 00000000..7ac03810 Binary files /dev/null and b/data/ui/mp/play/difficultysel_n.png differ diff --git a/data/ui/mp/play/kick_d.png b/data/ui/mp/play/kick_d.png new file mode 100644 index 00000000..68b6a72e Binary files /dev/null and b/data/ui/mp/play/kick_d.png differ diff --git a/data/ui/mp/play/kick_h.png b/data/ui/mp/play/kick_h.png new file mode 100644 index 00000000..3a35c4a9 Binary files /dev/null and b/data/ui/mp/play/kick_h.png differ diff --git a/data/ui/mp/play/kick_i.png b/data/ui/mp/play/kick_i.png new file mode 100644 index 00000000..3e84f16b Binary files /dev/null and b/data/ui/mp/play/kick_i.png differ diff --git a/data/ui/mp/play/kick_n.png b/data/ui/mp/play/kick_n.png new file mode 100644 index 00000000..f49c5c4f Binary files /dev/null and b/data/ui/mp/play/kick_n.png differ diff --git a/data/ui/mp/play/leave_d.png b/data/ui/mp/play/leave_d.png new file mode 100644 index 00000000..3870d220 Binary files /dev/null and b/data/ui/mp/play/leave_d.png differ diff --git a/data/ui/mp/play/leave_h.png b/data/ui/mp/play/leave_h.png new file mode 100644 index 00000000..5b122bfc Binary files /dev/null and b/data/ui/mp/play/leave_h.png differ diff --git a/data/ui/mp/play/leave_i.png b/data/ui/mp/play/leave_i.png new file mode 100644 index 00000000..e731bcbf Binary files /dev/null and b/data/ui/mp/play/leave_i.png differ diff --git a/data/ui/mp/play/leave_n.png b/data/ui/mp/play/leave_n.png new file mode 100644 index 00000000..0aef23d0 Binary files /dev/null and b/data/ui/mp/play/leave_n.png differ diff --git a/data/ui/mp/play/levelframe.png b/data/ui/mp/play/levelframe.png new file mode 100644 index 00000000..20ade198 Binary files /dev/null and b/data/ui/mp/play/levelframe.png differ diff --git a/data/ui/mp/play/marble_d.png b/data/ui/mp/play/marble_d.png new file mode 100644 index 00000000..5070b884 Binary files /dev/null and b/data/ui/mp/play/marble_d.png differ diff --git a/data/ui/mp/play/marble_h.png b/data/ui/mp/play/marble_h.png new file mode 100644 index 00000000..e383438f Binary files /dev/null and b/data/ui/mp/play/marble_h.png differ diff --git a/data/ui/mp/play/marble_i.png b/data/ui/mp/play/marble_i.png new file mode 100644 index 00000000..12dad5e9 Binary files /dev/null and b/data/ui/mp/play/marble_i.png differ diff --git a/data/ui/mp/play/marble_n.png b/data/ui/mp/play/marble_n.png new file mode 100644 index 00000000..f97e2b4e Binary files /dev/null and b/data/ui/mp/play/marble_n.png differ diff --git a/data/ui/mp/play/moremenu.png b/data/ui/mp/play/moremenu.png new file mode 100644 index 00000000..a4382624 Binary files /dev/null and b/data/ui/mp/play/moremenu.png differ diff --git a/data/ui/mp/play/moremenu_d.png b/data/ui/mp/play/moremenu_d.png new file mode 100644 index 00000000..a4382624 Binary files /dev/null and b/data/ui/mp/play/moremenu_d.png differ diff --git a/data/ui/mp/play/moremenu_n.png b/data/ui/mp/play/moremenu_n.png new file mode 100644 index 00000000..a4382624 Binary files /dev/null and b/data/ui/mp/play/moremenu_n.png differ diff --git a/data/ui/mp/play/next_d.png b/data/ui/mp/play/next_d.png new file mode 100644 index 00000000..8b5e452d Binary files /dev/null and b/data/ui/mp/play/next_d.png differ diff --git a/data/ui/mp/play/next_h.png b/data/ui/mp/play/next_h.png new file mode 100644 index 00000000..a710a603 Binary files /dev/null and b/data/ui/mp/play/next_h.png differ diff --git a/data/ui/mp/play/next_i.png b/data/ui/mp/play/next_i.png new file mode 100644 index 00000000..72f9dd65 Binary files /dev/null and b/data/ui/mp/play/next_i.png differ diff --git a/data/ui/mp/play/next_n.png b/data/ui/mp/play/next_n.png new file mode 100644 index 00000000..04603c9a Binary files /dev/null and b/data/ui/mp/play/next_n.png differ diff --git a/data/ui/mp/play/nextcat_d.png b/data/ui/mp/play/nextcat_d.png new file mode 100644 index 00000000..05a0710a Binary files /dev/null and b/data/ui/mp/play/nextcat_d.png differ diff --git a/data/ui/mp/play/nextcat_h.png b/data/ui/mp/play/nextcat_h.png new file mode 100644 index 00000000..87883e7a Binary files /dev/null and b/data/ui/mp/play/nextcat_h.png differ diff --git a/data/ui/mp/play/nextcat_i.png b/data/ui/mp/play/nextcat_i.png new file mode 100644 index 00000000..c4d121ff Binary files /dev/null and b/data/ui/mp/play/nextcat_i.png differ diff --git a/data/ui/mp/play/nextcat_n.png b/data/ui/mp/play/nextcat_n.png new file mode 100644 index 00000000..0a41972f Binary files /dev/null and b/data/ui/mp/play/nextcat_n.png differ diff --git a/data/ui/mp/play/platform_android.png b/data/ui/mp/play/platform_android.png new file mode 100644 index 00000000..4f78b698 Binary files /dev/null and b/data/ui/mp/play/platform_android.png differ diff --git a/data/ui/mp/play/platform_android_white.png b/data/ui/mp/play/platform_android_white.png new file mode 100644 index 00000000..342dd87b Binary files /dev/null and b/data/ui/mp/play/platform_android_white.png differ diff --git a/data/ui/mp/play/platform_desktop.png b/data/ui/mp/play/platform_desktop.png new file mode 100644 index 00000000..46ce0111 Binary files /dev/null and b/data/ui/mp/play/platform_desktop.png differ diff --git a/data/ui/mp/play/platform_desktop_white.png b/data/ui/mp/play/platform_desktop_white.png new file mode 100644 index 00000000..319801d0 Binary files /dev/null and b/data/ui/mp/play/platform_desktop_white.png differ diff --git a/data/ui/mp/play/platform_mac.png b/data/ui/mp/play/platform_mac.png new file mode 100644 index 00000000..009915ee Binary files /dev/null and b/data/ui/mp/play/platform_mac.png differ diff --git a/data/ui/mp/play/platform_mac_white.png b/data/ui/mp/play/platform_mac_white.png new file mode 100644 index 00000000..90907af5 Binary files /dev/null and b/data/ui/mp/play/platform_mac_white.png differ diff --git a/data/ui/mp/play/platform_unknown.png b/data/ui/mp/play/platform_unknown.png new file mode 100644 index 00000000..8504eeef Binary files /dev/null and b/data/ui/mp/play/platform_unknown.png differ diff --git a/data/ui/mp/play/platform_unknown_white.png b/data/ui/mp/play/platform_unknown_white.png new file mode 100644 index 00000000..07f54b8f Binary files /dev/null and b/data/ui/mp/play/platform_unknown_white.png differ diff --git a/data/ui/mp/play/platform_web.png b/data/ui/mp/play/platform_web.png new file mode 100644 index 00000000..d1e087d1 Binary files /dev/null and b/data/ui/mp/play/platform_web.png differ diff --git a/data/ui/mp/play/platform_web_white.png b/data/ui/mp/play/platform_web_white.png new file mode 100644 index 00000000..6a30a2f3 Binary files /dev/null and b/data/ui/mp/play/platform_web_white.png differ diff --git a/data/ui/mp/play/play_d.png b/data/ui/mp/play/play_d.png new file mode 100644 index 00000000..623b70c0 Binary files /dev/null and b/data/ui/mp/play/play_d.png differ diff --git a/data/ui/mp/play/play_h.png b/data/ui/mp/play/play_h.png new file mode 100644 index 00000000..6aa4d4aa Binary files /dev/null and b/data/ui/mp/play/play_h.png differ diff --git a/data/ui/mp/play/play_i.png b/data/ui/mp/play/play_i.png new file mode 100644 index 00000000..92022e8c Binary files /dev/null and b/data/ui/mp/play/play_i.png differ diff --git a/data/ui/mp/play/play_n.png b/data/ui/mp/play/play_n.png new file mode 100644 index 00000000..8d41feeb Binary files /dev/null and b/data/ui/mp/play/play_n.png differ diff --git a/data/ui/mp/play/playersettings_d.png b/data/ui/mp/play/playersettings_d.png new file mode 100644 index 00000000..0e31985e Binary files /dev/null and b/data/ui/mp/play/playersettings_d.png differ diff --git a/data/ui/mp/play/playersettings_h.png b/data/ui/mp/play/playersettings_h.png new file mode 100644 index 00000000..6dc4fcfa Binary files /dev/null and b/data/ui/mp/play/playersettings_h.png differ diff --git a/data/ui/mp/play/playersettings_i.png b/data/ui/mp/play/playersettings_i.png new file mode 100644 index 00000000..1f12c6bd Binary files /dev/null and b/data/ui/mp/play/playersettings_i.png differ diff --git a/data/ui/mp/play/playersettings_n.png b/data/ui/mp/play/playersettings_n.png new file mode 100644 index 00000000..dd537ce3 Binary files /dev/null and b/data/ui/mp/play/playersettings_n.png differ diff --git a/data/ui/mp/play/preload_d.png b/data/ui/mp/play/preload_d.png new file mode 100644 index 00000000..a8c5b5b0 Binary files /dev/null and b/data/ui/mp/play/preload_d.png differ diff --git a/data/ui/mp/play/preload_h.png b/data/ui/mp/play/preload_h.png new file mode 100644 index 00000000..ad8397cf Binary files /dev/null and b/data/ui/mp/play/preload_h.png differ diff --git a/data/ui/mp/play/preload_i.png b/data/ui/mp/play/preload_i.png new file mode 100644 index 00000000..941dd31e Binary files /dev/null and b/data/ui/mp/play/preload_i.png differ diff --git a/data/ui/mp/play/preload_n.png b/data/ui/mp/play/preload_n.png new file mode 100644 index 00000000..b9368d74 Binary files /dev/null and b/data/ui/mp/play/preload_n.png differ diff --git a/data/ui/mp/play/prev_d.png b/data/ui/mp/play/prev_d.png new file mode 100644 index 00000000..8ac239e5 Binary files /dev/null and b/data/ui/mp/play/prev_d.png differ diff --git a/data/ui/mp/play/prev_h.png b/data/ui/mp/play/prev_h.png new file mode 100644 index 00000000..51a74784 Binary files /dev/null and b/data/ui/mp/play/prev_h.png differ diff --git a/data/ui/mp/play/prev_i.png b/data/ui/mp/play/prev_i.png new file mode 100644 index 00000000..e3cc44cf Binary files /dev/null and b/data/ui/mp/play/prev_i.png differ diff --git a/data/ui/mp/play/prev_n.png b/data/ui/mp/play/prev_n.png new file mode 100644 index 00000000..3654e286 Binary files /dev/null and b/data/ui/mp/play/prev_n.png differ diff --git a/data/ui/mp/play/prevcat_d.png b/data/ui/mp/play/prevcat_d.png new file mode 100644 index 00000000..89df61cb Binary files /dev/null and b/data/ui/mp/play/prevcat_d.png differ diff --git a/data/ui/mp/play/prevcat_h.png b/data/ui/mp/play/prevcat_h.png new file mode 100644 index 00000000..daed9300 Binary files /dev/null and b/data/ui/mp/play/prevcat_h.png differ diff --git a/data/ui/mp/play/prevcat_i.png b/data/ui/mp/play/prevcat_i.png new file mode 100644 index 00000000..9158391b Binary files /dev/null and b/data/ui/mp/play/prevcat_i.png differ diff --git a/data/ui/mp/play/prevcat_n.png b/data/ui/mp/play/prevcat_n.png new file mode 100644 index 00000000..2e8583e6 Binary files /dev/null and b/data/ui/mp/play/prevcat_n.png differ diff --git a/data/ui/mp/play/search_d.png b/data/ui/mp/play/search_d.png new file mode 100644 index 00000000..170bbe5a Binary files /dev/null and b/data/ui/mp/play/search_d.png differ diff --git a/data/ui/mp/play/search_h.png b/data/ui/mp/play/search_h.png new file mode 100644 index 00000000..d1a4e3c5 Binary files /dev/null and b/data/ui/mp/play/search_h.png differ diff --git a/data/ui/mp/play/search_i.png b/data/ui/mp/play/search_i.png new file mode 100644 index 00000000..0549e3f4 Binary files /dev/null and b/data/ui/mp/play/search_i.png differ diff --git a/data/ui/mp/play/search_n.png b/data/ui/mp/play/search_n.png new file mode 100644 index 00000000..f629fc04 Binary files /dev/null and b/data/ui/mp/play/search_n.png differ diff --git a/data/ui/mp/play/select_d.png b/data/ui/mp/play/select_d.png new file mode 100644 index 00000000..8bf3a71d Binary files /dev/null and b/data/ui/mp/play/select_d.png differ diff --git a/data/ui/mp/play/select_h.png b/data/ui/mp/play/select_h.png new file mode 100644 index 00000000..bb07f526 Binary files /dev/null and b/data/ui/mp/play/select_h.png differ diff --git a/data/ui/mp/play/settings_d.png b/data/ui/mp/play/settings_d.png new file mode 100644 index 00000000..c587a5a5 Binary files /dev/null and b/data/ui/mp/play/settings_d.png differ diff --git a/data/ui/mp/play/settings_h.png b/data/ui/mp/play/settings_h.png new file mode 100644 index 00000000..4dc9c33b Binary files /dev/null and b/data/ui/mp/play/settings_h.png differ diff --git a/data/ui/mp/play/settings_i.png b/data/ui/mp/play/settings_i.png new file mode 100644 index 00000000..78ec89af Binary files /dev/null and b/data/ui/mp/play/settings_i.png differ diff --git a/data/ui/mp/play/settings_n.png b/data/ui/mp/play/settings_n.png new file mode 100644 index 00000000..e6d7027d Binary files /dev/null and b/data/ui/mp/play/settings_n.png differ diff --git a/data/ui/mp/play/spectator.png b/data/ui/mp/play/spectator.png new file mode 100644 index 00000000..678aaaec Binary files /dev/null and b/data/ui/mp/play/spectator.png differ diff --git a/data/ui/mp/play/window.png b/data/ui/mp/play/window.png new file mode 100644 index 00000000..f2ee7c3b Binary files /dev/null and b/data/ui/mp/play/window.png differ diff --git a/data/ui/mp/pre/leave_d.png b/data/ui/mp/pre/leave_d.png new file mode 100644 index 00000000..54432ccf Binary files /dev/null and b/data/ui/mp/pre/leave_d.png differ diff --git a/data/ui/mp/pre/leave_h.png b/data/ui/mp/pre/leave_h.png new file mode 100644 index 00000000..accb2711 Binary files /dev/null and b/data/ui/mp/pre/leave_h.png differ diff --git a/data/ui/mp/pre/leave_i.png b/data/ui/mp/pre/leave_i.png new file mode 100644 index 00000000..b4b656fb Binary files /dev/null and b/data/ui/mp/pre/leave_i.png differ diff --git a/data/ui/mp/pre/leave_n.png b/data/ui/mp/pre/leave_n.png new file mode 100644 index 00000000..aec924f9 Binary files /dev/null and b/data/ui/mp/pre/leave_n.png differ diff --git a/data/ui/mp/pre/play_d.png b/data/ui/mp/pre/play_d.png new file mode 100644 index 00000000..57d0f7e6 Binary files /dev/null and b/data/ui/mp/pre/play_d.png differ diff --git a/data/ui/mp/pre/play_h.png b/data/ui/mp/pre/play_h.png new file mode 100644 index 00000000..0ce323fa Binary files /dev/null and b/data/ui/mp/pre/play_h.png differ diff --git a/data/ui/mp/pre/play_i.png b/data/ui/mp/pre/play_i.png new file mode 100644 index 00000000..3a613ca4 Binary files /dev/null and b/data/ui/mp/pre/play_i.png differ diff --git a/data/ui/mp/pre/play_n.png b/data/ui/mp/pre/play_n.png new file mode 100644 index 00000000..254b33a3 Binary files /dev/null and b/data/ui/mp/pre/play_n.png differ diff --git a/data/ui/mp/pre/ready_d.png b/data/ui/mp/pre/ready_d.png new file mode 100644 index 00000000..76562659 Binary files /dev/null and b/data/ui/mp/pre/ready_d.png differ diff --git a/data/ui/mp/pre/ready_h.png b/data/ui/mp/pre/ready_h.png new file mode 100644 index 00000000..b7093f58 Binary files /dev/null and b/data/ui/mp/pre/ready_h.png differ diff --git a/data/ui/mp/pre/ready_n.png b/data/ui/mp/pre/ready_n.png new file mode 100644 index 00000000..fe271c81 Binary files /dev/null and b/data/ui/mp/pre/ready_n.png differ diff --git a/data/ui/mp/pre/spectate_d.png b/data/ui/mp/pre/spectate_d.png new file mode 100644 index 00000000..fddf81ae Binary files /dev/null and b/data/ui/mp/pre/spectate_d.png differ diff --git a/data/ui/mp/pre/spectate_h.png b/data/ui/mp/pre/spectate_h.png new file mode 100644 index 00000000..52e039ef Binary files /dev/null and b/data/ui/mp/pre/spectate_h.png differ diff --git a/data/ui/mp/pre/spectate_i.png b/data/ui/mp/pre/spectate_i.png new file mode 100644 index 00000000..84ff7c65 Binary files /dev/null and b/data/ui/mp/pre/spectate_i.png differ diff --git a/data/ui/mp/pre/spectate_n.png b/data/ui/mp/pre/spectate_n.png new file mode 100644 index 00000000..102a5cc5 Binary files /dev/null and b/data/ui/mp/pre/spectate_n.png differ diff --git a/data/ui/mp/pre/window.png b/data/ui/mp/pre/window.png new file mode 100644 index 00000000..f37895f2 Binary files /dev/null and b/data/ui/mp/pre/window.png differ diff --git a/data/ui/mp/radar/EndPad.png b/data/ui/mp/radar/EndPad.png new file mode 100644 index 00000000..49e5c166 Binary files /dev/null and b/data/ui/mp/radar/EndPad.png differ diff --git a/data/ui/mp/radar/GemItem.png b/data/ui/mp/radar/GemItem.png new file mode 100644 index 00000000..a8e2cc9e Binary files /dev/null and b/data/ui/mp/radar/GemItem.png differ diff --git a/data/ui/mp/radar/GemItemBase.png b/data/ui/mp/radar/GemItemBase.png new file mode 100644 index 00000000..a8e2cc9e Binary files /dev/null and b/data/ui/mp/radar/GemItemBase.png differ diff --git a/data/ui/mp/radar/GemItemBlack.png b/data/ui/mp/radar/GemItemBlack.png new file mode 100644 index 00000000..edd2a921 Binary files /dev/null and b/data/ui/mp/radar/GemItemBlack.png differ diff --git a/data/ui/mp/radar/GemItemBlue.png b/data/ui/mp/radar/GemItemBlue.png new file mode 100644 index 00000000..c318bdcf Binary files /dev/null and b/data/ui/mp/radar/GemItemBlue.png differ diff --git a/data/ui/mp/radar/GemItemGreen.png b/data/ui/mp/radar/GemItemGreen.png new file mode 100644 index 00000000..e59ae344 Binary files /dev/null and b/data/ui/mp/radar/GemItemGreen.png differ diff --git a/data/ui/mp/radar/GemItemOrange.png b/data/ui/mp/radar/GemItemOrange.png new file mode 100644 index 00000000..c491517b Binary files /dev/null and b/data/ui/mp/radar/GemItemOrange.png differ diff --git a/data/ui/mp/radar/GemItemPink.png b/data/ui/mp/radar/GemItemPink.png new file mode 100644 index 00000000..a8e2cc9e Binary files /dev/null and b/data/ui/mp/radar/GemItemPink.png differ diff --git a/data/ui/mp/radar/GemItemPlatinum.png b/data/ui/mp/radar/GemItemPlatinum.png new file mode 100644 index 00000000..141afc6a Binary files /dev/null and b/data/ui/mp/radar/GemItemPlatinum.png differ diff --git a/data/ui/mp/radar/GemItemPurple.png b/data/ui/mp/radar/GemItemPurple.png new file mode 100644 index 00000000..feb599cf Binary files /dev/null and b/data/ui/mp/radar/GemItemPurple.png differ diff --git a/data/ui/mp/radar/GemItemRed.png b/data/ui/mp/radar/GemItemRed.png new file mode 100644 index 00000000..cb6754a9 Binary files /dev/null and b/data/ui/mp/radar/GemItemRed.png differ diff --git a/data/ui/mp/radar/GemItemTurquoise.png b/data/ui/mp/radar/GemItemTurquoise.png new file mode 100644 index 00000000..282bb433 Binary files /dev/null and b/data/ui/mp/radar/GemItemTurquoise.png differ diff --git a/data/ui/mp/radar/GemItemYellow.png b/data/ui/mp/radar/GemItemYellow.png new file mode 100644 index 00000000..ad440f7c Binary files /dev/null and b/data/ui/mp/radar/GemItemYellow.png differ diff --git a/data/ui/mp/radar/Radar.png b/data/ui/mp/radar/Radar.png new file mode 100644 index 00000000..fe0e7a15 Binary files /dev/null and b/data/ui/mp/radar/Radar.png differ diff --git a/data/ui/mp/search/artist_d.png b/data/ui/mp/search/artist_d.png new file mode 100644 index 00000000..0f6519f8 Binary files /dev/null and b/data/ui/mp/search/artist_d.png differ diff --git a/data/ui/mp/search/artist_h.png b/data/ui/mp/search/artist_h.png new file mode 100644 index 00000000..96471d88 Binary files /dev/null and b/data/ui/mp/search/artist_h.png differ diff --git a/data/ui/mp/search/artist_n.png b/data/ui/mp/search/artist_n.png new file mode 100644 index 00000000..d9d81878 Binary files /dev/null and b/data/ui/mp/search/artist_n.png differ diff --git a/data/ui/mp/search/cancel_d.png b/data/ui/mp/search/cancel_d.png new file mode 100644 index 00000000..70448ccb Binary files /dev/null and b/data/ui/mp/search/cancel_d.png differ diff --git a/data/ui/mp/search/cancel_h.png b/data/ui/mp/search/cancel_h.png new file mode 100644 index 00000000..2ad13b46 Binary files /dev/null and b/data/ui/mp/search/cancel_h.png differ diff --git a/data/ui/mp/search/cancel_n.png b/data/ui/mp/search/cancel_n.png new file mode 100644 index 00000000..311624e4 Binary files /dev/null and b/data/ui/mp/search/cancel_n.png differ diff --git a/data/ui/mp/search/file_d.png b/data/ui/mp/search/file_d.png new file mode 100644 index 00000000..9ab9120f Binary files /dev/null and b/data/ui/mp/search/file_d.png differ diff --git a/data/ui/mp/search/file_h.png b/data/ui/mp/search/file_h.png new file mode 100644 index 00000000..5a6a59c8 Binary files /dev/null and b/data/ui/mp/search/file_h.png differ diff --git a/data/ui/mp/search/file_n.png b/data/ui/mp/search/file_n.png new file mode 100644 index 00000000..60bcf971 Binary files /dev/null and b/data/ui/mp/search/file_n.png differ diff --git a/data/ui/mp/search/name_d.png b/data/ui/mp/search/name_d.png new file mode 100644 index 00000000..0a126cd3 Binary files /dev/null and b/data/ui/mp/search/name_d.png differ diff --git a/data/ui/mp/search/name_h.png b/data/ui/mp/search/name_h.png new file mode 100644 index 00000000..29b5359d Binary files /dev/null and b/data/ui/mp/search/name_h.png differ diff --git a/data/ui/mp/search/name_n.png b/data/ui/mp/search/name_n.png new file mode 100644 index 00000000..471b44ed Binary files /dev/null and b/data/ui/mp/search/name_n.png differ diff --git a/data/ui/mp/search/options_d.png b/data/ui/mp/search/options_d.png new file mode 100644 index 00000000..51ddfff1 Binary files /dev/null and b/data/ui/mp/search/options_d.png differ diff --git a/data/ui/mp/search/options_h.png b/data/ui/mp/search/options_h.png new file mode 100644 index 00000000..9348b906 Binary files /dev/null and b/data/ui/mp/search/options_h.png differ diff --git a/data/ui/mp/search/options_n.png b/data/ui/mp/search/options_n.png new file mode 100644 index 00000000..6ff32930 Binary files /dev/null and b/data/ui/mp/search/options_n.png differ diff --git a/data/ui/mp/search/play_d.png b/data/ui/mp/search/play_d.png new file mode 100644 index 00000000..bebfcfe5 Binary files /dev/null and b/data/ui/mp/search/play_d.png differ diff --git a/data/ui/mp/search/play_h.png b/data/ui/mp/search/play_h.png new file mode 100644 index 00000000..a18c63cc Binary files /dev/null and b/data/ui/mp/search/play_h.png differ diff --git a/data/ui/mp/search/play_i.png b/data/ui/mp/search/play_i.png new file mode 100644 index 00000000..728808c6 Binary files /dev/null and b/data/ui/mp/search/play_i.png differ diff --git a/data/ui/mp/search/play_n.png b/data/ui/mp/search/play_n.png new file mode 100644 index 00000000..e58ea956 Binary files /dev/null and b/data/ui/mp/search/play_n.png differ diff --git a/data/ui/mp/search/random_d.png b/data/ui/mp/search/random_d.png new file mode 100644 index 00000000..27416281 Binary files /dev/null and b/data/ui/mp/search/random_d.png differ diff --git a/data/ui/mp/search/random_h.png b/data/ui/mp/search/random_h.png new file mode 100644 index 00000000..56a94312 Binary files /dev/null and b/data/ui/mp/search/random_h.png differ diff --git a/data/ui/mp/search/random_n.png b/data/ui/mp/search/random_n.png new file mode 100644 index 00000000..3665b8ee Binary files /dev/null and b/data/ui/mp/search/random_n.png differ diff --git a/data/ui/mp/search/window.png b/data/ui/mp/search/window.png new file mode 100644 index 00000000..60daf333 Binary files /dev/null and b/data/ui/mp/search/window.png differ diff --git a/data/ui/mp/settings/inputbg.png b/data/ui/mp/settings/inputbg.png new file mode 100644 index 00000000..56ca6f20 Binary files /dev/null and b/data/ui/mp/settings/inputbg.png differ diff --git a/data/ui/mp/settings/minus_d.png b/data/ui/mp/settings/minus_d.png new file mode 100644 index 00000000..3e81984b Binary files /dev/null and b/data/ui/mp/settings/minus_d.png differ diff --git a/data/ui/mp/settings/minus_h.png b/data/ui/mp/settings/minus_h.png new file mode 100644 index 00000000..776b408c Binary files /dev/null and b/data/ui/mp/settings/minus_h.png differ diff --git a/data/ui/mp/settings/minus_n.png b/data/ui/mp/settings/minus_n.png new file mode 100644 index 00000000..bb8ded77 Binary files /dev/null and b/data/ui/mp/settings/minus_n.png differ diff --git a/data/ui/mp/settings/playersettings.png b/data/ui/mp/settings/playersettings.png new file mode 100644 index 00000000..ae398b21 Binary files /dev/null and b/data/ui/mp/settings/playersettings.png differ diff --git a/data/ui/mp/settings/plus_d.png b/data/ui/mp/settings/plus_d.png new file mode 100644 index 00000000..fc975464 Binary files /dev/null and b/data/ui/mp/settings/plus_d.png differ diff --git a/data/ui/mp/settings/plus_h.png b/data/ui/mp/settings/plus_h.png new file mode 100644 index 00000000..6b5b9cc6 Binary files /dev/null and b/data/ui/mp/settings/plus_h.png differ diff --git a/data/ui/mp/settings/plus_n.png b/data/ui/mp/settings/plus_n.png new file mode 100644 index 00000000..ad6315f0 Binary files /dev/null and b/data/ui/mp/settings/plus_n.png differ diff --git a/data/ui/mp/settings/serversettings.png b/data/ui/mp/settings/serversettings.png new file mode 100644 index 00000000..ecd65e15 Binary files /dev/null and b/data/ui/mp/settings/serversettings.png differ diff --git a/data/ui/mp/team/close_d.png b/data/ui/mp/team/close_d.png new file mode 100644 index 00000000..821fd129 Binary files /dev/null and b/data/ui/mp/team/close_d.png differ diff --git a/data/ui/mp/team/close_h.png b/data/ui/mp/team/close_h.png new file mode 100644 index 00000000..56bb10d3 Binary files /dev/null and b/data/ui/mp/team/close_h.png differ diff --git a/data/ui/mp/team/close_i.png b/data/ui/mp/team/close_i.png new file mode 100644 index 00000000..44a1608c Binary files /dev/null and b/data/ui/mp/team/close_i.png differ diff --git a/data/ui/mp/team/close_n.png b/data/ui/mp/team/close_n.png new file mode 100644 index 00000000..20cb0d57 Binary files /dev/null and b/data/ui/mp/team/close_n.png differ diff --git a/data/ui/mp/team/teamcreate.png b/data/ui/mp/team/teamcreate.png new file mode 100644 index 00000000..98eb00a0 Binary files /dev/null and b/data/ui/mp/team/teamcreate.png differ diff --git a/data/ui/mp/team/teaminvite.png b/data/ui/mp/team/teaminvite.png new file mode 100644 index 00000000..29f70d22 Binary files /dev/null and b/data/ui/mp/team/teaminvite.png differ diff --git a/data/ui/mp/team/teamjoin.png b/data/ui/mp/team/teamjoin.png new file mode 100644 index 00000000..e7c39def Binary files /dev/null and b/data/ui/mp/team/teamjoin.png differ diff --git a/data/ui/mp/team/teamoptions.png b/data/ui/mp/team/teamoptions.png new file mode 100644 index 00000000..b4bf6394 Binary files /dev/null and b/data/ui/mp/team/teamoptions.png differ diff --git a/data/ui/mp/team/teamselect.png b/data/ui/mp/team/teamselect.png new file mode 100644 index 00000000..0a343371 Binary files /dev/null and b/data/ui/mp/team/teamselect.png differ diff --git a/data/ui/mp/window.png b/data/ui/mp/window.png new file mode 100644 index 00000000..206a009d Binary files /dev/null and b/data/ui/mp/window.png differ diff --git a/data/ui/options/audio_drivers.png b/data/ui/options/audio_drivers.png deleted file mode 100644 index 2c3373f3..00000000 Binary files a/data/ui/options/audio_drivers.png and /dev/null differ diff --git a/data/ui/options/encode_d.png b/data/ui/options/encode_d.png deleted file mode 100644 index 1434409f..00000000 Binary files a/data/ui/options/encode_d.png and /dev/null differ diff --git a/data/ui/options/encode_h.png b/data/ui/options/encode_h.png deleted file mode 100644 index 1945aff2..00000000 Binary files a/data/ui/options/encode_h.png and /dev/null differ diff --git a/data/ui/options/encode_i.png b/data/ui/options/encode_i.png deleted file mode 100644 index 1de11523..00000000 Binary files a/data/ui/options/encode_i.png and /dev/null differ diff --git a/data/ui/options/encode_n.png b/data/ui/options/encode_n.png deleted file mode 100644 index 4c425c64..00000000 Binary files a/data/ui/options/encode_n.png and /dev/null differ diff --git a/data/ui/options/mainm_d.png b/data/ui/options/mainm_d.png deleted file mode 100644 index 6dd163b2..00000000 Binary files a/data/ui/options/mainm_d.png and /dev/null differ diff --git a/data/ui/options/mainm_h.png b/data/ui/options/mainm_h.png deleted file mode 100644 index d0651bd4..00000000 Binary files a/data/ui/options/mainm_h.png and /dev/null differ diff --git a/data/ui/options/mainm_n.png b/data/ui/options/mainm_n.png deleted file mode 100644 index a415bfe3..00000000 Binary files a/data/ui/options/mainm_n.png and /dev/null differ diff --git a/data/ui/options/optionsExtras/apply_d.png b/data/ui/options/optionsExtras/apply_d.png deleted file mode 100644 index 4813ba12..00000000 Binary files a/data/ui/options/optionsExtras/apply_d.png and /dev/null differ diff --git a/data/ui/options/optionsExtras/apply_h.png b/data/ui/options/optionsExtras/apply_h.png deleted file mode 100644 index 74cacae7..00000000 Binary files a/data/ui/options/optionsExtras/apply_h.png and /dev/null differ diff --git a/data/ui/options/optionsExtras/apply_n.png b/data/ui/options/optionsExtras/apply_n.png deleted file mode 100644 index a2e4c53b..00000000 Binary files a/data/ui/options/optionsExtras/apply_n.png and /dev/null differ diff --git a/data/ui/options/optionsExtras/defaults_d.png b/data/ui/options/optionsExtras/defaults_d.png deleted file mode 100644 index 76afc0e4..00000000 Binary files a/data/ui/options/optionsExtras/defaults_d.png and /dev/null differ diff --git a/data/ui/options/optionsExtras/defaults_h.png b/data/ui/options/optionsExtras/defaults_h.png deleted file mode 100644 index ec0cfbb1..00000000 Binary files a/data/ui/options/optionsExtras/defaults_h.png and /dev/null differ diff --git a/data/ui/options/optionsExtras/defaults_n.png b/data/ui/options/optionsExtras/defaults_n.png deleted file mode 100644 index afcac626..00000000 Binary files a/data/ui/options/optionsExtras/defaults_n.png and /dev/null differ diff --git a/data/ui/options/optionsExtras/fastoptions.png b/data/ui/options/optionsExtras/fastoptions.png deleted file mode 100644 index a4f58f22..00000000 Binary files a/data/ui/options/optionsExtras/fastoptions.png and /dev/null differ diff --git a/data/ui/options/optionsExtras/fovText.png b/data/ui/options/optionsExtras/fovText.png deleted file mode 100644 index dfba7270..00000000 Binary files a/data/ui/options/optionsExtras/fovText.png and /dev/null differ diff --git a/data/ui/options/optionsExtras/fpsText.png b/data/ui/options/optionsExtras/fpsText.png deleted file mode 100644 index 0c048d2b..00000000 Binary files a/data/ui/options/optionsExtras/fpsText.png and /dev/null differ diff --git a/data/ui/options/optionsExtras/itemcollision.png b/data/ui/options/optionsExtras/itemcollision.png deleted file mode 100644 index 1c9bcccb..00000000 Binary files a/data/ui/options/optionsExtras/itemcollision.png and /dev/null differ diff --git a/data/ui/options/optionsExtras/loadingbars.png b/data/ui/options/optionsExtras/loadingbars.png deleted file mode 100644 index c56e7a08..00000000 Binary files a/data/ui/options/optionsExtras/loadingbars.png and /dev/null differ diff --git a/data/ui/options/optionsExtras/oeDlgBase.png b/data/ui/options/optionsExtras/oeDlgBase.png deleted file mode 100644 index c09edcfa..00000000 Binary files a/data/ui/options/optionsExtras/oeDlgBase.png and /dev/null differ diff --git a/data/ui/options/optionsExtras/oobText.png b/data/ui/options/optionsExtras/oobText.png deleted file mode 100644 index acf06c81..00000000 Binary files a/data/ui/options/optionsExtras/oobText.png and /dev/null differ diff --git a/data/ui/options/optionsExtras/powerupparticles.png b/data/ui/options/optionsExtras/powerupparticles.png deleted file mode 100644 index 57a4ebb8..00000000 Binary files a/data/ui/options/optionsExtras/powerupparticles.png and /dev/null differ diff --git a/data/ui/options/optionsExtras/scorepredictor.png b/data/ui/options/optionsExtras/scorepredictor.png deleted file mode 100644 index 72254774..00000000 Binary files a/data/ui/options/optionsExtras/scorepredictor.png and /dev/null differ diff --git a/data/ui/options/optionsExtras/sliderBase.png b/data/ui/options/optionsExtras/sliderBase.png deleted file mode 100644 index e2f2ab8c..00000000 Binary files a/data/ui/options/optionsExtras/sliderBase.png and /dev/null differ diff --git a/data/ui/options/optionsExtras/sliderControl.png b/data/ui/options/optionsExtras/sliderControl.png deleted file mode 100644 index d87a0219..00000000 Binary files a/data/ui/options/optionsExtras/sliderControl.png and /dev/null differ diff --git a/data/ui/options/optionsExtras/tabcompletions.png b/data/ui/options/optionsExtras/tabcompletions.png deleted file mode 100644 index d0df7b8a..00000000 Binary files a/data/ui/options/optionsExtras/tabcompletions.png and /dev/null differ diff --git a/data/ui/options/optionsExtras/text.png b/data/ui/options/optionsExtras/text.png deleted file mode 100644 index 7964f28b..00000000 Binary files a/data/ui/options/optionsExtras/text.png and /dev/null differ diff --git a/data/ui/options/optionsExtras/title.png b/data/ui/options/optionsExtras/title.png deleted file mode 100644 index 7964f28b..00000000 Binary files a/data/ui/options/optionsExtras/title.png and /dev/null differ diff --git a/data/ui/options/optionsExtras/trailparticles.png b/data/ui/options/optionsExtras/trailparticles.png deleted file mode 100644 index da0383ea..00000000 Binary files a/data/ui/options/optionsExtras/trailparticles.png and /dev/null differ diff --git a/data/ui/options/optionsExtras/tweening.png b/data/ui/options/optionsExtras/tweening.png deleted file mode 100644 index f2d2253a..00000000 Binary files a/data/ui/options/optionsExtras/tweening.png and /dev/null differ diff --git a/data/ui/options/options_base.png b/data/ui/options/options_base.png deleted file mode 100644 index cee5b53f..00000000 Binary files a/data/ui/options/options_base.png and /dev/null differ diff --git a/data/ui/options/record_d.png b/data/ui/options/record_d.png deleted file mode 100644 index 8545e159..00000000 Binary files a/data/ui/options/record_d.png and /dev/null differ diff --git a/data/ui/options/record_h.png b/data/ui/options/record_h.png deleted file mode 100644 index f82a0899..00000000 Binary files a/data/ui/options/record_h.png and /dev/null differ diff --git a/data/ui/options/record_n.png b/data/ui/options/record_n.png deleted file mode 100644 index f1e4d432..00000000 Binary files a/data/ui/options/record_n.png and /dev/null differ diff --git a/data/ui/options/rename_d.png b/data/ui/options/rename_d.png deleted file mode 100644 index 7d036ed8..00000000 Binary files a/data/ui/options/rename_d.png and /dev/null differ diff --git a/data/ui/options/rename_h.png b/data/ui/options/rename_h.png deleted file mode 100644 index 91850885..00000000 Binary files a/data/ui/options/rename_h.png and /dev/null differ diff --git a/data/ui/options/rename_i.png b/data/ui/options/rename_i.png deleted file mode 100644 index 63d43c3c..00000000 Binary files a/data/ui/options/rename_i.png and /dev/null differ diff --git a/data/ui/options/rename_n.png b/data/ui/options/rename_n.png deleted file mode 100644 index 6c401660..00000000 Binary files a/data/ui/options/rename_n.png and /dev/null differ diff --git a/data/ui/search/window-lb.png b/data/ui/search/window-lb.png deleted file mode 100644 index 9a9675b7..00000000 Binary files a/data/ui/search/window-lb.png and /dev/null differ diff --git a/data/ui/touch/left.png b/data/ui/touch/left.png new file mode 100644 index 00000000..c8ab2e05 Binary files /dev/null and b/data/ui/touch/left.png differ diff --git a/data/ui/touch/right.png b/data/ui/touch/right.png new file mode 100644 index 00000000..1a46ab65 Binary files /dev/null and b/data/ui/touch/right.png differ diff --git a/data/ui/touch/video-camera.png b/data/ui/touch/video-camera.png new file mode 100644 index 00000000..23130bf8 Binary files /dev/null and b/data/ui/touch/video-camera.png differ diff --git a/src/CameraController.hx b/src/CameraController.hx index a1eec746..dcd7c9ed 100644 --- a/src/CameraController.hx +++ b/src/CameraController.hx @@ -1,5 +1,7 @@ package src; +import net.Net; +import mis.MisParser; import h3d.col.Bounds; import h3d.col.Plane; import h3d.mat.Material; @@ -27,6 +29,7 @@ import h3d.Vector; import hxsl.Types.Matrix; import h3d.scene.Scene; import src.Gamepad; +import src.MarbleGame; enum CameraMode { FreeOrbit; @@ -68,6 +71,14 @@ class CameraController extends Object { public var oob:Bool = false; public var finish:Bool = false; + public var overview:Bool = false; + + var spectate:Bool = false; + var spectateMarbleIndex:Int = -1; + + var overviewCenter:Vector; + var overviewWidth:Vector; + var overviewHeight:Float; var _ignoreCursor:Bool = false; @@ -81,7 +92,8 @@ class CameraController extends Object { // level.scene.addEventListener(onEvent); // Sdl.setRelativeMouseMode(true); level.scene.camera.setFovX(Settings.optionsSettings.fovX, Settings.optionsSettings.screenWidth / Settings.optionsSettings.screenHeight); - lockCursor(); + if (!Net.isMP) + lockCursor(); } public function lockCursor() { @@ -113,6 +125,24 @@ class CameraController extends Object { #end } + public function enableSpectate() { + spectate = true; + if (@:privateAccess this.level.playGui.setSpectateMenu(true)) { + if (Util.isTouchDevice()) { + MarbleGame.instance.touchInput.setSpectatorControls(true); + MarbleGame.instance.touchInput.setSpectatorControlsVisibility(false); + } + } + } + + public function stopSpectate() { + spectate = false; + @:privateAccess this.level.playGui.setSpectateMenu(false); + if (Util.isTouchDevice()) { + MarbleGame.instance.touchInput.setSpectatorControls(false); + } + } + public function orbit(mouseX:Float, mouseY:Float, isTouch:Bool = false) { if (_ignoreCursor) { _ignoreCursor = false; @@ -141,7 +171,7 @@ class CameraController extends Object { } var factor = isTouch ? Util.lerp(1 / 25, 1 / 15, - Settings.controlsSettings.cameraSensitivity) : Util.lerp(1 / 2500, 1 / 100, Settings.controlsSettings.cameraSensitivity); + Settings.controlsSettings.cameraSensitivity) : Util.lerp(1 / 1000, 1 / 200, Settings.controlsSettings.cameraSensitivity); // CameraPitch += deltaposY * factor; // CameraYaw += deltaposX * factor; @@ -166,10 +196,64 @@ class CameraController extends Object { // CameraPitch = 0.001; } - public function update(currentTime:Float, dt:Float) { - // camera.position.set(marblePosition.x, marblePosition.y, marblePosition.z).sub(directionVector.clone().multiplyScalar(2.5)); - // this.level.scene.camera.target = marblePosition.add(cameraVerticalTranslation); - // camera.position.add(cameraVerticalTranslation); + public function startOverview() { + var worldBounds = new Bounds(); + var center = new Vector(0, 0, 0); + for (itr in level.interiors) { + var itrBounds = itr.getBounds(); + worldBounds.add(itrBounds); + center.load(center.add(itrBounds.getCenter().toVector())); + } + if (level.interiors.length == 0) { + worldBounds.xMin = -1; + worldBounds.xMax = 1; + worldBounds.yMin = -1; + worldBounds.yMax = 1; + worldBounds.zMin = -1; + worldBounds.zMax = 1; + } else + center.scale(1 / level.interiors.length); + + overviewWidth = new Vector(worldBounds.xMax - worldBounds.xMin, worldBounds.yMax - worldBounds.yMin, worldBounds.zMax - worldBounds.zMin); + if (level.mission.missionInfo.overviewwidth != null) { + var parseTest = MisParser.parseVector3(level.mission.missionInfo.overviewwidth); + if (parseTest != null) { + overviewWidth = parseTest; + } + } + overviewHeight = level.mission.missionInfo.overviewheight != null ? Std.parseFloat(level.mission.missionInfo.overviewheight) : 0.0; + overviewCenter = center; + + overview = true; + } + + public function stopOverview() { + overview = false; + } + + function doOverviewCamera(currentTime:Float, dt:Float) { + var angle = Util.adjustedMod(2 * currentTime * Math.PI / 100.0, 2 * Math.PI); + var distance = overviewWidth.multiply(2.0 / 3.0); + var offset = new Vector(Math.sin(angle) * distance.x, Math.cos(angle) * distance.y); + var position = overviewCenter.add(offset); + + var top = overviewCenter.z + (overviewWidth.z / 2) + overviewHeight; + position.z = top; + + var posDist = Math.sqrt((position.x - overviewCenter.x) * (position.x - overviewCenter.x) + + (position.y - overviewCenter.y) * (position.y - overviewCenter.y)); + var upOffset = Math.tan(0.5) * posDist / 2; + // position.load(position.add(new Vector(0, 0, upOffset))); + + var camera = level.scene.camera; + camera.pos.load(position); + camera.target.load(overviewCenter); + camera.up.x = 0; + camera.up.y = 0; + camera.up.z = 1; + } + + function doSpectateCamera(currentTime:Float, dt:Float) { var camera = level.scene.camera; var lerpt = Math.pow(0.5, dt / 0.032); // Math.min(1, 1 - Math.pow(0.6, dt / 0.032)); // hxd.Math.min(1, 1 - Math.pow(0.6, dt * 600)); @@ -186,13 +270,267 @@ class CameraController extends Object { cameraYawDelta = -cameraYawDelta; nextCameraYaw += 0.75 * 5 * cameraYawDelta * dt * Settings.gamepadSettings.cameraSensitivity; + var limits = spectateMarbleIndex == -1 ? 0.0001 : Math.PI / 4; + + nextCameraPitch = Math.max(-Math.PI / 2 + limits, Math.min(Math.PI / 2 - 0.0001, nextCameraPitch)); + + CameraYaw = nextCameraYaw; // Util.lerp(CameraYaw, nextCameraYaw, lerpt); + CameraPitch = nextCameraPitch; // Util.lerp(CameraPitch, nextCameraPitch, lerpt); + + CameraPitch = Math.max(-Math.PI / 2 + limits, Math.min(Math.PI / 2 - 0.0001, CameraPitch)); // Util.clamp(CameraPitch, -Math.PI / 12, Math.PI / 2); + + function getRotQuat(v1:Vector, v2:Vector) { + function orthogonal(v:Vector) { + var x = Math.abs(v.x); + var y = Math.abs(v.y); + var z = Math.abs(v.z); + var other = x < y ? (x < z ? new Vector(1, 0, 0) : new Vector(0, 0, 1)) : (y < z ? new Vector(0, 1, 0) : new Vector(0, 0, 1)); + return v.cross(other); + } + + var u = v1.normalized(); + var v = v2.normalized(); + if (u.multiply(-1).equals(v)) { + var q = new Quat(); + var o = orthogonal(u).normalized(); + q.x = o.x; + q.y = o.y; + q.z = o.z; + q.w = 0; + return q; + } + var half = u.add(v).normalized(); + var q = new Quat(); + q.w = u.dot(half); + var vr = u.cross(half); + q.x = vr.x; + q.y = vr.y; + q.z = vr.z; + return q; + } + var orientationQuat = level.getOrientationQuat(currentTime); + + if (spectateMarbleIndex == -1) { + @:privateAccess level.playGui.setSpectateMenuText(0); + var up = new Vector(0, 0, 1); + up.transform(orientationQuat.toMatrix()); + var directionVector = new Vector(1, 0, 0); + + var q1 = new Quat(); + q1.initRotateAxis(0, 1, 0, CameraPitch); + directionVector.transform(q1.toMatrix()); + q1.initRotateAxis(0, 0, 1, CameraYaw); + directionVector.transform(q1.toMatrix()); + directionVector.transform(orientationQuat.toMatrix()); + + var dy = Gamepad.getAxis(Settings.gamepadSettings.moveYAxis) * CameraSpeed * dt; + var dx = -Gamepad.getAxis(Settings.gamepadSettings.moveXAxis) * CameraSpeed * dt; + + if (Key.isDown(Settings.controlsSettings.forward)) { + dy += CameraSpeed * dt; + } + if (Key.isDown(Settings.controlsSettings.backward)) { + dy -= CameraSpeed * dt; + } + if (Key.isDown(Settings.controlsSettings.left)) { + dx += CameraSpeed * dt; + } + if (Key.isDown(Settings.controlsSettings.right)) { + dx -= CameraSpeed * dt; + } + + if (MarbleGame.instance.touchInput.movementInput.pressed) { + dx = -MarbleGame.instance.touchInput.movementInput.value.x * CameraSpeed * dt; + dy = -MarbleGame.instance.touchInput.movementInput.value.y * CameraSpeed * dt; + } + + if ((!Util.isTouchDevice() && Key.isDown(Settings.controlsSettings.powerup)) + || (Util.isTouchDevice() && MarbleGame.instance.touchInput.powerupButton.pressed) + || Gamepad.isDown(Settings.gamepadSettings.powerup)) { + dx *= 2; + dy *= 2; + } + + if (Key.isPressed(Settings.controlsSettings.blast) + || (MarbleGame.instance.touchInput.blastbutton.pressed && MarbleGame.instance.touchInput.blastbutton.didPressIt) + || Gamepad.isPressed(Settings.gamepadSettings.blast)) { + var freeMarbleIndex = -1; + + MarbleGame.instance.touchInput.blastbutton.didPressIt = false; + + for (i in 0...level.marbles.length) { + var marble = level.marbles[i]; + @:privateAccess if ((marble.connection != null && !marble.connection.spectator)) { + freeMarbleIndex = i; + break; + } + } + spectateMarbleIndex = freeMarbleIndex; + MarbleGame.instance.touchInput.setSpectatorControlsVisibility(true); + return; + } + + var sideDir = directionVector.cross(up); + + var moveDir = directionVector.multiply(dy).add(sideDir.multiply(dx)); + camera.pos.load(camera.pos.add(moveDir)); + + camera.up = up; + camera.target = camera.pos.add(directionVector); + } else { + @:privateAccess level.playGui.setSpectateMenuText(1); + if (Key.isPressed(Settings.controlsSettings.left) + || (Util.isTouchDevice() + && MarbleGame.instance.touchInput.leftButton.pressed + && MarbleGame.instance.touchInput.leftButton.didPressIt)) { + if (Util.isTouchDevice()) + MarbleGame.instance.touchInput.leftButton.didPressIt = false; + spectateMarbleIndex = (spectateMarbleIndex - 1 + level.marbles.length) % level.marbles.length; + @:privateAccess while (level.marbles[spectateMarbleIndex].connection == null + || level.marbles[spectateMarbleIndex].connection.spectator) { + spectateMarbleIndex = (spectateMarbleIndex - 1 + level.marbles.length) % level.marbles.length; + } + } + + if (Key.isPressed(Settings.controlsSettings.right) + || (Util.isTouchDevice() + && MarbleGame.instance.touchInput.rightButton.pressed + && MarbleGame.instance.touchInput.rightButton.didPressIt)) { + if (Util.isTouchDevice()) + MarbleGame.instance.touchInput.rightButton.didPressIt = false; + spectateMarbleIndex = (spectateMarbleIndex + 1 + level.marbles.length) % level.marbles.length; + @:privateAccess while (level.marbles[spectateMarbleIndex].connection == null + || level.marbles[spectateMarbleIndex].connection.spectator) { + spectateMarbleIndex = (spectateMarbleIndex + 1 + level.marbles.length) % level.marbles.length; + } + } + + if (Key.isPressed(Settings.controlsSettings.blast) + || (MarbleGame.instance.touchInput.blastbutton.pressed && MarbleGame.instance.touchInput.blastbutton.didPressIt) + || Gamepad.isPressed(Settings.gamepadSettings.blast)) { + if (Util.isTouchDevice()) + MarbleGame.instance.touchInput.blastbutton.didPressIt = false; + spectateMarbleIndex = -1; + MarbleGame.instance.touchInput.setSpectatorControlsVisibility(false); + return; + } + if (@:privateAccess level.marbles.length <= spectateMarbleIndex) { + spectateMarbleIndex = -1; + MarbleGame.instance.touchInput.setSpectatorControlsVisibility(false); + return; + } + + var marblePosition = @:privateAccess level.marbles[spectateMarbleIndex].lastRenderPos; + var up = new Vector(0, 0, 1); + up.transform(orientationQuat.toMatrix()); + var directionVector = new Vector(1, 0, 0); + var cameraVerticalTranslation = new Vector(0, 0, 0.3); + + var q1 = new Quat(); + q1.initRotateAxis(0, 1, 0, CameraPitch); + directionVector.transform(q1.toMatrix()); + cameraVerticalTranslation.transform(q1.toMatrix()); + q1.initRotateAxis(0, 0, 1, CameraYaw); + directionVector.transform(q1.toMatrix()); + cameraVerticalTranslation.transform(q1.toMatrix()); + directionVector.transform(orientationQuat.toMatrix()); + cameraVerticalTranslation.transform(orientationQuat.toMatrix()); + camera.up = up; + camera.pos = marblePosition.sub(directionVector.multiply(CameraDistance)); + camera.target = marblePosition.add(cameraVerticalTranslation); + + var closeness = 0.1; + var rayCastOrigin = marblePosition.add(level.marbles[spectateMarbleIndex].currentUp.multiply(marble._radius)); + + var processedShapes = []; + for (i in 0...3) { + var rayCastDirection = camera.pos.sub(rayCastOrigin); + rayCastDirection = rayCastDirection.add(rayCastDirection.normalized().multiply(2)); + + var rayCastLen = rayCastDirection.length(); + + var results = level.collisionWorld.rayCast(rayCastOrigin, rayCastDirection.normalized(), rayCastLen); + + var firstHit:octree.IOctreeObject.RayIntersectionData = null; + var firstHitDistance = 1e8; + for (result in results) { + if (!processedShapes.contains(result.object) + && (firstHit == null || (rayCastOrigin.distance(result.point) < firstHitDistance))) { + firstHit = result; + firstHitDistance = rayCastOrigin.distance(result.point); + processedShapes.push(result.object); + } + } + + if (firstHit != null) { + if (firstHitDistance < CameraDistance) { + // camera.pos = marblePosition.sub(directionVector.multiply(firstHit.distance * 0.7)); + var plane = new Plane(firstHit.normal.x, firstHit.normal.y, firstHit.normal.z, firstHit.point.dot(firstHit.normal)); + var normal = firstHit.normal.multiply(-1); + // var position = firstHit.point; + + var projected = plane.project(camera.pos.toPoint()); + var dist = plane.distance(camera.pos.toPoint()); + + if (dist >= closeness) + break; + + camera.pos = projected.toVector().add(normal.multiply(-closeness)); + + var forwardVec = marblePosition.sub(camera.pos).normalized(); + var rightVec = camera.up.cross(forwardVec).normalized(); + var upVec = forwardVec.cross(rightVec); + + camera.target = marblePosition.add(upVec.multiply(0.3)); + camera.up = upVec; + continue; + } + } + break; + } + } + + this.setPosition(camera.pos.x, camera.pos.y, camera.pos.z); + } + + public function update(currentTime:Float, dt:Float) { + // camera.position.set(marblePosition.x, marblePosition.y, marblePosition.z).sub(directionVector.clone().multiplyScalar(2.5)); + // this.level.scene.camera.target = marblePosition.add(cameraVerticalTranslation); + // camera.position.add(cameraVerticalTranslation); + + if (overview) { + doOverviewCamera(currentTime, dt); + return; + } + + if (spectate) { + doSpectateCamera(currentTime, dt); + return; + } + + var camera = level.scene.camera; + + var lerpt = hxd.Math.min(1, + 1 - Math.pow(0.6, dt * 600)); // Math.min(1, 1 - Math.pow(0.6, dt / 0.032)); // hxd.Math.min(1, 1 - Math.pow(0.6, dt * 600)); + + var cameraPitchDelta = (Key.isDown(Settings.controlsSettings.camBackward) ? 1 : 0) + - (Key.isDown(Settings.controlsSettings.camForward) ? 1 : 0) + + Gamepad.getAxis(Settings.gamepadSettings.cameraYAxis); + if (Settings.gamepadSettings.invertYAxis) + cameraPitchDelta = -cameraPitchDelta; + nextCameraPitch += 0.75 * 5 * cameraPitchDelta * dt * Settings.gamepadSettings.cameraSensitivity; + var cameraYawDelta = (Key.isDown(Settings.controlsSettings.camRight) ? 1 : 0) - (Key.isDown(Settings.controlsSettings.camLeft) ? 1 : 0) + + Gamepad.getAxis(Settings.gamepadSettings.cameraXAxis); + if (Settings.gamepadSettings.invertXAxis) + cameraYawDelta = -cameraYawDelta; + nextCameraYaw += 0.75 * 5 * cameraYawDelta * dt * Settings.gamepadSettings.cameraSensitivity; + nextCameraPitch = Math.max(-Math.PI / 2 + Math.PI / 4, Math.min(Math.PI / 2 - 0.0001, nextCameraPitch)); - CameraYaw = Util.lerp(CameraYaw, nextCameraYaw, lerpt); - CameraPitch = Util.lerp(CameraPitch, nextCameraPitch, lerpt); + CameraYaw = nextCameraYaw; // Util.lerp(CameraYaw, nextCameraYaw, lerpt); + CameraPitch = nextCameraPitch; // Util.lerp(CameraPitch, nextCameraPitch, lerpt); - CameraPitch = Math.max(-Math.PI / 2 + Math.PI / 4, - Math.min(Math.PI / 2 - 0.0001, CameraPitch)); // Util.clamp(CameraPitch, -Math.PI / 12, Math.PI / 2); + CameraPitch = Math.max(-Math.PI / 2 + Math.PI / 4, Math.min(Math.PI / 2 - 0.0001, CameraPitch)); // Util.clamp(CameraPitch, -Math.PI / 12, Math.PI / 2); function getRotQuat(v1:Vector, v2:Vector) { function orthogonal(v:Vector) { @@ -261,7 +599,7 @@ class CameraController extends Object { camera.target = marblePosition.add(cameraVerticalTranslation); var closeness = 0.1; - var rayCastOrigin = marblePosition.add(level.currentUp.multiply(marble._radius)); + var rayCastOrigin = marblePosition.add(level.marble.currentUp.multiply(marble._radius)); var processedShapes = []; for (i in 0...3) { diff --git a/src/Console.hx b/src/Console.hx index 48443e19..7a14204f 100644 --- a/src/Console.hx +++ b/src/Console.hx @@ -7,6 +7,7 @@ import mis.MisParser; import src.Settings; import src.Debug; import src.MarbleGame; +import src.ProfilerUI; @:publicFields class ConsoleEntry { @@ -56,6 +57,10 @@ class Console { return Std.int((haxe.Timer.stamp() - timeSinceStart) * 1000) / 1000; } + public static inline function time() { + return haxe.Timer.stamp(); + } + function addEntry(type:String, msg:String) { var e = new ConsoleEntry(getTime(), type, msg); entries.push(e); @@ -118,6 +123,7 @@ class Console { log("rewindTimeScale "); log("drawBounds "); log("wireframe "); + log("fps "); } else if (cmdType == "timeScale") { if (cmdSplit.length == 2) { var scale = Std.parseFloat(cmdSplit[1]); @@ -163,6 +169,17 @@ class Console { #if sys hl.Gc.dumpMemory(); #end + } else if (cmdType == "fps") { + if (cmdSplit.length == 2) { + var scale = MisParser.parseBoolean(cmdSplit[1]); + ProfilerUI.setEnabled(scale); + log("FPS Display set to " + scale); + } else { + error("Expected one argument, got " + (cmdSplit.length - 1)); + } + } else if (cmdType == 'rollback') { + var t = Std.parseFloat(cmdSplit[1]); + MarbleGame.instance.world.rollback(t); } else { error("Unknown command"); } diff --git a/src/Debug.hx b/src/Debug.hx index 8d5f254e..1a29b5fd 100644 --- a/src/Debug.hx +++ b/src/Debug.hx @@ -27,6 +27,8 @@ class Debug { debugTriangles.remove(); } debugTriangles = new h3d.scene.Mesh(prim, h3d.mat.Material.create()); + debugTriangles.material.receiveShadows = false; + debugTriangles.material.castShadows = false; prim.addUVs(); prim.addNormals(); MarbleGame.instance.scene.addChild(debugTriangles); diff --git a/src/DifBuilder.hx b/src/DifBuilder.hx index 1c044de4..52a149f3 100644 --- a/src/DifBuilder.hx +++ b/src/DifBuilder.hx @@ -1,5 +1,7 @@ package src; +import shaders.PQMaterial; +import h3d.scene.MultiMaterial; import shaders.NormalMaterial; import shaders.NoiseTileMaterial; import shaders.DirLight; @@ -182,6 +184,31 @@ class DifBuilder { friction: 6, restitution: 0.3 }, + "pq_friction_bouncy" => { + friction: 0.2, + restitution: 0.0, + force: 15.0 + }, + "pq_friction_grass" => { + friction: 2, + restitution: 0.5 + }, + "pq_friction_ice" => { + friction: 0.07331, + restitution: 0.75 + }, + "pq_friction_mud" => { + friction: 0.3, + restitution: 0.5 + }, + "pq_friction_sand" => { + friction: 4, + restitution: 0.15 + }, + "pq_friction_space" => { + friction: 0.01, + restitution: 0.35 + } ]; static function createPhongMaterial(onFinish:hxsl.Shader->Void, baseTexture:String, normalTexture:String, shininess:Float, specularColor:Vector, @@ -204,7 +231,8 @@ class DifBuilder { worker.run(); } - static function createNoiseTileMaterial(onFinish:hxsl.Shader->Void, baseTexture:String, noiseSuffix:String, shininess:Float, specular:Vector) { + static function createNoiseTileMaterial(onFinish:hxsl.Shader->Void, baseTexture:String, noiseSuffix:String, shininess:Float, specular:Vector, + uvScale:Float = 1) { var worker = new ResourceLoaderWorker(() -> { var diffuseTex = ResourceLoader.getTexture('data/interiors_mbu/${baseTexture}').resource; diffuseTex.wrap = Repeat; @@ -216,7 +244,7 @@ class DifBuilder { noiseTex.wrap = Repeat; noiseTex.mipMap = Nearest; var shader = new NoiseTileMaterial(diffuseTex, normalTex, noiseTex, shininess, specular, MarbleGame.instance.world.ambient, - MarbleGame.instance.world.dirLight, MarbleGame.instance.world.dirLightDir, 1); + MarbleGame.instance.world.dirLight, MarbleGame.instance.world.dirLightDir, uvScale); onFinish(shader); }); worker.loadFile('interiors_mbu/${baseTexture}'); @@ -240,58 +268,117 @@ class DifBuilder { worker.run(); } + static function createPQMaterial(onFinish:hxsl.Shader->Void, baseTexture:String, normalTexture:String, specularTexture:String, secondaryFactor:Float = 1) { + var worker = new ResourceLoaderWorker(() -> { + var diffuseTex = ResourceLoader.getTexture('data/multiplayer/interiors/platinumquest/${baseTexture}').resource; + var normalTex = ResourceLoader.getTexture('data/multiplayer/interiors/platinumquest/${normalTexture}').resource; + normalTex.wrap = Repeat; + var specularTex = ResourceLoader.getTexture('data/multiplayer/interiors/platinumquest/${specularTexture}').resource; + specularTex.wrap = Repeat; + var shader = new PQMaterial(diffuseTex, normalTex, 9.0, specularTex, MarbleGame.instance.world.ambient, MarbleGame.instance.world.dirLight, + MarbleGame.instance.world.dirLightDir, secondaryFactor); + onFinish(shader); + }); + worker.loadFile('data/multiplayer/interiors/platinumquest/${baseTexture}'); + worker.loadFile('data/multiplayer/interiors/platinumquest/${normalTexture}'); + worker.loadFile('data/multiplayer/interiors/platinumquest/${specularTexture}'); + worker.run(); + } + static var shaderMaterialDict:MapVoid)->Void> = [ - 'interiors_mbu/plate_1.jpg' => (onFinish) -> createPhongMaterial(onFinish, 'plate.randomize.png', 'plate.normal.png', 8, new Vector(1, 1, 0.8, 1), 0.5), - 'interiors_mbu/tile_beginner.png' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_beginner.png', '', 40, new Vector(1, 1, 1, 1)), - 'interiors_mbu/tile_beginner_shadow.png' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_beginner.png', '_shadow', 40, - new Vector(0.2, 0.2, 0.2, 0.2)), - 'interiors_mbu/tile_beginner_red.jpg' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_beginner.png', '_red', 40, new Vector(1, 1, 1, 1)), - 'interiors_mbu/tile_beginner_red_shadow.png' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_beginner.png', '_red_shadow', 40, - new Vector(0.2, 0.2, 0.2, 0.2)), - 'interiors_mbu/tile_beginner_blue.jpg' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_beginner.png', '_blue', 40, new Vector(1, 1, 1, 1)), - 'interiors_mbu/tile_beginner_blue_shadow.png' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_beginner.png', '_blue_shadow', 40, - new Vector(0.2, 0.2, 0.2, 0.2)), - 'interiors_mbu/tile_intermediate.png' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_intermediate.png', '', 40, new Vector(1, 1, 1, 1)), - 'interiors_mbu/tile_intermediate_shadow.png' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_intermediate.png', '_shadow', 40, - new Vector(0.2, 0.2, 0.2, 0.2)), - 'interiors_mbu/tile_intermediate_red.jpg' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_intermediate.png', '_red', 40, + 'interiors_mbu/plate_1' => (onFinish) -> createPhongMaterial(onFinish, 'plate.randomize.png', 'plate.normal.png', 8, new Vector(1, 1, 0.8, 1), 0.5), + 'interiors_mbu/tile_beginner' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_beginner.png', '', 40, new Vector(1, 1, 1, 1)), + 'interiors_mbu/tile_beginner_shadow' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_beginner.png', '_shadow', 40, + new Vector(0.2, 0.2, 0.2, 0.2), 1 / 4), + 'interiors_mbu/tile_beginner_red' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_beginner.png', '_red', 40, new Vector(1, 1, 1, 1)), + 'interiors_mbu/tile_beginner_red_shadow' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_beginner.png', '_red_shadow', 40, + new Vector(0.2, 0.2, 0.2, 0.2), 1 / 4), + 'interiors_mbu/tile_beginner_blue' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_beginner.png', '_blue', 40, new Vector(1, 1, 1, 1)), + 'interiors_mbu/tile_beginner_blue_shadow' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_beginner.png', '_blue_shadow', 40, + new Vector(0.2, 0.2, 0.2, 0.2), 1 / 4), + 'interiors_mbu/tile_intermediate' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_intermediate.png', '', 40, new Vector(1, 1, 1, 1)), + 'interiors_mbu/tile_intermediate_shadow' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_intermediate.png', '_shadow', 40, + new Vector(0.2, 0.2, 0.2, 0.2), 1 / 4), + 'interiors_mbu/tile_intermediate_red' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_intermediate.png', '_red', 40, new Vector(1, 1, 1, 1)), + 'interiors_mbu/tile_intermediate_red_shadow' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_intermediate.png', '_red_shadow', 40, + new Vector(0.2, 0.2, 0.2, 0.2), 1 / 4), + 'interiors_mbu/tile_intermediate_green' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_intermediate.png', '_green', 40, new Vector(1, 1, 1, 1)), - 'interiors_mbu/tile_intermediate_red_shadow.png' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_intermediate.png', '_red_shadow', 40, - new Vector(0.2, 0.2, 0.2, 0.2)), - 'interiors_mbu/tile_intermediate_green.jpg' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_intermediate.png', '_green', 40, - new Vector(1, 1, 1, 1)), - 'interiors_mbu/tile_intermediate_green_shadow.png' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_intermediate.png', '_green_shadow', 40, - new Vector(0.2, 0.2, 0.2, 0.2)), - 'interiors_mbu/tile_advanced.png' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_advanced.png', '', 40, new Vector(1, 1, 1, 1)), - 'interiors_mbu/tile_advanced_shadow.png' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_advanced.png', '_shadow', 40, - new Vector(0.2, 0.2, 0.2, 0.2)), - 'interiors_mbu/tile_advanced_blue.jpg' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_advanced.png', '_blue', 40, new Vector(1, 1, 1, 1)), - 'interiors_mbu/tile_advanced_blue_shadow.png' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_advanced.png', '_blue_shadow', 40, - new Vector(0.2, 0.2, 0.2, 0.2)), - 'interiors_mbu/tile_advanced_green.jpg' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_advanced.png', '_green', 40, new Vector(1, 1, 1, 1)), - 'interiors_mbu/tile_advanced_green_shadow.jpg' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_advanced.png', '_green_shadow', 40, - new Vector(0.2, 0.2, 0.2, 0.2)), - 'interiors_mbu/tile_underside.png' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_underside.png', '', 40, new Vector(1, 1, 1, 1)), - 'interiors_mbu/wall_beginner.png' => (onFinish) -> createPhongMaterial(onFinish, 'wall_beginner.png', 'wall_mbu.normal.png', 12, + 'interiors_mbu/tile_intermediate_green_shadow' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_intermediate.png', '_green_shadow', 40, + new Vector(0.2, 0.2, 0.2, 0.2), 1 / 4), + 'interiors_mbu/tile_advanced' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_advanced.png', '', 40, new Vector(1, 1, 1, 1)), + 'interiors_mbu/tile_advanced_shadow' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_advanced.png', '_shadow', 40, + new Vector(0.2, 0.2, 0.2, 0.2), 1 / 4), + 'interiors_mbu/tile_advanced_blue' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_advanced.png', '_blue', 40, new Vector(1, 1, 1, 1)), + 'interiors_mbu/tile_advanced_blue_shadow' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_advanced.png', '_blue_shadow', 40, + new Vector(0.2, 0.2, 0.2, 0.2), 1 / 4), + 'interiors_mbu/tile_advanced_green' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_advanced.png', '_green', 40, new Vector(1, 1, 1, 1)), + 'interiors_mbu/tile_advanced_green_shadow' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_advanced.png', '_green_shadow', 40, + new Vector(0.2, 0.2, 0.2, 0.2), 1 / 4), + 'interiors_mbu/tile_underside' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_underside.png', '', 40, new Vector(1, 1, 1, 1)), + 'interiors_mbu/wall_beginner' => (onFinish) -> createPhongMaterial(onFinish, 'wall_beginner.png', 'wall_mbu.normal.png', 12, new Vector(0.8, 0.8, 0.6, 1)), - 'interiors_mbu/edge_white.png' => (onFinish) -> createPhongMaterial(onFinish, 'edge_white.png', 'edge.normal.png', 50, new Vector(0.8, 0.8, 0.8, 1)), - 'interiors_mbu/edge_white.jpg' => (onFinish) -> createPhongMaterial(onFinish, 'edge_white.png', 'edge.normal.png', 50, new Vector(0.8, 0.8, 0.8, 1)), - 'interiors_mbu/edge_white_shadow.png' => (onFinish) -> createPhongMaterial(onFinish, 'edge_white_shadow.png', 'edge.normal.png', 50, + 'interiors_mbu/edge_white' => (onFinish) -> createPhongMaterial(onFinish, 'edge_white.png', 'edge.normal.png', 50, new Vector(0.8, 0.8, 0.8, 1)), + 'interiors_mbu/edge_white_shadow' => (onFinish) -> createPhongMaterial(onFinish, 'edge_white_shadow.png', 'edge.normal.png', 50, new Vector(0.2, 0.2, 0.2, 0.2)), - 'interiors_mbu/beam.png' => (onFinish) -> createPhongMaterial(onFinish, 'beam.png', 'beam.normal.png', 12, new Vector(0.8, 0.8, 0.6, 1)), - 'interiors_mbu/beam_side.png' => (onFinish) -> createPhongMaterial(onFinish, 'beam_side.png', 'beam_side.normal.png', 12, new Vector(0.8, 0.8, 0.6, 1)), - 'interiors_mbu/friction_low.png' => (onFinish) -> createPhongMaterial(onFinish, 'friction_low.png', 'friction_low.normal.png', 128, + 'interiors_mbu/beam' => (onFinish) -> createPhongMaterial(onFinish, 'beam.png', 'beam.normal.png', 12, new Vector(0.8, 0.8, 0.6, 1)), + 'interiors_mbu/beam_side' => (onFinish) -> createPhongMaterial(onFinish, 'beam_side.png', 'beam_side.normal.png', 12, new Vector(0.8, 0.8, 0.6, 1)), + 'interiors_mbu/friction_low' => (onFinish) -> createPhongMaterial(onFinish, 'friction_low.png', 'friction_low.normal.png', 128, new Vector(1, 1, 1, 0.8)), - 'interiors_mbu/friction_low.jpg' => (onFinish) -> createPhongMaterial(onFinish, 'friction_low.png', 'friction_low.normal.png', 128, - new Vector(1, 1, 1, 0.8)), - 'interiors_mbu/friction_low_shadow.png' => (onFinish) -> createPhongMaterial(onFinish, 'friction_low_shadow.png', 'friction_low.normal.png', 128, + 'interiors_mbu/friction_low_shadow' => (onFinish) -> createPhongMaterial(onFinish, 'friction_low_shadow.png', 'friction_low.normal.png', 128, new Vector(0.3, 0.3, 0.35, 1)), - 'interiors_mbu/friction_high.png' => (onFinish) -> createPhongMaterial(onFinish, 'friction_high.png', 'friction_high.normal.png', 10, + 'interiors_mbu/friction_high' => (onFinish) -> createPhongMaterial(onFinish, 'friction_high.png', 'friction_high.normal.png', 10, new Vector(0.3, 0.3, 0.35, 1)), - 'interiors_mbu/friction_high_shadow.png' => (onFinish) -> createPhongMaterial(onFinish, 'friction_high_shadow.png', 'friction_high.normal.png', 10, + 'interiors_mbu/friction_high_shadow' => (onFinish) -> createPhongMaterial(onFinish, 'friction_high_shadow.png', 'friction_high.normal.png', 10, new Vector(0.15, 0.15, 0.16, 1.0)), - 'interiors_mbu/stripe_caution.png' => (onFinish) -> createPhongMaterial(onFinish, 'stripe_caution.png', 'DefaultNormal.png', 12, + 'interiors_mbu/stripe_caution' => (onFinish) -> createPhongMaterial(onFinish, 'stripe_caution.png', 'DefaultNormal.png', 12, new Vector(0.8, 0.8, 0.6, 1)), + 'multiplayer/interiors/platinumquest/pq_hot_1_med' => (onFinish) -> createPQMaterial(onFinish, 'pq_hot_1_med.jpg', 'tile.normal.png', 'tile.spec.png'), + 'multiplayer/interiors/platinumquest/pq_hot_2_light' => (onFinish) -> createPQMaterial(onFinish, 'pq_hot_2_light.jpg', 'tile.normal.png', + 'tile.spec.png'), + 'multiplayer/interiors/platinumquest/pq_hot_4_med' => (onFinish) -> createPQMaterial(onFinish, 'pq_hot_4_med.jpg', 'tile.normal.png', 'tile.spec.png'), + 'multiplayer/interiors/platinumquest/pq_rays_blue_med' => (onFinish) -> createPQMaterial(onFinish, 'pq_rays_blue_med.jpg', 'tile.normal.png', + 'tile.spec.png'), + 'multiplayer/interiors/platinumquest/pq_rays_green_dark' => (onFinish) -> createPQMaterial(onFinish, 'pq_rays_green_dark.jpg', 'tile.normal.png', + 'tile.spec.png'), + 'multiplayer/interiors/platinumquest/pq_rays_green_light' => (onFinish) -> createPQMaterial(onFinish, 'pq_rays_green_light.jpg', 'tile.normal.png', + 'tile.spec.png'), + 'multiplayer/interiors/platinumquest/pq_rays_green_med' => (onFinish) -> createPQMaterial(onFinish, 'pq_rays_green_med.jpg', 'tile.normal.png', + 'tile.spec.png'), + 'multiplayer/interiors/platinumquest/pq_rays_green_random' => (onFinish) -> createPQMaterial(onFinish, 'pq_rays_green_random.jpg', 'tile.normal.png', + 'tile.spec.png', 0.25), + 'multiplayer/interiors/platinumquest/pq_rays_red_light' => (onFinish) -> createPQMaterial(onFinish, 'pq_rays_red_light.jpg', 'tile.normal.png', + 'tile.spec.png'), + 'multiplayer/interiors/platinumquest/pq_rays_purple_light' => (onFinish) -> createPQMaterial(onFinish, 'pq_rays_purple_light.jpg', 'tile.normal.png', + 'tile.spec.png'), + 'multiplayer/interiors/platinumquest/pq_rays_purple_med' => (onFinish) -> createPQMaterial(onFinish, 'pq_rays_purple_med.jpg', 'tile.normal.png', + 'tile.spec.png'), + 'multiplayer/interiors/platinumquest/pq_friction_ice' => (onFinish) -> createPQMaterial(onFinish, 'pq_friction_ice.jpg', 'ice.normal.png', + 'DefaultSpec.png'), + 'multiplayer/interiors/platinumquest/pq_ray_wall_1' => (onFinish) -> createPQMaterial(onFinish, 'pq_ray_wall_1.png', 'pq_ray_wall_1.normal.png', + 'pq_ray_wall_1.spec.png'), + 'multiplayer/interiors/platinumquest/pq_ray_wall_2' => (onFinish) -> createPQMaterial(onFinish, 'pq_ray_wall_2.png', 'pq_ray_wall_2.normal.png', + 'pq_ray_wall_2.spec.png'), + 'multiplayer/interiors/platinumquest/pq_ray_wall_3' => (onFinish) -> createPQMaterial(onFinish, 'pq_ray_wall_3.png', 'pq_ray_wall_3.normal.png', + 'pq_ray_wall_3.spec.png'), + 'multiplayer/interiors/platinumquest/pq_ray_wall_4' => (onFinish) -> createPQMaterial(onFinish, 'pq_ray_wall_4.png', 'pq_ray_wall_4.normal.png', + 'pq_ray_wall_4.spec.png'), + 'multiplayer/interiors/platinumquest/pq_ray_wall_5' => (onFinish) -> createPQMaterial(onFinish, 'pq_ray_wall_5.png', 'pq_ray_wall_5.normal.png', + 'pq_ray_wall_5.spec.png'), + 'multiplayer/interiors/platinumquest/pq_ray_wall_6' => (onFinish) -> createPQMaterial(onFinish, 'pq_ray_wall_6.png', 'pq_ray_wall_6.normal.png', + 'pq_ray_wall_6.spec.png'), + 'multiplayer/interiors/platinumquest/pq_ray_wall_7' => (onFinish) -> createPQMaterial(onFinish, 'pq_ray_wall_7.png', 'pq_ray_wall_7.normal.png', + 'pq_ray_wall_7.spec.png'), + 'multiplayer/interiors/platinumquest/pq_ray_wall_8' => (onFinish) -> createPQMaterial(onFinish, 'pq_ray_wall_8.png', 'pq_ray_wall_8.normal.png', + 'pq_ray_wall_8.spec.png'), + 'multiplayer/interiors/platinumquest/pq_ray_wall_combo' => (onFinish) -> createPQMaterial(onFinish, 'pq_ray_wall_combo.png', + 'pq_ray_wall_combo.normal.png', 'pq_ray_wall_combo.spec.png'), + 'multiplayer/interiors/platinumquest/pq_ray_wall_combo_2' => (onFinish) -> createPQMaterial(onFinish, 'pq_ray_wall_combo_2.png', + 'pq_ray_wall_combo_2.normal.png', 'pq_ray_wall_combo_2.spec.png'), + 'multiplayer/interiors/platinumquest/pq_ray_wall_combo_2_medium' => (onFinish) -> createPQMaterial(onFinish, 'pq_ray_wall_combo_2_medium.png', + 'pq_ray_wall_combo_2.normal.png', 'pq_ray_wall_combo_2.spec.png'), + 'multiplayer/interiors/platinumquest/pq_ray_wall_combo_small' => (onFinish) -> createPQMaterial(onFinish, 'pq_ray_wall_combo_small.png', + 'pq_ray_wall_combo.normal.png', 'pq_ray_wall_combo.spec.png'), ]; public static function loadDif(path:String, itr:InteriorObject, onFinish:Void->Void, ?so:Int = -1) { @@ -302,6 +389,7 @@ class DifBuilder { var difresource = ResourceLoader.loadInterior(path); difresource.acquire(); var dif = difresource.resource; + dumbDownDif(dif); var geo = so == -1 ? dif.interiors[0] : dif.subObjects[so]; var triangles = []; var textures = []; @@ -582,12 +670,18 @@ class DifBuilder { } } } - var mats = new Map>(); + var mats = new Map>>(); for (index => value in triangles) { if (mats.exists(value.texture)) { - mats[value.texture].push(value); + var arr = mats[value.texture]; + if (arr[arr.length - 1].length >= Math.floor(65535 / 3)) { + var newArr = [value]; + arr.push(newArr); + } else { + arr[arr.length - 1].push(value); + } } else { - mats.set(value.texture, [value]); + mats.set(value.texture, [[value]]); } } collider.finalize(); @@ -597,7 +691,8 @@ class DifBuilder { return false; } if (tex.indexOf('/') != -1) { - tex = tex.split('/')[1]; + var spl = tex.split('/'); + tex = spl[spl.length - 1]; } #if (js || android) @@ -632,7 +727,8 @@ class DifBuilder { } function tex(tex:String):String { if (tex.indexOf('/') != -1) { - tex = tex.split('/')[1]; + var spl = tex.split('/'); + tex = spl[spl.length - 1]; } if (ResourceLoader.exists(Path.directory(path) + "/" + tex + ".jpg")) { @@ -674,72 +770,101 @@ class DifBuilder { onFinish(); }); - for (grp => tris in mats) { - var points = []; - var normals = []; - var uvs = []; - for (tri in tris) { - var p1 = new Point(-tri.p1.x, tri.p1.y, tri.p1.z); - var p2 = new Point(-tri.p2.x, tri.p2.y, tri.p2.z); - var p3 = new Point(-tri.p3.x, tri.p3.y, tri.p3.z); - var n1 = new Point(-tri.normal1.x, tri.normal1.y, tri.normal1.z); - var n2 = new Point(-tri.normal2.x, tri.normal2.y, tri.normal2.z); - var n3 = new Point(-tri.normal3.x, tri.normal3.y, tri.normal3.z); - var uv1 = new UV(tri.uv1.x, tri.uv1.y); - var uv2 = new UV(tri.uv2.x, tri.uv2.y); - var uv3 = new UV(tri.uv3.x, tri.uv3.y); - points.push(p3); - points.push(p2); - points.push(p1); - normals.push(n3); - normals.push(n2); - normals.push(n1); - uvs.push(uv3); - uvs.push(uv2); - uvs.push(uv1); - } - var prim = new Polygon(points); - prim.setUVs(uvs); - prim.setNormals(normals); - var material:Material; - var texture:Texture; - if (canFindTex(grp)) { - texture = ResourceLoader.getTextureRealpath(tex(grp)).resource; // ResourceLoader.getTexture(tex(grp), false).resource; - texture.wrap = Wrap.Repeat; - texture.mipMap = Nearest; - var exactName = StringTools.replace(texture.name, "data/", ""); - material = h3d.mat.Material.create(texture); - if (shaderMaterialDict.exists(exactName)) { - var retrievefunc = shaderMaterialDict[exactName]; - shaderWorker.addTask(fwd -> { - retrievefunc(shad -> { - material.mainPass.removeShader(material.textureShader); - material.mainPass.addShader(shad); - var thisprops:Dynamic = material.getDefaultProps(); - thisprops.light = false; // We will calculate our own lighting - material.props = thisprops; - material.shadows = false; - material.receiveShadows = true; - fwd(); - }); - }); - prim.addTangents(); - } else { - material.shadows = false; - material.receiveShadows = true; + var prim = new Polygon(); + var materials = []; + + for (grp => trigroup in mats) { + for (tris in trigroup) { + var points = []; + var normals = []; + var uvs = []; + for (tri in tris) { + var p1 = new Point(-tri.p1.x, tri.p1.y, tri.p1.z); + var p2 = new Point(-tri.p2.x, tri.p2.y, tri.p2.z); + var p3 = new Point(-tri.p3.x, tri.p3.y, tri.p3.z); + var n1 = new Point(-tri.normal1.x, tri.normal1.y, tri.normal1.z); + var n2 = new Point(-tri.normal2.x, tri.normal2.y, tri.normal2.z); + var n3 = new Point(-tri.normal3.x, tri.normal3.y, tri.normal3.z); + var uv1 = new UV(tri.uv1.x, tri.uv1.y); + var uv2 = new UV(tri.uv2.x, tri.uv2.y); + var uv3 = new UV(tri.uv3.x, tri.uv3.y); + points.push(p3); + points.push(p2); + points.push(p1); + normals.push(n3); + normals.push(n2); + normals.push(n1); + uvs.push(uv3); + uvs.push(uv2); + uvs.push(uv1); } - } else { - Console.warn('Unable to load ${grp} texture for dif ${path}'); - material = Material.create(); - material.shadows = false; - material.receiveShadows = true; + + if (prim.vertexCount() + points.length > 65535) { + prim.endPrimitive(); + var mesh = new MultiMaterial(prim, materials, itr); + materials = []; + prim = new Polygon(); + } + + prim.addPoints(points); + prim.addUVs(uvs); + prim.addNormals(normals); + prim.nextMaterial(); + + var material:Material; + var texture:Texture; + if (canFindTex(grp)) { + texture = ResourceLoader.getTextureRealpath(tex(grp)).resource; // ResourceLoader.getTexture(tex(grp), false).resource; + texture.wrap = Wrap.Repeat; + texture.mipMap = Nearest; + var exactName = StringTools.replace(texture.name, "data/", "").toLowerCase(); + exactName = exactName.substring(0, exactName.lastIndexOf('.')); + material = h3d.mat.Material.create(texture); + var matDictName = exactName; + if (!shaderMaterialDict.exists(matDictName)) { + matDictName = StringTools.replace(exactName, "multiplayer/interiors/mbu", "interiors_mbu"); + } + if (!shaderMaterialDict.exists(matDictName)) { + matDictName = StringTools.replace(exactName, "multiplayer/interiors/custom/mbu", "interiors_mbu"); + } + if (!shaderMaterialDict.exists(matDictName)) { + matDictName = StringTools.replace(exactName, "multiplayer/interiors_mbg/custom/mbu", "interiors_mbu"); + } + if (shaderMaterialDict.exists(matDictName)) { + var retrievefunc = shaderMaterialDict[matDictName]; + shaderWorker.addTask(fwd -> { + retrievefunc(shad -> { + material.mainPass.removeShader(material.textureShader); + material.mainPass.addShader(shad); + var thisprops:Dynamic = material.getDefaultProps(); + thisprops.light = false; // We will calculate our own lighting + material.props = thisprops; + material.shadows = false; + material.receiveShadows = false; + fwd(); + }); + }); + prim.addTangents(); + } else { + material.shadows = false; + material.receiveShadows = false; + } + } else { + Console.warn('Unable to load ${grp} texture for dif ${path}'); + material = Material.create(); + material.shadows = false; + material.receiveShadows = false; + } + // material.mainPass.addShader(new h3d.shader.pbr.PropsValues(1, 0, 0, 1)); + if (Debug.wireFrame) + material.mainPass.wireframe = true; + materials.push(material); } - // material.mainPass.addShader(new h3d.shader.pbr.PropsValues(1, 0, 0, 1)); - if (Debug.wireFrame) - material.mainPass.wireframe = true; - var mesh = new Mesh(prim, material, itr); } + prim.endPrimitive(); + var mesh = new MultiMaterial(prim, materials, itr); + shaderWorker.run(); }); for (f in loadtexs) { @@ -748,4 +873,55 @@ class DifBuilder { worker.run(); }); } + + // Keeps only relevant parts of the dif to reduce memory footprint + static function dumbDownDif(dif:Dif) { + dif.aiSpecialNodes = null; + dif.forceFields = null; + dif.triggers = null; + dif.gameEntities = null; + dif.interiorPathfollowers = null; + dif.triggers = null; + dif.vehicleCollision = null; + for (itr in dif.interiors.concat(dif.subObjects)) { + itr.alarmAmbientColor = null; + itr.alarmLMapIndices = null; + itr.animatedLights = null; + itr.baseAmbientColor = null; + itr.bspNodes = null; + itr.bspSolidLeaves = null; + itr.convexHullEmitStrings = null; + itr.convexHulls = null; + itr.coordBinIndices = null; + itr.boundingSphere = null; + itr.coordBins = null; + itr.edges = null; + itr.edges2 = null; + itr.hullEmitStringIndices = null; + itr.hullIndices = null; + itr.hullPlaneIndices = null; + itr.hullSurfaceIndices = null; + itr.lightMaps = null; + itr.lightStates = null; + itr.nameBuffer = null; + itr.normalIndices = null; + itr.normalLMapIndices = null; + itr.nullSurfaces = null; + itr.pointVisibilities = null; + itr.polyListPlanes = null; + itr.polyListPoints = null; + itr.polyListStrings = null; + itr.portals = null; + itr.solidLeafSurfaces = null; + itr.stateDataBuffers = null; + itr.zones = null; + itr.zoneSurfaces = null; + itr.zoneStaticMeshes = null; + itr.windingIndices = null; + itr.texNormals = null; + itr.texMatrices = null; + itr.texMatIndices = null; + itr.stateDatas = null; + } + } } diff --git a/src/DtsObject.hx b/src/DtsObject.hx index ea21d12f..56efc73d 100644 --- a/src/DtsObject.hx +++ b/src/DtsObject.hx @@ -1,5 +1,7 @@ package src; +import h3d.prim.DynamicPrimitive; +import h3d.scene.MultiMaterial; import shaders.EnvMap; import h3d.shader.CubeMap; import dts.TSDrawPrimitive; @@ -51,13 +53,6 @@ var dtsMaterials = [ "pball-round-bottm" => {friction: 0.5, restitution: 0.0, force: 15.0} ]; -typedef GraphNode = { - var index:Int; - var node:Node; - var children:Array; - var parent:GraphNode; -} - typedef MaterialGeometry = { var vertices:Array; var normals:Array; @@ -65,12 +60,15 @@ typedef MaterialGeometry = { var indices:Array; } -typedef SkinMeshData = { +@:structInit +@:publicFields +class SkinMeshData { var meshIndex:Int; - var vertices:Array; - var normals:Array; + var vertices:Array; // Turn THIS into a FloatBuffer + var normals:Array; // SAME HERE var indices:Array; var geometry:Object; + var primitives:Array; } @:publicFields @@ -86,8 +84,8 @@ class DtsObject extends GameObject { var materialInfos:Map> = new Map(); var matNameOverride:Map = new Map(); - var sequenceKeyframeOverride:Map = new Map(); - var lastSequenceKeyframes:Map = new Map(); + var sequenceKeyframeOverride:Array = []; + var lastSequenceKeyframes:Array = []; var graphNodes:Array = []; var dirtyTransforms:Array = []; @@ -196,28 +194,33 @@ class DtsObject extends GameObject { var vertexNormals = mesh.normals.map(v -> new Vector(-v.x, v.y, v.z)); var geometry = this.generateMaterialGeometry(mesh, vertices, vertexNormals); + var poly = new Polygon(); + var usedMats = []; for (k in 0...geometry.length) { if (geometry[k].vertices.length == 0) continue; - var poly = new Polygon(geometry[k].vertices.map(x -> x.toPoint())); - poly.setNormals(geometry[k].normals.map(x -> x.toPoint())); - poly.setUVs(geometry[k].uvs); + poly.addPoints(geometry[k].vertices.map(x -> x.toPoint())); + poly.addNormals(geometry[k].normals.map(x -> x.toPoint())); + poly.addUVs(geometry[k].uvs); + poly.nextMaterial(); - var obj = new Mesh(poly, materials[k], this.graphNodes[i]); + usedMats.push(materials[k]); } + poly.endPrimitive(); + var obj = new MultiMaterial(poly, usedMats, this.graphNodes[i]); } else { - var usedMats = []; + // var usedMats = []; - for (prim in mesh.primitives) { - if (!usedMats.contains(prim.matIndex)) { - usedMats.push(prim.matIndex); - } - } + // for (prim in mesh.primitives) { + // if (!usedMats.contains(prim.matIndex)) { + // usedMats.push(prim.matIndex); + // } + // } - for (k in usedMats) { - var obj = new Object(this.graphNodes[i]); - } + // for (k in usedMats) { + var obj = new Object(this.graphNodes[i]); + // } } } } @@ -266,22 +269,39 @@ class DtsObject extends GameObject { var vertices = mesh.vertices.map(v -> new Vector(-v.x, v.y, v.z)); var vertexNormals = mesh.normals.map(v -> new Vector(-v.x, v.y, v.z)); var geometry = this.generateMaterialGeometry(mesh, vertices, vertexNormals); + var prims = []; for (k in 0...geometry.length) { if (geometry[k].vertices.length == 0) continue; - var poly = new DynamicPolygon(geometry[k].vertices.map(x -> x.toPoint())); - poly.normals = geometry[k].normals.map(x -> x.toPoint()); - poly.uvs = geometry[k].uvs; + var poly = new DynamicPolygon(); + poly.addPoints(geometry[k].vertices.map(x -> x.toPoint())); + poly.addNormals(geometry[k].normals.map(x -> x.toPoint())); + poly.addUVs(geometry[k].uvs); - var obj = new Mesh(poly, materials[k], skinObj); + var obj = new MultiMaterial(poly, [materials[k]], skinObj); + + prims.push(poly); + } + var flatVerts = []; + var flatNormals = []; + for (v in vertices) { + flatVerts.push(v.x); + flatVerts.push(v.y); + flatVerts.push(v.z); + } + for (n in vertexNormals) { + flatNormals.push(n.x); + flatNormals.push(n.y); + flatNormals.push(n.z); } skinMeshData = { meshIndex: i, - vertices: vertices, - normals: vertexNormals, + vertices: flatVerts, + normals: flatNormals, indices: [], - geometry: skinObj + geometry: skinObj, + primitives: prims }; var idx = geometry.map(x -> x.indices); for (indexes in idx) { @@ -304,12 +324,18 @@ class DtsObject extends GameObject { vertices: [], normals: [], indices: [], - geometry: skinObj + geometry: skinObj, + primitives: [] }; } } } + for (seq in this.dts.sequences) { + lastSequenceKeyframes.push(0); + sequenceKeyframeOverride.push(-1); + } + if (!this.isInstanced) { for (i in 0...this.materials.length) { var info = this.materialInfos.get(this.materials[i]); @@ -408,6 +434,10 @@ class DtsObject extends GameObject { dtsshader.currentOpacity = 1; if (this.identifier == "Tornado") dtsshader.normalizeNormals = false; // These arent normalized + if (this.identifier != null && StringTools.startsWith(this.identifier, "GemBeam")) { + dtsshader.usePremultipliedAlpha = true; + dtsshader.opacityMult = 3.0; // Hardcoded + } material.mainPass.removeShader(material.textureShader); material.mainPass.addShader(dtsshader); } @@ -415,7 +445,7 @@ class DtsObject extends GameObject { } material.shadows = false; if (this.isCollideable) - material.receiveShadows = true; + material.receiveShadows = false; if (material.texture == null && !iflMaterial) { var dtsshader = new DtsTexture(); dtsshader.currentOpacity = 1; @@ -443,10 +473,20 @@ class DtsObject extends GameObject { material.shadows = false; } if (flags & 4 > 0) { - material.blendMode = BlendMode.Alpha; - material.mainPass.culling = h3d.mat.Data.Face.None; - material.receiveShadows = false; - material.mainPass.depthWrite = false; + if (this.identifier == null || !StringTools.startsWith(this.identifier, "GemBeam")) { + material.blendMode = BlendMode.Alpha; + + material.mainPass.culling = h3d.mat.Data.Face.None; + material.receiveShadows = false; + material.mainPass.depthWrite = false; + } + if (this.identifier != null && StringTools.startsWith(this.identifier, "GemBeam")) { + material.blendMode = BlendMode.Alpha; + material.mainPass.culling = h3d.mat.Data.Face.None; + material.receiveShadows = false; + material.mainPass.blend(SrcAlpha, OneMinusSrcAlpha); + material.mainPass.depthWrite = false; + } } if (flags & 8 > 0) { material.blendMode = BlendMode.Add; @@ -559,32 +599,99 @@ class DtsObject extends GameObject { hs.restitution = data.restitution; } - for (i in primitive.firstElement...(primitive.firstElement + primitive.numElements - 2)) { - var i1 = dtsMesh.indices[i]; - var i2 = dtsMesh.indices[i + 1]; - var i3 = dtsMesh.indices[i + 2]; + var drawType = primitive.matIndex & TSDrawPrimitive.TypeMask; - if (k % 2 == 0) { - // Swap the first and last index to mainting correct winding order - var temp = i1; - i1 = i3; - i3 = temp; + if (drawType == TSDrawPrimitive.Triangles) { + var i = primitive.firstElement; + while (i < primitive.firstElement + primitive.numElements) { + var i1 = dtsMesh.indices[i]; + var i2 = dtsMesh.indices[i + 1]; + var i3 = dtsMesh.indices[i + 2]; + + var t1 = vertices[i2].sub(vertices[i1]); + var t2 = vertices[i3].sub(vertices[i1]); + var tarea = Math.abs(t1.cross(t2).length()) / 2.0; + if (tarea < 0.00001) + continue; + + for (index in [i1, i2, i3]) { + var vertex = vertices[index]; + hs.addPoint(vertex.x, vertex.y, vertex.z); + hs.transformKeys.push(0); + + var normal = vertexNormals[index]; + hs.addNormal(normal.x, normal.y, normal.z); + } + + hs.indices.push(hs.indices.length); + hs.indices.push(hs.indices.length); + hs.indices.push(hs.indices.length); + + i += 3; } + } else if (drawType == TSDrawPrimitive.Strip) { + var k = 0; + for (i in primitive.firstElement...(primitive.firstElement + primitive.numElements - 2)) { + var i1 = dtsMesh.indices[i]; + var i2 = dtsMesh.indices[i + 1]; + var i3 = dtsMesh.indices[i + 2]; - for (index in [i1, i2, i3]) { - var vertex = vertices[index]; - hs.addPoint(vertex.x, vertex.y, vertex.z); - hs.transformKeys.push(0); + if (k % 2 == 0) { + // Swap the first and last index to mainting correct winding order + var temp = i1; + i1 = i3; + i3 = temp; + } - var normal = vertexNormals[index]; - hs.addNormal(normal.x, normal.y, normal.z); + var t1 = vertices[i2].sub(vertices[i1]); + var t2 = vertices[i3].sub(vertices[i1]); + var tarea = Math.abs(t1.cross(t2).length()) / 2.0; + if (tarea < 0.00001) + continue; + + for (index in [i1, i2, i3]) { + var vertex = vertices[index]; + hs.addPoint(vertex.x, vertex.y, vertex.z); + hs.transformKeys.push(0); + + var normal = vertexNormals[index]; + hs.addNormal(normal.x, normal.y, normal.z); + } + + hs.indices.push(hs.indices.length); + hs.indices.push(hs.indices.length); + hs.indices.push(hs.indices.length); + + k++; } + } else if (drawType == TSDrawPrimitive.Fan) { + var i = primitive.firstElement; + while (i < primitive.firstElement + primitive.numElements - 2) { + var i1 = dtsMesh.indices[primitive.firstElement]; + var i2 = dtsMesh.indices[i + 1]; + var i3 = dtsMesh.indices[i + 2]; - hs.indices.push(hs.indices.length); - hs.indices.push(hs.indices.length); - hs.indices.push(hs.indices.length); + var t1 = vertices[i2].sub(vertices[i1]); + var t2 = vertices[i3].sub(vertices[i1]); + var tarea = Math.abs(t1.cross(t2).length()) / 2.0; + if (tarea < 0.00001) + continue; - k++; + for (index in [i1, i2, i3]) { + var vertex = vertices[index]; + hs.addPoint(vertex.x, vertex.y, vertex.z); + hs.transformKeys.push(0); + + var normal = vertexNormals[index]; + hs.addNormal(normal.x, normal.y, normal.z); + } + + hs.indices.push(hs.indices.length); + hs.indices.push(hs.indices.length); + hs.indices.push(hs.indices.length); + + i++; + } } hs.generateBoundingBox(); @@ -717,7 +824,11 @@ class DtsObject extends GameObject { } public function update(timeState:TimeState) { - for (sequence in this.dts.sequences) { + if (this.currentOpacity == 0) + return; + + for (i in 0...this.dts.sequences.length) { + var sequence = this.dts.sequences[i]; if (!this.showSequences) break; if (!this.hasNonVisualSequences) @@ -733,10 +844,10 @@ class DtsObject extends GameObject { var translations:Array = null; var scales:Array = null; - var actualKeyframe = this.sequenceKeyframeOverride.exists(sequence) ? this.sequenceKeyframeOverride.get(sequence) : ((completion * sequence.numKeyFrames) % sequence.numKeyFrames); - if (this.lastSequenceKeyframes.get(sequence) == actualKeyframe) + var actualKeyframe = this.sequenceKeyframeOverride[i] != -1 ? this.sequenceKeyframeOverride[i] : ((completion * sequence.numKeyFrames) % sequence.numKeyFrames); + if (lastSequenceKeyframes[i] == actualKeyframe) continue; - lastSequenceKeyframes.set(sequence, actualKeyframe); + lastSequenceKeyframes[i] = actualKeyframe; var keyframeLow = Math.floor(actualKeyframe); var keyframeHigh = Math.ceil(actualKeyframe) % sequence.numKeyFrames; @@ -764,7 +875,8 @@ class DtsObject extends GameObject { quat.slerp(q1, q2, t); quat.normalize(); - this.graphNodes[i].setRotationQuat(quat); + this.graphNodes[i].getRotationQuat().load(quat); + this.graphNodes[i].posChanged = true; this.dirtyTransforms[i] = true; affectedCount++; // quaternions.push(quat); @@ -773,7 +885,8 @@ class DtsObject extends GameObject { var quat = new Quat(-rotation.x, rotation.y, rotation.z, -rotation.w); quat.normalize(); quat.conjugate(); - this.graphNodes[i].setRotationQuat(quat); + this.graphNodes[i].getRotationQuat().load(quat); + this.graphNodes[i].posChanged = true; // quaternions.push(quat); } } @@ -839,8 +952,8 @@ class DtsObject extends GameObject { var mesh = this.dts.meshes[info.meshIndex]; for (i in 0...info.vertices.length) { - info.vertices[i] = new Vector(); - info.normals[i] = new Vector(); + info.vertices[i] = 0; + info.normals[i] = 0; } var boneTransformations = []; @@ -869,46 +982,47 @@ class DtsObject extends GameObject { var mat = boneTransformations[mesh.boneIndices[i]]; vec.transform(mat); - vec = vec.multiply(mesh.weights[i]); + vec.load(vec.multiply(mesh.weights[i])); Util.m_matF_x_vectorF(mat, vec2); - vec2 = vec2.multiply(mesh.weights[i]); + vec2.load(vec2.multiply(mesh.weights[i])); - info.vertices[vIndex] = info.vertices[vIndex].add(vec); - info.normals[vIndex] = info.normals[vIndex].add(vec2); + info.vertices[3 * vIndex] = info.vertices[3 * vIndex] + vec.x; + info.vertices[3 * vIndex + 1] = info.vertices[3 * vIndex + 1] + vec.y; + info.vertices[3 * vIndex + 2] = info.vertices[3 * vIndex + 2] + vec.z; + info.normals[3 * vIndex] = info.normals[3 * vIndex] + vec2.x; + info.normals[3 * vIndex + 1] = info.normals[3 * vIndex + 1] + vec2.y; + info.normals[3 * vIndex + 2] = info.normals[3 * vIndex + 2] + vec2.z; } - for (i in 0...info.normals.length) { - var norm = info.normals[i]; + for (i in 0...Std.int(info.normals.length / 3)) { + var norm = new Vector(info.normals[3 * i], info.normals[3 * i + 1], info.normals[3 * i + 2]); var len2 = norm.dot(norm); - if (len2 > 0.01) + if (len2 > 0.01) { norm.normalize(); + + info.normals[3 * i] = norm.x; + info.normals[3 * i + 1] = norm.y; + info.normals[3 * i + 2] = norm.z; + } } var meshIndex = 0; - var mesh:Mesh = cast info.geometry.children[meshIndex]; - var prim:DynamicPolygon = cast mesh.primitive; - var vbuffer:FloatBuffer = null; - if (prim.buffer != null) { - vbuffer = prim.getDrawBuffer(prim.points.length); - } + var prim = info.primitives[meshIndex]; var pos = 0; for (i in info.indices) { - if (pos >= prim.points.length) { + if (pos >= Std.int(prim.points.length / 3)) { meshIndex++; - mesh.primitive = prim; - mesh = cast info.geometry.children[meshIndex]; - prim = cast mesh.primitive; + prim = info.primitives[meshIndex]; pos = 0; - if (prim.buffer != null) { - vbuffer = prim.getDrawBuffer(prim.points.length); - } } - var vertex = info.vertices[i]; - var normal = info.normals[i]; - prim.points[pos] = vertex.toPoint(); - prim.normals[pos] = normal.toPoint(); // .normalized(); + prim.points[3 * pos] = info.vertices[3 * i]; + prim.points[3 * pos + 1] = info.vertices[3 * i + 1]; + prim.points[3 * pos + 2] = info.vertices[3 * i + 2]; + prim.normals[3 * pos] = info.normals[3 * i]; + prim.normals[3 * pos + 1] = info.normals[3 * i + 1]; + prim.normals[3 * pos + 2] = info.normals[3 * i + 2]; if (prim.buffer != null) { prim.dirtyFlags[pos] = true; } @@ -952,15 +1066,17 @@ class DtsObject extends GameObject { var spinAnimation = new Quat(); spinAnimation.initRotateAxis(0, 0, -1, timeState.timeSinceLoad * this.ambientSpinFactor); - var orientation = this.getRotationQuat(); + // var orientation = this.getRotationQuat(); // spinAnimation.multiply(orientation, spinAnimation); - this.rootObject.setRotationQuat(spinAnimation); + this.rootObject.getRotationQuat().load(spinAnimation); + this.rootObject.posChanged = true; + // setRotationQuat(spinAnimation); } for (i in 0...this.colliders.length) { if (this.dirtyTransforms[this.colliders[i].userData]) { - var absTform = this.graphNodes[this.colliders[i].userData].getAbsPos().clone(); + var absTform = this.graphNodes[this.colliders[i].userData].getAbsPos(); if (this.colliders[i] != null) { this.colliders[i].setTransform(absTform); this.level.collisionWorld.updateTransform(this.colliders[i]); diff --git a/src/DynamicPolygon.hx b/src/DynamicPolygon.hx index 4f4ba1af..162c7ea1 100644 --- a/src/DynamicPolygon.hx +++ b/src/DynamicPolygon.hx @@ -12,37 +12,62 @@ import h3d.col.Point; To update points/normals/uvs, just change the points/normals/uvs array and set dirtyFlags[i] to true for all index of changed points/normals/uvs where i is index of point and call flush(); */ class DynamicPolygon extends MeshPrimitive { - public var points:Array; - public var normals:Array; - public var uvs:Array; - public var idx:hxd.IndexBuffer; + public var points:Array; + public var normals:Array; + public var uvs:Array; // A list of bools having the same length as points/normals/uv and each bool corresponds to point/normal/uv having the same index as the bool // Basically this is just used to tell apart vertices that changed so it will be flushed, it will be created after alloc has been called public var dirtyFlags:Array; - var vbuf:FloatBuffer; + var buf:FloatBuffer; - @:s var scaled = 1.; - @:s var translatedX = 0.; - @:s var translatedY = 0.; - @:s var translatedZ = 0.; + var bounds:h3d.col.Bounds; - public function new(points, ?idx) { - this.points = points; - this.idx = idx; + public function new() {} + + public function addPoints(points:Array) { + this.points = []; + for (p in points) { + this.points.push(p.x); + this.points.push(p.y); + this.points.push(p.z); + } + } + + public function addUVs(uvs:Array) { + this.uvs = []; + for (uv in uvs) { + this.uvs.push(uv.u); + this.uvs.push(uv.v); + } + } + + public function addNormals(normals:Array) { + this.normals = []; + for (n in normals) { + this.normals.push(n.x); + this.normals.push(n.y); + this.normals.push(n.z); + } } override function getBounds() { - var b = new h3d.col.Bounds(); - for (p in points) - b.addPoint(p); - return b; + if (bounds == null) { + var b = new h3d.col.Bounds(); + var i = 0; + while (i < points.length) { + b.addPoint(new h3d.col.Point(points[i], points[i + 1], points[i + 2])); + i += 3; + } + bounds = b; + } + return bounds; } public function flush() { var alloc = hxd.impl.Allocator.get(); - var vsize = points.length; + var vsize = Std.int(points.length / 3); if (vsize == 0) { if (buffer != null) { alloc.disposeBuffer(buffer); @@ -64,22 +89,19 @@ class DynamicPolygon extends MeshPrimitive { buffer = alloc.allocBuffer(hxd.Math.imax(0, vsize), 8, Dynamic); var off = 0; - for (k in 0...points.length) { + for (k in 0...Std.int(points.length / 3)) { if (dirtyFlags[k]) { - var p = points[k]; - vbuf[off++] = p.x; - vbuf[off++] = p.y; - vbuf[off++] = p.z; + buf[off++] = points[k * 3]; + buf[off++] = points[k * 3 + 1]; + buf[off++] = points[k * 3 + 2]; if (normals != null) { - var n = normals[k]; - vbuf[off++] = n.x; - vbuf[off++] = n.y; - vbuf[off++] = n.z; + buf[off++] = normals[k * 3]; + buf[off++] = normals[k * 3 + 1]; + buf[off++] = normals[k * 3 + 2]; } if (uvs != null) { - var uv = uvs[k]; - vbuf[off++] = uv.u; - vbuf[off++] = uv.v; + buf[off++] = uvs[k * 2]; + buf[off++] = uvs[k * 2 + 1]; } dirtyFlags[k] = false; } else { @@ -91,9 +113,7 @@ class DynamicPolygon extends MeshPrimitive { } } - buffer.uploadVector(vbuf, 0, vsize); - if (idx != null) - indexes = h3d.Indexes.alloc(idx); + buffer.uploadVector(buf, 0, vsize); } override function alloc(engine:h3d.Engine) { @@ -117,146 +137,41 @@ class DynamicPolygon extends MeshPrimitive { size += 2; } - vbuf = new hxd.FloatBuffer(); - for (k in 0...points.length) { - var p = points[k]; - vbuf.push(p.x); - vbuf.push(p.y); - vbuf.push(p.z); + buf = new hxd.FloatBuffer(); + for (k in 0...Std.int(points.length / 3)) { + buf.push(points[k * 3]); + buf.push(points[k * 3 + 1]); + buf.push(points[k * 3 + 2]); if (normals != null) { - var n = normals[k]; - vbuf.push(n.x); - vbuf.push(n.y); - vbuf.push(n.z); + buf.push(normals[k * 3]); + buf.push(normals[k * 3 + 1]); + buf.push(normals[k * 3 + 2]); } if (uvs != null) { - var t = uvs[k]; - vbuf.push(t.u); - vbuf.push(t.v); + buf.push(uvs[k * 2]); + buf.push(uvs[k * 2 + 1]); } dirtyFlags.push(false); } + var flags:Array = []; - if (idx == null) - flags.push(Triangles); + flags.push(Triangles); if (normals == null) flags.push(RawFormat); flags.push(Dynamic); + buffer = allocator.allocBuffer(hxd.Math.imax(0, vertexCount()), 8, Dynamic); // h3d.Buffer.ofFloats(buf, size, flags); - buffer.uploadVector(vbuf, 0, points.length); + buffer.uploadVector(buf, 0, Std.int(points.length / 3)); for (i in 0...names.length) addBuffer(names[i], buffer, positions[i]); - if (idx != null) - indexes = h3d.Indexes.alloc(idx); - } - - public function getDrawBuffer(vertices:Int) { - if (vbuf == null) - vbuf = hxd.impl.Allocator.get().allocFloats(vertices * 8) - else - vbuf.grow(vertices * 8); - return vbuf; - } - - public function unindex() { - if (idx != null && points.length != idx.length) { - var p = []; - var used = []; - for (i in 0...idx.length) - p.push(points[idx[i]].clone()); - if (normals != null) { - var n = []; - for (i in 0...idx.length) - n.push(normals[idx[i]].clone()); - normals = n; - } - if (uvs != null) { - var t = []; - for (i in 0...idx.length) - t.push(uvs[idx[i]].clone()); - uvs = t; - } - points = p; - idx = null; - } - } - - public function translate(dx, dy, dz) { - translatedX += dx; - translatedY += dy; - translatedZ += dz; - for (p in points) { - p.x += dx; - p.y += dy; - p.z += dz; - } - } - - public function scale(s:Float) { - scaled *= s; - for (p in points) { - p.x *= s; - p.y *= s; - p.z *= s; - } - } - - public function addNormals() { - // make per-point normal - normals = new Array(); - for (i in 0...points.length) - normals[i] = new Point(); - var pos = 0; - for (i in 0...triCount()) { - var i0, i1, i2; - if (idx == null) { - i0 = pos++; - i1 = pos++; - i2 = pos++; - } else { - i0 = idx[pos++]; - i1 = idx[pos++]; - i2 = idx[pos++]; - } - var p0 = points[i0]; - var p1 = points[i1]; - var p2 = points[i2]; - // this is the per-face normal - var n = p1.sub(p0).cross(p2.sub(p0)); - // add it to each point - normals[i0].x += n.x; - normals[i0].y += n.y; - normals[i0].z += n.z; - normals[i1].x += n.x; - normals[i1].y += n.y; - normals[i1].z += n.z; - normals[i2].x += n.x; - normals[i2].y += n.y; - normals[i2].z += n.z; - } - // normalize all normals - for (n in normals) - n.normalize(); - } - - public function addUVs() { - uvs = []; - for (i in 0...points.length) - uvs[i] = new UV(points[i].x, points[i].y); - } - - public function uvScale(su:Float, sv:Float) { - if (uvs == null) - throw "Missing UVs"; - var m = new Map(); - for (t in uvs) { - if (m.exists(t)) - continue; - m.set(t, true); - t.u *= su; - t.v *= sv; + if (indexes == null && Std.int(points.length / 3) > 65535) { + var indices = new haxe.io.BytesOutput(); + for (i in 0...Std.int(points.length / 3)) + indices.writeInt32(i); + indexes = new h3d.Indexes(indices.length >> 2, true); + indexes.uploadBytes(indices.getBytes(), 0, indices.length >> 2); } } @@ -264,27 +179,11 @@ class DynamicPolygon extends MeshPrimitive { var n = super.triCount(); if (n != 0) return n; - return Std.int((idx == null ? points.length : idx.length) / 3); + return Std.int(points.length / 3); } override function vertexCount() { - return points.length; - } - - override function getCollider():h3d.col.Collider { - var vertexes = new haxe.ds.Vector(points.length * 3); - var indexes = new haxe.ds.Vector(idx.length); - var vid = 0; - for (p in points) { - vertexes[vid++] = p.x; - vertexes[vid++] = p.y; - vertexes[vid++] = p.z; - } - for (i in 0...idx.length) - indexes[i] = idx[i]; - var poly = new h3d.col.Polygon(); - poly.addBuffers(vertexes, indexes); - return poly; + return Std.int(points.length / 3); } override function render(engine:h3d.Engine) { @@ -298,94 +197,4 @@ class DynamicPolygon extends MeshPrimitive { else engine.renderMultiBuffers(bufs, engine.mem.triIndexes, 0, triCount()); } - - #if hxbit - override function customSerialize(ctx:hxbit.Serializer) { - ctx.addInt(points.length); - for (p in points) { - ctx.addDouble(p.x); - ctx.addDouble(p.y); - ctx.addDouble(p.z); - } - if (normals == null) - ctx.addInt(0); - else { - ctx.addInt(normals.length); - for (p in normals) { - ctx.addDouble(p.x); - ctx.addDouble(p.y); - ctx.addDouble(p.z); - } - } - if (tangents == null) - ctx.addInt(0); - else { - ctx.addInt(tangents.length); - for (p in tangents) { - ctx.addDouble(p.x); - ctx.addDouble(p.y); - ctx.addDouble(p.z); - } - } - if (uvs == null) - ctx.addInt(0); - else { - ctx.addInt(uvs.length); - for (uv in uvs) { - ctx.addDouble(uv.u); - ctx.addDouble(uv.v); - } - } - if (idx == null) - ctx.addInt(0); - else { - ctx.addInt(idx.length); - for (i in idx) - ctx.addInt(i); - } - if (colors == null) - ctx.addInt(0); - else { - ctx.addInt(colors.length); - for (c in colors) { - ctx.addDouble(c.x); - ctx.addDouble(c.y); - ctx.addDouble(c.z); - } - } - } - - override function customUnserialize(ctx:hxbit.Serializer) { - points = [ - for (i in 0...ctx.getInt()) - new h3d.col.Point(ctx.getDouble(), ctx.getDouble(), ctx.getDouble()) - ]; - normals = [ - for (i in 0...ctx.getInt()) - new h3d.col.Point(ctx.getDouble(), ctx.getDouble(), ctx.getDouble()) - ]; - tangents = [ - for (i in 0...ctx.getInt()) - new h3d.col.Point(ctx.getDouble(), ctx.getDouble(), ctx.getDouble()) - ]; - uvs = [for (i in 0...ctx.getInt()) new UV(ctx.getDouble(), ctx.getDouble())]; - if (normals.length == 0) - normals = null; - if (uvs.length == 0) - uvs = null; - var nindex = ctx.getInt(); - if (nindex > 0) { - idx = new hxd.IndexBuffer(); - idx.grow(nindex); - for (i in 0...nindex) - idx[i] = ctx.getInt(); - } - colors = [ - for (i in 0...ctx.getInt()) - new h3d.col.Point(ctx.getDouble(), ctx.getDouble(), ctx.getDouble()) - ]; - if (colors.length == 0) - colors = null; - } - #end } diff --git a/src/ForceObject.hx b/src/ForceObject.hx index 21069996..7e343240 100644 --- a/src/ForceObject.hx +++ b/src/ForceObject.hx @@ -22,11 +22,11 @@ typedef ForceData = { class ForceObject extends DtsObject { var forceDatas:Array; - public function getForce(pos:Vector) { + public function getForce(pos:Vector, outForce:Vector) { + if (pos.distanceSq(this.getAbsPos().getPosition()) > 50 * 50) + return; var strength = 0.0; var dot = 0.0; - var posVec = new Vector(); - var retForce = new Vector(); for (forceData in forceDatas) { if (forceData.forceType == NoForce) { continue; @@ -40,7 +40,7 @@ class ForceObject extends DtsObject { nodeVec = forceData.forceVector; } - posVec = pos.sub(node.getPosition()); + var posVec = pos.sub(node.getPosition()); dot = posVec.length(); if (forceData.forceRadius < dot) { @@ -52,23 +52,21 @@ class ForceObject extends DtsObject { if (forceType == ForceSpherical) { dot = strength / dot; - retForce = retForce.add(posVec.multiply(dot)); + outForce.load(outForce.add(posVec.multiply(dot))); } if (forceType == ForceField) { - retForce = retForce.add(nodeVec.multiply(strength)); + outForce.load(outForce.add(nodeVec.multiply(strength))); } if (forceType == ForceCone) { - posVec = posVec.multiply(1 / dot); + posVec.load(posVec.multiply(1 / dot)); var newDot = nodeVec.dot(posVec); var arc = forceData.forceArc; if (arc < newDot) { - retForce = retForce.add(posVec.multiply(strength).multiply(newDot - arc).multiply(1 / (1 - arc))); + outForce.load(outForce.add(posVec.multiply(strength).multiply(newDot - arc).multiply(1 / (1 - arc)))); } } } - - return retForce; } } diff --git a/src/GameObject.hx b/src/GameObject.hx index c3deaff6..1d16d7af 100644 --- a/src/GameObject.hx +++ b/src/GameObject.hx @@ -6,6 +6,7 @@ import h3d.scene.Object; import src.Resource; import h3d.mat.Texture; import hxd.res.Sound; +import src.Marble; class GameObject extends Object { public var identifier:String; @@ -17,13 +18,13 @@ class GameObject extends Object { var textureResources:Array> = []; var soundResources:Array> = []; - public function onMarbleContact(time:TimeState, ?contact:CollisionInfo) {} + public function onMarbleContact(marble:Marble, time:TimeState, ?contact:CollisionInfo) {} - public function onMarbleInside(time:TimeState) {} + public function onMarbleInside(marble:Marble, time:TimeState) {} - public function onMarbleEnter(time:TimeState) {} + public function onMarbleEnter(marble:Marble, time:TimeState) {} - public function onMarbleLeave(time:TimeState) {} + public function onMarbleLeave(marble:Marble, time:TimeState) {} public function onLevelStart() {} diff --git a/src/Gamepad.hx b/src/Gamepad.hx index 43150775..9e96b052 100644 --- a/src/Gamepad.hx +++ b/src/Gamepad.hx @@ -78,6 +78,15 @@ class Gamepad { return false; } + public static function releaseKey(buttons:Array) { + for (button in buttons) { + var buttonId = getId(button); + if (buttonId < 0 || buttonId > gamepad.buttons.length) + continue; + @:privateAccess gamepad.buttons[buttonId] = false; + } + } + public static function isPressed(buttons:Array) { for (button in buttons) { var buttonId = getId(button); diff --git a/src/InstanceManager.hx b/src/InstanceManager.hx index 424eec96..ffc39771 100644 --- a/src/InstanceManager.hx +++ b/src/InstanceManager.hx @@ -1,5 +1,8 @@ package src; +import shaders.PQMaterial; +import h3d.mat.Material; +import h3d.scene.MultiMaterial; import shaders.EnvMap; import h3d.shader.CubeMap; import shaders.NormalMaterial; @@ -25,6 +28,8 @@ class MeshBatchInfo { var meshbatch:MeshBatch; var transparencymeshbatch:MeshBatch; var mesh:Mesh; + var dtsShader:DtsTexture; + var baseBounds:h3d.col.Bounds; public function new() {} } @@ -33,6 +38,7 @@ class MeshBatchInfo { class MeshInstance { var emptyObj:Object; var gameObject:GameObject; + var visibleTicks:Int = 10; public function new(eo, go) { this.emptyObj = eo; @@ -40,69 +46,156 @@ class MeshInstance { } } +@:generic +class ReusableListIterator { + var l:ReusableList; + var i = 0; + + public function new(l:ReusableList) { + this.l = l; + } + + public inline function hasNext() { + return i != l.length; + } + + public inline function next() { + var ret = @:privateAccess l.array[i]; + i += 1; + return ret; + } +} + +@:allow(ReusableListIterator) +@:generic +class ReusableList { + var array:Array; + + public var length:Int = 0; + + public inline function new() { + array = []; + } + + public inline function push(item:T) { + if (array.length == length) { + array.push(item); + length += 1; + } else { + array[length] = item; + length += 1; + } + } + + public inline function clear() { + length = 0; + } + + public inline function iterator():ReusableListIterator { + return new ReusableListIterator(this); + } +} + +@:publicFields +@:structInit +class InstancedMesh { + var batches:Array; +} + class InstanceManager { - var objects:Array> = []; + var objects:Array = []; var objectMap:Map = []; var scene:Scene; + var opaqueinstances = new ReusableList(); + var transparentinstances = new ReusableList(); public function new(scene:Scene) { this.scene = scene; } public function render() { - var renderFrustums = [scene.camera.frustum]; + static var tmpBounds = new h3d.col.Bounds(); + var renderFrustum = scene.camera.frustum; + var doFrustumCheck = true; // This sucks holy shit - if (MarbleGame.instance.world.marble != null && MarbleGame.instance.world.marble.cubemapRenderer != null) - renderFrustums = renderFrustums.concat(MarbleGame.instance.world.marble.cubemapRenderer.getCameraFrustums()); + doFrustumCheck = MarbleGame.instance.world != null + && MarbleGame.instance.world.marble.cubemapRenderer != null + && @:privateAccess !MarbleGame.instance.world.marble.camera.spectate; + var cameraFrustrums = doFrustumCheck ? MarbleGame.instance.world.marble.cubemapRenderer.getCameraFrustums() : null; for (meshes in objects) { - for (minfo in meshes) { - var visibleinstances = []; + for (minfo in meshes.batches) { + opaqueinstances.clear(); + transparentinstances.clear(); // Culling if (minfo.meshbatch != null || minfo.transparencymeshbatch != null) { for (inst in minfo.instances) { - var objBounds = @:privateAccess cast(minfo.meshbatch.primitive, Instanced).baseBounds.clone(); - objBounds.transform(inst.emptyObj.getAbsPos()); - for (frustum in renderFrustums) { - if (frustum.hasBounds(objBounds)) { - visibleinstances.push(inst); - break; + // for (frustum in renderFrustums) { + // if (frustum.hasBounds(objBounds)) { + + if (inst.visibleTicks == 0) { + tmpBounds.load(minfo.baseBounds); + tmpBounds.transform(inst.emptyObj.getAbsPos()); + + if (cameraFrustrums == null && !renderFrustum.hasBounds(tmpBounds)) + continue; + + if (cameraFrustrums != null) { + var found = false; + for (frustrum in cameraFrustrums) { + if (frustrum.hasBounds(tmpBounds)) { + found = true; + break; + } + } + if (!found) + continue; } + + inst.visibleTicks = 10; + } else { + inst.visibleTicks = inst.visibleTicks - 1; } + + if (inst.gameObject.currentOpacity == 1) + opaqueinstances.push(inst); + else if (inst.gameObject.currentOpacity != 0) + transparentinstances.push(inst); + // break; + // } + // } } } // Emit non culled primitives if (minfo.meshbatch != null) { - var opaqueinstances = visibleinstances.filter(x -> x.gameObject.currentOpacity == 1); minfo.meshbatch.begin(opaqueinstances.length); for (instance in opaqueinstances) { // Draw the opaque shit first - var dtsShader = minfo.meshbatch.material.mainPass.getShader(DtsTexture); + var dtsShader = minfo.dtsShader; if (dtsShader != null) { dtsShader.currentOpacity = instance.gameObject.currentOpacity; } var transform = instance.emptyObj.getAbsPos(); // minfo.meshbatch.shadersChanged = true; - minfo.meshbatch.material.mainPass.setPassName(minfo.mesh.material.mainPass.name); - minfo.meshbatch.material.mainPass.enableLights = minfo.mesh.material.mainPass.enableLights; + // minfo.meshbatch.material.mainPass.setPassName(minfo.mesh.material.mainPass.name); + // minfo.meshbatch.material.mainPass.enableLights = minfo.mesh.material.mainPass.enableLights; minfo.meshbatch.worldPosition = transform; minfo.meshbatch.emitInstance(); } } if (minfo.transparencymeshbatch != null) { - var transparentinstances = visibleinstances.filter(x -> x.gameObject.currentOpacity != 1 && x.gameObject.currentOpacity != 0); // Filter out all zero opacity things too minfo.transparencymeshbatch.begin(transparentinstances.length); for (instance in transparentinstances) { // Non opaque shit - var dtsShader = minfo.transparencymeshbatch.material.mainPass.getShader(DtsTexture); + var dtsShader = minfo.dtsShader; if (dtsShader != null) { dtsShader.currentOpacity = instance.gameObject.currentOpacity; } - minfo.transparencymeshbatch.material.blendMode = Alpha; + // minfo.transparencymeshbatch.material.blendMode = Alpha; // minfo.transparencymeshbatch.material.color.a = instance.gameObject.currentOpacity; // minfo.transparencymeshbatch.material.mainPass.setPassName(minfo.mesh.material.mainPass.name); // minfo.transparencymeshbatch.shadersChanged = true; - minfo.transparencymeshbatch.material.mainPass.enableLights = minfo.mesh.material.mainPass.enableLights; + // minfo.transparencymeshbatch.material.mainPass.enableLights = minfo.mesh.material.mainPass.enableLights; // minfo.transparencymeshbatch.material.mainPass.depthWrite = false; // if (dtsShader != null) { // dtsShader.currentOpacity = instance.gameObject.currentOpacity; @@ -131,7 +224,7 @@ class InstanceManager { var objs = getAllChildren(object); var minfos = objects[objectMap.get(object.identifier)]; // objects.get(object.identifier); for (i in 0...objs.length) { - minfos[i].instances.push(new MeshInstance(objs[i], object)); + minfos.batches[i].instances.push(new MeshInstance(objs[i], object)); } } else { // First time appending the thing so bruh @@ -139,68 +232,117 @@ class InstanceManager { var objs = getAllChildren(object); var minfos = []; for (obj in objs) { - var isMesh = obj is Mesh; + var isMesh = obj is MultiMaterial; var minfo:MeshBatchInfo = new MeshBatchInfo(); minfo.instances = [new MeshInstance(obj, object)]; - minfo.meshbatch = isMesh ? new MeshBatch(cast(cast(obj, Mesh).primitive), cast(cast(obj, Mesh)).material.clone(), scene) : null; + minfo.meshbatch = isMesh ? new MeshBatch(cast(cast(obj, MultiMaterial).primitive), null, scene) : null; minfo.mesh = isMesh ? cast obj : null; + minfo.baseBounds = isMesh ? @:privateAccess cast(minfo.meshbatch.primitive, Instanced).baseBounds : null; if (isMesh) { - var mat = cast(obj, Mesh).material; - var dtsshader = mat.mainPass.getShader(DtsTexture); - if (dtsshader != null) { - minfo.meshbatch.material.mainPass.removeShader(minfo.meshbatch.material.textureShader); - minfo.meshbatch.material.mainPass.addShader(dtsshader); - minfo.meshbatch.material.mainPass.culling = mat.mainPass.culling; - minfo.meshbatch.material.mainPass.depthWrite = mat.mainPass.depthWrite; - } - var phongshader = mat.mainPass.getShader(PhongMaterial); - if (phongshader != null) { - minfo.meshbatch.material.mainPass.removeShader(minfo.meshbatch.material.textureShader); - minfo.meshbatch.material.mainPass.addShader(phongshader); - // minfo.meshbatch.material.mainPass.culling = mat.mainPass.culling; - } - var noiseshder = mat.mainPass.getShader(NoiseTileMaterial); - if (noiseshder != null) { - minfo.meshbatch.material.mainPass.removeShader(minfo.meshbatch.material.textureShader); - minfo.meshbatch.material.mainPass.addShader(noiseshder); - // minfo.meshbatch.material.mainPass.culling = mat.mainPass.culling; - } - var nmapshdr = mat.mainPass.getShader(NormalMaterial); - if (nmapshdr != null) { - minfo.meshbatch.material.mainPass.removeShader(minfo.meshbatch.material.textureShader); - minfo.meshbatch.material.mainPass.addShader(nmapshdr); - // minfo.meshbatch.material.mainPass.culling = mat.mainPass.culling; - } - var cubemapshdr = mat.mainPass.getShader(EnvMap); - if (cubemapshdr != null) { - minfo.meshbatch.material.mainPass.addShader(cubemapshdr); - } - minfo.transparencymeshbatch = new MeshBatch(cast(cast(obj, Mesh).primitive), cast(cast(obj, Mesh)).material.clone(), scene); - minfo.transparencymeshbatch.material.mainPass.removeShader(minfo.meshbatch.material.textureShader); - minfo.transparencymeshbatch.material.mainPass.addShader(dtsshader); - // minfo.transparencymeshbatch.material.mainPass.culling = mat.mainPass.culling; + minfo.transparencymeshbatch = new MeshBatch(cast(cast(obj, MultiMaterial).primitive), null, scene); + minfo.transparencymeshbatch.materials = []; + minfo.meshbatch.materials = []; + for (mat in cast(obj, MultiMaterial).materials) { + var matclone:Material = cast mat.clone(); + var dtsshader = mat.mainPass.getShader(DtsTexture); + if (dtsshader != null) { + matclone.mainPass.removeShader(matclone.textureShader); + matclone.mainPass.addShader(dtsshader); + matclone.mainPass.culling = mat.mainPass.culling; + matclone.mainPass.depthWrite = mat.mainPass.depthWrite; + matclone.mainPass.blendSrc = mat.mainPass.blendSrc; + matclone.mainPass.blendDst = mat.mainPass.blendDst; + matclone.mainPass.blendOp = mat.mainPass.blendOp; + matclone.mainPass.blendAlphaSrc = mat.mainPass.blendAlphaSrc; + matclone.mainPass.blendAlphaDst = mat.mainPass.blendAlphaDst; + matclone.mainPass.blendAlphaOp = mat.mainPass.blendAlphaOp; + minfo.dtsShader = dtsshader; + } + var phongshader = mat.mainPass.getShader(PhongMaterial); + if (phongshader != null) { + matclone.mainPass.removeShader(matclone.textureShader); + matclone.mainPass.addShader(phongshader); + // minfo.meshbatch.material.mainPass.culling = mat.mainPass.culling; + } + var noiseshder = mat.mainPass.getShader(NoiseTileMaterial); + if (noiseshder != null) { + matclone.mainPass.removeShader(matclone.textureShader); + matclone.mainPass.addShader(noiseshder); + // minfo.meshbatch.material.mainPass.culling = mat.mainPass.culling; + } + var nmapshdr = mat.mainPass.getShader(NormalMaterial); + if (nmapshdr != null) { + matclone.mainPass.removeShader(matclone.textureShader); + matclone.mainPass.addShader(nmapshdr); + // minfo.meshbatch.material.mainPass.culling = mat.mainPass.culling; + } + var pqshdr = mat.mainPass.getShader(PQMaterial); + if (pqshdr != null) { + matclone.mainPass.removeShader(matclone.textureShader); + matclone.mainPass.addShader(pqshdr); + // minfo.meshbatch.material.mainPass.culling = mat.mainPass.culling; + } - // minfo.meshbatch.material.mainPass.removeShader(minfo.meshbatch.material.mainPass.getShader(PropsValues)); - // minfo.transparencymeshbatch.material.mainPass.removeShader(minfo.transparencymeshbatch.material.mainPass.getShader(PropsValues)); + var cubemapshdr = mat.mainPass.getShader(EnvMap); + if (cubemapshdr != null) { + matclone.mainPass.addShader(cubemapshdr); + } + matclone.mainPass.enableLights = mat.mainPass.enableLights; + matclone.mainPass.setPassName(mat.mainPass.name); - // var pbrshader = mat.mainPass.getShader(PropsValues); - // if (pbrshader != null) { - // minfo.meshbatch.material.mainPass.addShader(pbrshader); - // minfo.transparencymeshbatch.material.mainPass.addShader(pbrshader); - // } + for (p in matclone.getPasses()) + @:privateAccess p.batchMode = true; + minfo.meshbatch.materials.push(matclone); + + var matclonetransp:Material = cast mat.clone(); + + matclonetransp.mainPass.removeShader(minfo.meshbatch.material.textureShader); + matclonetransp.mainPass.addShader(dtsshader); + + matclonetransp.blendMode = Alpha; + + matclonetransp.mainPass.culling = mat.mainPass.culling; + matclonetransp.mainPass.depthWrite = mat.mainPass.depthWrite; + if (mat.blendMode == Alpha) { + matclonetransp.mainPass.blendSrc = mat.mainPass.blendSrc; + matclonetransp.mainPass.blendDst = mat.mainPass.blendDst; + matclonetransp.mainPass.blendOp = mat.mainPass.blendOp; + matclonetransp.mainPass.blendAlphaSrc = mat.mainPass.blendAlphaSrc; + matclonetransp.mainPass.blendAlphaDst = mat.mainPass.blendAlphaDst; + matclonetransp.mainPass.blendAlphaOp = mat.mainPass.blendAlphaOp; + matclonetransp.mainPass.enableLights = mat.mainPass.enableLights; + matclonetransp.receiveShadows = mat.receiveShadows; + } + + matclonetransp.mainPass.enableLights = mat.mainPass.enableLights; + + for (p in matclonetransp.getPasses()) + @:privateAccess p.batchMode = true; + minfo.transparencymeshbatch.materials.push(matclonetransp); + // minfo.transparencymeshbatch.material.mainPass.culling = mat.mainPass.culling; + + // minfo.meshbatch.material.mainPass.removeShader(minfo.meshbatch.material.mainPass.getShader(PropsValues)); + // minfo.transparencymeshbatch.material.mainPass.removeShader(minfo.transparencymeshbatch.material.mainPass.getShader(PropsValues)); + + // var pbrshader = mat.mainPass.getShader(PropsValues); + // if (pbrshader != null) { + // minfo.meshbatch.material.mainPass.addShader(pbrshader); + // minfo.transparencymeshbatch.material.mainPass.addShader(pbrshader); + // } + } } minfos.push(minfo); } var curidx = objects.length; - objects.push(minfos); + objects.push({batches: minfos}); objectMap.set(object.identifier, curidx); } } public function getObjectBounds(object:GameObject) { if (isInstanced(object)) { - var minfos = objects[objectMap.get(object.identifier)]; + var minfos = objects[objectMap.get(object.identifier)].batches; var invmat = minfos[0].instances[0].gameObject.getInvPos(); var b = minfos[0].instances[0].gameObject.getBounds().clone(); b.transform(invmat); diff --git a/src/InteriorObject.hx b/src/InteriorObject.hx index 33934b64..583db233 100644 --- a/src/InteriorObject.hx +++ b/src/InteriorObject.hx @@ -1,5 +1,6 @@ package src; +import collision.CollisionWorld; import src.MarbleWorld; import src.DifBuilder; import h3d.Matrix; @@ -13,6 +14,7 @@ class InteriorObject extends GameObject { public var interiorFile:String; public var useInstancing = true; public var level:MarbleWorld; + public var collisionWorld:CollisionWorld; public function new() { super(); @@ -27,6 +29,9 @@ class InteriorObject extends GameObject { this.useInstancing = false; } + if (this.level != null) + this.collisionWorld = this.level.collisionWorld; + DifBuilder.loadDif(this.interiorFile, cast this, onFinish); } diff --git a/src/Main.hx b/src/Main.hx index f627f2bf..32af4b6f 100644 --- a/src/Main.hx +++ b/src/Main.hx @@ -1,5 +1,6 @@ package; +import gui.VersionGui; import src.Debug; import src.Marbleland; import src.Console; @@ -22,6 +23,8 @@ import h3d.Vector; import src.ProfilerUI; import src.Gamepad; import src.Http; +import datachannel.RTC; +import src.Renderer; class Main extends hxd.App { var marbleGame:MarbleGame; @@ -35,6 +38,11 @@ class Main extends hxd.App { override function init() { super.init(); + s3d.renderer = new Renderer(); + #if debug + s3d.checkPasses = false; + #end + #if (hl && !android) hl.UI.closeConsole(); #end @@ -85,6 +93,7 @@ class Main extends hxd.App { #end try { + RTC.init(); Http.init(); haxe.MainLoop.add(() -> Http.loop()); Settings.init(); @@ -95,6 +104,7 @@ class Main extends hxd.App { Marbleland.init(); marbleGame = new MarbleGame(s2d, s3d); MarbleGame.canvas.setContent(new MainMenuGui()); + VersionGui.checkVersion(); new ProfilerUI(s2d); @@ -139,6 +149,7 @@ class Main extends hxd.App { // marbleGame.update(1 / 60); // timeAccumulator -= 1 / 60; // } + RTC.processEvents(); marbleGame.update(dt); // } catch (e) { // Console.error(e.message); diff --git a/src/Marble.hx b/src/Marble.hx index f2410ffd..0d526699 100644 --- a/src/Marble.hx +++ b/src/Marble.hx @@ -1,5 +1,16 @@ package src; +import triggers.Trigger; +import net.Net; +import gui.MarbleSelectGui; +import net.NetPacket.MarbleNetFlags; +import net.BitStream.OutputBitStream; +import net.ClientConnection; +import net.ClientConnection.GameConnection; +import net.NetPacket.MarbleUpdatePacket; +import net.MoveManager; +import net.MoveManager.NetMove; +import collision.CollisionPool; import collision.CollisionHull; import dif.Plane; import shaders.marble.ClassicGlass; @@ -25,7 +36,6 @@ import src.Settings; import h3d.scene.Mesh; import h3d.col.Bounds; import collision.CollisionEntity; -import shapes.StartPad; import src.TimeState; import src.ParticleSystem.ParticleEmitter; import src.ParticleSystem.ParticleData; @@ -63,14 +73,8 @@ import src.ResourceLoaderWorker; import src.InteriorObject; import src.Console; import src.Gamepad; - -class Move { - public var d:Vector; - public var jump:Bool; - public var powerup:Bool; - - public function new() {} -} +import net.Move; +import src.ProfilerUI; enum Mode { Start; @@ -174,6 +178,25 @@ final blastMaxParticleOptions:ParticleEmitterOptions = { } } +@:publicFields +@:structInit +class MarbleTestMoveFoundContact { + var v:Array; + var n:Vector; +} + +@:publicFields +@:structInit +class MarbleTestMoveResult { + var position:Vector; + var t:Float; + var found:Bool; + var foundContacts:Array; + var lastContactPos:Null; + var lastContactNormal:Null; + var foundMarbles:Array; +} + class Marble extends GameObject { public var camera:CameraController; public var cameraObject:Object; @@ -185,9 +208,13 @@ class Marble extends GameObject { public var omega:Vector; public var level:MarbleWorld; + public var collisionWorld:CollisionWorld; public var _radius = 0.2; + var _dtsRadius = 0.2; + var marbleDts:DtsObject; + var _prevRadius:Float; var _maxRollVelocity:Float = 15; @@ -206,6 +233,8 @@ class Marble extends GameObject { var minVelocityBounceSoft = 2.5; var minVelocityBounceHard = 12.0; var bounceMinGain = 0.2; + var blastShockwaveStrength = 5.0; + var blastRechargeShockwaveStrength = 10.0; public var _bounceRestitution = 0.5; @@ -219,6 +248,15 @@ class Marble extends GameObject { public var _mass:Float = 1; + var physicsAccumulator:Float = 0; + var oldPos:Vector; + var newPos:Vector; + var prevRot:Quat; + var posStore:Vector; + var lastRenderPos:Vector; + var netSmoothOffset:Vector; + var netCorrected:Bool; + public var contacts:Array = []; public var bestContact:CollisionInfo; public var contactEntities:Array = []; @@ -227,15 +265,33 @@ class Marble extends GameObject { var appliedImpulses:Array<{impulse:Vector, contactImpulse:Bool}> = []; public var heldPowerup:PowerUp; + public var lastContactPosition:Vector; public var lastContactNormal:Vector; + public var currentUp = new Vector(0, 0, 1); + + public var outOfBounds:Bool = false; + public var outOfBoundsTime:TimeState; + public var oobSchedule:Float; var forcefield:DtsObject; var helicopter:DtsObject; + var megaHelicopter:DtsObject; var superBounceEnableTime:Float = -1e8; var shockAbsorberEnableTime:Float = -1e8; var helicopterEnableTime:Float = -1e8; var megaMarbleEnableTime:Float = -1e8; + public var helicopterUseTick:Int = 0; + public var megaMarbleUseTick:Int = 0; + public var shockAbsorberUseTick:Int = 0; + public var superBounceUseTick:Int = 0; + + public var blastAmount:Float = 0; + public var blastTicks:Int = 0; + public var blastUseTick:Int = 0; // blast is 12 ticks long + + var blastPerc:Float = 0.0; + var teleportEnableTime:Null = null; var teleportDisableTime:Null = null; var bounceEmitDelay:Float = 0; @@ -257,8 +313,6 @@ class Marble extends GameObject { public var mode:Mode = Play; - public var startPad:StartPad; - public var prevPos:Vector; var cloak:Bool = false; @@ -268,12 +322,29 @@ class Marble extends GameObject { public var cubemapRenderer:CubemapRenderer; + var shadowVolume:h3d.scene.Mesh; + + var connection:GameConnection; + var moveMotionDir:Vector; + var lastMove:Move; + var isNetUpdate:Bool = false; + var netFlags:Int = 0; + var serverTicks:Int; + var recvServerTick:Int; + var serverUsePowerup:Bool; + var lastRespawnTick:Int = -100000; + var trapdoorContacts:Map = []; + + var shapeImmunity:Array = []; + var shapeOrTriggerInside:Array = []; + public function new() { super(); this.velocity = new Vector(); this.omega = new Vector(); this.camera = new CameraController(cast this); + this.isCollideable = true; this.bounceEmitterData = new ParticleData(); this.bounceEmitterData.identifier = "MarbleBounceParticle"; @@ -308,15 +379,36 @@ class Marble extends GameObject { this.helicopterSound.pause = true; } - public function init(level:MarbleWorld, onFinish:Void->Void) { + public function init(level:MarbleWorld, connection:GameConnection, onFinish:Void->Void) { this.level = level; + if (this.level != null) + this.collisionWorld = this.level.collisionWorld; + + this.connection = connection; var isUltra = level.mission.game.toLowerCase() == "ultra"; + this.posStore = new Vector(); + this.lastRenderPos = new Vector(); + this.netSmoothOffset = new Vector(); + this.netCorrected = false; + this.currentUp = new Vector(0, 0, 1); + var marbleDts = new DtsObject(); - Console.log("Marble: " + Settings.optionsSettings.marbleModel + " (" + Settings.optionsSettings.marbleSkin + ")"); - marbleDts.dtsPath = Settings.optionsSettings.marbleModel; - marbleDts.matNameOverride.set("base.marble", Settings.optionsSettings.marbleSkin + ".marble"); + var marbleShader = ""; + if (connection == null) { + Console.log("Marble: " + Settings.optionsSettings.marbleModel + " (" + Settings.optionsSettings.marbleSkin + ")"); + marbleDts.dtsPath = Settings.optionsSettings.marbleModel; + marbleDts.matNameOverride.set("base.marble", Settings.optionsSettings.marbleSkin + ".marble"); + marbleShader = Settings.optionsSettings.marbleShader; + } else { + var marbleData = MarbleSelectGui.marbleData[connection.getMarbleCatId()][connection.getMarbleId()]; // FIXME category support + Console.log("Marble: " + marbleData.dts + " (" + marbleData.skin + ")"); + marbleDts.dtsPath = marbleData.dts; + marbleDts.matNameOverride.set("base.marble", marbleData.skin + ".marble"); + marbleShader = marbleData.shader; + } + marbleDts.identifier = "Marble"; marbleDts.identifier = "Marble"; marbleDts.showSequences = false; marbleDts.useInstancing = false; @@ -328,12 +420,9 @@ class Marble extends GameObject { // mat.mainPass.culling = None; if (Settings.optionsSettings.reflectiveMarble) { - this.cubemapRenderer = new CubemapRenderer(level.scene, level.sky); + this.cubemapRenderer = new CubemapRenderer(level.scene, level.sky, !this.controllable && level != null); - if (Settings.optionsSettings.marbleShader == null - || Settings.optionsSettings.marbleShader == "Default" - || Settings.optionsSettings.marbleShader == "" - || !isUltra) { // Use this shit everywhere except ultra + if (marbleShader == null || marbleShader == "Default" || marbleShader == "" || !isUltra) { // Use this shit everywhere except ultra mat.mainPass.addShader(new MarbleReflection(this.cubemapRenderer.cubemap)); } else { // Generate tangents for next shaders, only for Ultra @@ -347,26 +436,26 @@ class Marble extends GameObject { mat.mainPass.removeShader(mat.textureShader); - if (Settings.optionsSettings.marbleShader == "ClassicGlassPureSphere") { + if (marbleShader == "ClassicGlassPureSphere") { var marbleNormal = ResourceLoader.getTexture("data/shapes/balls/pack1/marble01.normal.png").resource; var classicGlassShader = new ClassicGlassPureSphere(mat.texture, marbleNormal, this.cubemapRenderer.cubemap, 12, new Vector(0.6, 0.6, 0.6, 0.6), this.level.ambient, this.level.dirLight, this.level.dirLightDir, 1); mat.mainPass.addShader(classicGlassShader); } - if (Settings.optionsSettings.marbleShader == "ClassicMarb2") { + if (marbleShader == "ClassicMarb2") { var classicMarb2 = new ClassicMarb2(mat.texture, this.cubemapRenderer.cubemap, 12, new Vector(0.6, 0.6, 0.6, 0.6), this.level.ambient, this.level.dirLight, this.level.dirLightDir, 1); mat.mainPass.addShader(classicMarb2); } - if (Settings.optionsSettings.marbleShader == "ClassicMarb3") { + if (marbleShader == "ClassicMarb3") { var classicMarb3 = new ClassicMarb3(mat.texture, this.cubemapRenderer.cubemap, 12, new Vector(0.6, 0.6, 0.6, 0.6), this.level.ambient, this.level.dirLight, this.level.dirLightDir, 1); mat.mainPass.addShader(classicMarb3); } - if (Settings.optionsSettings.marbleShader == "ClassicMetal") { + if (marbleShader == "ClassicMetal") { var marbleNormal = ResourceLoader.getTexture("data/shapes/balls/pack1/marble18.normal.png").resource; marbleNormal.wrap = Repeat; var classicMetalShader = new ClassicMetal(mat.texture, marbleNormal, this.cubemapRenderer.cubemap, 12, new Vector(0.6, 0.6, 0.6, 0.6), @@ -374,7 +463,7 @@ class Marble extends GameObject { mat.mainPass.addShader(classicMetalShader); } - if (Settings.optionsSettings.marbleShader == "ClassicMarbGlass20") { + if (marbleShader == "ClassicMarbGlass20") { var marbleNormal = ResourceLoader.getTexture("data/shapes/balls/pack1/marble20.normal.png").resource; marbleNormal.wrap = Repeat; var classicGlassShader = new ClassicGlass(mat.texture, marbleNormal, this.cubemapRenderer.cubemap, 12, new Vector(0.6, 0.6, 0.6, 0.6), @@ -382,7 +471,7 @@ class Marble extends GameObject { mat.mainPass.addShader(classicGlassShader); } - if (Settings.optionsSettings.marbleShader == "ClassicMarbGlass18") { + if (marbleShader == "ClassicMarbGlass18") { var marbleNormal = ResourceLoader.getTexture("data/shapes/balls/pack1/marble18.normal.png").resource; marbleNormal.wrap = Repeat; var classicGlassShader = new ClassicGlass(mat.texture, marbleNormal, this.cubemapRenderer.cubemap, 12, new Vector(0.6, 0.6, 0.6, 0.6), @@ -398,20 +487,29 @@ class Marble extends GameObject { mat.receiveShadows = false; } } + + mat.mainPass.setPassName("marble"); } // Calculate radius according to marble model (egh) var b = marbleDts.getBounds(); var avgRadius = (b.xSize + b.ySize + b.zSize) / 6; + _dtsRadius = avgRadius; if (isUltra) { this._radius = 0.3; marbleDts.scale(0.3 / avgRadius); } else this._radius = avgRadius; + if (Net.isMP) { + this._radius = 0.2; // For the sake of physics + marbleDts.scale(0.2 / avgRadius); + } + this.marbleDts = marbleDts; + this._prevRadius = this._radius; - if (isUltra) { + if (isUltra || level.isMultiplayer) { this.rollMegaSound = AudioManager.playSound(ResourceLoader.getResource("data/sound/mega_roll.wav", ResourceLoader.getAudio, this.soundResources), this.getAbsPos().getPosition(), true); this.rollMegaSound.volume = 0; @@ -423,6 +521,10 @@ class Marble extends GameObject { this.addChild(marbleDts); + buildShadowVolume(); + if (level != null) + level.scene.addChild(this.shadowVolume); + // var geom = Sphere.defaultUnitSphere(); // geom.addUVs(); // var marbleTexture = ResourceLoader.getFileEntry("data/shapes/balls/base.marble.png").toTexture(); @@ -463,14 +565,106 @@ class Marble extends GameObject { this.helicopter.y = 1e8; this.helicopter.z = 1e8; + this.megaHelicopter = new DtsObject(); + this.megaHelicopter.dtsPath = "data/shapes/items/megahelicopter.dts"; + this.megaHelicopter.useInstancing = false; + this.megaHelicopter.identifier = "MegaHelicopter"; + this.megaHelicopter.showSequences = true; + this.megaHelicopter.isBoundingBoxCollideable = false; + // this.addChild(this.helicopter); + this.megaHelicopter.x = 1e8; + this.megaHelicopter.y = 1e8; + this.megaHelicopter.z = 1e8; + var worker = new ResourceLoaderWorker(onFinish); worker.addTask(fwd -> level.addDtsObject(this.forcefield, fwd)); worker.addTask(fwd -> level.addDtsObject(this.helicopter, fwd)); + worker.addTask(fwd -> level.addDtsObject(this.megaHelicopter, fwd)); worker.run(); } + function buildShadowVolume() { + var idx = new hxd.IndexBuffer(); + // slanted part of cone + var circleVerts = 32; + for (i in 1...circleVerts) { + idx.push(0); + idx.push(i + 1); + idx.push(i); + } + // connect to start + idx.push(0); + idx.push(1); + idx.push(circleVerts); + + // base of cone + for (i in 1...circleVerts - 1) { + idx.push(1); + idx.push(i + 1); + idx.push(i + 2); + } + var pts = []; + pts.push(new h3d.col.Point(0, 0, -40.0)); + + for (i in 0...circleVerts) { + var x = i / (circleVerts - 1) * (2 * Math.PI); + pts.push(new h3d.col.Point(Math.cos(x) * 0.2, -Math.sin(x) * 0.2, 0.0)); + } + var shadowPoly = new h3d.prim.Polygon(pts, idx); + shadowPoly.addUVs(); + shadowPoly.addNormals(); + shadowVolume = new h3d.scene.Mesh(shadowPoly, h3d.mat.Material.create()); + shadowVolume.material.castShadows = false; + shadowVolume.material.receiveShadows = false; + shadowVolume.material.shadows = false; + + var colShader = new h3d.shader.FixedColor(0x000026, 0.35); + + var shadowPass1 = shadowVolume.material.mainPass.clone(); + shadowPass1.setPassName("shadowPass1"); + shadowPass1.stencil = new h3d.mat.Stencil(); + shadowPass1.stencil.setFunc(Always, 1, 0xFF, 0xFF); + shadowPass1.depth(false, Less); + shadowPass1.setColorMask(false, false, false, false); + shadowPass1.culling = Back; + shadowPass1.stencil.setOp(Keep, Increment, Keep); + shadowPass1.addShader(colShader); + + var shadowPass2 = shadowVolume.material.mainPass.clone(); + shadowPass2.setPassName("shadowPass2"); + shadowPass2.stencil = new h3d.mat.Stencil(); + shadowPass2.stencil.setFunc(Always, 1, 0xFF, 0xFF); + shadowPass2.depth(false, Less); + shadowPass2.setColorMask(false, false, false, false); + shadowPass2.culling = Front; + shadowPass2.stencil.setOp(Keep, Decrement, Keep); + shadowPass2.addShader(colShader); + + var shadowPass3 = shadowVolume.material.mainPass.clone(); + shadowPass3.setPassName("shadowPass3"); + shadowPass3.stencil = new h3d.mat.Stencil(); + shadowPass3.stencil.setFunc(LessEqual, 1, 0xFF, 0xFF); + shadowPass3.depth(false, Less); + shadowPass3.culling = Front; + shadowPass3.stencil.setOp(Keep, Keep, Keep); + shadowPass3.blend(SrcAlpha, OneMinusSrcAlpha); + shadowPass3.addShader(colShader); + + shadowVolume.material.addPass(shadowPass1); + shadowVolume.material.addPass(shadowPass2); + shadowVolume.material.addPass(shadowPass3); + + shadowVolume.material.removePass(shadowVolume.material.mainPass); + + var q = new Quat(); + q.initNormal(@:privateAccess this.level.dirLightDir.toPoint()); + + shadowVolume.setRotationQuat(q); + } + function findContacts(collisiomWorld:CollisionWorld, timeState:TimeState) { this.contacts = queuedContacts; + CollisionPool.clear(); var c = collisiomWorld.sphereIntersection(this.collider, timeState); this.contactEntities = c.foundEntities; contacts = contacts.concat(c.contacts); @@ -482,29 +676,46 @@ class Marble extends GameObject { public function getMarbleAxis() { var motiondir = new Vector(0, -1, 0); - motiondir.transform(Matrix.R(0, 0, camera.CameraYaw)); - motiondir.transform(level.newOrientationQuat.toMatrix()); - var updir = this.level.currentUp; - var sidedir = motiondir.cross(updir); + if (level.isReplayingMovement) + return level.currentInputMoves[1].marbleAxes; + if (this.controllable && !this.isNetUpdate) { + motiondir.transform(Matrix.R(0, 0, camera.CameraYaw)); + motiondir.transform(level.newOrientationQuat.toMatrix()); + var updir = this.currentUp; + var sidedir = motiondir.cross(updir); - sidedir.normalize(); - motiondir = updir.cross(sidedir); - return [sidedir, motiondir, updir]; + sidedir.normalize(); + motiondir = updir.cross(sidedir); + return [sidedir, motiondir, updir]; + } else { + if (moveMotionDir != null) + motiondir = moveMotionDir; + var updir = this.currentUp; + var sidedir = motiondir.cross(updir); + return [sidedir, motiondir, updir]; + } } - function getExternalForces(currentTime:Float, m:Move, dt:Float) { + function getExternalForces(timeState:TimeState, m:Move) { if (this.mode == Finish) return this.velocity.multiply(-16); - var gWorkGravityDir = this.level.currentUp.multiply(-1); + var gWorkGravityDir = this.currentUp.multiply(-1); var A = new Vector(); A = gWorkGravityDir.multiply(this._gravity); - if (currentTime - this.helicopterEnableTime < 5) { - A = A.multiply(0.25); + var helicopter = isHelicopterEnabled(timeState); + if (helicopter) { + A.load(A.multiply(0.25)); } - for (obj in level.forceObjects) { - var force = cast(obj, ForceObject).getForce(this.getAbsPos().getPosition()); - A = A.add(force.multiply(1 / _mass)); + if (this.level != null && level.forceObjects.length > 0) { + var mass = this.getMass(); + var externalForce = new Vector(); + var pos = this.collider.transform.getPosition(); + for (obj in level.forceObjects) { + cast(obj, ForceObject).getForce(pos, externalForce); + } + A.load(A.add(externalForce.multiply(1 / mass))); } + if (contacts.length != 0 && this.mode != Start) { var contactForce = 0.0; var contactNormal = new Vector(); @@ -515,14 +726,22 @@ class Marble extends GameObject { for (contact in contacts) { if (contact.force != 0 && !forceObjects.contains(contact.otherObject)) { if (contact.otherObject is RoundBumper) { - if (!playedSounds.contains("data/sound/bumperding1.wav")) { - AudioManager.playSound(ResourceLoader.getResource("data/sound/bumperding1.wav", ResourceLoader.getAudio, this.soundResources)); + if (!playedSounds.contains("data/sound/bumperding1.wav") && !this.isNetUpdate) { + if (level.marble == cast this) + AudioManager.playSound(ResourceLoader.getResource("data/sound/bumperding1.wav", ResourceLoader.getAudio, this.soundResources)); + else + AudioManager.playSound(ResourceLoader.getResource("data/sound/bumperding1.wav", ResourceLoader.getAudio, this.soundResources), + this.getAbsPos().getPosition()); playedSounds.push("data/sound/bumperding1.wav"); } } if (contact.otherObject is TriangleBumper) { - if (!playedSounds.contains("data/sound/bumper1.wav")) { - AudioManager.playSound(ResourceLoader.getResource("data/sound/bumper1.wav", ResourceLoader.getAudio, this.soundResources)); + if (!playedSounds.contains("data/sound/bumper1.wav") && !this.isNetUpdate) { + if (level.marble == cast this) + AudioManager.playSound(ResourceLoader.getResource("data/sound/bumper1.wav", ResourceLoader.getAudio, this.soundResources)); + else + AudioManager.playSound(ResourceLoader.getResource("data/sound/bumper1.wav", ResourceLoader.getAudio, this.soundResources), + this.getAbsPos().getPosition()); playedSounds.push("data/sound/bumper1.wav"); } } @@ -536,13 +755,14 @@ class Marble extends GameObject { if (forceObjectCount != 0) { contactNormal.normalize(); - var a = contactForce / this._mass; + var a = contactForce / this.getMass(); + var dot = this.velocity.dot(contactNormal); if (a > dot) { if (dot > 0) a -= dot; - A = A.add(contactNormal.multiply(a / dt)); + A.load(A.add(contactNormal.multiply(a / timeState.dt))); } } } @@ -552,19 +772,21 @@ class Marble extends GameObject { var motionDir = axes[1]; var upDir = axes[2]; var airAccel = this._airAccel; - if (currentTime - this.helicopterEnableTime < 5) { + if (helicopter) { airAccel *= 2; } - A = A.add(sideDir.multiply(m.d.x).add(motionDir.multiply(m.d.y)).multiply(airAccel)); + A.load(A.add(sideDir.multiply(m.d.x).add(motionDir.multiply(m.d.y)).multiply(airAccel))); } return A; } function computeMoveForces(m:Move, aControl:Vector, desiredOmega:Vector) { - var currentGravityDir = this.level.currentUp.multiply(-1); + var currentGravityDir = this.currentUp.multiply(-1); var R = currentGravityDir.multiply(-this._radius); var rollVelocity = this.omega.cross(R); var axes = this.getMarbleAxis(); + // if (!level.isReplayingMovement) + // level.inputRecorder.recordAxis(axes); var sideDir = axes[0]; var motionDir = axes[1]; var upDir = axes[2]; @@ -604,7 +826,7 @@ class Marble extends GameObject { return return true; } - function velocityCancel(currentTime:Float, dt:Float, surfaceSlide:Bool, noBounce:Bool, stoppedPaths:Bool, pi:Array) { + function velocityCancel(timeState:TimeState, surfaceSlide:Bool, noBounce:Bool, stoppedPaths:Bool, pi:Array) { var SurfaceDotThreshold = 0.0001; var looped = false; var itersIn = 0; @@ -622,40 +844,48 @@ class Marble extends GameObject { if (!_bounceYet) { _bounceYet = true; - playBoundSound(currentTime, -surfaceDot); + playBoundSound(timeState.currentAttemptTime, -surfaceDot); } if (noBounce) { - this.velocity = this.velocity.sub(surfaceVel); + this.velocity.load(this.velocity.sub(surfaceVel)); } else if (contacts[i].collider != null) { var otherMarble:Marble = cast contacts[i].collider.go; - var ourMass = this._mass; - var theirMass = otherMarble._mass; + var ourMass = this.getMass(); + var theirMass = otherMarble.getMass(); var bounce = Math.max(this._bounceRestitution, otherMarble._bounceRestitution); var dp = this.velocity.multiply(ourMass).sub(otherMarble.velocity.multiply(theirMass)); var normP = contacts[i].normal.multiply(dp.dot(contacts[i].normal)); - normP = normP.multiply(1 + bounce); + normP.scale(1 + bounce); - otherMarble.velocity = otherMarble.velocity.add(normP.multiply(1 / theirMass)); - contacts[i].velocity = otherMarble.velocity; + velocity.load(velocity.sub(normP.multiply(1 / ourMass))); + if (Math.isNaN(velocity.lengthSq())) { + velocity.set(0, 0, 0); + } + + otherMarble.velocity.load(otherMarble.velocity.add(normP.multiply(1 / theirMass))); + if (Math.isNaN(otherMarble.velocity.lengthSq())) { + otherMarble.velocity.set(0, 0, 0); + } + contacts[i].velocity.load(otherMarble.velocity); } else { if (contacts[i].velocity.length() == 0 && !surfaceSlide && surfaceDot > -this._maxDotSlide * velLen) { - this.velocity = this.velocity.sub(surfaceVel); + this.velocity.load(this.velocity.sub(surfaceVel)); this.velocity.normalize(); - this.velocity = this.velocity.multiply(velLen); + this.velocity.load(this.velocity.multiply(velLen)); surfaceSlide = true; } else if (surfaceDot >= -this._minBounceVel) { - this.velocity = this.velocity.sub(surfaceVel); + this.velocity.load(this.velocity.sub(surfaceVel)); } else { var restitution = this._bounceRestitution; - if (currentTime - this.superBounceEnableTime < 5) { + if (isSuperBounceEnabled(timeState)) { restitution = 0.9; } - if (currentTime - this.shockAbsorberEnableTime < 5) { + if (isShockAbsorberEnabled(timeState)) { restitution = 0.01; } restitution *= contacts[i].restitution; @@ -666,7 +896,7 @@ class Marble extends GameObject { bounceEmitter(sVel.length() * restitution, contacts[i].normal); - vAtC = vAtC.sub(contacts[i].normal.multiply(contacts[i].normal.dot(sVel))); + vAtC.load(vAtC.sub(contacts[i].normal.multiply(contacts[i].normal.dot(sVel)))); var vAtCMag = vAtC.length(); if (vAtCMag != 0) { @@ -679,11 +909,11 @@ class Marble extends GameObject { var vAtCDir = vAtC.multiply(1 / vAtCMag); var deltaOmega = contacts[i].normal.cross(vAtCDir).multiply(angVMagnitude); - this.omega = this.omega.add(deltaOmega); + this.omega.load(this.omega.add(deltaOmega)); - this.velocity = this.velocity.sub(deltaOmega.cross(contacts[i].normal.multiply(_radius))); + this.velocity.load(this.velocity.sub(deltaOmega.cross(contacts[i].normal.multiply(_radius)))); } - this.velocity = this.velocity.add(velocityAdd); + this.velocity.load(this.velocity.add(velocityAdd)); } } @@ -705,37 +935,37 @@ class Marble extends GameObject { } } } while (!done && itersIn < 1e4); // Maximum limit pls - // if (this.velocity.lengthSq() < 625) { - var gotOne = false; - var dir = new Vector(0, 0, 0); - for (j in 0...contacts.length) { - var dir2 = dir.add(contacts[j].normal); - if (dir2.lengthSq() < 0.01) { - dir2 = dir2.add(contacts[j].normal); - } - dir = dir2; - dir.normalize(); - gotOne = true; - } - if (gotOne) { - dir.normalize(); - var soFar = 0.0; - for (k in 0...contacts.length) { - var dist = this._radius - contacts[k].contactDistance; - var timeToSeparate = 0.1; - var vel = this.velocity.sub(contacts[k].velocity); - var outVel = vel.add(dir.multiply(soFar)).dot(contacts[k].normal); - if (dist > timeToSeparate * outVel) { - soFar += (dist - outVel * timeToSeparate) / timeToSeparate / contacts[k].normal.dot(dir); + if (this.velocity.lengthSq() < 625) { + var gotOne = false; + var dir = new Vector(0, 0, 0); + for (j in 0...contacts.length) { + var dir2 = dir.add(contacts[j].normal); + if (dir2.lengthSq() < 0.01) { + dir2.load(dir2.add(contacts[j].normal)); } + dir = dir2; + dir.normalize(); + gotOne = true; + } + if (gotOne) { + dir.normalize(); + var soFar = 0.0; + for (k in 0...contacts.length) { + var dist = this._radius - contacts[k].contactDistance; + var timeToSeparate = 0.1; + var vel = this.velocity.sub(contacts[k].velocity); + var outVel = vel.add(dir.multiply(soFar)).dot(contacts[k].normal); + if (dist > timeToSeparate * outVel) { + soFar += (dist - outVel * timeToSeparate) / timeToSeparate / contacts[k].normal.dot(dir); + } + } + if (soFar < -25) + soFar = -25; + if (soFar > 25) + soFar = 25; + this.velocity.load(this.velocity.add(dir.multiply(soFar))); } - // if (soFar < -25) - // soFar = -25; - // if (soFar > 25) - // soFar = 25; - this.velocity = this.velocity.add(dir.multiply(soFar)); } - // } return stoppedPaths; } @@ -743,7 +973,7 @@ class Marble extends GameObject { function applyContactForces(dt:Float, m:Move, isCentered:Bool, aControl:Vector, desiredOmega:Vector, A:Vector) { var a = new Vector(); this._slipAmount = 0; - var gWorkGravityDir = this.level.currentUp.multiply(-1); + var gWorkGravityDir = this.currentUp.multiply(-1); var bestSurface = -1; var bestNormalForce = 0.0; for (i in 0...contacts.length) { @@ -764,8 +994,8 @@ class Marble extends GameObject { sv = 0; } if (sv < this._jumpImpulse) { - this.velocity = this.velocity.add(bestContact.normal.multiply((this._jumpImpulse - sv))); - if (!playedSounds.contains("data/sound/jump.wav")) { + this.velocity.load(this.velocity.add(bestContact.normal.multiply((this._jumpImpulse - sv)))); + if (!playedSounds.contains("data/sound/jump.wav") && !this.isNetUpdate && this.controllable) { AudioManager.playSound(ResourceLoader.getResource("data/sound/jump.wav", ResourceLoader.getAudio, this.soundResources)); playedSounds.push("data/sound/jump.wav"); } @@ -801,8 +1031,8 @@ class Marble extends GameObject { slipping = false; } var vAtCDir = vAtC.multiply(1 / vAtCMag); - aFriction = bestContact.normal.multiply(-1).cross(vAtCDir.multiply(-1)).multiply(angAMagnitude); - AFriction = vAtCDir.multiply(-AMagnitude); + aFriction.load(bestContact.normal.multiply(-1).cross(vAtCDir.multiply(-1)).multiply(angAMagnitude)); + AFriction.load(vAtCDir.multiply(-AMagnitude)); this._slipAmount = vAtCMag - totalDeltaV; } if (!slipping) { @@ -826,7 +1056,7 @@ class Marble extends GameObject { friction2 = 0; if (mode != Start) friction2 = this._kineticFriction * bestContact.friction; - Aadd = Aadd.multiply(friction2 * bestNormalForce / aAtCMag); + Aadd.load(Aadd.multiply(friction2 * bestNormalForce / aAtCMag)); } A.set(A.x + Aadd.x, A.y + Aadd.y, A.z + Aadd.z); a.set(a.x + aadd.x, a.y + aadd.y, a.z + aadd.z); @@ -835,6 +1065,7 @@ class Marble extends GameObject { a.set(a.x + aFriction.x, a.y + aFriction.y, a.z + aFriction.z); lastContactNormal = bestContact.normal; + lastContactPosition = this.getAbsPos().getPosition(); } a.set(a.x + aControl.x, a.y + aControl.y, a.z + aControl.z); if (this.mode == Finish) { @@ -844,6 +1075,8 @@ class Marble extends GameObject { } function bounceEmitter(speed:Float, normal:Vector) { + if (!this.controllable || this.isNetUpdate) + return; if (this.bounceEmitDelay == 0 && this._minBounceSpeed <= speed) { this.level.particleManager.createEmitter(bounceParticleOptions, this.bounceEmitterData, this.getAbsPos().getPosition()); this.bounceEmitDelay = 0.3; @@ -876,20 +1109,25 @@ class Marble extends GameObject { } function playBoundSound(time:Float, contactVel:Float) { + if (this.isNetUpdate) + return; if (minVelocityBounceSoft <= contactVel) { var hardBounceSpeed = minVelocityBounceHard; var bounceSoundNum = Math.floor(Math.random() * 4); - var sndList = (time - this.megaMarbleEnableTime < 10) ? [ - "data/sound/mega_bouncehard1.wav", - "data/sound/mega_bouncehard2.wav", - "data/sound/mega_bouncehard3.wav", - "data/sound/mega_bouncehard4.wav" - ] : [ - "data/sound/bouncehard1.wav", - "data/sound/bouncehard2.wav", - "data/sound/bouncehard3.wav", - "data/sound/bouncehard4.wav" - ]; + var sndList = ((time - this.megaMarbleEnableTime < 10) + || (this.megaMarbleUseTick > 0 + && ((Net.isHost && (this.level.timeState.ticks - this.megaMarbleUseTick) <= 312) + || (Net.isClient && (this.serverTicks - this.megaMarbleUseTick) <= 312)))) ? [ + "data/sound/mega_bouncehard1.wav", + "data/sound/mega_bouncehard2.wav", + "data/sound/mega_bouncehard3.wav", + "data/sound/mega_bouncehard4.wav" + ] : [ + "data/sound/bouncehard1.wav", + "data/sound/bouncehard2.wav", + "data/sound/bouncehard3.wav", + "data/sound/bouncehard4.wav" + ]; var snd = ResourceLoader.getResource(sndList[bounceSoundNum], ResourceLoader.getAudio, this.soundResources); var gain = bounceMinGain; @@ -900,21 +1138,25 @@ class Marble extends GameObject { // else // gain = (contactVel - minVelocityBounceSoft) / (hardBounceSpeed - minVelocityBounceSoft) * (1.0 - gain) + gain; - snd.play(false, Settings.optionsSettings.soundVolume * gain); + if (this.connection != null) { + var distFromUs = @:privateAccess this.level.marble.lastRenderPos.distanceSq(this.lastRenderPos); + snd.play(false, Settings.optionsSettings.soundVolume * gain / Math.max(1, distFromUs)); + } else + snd.play(false, Settings.optionsSettings.soundVolume * gain); } } function updateRollSound(time:TimeState, contactPct:Float, slipAmount:Float) { var rSpat = rollSound.getEffect(Spatialization); - rSpat.position = this.getAbsPos().getPosition(); + rSpat.position = this.collider.transform.getPosition(); if (this.rollMegaSound != null) { var rmspat = this.rollMegaSound.getEffect(Spatialization); - rmspat.position = this.getAbsPos().getPosition(); + rmspat.position = this.collider.transform.getPosition(); } var sSpat = slipSound.getEffect(Spatialization); - sSpat.position = this.getAbsPos().getPosition(); + sSpat.position = this.collider.transform.getPosition(); var rollVel = bestContact != null ? this.velocity.sub(bestContact.velocity) : this.velocity; var scale = rollVel.length(); @@ -939,7 +1181,10 @@ class Marble extends GameObject { if (slipVolume < 0) slipVolume = 0; - if (time.currentAttemptTime - this.megaMarbleEnableTime < 10) { + if (time.currentAttemptTime - this.megaMarbleEnableTime < 10 + || (this.megaMarbleUseTick > 0 + && ((Net.isHost && (this.level.timeState.ticks - this.megaMarbleUseTick) <= 312) + || (Net.isClient && (this.serverTicks - this.megaMarbleUseTick) <= 312)))) { if (this.rollMegaSound != null) { rollMegaSound.volume = rollVolume; rollSound.volume = 0; @@ -984,31 +1229,64 @@ class Marble extends GameObject { position: position, t: deltaT, found: false, - foundContacts: [] + foundContacts: [], + lastContactPos: null, + lastContactNormal: null, + foundMarbles: [], }; } var searchbox = new Bounds(); searchbox.addSpherePos(position.x, position.y, position.z, _radius); searchbox.addSpherePos(position.x + velocity.x * deltaT, position.y + velocity.y * deltaT, position.z + velocity.z * deltaT, _radius); - var foundObjs = this.level.collisionWorld.boundingSearch(searchbox); + var foundObjs = this.collisionWorld.boundingSearch(searchbox); var finalT = deltaT; var found = false; var lastContactPos = new Vector(); - var testTriangles = []; + var testTriangles:Array = []; var finalContacts = []; + var foundMarbles = []; + + // Marble-Marble + var nextPos = position.add(velocity.multiply(deltaT)); + for (marble in this.collisionWorld.marbleEntities) { + if (marble == this.collider || marble.ignore) + continue; + var otherPosition = marble.transform.getPosition(); + var isec = Collision.capsuleSphereNearestOverlap(position, nextPos, _radius, otherPosition, marble.radius); + if (isec.result) { + foundMarbles.push(marble); + isec.t *= deltaT; + if (isec.t >= finalT) { + var vel = position.add(velocity.multiply(finalT)).sub(otherPosition); + vel.normalize(); + var newVelLen = this.velocity.sub(marble.velocity).dot(vel); + if (newVelLen < 0.0) { + finalT = isec.t; + + var posDiff = nextPos.sub(position).multiply(isec.t); + var p = posDiff.add(position); + lastContactNormal = p.sub(otherPosition); + lastContactNormal.normalize(); + lastContactPos = p.sub(lastContactNormal.multiply(_radius)); + } + } + } + } // for (iter in 0...10) { // var iterationFound = false; for (obj in foundObjs) { // Its an MP so bruh - if (!obj.go.isCollideable) + if (obj.go != null && !obj.go.isCollideable) continue; + var isDts = obj.go is DtsObject; + var invMatrix = @:privateAccess obj.invTransform; if (obj.go is PathedInterior) invMatrix = obj.transform.getInverse(); @@ -1032,7 +1310,8 @@ class Marble extends GameObject { Math.max(Math.max(sphereRadius.x, sphereRadius.y), sphereRadius.z) * 2); var currentFinalPos = position.add(relVel.multiply(finalT)); // localpos.add(relLocalVel.multiply(finalT)); - var surfaces = obj.bvh == null ? obj.octree.boundingSearch(boundThing).map(x -> cast x) : obj.bvh.boundingSearch(boundThing); + var surfaces = @:privateAccess obj.grid != null ? @:privateAccess obj.grid.boundingSearch(boundThing) : (obj.bvh == null ? obj.octree.boundingSearch(boundThing) + .map(x -> cast x) : obj.bvh.boundingSearch(boundThing)); for (surf in surfaces) { var surface:CollisionSurface = cast surf; @@ -1045,16 +1324,17 @@ class Marble extends GameObject { // var v0 = surface.points[surface.indices[i]].transformed(tform); // var v = surface.points[surface.indices[i + 1]].transformed(tform); // var v2 = surface.points[surface.indices[i + 2]].transformed(tform); - var v0 = verts.v1; - var v = verts.v2; - var v2 = verts.v3; + var v0 = new Vector(verts.v1x, verts.v1y, verts.v1z); + var v = new Vector(verts.v2x, verts.v2y, verts.v2z); + var v2 = new Vector(verts.v3x, verts.v3y, verts.v3z); // var v0 = surface.points[surface.indices[i]].transformed(obj.transform); // var v = surface.points[surface.indices[i + 1]].transformed(obj.transform); // var v2 = surface.points[surface.indices[i + 2]].transformed(obj.transform); - var triangleVerts = [v0, v, v2]; + // var triangleVerts = [v0, v, v2]; - var surfaceNormal = verts.n; // surface.normals[surface.indices[i]].transformed3x3(obj.transform).normalized(); + var surfaceNormal = new Vector(verts.nx, verts.ny, + verts.nz); // surface.normals[surface.indices[i]].transformed3x3(obj.transform).normalized(); if (obj is DtsObject) surfaceNormal.multiply(-1); var surfaceD = -surfaceNormal.dot(v0); @@ -1069,10 +1349,11 @@ class Marble extends GameObject { // var vT = v.transformed(obj.transform); // var v2T = v2.transformed(obj.transform); // var vN = surfaceNormal.transformed3x3(obj.transform); - testTriangles.push({ - v: [v0, v, v2], - n: surfaceNormal, - }); + if (!isDts) + testTriangles.push({ + v: [v0.clone(), v.clone(), v2.clone()], + n: surfaceNormal.clone(), + }); // Time until collision with the plane var collisionTime = (radius - position.dot(surfaceNormal) - surfaceD) / surfaceNormal.dot(relVel); @@ -1080,27 +1361,12 @@ class Marble extends GameObject { // Are we going to touch the plane during this time step? if (collisionTime >= 0.000001 && finalT >= collisionTime) { var collisionPoint = position.add(relVel.multiply(collisionTime)); - // var lastPoint = v2; - // var j = 0; - // while (j < 3) { - // var testPoint = surface.points[surface.indices[i + j]]; - // if (testPoint != lastPoint) { - // var a = surfaceNormal; - // var b = lastPoint.sub(testPoint); - // var planeNorm = b.cross(a); - // var planeD = -planeNorm.dot(testPoint); - // lastPoint = testPoint; - // // if we are on the far side of the edge - // if (planeNorm.dot(collisionPoint) + planeD >= 0.0) - // break; - // } - // j++; - // } // If we're inside the poly, just get the position if (Collision.PointInTriangle(collisionPoint, v0, v, v2)) { finalT = collisionTime; currentFinalPos = position.add(relVel.multiply(finalT)); found = true; + lastContactPos = currentFinalPos.clone(); // iterationFound = true; i += 3; // Debug.drawSphere(currentFinalPos, radius); @@ -1108,8 +1374,9 @@ class Marble extends GameObject { } } // We *might* be colliding with an edge + var triangleVerts = [v0.clone(), v.clone(), v2.clone()]; - var lastVert = v2; + var lastVert = v2.clone(); var radSq = radius * radius; for (iter in 0...3) { @@ -1130,7 +1397,7 @@ class Marble extends GameObject { // If it's not quadratic or has no solution, ignore this edge. if (a == 0.0 || discriminant < 0.0) { - lastVert = thisVert; + lastVert.load(thisVert); continue; } @@ -1156,14 +1423,6 @@ class Marble extends GameObject { // Check if the collision hasn't already happened if (edgeCollisionTime >= 0.000001) { - // if (edgeCollisionTime < 0.000001) { - // edgeCollisionTime = edgeCollisionTime2; - // } - // if (edgeCollisionTime < 0.00001) - // continue; - // if (edgeCollisionTime > finalT) - // continue; - var edgeLen = vertDiff.length(); var relativeCollisionPos = position.add(relVel.multiply(edgeCollisionTime)).sub(thisVert); @@ -1172,7 +1431,7 @@ class Marble extends GameObject { // If the collision happens outside the boundaries of the edge, ignore this edge. if (-radius > distanceAlongEdge || edgeLen + radius < distanceAlongEdge) { - lastVert = thisVert; + lastVert.load(thisVert); continue; } @@ -1181,7 +1440,7 @@ class Marble extends GameObject { finalT = edgeCollisionTime; currentFinalPos = position.add(relVel.multiply(finalT)); lastContactPos = vertDiff.multiply(distanceAlongEdge / edgeLen).add(thisVert); - lastVert = thisVert; + lastVert.load(thisVert); found = true; // Debug.drawSphere(currentFinalPos, radius); // iterationFound = true; @@ -1236,14 +1495,14 @@ class Marble extends GameObject { // We still need to check the other corner ... // Build one last quadratic equation to solve for the collision time - posVertDiff = position.sub(lastVert); + var posVertDiff = position.sub(lastVert); b = 2 * posVertDiff.dot(relVel); c = posVertDiff.lengthSq() - radSq; discriminant = b * b - (4 * a * c); // If it's not quadratic or has no solution, then skip this corner if (a == 0.0 || discriminant < 0.0) { - lastVert = thisVert; + lastVert.load(thisVert); continue; } @@ -1262,7 +1521,7 @@ class Marble extends GameObject { } if (edgeCollisionTime2 <= 0.0001 || finalT <= edgeCollisionTime) { - lastVert = thisVert; + lastVert.load(thisVert); continue; } @@ -1270,7 +1529,7 @@ class Marble extends GameObject { edgeCollisionTime = 0; if (edgeCollisionTime < 0.000001) { - lastVert = thisVert; + lastVert.load(thisVert); continue; } @@ -1278,7 +1537,7 @@ class Marble extends GameObject { currentFinalPos = position.add(relVel.multiply(finalT)); // Debug.drawSphere(currentFinalPos, radius); - lastVert = thisVert; + lastVert.load(thisVert); found = true; // iterationFound = true; } @@ -1295,30 +1554,20 @@ class Marble extends GameObject { var finalPosition = position.add(deltaPosition); position = finalPosition; - // for (testTri in testTriangles) { - // var tsi = Collision.TriangleSphereIntersection(testTri.v[0], testTri.v[1], testTri.v[2], testTri.n, finalPosition, radius, testTri.edge, - // testTri.concavity); - // if (tsi.result) { - // var contact = new CollisionInfo(); - // contact.point = tsi.point; - // contact.normal = tsi.normal; - // contact.contactDistance = tsi.point.distance(position); - // finalContacts.push(contact); - // } - // } - return { position: position, t: finalT, found: found, - foundContacts: testTriangles + foundContacts: testTriangles, + lastContactPos: lastContactPos, + lastContactNormal: position.sub(lastContactPos).normalized(), + foundMarbles: foundMarbles }; } - function nudgeToContacts(position:Vector, radius:Float, foundContacts:Array<{ - v:Array, - n:Vector - }>) { + function nudgeToContacts(position:Vector, radius:Float, foundContacts:Array, foundMarbles:Array) { + if (Net.isMP) + return position; var it = 0; var concernedContacts = foundContacts; // PathedInteriors have their own nudge logic var prevResolved = 0; @@ -1351,7 +1600,7 @@ class Marble extends GameObject { // Nudge to the surface of the contact plane Debug.drawTriangle(testTri.v[0], testTri.v[1], testTri.v[2]); Debug.drawSphere(position, radius); - position = position.add(separatingDistance.multiply(radius - distToContactPlane - 0.005)); + position.load(position.add(separatingDistance.multiply(radius - distToContactPlane - 0.005))); resolved++; } } @@ -1377,6 +1626,14 @@ class Marble extends GameObject { prevResolved = resolved; it++; } while (true && it < 10); + for (marble in foundMarbles) { + var marblePosition = marble.transform.getPosition(); + var dist = marblePosition.distance(position); + if (dist < radius + marble.radius + 0.001) { + var separatingDistance = position.sub(marblePosition).normalized(); + position.load(position.add(separatingDistance.multiply(radius + marble.radius + 0.001 - dist))); + } + } return position; } @@ -1387,6 +1644,21 @@ class Marble extends GameObject { var piTime = timeRemaining; + if (this.isNetUpdate) { + lastMove = m; + } + + if (m == null) { + m = new Move(); + m.d = new Vector(); + } + + if (Net.isMP && this.blastTicks < (25000 >> 5)) + this.blastTicks += 1; + + if (Net.isClient) + this.serverTicks++; + _bounceYet = false; var contactTime = 0.0; @@ -1394,12 +1666,44 @@ class Marble extends GameObject { var passedTime = timeState.currentAttemptTime; - var oldPos = this.getAbsPos().getPosition().clone(); + oldPos = this.collider.transform.getPosition(); + prevRot = this.getRotationQuat().clone(); - if (this.controllable) { - for (interior in pathedInteriors) { - // interior.pushTickState(); - interior.computeNextPathStep(timeRemaining); + // Handle spectator hacky bullshit + if (Net.isMP && this.level.serverStartTicks != 0) { + if ((connection != null && connection.spectator) || (connection == null && (Net.hostSpectate || Net.clientSpectate))) { + this.collider.transform.setPosition(new Vector(1e8, 1e8, 1e8)); + this.collisionWorld.updateTransform(this.collider); + this.setPosition(1e8, 1e8, 1e8); + + if (Net.clientSpectate && this.connection == null) { + this.camera.enableSpectate(); + } + this.blastTicks = 0; + return; + } + + var ticks = Net.isClient ? serverTicks : timeState.ticks; + + if ((ticks - this.level.serverStartTicks) < (10000 >> 5)) // 10 seconds marble collision invulnerability - competitive mode needs this + this.collider.ignore = true; + else + this.collider.ignore = false; + } + + // if (this.controllable) { + for (interior in pathedInteriors) { + if (Net.isMP) + interior.pushTickState(); + interior.computeNextPathStep(timeRemaining); + } + // } + + // Blast + if (m != null && m.blast) { + this.useBlast(timeState); + if (level.isRecording) { + level.replay.recordMarbleStateFlags(false, false, false, true); } } @@ -1431,9 +1735,19 @@ class Marble extends GameObject { var desiredOmega = new Vector(); var isCentered = this.computeMoveForces(m, aControl, desiredOmega); - stoppedPaths = this.velocityCancel(timeState.currentAttemptTime, timeStep, isCentered, false, stoppedPaths, pathedInteriors); - var A = this.getExternalForces(timeState.currentAttemptTime, m, timeStep); + stoppedPaths = this.velocityCancel(timeState, isCentered, false, stoppedPaths, pathedInteriors); + var A = this.getExternalForces(tempState, m); var a = this.applyContactForces(timeStep, m, isCentered, aControl, desiredOmega, A); + + // NaN check so OpenAL doesn't freak out + if (Math.isNaN(A.lengthSq())) { + A.set(0, 0, 0); + } + + if (Math.isNaN(a.lengthSq())) { + a.set(0, 0, 0); + } + this.velocity.set(this.velocity.x + A.x * timeStep, this.velocity.y + A.y * timeStep, this.velocity.z + A.z * timeStep); this.omega.set(this.omega.x + a.x * timeStep, this.omega.y + a.y * timeStep, this.omega.z + a.z * timeStep); if (this.mode == Start) { @@ -1441,7 +1755,7 @@ class Marble extends GameObject { this.velocity.y = 0; this.velocity.x = 0; } - stoppedPaths = this.velocityCancel(timeState.currentAttemptTime, timeStep, isCentered, true, stoppedPaths, pathedInteriors); + stoppedPaths = this.velocityCancel(timeState, isCentered, true, stoppedPaths, pathedInteriors); this._totalTime += timeStep; if (contacts.length != 0) { this._contactTime += timeStep; @@ -1457,7 +1771,7 @@ class Marble extends GameObject { velocity.w = 0; - var pos = this.getAbsPos().getPosition(); + var pos = this.collider.transform.getPosition(); this.prevPos = pos.clone(); var tdiff = timeStep; @@ -1473,7 +1787,7 @@ class Marble extends GameObject { } var expectedPos = finalPosData.position; // var newPos = expectedPos; - var newPos = nudgeToContacts(expectedPos, _radius, finalPosData.foundContacts); + var newPos = nudgeToContacts(expectedPos, _radius, finalPosData.foundContacts, finalPosData.foundMarbles); if (this.velocity.lengthSq() > 1e-8) { var posDiff = newPos.sub(expectedPos); @@ -1492,64 +1806,40 @@ class Marble extends GameObject { } } - // var intersectT = intersectData.t; - // if (intersectData.found && intersectT > 0.001) { - // var diff = timeStep - intersectT; - // this.velocity = this.velocity.sub(A.multiply(diff)); - // this.omega = this.omega.sub(a.multiply(diff)); - // // var mo = new h3d.prim.Sphere(); - // // mo.addNormals(); - // // mo.scale(_radius); - // // var mCol = new h3d.scene.Mesh(mo); - // // mCol.setPosition(intersectData.position.x, intersectData.position.y, intersectData.position.z); - // // this.level.scene.addChild(mCol); - // timeStep = intersectT; - // } - - // var posAdd = this.velocity.multiply(timeStep); - // var expectedPos = pos.add(posAdd); - // var newPos = nudgeToContacts(expectedPos, _radius); - - // if (mode == Start) { - // var upVec = this.level.currentUp; - // var startpadNormal = startPad.getAbsPos().up(); - // this.velocity = upVec.multiply(this.velocity.dot(upVec)); - // // Apply contact forces in startPad up direction if upVec is not startpad up, fixes the weird startpad shit in pinball wizard - // if (upVec.dot(startpadNormal) < 0.95) { - // for (contact in contacts) { - // var normF = contact.normal.multiply(contact.normalForce); - // var startpadF = startpadNormal.multiply(normF.dot(startpadNormal)); - // var upF = upVec.multiply(normF.dot(upVec)); - // this.velocity = this.velocity.add(startpadF.multiply(timeStep / 4)); - // } - // } - // } - - // if (mode == Finish) { - // this.velocity = this.velocity.multiply(0.925); - // } - var rot = this.getRotationQuat(); var quat = new Quat(); quat.initRotation(omega.x * timeStep, omega.y * timeStep, omega.z * timeStep); quat.multiply(quat, rot); - this.setRotationQuat(quat); + if (!Net.isMP) + this.setRotationQuat(quat); var totMatrix = quat.toMatrix(); newPos.w = 1; // Fix shit blowing up totMatrix.setPosition(newPos); - this.setPosition(newPos.x, newPos.y, newPos.z); + if (!Net.isMP) + this.setPosition(newPos.x, newPos.y, newPos.z); this.collider.setTransform(totMatrix); + this.collisionWorld.updateTransform(this.collider); this.collider.velocity = this.velocity; - if (this.heldPowerup != null && m.powerup && !this.level.outOfBounds) { + if (this.heldPowerup != null + && (m.powerup || (Net.isClient && this.serverUsePowerup && !this.controllable)) + && !this.outOfBounds) { var pTime = timeState.clone(); pTime.dt = timeStep; pTime.currentAttemptTime = passedTime; - this.heldPowerup.use(pTime); + var netUpdate = this.isNetUpdate; + if (this.serverUsePowerup) + this.isNetUpdate = false; + this.heldPowerup.use(this, pTime); + this.isNetUpdate = netUpdate; this.heldPowerup = null; + this.serverUsePowerup = false; + if (!this.isNetUpdate) { + this.netFlags |= MarbleNetFlags.PickupPowerup | MarbleNetFlags.UsePowerup; + } if (this.level.isRecording) { this.level.replay.recordPowerupPickup(null); } @@ -1560,11 +1850,11 @@ class Marble extends GameObject { timeRemaining -= timeStep; - if (this.controllable) { - for (interior in pathedInteriors) { - interior.advance(timeStep); - } + // if (this.controllable) { + for (interior in pathedInteriors) { + interior.advance(timeStep); } + // } piTime += timeStep; @@ -1573,31 +1863,476 @@ class Marble extends GameObject { } while (true); if (timeRemaining > 0) { // Advance pls - if (this.controllable) { - for (interior in pathedInteriors) { - interior.advance(timeRemaining); - } + // if (this.controllable) { + for (interior in pathedInteriors) { + interior.advance(timeRemaining); } + // } } this.queuedContacts = []; - var newPos = this.getAbsPos().getPosition().clone(); + newPos = this.collider.transform.getPosition(); // this.getAbsPos().getPosition().clone(); - if (this.controllable && this.prevPos != null) { + if (this.prevPos != null && this.level != null) { var tempTimeState = timeState.clone(); tempTimeState.currentAttemptTime = passedTime; - this.level.callCollisionHandlers(cast this, tempTimeState, oldPos, newPos); + this.callCollisionHandlers(tempTimeState, oldPos, newPos); } this.updateRollSound(timeState, contactTime / timeState.dt, this._slipAmount); + + var megaMarbleDurationTicks = Net.isMP && Net.connectedServerInfo.competitiveMode ? 156 : 312; + + if (this.megaMarbleUseTick > 0) { + if (Net.isHost) { + if ((timeState.ticks - this.megaMarbleUseTick) <= megaMarbleDurationTicks && this.megaMarbleUseTick > 0) { + this._radius = 0.6666; + this.collider.radius = 0.6666; + } else if ((timeState.ticks - this.megaMarbleUseTick) > megaMarbleDurationTicks) { + this.collider.radius = this._radius = 0.2; + this.megaMarbleUseTick = 0; + this.netFlags |= MarbleNetFlags.DoMega; + } + } + if (Net.isClient) { + if (this.serverTicks - this.megaMarbleUseTick <= megaMarbleDurationTicks && this.megaMarbleUseTick > 0) { + this._radius = 0.6666; + this.collider.radius = 0.6666; + } else { + this.collider.radius = this._radius = 0.2; + this.megaMarbleUseTick = 0; + } + } + } + if (Net.isClient && this.megaMarbleUseTick == 0) { + this.collider.radius = this._radius = 0.2; + } + + if (Net.isMP) { + if (m.powerup && this.outOfBounds) { + this.level.cancel(this.oobSchedule); + this.level.restart(cast this); + } + + for (interior in pathedInteriors) { + interior.popTickState(); + } + + if (m.respawn && !Net.connectedServerInfo.competitiveMode) { // Competitive mode disables quick respawning + if (timeState.ticks - lastRespawnTick > (25000 >> 5)) { + this.level.restart(cast this); + lastRespawnTick = timeState.ticks; + } + } + } } - public function update(timeState:TimeState, collisionWorld:CollisionWorld, pathedInteriors:Array) { + public function callCollisionHandlers(timeState:TimeState, start:Vector, end:Vector) { + var expansion = this._radius + 0.2; + var minP = new Vector(Math.min(start.x, end.x) - expansion, Math.min(start.y, end.y) - expansion, Math.min(start.z, end.z) - expansion); + var maxP = new Vector(Math.max(start.x, end.x) + expansion, Math.max(start.y, end.y) + expansion, Math.max(start.z, end.z) + expansion); + var box = Bounds.fromPoints(minP.toPoint(), maxP.toPoint()); + + // var marbleHitbox = new Bounds(); + // marbleHitbox.addSpherePos(0, 0, 0, marble._radius); + // marbleHitbox.transform(startQuat.toMatrix()); + // marbleHitbox.transform(endQuat.toMatrix()); + // marbleHitbox.offset(end.x, end.y, end.z); + + // spherebounds.addSpherePos(gjkCapsule.p2.x, gjkCapsule.p2.y, gjkCapsule.p2.z, gjkCapsule.radius); + var contacts = this.collisionWorld.boundingSearch(box); + // var contacts = marble.contactEntities; + var inside = []; + + for (contact in contacts) { + if (contact.go != this) { + if (contact.go is DtsObject) { + var shape:DtsObject = cast contact.go; + + if (contact.boundingBox.collide(box)) { + shape.onMarbleInside(cast this, timeState); + if (!this.shapeOrTriggerInside.contains(contact.go)) { + this.shapeOrTriggerInside.push(contact.go); + shape.onMarbleEnter(cast this, timeState); + } + inside.push(contact.go); + } + } + if (contact.go is Trigger) { + var trigger:Trigger = cast contact.go; + var triggeraabb = trigger.collider.boundingBox; + + if (triggeraabb.collide(box)) { + trigger.onMarbleInside(cast this, timeState); + if (!this.shapeOrTriggerInside.contains(contact.go)) { + this.shapeOrTriggerInside.push(contact.go); + trigger.onMarbleEnter(cast this, timeState); + } + inside.push(contact.go); + } + } + } + } + + for (object in shapeOrTriggerInside) { + if (!inside.contains(object)) { + this.shapeOrTriggerInside.remove(object); + object.onMarbleLeave(cast this, timeState); + } + } + + if (this.level.finishTime == null && @:privateAccess this.level.endPad != null) { + if (box.collide(@:privateAccess this.level.endPad.finishBounds)) { + var padUp = @:privateAccess this.level.endPad.getAbsPos().up(); + padUp = padUp.multiply(10); + + var checkBounds = box.clone(); + checkBounds.zMin -= 10; + checkBounds.zMax += 10; + var checkBoundsCenter = checkBounds.getCenter(); + var checkSphereRadius = checkBounds.getMax().sub(checkBoundsCenter).length(); + var checkSphere = new Bounds(); + checkSphere.addSpherePos(checkBoundsCenter.x, checkBoundsCenter.y, checkBoundsCenter.z, checkSphereRadius); + var endpadBB = this.collisionWorld.boundingSearch(checkSphere, false); + var found = false; + for (collider in endpadBB) { + if (collider.go == @:privateAccess this.level.endPad) { + var chull = cast(collider, collision.CollisionEntity); + var chullinvT = @:privateAccess chull.invTransform.clone(); + chullinvT.clone(); + chullinvT.transpose(); + for (surface in chull.surfaces) { + var i = 0; + while (i < surface.indices.length) { + var surfaceN = surface.getNormal(surface.indices[i]).transformed3x3(chullinvT); + var v1 = surface.getPoint(surface.indices[i]).transformed(chull.transform); + var surfaceD = -surfaceN.dot(v1); + + if (surfaceN.dot(padUp.multiply(-10)) < 0) { + var dist = surfaceN.dot(checkBoundsCenter.toVector()) + surfaceD; + if (dist >= 0 && dist < 5) { + var intersectT = -(checkBoundsCenter.dot(surfaceN.toPoint()) + surfaceD) / (padUp.dot(surfaceN)); + var intersectP = checkBoundsCenter.add(padUp.multiply(intersectT).toPoint()).toVector(); + if (Collision.PointInTriangle(intersectP, v1, surface.getPoint(surface.indices[i + 1]).transformed(chull.transform), + surface.getPoint(surface.indices[i + 2]).transformed(chull.transform))) { + found = true; + break; + } + } + } + + i += 3; + } + + if (found) { + break; + } + } + if (found) { + break; + } + } + } + if (found) { + if (@:privateAccess !this.level.endPad.inFinish) { + @:privateAccess this.level.touchFinish(); + @:privateAccess this.level.endPad.inFinish = true; + } + } else { + if (@:privateAccess this.level.endPad.inFinish) + @:privateAccess this.level.endPad.inFinish = false; + } + } else { + if (@:privateAccess this.level.endPad.inFinish) + @:privateAccess this.level.endPad.inFinish = false; + } + } + } + + // MP Only Functions + public inline function clearNetFlags() { + this.netFlags = 0; + } + + public inline function queueTrapdoorUpdate(tId:Int, lastContactTick:Int) { + trapdoorContacts.set(tId, lastContactTick); + this.netFlags |= MarbleNetFlags.UpdateTrapdoor; + } + + public function packUpdate(move:NetMove, timeState:TimeState) { + var b = new OutputBitStream(); + b.writeByte(NetPacketType.MarbleUpdate); + var marbleUpdate = new MarbleUpdatePacket(); + marbleUpdate.clientId = connection != null ? connection.id : 0; + marbleUpdate.serverTicks = timeState.ticks; + marbleUpdate.position = this.newPos; + marbleUpdate.velocity = this.velocity; + marbleUpdate.omega = this.omega; + marbleUpdate.move = move; + marbleUpdate.moveQueueSize = this.connection != null ? this.connection.moveManager.getQueueSize() : 255; + marbleUpdate.blastAmount = this.blastTicks; + marbleUpdate.blastTick = this.blastUseTick; + marbleUpdate.heliTick = this.helicopterUseTick; + marbleUpdate.megaTick = this.megaMarbleUseTick; + marbleUpdate.superBounceTick = this.superBounceUseTick; + marbleUpdate.shockAbsorberTick = this.shockAbsorberUseTick; + marbleUpdate.oob = this.outOfBounds; + marbleUpdate.powerUpId = this.heldPowerup != null ? this.heldPowerup.netIndex : 0x1FF; + marbleUpdate.netFlags = this.netFlags; + marbleUpdate.gravityDirection = this.currentUp; + marbleUpdate.trapdoorUpdates = this.trapdoorContacts; + marbleUpdate.pingTicks = connection != null ? connection.pingTicks : 0; + marbleUpdate.serialize(b); + + this.trapdoorContacts = []; + + return b.getBytes(); + } + + public function unpackUpdate(p:MarbleUpdatePacket) { + // Assume packet header is already read + // Check if we aren't colliding with a marble + // for (marble in this.level.collisionWorld.marbleEntities) { + // if (marble != this.collider && marble.transform.getPosition().distance(p.position) < marble.radius + this._radius) { + // Console.log("Marble updated inside another one!"); + // return false; + // } + // } + // trace('Tick RTT: ', this.serverTicks - p.serverTicks); + this.serverTicks = p.serverTicks; + this.recvServerTick = p.serverTicks; + // this.oldPos = this.newPos; + // this.newPos = p.position; + this.collider.transform.setPosition(p.position); + this.velocity = p.velocity; + this.omega = p.omega; + this.blastTicks = p.blastAmount; + this.blastUseTick = p.blastTick; + this.helicopterUseTick = p.heliTick; + this.megaMarbleUseTick = p.megaTick; + this.superBounceUseTick = p.superBounceTick; + this.shockAbsorberUseTick = p.shockAbsorberTick; + this.serverUsePowerup = p.netFlags & MarbleNetFlags.UsePowerup > 0; + // this.currentUp = p.gravityDirection; + if (p.gravityDirection != null) + this.level.setUp(cast this, p.gravityDirection, this.level.timeState); + if (this.outOfBounds && !p.oob && this.controllable) + @:privateAccess this.level.playGui.setCenterText(''); + this.outOfBounds = p.oob; + this.camera.oob = p.oob; + if (p.powerUpId == 0x1FF) { + if (!this.serverUsePowerup) + this.level.deselectPowerUp(cast this); + else + Console.log("Using powerup"); + } else { + this.level.pickUpPowerUp(cast this, this.level.powerUps[p.powerUpId]); + } + if (p.moveQueueSize == 0 && this.connection != null) { + // Pad null move on client + this.connection.moveManager.duplicateLastMove(); + } + if (this.connection != null) { + if (ProfilerUI.instance.fps < 30) { + this.connection.moveManager.stall = true; // Our fps fucked, stall pls + } else { + this.connection.moveManager.stall = false; + } + } + if (p.netFlags & MarbleNetFlags.UpdateTrapdoor > 0) { + for (tId => tTime in p.trapdoorUpdates) { + @:privateAccess level.trapdoorPredictions.acknowledgeTrapdoorUpdate(tId, tTime); + } + } + if (p.netFlags & MarbleNetFlags.DoBlast > 0 && blastUseTick != 0 && !this.controllable) { + var ublast = p.netFlags & MarbleNetFlags.DoUltraBlast > 0; + this.level.particleManager.createEmitter(ublast ? blastMaxParticleOptions : blastParticleOptions, ublast ? blastMaxEmitterData : blastEmitterData, + this.getAbsPos().getPosition(), () -> { + this.getAbsPos().getPosition().add(this.currentUp.multiply(-this._radius * 0.4)); + }, + new Vector(1, 1, 1).add(new Vector(Math.abs(this.currentUp.x), Math.abs(this.currentUp.y), Math.abs(this.currentUp.z)).multiply(-0.8))); + } + // if (Net.isClient && !this.controllable && (this.serverTicks - this.blastUseTick) < 12) { + // var ticksSince = (this.serverTicks - this.blastUseTick); + // if (ticksSince >= 0) { + // this.blastWave.doSequenceOnceBeginTime = this.level.timeState.timeSinceLoad - ticksSince * 0.032; + // this.blastUseTime = this.level.timeState.currentAttemptTime - ticksSince * 0.032; + // } + // } + + // if (this.controllable && Net.isClient) { + // // We are client, need to do something about the queue + // var mm = Net.clientConnection.moveManager; + // // trace('Queue size: ${mm.getQueueSize()}, server: ${p.moveQueueSize}'); + // if (mm.getQueueSize() / p.moveQueueSize < 2) { + // mm.stall = true; + // } else { + // mm.stall = false; + // } + // } + return true; + } + + function calculateNetSmooth() { + if (this.netCorrected) { + this.netCorrected = false; + this.netSmoothOffset.load(this.lastRenderPos.sub(this.oldPos)); + // this.oldPos.load(this.posStore); + } + } + + public function updateServer(timeState:TimeState, collisionWorld:CollisionWorld, pathedInteriors:Array) { + var move:NetMove = null; + if (this.controllable && this.mode != Finish) { + if (Net.isClient) { + var axis = getMarbleAxis()[1]; + move = Net.clientConnection.recordMove(cast this, axis, timeState, recvServerTick); + } else if (Net.isHost) { + var axis = getMarbleAxis()[1]; + var innerMove = recordMove(); + if (MarbleGame.instance.paused) { + innerMove.d.x = 0; + innerMove.d.y = 0; + innerMove.blast = innerMove.jump = innerMove.powerup = false; + } else { + var qx = Std.int((innerMove.d.x * 16) + 16); + var qy = Std.int((innerMove.d.y * 16) + 16); + innerMove.d.x = (qx - 16) / 16.0; + innerMove.d.y = (qy - 16) / 16.0; + } + move = new NetMove(innerMove, axis, timeState, recvServerTick, 65535); + } + } + var moveId = 65535; + if (!this.controllable && this.connection != null && Net.isHost) { + var nextMove = this.connection.getNextMove(); + // trace('Moves left: ${@:privateAccess this.connection.moveManager.queuedMoves.length}'); + if (nextMove == null) { + var axis = moveMotionDir != null ? moveMotionDir : getMarbleAxis()[1]; + var innerMove = lastMove; + if (innerMove == null) { + innerMove = new Move(); + innerMove.d = new Vector(0, 0); + } + move = new NetMove(innerMove, axis, timeState, recvServerTick, 65535); + } else { + move = nextMove; + moveMotionDir = nextMove.motionDir; + moveId = nextMove.id; + lastMove = move.move; + } + } + if (move == null && !this.controllable || this.mode == Finish) { + var axis = moveMotionDir != null ? moveMotionDir : new Vector(0, -1, 0); + var innerMove = lastMove; + if (innerMove == null) { + innerMove = new Move(); + innerMove.d = new Vector(0, 0); + } + move = new NetMove(innerMove, axis, timeState, recvServerTick, 65535); + } + + if (move != null) { + playedSounds = []; + advancePhysics(timeState, move.move, collisionWorld, pathedInteriors); + physicsAccumulator = 0; + } else { + physicsAccumulator = 0; + newPos.load(oldPos); + } + + return move; + // if (Net.isHost) { + // packets.push({b: packUpdate(move, timeState), c: this.connection != null ? this.connection.id : 0}); + // } + } + + public function updateClient(timeState:TimeState, pathedInteriors:Array) { + calculateNetSmooth(); + this.level.updateBlast(cast this, timeState); + + var newDt = 2.3 * (timeState.dt / 0.4); + var smooth = 1.0 / (newDt * (newDt * 0.235 * newDt) + newDt + 1.0 + 0.48 * newDt * newDt); + this.netSmoothOffset.scale(smooth); + var smoothScale = this.netSmoothOffset.lengthSq(); + if (smoothScale < 0.01 || smoothScale > 25.0) + this.netSmoothOffset.set(0, 0, 0); + + if (oldPos != null && newPos != null) { + var deltaT = physicsAccumulator / 0.032; + // if (Net.isClient && !this.controllable) + // deltaT *= 0.75; // Don't overshoot + var renderPos = Util.lerpThreeVectors(this.oldPos, this.newPos, deltaT); + if (Net.isClient) { + renderPos.load(renderPos.add(this.netSmoothOffset)); + } + this.setPosition(renderPos.x, renderPos.y, renderPos.z); + this.lastRenderPos.load(renderPos); + + var rot = this.getRotationQuat(); + var quat = new Quat(); + quat.initRotation(omega.x * timeState.dt, omega.y * timeState.dt, omega.z * timeState.dt); + quat.multiply(quat, rot); + this.setRotationQuat(quat); + + var adt = timeState.clone(); + adt.dt = Util.adjustedMod(physicsAccumulator, 0.032); + for (pi in pathedInteriors) { + pi.update(adt); + } + } + physicsAccumulator += timeState.dt; + + if (this.controllable + && this.level != null + && !this.level.rewinding + && !(Net.clientSpectate || Net.hostSpectate)) { // Separately update the camera if spectate + // this.camera.startCenterCamera(); + this.camera.update(timeState.currentAttemptTime, timeState.dt); + } + + updatePowerupStates(timeState); + updateTeleporterState(timeState); + + if (isMegaMarbleEnabled(timeState)) { + marbleDts.setScale(0.6666 / _dtsRadius); + } else { + marbleDts.setScale(0.2 / _dtsRadius); + } + + // if (isMegaMarbleEnabled(timeState)) { + // this._marbleScale = this._defaultScale * 2.25; + // } else { + // this._marbleScale = this._defaultScale; + // } + + // var s = this._renderScale * this._renderScale; + // if (s <= this._marbleScale * this._marbleScale) + // s = 0.1; + // else + // s = 0.4; + + // s = timeState.dt / s * 2.302585124969482; + // s = 1.0 / (s * (s * 0.235 * s) + s + 1.0 + 0.48 * s * s); + // this._renderScale *= s; + // s = 1 - s; + // this._renderScale += s * this._marbleScale; + // var marbledts = cast(this.getChildAt(0), DtsObject); + // marbledts.setScale(this._renderScale); + + this.trailEmitter(); + if (bounceEmitDelay > 0) + bounceEmitDelay -= timeState.dt; + if (bounceEmitDelay < 0) + bounceEmitDelay = 0; + } + + public function recordMove() { var move = new Move(); move.d = new Vector(); - if (this.controllable && this.mode != Finish && !MarbleGame.instance.paused && !this.level.isWatching) { - move.d.x = Gamepad.getAxis(Settings.gamepadSettings.moveYAxis); - move.d.y = -Gamepad.getAxis(Settings.gamepadSettings.moveXAxis); + move.d.x = Gamepad.getAxis(Settings.gamepadSettings.moveYAxis); + move.d.y = -Gamepad.getAxis(Settings.gamepadSettings.moveXAxis); + if (@:privateAccess !MarbleGame.instance.world.playGui.isChatFocused()) { if (Key.isDown(Settings.controlsSettings.forward)) { move.d.x -= 1; } @@ -1620,11 +2355,33 @@ class Marble extends GameObject { || Gamepad.isDown(Settings.gamepadSettings.powerup)) { move.powerup = true; } + + if (Key.isDown(Settings.controlsSettings.blast) + || (MarbleGame.instance.touchInput.blastbutton.pressed) + || Gamepad.isDown(Settings.gamepadSettings.blast)) + move.blast = true; + + if (Key.isDown(Settings.controlsSettings.respawn) || Gamepad.isDown(Settings.gamepadSettings.respawn)) { + move.respawn = true; + @:privateAccess Key.keyPressed[Settings.controlsSettings.respawn] = 0; + Gamepad.releaseKey(Settings.gamepadSettings.respawn); + } + if (MarbleGame.instance.touchInput.movementInput.pressed) { move.d.y = -MarbleGame.instance.touchInput.movementInput.value.x; move.d.x = MarbleGame.instance.touchInput.movementInput.value.y; } } + return move; + } + + public function update(timeState:TimeState, collisionWorld:CollisionWorld, pathedInteriors:Array) { + var move:Move = null; + if (this.controllable && !this.level.isWatching) { + move = recordMove(); + } + if (level.isReplayingMovement) + move = level.currentInputMoves[1].move; if (this.level.isWatching) { if (this.level.replay.currentPlaybackFrame.marbleStateFlags.has(Jumped)) @@ -1638,10 +2395,44 @@ class Marble extends GameObject { this.level.replay.recordMarbleInput(move.d.x, move.d.y); } } + if (!this.controllable && (this.connection != null || this.level == null)) { + move = new Move(); + move.d = new Vector(0, 0); + } playedSounds = []; advancePhysics(timeState, move, collisionWorld, pathedInteriors); + for (pi in pathedInteriors) { + pi.update(timeState); + } + + // physicsAccumulator += timeState.dt; + + // while (physicsAccumulator > 0.032) { + // var adt = timeState.clone(); + // adt.dt = 0.032; + // advancePhysics(adt, move, collisionWorld, pathedInteriors); + // physicsAccumulator -= 0.032; + // } + // if (oldPos != null && newPos != null) { + // var deltaT = physicsAccumulator / 0.032; + // var renderPos = Util.lerpThreeVectors(this.oldPos, this.newPos, deltaT); + // this.setPosition(renderPos.x, renderPos.y, renderPos.z); + + // var rot = this.getRotationQuat(); + // var quat = new Quat(); + // quat.initRotation(omega.x * timeState.dt, omega.y * timeState.dt, omega.z * timeState.dt); + // quat.multiply(quat, rot); + // this.setRotationQuat(quat); + + // var adt = timeState.clone(); + // adt.dt = physicsAccumulator; + // for (pi in pathedInteriors) { + // pi.update(adt); + // } + // } + if (!this.level.isWatching) { if (this.level.isRecording) { this.level.replay.recordMarbleState(this.getAbsPos().getPosition(), this.velocity, this.getRotationQuat(), this.omega); @@ -1665,7 +2456,7 @@ class Marble extends GameObject { this.camera.update(timeState.currentAttemptTime, timeState.dt); } - updatePowerupStates(timeState.currentAttemptTime, timeState.dt); + updatePowerupStates(timeState); if (this._radius != 0.6666 && timeState.currentAttemptTime - this.megaMarbleEnableTime < 10) { this._prevRadius = this._radius; @@ -1693,70 +2484,224 @@ class Marble extends GameObject { // this.camera.target.load(this.getAbsPos().getPosition().toPoint()); } - public function updatePowerupStates(currentTime:Float, dt:Float) { - if (currentTime - this.shockAbsorberEnableTime < 5) { - this.shockabsorberSound.pause = false; - } else { - this.shockabsorberSound.pause = true; - } - if (currentTime - this.superBounceEnableTime < 5) { - this.superbounceSound.pause = false; - } else { - this.superbounceSound.pause = true; + public function updatePowerupStates(timeState:TimeState) { + this.shadowVolume.setPosition(x, y, z); + this.shadowVolume.setScale(this._radius / 0.2); + if (this.level == null) + return; + var shockEnabled = isShockAbsorberEnabled(timeState); + var bounceEnabled = isSuperBounceEnabled(timeState); + var helicopterEnabled = isHelicopterEnabled(timeState); + var megaEnabled = isMegaMarbleEnabled(timeState); + var selfMarble = level.marble == cast this; + if (selfMarble) { + if (shockEnabled) { + this.shockabsorberSound.pause = false; + } else { + this.shockabsorberSound.pause = true; + } + if (bounceEnabled) { + this.superbounceSound.pause = false; + } else { + this.superbounceSound.pause = true; + } } - if (currentTime - this.shockAbsorberEnableTime < 5) { - this.forcefield.setPosition(0, 0, 0); - } else if (currentTime - this.superBounceEnableTime < 5) { + if (shockEnabled || bounceEnabled) { this.forcefield.setPosition(0, 0, 0); } else { this.forcefield.x = 1e8; this.forcefield.y = 1e8; this.forcefield.z = 1e8; } - if (currentTime - this.helicopterEnableTime < 5) { - this.helicopter.setPosition(x, y, z); - this.helicopter.setRotationQuat(this.level.getOrientationQuat(currentTime)); - this.helicopterSound.pause = false; - } else { + if (megaEnabled) { this.helicopter.setPosition(1e8, 1e8, 1e8); - this.helicopterSound.pause = true; + if (helicopterEnabled) { + this.megaHelicopter.setPosition(x, y, z); + this.megaHelicopter.setRotationQuat(this.level.getOrientationQuat(timeState.currentAttemptTime)); + if (selfMarble) + this.helicopterSound.pause = false; + } else { + this.megaHelicopter.setPosition(1e8, 1e8, 1e8); + if (selfMarble) + this.helicopterSound.pause = true; + } + } else { + this.megaHelicopter.setPosition(1e8, 1e8, 1e8); + if (helicopterEnabled) { + this.helicopter.setPosition(x, y, z); + this.helicopter.setRotationQuat(this.level.getOrientationQuat(timeState.currentAttemptTime)); + if (selfMarble) + this.helicopterSound.pause = false; + } else { + this.helicopter.setPosition(1e8, 1e8, 1e8); + if (selfMarble) + this.helicopterSound.pause = true; + } } } - public function useBlast() { - if (this.level.blastAmount < 0.2 || this.level.game != "ultra") - return; - var impulse = this.level.currentUp.multiply(Math.max(Math.sqrt(this.level.blastAmount), this.level.blastAmount) * 10); - this.applyImpulse(impulse); - AudioManager.playSound(ResourceLoader.getResource('data/sound/blast.wav', ResourceLoader.getAudio, this.soundResources)); - this.level.particleManager.createEmitter(this.level.blastAmount > 1 ? blastMaxParticleOptions : blastParticleOptions, - this.level.blastAmount > 1 ? blastMaxEmitterData : blastEmitterData, this.getAbsPos().getPosition(), () -> { - this.getAbsPos().getPosition().add(this.level.currentUp.multiply(-this._radius * 0.4)); - }, - new Vector(1, 1, - 1).add(new Vector(Math.abs(this.level.currentUp.x), Math.abs(this.level.currentUp.y), Math.abs(this.level.currentUp.z)).multiply(-0.8))); - this.level.blastAmount = 0; + public function getMass() { + if (this.level == null) + return 1; + if (this.level.timeState.currentAttemptTime - this.megaMarbleEnableTime < 10 + || (Net.isHost && this.megaMarbleUseTick > 0 && (this.level.timeState.ticks - this.megaMarbleUseTick) < 312) + || (Net.isClient && this.megaMarbleUseTick > 0 && (this.serverTicks - this.megaMarbleUseTick) < 312)) { + return 4; + } else { + return 1; + } + } + + public function useBlast(timeState:TimeState) { + if (Net.isMP) { + if (this.blastTicks < 156) + return; + var blastAmt = this.blastTicks / (25000 >> 5); + var impulse = this.currentUp.multiply((blastAmt > 1.0 ? blastAmt : Math.sqrt(blastAmt)) * 10); + this.applyImpulse(impulse); + if (!isNetUpdate && this.controllable) + AudioManager.playSound(ResourceLoader.getResource('data/sound/blast.wav', ResourceLoader.getAudio, this.soundResources)); + if (!isNetUpdate) + this.level.particleManager.createEmitter(blastAmt > 1 ? blastMaxParticleOptions : blastParticleOptions, + blastAmt > 1 ? blastMaxEmitterData : blastEmitterData, this.getAbsPos().getPosition(), () -> { + this.getAbsPos().getPosition().add(this.currentUp.multiply(-this._radius * 0.4)); + }, + new Vector(1, 1, 1).add(new Vector(Math.abs(this.currentUp.x), Math.abs(this.currentUp.y), Math.abs(this.currentUp.z)).multiply(-0.8))); + this.blastTicks = 0; + // Now send the impulse to other marbles + if (!Net.connectedServerInfo.competitiveMode || blastAmt > 1) { // Competitor mode only allows ultra blasts + var strength = blastAmt * (blastAmt > 1 ? blastRechargeShockwaveStrength : blastShockwaveStrength); + var ourPos = this.collider.transform.getPosition(); + for (marble in level.marbles) { + if (marble != cast this) { + var theirPos = marble.collider.transform.getPosition(); + var posDiff = ourPos.distance(theirPos); + if (posDiff < 5) { + var myMod = isMegaMarbleEnabled(timeState) ? 0.7 : 1.0; + var theirMod = @:privateAccess marble.isMegaMarbleEnabled(timeState) ? 0.7 : 1.0; + var impulse = theirPos.sub(ourPos).normalized().multiply(strength * (theirMod / myMod)); + marble.applyImpulse(impulse); + } + } + } + } + if (Net.isHost) { + this.blastUseTick = timeState.ticks; + this.netFlags |= MarbleNetFlags.DoBlast; + if (blastAmt > 1) + this.netFlags |= MarbleNetFlags.DoUltraBlast; + } + } else { + if (this.blastAmount < 0.2 || this.level.game != "ultra") + return; + var impulse = this.currentUp.multiply((this.blastAmount > 1.0 ? this.blastAmount : Math.sqrt(this.blastAmount)) * 10); + this.applyImpulse(impulse); + AudioManager.playSound(ResourceLoader.getResource('data/sound/blast.wav', ResourceLoader.getAudio, this.soundResources)); + this.level.particleManager.createEmitter(this.blastAmount > 1 ? blastMaxParticleOptions : blastParticleOptions, + this.blastAmount > 1 ? blastMaxEmitterData : blastEmitterData, this.getAbsPos().getPosition(), () -> { + this.getAbsPos().getPosition().add(this.currentUp.multiply(-this._radius * 0.4)); + }, + new Vector(1, 1, 1).add(new Vector(Math.abs(this.currentUp.x), Math.abs(this.currentUp.y), Math.abs(this.currentUp.z)).multiply(-0.8))); + this.blastAmount = 0; + } } public function applyImpulse(impulse:Vector, contactImpulse:Bool = false) { this.appliedImpulses.push({impulse: impulse, contactImpulse: contactImpulse}); } - public function enableSuperBounce(time:Float) { - this.superBounceEnableTime = time; + public function enableSuperBounce(timeState:TimeState) { + if (this.level.isMultiplayer) { + this.superBounceUseTick = Net.isHost ? timeState.ticks : serverTicks; + if (!this.isNetUpdate) + this.netFlags |= MarbleNetFlags.DoSuperBounce; + } else + this.superBounceEnableTime = timeState.currentAttemptTime; } - public function enableShockAbsorber(time:Float) { - this.shockAbsorberEnableTime = time; + inline function isSuperBounceEnabled(timeState:TimeState) { + if (this.level == null) + return false; + if (!this.level.isMultiplayer) { + return timeState.currentAttemptTime - this.superBounceEnableTime < 5; + } else { + if (Net.isHost) { + return (superBounceUseTick > 0 && (this.level.timeState.ticks - superBounceUseTick) <= 156); + } else { + return (superBounceUseTick > 0 && (serverTicks - superBounceUseTick) <= 156); + } + } } - public function enableHelicopter(time:Float) { - this.helicopterEnableTime = time; + public function enableShockAbsorber(timeState:TimeState) { + if (this.level.isMultiplayer) { + this.shockAbsorberUseTick = Net.isHost ? timeState.ticks : serverTicks; + if (!this.isNetUpdate) + this.netFlags |= MarbleNetFlags.DoShockAbsorber; + } else + this.shockAbsorberEnableTime = timeState.currentAttemptTime; } - public function enableMegaMarble(time:Float) { - this.megaMarbleEnableTime = time; + inline function isShockAbsorberEnabled(timeState:TimeState) { + if (this.level == null) + return false; + if (!this.level.isMultiplayer) { + return timeState.currentAttemptTime - this.shockAbsorberEnableTime < 5; + } else { + if (Net.isHost) { + return (shockAbsorberUseTick > 0 && (this.level.timeState.ticks - shockAbsorberUseTick) <= 156); + } else { + return (shockAbsorberUseTick > 0 && (serverTicks - shockAbsorberUseTick) <= 156); + } + } + } + + public function enableHelicopter(timeState:TimeState) { + if (this.level.isMultiplayer) { + this.helicopterUseTick = Net.isHost ? timeState.ticks : serverTicks; + if (!this.isNetUpdate) + this.netFlags |= MarbleNetFlags.DoHelicopter; + } else + this.helicopterEnableTime = timeState.currentAttemptTime; + } + + inline function isHelicopterEnabled(timeState:TimeState) { + if (this.level == null) + return false; + if (!this.level.isMultiplayer) { + return timeState.currentAttemptTime - this.helicopterEnableTime < 5; + } else { + if (Net.isHost) { + return (helicopterUseTick > 0 && (this.level.timeState.ticks - helicopterUseTick) <= 156); + } else { + return (helicopterUseTick > 0 && (serverTicks - helicopterUseTick) <= 156); + } + } + } + + inline function isMegaMarbleEnabled(timeState:TimeState) { + var megaMarbleTicks = Net.isMP && Net.connectedServerInfo.competitiveMode ? 156 : 312; + if (this.level == null) + return false; + if (!this.level.isMultiplayer) { + return timeState.currentAttemptTime - this.megaMarbleEnableTime < 10; + } else { + if (Net.isHost) { + return (megaMarbleUseTick > 0 && (this.level.timeState.ticks - megaMarbleUseTick) <= megaMarbleTicks); + } else { + return (megaMarbleUseTick > 0 && (serverTicks - megaMarbleUseTick) <= megaMarbleTicks); + } + } + } + + public function enableMegaMarble(timeState:TimeState) { + if (this.level.isMultiplayer) { + this.megaMarbleUseTick = Net.isHost ? timeState.ticks : serverTicks; + if (!this.isNetUpdate) + this.netFlags |= MarbleNetFlags.DoMega; + } else + this.megaMarbleEnableTime = timeState.currentAttemptTime; } function updateTeleporterState(time:TimeState) { @@ -1793,6 +2738,23 @@ class Marble extends GameObject { } } + public inline function setMode(mode:Mode) { + this.mode = mode; + } + + public function setMarblePosition(x:Float, y:Float, z:Float) { + this.collider.transform.setPosition(new Vector(x, y, z)); + this.setPosition(x, y, z); + } + + public inline function getConnectionId() { + if (this.connection == null) { + return Net.isHost ? 0 : Net.clientId; + } else { + return this.connection.id; + } + } + public override function reset() { this.velocity = new Vector(); this.collider.velocity = new Vector(); @@ -1801,10 +2763,16 @@ class Marble extends GameObject { this.shockAbsorberEnableTime = Math.NEGATIVE_INFINITY; this.helicopterEnableTime = Math.NEGATIVE_INFINITY; this.megaMarbleEnableTime = Math.NEGATIVE_INFINITY; + this.blastUseTick = 0; + this.blastTicks = 0; + this.helicopterUseTick = 0; + this.megaMarbleUseTick = 0; + this.netFlags = MarbleNetFlags.DoBlast | MarbleNetFlags.DoMega | MarbleNetFlags.DoHelicopter | MarbleNetFlags.DoShockAbsorber | MarbleNetFlags.DoSuperBounce | MarbleNetFlags.PickupPowerup | MarbleNetFlags.GravityChange | MarbleNetFlags.UsePowerup; this.lastContactNormal = new Vector(0, 0, 1); this.contactEntities = []; this.cloak = false; this._firstTick = true; + this.lastRespawnTick = -100000; if (this.teleporting) { var ourDts:DtsObject = cast this.children[0]; ourDts.setOpacity(1); @@ -1812,6 +2780,15 @@ class Marble extends GameObject { this.teleporting = false; this.teleportDisableTime = null; this.teleportEnableTime = null; + this.physicsAccumulator = 0; + this.prevRot = this.getRotationQuat().clone(); + this.oldPos = this.getAbsPos().getPosition(); + this.newPos = this.getAbsPos().getPosition(); + this.posStore = new Vector(); + this.netSmoothOffset = new Vector(); + this.lastRenderPos = new Vector(); + this.netCorrected = false; + this.serverUsePowerup = false; if (this._radius != this._prevRadius) { this._radius = this._prevRadius; this.collider.radius = this._radius; @@ -1821,6 +2798,16 @@ class Marble extends GameObject { } public override function dispose() { + if (this.rollSound != null) + this.rollSound.stop(); + if (this.rollMegaSound != null) + this.rollMegaSound.stop(); + if (this.slipSound != null) + this.slipSound.stop(); + if (this.helicopterSound != null) + this.helicopterSound.stop(); + this.shadowVolume.remove(); + this.helicopter.remove(); super.dispose(); removeChildren(); camera = null; diff --git a/src/MarbleGame.hx b/src/MarbleGame.hx index 90660d53..07ba56d2 100644 --- a/src/MarbleGame.hx +++ b/src/MarbleGame.hx @@ -1,5 +1,10 @@ package src; +import gui.JoinServerGui; +import gui.MPPreGameDlg; +import gui.MPExitGameDlg; +import gui.GuiControl; +import gui.MPPlayMissionGui; import gui.MainMenuGui; #if !js import gui.ReplayCenterGui; @@ -27,6 +32,9 @@ import src.Console; import src.Debug; import src.Gamepad; import src.Analytics; +import net.Net; +import net.MasterServerClient; +import net.NetCommands; @:publicFields class MarbleGame { @@ -34,6 +42,8 @@ class MarbleGame { static var instance:MarbleGame; + static var currentVersion = "1.6.0"; + var world:MarbleWorld; var scene2d:h2d.Scene; @@ -43,7 +53,7 @@ class MarbleGame { var toRecord:Bool = false; var recordingName:String; - var exitGameDlg:ExitGameDlg; + var exitGameDlg:GuiControl; var touchInput:TouchInput; @@ -67,8 +77,15 @@ class MarbleGame { js.Browser.document.addEventListener('pointerlockchange', () -> { if (!paused && world != null) { - if (world.finishTime == null && world._ready) { + if (world.finishTime == null && world._ready && @:privateAccess !world.playGui.isChatFocused()) { if (js.Browser.document.pointerLockElement != @:privateAccess Window.getInstance().canvas) { + if (MarbleGame.canvas.children[MarbleGame.canvas.children.length - 1] is MPPreGameDlg + || (Net.isMP + && paused + && !(MarbleGame.canvas.children[MarbleGame.canvas.children.length - 1] is MPExitGameDlg))) { + return; // don't pause + } + paused = true; handlePauseGame(); // Focus the shit again @@ -138,10 +155,21 @@ class MarbleGame { js.Browser.window.addEventListener('keydown', (e:js.html.KeyboardEvent) -> { var buttonCode = (e.keyCode); @:privateAccess Key.keyPressed[buttonCode] = Key.getFrame(); + if (world != null && @:privateAccess world.playGui.isChatFocused()) { + @:privateAccess Window.getInstance().onKeyDown(e); + } }); js.Browser.window.addEventListener('keyup', (e:js.html.KeyboardEvent) -> { var buttonCode = (e.keyCode); @:privateAccess Key.keyPressed[buttonCode] = -Key.getFrame(); + if (world != null && @:privateAccess world.playGui.isChatFocused()) { + @:privateAccess Window.getInstance().onKeyUp(e); + } + }); + js.Browser.window.addEventListener('keypress', (e:js.html.KeyboardEvent) -> { + if (world != null && @:privateAccess world.playGui.isChatFocused()) { + @:privateAccess Window.getInstance().onKeyPress(e); + } }); pointercontainer.addEventListener('touchstart', (e:js.html.TouchEvent) -> { @@ -181,6 +209,8 @@ class MarbleGame { } public function update(dt:Float) { + MasterServerClient.process(); + Net.checkPacketTimeout(dt); if (world != null) { if (world._disposed) { world = null; @@ -190,12 +220,16 @@ class MarbleGame { if (Util.isTouchDevice()) { touchInput.update(); } - if (!paused) { + if (!paused || world.isMultiplayer) { world.update(dt * Debug.timeScale); } if (((Key.isPressed(Key.ESCAPE) #if js && paused #end) || Gamepad.isPressed(["start"])) && world.finishTime == null && world._ready) { + if (MarbleGame.canvas.children[MarbleGame.canvas.children.length - 1] is MPPreGameDlg + || (Net.isMP && paused && !(MarbleGame.canvas.children[MarbleGame.canvas.children.length - 1] is MPExitGameDlg))) { + return; // don't pause + } paused = !paused; handlePauseGame(); } @@ -228,28 +262,47 @@ class MarbleGame { if (paused && world._ready) { Console.log("Game paused"); world.setCursorLock(false); - exitGameDlg = new ExitGameDlg((sender) -> { - canvas.popDialog(exitGameDlg); - var w = getWorld(); - if (w.isRecording) { - MarbleGame.canvas.pushDialog(new ReplayNameDlg(() -> { - quitMission(); - })); - } else { - quitMission(); - } - }, (sender) -> { - canvas.popDialog(exitGameDlg); - paused = !paused; - var w = getWorld(); - w.setCursorLock(true); - }, (sender) -> { - canvas.popDialog(exitGameDlg); - var w = getWorld(); - w.restart(true); - // world.setCursorLock(true); - paused = !paused; - }); + if (world.isMultiplayer) { + exitGameDlg = new MPExitGameDlg(() -> { + canvas.popDialog(exitGameDlg); + paused = !paused; + var w = getWorld(); + w.setCursorLock(true); + }, () -> { + canvas.popDialog(exitGameDlg); + quitMission(Net.isClient); + if (Net.isMP && Net.isClient) { + Net.disconnect(); + canvas.setContent(new JoinServerGui()); + } + }); + } else { + exitGameDlg = new ExitGameDlg((sender) -> { + canvas.popDialog(exitGameDlg); + var w = getWorld(); + if (w.isRecording) { + MarbleGame.canvas.pushDialog(new ReplayNameDlg(() -> { + quitMission(); + })); + } else { + quitMission(Net.isClient); + if (Net.isMP && Net.isClient) { + Net.disconnect(); + } + } + }, (sender) -> { + canvas.popDialog(exitGameDlg); + paused = !paused; + var w = getWorld(); + w.setCursorLock(true); + }, (sender) -> { + canvas.popDialog(exitGameDlg); + var w = getWorld(); + w.restart(w.marble, true); + // world.setCursorLock(true); + paused = !paused; + }); + } canvas.pushDialog(exitGameDlg); } else { if (world._ready) { @@ -266,8 +319,13 @@ class MarbleGame { return world; } - public function quitMission() { + public function quitMission(weDisconnecting:Bool = false) { Console.log("Quitting mission"); + if (Net.isMP) { + if (Net.isHost) { + NetCommands.endGame(); + } + } world.setCursorLock(false); if (!Settings.levelStatistics.exists(world.mission.path)) { Settings.levelStatistics.set(world.mission.path, { @@ -287,13 +345,18 @@ class MarbleGame { canvas.setContent(new MainMenuGui()); #end } else { - if (!world.mission.isClaMission && !world.mission.isCustom) { - PlayMissionGui.currentCategoryStatic = world.mission.type; + if (Net.isMP) { + var lobby = new MPPlayMissionGui(Net.isHost); + canvas.setContent(lobby); + } else { + if (!world.mission.isClaMission && !world.mission.isCustom) { + PlayMissionGui.currentCategoryStatic = world.mission.type; + } + var pmg = new PlayMissionGui(); + PlayMissionGui.currentSelectionStatic = world.mission.index; + PlayMissionGui.currentGameStatic = world.mission.game; + canvas.setContent(pmg); } - var pmg = new PlayMissionGui(); - PlayMissionGui.currentSelectionStatic = world.mission.index; - PlayMissionGui.currentGameStatic = world.mission.game; - canvas.setContent(pmg); } world.dispose(); world = null; @@ -301,13 +364,13 @@ class MarbleGame { Settings.save(); } - public function playMission(mission:Mission) { + public function playMission(mission:Mission, multiplayer:Bool = false) { canvas.clearContent(); if (world != null) { world.dispose(); } Analytics.trackLevelPlay(mission.title, mission.path); - world = new MarbleWorld(scene, scene2d, mission, toRecord); + world = new MarbleWorld(scene, scene2d, mission, toRecord, multiplayer); world.init(); } diff --git a/src/MarbleWorld.hx b/src/MarbleWorld.hx index 709ffce2..0e5b7c09 100644 --- a/src/MarbleWorld.hx +++ b/src/MarbleWorld.hx @@ -1,5 +1,37 @@ package src; +import net.TrapdoorPredictionStore; +import shapes.Explodable; +import net.ExplodablePredictionStore; +import gui.MPPreGameDlg; +import src.Radar; +import rewind.InputRecorder; +import net.NetPacket.ScoreboardPacket; +import net.NetPacket.PowerupPickupPacket; +import net.Move; +import net.NetPacket.GemSpawnPacket; +import net.BitStream.OutputBitStream; +import net.MasterServerClient; +import gui.MarbleSelectGui; +import gui.MPPlayMissionGui; +import collision.CollisionPool; +import net.GemPredictionStore; +import modes.HuntMode; +import net.NetPacket.MarbleNetFlags; +import net.PowerupPredictionStore; +import net.MarblePredictionStore; +import net.MarblePredictionStore.MarblePrediction; +import net.MarbleUpdateQueue; +import haxe.Exception; +import net.NetPacket.MarbleUpdatePacket; +import net.NetPacket.MarbleMovePacket; +import net.MoveManager; +import net.NetCommands; +import net.Net; +import net.ClientConnection; +import net.ClientConnection.GameConnection; +import modes.GameMode; +import modes.GameMode.GameModeFactory; import rewind.RewindManager; import Macros.MarbleWorldMacros; import shapes.PushButton; @@ -108,19 +140,22 @@ class MarbleWorld extends Scheduler { var playGui:PlayGui; var loadingGui:LoadingGui; + var radar:Radar; public var interiors:Array = []; public var pathedInteriors:Array = []; public var marbles:Array = []; public var dtsObjects:Array = []; + public var powerUps:Array = []; public var forceObjects:Array = []; + public var explodables:Array = []; + public var explodablesToTick:Array = []; + public var trapdoors:Array = []; + public var trapdoorsToTick:Array = []; public var triggers:Array = []; public var gems:Array = []; public var namedObjects:Map = []; - var shapeImmunity:Array = []; - var shapeOrTriggerInside:Array = []; - public var timeState:TimeState = new TimeState(); public var bonusTime:Float = 0; public var sky:Sky; @@ -129,6 +164,8 @@ class MarbleWorld extends Scheduler { var endPad:EndPad; var skyElement:MissionElementSky; + public var gameMode:GameMode; + // Lighting public var ambient:Vector; public var dirLight:Vector; @@ -140,16 +177,11 @@ class MarbleWorld extends Scheduler { public var game:String; public var marble:Marble; - public var worldOrientation:Quat; - public var currentUp = new Vector(0, 0, 1); - public var outOfBounds:Bool = false; - public var outOfBoundsTime:TimeState; public var finishTime:TimeState; public var finishPitch:Float; public var finishYaw:Float; public var totalGems:Int = 0; public var gemCount:Int = 0; - public var blastAmount:Float = 0; public var cursorLock:Bool = true; @@ -184,6 +216,29 @@ class MarbleWorld extends Scheduler { public var rewindManager:RewindManager; public var rewinding:Bool = false; + public var inputRecorder:InputRecorder; + public var isReplayingMovement:Bool = false; + public var currentInputMoves:Array; + + // Multiplayer + public var isMultiplayer:Bool = false; + + public var serverStartTicks:Int = 0; + public var startTime:Float = 1e8; + public var multiplayerStarted:Bool = false; + + var tickAccumulator:Float = 0.0; + var maxPredictionTicks:Int = 16; + + var clientMarbles:Map = []; + var predictions:MarblePredictionStore; + var powerupPredictions:PowerupPredictionStore; + var gemPredictions:GemPredictionStore; + var explodablePredictions:ExplodablePredictionStore; + var trapdoorPredictions:TrapdoorPredictionStore; + + public var lastMoves:MarbleUpdateQueue; + // Loading var resourceLoadFuncs:Array<(() -> Void)->Void> = []; @@ -191,30 +246,43 @@ class MarbleWorld extends Scheduler { public var _ready:Bool = false; + var _skipPreGame:Bool = false; + var _loadBegin:Bool = false; var _loaded:Bool = false; var _loadingLength:Int = 0; var _resourcesLoaded:Int = 0; - var _cubemapNeedsUpdate:Bool = true; var textureResources:Array> = []; var soundResources:Array> = []; var oobSchedule:Float; - var oobSchedule2:Float; + var _instancesNeedsUpdate:Bool = false; var lock:Bool = false; - public function new(scene:Scene, scene2d:h2d.Scene, mission:Mission, record:Bool = false) { + public function new(scene:Scene, scene2d:h2d.Scene, mission:Mission, record:Bool = false, multiplayer:Bool = false) { this.scene = scene; this.scene2d = scene2d; this.mission = mission; this.game = mission.game.toLowerCase(); this.replay = new Replay(mission.path, mission.isClaMission ? mission.id : 0); this.isRecording = record; - this.rewindManager = new RewindManager(this); + this.rewindManager = new RewindManager(cast this); + this.inputRecorder = new InputRecorder(cast this); + this.isMultiplayer = multiplayer; + if (this.isMultiplayer) { + isRecording = false; + isWatching = false; + lastMoves = new MarbleUpdateQueue(); + predictions = new MarblePredictionStore(); + powerupPredictions = new PowerupPredictionStore(); + gemPredictions = new GemPredictionStore(); + explodablePredictions = new ExplodablePredictionStore(cast this); + trapdoorPredictions = new TrapdoorPredictionStore(cast this); + } } public function init() { @@ -262,9 +330,16 @@ class MarbleWorld extends Scheduler { } }; this.mission.load(); + this.gameMode = GameModeFactory.getGameMode(cast this, mission.gameMode); scanMission(this.mission.root); + this.gameMode.missionScan(this.mission); this.resourceLoadFuncs.push(fwd -> this.initScene(fwd)); - this.resourceLoadFuncs.push(fwd -> this.initMarble(fwd)); + if (this.isMultiplayer) { + for (client in Net.clientIdMap) { + this.resourceLoadFuncs.push(fwd -> this.initMarble(client, fwd)); // Others + } + } + this.resourceLoadFuncs.push(fwd -> this.initMarble(null, fwd)); this.resourceLoadFuncs.push(fwd -> { this.addSimGroup(this.mission.root); this._loadingLength = resourceLoadFuncs.length; @@ -277,7 +352,10 @@ class MarbleWorld extends Scheduler { public function loadMusic(onFinish:Void->Void) { if (this.mission.missionInfo.music != null) { var musicFileName = 'sound/music/' + this.mission.missionInfo.music; - ResourceLoader.load(musicFileName).entry.load(onFinish); + if (ResourceLoader.exists(musicFileName)) + ResourceLoader.load(musicFileName).entry.load(onFinish); + else + onFinish(); } else { onFinish(); } @@ -287,12 +365,34 @@ class MarbleWorld extends Scheduler { // Add the sky at the last so that cubemap reflections work this.playGui.init(this.scene2d, this.mission.game.toLowerCase(), () -> { this.scene.addChild(this.sky); + + if (this.isMultiplayer) { + // Add us + if (Net.isHost) { + this.playGui.addPlayer(0, Settings.highscoreName.substr(0, 15), true); + } else { + this.playGui.addPlayer(Net.clientId, Settings.highscoreName.substr(0, 15), true); + } + for (client in Net.clientIdMap) { + this.playGui.addPlayer(client.id, client.name.substr(0, 15), false); + } + } + this._ready = true; var musicFileName = 'data/sound/music/' + this.mission.missionInfo.music; - AudioManager.playMusic(ResourceLoader.getResource(musicFileName, ResourceLoader.getAudio, this.soundResources), this.mission.missionInfo.music); + if (ResourceLoader.exists(musicFileName)) + AudioManager.playMusic(ResourceLoader.getResource(musicFileName, ResourceLoader.getAudio, this.soundResources), this.mission.missionInfo.music); + else + AudioManager.playShell(); MarbleGame.canvas.clearContent(); - this.endPad.generateCollider(); - this.playGui.formatGemCounter(this.gemCount, this.totalGems); + if (this.endPad != null) + this.endPad.generateCollider(); + if (this.isMultiplayer) { + this.playGui.formatGemHuntCounter(0); + this.playGui.formatCountdownTimer(0, 0); + } else { + this.playGui.formatGemCounter(this.gemCount, this.totalGems); + } Console.log("MISSION LOADED"); start(); }); @@ -304,9 +404,13 @@ class MarbleWorld extends Scheduler { this.playGui = new PlayGui(); this.instanceManager = new InstanceManager(scene); this.particleManager = new ParticleManager(cast this); + if (this.isMultiplayer || this.game == "ultra") { + this.radar = new Radar(cast this, this.scene2d); + radar.init(); + } var worker = new ResourceLoaderWorker(() -> { - var renderer = cast(this.scene.renderer, h3d.scene.fwd.Renderer); + var renderer = cast(this.scene.renderer, src.Renderer); for (element in mission.root.elements) { if (element._type != MissionElementType.Sun) @@ -332,13 +436,6 @@ class MarbleWorld extends Scheduler { this.ambient = ambientColor; // ls.perPixelLighting = false; - var shadow = scene.renderer.getPass(h3d.pass.DefaultShadowMap); - shadow.power = 0.5; - shadow.mode = Dynamic; - shadow.minDist = 0.1; - shadow.maxDist = 200; - shadow.bias = 0; - var sunlight = new DirLight(sunDirection, scene); sunlight.color = directionalColor; @@ -376,7 +473,7 @@ class MarbleWorld extends Scheduler { worker.run(); } - public function initMarble(onFinish:Void->Void) { + public function initMarble(client:GameConnection, onFinish:Void->Void) { Console.log("Initializing marble"); var worker = new ResourceLoaderWorker(onFinish); var marblefiles = [ @@ -414,45 +511,169 @@ class MarbleWorld extends Scheduler { "shapes/items/gemshine.png", "shapes/items/enviro1.jpg", ]; - if (this.game == "ultra") { + if (this.game == "ultra" || Net.isMP) { marblefiles.push("shapes/balls/pack1/marble20.normal.png"); marblefiles.push("shapes/balls/pack1/marble18.normal.png"); marblefiles.push("shapes/balls/pack1/marble01.normal.png"); marblefiles.push("sound/blast.wav"); } // Hacky - marblefiles.push(StringTools.replace(Settings.optionsSettings.marbleModel, "data/", "")); - if (Settings.optionsSettings.marbleCategoryIndex == 0) - marblefiles.push("shapes/balls/" + Settings.optionsSettings.marbleSkin + ".marble.png"); - else - marblefiles.push("shapes/balls/pack1/" + Settings.optionsSettings.marbleSkin + ".marble.png"); + if (client == null) { + marblefiles.push(StringTools.replace(Settings.optionsSettings.marbleModel, "data/", "")); + + if (Settings.optionsSettings.marbleCategoryIndex == 0) + marblefiles.push("shapes/balls/" + Settings.optionsSettings.marbleSkin + ".marble.png"); + else + marblefiles.push("shapes/balls/pack1/" + Settings.optionsSettings.marbleSkin + ".marble.png"); + } else { + var marbleDts = MarbleSelectGui.marbleData[client.getMarbleCatId()][client.getMarbleId()].dts; // FIXME + marblefiles.push(StringTools.replace(marbleDts, "data/", "")); + + var marbleSkin = MarbleSelectGui.marbleData[client.getMarbleCatId()][client.getMarbleId()].skin; + + if (client.getMarbleCatId() == 0) + marblefiles.push("shapes/balls/" + marbleSkin + ".marble.png"); + else + marblefiles.push("shapes/balls/pack1/" + marbleSkin + ".marble.png"); + } + + var gameModeFiles = this.gameMode.getPreloadFiles(); for (file in marblefiles) { worker.loadFile(file); } + for (file in gameModeFiles) { + worker.loadFile(file); + } worker.addTask(fwd -> { var marble = new Marble(); - marble.controllable = true; - this.addMarble(marble, fwd); + if (client == null) + marble.controllable = true; + this.addMarble(marble, client, fwd); }); worker.run(); } public function start() { Console.log("LEVEL START"); - restart(true); + restart(this.marble, true); + + this.collisionWorld.build(); + for (interior in this.interiors) interior.onLevelStart(); for (shape in this.dtsObjects) shape.onLevelStart(); + // if (this.isMultiplayer && Net.isClient) + // NetCommands.clientIsReady(Net.clientId); + if (this.isMultiplayer && Net.isHost) { + // NetCommands.clientIsReady(-1); + + // Sort all the marbles so that they are updated in a deterministic order + this.marbles.sort((a, b) -> @:privateAccess { + var aId = a.connection != null ? a.connection.id : 0; // Must be a host + var bId = b.connection != null ? b.connection.id : 0; // Must be a host + return (aId > bId) ? 1 : (aId < bId) ? -1 : 0; + }); + } + // var cc = 0; + // for (client in Net.clients) + // cc++; + // if (Net.isHost && cc == 0) { + // allClientsReady(); + // Net.serverInfo.state = "PLAYING"; + // MasterServerClient.instance.sendServerInfo(Net.serverInfo); // notify the server of the playing state + // } + if (this.isMultiplayer) { + // Push the pre - game + if (!_skipPreGame) { + showPreGame(); + } else { + _skipPreGame = false; + this.setCursorLock(true); + NetCommands.requestMidGameJoinState(Net.clientId); + } + } + this.gameMode.onMissionLoad(); } - public function restart(full:Bool = false) { + public function showPreGame() { + MarbleGame.canvas.pushDialog(new MPPreGameDlg()); + this.setCursorLock(false); + if (Util.isTouchDevice()) { + MarbleGame.instance.touchInput.setControlsEnabled(false); + } + this.marble.camera.startOverview(); + + // Hide all gems + for (gem in this.gems) { + gem.setHide(true); + gem.pickedUp = true; + gem.setHide(true); + this.collisionWorld.removeEntity(gem.boundingCollider); // remove from octree to make it easy + } + } + + public function addJoiningClient(cc:GameConnection, onAdded:() -> Void) { + this.initMarble(cc, () -> { + var addedMarble = clientMarbles.get(cc); + this.restart(addedMarble); // spawn it + this.playGui.addPlayer(cc.id, cc.getName(), false); + this.playGui.redrawPlayerList(); + + // Sort all the marbles so that they are updated in a deterministic order + this.marbles.sort((a, b) -> @:privateAccess { + var aId = a.getConnectionId(); + var bId = b.getConnectionId(); + return (aId > bId) ? 1 : (aId < bId) ? -1 : 0; + }); + onAdded(); + }); + } + + public function addJoiningClientGhost(cc:GameConnection, onAdded:() -> Void) { + this.initMarble(cc, () -> { + var addedMarble = clientMarbles.get(cc); + this.restart(addedMarble); // spawn it + this.playGui.addPlayer(cc.id, cc.getName(), false); + this.playGui.redrawPlayerList(); + + // Sort all the marbles so that they are updated in a deterministic order + this.marbles.sort((a, b) -> @:privateAccess { + var aId = a.getConnectionId(); + var bId = b.getConnectionId(); + return (aId > bId) ? 1 : (aId < bId) ? -1 : 0; + }); + onAdded(); + }); + } + + public function restartMultiplayerState() { + if (this.isMultiplayer) { + serverStartTicks = 0; + startTime = 1e8; + lastMoves = new MarbleUpdateQueue(); + predictions = new MarblePredictionStore(); + powerupPredictions.reset(); + gemPredictions.reset(); + explodablePredictions.reset(); + } + } + + public function restart(marble:Marble, full:Bool = false) { Console.log("LEVEL RESTART"); if (!full && this.currentCheckpoint != null) { this.loadCheckpointState(); return 0; // Load checkpoint } + if (!full) { + var respawnT = this.gameMode.getRespawnTransform(marble); + if (respawnT != null) { + respawn(marble, respawnT.position, respawnT.orientation, respawnT.up); + return 0; + } + } + if (!this.isWatching) { this.replay.clear(); } else @@ -460,12 +681,17 @@ class MarbleWorld extends Scheduler { this.rewindManager.clear(); + if (!this.isMultiplayer || _skipPreGame) { + setCursorLock(true); + } + this.timeState.currentAttemptTime = 0; - this.timeState.gameplayClock = 0; + this.timeState.gameplayClock = this.gameMode.getStartTime(); + this.timeState.ticks = 0; this.bonusTime = 0; - this.outOfBounds = false; - this.blastAmount = 0; - this.outOfBoundsTime = null; + this.marble.outOfBounds = false; + this.marble.blastAmount = 0; + this.marble.outOfBoundsTime = null; this.finishTime = null; if (this.alarmSound != null) { this.alarmSound.stop(); @@ -486,6 +712,9 @@ class MarbleWorld extends Scheduler { this.playGui.formatGemCounter(this.gemCount, this.totalGems); } + if (radar != null) + radar.reset(); + // Record/Playback trapdoor and landmine states if (full) { var tidx = 0; @@ -525,16 +754,15 @@ class MarbleWorld extends Scheduler { } } } + this.cancel(this.oobSchedule); + this.cancel(this.marble.oobSchedule); - var startquat = this.getStartPositionAndOrientation(); + var startquat = this.gameMode.getSpawnTransform(); - this.marble.setPosition(startquat.position.x, startquat.position.y, startquat.position.z + 3); - var oldtransform = this.marble.collider.transform.clone(); - oldtransform.setPosition(startquat.position); - this.marble.collider.setTransform(oldtransform); + this.marble.setMarblePosition(startquat.position.x, startquat.position.y, startquat.position.z); this.marble.reset(); - var euler = startquat.quat.toEuler(); + var euler = startquat.orientation.toEuler(); this.marble.camera.init(cast this); this.marble.camera.CameraYaw = euler.z + Math.PI / 2; this.marble.camera.CameraPitch = 0.45; @@ -543,9 +771,19 @@ class MarbleWorld extends Scheduler { this.marble.camera.oob = false; this.marble.camera.finish = false; this.marble.mode = Start; - this.marble.startPad = cast startquat.pad; sky.follow = marble.camera; + if (isMultiplayer) { + for (client => marble in clientMarbles) { + this.cancel(marble.oobSchedule); + var marbleStartQuat = this.gameMode.getSpawnTransform(); + marble.setMarblePosition(marbleStartQuat.position.x, marbleStartQuat.position.y, marbleStartQuat.position.z); + marble.reset(); + marble.setMode(Start); + } + this.playGui.resetPlayerScores(); + } + var missionInfo:MissionElementScriptObject = cast this.mission.root.elements.filter((element) -> element._type == MissionElementType.ScriptObject && element._name == "MissionInfo")[0]; if (missionInfo.starthelptext != null) @@ -556,81 +794,159 @@ class MarbleWorld extends Scheduler { for (interior in this.interiors) interior.reset(); - this.currentUp = new Vector(0, 0, 1); - this.orientationChangeTime = -1e8; - this.oldOrientationQuat = new Quat(); - this.newOrientationQuat = new Quat(); - this.deselectPowerUp(); + this.setUp(this.marble, startquat.up, this.timeState, true); + this.deselectPowerUp(this.marble); - AudioManager.playSound(ResourceLoader.getResource('data/sound/spawn.wav', ResourceLoader.getAudio, this.soundResources)); + if (!this.isMultiplayer) + AudioManager.playSound(ResourceLoader.getResource('data/sound/spawn.wav', ResourceLoader.getAudio, this.soundResources)); Console.log("State Start"); this.clearSchedule(); - this.schedule(0.5, () -> { - // setCenterText('ready'); - Console.log("State Ready"); - AudioManager.playSound(ResourceLoader.getResource('data/sound/ready.wav', ResourceLoader.getAudio, this.soundResources)); - return 0; - }); - this.schedule(2, () -> { - // setCenterText('set'); - Console.log("State Set"); - AudioManager.playSound(ResourceLoader.getResource('data/sound/set.wav', ResourceLoader.getAudio, this.soundResources)); - return 0; - }); - this.schedule(3.5, () -> { - // setCenterText('go'); - Console.log("State Go"); - AudioManager.playSound(ResourceLoader.getResource('data/sound/go.wav', ResourceLoader.getAudio, this.soundResources)); - Console.log("State Play"); - return 0; - }); + + if (!this.isMultiplayer) + this.gameMode.onRestart(); + if (Net.isClient) { + this.gameMode.onClientRestart(); + } return 0; } - public function updateGameState() { - if (this.outOfBounds) - return; // We will update state manually - if (this.timeState.currentAttemptTime < 0.5 && this.finishTime == null) { + public function respawn(marble:Marble, respawnPos:Vector, respawnQuat:Quat, respawnUp:Vector) { + // Determine where to spawn the marble + marble.setMarblePosition(respawnPos.x, respawnPos.y, respawnPos.z); + marble.velocity.set(0, 0, 0); + marble.omega.set(0, 0, 0); + Console.log('Respawn:'); + Console.log('Marble Position: ${respawnPos.x} ${respawnPos.y} ${respawnPos.z}'); + Console.log('Marble Velocity: ${marble.velocity.x} ${marble.velocity.y} ${marble.velocity.z}'); + Console.log('Marble Angular: ${marble.omega.x} ${marble.omega.y} ${marble.omega.z}'); + // Set camera orientation + var euler = respawnQuat.toEuler(); + marble.camera.CameraYaw = euler.z + Math.PI / 2; + marble.camera.CameraPitch = 0.45; + marble.camera.nextCameraYaw = marble.camera.CameraYaw; + marble.camera.nextCameraPitch = marble.camera.CameraPitch; + marble.camera.oob = false; + if (isMultiplayer) { + marble.megaMarbleUseTick = 0; + marble.helicopterUseTick = 0; + marble.shockAbsorberUseTick = 0; + marble.superBounceUseTick = 0; + marble.collider.radius = marble._radius = 0.2; + @:privateAccess marble.netFlags |= MarbleNetFlags.DoHelicopter | MarbleNetFlags.DoMega | MarbleNetFlags.DoShockAbsorber | MarbleNetFlags.DoSuperBounce | MarbleNetFlags.GravityChange; + } else { + @:privateAccess marble.helicopterEnableTime = -1e8; + @:privateAccess marble.megaMarbleEnableTime = -1e8; + @:privateAccess marble.shockAbsorberEnableTime = -1e8; + @:privateAccess marble.superBounceEnableTime = -1e8; + } + if (this.isRecording) { + this.replay.recordCameraState(marble.camera.CameraYaw, marble.camera.CameraPitch); + this.replay.recordMarbleInput(0, 0); + this.replay.recordMarbleState(respawnPos, marble.velocity, marble.getRotationQuat(), marble.omega); + this.replay.recordMarbleStateFlags(false, false, true, false); + } + + this.setUp(marble, respawnUp, this.timeState, true); + + var store = marble.heldPowerup; + marble.heldPowerup = null; + haxe.Timer.delay(() -> { + if (marble.heldPowerup == null) + marble.heldPowerup = store; + }, 500); // This bs + + if (marble == this.marble) this.playGui.setCenterText('none'); - this.marble.mode = Start; - } - if ((this.timeState.currentAttemptTime >= 0.5) && (this.timeState.currentAttemptTime < 2) && this.finishTime == null) { - this.playGui.setCenterText('ready'); - this.marble.mode = Start; - } - if ((this.timeState.currentAttemptTime >= 2) && (this.timeState.currentAttemptTime < 3.5) && this.finishTime == null) { - this.playGui.setCenterText('set'); - this.marble.mode = Start; - } - if ((this.timeState.currentAttemptTime >= 3.5) && (this.timeState.currentAttemptTime < 5.5) && this.finishTime == null) { - this.playGui.setCenterText('go'); - this.marble.mode = Play; - } - if (this.timeState.currentAttemptTime >= 5.5 && this.finishTime == null) { - this.playGui.setCenterText('none'); - this.marble.mode = Play; - } + if (!this.isMultiplayer) + this.clearSchedule(); + marble.outOfBounds = false; + this.gameMode.onRespawn(marble); + if (marble == this.marble && @:privateAccess !marble.isNetUpdate) + AudioManager.playSound(ResourceLoader.getResource('data/sound/spawn.wav', ResourceLoader.getAudio, this.soundResources)); } - function getStartPositionAndOrientation() { - // The player is spawned at the last start pad in the mission file. - var startPad = this.dtsObjects.filter(x -> x is StartPad).pop(); - var position:Vector; - var quat:Quat = new Quat(); - if (startPad != null) { - // If there's a start pad, start there - position = startPad.getAbsPos().getPosition(); - quat = startPad.getRotationQuat().clone(); + public function allClientsReady() { + NetCommands.setStartTicks(this.timeState.ticks); + this.gameMode.onRestart(); + } + + public function updateGameState() { + if (this.marble.outOfBounds) + return; // We will update state manually + if (!this.isMultiplayer) { + if (this.timeState.currentAttemptTime < 0.5 && this.finishTime == null) { + this.playGui.setCenterText('none'); + this.marble.mode = Start; + } + if ((this.timeState.currentAttemptTime >= 0.5) && (this.timeState.currentAttemptTime < 2) && this.finishTime == null) { + this.playGui.setCenterText('ready'); + this.marble.mode = Start; + } + if ((this.timeState.currentAttemptTime >= 2) && (this.timeState.currentAttemptTime < 3.5) && this.finishTime == null) { + this.playGui.setCenterText('set'); + this.marble.mode = Start; + } + if ((this.timeState.currentAttemptTime >= 3.5) && (this.timeState.currentAttemptTime < 5.5) && this.finishTime == null) { + this.playGui.setCenterText('go'); + this.marble.mode = Play; + } + if (this.timeState.currentAttemptTime >= 5.5 && this.finishTime == null) { + this.playGui.setCenterText('none'); + this.marble.mode = Play; + } } else { - position = new Vector(0, 0, 300); + if (!this.multiplayerStarted && this.finishTime == null) { + if ((Net.isHost && (this.timeState.timeSinceLoad < startTime - 3.0)) // 3.5 == 109 ticks + || (Net.isClient && this.serverStartTicks != 0 && @:privateAccess this.marble.serverTicks < this.serverStartTicks + 16)) { + this.playGui.setCenterText('none'); + this.playGui.doStateChangeSound('none'); + } + if ((Net.isHost + && (this.timeState.timeSinceLoad > startTime - 3.0) + && (this.timeState.timeSinceLoad < startTime - 1.5)) // 3.5 == 109 ticks + || (Net.isClient + && this.serverStartTicks != 0 + && @:privateAccess this.marble.serverTicks > this.serverStartTicks + 16 + && @:privateAccess this.marble.serverTicks < this.serverStartTicks + 63)) { + this.playGui.setCenterText('ready'); + this.playGui.doStateChangeSound('ready'); + } + if ((Net.isHost + && (this.timeState.timeSinceLoad > startTime - 1.5) + && (this.timeState.timeSinceLoad < startTime)) // 3.5 == 109 ticks + || (Net.isClient + && this.serverStartTicks != 0 + && @:privateAccess this.marble.serverTicks > this.serverStartTicks + 63 + && @:privateAccess this.marble.serverTicks < this.serverStartTicks + 109)) { + this.playGui.setCenterText('set'); + this.playGui.doStateChangeSound('set'); + } + if ((Net.isHost && (this.timeState.timeSinceLoad >= startTime)) // 3.5 == 109 ticks + || (Net.isClient && this.serverStartTicks != 0 && @:privateAccess this.marble.serverTicks >= this.serverStartTicks + 109)) { + this.multiplayerStarted = true; + this.marble.setMode(Play); + for (client => marble in this.clientMarbles) + marble.setMode(Play); + + this.playGui.redrawPlayerList(); // Update spectators display + + this.playGui.setCenterText('go'); + this.playGui.doStateChangeSound('go'); + + var huntMode = cast(this.gameMode, HuntMode); + + huntMode.freeSpawns(); + } + } + if (this.multiplayerStarted) { + if ((Net.isHost && (this.timeState.timeSinceLoad > startTime + 2.0)) // 3.5 == 109 ticks + || (Net.isClient && this.serverStartTicks != 0 && @:privateAccess this.marble.serverTicks > this.serverStartTicks + 172)) { + this.playGui.setCenterText('none'); + } + } } - return { - position: position, - quat: quat, - pad: startPad - }; } public function addSimGroup(simGroup:MissionElementSimGroup) { @@ -899,9 +1215,30 @@ class MarbleWorld extends Scheduler { var worker = new ResourceLoaderWorker(() -> { obj.idInLevel = this.dtsObjects.length; // Set the id of the thing this.dtsObjects.push(obj); + if (obj is PowerUp) { + var pw:PowerUp = cast obj; + pw.netIndex = this.powerUps.length; + this.powerUps.push(cast obj); + if (Net.isClient) + powerupPredictions.alloc(); + } if (obj is ForceObject) { this.forceObjects.push(cast obj); } + if (obj is Explodable) { + var exp:Explodable = cast obj; + exp.netId = this.explodables.length; + this.explodables.push(exp); + if (Net.isClient) + explodablePredictions.alloc(); + } + if (obj is Trapdoor) { + var t:Trapdoor = cast obj; + t.netId = this.trapdoors.length; + this.trapdoors.push(t); + if (Net.isClient) + trapdoorPredictions.alloc(); + } obj.isTSStatic = isTsStatic; obj.init(cast this, () -> { obj.update(this.timeState); @@ -948,29 +1285,38 @@ class MarbleWorld extends Scheduler { }); } - public function addMarble(marble:Marble, onFinish:Void->Void) { - this.marbles.push(marble); + public function addMarble(marble:Marble, client:GameConnection, onFinish:Void->Void) { marble.level = cast this; if (marble.controllable) { - marble.init(cast this, () -> { + marble.init(cast this, client, () -> { + this.marbles.push(marble); this.scene.addChild(marble.camera); this.marble = marble; // Ugly hack // sky.follow = marble; sky.follow = marble.camera; this.collisionWorld.addMovingEntity(marble.collider); + this.collisionWorld.addMarbleEntity(marble.collider); this.scene.addChild(marble); onFinish(); }); } else { - this.collisionWorld.addMovingEntity(marble.collider); - this.scene.addChild(marble); + marble.init(cast this, client, () -> { + this.marbles.push(marble); + marble.collisionWorld = this.collisionWorld; + this.collisionWorld.addMovingEntity(marble.collider); + this.collisionWorld.addMarbleEntity(marble.collider); + this.scene.addChild(marble); + if (client != null) + clientMarbles.set(client, marble); + onFinish(); + }); } } public function performRestart() { this.respawnPressedTime = timeState.timeSinceLoad; - this.restart(); + this.restart(this.marble); if (!this.isWatching) { Settings.playStatistics.respawns++; @@ -986,17 +1332,444 @@ class MarbleWorld extends Scheduler { } } + // MP ONLY + public function completeRestart() { + for (id => client in Net.clientIdMap) { + client.state = LOBBY; + client.lobbyReady = false; + } + Net.hostReady = false; + Net.lobbyHostReady = false; + Net.lobbyClientReady = false; + + this.finishTime = null; + this.multiplayerStarted = false; + this.timeState.ticks = 0; + + for (marble in this.marbles) { + restart(marble, true); + } + + for (exp in explodables) { + exp.lastContactTick = -100000; + } + trapdoorPredictions.reset(); + for (t in trapdoors) { + t.lastContactTicks = -100000; + } + + showPreGame(); + + serverStartTicks = 0; + startTime = 1e8; + } + + public function partialRestart() { + this.finishTime = null; + this.multiplayerStarted = false; + this.timeState.ticks = 0; + + for (marble in this.marbles) { + restart(marble, true); + } + + setCursorLock(true); + + startTime = this.timeState.timeSinceLoad + 4; + + for (exp in explodables) { + exp.lastContactTick = -100000; + } + trapdoorPredictions.reset(); + for (t in trapdoors) { + t.lastContactTicks = -100000; + } + + if (Net.isHost) { + haxe.Timer.delay(() -> { + this.gameMode.onRestart(); + NetCommands.setStartTicks(this.timeState.ticks); + }, 500); + } + this.gameMode.onRestart(); + } + + public function getWorldStateForClientJoin() { + var packets = []; + // First, gem spawn packet + var bs = new OutputBitStream(); + bs.writeByte(GemSpawn); + var packet = new GemSpawnPacket(); + + var hunt = cast(this.gameMode, HuntMode); + if (@:privateAccess hunt.activeGemSpawnGroup != null) { + var activeGemIds = []; + for (gemId in @:privateAccess hunt.activeGemSpawnGroup) { + if (@:privateAccess hunt.gemSpawnPoints[gemId].gem != null && @:privateAccess !hunt.gemSpawnPoints[gemId].gem.pickedUp) { + activeGemIds.push(gemId); + } + } + packet.gemIds = activeGemIds; + packet.serialize(bs); + packets.push(bs.getBytes()); + } + + // Marble states + for (marb in this.marbles) { + var oldFlags = @:privateAccess marb.netFlags; + @:privateAccess marb.netFlags = MarbleNetFlags.DoBlast | MarbleNetFlags.DoMega | MarbleNetFlags.DoHelicopter | MarbleNetFlags.PickupPowerup | MarbleNetFlags.GravityChange | MarbleNetFlags.UsePowerup; + + var innerMove = @:privateAccess marb.lastMove; + if (innerMove == null) { + innerMove = new Move(); + innerMove.d = new Vector(0, 0); + } + var motionDir = @:privateAccess marb.moveMotionDir; + if (motionDir == null) { + motionDir = marb.getMarbleAxis()[1]; + } + + var move = new NetMove(innerMove, motionDir, timeState, timeState.ticks, 65535); + + packets.push(@:privateAccess marb.packUpdate(move, timeState)); + + @:privateAccess marb.netFlags = oldFlags; + } + + // Powerup states + for (powerup in this.powerUps) { + if (powerup.currentOpacity != 1.0) { // it must be picked up or something + if (@:privateAccess powerup.pickupClient != -1) { + var b = new OutputBitStream(); + b.writeByte(NetPacketType.PowerupPickup); + var pickupPacket = new PowerupPickupPacket(); + pickupPacket.clientId = @:privateAccess powerup.pickupClient; + pickupPacket.serverTicks = @:privateAccess powerup.pickupTicks; + pickupPacket.powerupItemId = powerup.netIndex; + pickupPacket.serialize(b); + packets.push(b.getBytes()); + } + } + } + + // Scoreboard! + var b = new OutputBitStream(); + b.writeByte(NetPacketType.ScoreBoardInfo); + var sbPacket = new ScoreboardPacket(); + for (player in @:privateAccess this.playGui.playerList) { + sbPacket.scoreBoard.set(player.id, player.score); + sbPacket.rBoard.set(player.id, player.r); + sbPacket.yBoard.set(player.id, player.y); + sbPacket.bBoard.set(player.id, player.b); + } + sbPacket.serialize(b); + packets.push(b.getBytes()); + + return packets; + } + + public function applyReceivedMoves() { + var needsPrediction = 0; + if (!lastMoves.ourMoveApplied) { + var ourMove = lastMoves.myMarbleUpdate; + if (ourMove != null) { + var ourMoveStruct = Net.clientConnection.acknowledgeMove(ourMove.move, timeState); + lastMoves.ourMoveApplied = true; + for (client => arr in lastMoves.otherMarbleUpdates) { + var lastMove = null; + while (arr.packets.length > 0) { + var p = arr.packets[0]; + if (p.serverTicks <= ourMove.serverTicks) { + lastMove = arr.packets.shift(); + } else { + break; + } + } + if (lastMove != null) { + // clientMarbles[Net.clientIdMap[client]].unpackUpdate(lastMove); + // needsPrediction |= 1 << client; + // arr.insert(0, lastMove); + var clientMarble = clientMarbles[Net.clientIdMap[client]]; + if (clientMarble != null) { + if (ourMove.serverTicks == lastMove.serverTicks) { + if (ourMoveStruct != null) { + var otherPred = predictions.retrieveState(clientMarble, ourMoveStruct.timeState.ticks); + if (otherPred != null) { + if (otherPred.getError(lastMove) > 0.01) { + // Debug.drawSphere(@:privateAccess clientMarbles[Net.clientIdMap[client]].newPos, 0.2, 0.5); + // trace('Prediction error: ${otherPred.getError(lastMove)}'); + // trace('Desync for tick ${ourMoveStruct.timeState.ticks}'); + clientMarble.unpackUpdate(lastMove); + needsPrediction |= 1 << client; + arr.packets.insert(0, lastMove); + predictions.clearStatesAfterTick(clientMarbles[Net.clientIdMap[client]], ourMoveStruct.timeState.ticks); + } + } else { + // Debug.drawSphere(@:privateAccess clientMarbles[Net.clientIdMap[client]].newPos, 0.2, 0.5); + // trace('Desync for tick ${ourMoveStruct.timeState.ticks}'); + clientMarble.unpackUpdate(lastMove); + needsPrediction |= 1 << client; + arr.packets.insert(0, lastMove); + predictions.clearStatesAfterTick(clientMarble, ourMoveStruct.timeState.ticks); + } + } else { + // Debug.drawSphere(@:privateAccess clientMarbles[Net.clientIdMap[client]].newPos, 0.2, 0.5); + // trace('Desync in General'); + clientMarble.unpackUpdate(lastMove); + needsPrediction |= 1 << client; + arr.packets.insert(0, lastMove); + // predictions.clearStatesAfterTick(clientMarbles[Net.clientIdMap[client]], ourMoveStruct.timeState.ticks); + } + } + } + } + } + // marble.unpackUpdate(ourMove); + // needsPrediction |= 1 << Net.clientId; + if (!Net.clientSpectate) { + if (ourMoveStruct != null) { + var ourPred = predictions.retrieveState(marble, ourMoveStruct.timeState.ticks); + if (ourPred != null) { + if (ourPred.getError(ourMove) > 0.01) { + // trace('Desync for tick ${ourMoveStruct.timeState.ticks}'); + marble.unpackUpdate(ourMove); + needsPrediction |= 1 << Net.clientId; + predictions.clearStatesAfterTick(marble, ourMoveStruct.timeState.ticks); + } + } else { + // trace('Desync for tick ${ourMoveStruct.timeState.ticks}'); + marble.unpackUpdate(ourMove); + needsPrediction |= 1 << Net.clientId; + predictions.clearStatesAfterTick(marble, ourMoveStruct.timeState.ticks); + } + } else { + // trace('Desync in General'); + marble.unpackUpdate(ourMove); + needsPrediction |= 1 << Net.clientId; + // predictions.clearStatesAfterTick(marble, ourMoveStruct.timeState.ticks); + } + } + } + } + return needsPrediction; + } + + public function applyClientPrediction(marbleNeedsPrediction:Int) { + // First acknowledge the marble's last move so we can get that over with + var ourLastMove = lastMoves.myMarbleUpdate; + if (ourLastMove == null || marbleNeedsPrediction == 0) + return -1; + var ackLag = @:privateAccess Net.clientConnection.getQueuedMovesLength(); + + var ourLastMoveTime = ourLastMove.serverTicks; + + var ourQueuedMoves = @:privateAccess Net.clientConnection.getQueuedMoves().copy(); + + var qm = ourQueuedMoves[0]; + var advanceTimeState = qm != null ? qm.timeState.clone() : timeState.clone(); + advanceTimeState.dt = 0.032; + advanceTimeState.ticks = ourLastMoveTime; + + // if (marbleNeedsPrediction & (1 << Net.clientId) > 0) { // Only for our clients pls + // if (qm != null) { + // var mvs = qm.powerupStates.copy(); + for (pw in powerUps) { + // var val = mvs.shift(); + // if (pw.lastPickUpTime != val) + // Console.log('Revert powerup pickup: ${pw.lastPickUpTime} -> ${val}'); + + if (pw.pickupClient != -1 && marbleNeedsPrediction & (1 << pw.pickupClient) > 0) + pw.lastPickUpTime = powerupPredictions.getState(pw.netIndex); + } + for (expT in explodablesToTick) { + var exp = explodables[expT]; + exp.revertContactTicks(explodablePredictions.getState(exp.netId)); + } + explodablesToTick = []; + for (tT in trapdoorsToTick) { + var t = trapdoors[tT]; + t.lastContactTicks = trapdoorPredictions.getState(t.netId); + t.update(advanceTimeState); + } + + var huntMode:HuntMode = cast this.gameMode; + if (@:privateAccess huntMode.activeGemSpawnGroup != null) { + for (activeGem in @:privateAccess huntMode.activeGemSpawnGroup) { + var g = @:privateAccess huntMode.gemSpawnPoints[activeGem].gem; + if (g != null && g.pickUpClient != -1 && marbleNeedsPrediction & (1 << g.pickUpClient) > 0) + huntMode.setGemHiddenStatus(activeGem, gemPredictions.getState(activeGem)); + } + } + // } + // } + + ackLag = ourQueuedMoves.length; + + // Tick the remaining moves (ours) + @:privateAccess this.marble.isNetUpdate = true; + var totalTicksToDo = ourQueuedMoves.length; + var endTick = ourLastMoveTime + totalTicksToDo; + var currentTick = ourLastMoveTime; + //- Std.int(ourLastMove.moveQueueSize - @:privateAccess Net.clientConnection.moveManager.ackRTT); // - Std.int((@:privateAccess Net.clientConnection.moveManager.ackRTT)) - offset; + + var marblesToTick = new Map(); + + for (client => arr in lastMoves.otherMarbleUpdates) { + if (marbleNeedsPrediction & (1 << client) > 0 && arr.packets.length > 0) { + var m = arr.packets[0]; + // if (m.serverTicks == ourLastMoveTime) { + var marbleToUpdate = clientMarbles[Net.clientIdMap[client]]; + if (@:privateAccess marbleToUpdate.newPos == null) + continue; + // Debug.drawSphere(@:privateAccess marbleToUpdate.newPos, marbleToUpdate._radius); + + // var distFromUs = @:privateAccess marbleToUpdate.newPos.distance(this.marble.newPos); + // if (distFromUs < 5) // { + m.calculationTicks = ourQueuedMoves.length; + @:privateAccess marbleToUpdate.posStore.load(marbleToUpdate.newPos); + @:privateAccess marbleToUpdate.netCorrected = true; + // } else { + // m.calculationTicks = Std.int(Math.max(1, ourQueuedMoves.length - (distFromUs - 5) / 3)); + // } + // - Std.int((@:privateAccess Net.clientConnection.moveManager.ackRTT - ourLastMove.moveQueueSize) / 2); + + marblesToTick.set(client, m); + arr.packets.shift(); + // } + } + } + + Debug.drawSphere(@:privateAccess this.marble.newPos, this.marble._radius); + // var syncTickStates = new Map(); + + @:privateAccess this.marble.posStore.load(this.marble.newPos); + @:privateAccess this.marble.netCorrected = true; + + // if ((marbleNeedsPrediction & (1 << Net.clientId) > 0)) { + for (pi in this.pathedInteriors) { + pi.rollbackToTick(currentTick); + } + // } + + for (move in ourQueuedMoves) { + var m = move.move; + Debug.drawSphere(@:privateAccess this.marble.newPos, this.marble._radius); + if (marbleNeedsPrediction & (1 << Net.clientId) > 0) { + @:privateAccess this.marble.moveMotionDir = move.motionDir; + @:privateAccess this.marble.advancePhysics(advanceTimeState, m, this.collisionWorld, this.pathedInteriors); + this.predictions.storeState(this.marble, move.timeState.ticks); + } + // var collidings = @:privateAccess this.marble.contactEntities.filter(x -> x is SphereCollisionEntity); + + for (client => m in marblesToTick) { + if (m.calculationTicks > 0) { + var marbleToUpdate = clientMarbles[Net.clientIdMap[client]]; + Debug.drawSphere(@:privateAccess marbleToUpdate.newPos, marbleToUpdate._radius); + + var mv = m.move.move; + @:privateAccess marbleToUpdate.isNetUpdate = true; + @:privateAccess marbleToUpdate.moveMotionDir = m.move.motionDir; + @:privateAccess marbleToUpdate.advancePhysics(advanceTimeState, mv, this.collisionWorld, this.pathedInteriors); + this.predictions.storeState(marbleToUpdate, move.timeState.ticks); + @:privateAccess marbleToUpdate.isNetUpdate = false; + m.calculationTicks--; + } + } + + advanceTimeState.currentAttemptTime += 0.032; + advanceTimeState.ticks++; + currentTick++; + + // if ((marbleNeedsPrediction & (1 << Net.clientId) > 0)) { + for (pi in this.pathedInteriors) { + pi.computeNextPathStep(0.032); + pi.advance(0.032); + } + + for (tT in trapdoorsToTick) { + var t = trapdoors[tT]; + t.update(advanceTimeState); + } + // } + } + + trapdoorsToTick = []; + + lastMoves.ourMoveApplied = true; + @:privateAccess this.marble.isNetUpdate = false; + return advanceTimeState.ticks; + + return -1; + } + + public function spawnHuntGemsClientSide(gemIds:Array, expireds:Array) { + if (this.isMultiplayer && Net.isClient) { + var huntMode:HuntMode = cast this.gameMode; + huntMode.setActiveSpawnSphere(gemIds, expireds); + // radar.blink(); + } + } + + public function removePlayer(cc:GameConnection) { + var otherMarble = this.clientMarbles[cc]; + if (otherMarble != null) { + cancel(otherMarble.oobSchedule); + this.predictions.removeMarbleFromPrediction(otherMarble); + this.scene.removeChild(otherMarble); + this.collisionWorld.removeMarbleEntity(otherMarble.collider); + this.collisionWorld.removeMovingEntity(otherMarble.collider); + this.playGui.removePlayer(cc.id); + this.clientMarbles.remove(cc); + otherMarble.dispose(); + this.marbles.remove(otherMarble); + } + } + + public function rollback(t:Float) { + var newT = timeState.currentAttemptTime - t; + var rewindFrame = rewindManager.getNextRewindFrame(timeState.currentAttemptTime - t); + rewindManager.applyFrame(rewindFrame); + this.isReplayingMovement = true; + this.currentInputMoves = this.inputRecorder.getMovesFrom(timeState.currentAttemptTime); + } + + public function advanceWorld(dt:Float) { + ProfilerUI.measure("updateTimer"); + this.updateTimer(dt); + this.tickSchedule(timeState.currentAttemptTime); + + this.updateGameState(); + ProfilerUI.measure("updateDTS"); + for (obj in dtsObjects) { + obj.update(timeState); + } + for (obj in triggers) { + obj.update(timeState); + } + + ProfilerUI.measure("updateMarbles"); + marble.update(timeState, collisionWorld, this.pathedInteriors); + for (client => marble in clientMarbles) { + marble.update(timeState, collisionWorld, this.pathedInteriors); + } + } + public function update(dt:Float) { if (!_ready) { return; } + // if (Key.isPressed(Key.T)) { + // rollback(0.4); + // } + var realDt = dt; if ((Key.isDown(Settings.controlsSettings.rewind) || MarbleGame.instance.touchInput.rewindButton.pressed || Gamepad.isDown(Settings.gamepadSettings.rewind)) && Settings.optionsSettings.rewindEnabled + && !this.isMultiplayer && !this.isWatching && this.finishTime == null) { this.rewinding = true; @@ -1004,6 +1777,7 @@ class MarbleWorld extends Scheduler { if ((Key.isReleased(Settings.controlsSettings.rewind) || !MarbleGame.instance.touchInput.rewindButton.pressed || Gamepad.isReleased(Settings.gamepadSettings.rewind)) + && !this.isMultiplayer && this.rewinding) { if (this.isRecording) { this.replay.spliceReplay(timeState.currentAttemptTime); @@ -1046,25 +1820,53 @@ class MarbleWorld extends Scheduler { if (dt < 0) return; - ProfilerUI.measure("updateTimer"); - this.updateTimer(dt); + if (this.isReplayingMovement) { + trace('Rollback start'); + while (this.currentInputMoves.length > 1) { + while (this.currentInputMoves[1].time <= timeState.currentAttemptTime) { + this.currentInputMoves = this.currentInputMoves.slice(1); + if (this.currentInputMoves.length == 1) + break; + } + if (this.currentInputMoves.length > 1) { + dt = this.currentInputMoves[1].time - this.currentInputMoves[0].time; + } - if ((Key.isPressed(Settings.controlsSettings.respawn) || Gamepad.isPressed(Settings.gamepadSettings.respawn)) - && this.finishTime == null) { - performRestart(); - return; + if (this.isReplayingMovement) { + if (this.timeState.currentAttemptTime != this.currentInputMoves[0].time) + trace("fucked"); + } + + if (this.currentInputMoves.length > 1) { + advanceWorld(dt); + trace('Position: ${@:privateAccess marble.newPos.sub(currentInputMoves[1].pos).length()}. Vel: ${marble.velocity.sub(currentInputMoves[1].velocity).length()}'); + } + } + this.isReplayingMovement = false; } - if ((Key.isDown(Settings.controlsSettings.respawn) - || MarbleGame.instance.touchInput.restartButton.pressed - || Gamepad.isDown(Settings.gamepadSettings.respawn)) - && !this.isWatching - && this.finishTime == null) { - if (timeState.timeSinceLoad - this.respawnPressedTime > 1.5) { - this.restart(true); - this.respawnPressedTime = Math.POSITIVE_INFINITY; + ProfilerUI.measure("updateTimer"); + this.updateTimer(dt); + this.gameMode.update(this.timeState); + + if (!this.isMultiplayer) { + if ((Key.isPressed(Settings.controlsSettings.respawn) || Gamepad.isPressed(Settings.gamepadSettings.respawn)) + && this.finishTime == null) { + performRestart(); return; } + + if ((Key.isDown(Settings.controlsSettings.respawn) + || MarbleGame.instance.touchInput.restartButton.pressed + || Gamepad.isDown(Settings.gamepadSettings.respawn)) + && !this.isWatching + && this.finishTime == null) { + if (timeState.timeSinceLoad - this.respawnPressedTime > 1.5) { + this.restart(this.marble, true); + this.respawnPressedTime = Math.POSITIVE_INFINITY; + return; + } + } } this.tickSchedule(timeState.currentAttemptTime); @@ -1074,19 +1876,19 @@ class MarbleWorld extends Scheduler { || Gamepad.isPressed(Settings.gamepadSettings.blast) && !this.isWatching && this.game == "ultra") { - this.marble.useBlast(); + this.marble.useBlast(timeState); if (this.isRecording) { this.replay.recordMarbleStateFlags(false, false, false, true); } } if (this.isWatching && this.replay.currentPlaybackFrame.marbleStateFlags.has(UsedBlast)) - this.marble.useBlast(); + this.marble.useBlast(timeState); // Replay gravity if (this.isWatching) { if (this.replay.currentPlaybackFrame.gravityChange) { - this.setUp(this.replay.currentPlaybackFrame.gravity, timeState, this.replay.currentPlaybackFrame.gravityInstant); + this.setUp(this.marble, this.replay.currentPlaybackFrame.gravity, timeState, this.replay.currentPlaybackFrame.gravityInstant); } if (this.replay.currentPlaybackFrame.powerupPickup != null) { this.pickUpPowerUpReplay(this.replay.currentPlaybackFrame.powerupPickup); @@ -1094,7 +1896,8 @@ class MarbleWorld extends Scheduler { } this.updateGameState(); - this.updateBlast(timeState); + if (!this.isMultiplayer) + this.updateBlast(this.marble, timeState); ProfilerUI.measure("updateDTS"); for (obj in dtsObjects) { obj.update(timeState); @@ -1102,16 +1905,107 @@ class MarbleWorld extends Scheduler { for (obj in triggers) { obj.update(timeState); } + + // if (!isReplayingMovement) { + // inputRecorder.recordInput(timeState.currentAttemptTime); + // } + ProfilerUI.measure("updateMarbles"); - for (marble in marbles) { - marble.update(timeState, collisionWorld, this.pathedInteriors); + if (this.isMultiplayer) { + tickAccumulator += timeState.dt; + while (tickAccumulator >= 0.032) { + // Apply the server side ticks + var lastPredTick = -1; + if (Net.isClient) { + var marbleNeedsTicking = applyReceivedMoves(); + // Catch up + lastPredTick = applyClientPrediction(marbleNeedsTicking); + } + + // Do the clientside prediction sim + var fixedDt = timeState.clone(); + fixedDt.dt = 0.032; + tickAccumulator -= 0.032; + var packets = []; + var otherMoves = []; + var myMove = null; + + if (serverStartTicks != 0) { + for (marble in marbles) { + var move = marble.updateServer(fixedDt, collisionWorld, pathedInteriors); + if (marble == this.marble) + myMove = move; + else + otherMoves.push(move); + } + + if (myMove != null && Net.isClient) { + this.predictions.storeState(marble, myMove.timeState.ticks); + for (client => marble in clientMarbles) { + this.predictions.storeState(marble, myMove.timeState.ticks); + } + } + + if (Net.isHost) { + packets.push(marble.packUpdate(myMove, fixedDt)); + for (othermarble in marbles) { + if (othermarble != this.marble) { + var mv = otherMoves.shift(); + packets.push(othermarble.packUpdate(mv, fixedDt)); + } + } + // for (client => othermarble in clientMarbles) { // Oh no! + // var mv = otherMoves.shift(); + // packets.push(marble.packUpdate(myMove, fixedDt)); + // packets.push(othermarble.packUpdate(mv, fixedDt)); + // } + var allRecv = true; + for (client => marble in clientMarbles) { // Oh no! + // var pktClone = packets.copy(); + // pktClone.sort((a, b) -> { + // return (a.c == client.id) ? 1 : (b.c == client.id) ? -1 : 0; + // }); + if (client.state != GAME) { + allRecv = false; + continue; // Only send if in game + } + marble.clearNetFlags(); + for (packet in packets) { + client.sendBytes(packet); + } + } + if (allRecv) + this.marble.clearNetFlags(); + } + } + for (pi in this.pathedInteriors) { + pi.computeNextPathStep(0.032); + pi.advance(0.032); + } + timeState.ticks++; + } + timeState.subframe = tickAccumulator / 0.032; + marble.updateClient(timeState, this.pathedInteriors); + for (client => marble in clientMarbles) { + marble.updateClient(timeState, this.pathedInteriors); + } + if (Net.clientSpectate || Net.hostSpectate) { + // this.camera.startCenterCamera(); + marble.camera.update(timeState.currentAttemptTime, timeState.dt); + } + } else { + for (marble in marbles) { + marble.update(timeState, collisionWorld, this.pathedInteriors); + } } if (this.rewinding) { // Update camera separately marble.camera.update(timeState.currentAttemptTime, realDt); } - ProfilerUI.measure("updateInstances"); - this.instanceManager.render(); + + if (radar != null) + radar.update(dt); + ProfilerUI.measure("updateParticles"); if (this.rewinding) { this.particleManager.update(1000 * timeState.timeSinceLoad, -realDt * rewindManager.timeScale); @@ -1122,12 +2016,14 @@ class MarbleWorld extends Scheduler { ProfilerUI.measure("updateAudio"); AudioManager.update(this.scene); - if (this.outOfBounds - && this.finishTime == null - && (Key.isDown(Settings.controlsSettings.powerup) || Gamepad.isDown(Settings.gamepadSettings.powerup)) - && !this.isWatching) { - this.restart(); - return; + if (!this.isMultiplayer) { + if (this.marble.outOfBounds + && this.finishTime == null + && (Key.isDown(Settings.controlsSettings.powerup) || Gamepad.isDown(Settings.gamepadSettings.powerup)) + && !this.isWatching) { + this.restart(this.marble); + return; + } } if (!this.isWatching) { @@ -1136,10 +2032,14 @@ class MarbleWorld extends Scheduler { } } - if (!this.rewinding && Settings.optionsSettings.rewindEnabled) + if (!this.rewinding && Settings.optionsSettings.rewindEnabled && !this.isMultiplayer) this.rewindManager.recordFrame(); - _cubemapNeedsUpdate = true; + // if (!this.isReplayingMovement) { + // inputRecorder.recordMarble(); + // } + + _instancesNeedsUpdate = true; this.updateTexts(); } @@ -1149,11 +2049,16 @@ class MarbleWorld extends Scheduler { asyncLoadResources(); if (this.playGui != null && _ready) this.playGui.render(e); - if (this.marble != null && this.marble.cubemapRenderer != null && _cubemapNeedsUpdate) { - _cubemapNeedsUpdate = false; + if (this.marble != null && this.marble.cubemapRenderer != null && _instancesNeedsUpdate) { this.marble.cubemapRenderer.position.load(this.marble.getAbsPos().getPosition()); this.marble.cubemapRenderer.render(e, 0.002); } + if (_instancesNeedsUpdate) { + if (this.radar != null) + this.radar.render(this.serverStartTicks != 0 || !Net.isMP); + _instancesNeedsUpdate = false; + this.instanceManager.render(); + } } var postInited = false; @@ -1163,22 +2068,66 @@ class MarbleWorld extends Scheduler { if (lock) return; - var func = this.resourceLoadFuncs.shift(); - lock = true; #if hl - func(() -> { - lock = false; - this._resourcesLoaded++; - this.loadingGui.setProgress((1 - resourceLoadFuncs.length / _loadingLength)); - }); + var loadPerTick = Math.max(1, this.resourceLoadFuncs.length / 20); + var loadedFuncs = 0; + while (this.resourceLoadFuncs.length != 0) { + var func = this.resourceLoadFuncs.shift(); + lock = true; + func(() -> { + lock = false; + this.loadingGui.setProgress((1 - resourceLoadFuncs.length / _loadingLength)); + this._resourcesLoaded++; + }); + loadedFuncs += 1; + if (loadedFuncs >= loadPerTick) + break; + } #end + #if js - func(() -> { - lock = false; - this.loadingGui.setProgress((1 - resourceLoadFuncs.length / _loadingLength)); + lock = true; + + var loadPerTick = 100; // Stack limits??? + var loadedFuncs = 0; + var func = this.resourceLoadFuncs.shift(); + + var consumeFn; + consumeFn = () -> { + if (loadedFuncs >= loadPerTick) { + lock = false; + return; + } + loadedFuncs += 1; this._resourcesLoaded++; - }); + this.loadingGui.setProgress((1 - resourceLoadFuncs.length / _loadingLength)); + if (this.resourceLoadFuncs.length != 0) { + var fn = this.resourceLoadFuncs.shift(); + fn(consumeFn); + } else { + lock = false; + } + } + + func(consumeFn); #end + + // var func = this.resourceLoadFuncs.shift(); + // lock = true; + // #if hl + // func(() -> { + // lock = false; + // this._resourcesLoaded++; + // this.loadingGui.setProgress((1 - resourceLoadFuncs.length / _loadingLength)); + // }); + // #end + // #if js + // func(() -> { + // lock = false; + // this.loadingGui.setProgress((1 - resourceLoadFuncs.length / _loadingLength)); + // this._resourcesLoaded++; + // }); + // #end } else { if (!this._loadBegin || lock) return; @@ -1193,22 +2142,37 @@ class MarbleWorld extends Scheduler { function determineClockColor(timeToDisplay:Float) { if (this.finishTime != null) return 1; - if (this.timeState.currentAttemptTime < 3.5 || this.bonusTime > 0) - return 1; - if (timeToDisplay >= this.mission.qualifyTime) - return 2; + if (this.isMultiplayer) { + if (!this.multiplayerStarted) + return 1; - if (this.timeState.currentAttemptTime >= 3.5) { // Create the flashing effect var alarmStart = this.mission.computeAlarmStartTime(); var elapsed = timeToDisplay - alarmStart; - if (elapsed < 0) + if (alarmStart < timeToDisplay) return 0; if (Math.floor(elapsed) % 2 == 0) return 2; - } - return 0; // Default yellow + return 0; + } else { + if (this.timeState.currentAttemptTime < 3.5 || this.bonusTime > 0) + return 1; + if (timeToDisplay >= this.mission.qualifyTime) + return 2; + + if (this.timeState.currentAttemptTime >= 3.5 && !Net.isMP) { + // Create the flashing effect + var alarmStart = this.mission.computeAlarmStartTime(); + var elapsed = timeToDisplay - alarmStart; + if (elapsed < 0) + return 0; + if (Math.floor(elapsed) % 2 == 0) + return 2; + } + + return 0; // Default yellow + } } public function updateTimer(dt:Float) { @@ -1216,11 +2180,13 @@ class MarbleWorld extends Scheduler { var prevGameplayClock = this.timeState.gameplayClock; + var timeMultiplier = this.gameMode.timeMultiplier(); + if (!this.isWatching) { if (this.bonusTime != 0 && this.timeState.currentAttemptTime >= 3.5) { this.bonusTime -= dt; if (this.bonusTime < 0) { - this.timeState.gameplayClock -= this.bonusTime; + this.timeState.gameplayClock -= this.bonusTime * timeMultiplier; this.bonusTime = 0; } if (timeTravelSound == null) { @@ -1237,10 +2203,34 @@ class MarbleWorld extends Scheduler { if (alarmSound != null) alarmSound.pause = false; } - if (this.timeState.currentAttemptTime >= 3.5) { - this.timeState.gameplayClock += dt; - } else if (this.timeState.currentAttemptTime + dt >= 3.5) { - this.timeState.gameplayClock += (this.timeState.currentAttemptTime + dt) - 3.5; + if (!this.isMultiplayer) { + if (this.timeState.currentAttemptTime >= 3.5) { + this.timeState.gameplayClock += dt * timeMultiplier; + } else if (this.timeState.currentAttemptTime + dt >= 3.5) { + this.timeState.gameplayClock += ((this.timeState.currentAttemptTime + dt) - 3.5) * timeMultiplier; + } + } else if (this.multiplayerStarted) { + if (Net.isClient) { + var ticksSinceTimerStart = @:privateAccess this.marble.serverTicks - (this.serverStartTicks + 109); + var ourStartTime = this.gameMode.getStartTime(); + var gameplayHigh = ourStartTime - ticksSinceTimerStart * 0.032; + var gameplayLow = ourStartTime - (ticksSinceTimerStart + 1) * 0.032; + // Clamp timer to be between these two + + if (gameplayHigh < this.timeState.gameplayClock || gameplayLow > this.timeState.gameplayClock) { + var clockTicks = Math.floor((ourStartTime - this.timeState.gameplayClock) / 0.032); + var clockTickTime = ourStartTime - clockTicks * 0.032; + var delta = clockTickTime - this.timeState.gameplayClock; + this.timeState.gameplayClock = Math.max(0, gameplayHigh - delta); + } + } + + this.timeState.gameplayClock += dt * timeMultiplier; + this.timeState.gameplayClock = Math.max(0, this.timeState.gameplayClock); + } + if (this.timeState.gameplayClock <= 0 && !Net.isClient) { + this.gameMode.onTimeExpire(); + this.timeState.gameplayClock = 0; } } this.timeState.currentAttemptTime += dt; @@ -1263,26 +2253,48 @@ class MarbleWorld extends Scheduler { this.timeState.timeSinceLoad += dt; // Handle alarm warnings (that the user is about to exceed the par time) - if (this.timeState.currentAttemptTime >= 3.5) { - var alarmStart = this.mission.computeAlarmStartTime(); + if (!Net.isMP) { + if (this.timeState.currentAttemptTime >= 3.5) { + var alarmStart = this.mission.computeAlarmStartTime(); - if (prevGameplayClock < alarmStart && this.timeState.gameplayClock >= alarmStart) { - // Start the alarm - this.alarmSound = AudioManager.playSound(ResourceLoader.getResource("data/sound/alarm.wav", ResourceLoader.getAudio, this.soundResources), - null, true); // AudioManager.createAudioSource('alarm.wav'); - this.displayHelp('You have ${(this.mission.qualifyTime - alarmStart)} seconds remaining.'); - } - if (prevGameplayClock < this.mission.qualifyTime && this.timeState.gameplayClock >= this.mission.qualifyTime) { - // Stop the alarm - if (this.alarmSound != null) { - this.alarmSound.stop(); - this.alarmSound = null; + if (prevGameplayClock < alarmStart && this.timeState.gameplayClock >= alarmStart) { + // Start the alarm + this.alarmSound = AudioManager.playSound(ResourceLoader.getResource("data/sound/alarm.wav", ResourceLoader.getAudio, this.soundResources), + null, true); // AudioManager.createAudioSource('alarm.wav'); + this.displayHelp('You have ${(this.mission.qualifyTime - alarmStart)} seconds remaining.'); + } + if (prevGameplayClock < this.mission.qualifyTime && this.timeState.gameplayClock >= this.mission.qualifyTime) { + // Stop the alarm + if (this.alarmSound != null) { + this.alarmSound.stop(); + this.alarmSound = null; + } + this.displayHelp("The clock has passed the Par Time."); + AudioManager.playSound(ResourceLoader.getResource("data/sound/alarm_timeout.wav", ResourceLoader.getAudio, this.soundResources)); + } + } + } else { + if (this.multiplayerStarted) { + var alarmStart = this.mission.computeAlarmStartTime(); + + if (prevGameplayClock > alarmStart && this.timeState.gameplayClock <= alarmStart) { + // Start the alarm + if (this.alarmSound == null) { + this.alarmSound = AudioManager.playSound(ResourceLoader.getResource("data/sound/alarm.wav", ResourceLoader.getAudio, + this.soundResources), null, + true); // AudioManager.createAudioSource('alarm.wav'); + this.displayHelp('You have ${alarmStart} seconds remaining.'); + } + } + if (prevGameplayClock > 0 && this.timeState.gameplayClock <= 0) { + // Stop the alarm + if (this.alarmSound != null) { + this.alarmSound.stop(); + this.alarmSound = null; + } } - this.displayHelp("The clock has passed the Par Time."); - AudioManager.playSound(ResourceLoader.getResource("data/sound/alarm_timeout.wav", ResourceLoader.getAudio, this.soundResources)); } } - if (finishTime != null) this.timeState.gameplayClock = finishTime.gameplayClock; playGui.formatTimer(this.timeState.gameplayClock, determineClockColor(this.timeState.gameplayClock)); @@ -1291,12 +2303,16 @@ class MarbleWorld extends Scheduler { this.replay.recordTimeState(timeState.currentAttemptTime, timeState.gameplayClock, this.bonusTime); } - function updateBlast(timestate:TimeState) { - if (this.game == "ultra") { - if (this.blastAmount < 1) { - this.blastAmount = Util.clamp(this.blastAmount + (timeState.dt / 25), 0, 1); + public function updateBlast(marble:Marble, timestate:TimeState) { + if (Net.isMP) { + if (this.marble == marble) { + this.playGui.setBlastValue(marble.blastTicks / (25000 >> 5)); } - this.playGui.setBlastValue(this.blastAmount); + } else if (this.game == "ultra") { + if (marble.blastAmount < 1) { + marble.blastAmount = Util.clamp(marble.blastAmount + (timeState.dt / 25), 0, 1); + } + this.playGui.setBlastValue(marble.blastAmount); } } @@ -1360,165 +2376,13 @@ class MarbleWorld extends Scheduler { this.helpTextTimeState = this.timeState.timeSinceLoad; } - public function pickUpGem(gem:Gem) { - this.gemCount++; - var string:String; - - // Show a notification (and play a sound) based on the gems remaining - if (this.gemCount == this.totalGems) { - string = "You have all the diamonds, head for the finish!"; - // if (!this.rewinding) - AudioManager.playSound(ResourceLoader.getResource('data/sound/gotallgems.wav', ResourceLoader.getAudio, this.soundResources)); - - // Some levels with this package end immediately upon collection of all gems - // if (this.mission.misFile.activatedPackages.includes('endWithTheGems')) { - // let - // completionOfImpact = this.physics.computeCompletionOfImpactWithBody(gem.bodies[0], 2); // Get the exact point of impact - // this.touchFinish(completionOfImpact); - // } - } else { - string = "You picked up a diamond. "; - - var remaining = this.totalGems - this.gemCount; - if (remaining == 1) { - string += "Only one diamond to go!"; - } else { - string += '${remaining} diamonds to go!'; - } - - // if (!this.rewinding) - AudioManager.playSound(ResourceLoader.getResource('data/sound/gotgem.wav', ResourceLoader.getAudio, this.soundResources)); - } - - displayAlert(string); - this.playGui.formatGemCounter(this.gemCount, this.totalGems); - } - - public function callCollisionHandlers(marble:Marble, timeState:TimeState, start:Vector, end:Vector) { - var expansion = marble._radius + 0.2; - var minP = new Vector(Math.min(start.x, end.x) - expansion, Math.min(start.y, end.y) - expansion, Math.min(start.z, end.z) - expansion); - var maxP = new Vector(Math.max(start.x, end.x) + expansion, Math.max(start.y, end.y) + expansion, Math.max(start.z, end.z) + expansion); - var box = Bounds.fromPoints(minP.toPoint(), maxP.toPoint()); - - // var marbleHitbox = new Bounds(); - // marbleHitbox.addSpherePos(0, 0, 0, marble._radius); - // marbleHitbox.transform(startQuat.toMatrix()); - // marbleHitbox.transform(endQuat.toMatrix()); - // marbleHitbox.offset(end.x, end.y, end.z); - - // spherebounds.addSpherePos(gjkCapsule.p2.x, gjkCapsule.p2.y, gjkCapsule.p2.z, gjkCapsule.radius); - var contacts = this.collisionWorld.boundingSearch(box); - // var contacts = marble.contactEntities; - var inside = []; - - for (contact in contacts) { - if (contact.go != marble) { - if (contact.go is DtsObject) { - var shape:DtsObject = cast contact.go; - - if (contact.boundingBox.collide(box)) { - shape.onMarbleInside(timeState); - if (!this.shapeOrTriggerInside.contains(contact.go)) { - this.shapeOrTriggerInside.push(contact.go); - shape.onMarbleEnter(timeState); - } - inside.push(contact.go); - } - } - if (contact.go is Trigger) { - var trigger:Trigger = cast contact.go; - var triggeraabb = trigger.collider.boundingBox; - - if (triggeraabb.collide(box)) { - trigger.onMarbleInside(timeState); - if (!this.shapeOrTriggerInside.contains(contact.go)) { - this.shapeOrTriggerInside.push(contact.go); - trigger.onMarbleEnter(timeState); - } - inside.push(contact.go); - } - } - } - } - - for (object in shapeOrTriggerInside) { - if (!inside.contains(object)) { - this.shapeOrTriggerInside.remove(object); - object.onMarbleLeave(timeState); - } - } - - if (this.finishTime == null) { - if (box.collide(this.endPad.finishBounds)) { - var padUp = this.endPad.getAbsPos().up(); - padUp = padUp.multiply(10); - - var checkBounds = box.clone(); - checkBounds.zMin -= 10; - checkBounds.zMax += 10; - var checkBoundsCenter = checkBounds.getCenter(); - var checkSphereRadius = checkBounds.getMax().sub(checkBoundsCenter).length(); - var checkSphere = new Bounds(); - checkSphere.addSpherePos(checkBoundsCenter.x, checkBoundsCenter.y, checkBoundsCenter.z, checkSphereRadius); - var endpadBB = this.collisionWorld.boundingSearch(checkSphere, false); - var found = false; - for (collider in endpadBB) { - if (collider.go == this.endPad) { - var chull = cast(collider, collision.CollisionEntity); - var chullinvT = @:privateAccess chull.invTransform.clone(); - chullinvT.clone(); - chullinvT.transpose(); - for (surface in chull.surfaces) { - var i = 0; - while (i < surface.indices.length) { - var surfaceN = surface.getNormal(surface.indices[i]).transformed3x3(chullinvT); - var v1 = surface.getPoint(surface.indices[i]).transformed(chull.transform); - var surfaceD = -surfaceN.dot(v1); - - if (surfaceN.dot(padUp.multiply(-10)) < 0) { - var dist = surfaceN.dot(checkBoundsCenter.toVector()) + surfaceD; - if (dist >= 0 && dist < 5) { - var intersectT = -(checkBoundsCenter.dot(surfaceN.toPoint()) + surfaceD) / (padUp.dot(surfaceN)); - var intersectP = checkBoundsCenter.add(padUp.multiply(intersectT).toPoint()).toVector(); - if (Collision.PointInTriangle(intersectP, v1, surface.getPoint(surface.indices[i + 1]).transformed(chull.transform), - surface.getPoint(surface.indices[i + 2]).transformed(chull.transform))) { - found = true; - break; - } - } - } - - i += 3; - } - - if (found) { - break; - } - } - if (found) { - break; - } - } - } - if (found) { - if (!endPad.inFinish) { - touchFinish(); - endPad.inFinish = true; - } - } else { - if (endPad.inFinish) - endPad.inFinish = false; - } - } else { - if (endPad.inFinish) - endPad.inFinish = false; - } - } + public function pickUpGem(marble:src.Marble, gem:Gem) { + this.gameMode.onGemPickup(marble, gem); } function touchFinish() { if (this.finishTime != null - || (this.outOfBounds && this.timeState.currentAttemptTime - this.outOfBoundsTime.currentAttemptTime >= 0.5)) + || (this.marble.outOfBounds && this.timeState.currentAttemptTime - this.marble.outOfBoundsTime.currentAttemptTime >= 0.5)) return; if (this.gemCount < this.totalGems) { @@ -1555,6 +2419,23 @@ class MarbleWorld extends Scheduler { } } + function mpFinish() { + // playGui.setGuiVisibility(false); + Console.log("State End"); + #if js + var pointercontainer = js.Browser.document.querySelector("#pointercontainer"); + pointercontainer.hidden = false; + #end + if (Util.isTouchDevice()) { + MarbleGame.instance.touchInput.setControlsEnabled(false); + } + this.setCursorLock(false); + if (Net.isHost) { + MarbleGame.instance.quitMission(); + } + return 0; + } + function showFinishScreen() { if (this.isWatching) return 0; @@ -1591,7 +2472,7 @@ class MarbleWorld extends Scheduler { }, (sender) -> { var restartGameCode = () -> { MarbleGame.canvas.popDialog(egg); - this.restart(true); + this.restart(this.marble, true); #if js pointercontainer.hidden = true; #end @@ -1638,26 +2519,33 @@ class MarbleWorld extends Scheduler { return true; } - public function pickUpPowerUp(powerUp:PowerUp) { + public function pickUpPowerUp(marble:Marble, powerUp:PowerUp) { if (powerUp == null) return false; - if (this.marble.heldPowerup != null) - if (this.marble.heldPowerup.identifier == powerUp.identifier) + if (marble.heldPowerup != null) + if (marble.heldPowerup.identifier == powerUp.identifier) return false; Console.log("PowerUp pickup: " + powerUp.identifier); - this.marble.heldPowerup = powerUp; - this.playGui.setPowerupImage(powerUp.identifier); - MarbleGame.instance.touchInput.powerupButton.setEnabled(true); - if (this.isRecording) { - this.replay.recordPowerupPickup(powerUp); + marble.heldPowerup = powerUp; + if (@:privateAccess !marble.isNetUpdate) + @:privateAccess marble.netFlags |= MarbleNetFlags.PickupPowerup; + if (this.marble == marble) { + this.playGui.setPowerupImage(powerUp.identifier); + MarbleGame.instance.touchInput.powerupButton.setEnabled(true); + if (this.isRecording) { + this.replay.recordPowerupPickup(powerUp); + } } return true; } - public function deselectPowerUp() { - this.marble.heldPowerup = null; - this.playGui.setPowerupImage(""); - MarbleGame.instance.touchInput.powerupButton.setEnabled(false); + public function deselectPowerUp(marble:Marble) { + marble.heldPowerup = null; + @:privateAccess marble.netFlags |= MarbleNetFlags.PickupPowerup; + if (this.marble == marble) { + this.playGui.setPowerupImage(""); + MarbleGame.instance.touchInput.powerupButton.setEnabled(false); + } } public function addBonusTime(t:Float) { @@ -1673,70 +2561,89 @@ class MarbleWorld extends Scheduler { /** Get the current interpolated orientation quaternion. */ public function getOrientationQuat(time:Float) { + if (this.oldOrientationQuat.lengthSq() == 0.0) { + this.oldOrientationQuat = new Quat(); + // this.oldOrientationQuat.init(this.marble.currentUp.toPoint()); + } + if (this.newOrientationQuat.lengthSq() == 0.0) { + this.newOrientationQuat = new Quat(); + // this.newOrientationQuat.initNormal(this.marble.currentUp.toPoint()); + } + if (time < this.orientationChangeTime) + return this.oldOrientationQuat; + if (time > this.orientationChangeTime + 0.3) + return this.newOrientationQuat; var completion = Util.clamp((time - this.orientationChangeTime) / 0.3, 0, 1); var q = this.oldOrientationQuat.clone(); q.slerp(q, this.newOrientationQuat, completion); return q; } - public function setUp(vec:Vector, timeState:TimeState, instant:Bool = false) { - this.currentUp = vec; - var currentQuat = this.getOrientationQuat(timeState.currentAttemptTime); - var oldUp = new Vector(0, 0, 1); - oldUp.transform(currentQuat.toMatrix()); + public function setUp(marble:Marble, vec:Vector, timeState:TimeState, instant:Bool = false) { + if (marble.currentUp == vec) + return; + if (isMultiplayer && Net.isHost) { + @:privateAccess marble.netFlags |= MarbleNetFlags.GravityChange; + } + marble.currentUp = vec; + if (marble == this.marble) { + var currentQuat = this.getOrientationQuat(timeState.currentAttemptTime); + var oldUp = new Vector(0, 0, 1); + oldUp.transform(currentQuat.toMatrix()); - function getRotQuat(v1:Vector, v2:Vector) { - function orthogonal(v:Vector) { - var x = Math.abs(v.x); - var y = Math.abs(v.y); - var z = Math.abs(v.z); - var other = x < y ? (x < z ? new Vector(1, 0, 0) : new Vector(0, 0, 1)) : (y < z ? new Vector(0, 1, 0) : new Vector(0, 0, 1)); - return v.cross(other); - } + function getRotQuat(v1:Vector, v2:Vector) { + function orthogonal(v:Vector) { + var x = Math.abs(v.x); + var y = Math.abs(v.y); + var z = Math.abs(v.z); + var other = x < y ? (x < z ? new Vector(1, 0, 0) : new Vector(0, 0, 1)) : (y < z ? new Vector(0, 1, 0) : new Vector(0, 0, 1)); + return v.cross(other); + } - var u = v1.normalized(); - var v = v2.normalized(); - if (u.dot(v) == -1) { + var u = v1.normalized(); + var v = v2.normalized(); + if (Math.abs(u.dot(v) + 1) < hxd.Math.EPSILON) { + var q = new Quat(); + var o = orthogonal(u).normalized(); + q.x = o.x; + q.y = o.y; + q.z = o.z; + q.w = 0; + return q; + } + var half = u.add(v).normalized(); var q = new Quat(); - var o = orthogonal(u).normalized(); - q.x = o.x; - q.y = o.y; - q.z = o.z; - q.w = 0; + q.w = u.dot(half); + var vr = u.cross(half); + q.x = vr.x; + q.y = vr.y; + q.z = vr.z; return q; } - var half = u.add(v).normalized(); - var q = new Quat(); - q.w = u.dot(half); - var vr = u.cross(half); - q.x = vr.x; - q.y = vr.y; - q.z = vr.z; - return q; + + var quatChange = getRotQuat(oldUp, vec); + // Instead of calculating the new quat from nothing, calculate it from the last one to guarantee the shortest possible rotation. + // quatChange.initMoveTo(oldUp, vec); + quatChange.multiply(quatChange, currentQuat); + + if (this.isRecording) { + this.replay.recordGravity(vec, instant); + } + + this.newOrientationQuat = quatChange; + this.oldOrientationQuat = currentQuat; + this.orientationChangeTime = instant ? -1e8 : timeState.currentAttemptTime; } - - var quatChange = getRotQuat(oldUp, vec); - // Instead of calculating the new quat from nothing, calculate it from the last one to guarantee the shortest possible rotation. - // quatChange.initMoveTo(oldUp, vec); - quatChange.multiply(quatChange, currentQuat); - - if (this.isRecording) { - this.replay.recordGravity(vec, instant); - } - - this.newOrientationQuat = quatChange; - this.oldOrientationQuat = currentQuat; - this.orientationChangeTime = instant ? -1e8 : timeState.currentAttemptTime; } - public function goOutOfBounds() { - if (this.outOfBounds || this.finishTime != null) + public function goOutOfBounds(marble:Marble) { + if (marble.outOfBounds || this.finishTime != null) return; // this.updateCamera(this.timeState); // Update the camera at the point of OOB-ing - this.outOfBounds = true; - this.outOfBoundsTime = this.timeState.clone(); - this.marble.camera.oob = true; - if (!this.isWatching) { + marble.outOfBounds = true; + marble.outOfBoundsTime = this.timeState.clone(); + marble.camera.oob = true; + if (!this.isWatching && !this.isMultiplayer) { Settings.playStatistics.oobs++; if (!Settings.levelStatistics.exists(mission.path)) { Settings.levelStatistics.set(mission.path, { @@ -1752,17 +2659,22 @@ class MarbleWorld extends Scheduler { } // sky.follow = null; // this.oobCameraPosition = camera.position.clone(); - playGui.setCenterText('outofbounds'); - AudioManager.playSound(ResourceLoader.getResource('data/sound/whoosh.wav', ResourceLoader.getAudio, this.soundResources)); - // if (this.replay.mode != = 'playback') - this.oobSchedule = this.schedule(this.timeState.currentAttemptTime + 2, () -> { - playGui.setCenterText('none'); - return null; - }); - this.oobSchedule2 = this.schedule(this.timeState.currentAttemptTime + 2.5, () -> { - this.restart(); - return null; - }); + if (marble == this.marble) { + playGui.setCenterText('outofbounds'); + if (@:privateAccess !this.marble.isNetUpdate) + AudioManager.playSound(ResourceLoader.getResource('data/sound/whoosh.wav', ResourceLoader.getAudio, this.soundResources)); + // if (this.replay.mode != = 'playback') + this.oobSchedule = this.schedule(this.timeState.currentAttemptTime + 2, () -> { + playGui.setCenterText('none'); + return null; + }); + } + if (!this.isMultiplayer || Net.isHost) { + marble.oobSchedule = this.schedule(this.timeState.currentAttemptTime + 2.5, () -> { + this.restart(marble); + return null; + }); + } } /** Sets a new active checkpoint. */ @@ -1780,13 +2692,13 @@ class MarbleWorld extends Scheduler { disableOob = trigger.disableOOB; } // (shape.srcElement as any) ?.disableOob || trigger?.element.disableOob; - if (disableOob && this.outOfBounds) + if (disableOob && this.marble.outOfBounds) return; // The checkpoint is configured to not work when the player is already OOB this.currentCheckpoint = shape; this.currentCheckpointTrigger = trigger; this.checkpointCollectedGems.clear(); - this.checkpointUp = this.currentUp.clone(); - this.cheeckpointBlast = this.blastAmount; + this.checkpointUp = this.marble.currentUp.clone(); + this.cheeckpointBlast = this.marble.blastAmount; // Remember all gems that were collected up to this point for (gem in this.gems) { if (gem.pickedUp) @@ -1823,7 +2735,7 @@ class MarbleWorld extends Scheduler { offset.x = -offset.x; } var mpos = this.currentCheckpoint.obj.getAbsPos().getPosition().add(offset); - this.marble.setPosition(mpos.x, mpos.y, mpos.z); + this.marble.setMarblePosition(mpos.x, mpos.y, mpos.z); marble.velocity.load(new Vector(0, 0, 0)); marble.omega.load(new Vector(0, 0, 0)); Console.log('Respawn:'); @@ -1841,7 +2753,7 @@ class MarbleWorld extends Scheduler { @:privateAccess this.marble.shockAbsorberEnableTime = -1e8; @:privateAccess this.marble.helicopterEnableTime = -1e8; @:privateAccess this.marble.megaMarbleEnableTime = -1e8; - this.blastAmount = this.cheeckpointBlast; + this.marble.blastAmount = this.cheeckpointBlast; if (this.isRecording) { this.replay.recordCameraState(this.marble.camera.CameraYaw, this.marble.camera.CameraPitch); this.replay.recordMarbleInput(0, 0); @@ -1861,10 +2773,10 @@ class MarbleWorld extends Scheduler { // In this case, we set the gravity to the relative "up" vector of the checkpoint shape. var up = new Vector(0, 0, 1); up.transform(this.currentCheckpoint.obj.getRotationQuat().toMatrix()); - this.setUp(up, this.timeState, true); + this.setUp(this.marble, up, this.timeState, true); } else { // Otherwise, we restore gravity to what was stored. - this.setUp(this.checkpointUp, this.timeState, true); + this.setUp(this.marble, this.checkpointUp, this.timeState, true); } // Restore gem states for (gem in this.gems) { @@ -1876,11 +2788,11 @@ class MarbleWorld extends Scheduler { this.playGui.formatGemCounter(this.gemCount, this.totalGems); this.playGui.setCenterText('none'); this.clearSchedule(); - this.outOfBounds = false; - this.deselectPowerUp(); // Always deselect first + this.marble.outOfBounds = false; + this.deselectPowerUp(this.marble); // Always deselect first // Wait a bit to select the powerup to prevent immediately using it incase the user skipped the OOB screen by clicking if (this.checkpointHeldPowerup != null) - this.schedule(this.timeState.currentAttemptTime + 0.5, () -> this.pickUpPowerUp(this.checkpointHeldPowerup)); + this.schedule(this.timeState.currentAttemptTime + 0.5, () -> this.pickUpPowerUp(this.marble, this.checkpointHeldPowerup)); AudioManager.playSound(ResourceLoader.getResource('data/sound/spawn.wav', ResourceLoader.getAudio, this.soundResources)); } @@ -1957,6 +2869,13 @@ class MarbleWorld extends Scheduler { this.playGui.dispose(); scene.removeChildren(); + if (radar != null) { + radar.dispose(); + radar = null; + } + + CollisionPool.freeMemory(); + for (interior in this.interiors) { interior.dispose(); } @@ -1973,6 +2892,9 @@ class MarbleWorld extends Scheduler { dtsObject.dispose(); } dtsObjects = null; + powerUps = null; + explodables = null; + trapdoors = null; for (trigger in this.triggers) { trigger.dispose(); } @@ -1989,12 +2911,11 @@ class MarbleWorld extends Scheduler { sky.dispose(); sky = null; instanceManager = null; - collisionWorld.dispose(); + if (collisionWorld != null) + collisionWorld.dispose(); collisionWorld = null; particleManager = null; namedObjects = null; - shapeOrTriggerInside = null; - shapeImmunity = null; currentCheckpoint = null; checkpointCollectedGems = null; marble = null; diff --git a/src/Marbleland.hx b/src/Marbleland.hx index 2dc238d9..d7df9414 100644 --- a/src/Marbleland.hx +++ b/src/Marbleland.hx @@ -14,6 +14,7 @@ class Marbleland { public static var goldMissions = []; public static var ultraMissions = []; public static var platinumMissions = []; + public static var multiplayerMissions = []; public static var missions:Map = []; public static function init() { @@ -22,6 +23,7 @@ class Marbleland { Console.log('Loaded gold customs: ${goldMissions.length}'); Console.log('Loaded ultra customs: ${ultraMissions.length}'); Console.log('Loaded platinum customs: ${platinumMissions.length}'); + Console.log('Loaded multiplayer customs: ${multiplayerMissions.length}'); // Load the marbleland level from JS #if js var urlParams = new js.html.URLSearchParams(js.Browser.window.location.search); @@ -51,9 +53,11 @@ class Marbleland { continue; if (!['gold', 'platinum', 'ultra', 'platinumquest'].contains(missionData.modification)) continue; - if (missionData.gameMode != null && missionData.gameMode != 'null') + if (missionData.gameMode != null && !(missionData.gameMode == 'null' || missionData.gameMode.toLowerCase() == 'hunt')) continue; - if (missionData.gameType != 'single') + + var isMultiplayer = missionData.gameType == 'multi'; + if (isMultiplayer && (missionData.gameMode == null || missionData.gameMode.toLowerCase() != 'hunt')) continue; var mission = new Mission(); @@ -77,8 +81,14 @@ class Marbleland { mission.hasEgg = missionData.hasEgg; mission.isClaMission = true; mission.addedAt = missionData.addedAt; + mission.gameMode = missionData.gameMode; + if (mission.gameMode != null) + mission.gameMode = mission.gameMode.toLowerCase(); var game = missionData.modification; + if (isMultiplayer) { + game = 'multiplayer'; + } if (game == 'platinum') { if (platDupes.exists(mission.title + mission.description)) @@ -94,6 +104,8 @@ class Marbleland { ultraMissions.push(mission); case 'platinum': platinumMissions.push(mission); + case 'multiplayer': + multiplayerMissions.push(mission); } missions.set(mission.id, mission); @@ -121,6 +133,14 @@ class Marbleland { } @:privateAccess ultraMissions[ultraMissions.length - 1].next = ultraMissions[0]; ultraMissions[ultraMissions.length - 1].index = ultraMissions.length - 1; + + multiplayerMissions.sort((x, y) -> x.title > y.title ? 1 : (x.title < y.title ? -1 : 0)); + for (i in 0...multiplayerMissions.length - 1) { + @:privateAccess multiplayerMissions[i].next = multiplayerMissions[i + 1]; + multiplayerMissions[i].index = i; + } + @:privateAccess multiplayerMissions[multiplayerMissions.length - 1].next = multiplayerMissions[0]; + multiplayerMissions[multiplayerMissions.length - 1].index = multiplayerMissions.length - 1; } public static function getMissionImage(id:Int, cb:Image->Void) { diff --git a/src/Mission.hx b/src/Mission.hx index 7efc37eb..3d5a8341 100644 --- a/src/Mission.hx +++ b/src/Mission.hx @@ -41,6 +41,7 @@ class Mission { public var game:String; public var hasEgg:Bool; public var isCustom:Bool; + public var gameMode:String; #if hl public var addedAt:Int64; #end @@ -116,6 +117,10 @@ class Mission { } mission.type = missionInfo.type.toLowerCase(); mission.missionInfo = missionInfo; + mission.gameMode = missionInfo.gamemode; + if (mission.gameMode != null) { + mission.gameMode = StringTools.trim(mission.gameMode).toLowerCase(); + } return mission; } @@ -239,11 +244,11 @@ class Mission { return path; if (ResourceLoader.exists(dirpath + fname)) return dirpath + fname; - if (game == 'gold') { - path = StringTools.replace(path, 'interiors/', 'interiors_mbg/'); - if (ResourceLoader.exists(path)) - return path; - } + + path = StringTools.replace(path, 'interiors/', 'interiors_mbg/'); + if (ResourceLoader.exists(path)) + return path; + path = StringTools.replace(path, "lbinteriors", "interiors"); // This shit ew if (ResourceLoader.exists(path)) return path; @@ -253,12 +258,22 @@ class Mission { /** Computes the clock time in MBP when the user should be warned that they're about to exceed the par time. */ public function computeAlarmStartTime() { + var alarmStart = this.qualifyTime; + if (this.gameMode != null && this.gameMode == 'hunt') { + alarmStart = 15; + if (this.missionInfo.alarmstarttime != null) + alarmStart = MisParser.parseNumber(this.missionInfo.alarmstarttime); + if (alarmStart == 0) + alarmStart = 15; + return alarmStart; + } var alarmStart = this.qualifyTime; if (this.missionInfo.alarmstarttime != null) alarmStart -= MisParser.parseNumber(this.missionInfo.alarmstarttime); else { alarmStart -= 15; } + alarmStart = Math.max(0, alarmStart); return alarmStart; diff --git a/src/MissionList.hx b/src/MissionList.hx index a6d138aa..3d8dfa32 100644 --- a/src/MissionList.hx +++ b/src/MissionList.hx @@ -1,8 +1,11 @@ +package src; + import haxe.Json; import mis.MisParser; import src.ResourceLoader; import src.Mission; import src.Console; +import src.MissionList; @:publicFields class MissionList { @@ -66,6 +69,7 @@ class MissionList { var goldMissions:Map> = []; var platinumMissions:Map> = []; var ultraMissions:Map> = []; + var multiplayerMissions:Map> = []; goldMissions.set("beginner", parseDifficulty("gold", "missions_mbg", "beginner")); goldMissions.set("intermediate", parseDifficulty("gold", "missions_mbg", "intermediate")); @@ -80,6 +84,10 @@ class MissionList { ultraMissions.set("intermediate", parseDifficulty("ultra", "missions_mbu", "intermediate")); ultraMissions.set("advanced", parseDifficulty("ultra", "missions_mbu", "advanced")); + multiplayerMissions.set("beginner", parseDifficulty("multiplayer", "multiplayer/hunt", "beginner")); + multiplayerMissions.set("intermediate", parseDifficulty("multiplayer", "multiplayer/hunt", "intermediate")); + multiplayerMissions.set("advanced", parseDifficulty("multiplayer", "multiplayer/hunt", "advanced")); + customMissions = parseDifficulty("custom", "missions", "custom"); @:privateAccess goldMissions["beginner"][goldMissions["beginner"].length - 1].next = goldMissions["intermediate"][0]; @@ -99,6 +107,7 @@ class MissionList { missionList.set("gold", goldMissions); missionList.set("platinum", platinumMissions); missionList.set("ultra", ultraMissions); + missionList.set("multiplayer", multiplayerMissions); Console.log("Loaded MissionList"); Console.log("Gold Beginner: " + goldMissions["beginner"].length); @@ -111,6 +120,9 @@ class MissionList { Console.log("Ultra Beginner: " + ultraMissions["beginner"].length); Console.log("Ultra Intermediate: " + ultraMissions["intermediate"].length); Console.log("Ultra Advanced: " + ultraMissions["advanced"].length); + Console.log("Multiplayer Beginner: " + multiplayerMissions["beginner"].length); + Console.log("Multiplayer Intermediate: " + multiplayerMissions["intermediate"].length); + Console.log("Multiplayer Advanced: " + multiplayerMissions["advanced"].length); Console.log("Custom: " + customMissions.length); // parseCLAList(); diff --git a/src/ParticleSystem.hx b/src/ParticleSystem.hx index cf0d2bc1..fe2b2b92 100644 --- a/src/ParticleSystem.hx +++ b/src/ParticleSystem.hx @@ -1,11 +1,9 @@ package src; import shaders.DtsTexture; -import h3d.parts.Particles; import h3d.Matrix; import src.TimeState; import h3d.prim.UV; -import h3d.parts.Data.BlendMode; import src.MarbleWorld; import src.Util; import h3d.mat.Data.Wrap; @@ -33,7 +31,7 @@ class ParticleData { @:publicFields class Particle { - public var part:h3d.parts.Particle; + public var part:src.ParticlesMesh.ParticleElement; var data:ParticleData; var manager:ParticleManager; @@ -61,7 +59,7 @@ class Particle { this.lifeTime = this.o.lifetime + this.o.lifetimeVariance * (Math.random() * 2 - 1); this.initialSpin = Util.lerp(this.o.spinRandomMin, this.o.spinRandomMax, Math.random()); - this.part = new h3d.parts.Particle(); + this.part = new src.ParticlesMesh.ParticleElement(); } public function update(time:Float, dt:Float) { @@ -137,8 +135,7 @@ class Particle { var t = (completion - this.o.times[indexLow]) / (this.o.times[indexHigh] - this.o.times[indexLow]); // Adjust color - var color = Util.lerpThreeVectors(this.o.colors[indexLow], this.o.colors[indexHigh], t); - this.color = color; + this.color = Util.lerpThreeVectors(this.o.colors[indexLow], this.o.colors[indexHigh], t); // this.material.opacity = color.a * * 1.5; // Adjusted because additive mixing can be kind of extreme // Adjust sizing @@ -150,6 +147,7 @@ class Particle { this.part.r = this.color.r; this.part.g = this.color.g; this.part.b = this.color.b; + this.part.a = this.color.a; this.part.ratio = 1; this.part.size = this.scale / 2; } @@ -223,6 +221,8 @@ class ParticleEmitter { var getPos:Void->Vector; var spawnSphereSquish:Vector; + var emittedParticles:Array = []; + public function new(options:ParticleEmitterOptions, data:ParticleData, manager:ParticleManager, ?getPos:Void->Vector, ?spawnSphereSquish:Vector) { this.o = options; this.manager = manager; @@ -257,7 +257,7 @@ class ParticleEmitter { this.currentWaitPeriod = this.o.ejectionPeriod; var pos = this.getPosAtTime(time).clone(); if (this.o.spawnOffset != null) - pos = pos.add(this.o.spawnOffset()); // Call the spawnOffset function if it's there + pos.load(pos.add(this.o.spawnOffset())); // Call the spawnOffset function if it's there // This isn't necessarily uniform but it's fine for the purpose. var randomPointOnSphere = new Vector(Math.random() * 2 - 1, Math.random() * 2 - 1, Math.random() * 2 - 1).normalized(); randomPointOnSphere.x *= this.spawnSphereSquish.x; @@ -272,6 +272,7 @@ class ParticleEmitter { // .add(this.o.ambientVelocity); var particle = new Particle(this.o.particleOptions, this.manager, this.data, time, pos, vel); this.manager.addParticle(data, particle); + this.emittedParticles.push(particle); } /** Computes the interpolated emitter position at a point in time. */ @@ -298,7 +299,7 @@ class ParticleManager { var scene:Scene; var currentTime:Float; - var particleGroups:Map = []; + var particleGroups:Map = []; var particles:Array = []; var emitters:Array = []; @@ -321,7 +322,7 @@ class ParticleManager { if (particleGroups.exists(particleData.identifier)) { particleGroups[particleData.identifier].add(particle.part); } else { - var pGroup = new Particles(particle.data.texture, this.scene); + var pGroup = new src.ParticlesMesh.ParticlesMesh(particle.data.texture, this.scene); pGroup.hasColor = true; pGroup.material.setDefaultProps("ui"); // var pdts = new DtsTexture(pGroup.material.texture); @@ -363,6 +364,12 @@ class ParticleManager { this.emitters.remove(emitter); } + public function removeEmitterWithParticles(emitter:ParticleEmitter) { + this.removeEmitter(emitter); + for (particle in emitter.emittedParticles) + this.removeParticle(particle.data, particle); + } + public function removeEverything() { for (ident => particles in this.particleGroups) { particles.remove(); diff --git a/src/ParticlesMesh.hx b/src/ParticlesMesh.hx new file mode 100644 index 00000000..ed90a18b --- /dev/null +++ b/src/ParticlesMesh.hx @@ -0,0 +1,396 @@ +package src; + +private class ParticleIterator { + var p:ParticleElement; + + public inline function new(p) { + this.p = p; + } + + public inline function hasNext() { + return p != null; + } + + public inline function next() { + var v = p; + p = p.next; + return v; + } +} + +enum SortMode { + Front; + Back; + Sort; + InvSort; +} + +class ParticleElement { + public var parts:ParticlesMesh; + + public var x:Float; + public var y:Float; + public var z:Float; + + public var w:Float; // used for sorting + + public var r:Float; + public var g:Float; + public var b:Float; + public var a:Float; + public var alpha(get, set):Float; + + public var frame:Int; + + public var size:Float; + public var ratio:Float; + public var rotation:Float; + + public var prev:ParticleElement; + public var next:ParticleElement; + + // --- Particle emitter --- + public var time:Float; + public var lifeTimeFactor:Float; + + public var dx:Float; + public var dy:Float; + public var dz:Float; + + public var fx:Float; + public var fy:Float; + public var fz:Float; + + public var randIndex = 0; + public var randValues:Array; + + // ------------------------- + + public function new() { + r = 1; + g = 1; + b = 1; + a = 1; + frame = 0; + } + + inline function get_alpha() + return a; + + inline function set_alpha(v) + return a = v; + + public function setColor(color:Int, alpha = 1.) { + a = alpha; + r = ((color >> 16) & 0xFF) / 255.; + g = ((color >> 8) & 0xFF) / 255.; + b = (color & 0xFF) / 255.; + } + + public function remove() { + if (parts != null) { + @:privateAccess parts.kill(this); + parts = null; + } + } + + public function rand():Float { + if (randValues == null) + randValues = []; + if (randValues.length <= randIndex) + randValues.push(Math.random()); + return randValues[randIndex++]; + } +} + +class ParticlesMesh extends h3d.scene.Mesh { + var pshader:h3d.shader.ParticleShader; + + public var frames:Array; + public var count(default, null):Int = 0; + public var hasColor(default, set):Bool; + public var sortMode:SortMode; + public var globalSize:Float = 1; + + var head:ParticleElement; + var tail:ParticleElement; + var pool:ParticleElement; + + var tmp:h3d.Vector; + var tmpBuf:hxd.FloatBuffer; + var buffer:h3d.Buffer; + var bufferSize:Int = 0; + + public function new(?texture, ?parent) { + super(null, null, parent); + material.props = material.getDefaultProps("particles3D"); + sortMode = Back; + pshader = new h3d.shader.ParticleShader(); + pshader.isAbsolute = true; + material.mainPass.addShader(pshader); + material.mainPass.dynamicParameters = true; + material.texture = texture; + tmp = new h3d.Vector(); + } + + function set_hasColor(b) { + var c = material.mainPass.getShader(h3d.shader.VertexColorAlpha); + if (b) { + if (c == null) + material.mainPass.addShader(new h3d.shader.VertexColorAlpha()); + } else { + if (c != null) + material.mainPass.removeShader(c); + } + return hasColor = b; + } + + /** + Offset all existing particles by the given values. + **/ + public function offsetParticles(dx:Float, dy:Float, dz = 0.) { + var p = head; + while (p != null) { + p.x += dx; + p.y += dy; + p.z += dz; + p = p.next; + } + } + + public function clear() { + while (head != null) + kill(head); + } + + public function alloc() { + var p = emitParticle(); + if (posChanged) + syncPos(); + p.parts = this; + p.x = absPos.tx; + p.y = absPos.ty; + p.z = absPos.tz; + p.rotation = 0; + p.ratio = 1; + p.size = 1; + p.r = p.g = p.b = p.a = 1; + return p; + } + + public function add(p) { + emitParticle(p); + return p; + } + + function emitParticle(?p) { + if (p == null) { + if (pool == null) + p = new ParticleElement(); + else { + p = pool; + pool = p.next; + } + } + count++; + switch (sortMode) { + case Front, Sort, InvSort: + if (head == null) { + p.next = null; + head = tail = p; + } else { + head.prev = p; + p.next = head; + head = p; + } + case Back: + if (head == null) { + p.next = null; + head = tail = p; + } else { + tail.next = p; + p.prev = tail; + p.next = null; + tail = p; + } + } + return p; + } + + function kill(p:ParticleElement) { + if (p.prev == null) + head = p.next + else + p.prev.next = p.next; + if (p.next == null) + tail = p.prev + else + p.next.prev = p.prev; + p.prev = null; + p.next = pool; + pool = p; + count--; + } + + function sort(list:ParticleElement) { + return haxe.ds.ListSort.sort(list, function(p1, p2) return p1.w < p2.w ? 1 : -1); + } + + function sortInv(list:ParticleElement) { + return haxe.ds.ListSort.sort(list, function(p1, p2) return p1.w < p2.w ? -1 : 1); + } + + public inline function getParticles() { + return new ParticleIterator(head); + } + + @:access(h2d.Tile) + @:noDebug + override function draw(ctx:h3d.scene.RenderContext) { + if (head == null) + return; + switch (sortMode) { + case Sort, InvSort: + var p = head; + var m = ctx.camera.m; + while (p != null) { + p.w = (p.x * m._13 + p.y * m._23 + p.z * m._33 + m._43) / (p.x * m._14 + p.y * m._24 + p.z * m._34 + m._44); + p = p.next; + } + head = sortMode == Sort ? sort(head) : sortInv(head); + tail = head.prev; + head.prev = null; + default: + } + if (tmpBuf == null) + tmpBuf = new hxd.FloatBuffer(); + var pos = 0; + var p = head; + var tmp = tmpBuf; + var surface = 0.; + if (frames == null || frames.length == 0) { + var t = material.texture == null ? h2d.Tile.fromColor(0xFF00FF) : h2d.Tile.fromTexture(material.texture); + frames = [t]; + } + material.texture = frames[0].getTexture(); + + while (p != null) { + var f = frames[p.frame]; + if (f == null) + f = frames[0]; + var ratio = p.size * p.ratio * (f.height / f.width); + + if (pos >= tmp.length) { + tmp.grow(tmp.length + 40 + (hasColor ? 16 : 0)); + } + + tmp[pos++] = p.x; + tmp[pos++] = p.y; + tmp[pos++] = p.z; + tmp[pos++] = p.size; + tmp[pos++] = ratio; + tmp[pos++] = p.rotation; + // delta + tmp[pos++] = -0.5; + tmp[pos++] = -0.5; + // UV + tmp[pos++] = f.u; + tmp[pos++] = f.v2; + // RBGA + if (hasColor) { + tmp[pos++] = p.r; + tmp[pos++] = p.g; + tmp[pos++] = p.b; + tmp[pos++] = p.a; + } + + tmp[pos++] = p.x; + tmp[pos++] = p.y; + tmp[pos++] = p.z; + tmp[pos++] = p.size; + tmp[pos++] = ratio; + tmp[pos++] = p.rotation; + tmp[pos++] = -0.5; + tmp[pos++] = 0.5; + tmp[pos++] = f.u; + tmp[pos++] = f.v; + if (hasColor) { + tmp[pos++] = p.r; + tmp[pos++] = p.g; + tmp[pos++] = p.b; + tmp[pos++] = p.a; + } + + tmp[pos++] = p.x; + tmp[pos++] = p.y; + tmp[pos++] = p.z; + tmp[pos++] = p.size; + tmp[pos++] = ratio; + tmp[pos++] = p.rotation; + tmp[pos++] = 0.5; + tmp[pos++] = -0.5; + tmp[pos++] = f.u2; + tmp[pos++] = f.v2; + if (hasColor) { + tmp[pos++] = p.r; + tmp[pos++] = p.g; + tmp[pos++] = p.b; + tmp[pos++] = p.a; + } + + tmp[pos++] = p.x; + tmp[pos++] = p.y; + tmp[pos++] = p.z; + tmp[pos++] = p.size; + tmp[pos++] = ratio; + tmp[pos++] = p.rotation; + tmp[pos++] = 0.5; + tmp[pos++] = 0.5; + tmp[pos++] = f.u2; + tmp[pos++] = f.v; + if (hasColor) { + tmp[pos++] = p.r; + tmp[pos++] = p.g; + tmp[pos++] = p.b; + tmp[pos++] = p.a; + } + + p = p.next; + } + + if (pos != 0) { + var stride = 10; + if (hasColor) + stride += 4; + if (buffer == null) { + buffer = h3d.Buffer.ofSubFloats(tmp, stride, Std.int(pos / stride), [Quads, Dynamic, RawFormat]); + bufferSize = Std.int(pos / stride); + } else { + var len = Std.int(pos / stride); + if (bufferSize < len) { + buffer.dispose(); + buffer = h3d.Buffer.ofSubFloats(tmp, stride, Std.int(pos / stride), [Quads, Dynamic, RawFormat]); + bufferSize = Std.int(pos / stride); + } else { + buffer.uploadVector(tmp, 0, len); + } + } + if (pshader.is3D) + pshader.size.set(globalSize, globalSize); + else + pshader.size.set(globalSize * ctx.engine.height / ctx.engine.width * 4, globalSize * 4); + ctx.uploadParams(); + var verts = Std.int(pos / stride); + var vertsPerTri = 2; + ctx.engine.renderQuadBuffer(buffer, 0, verts >> 1); // buffer, 0, Std.int(pos / stride)); + } + } + + override function onRemove() { + super.onRemove(); + if (buffer != null) { + buffer.dispose(); + buffer = null; + } + } +} diff --git a/src/PathedInterior.hx b/src/PathedInterior.hx index 9111ce75..a7d0e2f0 100644 --- a/src/PathedInterior.hx +++ b/src/PathedInterior.hx @@ -40,13 +40,27 @@ class PathedInterior extends InteriorObject { public var currentTime:Float; public var targetTime:Float; + var initialPosition:Float; + var initialTargetPosition:Float; + var basePosition:Vector; var baseOrientation:Quat; var baseScale:Vector; + var prevPosition:Vector; + var position:Vector; + public var velocity:Vector; var stopped:Bool = false; + var stoppedPosition:Vector; + + var savedPosition:Vector; + var savedVelocity:Vector; + var savedStopped:Bool; + var savedStoppedPosition:Vector; + var savedInvPosition:Vector; + var savedTime:Float; var soundChannel:Channel; @@ -57,6 +71,7 @@ class PathedInterior extends InteriorObject { onFinish(null); var pathedInterior = new PathedInterior(); pathedInterior.level = level; + pathedInterior.collisionWorld = level.collisionWorld; DifBuilder.loadDif(difFile, pathedInterior, () -> { pathedInterior.identifier = difFile + interiorElement.interiorindex; @@ -101,7 +116,14 @@ class PathedInterior extends InteriorObject { this.markerData = this.path.markers.map(x -> { var marker = new PathedInteriorMarker(); marker.msToNext = MisParser.parseNumber(x.mstonext) / 1000; - marker.smoothingType = x.smoothingtype; + marker.smoothingType = switch (x.smoothingtype) { + case "Accelerate": + PathedInteriorMarker.SMOOTHING_ACCELERATE; + case "Spline": + PathedInteriorMarker.SMOOTHING_SPLINE; + default: + PathedInteriorMarker.SMOOTHING_LINEAR; + }; marker.position = MisParser.parseVector3(x.position); marker.position.x = -marker.position.x; marker.rotation = MisParser.parseRotation(x.rotation); @@ -134,6 +156,7 @@ class PathedInterior extends InteriorObject { public function computeNextPathStep(timeDelta:Float) { stopped = false; + prevPosition = this.position.clone(); if (currentTime == targetTime) { velocity.set(0, 0, 0); this.collider.velocity.set(0, 0, 0); @@ -158,23 +181,58 @@ class PathedInterior extends InteriorObject { currentTime += delta; } - var curTform = this.getAbsPos(); + var curTform = this.position; var tForm = getTransformAtTime(currentTime); - var displaceDelta = tForm.getPosition().sub(curTform.getPosition()); + var displaceDelta = tForm.getPosition().sub(curTform); velocity.set(displaceDelta.x / timeDelta, displaceDelta.y / timeDelta, displaceDelta.z / timeDelta); this.collider.velocity = velocity.clone(); } } + public function getInternalTime(externalTime:Float) { + if (this.targetTime < 0) { + var direction = (this.targetTime == -1) ? 1 : (this.targetTime == -2) ? -1 : 0; + return Util.adjustedMod(this.currentTime + externalTime * direction, this.duration); + } else { + var dur = Math.abs(this.currentTime - this.targetTime); + + var compvarion = Util.clamp(dur != 0 ? externalTime / dur : 1, 0, 1); + return Util.clamp(Util.lerp(this.currentTime, this.targetTime, compvarion), 0, this.duration); + } + } + + public function rollbackToTick(tick:Int) { + // this.reset(); + // Reset + this.currentTime = initialPosition; + this.targetTime = initialTargetPosition; + if (this.targetTime < 0) { + var direction = (this.targetTime == -1) ? 1 : (this.targetTime == -2) ? -1 : 0; + this.currentTime = Util.adjustedMod(this.currentTime + (tick * 0.032) * direction, duration); + } else { + this.currentTime = Util.clamp(this.currentTime + (tick * 0.032), 0, duration); + } + this.computeNextPathStep(0.032); + this.advance(0.032); + } + public function advance(timeDelta:Float) { if (stopped) return; if (this.velocity.length() == 0) return; - var newp = this.getAbsPos().getPosition().add(velocity.multiply(timeDelta)); - this.setPosition(newp.x, newp.y, newp.z); - this.setTransform(this.getTransform()); + static var tform = new Matrix(); + velocity.w = 0; + var newp = position.add(velocity.multiply(timeDelta)); + tform.load(this.getAbsPos()); // .clone(); + tform.setPosition(newp); + + if (this.isCollideable) { + collider.setTransform(tform); + collisionWorld.updateTransform(this.collider); + } + this.position.load(newp); if (this.soundChannel != null) { var spat = this.soundChannel.getEffect(Spatialization); @@ -182,12 +240,52 @@ class PathedInterior extends InteriorObject { } } - public function update(timeState:TimeState) {} + public function update(timeState:TimeState) { + if (!stopped) + this.setPosition(prevPosition.x + + velocity.x * timeState.dt, prevPosition.y + + velocity.y * timeState.dt, + prevPosition.z + + velocity.z * timeState.dt); + else + this.setPosition(stoppedPosition.x, stoppedPosition.y, stoppedPosition.z); + } public function setStopped(stopped:Bool = true) { // if (!this.stopped) // this.stopTime = currentTime; this.stopped = stopped; + this.stoppedPosition = this.position.clone(); + } + + public function pushTickState() { + savedPosition = this.position.clone(); + savedInvPosition = @:privateAccess this.collider.invTransform.getPosition(); + savedVelocity = this.velocity.clone(); + savedStopped = this.stopped; + savedStoppedPosition = this.stoppedPosition != null ? this.stoppedPosition.clone() : null; + savedTime = this.currentTime; + } + + public function popTickState() { + this.position.load(savedPosition); + this.velocity.load(savedVelocity); + this.stopped = savedStopped; + this.stoppedPosition = savedStoppedPosition; + var oldtPos = this.collider.transform.getPosition(); + this.collider.transform.setPosition(savedPosition); + @:privateAccess this.collider.invTransform.setPosition(savedInvPosition); + + this.collider.boundingBox.xMin += savedPosition.x - oldtPos.x; + this.collider.boundingBox.xMax += savedPosition.x - oldtPos.x; + this.collider.boundingBox.yMin += savedPosition.y - oldtPos.y; + this.collider.boundingBox.yMax += savedPosition.y - oldtPos.y; + this.collider.boundingBox.zMin += savedPosition.z - oldtPos.z; + this.collider.boundingBox.zMax += savedPosition.z - oldtPos.z; + + collisionWorld.updateTransform(this.collider); + + this.currentTime = savedTime; } function computeDuration() { @@ -205,6 +303,8 @@ class PathedInterior extends InteriorObject { function updatePosition() { var newp = this.getAbsPos().getPosition(); + this.position = newp; + this.prevPosition = newp; this.setPosition(newp.x, newp.y, newp.z); this.collider.setTransform(this.getTransform()); this.collider.velocity = this.velocity; @@ -221,7 +321,8 @@ class PathedInterior extends InteriorObject { if (m1 == null) { // Incase there are no markers at all var tmp = new Matrix(); - var mat = Matrix.S(this.baseScale.x, this.baseScale.y, this.baseScale.z); + var mat = new Matrix(); + mat.initScale(this.baseScale.x, this.baseScale.y, this.baseScale.z); this.baseOrientation.toMatrix(tmp); mat.multiply3x4(mat, tmp); mat.setPosition(this.basePosition); @@ -244,10 +345,10 @@ class PathedInterior extends InteriorObject { var duration = m2Time - m1Time; var position:Vector = null; var compvarion = Util.clamp(duration != 0 ? (time - m1Time) / duration : 1, 0, 1); - if (m1.smoothingType == "Accelerate") { + if (m1.smoothingType == PathedInteriorMarker.SMOOTHING_ACCELERATE) { // A simple easing function compvarion = Math.sin(compvarion * Math.PI - (Math.PI / 2)) * 0.5 + 0.5; - } else if (m1.smoothingType == "Spline") { + } else if (m1.smoothingType == PathedInteriorMarker.SMOOTHING_SPLINE) { // Smooth the path like it's a Catmull-Rom spline. var preStart = (i - 2) - 1; var postEnd = (i - 1) + 1; @@ -275,7 +376,8 @@ class PathedInterior extends InteriorObject { position = position.add(basePosition); // Add the base position var tmp = new Matrix(); - var mat = Matrix.S(this.baseScale.x, this.baseScale.y, this.baseScale.z); + var mat = new Matrix(); + mat.initScale(this.baseScale.x, this.baseScale.y, this.baseScale.z); this.baseOrientation.toMatrix(tmp); mat.multiply3x4(mat, tmp); mat.setPosition(position); @@ -286,9 +388,12 @@ class PathedInterior extends InteriorObject { override function reset() { this.currentTime = 0; this.targetTime = 0; + this.initialPosition = 0; + this.initialTargetPosition = 0; if (this.element.initialposition != "") { this.currentTime = MisParser.parseNumber(this.element.initialposition) / 1000; + initialPosition = this.currentTime; } if (this.element.initialtargetposition != "") { @@ -298,6 +403,8 @@ class PathedInterior extends InteriorObject { // Alright this is strange. In Torque, there are some FPS-dependent client/server desync issues that cause the interior to start at the end position whenever the initialTargetPosition is somewhere greater than 1 and, like, approximately below 50. if (this.targetTime > 0 && this.targetTime < 0.05) this.currentTime = this.duration; + + initialTargetPosition = this.targetTime; } this.stopped = false; diff --git a/src/PathedInteriorMarker.hx b/src/PathedInteriorMarker.hx index bbbea57f..5c1191d8 100644 --- a/src/PathedInteriorMarker.hx +++ b/src/PathedInteriorMarker.hx @@ -5,10 +5,14 @@ import h3d.Vector; class PathedInteriorMarker { public var msToNext:Float; - public var smoothingType:String; + public var smoothingType:Int; public var position:Vector; public var rotation:Quat; + public static var SMOOTHING_LINEAR = 0; + public static var SMOOTHING_ACCELERATE = 1; + public static var SMOOTHING_SPLINE = 2; + public function new() {} public function clone() { diff --git a/src/Polygon.hx b/src/Polygon.hx index 8f9d0ab5..6d78e89c 100644 --- a/src/Polygon.hx +++ b/src/Polygon.hx @@ -9,33 +9,40 @@ class Polygon extends MeshPrimitive { public var normals:Array; public var tangents:Array; public var uvs:Array; - public var idx:hxd.IndexBuffer; - var scaled = 1.; - var translatedX = 0.; - var translatedY = 0.; - var translatedZ = 0.; + public var indexStarts:Array; + public var indexCounts:Array; - public function new(points:Array, ?idx) { + var currentMaterial:Int = 0; + var curTris = 0; + + var bounds:h3d.col.Bounds; + + public function new() { + this.indexStarts = [0]; + this.indexCounts = []; this.points = []; + this.uvs = []; + this.normals = []; + } + + public function addPoints(points:Array) { for (p in points) { this.points.push(p.x); this.points.push(p.y); this.points.push(p.z); } - this.idx = idx; + curTris += Math.floor(points.length / 3); } - public function setUVs(uvs:Array) { - this.uvs = []; + public function addUVs(uvs:Array) { for (uv in uvs) { this.uvs.push(uv.u); this.uvs.push(uv.v); } } - public function setNormals(normals:Array) { - this.normals = []; + public function addNormals(normals:Array) { for (n in normals) { this.normals.push(n.x); this.normals.push(n.y); @@ -43,11 +50,28 @@ class Polygon extends MeshPrimitive { } } + public function nextMaterial() { + indexStarts.push(Math.floor(this.points.length / 9)); + indexCounts.push(curTris); + curTris = 0; + } + + public function endPrimitive() { + indexCounts.push(curTris); + curTris = 0; + } + override function getBounds() { - var b = new h3d.col.Bounds(); - for (i in 0...Std.int(points.length / 3)) - b.addPoint(new Point(points[i * 3], points[i * 3 + 1], points[i * 3 + 2])); - return b; + if (bounds == null) { + var b = new h3d.col.Bounds(); + var i = 0; + while (i < points.length) { + b.addPoint(new h3d.col.Point(points[i], points[i + 1], points[i + 2])); + i += 3; + } + bounds = b; + } + return bounds; } override function alloc(engine:h3d.Engine) { @@ -96,8 +120,7 @@ class Polygon extends MeshPrimitive { } } var flags:Array = []; - if (idx == null) - flags.push(Triangles); + flags.push(Triangles); if (normals == null || tangents != null) flags.push(RawFormat); buffer = h3d.Buffer.ofFloats(buf, size, flags); @@ -105,8 +128,13 @@ class Polygon extends MeshPrimitive { for (i in 0...names.length) addBuffer(names[i], buffer, positions[i]); - if (idx != null) - indexes = h3d.Indexes.alloc(idx); + if (indexes == null && Std.int(points.length / 3) > 65535) { + var indices = new haxe.io.BytesOutput(); + for (i in 0...Std.int(points.length / 3)) + indices.writeInt32(i); + indexes = new h3d.Indexes(indices.length >> 2, true); + indexes.uploadBytes(indices.getBytes(), 0, indices.length >> 2); + } } public function addTangents() { @@ -116,15 +144,9 @@ class Polygon extends MeshPrimitive { var pos = 0; for (i in 0...triCount()) { var i0, i1, i2; - if (idx == null) { - i0 = pos++; - i1 = pos++; - i2 = pos++; - } else { - i0 = idx[pos++]; - i1 = idx[pos++]; - i2 = idx[pos++]; - } + i0 = pos++; + i1 = pos++; + i2 = pos++; var p0 = new Vector(points[i0 * 3], points[i0 * 3 + 1], points[i0 * 3 + 2]); var p1 = new Vector(points[i1 * 3], points[i1 * 3 + 1], points[i1 * 3 + 2]); var p2 = new Vector(points[i2 * 3], points[i2 * 3 + 1], points[i2 * 3 + 2]); @@ -167,22 +189,28 @@ class Polygon extends MeshPrimitive { var n = super.triCount(); if (n != 0) return n; - return Std.int((idx == null ? points.length / 3 : idx.length) / 3); + return Std.int(points.length / 3); } override function vertexCount() { return Std.int(points.length / 3); } + override function selectMaterial(material:Int) { + currentMaterial = material; + } + + override function getMaterialIndexes(material:Int):{count:Int, start:Int} { + return {start: indexStarts[material] * 3, count: indexCounts[material] * 3}; + } + override function render(engine:h3d.Engine) { if (buffer == null || buffer.isDisposed()) alloc(engine); var bufs = getBuffers(engine); if (indexes != null) - engine.renderMultiBuffers(bufs, indexes); - else if (buffer.flags.has(Quads)) - engine.renderMultiBuffers(bufs, engine.mem.quadIndexes, 0, triCount()); + engine.renderMultiBuffers(bufs, indexes, indexStarts[currentMaterial], indexCounts[currentMaterial]); else - engine.renderMultiBuffers(bufs, engine.mem.triIndexes, 0, triCount()); + engine.renderMultiBuffers(bufs, engine.mem.triIndexes, indexStarts[currentMaterial], indexCounts[currentMaterial]); } } diff --git a/src/ProfilerUI.hx b/src/ProfilerUI.hx index 4d30d88e..410a3607 100644 --- a/src/ProfilerUI.hx +++ b/src/ProfilerUI.hx @@ -1,44 +1,137 @@ package src; +import net.Net; +import src.MarbleGame; import h3d.Vector; import hxd.res.DefaultFont; import h2d.Text; class ProfilerUI { var fpsCounter:Text; + var networkStats:Text; var debugProfiler:h3d.impl.Benchmark; + var s2d:h2d.Scene; public var fps:Float; public static var instance:ProfilerUI; + static var enabled:Bool = false; + static var mode:Int = 0; + public function new(s2d:h2d.Scene) { if (instance != null) return; instance = this; - // debugProfiler = new h3d.impl.Benchmark(s2d); - // debugProfiler.y = 40; - - // fpsCounter = new Text(DefaultFont.get(), s2d); - // fpsCounter.y = 80; - // fpsCounter.color = new Vector(1, 1, 1, 1); + this.s2d = s2d; } public static function begin() { - // instance.debugProfiler.begin(); + if (!enabled) + return; + // if (type == mode) + instance.debugProfiler.begin(); } public static function measure(name:String) { - // instance.debugProfiler.measure(name); + if (!enabled) + return; + // if (type == mode) + instance.debugProfiler.measure(name); } public static function end() { - // instance.debugProfiler.end(); + if (!enabled) + return; + // if (type == mode) + instance.debugProfiler.end(); } public static function update(fps:Float) { instance.fps = fps; - // instance.fpsCounter.text = "FPS: " + fps; + if (!enabled) + return; + instance.fpsCounter.text = "FPS: " + fps; + updateNetworkStats(); + } + + public static function setEnabled(val:Bool) { + enabled = val; + if (enabled) { + if (instance.debugProfiler != null) { + instance.debugProfiler.remove(); + instance.debugProfiler = null; + } + if (instance.fpsCounter != null) { + instance.fpsCounter.remove(); + instance.fpsCounter = null; + } + if (instance.networkStats != null) { + instance.networkStats.remove(); + instance.networkStats = null; + } + instance.debugProfiler = new h3d.impl.Benchmark(instance.s2d); + instance.debugProfiler.y = 40; + + instance.fpsCounter = new Text(DefaultFont.get(), instance.s2d); + instance.fpsCounter.y = 80; + instance.fpsCounter.color = new Vector(1, 1, 1, 1); + + instance.networkStats = new Text(DefaultFont.get(), instance.s2d); + instance.networkStats.y = 150; + instance.networkStats.color = new Vector(1, 1, 1, 1); + + instance.debugProfiler.end(); // End current frame + } else { + instance.debugProfiler.remove(); + instance.fpsCounter.remove(); + instance.networkStats.remove(); + instance.debugProfiler = null; + instance.fpsCounter = null; + instance.networkStats = null; + } + } + + public static function setDisplayMode(m:Int) { + mode = m; + if (instance.debugProfiler != null) { + instance.debugProfiler.end(); // End + } + } + + static function updateNetworkStats() { + if (MarbleGame.instance.world != null && MarbleGame.instance.world.isMultiplayer) { + static var lastSentMove = 0; + if (Net.isClient && Net.clientConnection.getQueuedMovesLength() > 0) { + lastSentMove = @:privateAccess Net.clientConnection.moveManager.queuedMoves[Net.clientConnection.moveManager.queuedMoves.length - 1].id; + } + + if (Net.isClient + && lastSentMove != 0 + && @:privateAccess MarbleGame.instance.world.lastMoves != null + && @:privateAccess MarbleGame.instance.world.lastMoves.myMarbleUpdate != null) { + instance.networkStats.text = 'Client World Ticks: ${MarbleGame.instance.world.timeState.ticks}\n' + + 'Client Marble Ticks: ${@:privateAccess MarbleGame.instance.world.marble.serverTicks}\n' + + 'Server Ticks: ${@:privateAccess MarbleGame.instance.world.lastMoves.myMarbleUpdate.serverTicks}\n' + + 'Client Move Queue Size: ${Net.isClient ? Net.clientConnection.getQueuedMovesLength() : 0}\n' + + 'Server Move Queue Size: ${Net.isClient ? @:privateAccess MarbleGame.instance.world.lastMoves.myMarbleUpdate.moveQueueSize : 0}\n' + + 'Last Sent Move: ${Net.isClient ? lastSentMove : 0}\n' + + 'Last Ack Move: ${Net.isClient ? @:privateAccess Net.clientConnection.moveManager.lastAckMoveId : 0}\n' + + 'Move Ack RTT: ${Net.isClient ? @:privateAccess Net.clientConnection.moveManager.ackRTT : 0}' + + 'Ping: ${Net.clientConnection.pingTicks}'; + } + if (Net.isHost) { + var strs = []; + strs.push('World Ticks: ${MarbleGame.instance.world.timeState.ticks}'); + for (dc => cc in Net.clients) { + strs.push('${cc.id} move: sz ${@:privateAccess cc.moveManager.getQueueSize()} avg ${@:privateAccess cc.moveManager.serverAvgMoveListSize}, ping: ${cc.pingTicks}'); + } + + instance.networkStats.text = strs.join('\n'); + } + } else { + instance.networkStats.text = ""; + } } } diff --git a/src/Radar.hx b/src/Radar.hx new file mode 100644 index 00000000..1adfc3bd --- /dev/null +++ b/src/Radar.hx @@ -0,0 +1,221 @@ +package src; + +import hxd.res.BitmapFont; +import h3d.Matrix; +import src.DtsObject; +import h3d.Vector; +import gui.Graphics; +import src.GameObject; +import h2d.Scene; +import src.MarbleWorld; +import src.Util; +import src.Marble; +import src.Settings; +import src.ResourceLoader; + +class Radar { + var level:MarbleWorld; + var scene2d:Scene; + + var g:Graphics; + + var marbleNameTexts:Map; + + public var ellipseScreenFraction = new Vector(0.79, 0.85); + public var fullArrowLength = 60.0; + public var fullArrowWidth = 40.0; + public var maxArrowAlpha = 0.6; + public var maxTargetAlpha = 0.4; + public var minArrowFraction = 0.4; + + var radarTiles:Array; + + var time:Float = 0.0; + + var _dirty = false; + + public function new(level:MarbleWorld, scene2d:Scene) { + this.level = level; + this.scene2d = scene2d; + this.marbleNameTexts = []; + var radarTileRedGem = ResourceLoader.getImage("data/ui/mp/radar/GemItemRed.png").resource.toTile(); + var radarTileYellowGem = ResourceLoader.getImage("data/ui/mp/radar/GemItemYellow.png").resource.toTile(); + var radarTileBlueGem = ResourceLoader.getImage("data/ui/mp/radar/GemItemBlue.png").resource.toTile(); + var radarTileGreenGem = ResourceLoader.getImage("data/ui/mp/radar/GemItemGreen.png").resource.toTile(); + var radarTileOrangeGem = ResourceLoader.getImage("data/ui/mp/radar/GemItemOrange.png").resource.toTile(); + var radarTilePinkGem = ResourceLoader.getImage("data/ui/mp/radar/GemItemPink.png").resource.toTile(); + var radarTilePurpleGem = ResourceLoader.getImage("data/ui/mp/radar/GemItemPurple.png").resource.toTile(); + var radarTileTurquoiseGem = ResourceLoader.getImage("data/ui/mp/radar/GemItemTurquoise.png").resource.toTile(); + var radarTileBlackGem = ResourceLoader.getImage("data/ui/mp/radar/GemItemBlack.png").resource.toTile(); + var radarTilePlatinumGem = ResourceLoader.getImage("data/ui/mp/radar/GemItemPlatinum.png").resource.toTile(); + var radarTileEndPad = ResourceLoader.getImage("data/ui/mp/radar/EndPad.png").resource.toTile(); + radarTiles = [ + radarTileRedGem, radarTileYellowGem, radarTileBlueGem, radarTileGreenGem, radarTileOrangeGem, radarTilePinkGem, radarTilePurpleGem, + radarTileTurquoiseGem, radarTileBlackGem, radarTilePlatinumGem, radarTileEndPad + ]; + for (tile in radarTiles) { + tile.scaleToSize(tile.width * Settings.uiScale, tile.height * Settings.uiScale); + } + } + + public function init() { + g = new Graphics(scene2d); + } + + public function update(dt:Float) { + time += dt; + _dirty = true; + } + + public function render(doRender) { + if (!_dirty) + return; + g.clear(); + if (!doRender) { + for (marble => marbleName in marbleNameTexts) { + if (marbleName != null) + marbleName.alpha = 0; + } + return; + } + var gemCount = 0; + for (gem in level.gems) { + if (!gem.pickedUp) { + renderArrow(gem.boundingCollider.boundingBox.getCenter().toVector(), gem.radarGemColor, radarTiles[gem.radarGemIndex]); + gemCount++; + } + } + if (@:privateAccess level.endPad != null && gemCount == 0) { + renderArrow(@:privateAccess level.endPad.getAbsPos().getPosition(), 0xE6E6E6, radarTiles[10]); + } + var fadeDistance = level.scene.camera.zFar * 0.1; + for (marble => marbleName in marbleNameTexts) { + if (marbleName != null) + marbleName.alpha = 0; + } + for (marble in level.marbles) { + if (marble != level.marble) { + var shapePos = @:privateAccess marble.lastRenderPos.clone(); + var shapeDir = shapePos.sub(level.scene.camera.pos); + var shapeDist = shapeDir.lengthSq(); + if (shapeDist == 0 || shapeDist > level.scene.camera.zFar * level.scene.camera.zFar) { + dontRenderName(marble); + continue; + } + var validProjection = frustumHasPoint(level.scene.camera.frustum, shapePos); + if (!validProjection) { + dontRenderName(marble); + continue; + } + shapePos.z += 0.5; // Vertical offset + + var projectedPos = level.scene.camera.project(shapePos.x, shapePos.y, shapePos.z, scene2d.width, scene2d.height); + var opacity = (shapeDist < fadeDistance) ? 1.0 : (1.0 - (shapeDist - fadeDistance) / (level.scene.camera.zFar - fadeDistance)); + renderName(projectedPos, marble, opacity); + } + } + _dirty = false; + } + + public function blink() { + time = 0; + } + + public function reset() { + time = 0; + g.clear(); + } + + public function dispose() { + g.clear(); + scene2d.removeChild(g); + g = null; + for (txt in marbleNameTexts) { + if (txt != null) { + scene2d.removeChild(txt); + } + } + marbleNameTexts = null; + } + + inline function planeDistance(plane:h3d.col.Plane, p:Vector) { + return @:privateAccess plane.nx * p.x + @:privateAccess plane.ny * p.y + @:privateAccess plane.nz * p.z - @:privateAccess plane.d; + } + + function frustumHasPoint(frustum:h3d.col.Frustum, p:Vector) { + if (planeDistance(frustum.pleft, p) < 0) + return false; + if (planeDistance(frustum.pright, p) < 0) + return false; + if (planeDistance(frustum.ptop, p) < 0) + return false; + if (planeDistance(frustum.pbottom, p) < 0) + return false; + if (frustum.checkNearFar) { + if (planeDistance(frustum.pnear, p) < 0) + return false; + if (planeDistance(frustum.pfar, p) < 0) + return false; + } + return true; + } + + function renderArrow(pos:Vector, color:Int, tile:h2d.Tile) { + var validProjection = frustumHasPoint(level.scene.camera.frustum, pos); + var projectedPos = level.scene.camera.project(pos.x, pos.y, pos.z, scene2d.width, scene2d.height); + + if (validProjection && tile != null) { + g.lineStyle(0, 0, 0); + g.beginTileFill(projectedPos.x - tile.width / 2, projectedPos.y - tile.height / 2, Settings.uiScale, Settings.uiScale, tile); + g.drawRect(projectedPos.x - tile.width / 2, projectedPos.y - tile.height / 2, tile.width, tile.height); + g.endFill(); + } else if (!validProjection) { + var centerDiff = projectedPos.sub(new Vector(scene2d.width / 2, scene2d.height / 2)); + + var theta = Math.atan2(centerDiff.y, centerDiff.x); + if (projectedPos.z > 1) + theta += Math.PI; + + var ellipsePos = new Vector(scene2d.width * (ellipseScreenFraction.x * Math.cos(theta) + 1) / 2, + scene2d.height * (ellipseScreenFraction.y * Math.sin(theta) + 1) / 2); + var arrowDir = projectedPos.sub(new Vector(scene2d.width / 2, scene2d.height / 2)).normalized(); + var arrowDirPerp = new Vector(-arrowDir.y, arrowDir.x); + if (projectedPos.z > 1) + arrowDir.scale(-1); + + var tipPosition = ellipsePos.add(arrowDir.multiply(fullArrowLength)); + var tipUpperPosition = ellipsePos.add(arrowDirPerp.multiply(fullArrowWidth / 2)); + var tipLowerPosition = ellipsePos.add(arrowDirPerp.multiply(-fullArrowWidth / 2)); + + g.beginFill(color, 0.6); + g.lineStyle(1, 0, 0.6); + g.moveTo(tipPosition.x, tipPosition.y); + g.lineTo(tipUpperPosition.x, tipUpperPosition.y); + g.lineTo(tipLowerPosition.x, tipLowerPosition.y); + g.endFill(); + } + } + + function renderName(pos:Vector, marble:Marble, opacity:Float) { + if (!marbleNameTexts.exists(marble)) { + var markerFelt32fontdata = ResourceLoader.getFileEntry("data/font/MarkerFelt.fnt"); + var markerFelt32b = new BitmapFont(markerFelt32fontdata.entry); + @:privateAccess markerFelt32b.loader = ResourceLoader.loader; + var markerFelt18 = markerFelt32b.toSdfFont(cast 14 * Settings.uiScale, MultiChannel); + var txt = new h2d.Text(markerFelt18, scene2d); + marbleNameTexts.set(marble, txt); + txt.textColor = 0xFFFF00; + } + var textObj = marbleNameTexts.get(marble); + textObj.text = @:privateAccess marble.connection.getName(); + textObj.setPosition(pos.x - textObj.textWidth / 2, pos.y - textObj.textHeight); + textObj.alpha = opacity; + } + + function dontRenderName(marble:Marble) { + if (marbleNameTexts.exists(marble)) { + var el = marbleNameTexts.get(marble); + el.alpha = 0; + } + } +} diff --git a/src/RandomLCG.hx b/src/RandomLCG.hx new file mode 100644 index 00000000..962564cf --- /dev/null +++ b/src/RandomLCG.hx @@ -0,0 +1,53 @@ +class RandomLCG { + var seed:Int; + + static var msSeed:Int = 1376312589; + + static var quotient = 127773; + static var remainder = 2836; + + public function new(seed = -1) { + this.seed = (seed == -1) ? generateSeed() : seed; + } + + inline function generateSeed() { + // A very, VERY crude LCG but good enough to generate + // a nice range of seed values + msSeed = (msSeed * 0x015a4e35) + 1; + msSeed = (msSeed >> 16) & 0x7fff; + return (msSeed); + } + + public function setSeed(seed:Int) { + this.seed = seed; + } + + public function randInt() { + if (seed <= quotient) + seed = (seed * 16807) % 2147483647; + else { + var high_part:Int = Std.int(seed / quotient); + var low_part = seed % quotient; + + var test:Int = (16807 * low_part) - (remainder * high_part); + + if (test > 0) + seed = test; + else + seed = test + 2147483647; + } + return seed; + } + + public function randFloat() { + return randInt() / 2147483647.0; + } + + public function randRange(i:Int, n:Int) { + return (i + (randInt() % (n - i + 1))); + } + + public function randRangeF(i:Float, n:Int) { + return (i + (n - i) * randFloat()); + } +} diff --git a/src/Renderer.hx b/src/Renderer.hx new file mode 100644 index 00000000..4d86c2c5 --- /dev/null +++ b/src/Renderer.hx @@ -0,0 +1,55 @@ +package src; + +import h3d.Vector; +import src.Console; + +class Renderer extends h3d.scene.Renderer { + var def(get, never):h3d.pass.Base; + + public var shadow = new h3d.pass.DefaultShadowMap(1); + + public function new() { + super(); + defaultPass = new h3d.pass.Default("default"); + allPasses = [defaultPass, shadow]; + shadow.enabled = false; + } + + inline function get_def() + return defaultPass; + + // can be overriden for benchmark purposes + function renderPass(p:h3d.pass.Base, passes, ?sort) { + p.draw(passes, sort); + } + + override function getPassByName(name:String):h3d.pass.Base { + if (name == "alpha" || name == "additive") + return defaultPass; + return super.getPassByName(name); + } + + override function render() { + // if (has("shadow")) + // renderPass(shadow, get("shadow")); + + // The shadow bullshit + ctx.setGlobalID(@:privateAccess shadow.shadowMapId, { + texture: @:privateAccess shadow.dshader.shadowMap, + channel: @:privateAccess shadow.format == h3d.mat.Texture.nativeFormat ? hxsl.Channel.PackedFloat : hxsl.Channel.R + }); + ctx.setGlobalID(@:privateAccess shadow.shadowProjId, @:privateAccess shadow.getShadowProj()); + ctx.setGlobalID(@:privateAccess shadow.shadowColorId, new Vector(0, 0, 0, 0)); + ctx.setGlobalID(@:privateAccess shadow.shadowPowerId, 0.0); + ctx.setGlobalID(@:privateAccess shadow.shadowBiasId, 0.0); + + renderPass(defaultPass, get("skyshape")); + renderPass(defaultPass, get("default")); + renderPass(defaultPass, get("shadowPass1")); + renderPass(defaultPass, get("shadowPass2")); + renderPass(defaultPass, get("shadowPass3")); + renderPass(defaultPass, get("marble")); + renderPass(defaultPass, get("alpha"), backToFront); + renderPass(defaultPass, get("additive")); + } +} diff --git a/src/ResourceLoader.hx b/src/ResourceLoader.hx index 1bc8a472..5e0f19c0 100644 --- a/src/ResourceLoader.hx +++ b/src/ResourceLoader.hx @@ -129,7 +129,10 @@ class ResourceLoader { } while (toloaddirs.length > 0) { var nextdir = toloaddirs.pop(); - for (file in fileSystem.dir(nextdir.path.substring(2))) { + var pathToSearch = nextdir.path; + if (StringTools.startsWith(pathToSearch, "./")) + pathToSearch = pathToSearch.substring(2); + for (file in fileSystem.dir(pathToSearch)) { if (file.isDirectory) { toloaddirs.push(file); } else { @@ -179,9 +182,20 @@ class ResourceLoader { toloadfiles.push(file); } } + filestats = fileSystem.dir("multiplayer/hunt"); + for (file in filestats) { + if (file.isDirectory) { + toloaddirs.push(file); + } else { + toloadfiles.push(file); + } + } while (toloaddirs.length > 0) { var nextdir = toloaddirs.pop(); - for (file in fileSystem.dir(nextdir.path.substring(2))) { + var pathToSearch = nextdir.path; + if (StringTools.startsWith(pathToSearch, "./")) + pathToSearch = pathToSearch.substring(2); + for (file in fileSystem.dir(pathToSearch)) { if (file.isDirectory) { toloaddirs.push(file); } else { @@ -521,6 +535,9 @@ class ResourceLoader { } public static function exists(path:String) { + #if (js || android) + path = StringTools.replace(path, "data/", ""); + #end if (zipFilesystem.exists(path.toLowerCase())) return true; return fileSystem.exists(path); diff --git a/src/Settings.hx b/src/Settings.hx index ea4ee04f..ac0fbcce 100644 --- a/src/Settings.hx +++ b/src/Settings.hx @@ -78,6 +78,9 @@ typedef TouchSettings = { var rewindButtonPos:Array; var rewindButtonSize:Float; var buttonJoystickMultiplier:Float; + var hideControls:Bool; + var cameraSwipeExtent:Float; + var dynamicJoystick:Bool; } typedef GamepadSettings = { @@ -96,6 +99,17 @@ typedef GamepadSettings = { var rewind:Array; } +typedef ServerSettings = { + var name:String; + var description:String; + var maxPlayers:Int; + var password:String; + var forceSpectators:Bool; + var quickRespawn:Bool; + var competitiveMode:Bool; + var oldSpawns:Bool; +} + typedef PlayStatistics = { var oobs:Int; var respawns:Int; @@ -119,7 +133,7 @@ class Settings { fovX: 90, frameRateVis: true, oobInsults: true, - reflectiveMarble: true, + reflectiveMarble: false, marbleIndex: 0, marbleCategoryIndex: 0, marbleSkin: "base", @@ -164,7 +178,10 @@ class Settings { blastButtonSize: 60, rewindButtonPos: [300, 100], rewindButtonSize: 60, - buttonJoystickMultiplier: 2.5 + buttonJoystickMultiplier: 2.5, + hideControls: false, + cameraSwipeExtent: 10.0, + dynamicJoystick: false } public static var gamepadSettings:GamepadSettings = { @@ -189,6 +206,17 @@ class Settings { totalTime: 0, } + public static var serverSettings:ServerSettings = { + name: "Multiplayer Server", + password: "", + maxPlayers: 8, + description: "My cool server", + forceSpectators: false, + quickRespawn: true, + competitiveMode: false, + oldSpawns: false + } + public static var levelStatistics:Map = []; public static var highscoreName = ""; @@ -244,6 +272,7 @@ class Settings { touch: touchSettings, gamepad: gamepadSettings, stats: playStatistics, + server: serverSettings, highscoreName: highscoreName, marbleIndex: optionsSettings.marbleIndex, marbleSkin: optionsSettings.marbleSkin, @@ -364,6 +393,20 @@ class Settings { touchSettings.rewindButtonPos = [300, 100]; touchSettings.rewindButtonSize = 60; } + #if js + if (touchSettings.hideControls == null) { + touchSettings.hideControls = false; + } + if (touchSettings.cameraSwipeExtent == null) { + touchSettings.cameraSwipeExtent = 10.0; + } + if (touchSettings.dynamicJoystick == null) { + touchSettings.dynamicJoystick = false; + } + #end + if (touchSettings.cameraSwipeExtent == 0) { + touchSettings.cameraSwipeExtent = 10.0; + } if (json.gamepad != null) { gamepadSettings = json.gamepad; } @@ -379,7 +422,13 @@ class Settings { levelStatistics.set(key, value); } } + if (json.serverSettings != null) { + serverSettings = json.serverSettings; + } #if js + if (serverSettings.oldSpawns == null) { + serverSettings.oldSpawns = false; + } if (optionsSettings.marbleIndex == null) { optionsSettings.marbleIndex = 0; optionsSettings.marbleSkin = "base"; diff --git a/src/Sky.hx b/src/Sky.hx index 63e7ab03..b29d0c52 100644 --- a/src/Sky.hx +++ b/src/Sky.hx @@ -43,6 +43,8 @@ class Sky extends Object { skyMesh.material.mainPass.enableLights = false; skyMesh.material.shadows = false; skyMesh.material.blendMode = None; + skyMesh.material.mainPass.setPassName("skyshape"); + skyMesh.material.mainPass.layer = -1; // var pbrprops = skyMesh.material.mainPass.getShader(PropsValues); // pbrprops.emissiveValue = 1; // pbrprops.roughnessValue = 0;` diff --git a/src/TimeState.hx b/src/TimeState.hx index a90f9af0..bed80cf3 100644 --- a/src/TimeState.hx +++ b/src/TimeState.hx @@ -6,6 +6,8 @@ class TimeState { var currentAttemptTime:Float; var gameplayClock:Float; var dt:Float; + var ticks:Int; // How many 32ms ticks have happened + var subframe:Float; public function new() {} @@ -15,6 +17,8 @@ class TimeState { n.currentAttemptTime = this.currentAttemptTime; n.gameplayClock = this.gameplayClock; n.dt = this.dt; + n.ticks = ticks; + n.subframe = subframe; return n; } } diff --git a/src/Util.hx b/src/Util.hx index 97b13970..90c732db 100644 --- a/src/Util.hx +++ b/src/Util.hx @@ -11,18 +11,18 @@ import h3d.Vector; import src.Settings; class Util { - public static function mat3x3equal(a:Matrix, b:Matrix) { + public static inline function mat3x3equal(a:Matrix, b:Matrix) { return a._11 == b._11 && a._12 == b._12 && a._13 == b._13 && a._21 == b._21 && a._22 == b._22 && a._23 == b._23 && a._31 == b._31 && a._32 == b._32 && a._33 == b._33; } - public static function adjustedMod(a:Float, n:Float) { + public static inline function adjustedMod(a:Float, n:Float) { var r1 = a % n; var r2 = (r1 + n) % n; return r2; } - public static function clamp(value:Float, min:Float, max:Float) { + public static inline function clamp(value:Float, min:Float, max:Float) { if (value < min) return min; if (value > max) @@ -30,11 +30,11 @@ class Util { return value; } - public static function lerp(a:Float, b:Float, t:Float) { + public static inline function lerp(a:Float, b:Float, t:Float) { return a + (b - a) * t; } - public static function catmullRom(t:Float, p0:Float, p1:Float, p2:Float, p3:Float) { + public static inline function catmullRom(t:Float, p0:Float, p1:Float, p2:Float, p3:Float) { var point = t * t * t * ((-1) * p0 + 3 * p1 - 3 * p2 + p3) / 2; point += t * t * (2 * p0 - 5 * p1 + 4 * p2 - p3) / 2; point += t * ((-1) * p0 + p2) / 2; @@ -42,11 +42,11 @@ class Util { return point; } - public static function lerpThreeVectors(v1:Vector, v2:Vector, t:Float) { + public static inline function lerpThreeVectors(v1:Vector, v2:Vector, t:Float) { return new Vector(lerp(v1.x, v2.x, t), lerp(v1.y, v2.y, t), lerp(v1.z, v2.z, t), lerp(v1.w, v2.w, t)); } - public static function rotateImage(bitmap:hxd.Pixels, angle:Float) { + public static inline function rotateImage(bitmap:hxd.Pixels, angle:Float) { var curpixels = bitmap.clone(); if (angle == Math.PI / 2) for (x in 0...curpixels.width) { @@ -337,7 +337,7 @@ class Util { '${(hours > 0 ? (hoursTen > 0 ? '${hoursTen}' : '') +'${hoursOne}' + ':' : '')}${minutesTen}${minutesOne}:${secondsTen}${secondsOne}.${hundredthTen}${hundredthOne}${thousandth}'; } - public static function getKeyForButton(button:Int) { + public static inline function getKeyForButton(button:Int) { var keyName = Key.getKeyName(button); if (keyName == "MouseLeft") keyName = "the Left Mouse Button"; @@ -350,7 +350,7 @@ class Util { return keyName; } - public static function getKeyForButton2(button:Int) { + public static inline function getKeyForButton2(button:Int) { var keyName = Key.getKeyName(button); if (keyName == "MouseLeft") keyName = "Left Mouse"; @@ -363,15 +363,19 @@ class Util { return keyName; } - public static function m_matF_x_vectorF(matrix:Matrix, v:Vector) { - var m = matrix.clone(); - m.transpose(); + public static inline function rightPad(str:String, len:Int, cutOff:Int) { + str = str.substring(0, len - cutOff); + while (str.length < len) + str += " "; + return str; + } + public static inline function m_matF_x_vectorF(m:Matrix, v:Vector) { var v0 = v.x, v1 = v.y, v2 = v.z; - var vresult_0 = m._11 * v0 + m._12 * v1 + m._13 * v2; - var vresult_1 = m._21 * v0 + m._22 * v1 + m._23 * v2; - var vresult_2 = m._31 * v0 + m._23 * v1 + m._33 * v2; + var vresult_0 = m._11 * v0 + m._21 * v1 + m._31 * v2; + var vresult_1 = m._12 * v0 + m._22 * v1 + m._32 * v2; + var vresult_2 = m._13 * v0 + m._23 * v1 + m._33 * v2; v.set(vresult_0, vresult_1, vresult_2); } @@ -412,7 +416,7 @@ class Util { #end } - public static function isSafari() { + public static inline function isSafari() { #if js var reg = ~/^((?!chrome|android).)*safari/; return reg.match(js.Browser.navigator.userAgent); @@ -496,7 +500,7 @@ class Util { #end } - public static function toASCII(bytes:haxe.io.Bytes) { + public static inline function toASCII(bytes:haxe.io.Bytes) { var totBytes = new BytesBuffer(); for (i in 0...bytes.length) { var utfbytes = Bytes.ofString(String.fromCharCode(bytes.get(i))); @@ -506,7 +510,7 @@ class Util { return totBytes.getBytes().toString(); } - public static function getPlatform() { + public static inline function getPlatform() { #if js return js.Browser.navigator.platform; #end diff --git a/src/collision/BVHTree.hx b/src/collision/BVHTree.hx index 013021b3..6d6c654a 100644 --- a/src/collision/BVHTree.hx +++ b/src/collision/BVHTree.hx @@ -5,36 +5,159 @@ import h3d.col.Bounds; interface IBVHObject { var boundingBox:Bounds; - function rayCast(rayOrigin:Vector, rayDirection:Vector):Array; + var key:Int; + function rayCast(rayOrigin:Vector, rayDirection:Vector, results:Array, bestT:Float):Float; } +@:generic @:publicFields class BVHNode { - var id:Int; - var parent:BVHNode; - var child1:BVHNode; - var child2:BVHNode; + var index:Int; + var parent:Int = -1; + var child1:Int = -1; + var child2:Int = -1; var isLeaf:Bool; - var bounds:Bounds; var object:T; + var xMin:Float = 0; + var yMin:Float = 0; + var zMin:Float = 0; + var xMax:Float = 0; + var yMax:Float = 0; + var zMax:Float = 0; public function new() {} + + public inline function containsBounds(b:Bounds) { + return xMin <= b.xMin && yMin <= b.yMin && zMin <= b.zMin && xMax >= b.xMax && yMax >= b.yMax && zMax >= b.zMax; + } + + public inline function setBounds(b:Bounds) { + xMin = b.xMin; + yMin = b.yMin; + zMin = b.zMin; + xMax = b.xMax; + yMax = b.yMax; + zMax = b.zMax; + } + + public inline function setBoundsFromNode(b:BVHNode) { + xMin = b.xMin; + yMin = b.yMin; + zMin = b.zMin; + xMax = b.xMax; + yMax = b.yMax; + zMax = b.zMax; + } + + public inline function getBounds() { + return Bounds.fromValues(xMin, yMin, zMin, xMax - xMin, yMax - yMin, zMax - zMin); + } + + public inline function add(b:Bounds) { + if (b.xMin < xMin) + xMin = b.xMin; + if (b.xMax > xMax) + xMax = b.xMax; + if (b.yMin < yMin) + yMin = b.yMin; + if (b.yMax > yMax) + yMax = b.yMax; + if (b.zMin < zMin) + zMin = b.zMin; + if (b.zMax > zMax) + zMax = b.zMax; + } + + public inline function addNodeBounds(b:BVHNode) { + if (b.xMin < xMin) + xMin = b.xMin; + if (b.xMax > xMax) + xMax = b.xMax; + if (b.yMin < yMin) + yMin = b.yMin; + if (b.yMax > yMax) + yMax = b.yMax; + if (b.zMin < zMin) + zMin = b.zMin; + if (b.zMax > zMax) + zMax = b.zMax; + } + + public inline function collide(b:Bounds) { + return !(xMin > b.xMax || yMin > b.yMax || zMin > b.zMax || xMax < b.xMin || yMax < b.yMin || zMax < b.zMin); + } + + public inline function getExpansionCost(b:BVHNode) { + var xm = xMin; + var ym = yMin; + var zm = zMin; + var xp = xMax; + var yp = yMax; + var zp = zMax; + if (b.xMin < xm) + xm = b.xMin; + if (b.xMax > xp) + xp = b.xMax; + if (b.yMin < ym) + ym = b.yMin; + if (b.yMax > yp) + yp = b.yMax; + if (b.zMin < zm) + zm = b.zMin; + if (b.zMax > zp) + zp = b.zMax; + var xs = xp - xm; + var ys = yp - ym; + var zs = zp - zm; + return xs * ys + ys * zs + xs * zs; + } + + public inline function collideRay(r:h3d.col.Ray):Bool { + var dx = 1 / r.lx; + var dy = 1 / r.ly; + var dz = 1 / r.lz; + var t1 = (xMin - r.px) * dx; + var t2 = (xMax - r.px) * dx; + var t3 = (yMin - r.py) * dy; + var t4 = (yMax - r.py) * dy; + var t5 = (zMin - r.pz) * dz; + var t6 = (zMax - r.pz) * dz; + var tmin = Math.max(Math.max(Math.min(t1, t2), Math.min(t3, t4)), Math.min(t5, t6)); + var tmax = Math.min(Math.min(Math.max(t1, t2), Math.max(t3, t4)), Math.max(t5, t6)); + if (tmax < 0) { + // t = tmax; + return false; + } else if (tmin > tmax) { + // t = tmax; + return false; + } else { + // t = tmin; + return true; + } + } } class BVHTree { - var nodeId:Int = 0; var root:BVHNode; + var nodes:Array> = []; public function new() {} + public function allocateNode():BVHNode { + var node = new BVHNode(); + var index = this.nodes.length; + node.index = index; + this.nodes.push(node); + return node; + } + public function update() { var invalidNodes = []; this.traverse(node -> { if (node.isLeaf) { var entity = node.object; - var tightAABB = entity.boundingBox; - if (node.bounds.containsBounds(tightAABB)) { + if (node.containsBounds(entity.boundingBox)) { return; } @@ -51,9 +174,8 @@ class BVHTree { // Enlarged AABB var aabb = entity.boundingBox; - var newNode = new BVHNode(); - newNode.id = this.nodeId++; - newNode.bounds = aabb; + var newNode = allocateNode(); + newNode.setBounds(aabb); newNode.object = entity; newNode.isLeaf = true; @@ -64,17 +186,17 @@ class BVHTree { // Find the best sibling for the new leaf var bestSibling = this.root; - var bestCostBox = this.root.bounds.clone(); + var bestCostBox = this.root.getBounds(); bestCostBox.add(aabb); var bestCost = bestCostBox.xSize * bestCostBox.ySize + bestCostBox.xSize * bestCostBox.zSize + bestCostBox.ySize * bestCostBox.zSize; - var q = [{p1: this.root, p2: 0.0}]; + var q = [{p1: this.root.index, p2: 0.0}]; while (q.length != 0) { var front = q.shift(); - var current = front.p1; + var current = nodes[front.p1]; var inheritedCost = front.p2; - var combined = current.bounds.clone(); + var combined = current.getBounds(); combined.add(aabb); var directCost = combined.xSize * combined.ySize + combined.xSize * combined.zSize + combined.ySize * combined.zSize; @@ -83,123 +205,125 @@ class BVHTree { bestCost = costForCurrent; bestSibling = current; } + var xs = (current.xMax - current.xMin); + var ys = (current.yMax - current.yMin); + var zs = (current.zMax - current.zMin); - inheritedCost += directCost - - (current.bounds.xSize * current.bounds.ySize + current.bounds.xSize * current.bounds.zSize + current.bounds.ySize * current.bounds.zSize); + inheritedCost += directCost - (xs * ys + xs * zs + ys * zs); var aabbCost = aabb.xSize * aabb.ySize + aabb.xSize * aabb.zSize + aabb.ySize * aabb.zSize; var lowerBoundCost = aabbCost + inheritedCost; if (lowerBoundCost < bestCost) { if (!current.isLeaf) { - if (current.child1 != null) + if (current.child1 != -1) q.push({p1: current.child1, p2: inheritedCost}); - if (current.child2 != null) + if (current.child2 != -1) q.push({p1: current.child2, p2: inheritedCost}); } } } // Create a new parent - var oldParent = bestSibling.parent; - var newParent = new BVHNode(); - newParent.id = this.nodeId++; - newParent.parent = oldParent; - newParent.bounds = bestSibling.bounds.clone(); - newParent.bounds.add(aabb); + var oldParent = bestSibling.parent != -1 ? nodes[bestSibling.parent] : null; + var newParent = allocateNode(); + newParent.parent = oldParent != null ? oldParent.index : -1; + newParent.setBoundsFromNode(bestSibling); + newParent.add(aabb); newParent.isLeaf = false; if (oldParent != null) { - if (oldParent.child1 == bestSibling) { - oldParent.child1 = newParent; + if (oldParent.child1 == bestSibling.index) { + oldParent.child1 = newParent.index; } else { - oldParent.child2 = newParent; + oldParent.child2 = newParent.index; } - newParent.child1 = bestSibling; - newParent.child2 = newNode; - bestSibling.parent = newParent; - newNode.parent = newParent; + newParent.child1 = bestSibling.index; + newParent.child2 = newNode.index; + bestSibling.parent = newParent.index; + newNode.parent = newParent.index; } else { - newParent.child1 = bestSibling; - newParent.child2 = newNode; - bestSibling.parent = newParent; - newNode.parent = newParent; + newParent.child1 = bestSibling.index; + newParent.child2 = newNode.index; + bestSibling.parent = newParent.index; + newNode.parent = newParent.index; this.root = newParent; } // Walk back up the tree refitting ancestors' AABB and applying rotations - var ancestor = newNode.parent; + var ancestor = newNode.parent != -1 ? nodes[newNode.parent] : null; while (ancestor != null) { var child1 = ancestor.child1; var child2 = ancestor.child2; - ancestor.bounds = new Bounds(); - if (child1 != null) - ancestor.bounds.add(child1.bounds); - if (child2 != null) - ancestor.bounds.add(child2.bounds); + if (child1 != -1) + ancestor.addNodeBounds(nodes[child1]); + if (child2 != -1) + ancestor.addNodeBounds(nodes[child2]); this.rotate(ancestor); - ancestor = ancestor.parent; + ancestor = nodes[ancestor.parent]; } return newNode; } function reset() { - this.nodeId = 0; + this.nodes = []; this.root = null; } // BFS tree traversal function traverse(callback:(node:BVHNode) -> Void) { - var q = [this.root]; + var q = [this.root.index]; while (q.length != 0) { var current = q.shift(); if (current == null) { break; } + var currentnode = nodes[current]; + callback(currentnode); - callback(current); - - if (!current.isLeaf) { - if (current.child1 != null) - q.push(current.child1); - if (current.child2 != null) - q.push(current.child2); + if (!currentnode.isLeaf) { + if (currentnode.child1 != -1) + q.push(currentnode.child1); + if (currentnode.child2 != -1) + q.push(currentnode.child2); } } } public function remove(node:BVHNode) { - var parent = node.parent; + var parent = node.parent != -1 ? nodes[node.parent] : null; if (parent != null) { - var sibling = parent.child1 == node ? parent.child2 : parent.child1; + var sibling = parent.child1 == node.index ? parent.child2 : parent.child1; + var siblingnode = nodes[sibling]; - if (parent.parent != null) { - sibling.parent = parent.parent; - if (parent.parent.child1 == parent) { - parent.parent.child1 = sibling; + if (parent.parent != -1) { + siblingnode.parent = parent.parent; + if (nodes[parent.parent].child1 == parent.index) { + nodes[parent.parent].child1 = sibling; } else { - parent.parent.child2 = sibling; + nodes[parent.parent].child2 = sibling; } } else { - this.root = sibling; - sibling.parent = null; + this.root = siblingnode; + siblingnode.parent = -1; } - var ancestor = sibling.parent; - while (ancestor != null) { - var child1 = ancestor.child1; - var child2 = ancestor.child2; + var ancestor = siblingnode.parent; + while (ancestor != -1) { + var ancestornode = nodes[ancestor]; + var child1 = nodes[ancestornode.child1]; + var child2 = nodes[ancestornode.child2]; - ancestor.bounds = child1.bounds.clone(); - ancestor.bounds.add(child2.bounds); - ancestor = ancestor.parent; + ancestornode.setBoundsFromNode(child1); + ancestornode.addNodeBounds(child2); + ancestor = ancestornode.parent; } } else { if (this.root == node) { @@ -209,33 +333,30 @@ class BVHTree { } function rotate(node:BVHNode) { - if (node.parent == null) { + if (node.parent == -1) { return; } - var parent = node.parent; - var sibling = parent.child1 == node ? parent.child2 : parent.child1; + var parent = nodes[node.parent]; + var sibling = nodes[parent.child1 == node.index ? parent.child2 : parent.child1]; var costDiffs = []; - var nodeArea = node.bounds.xSize * node.bounds.ySize + node.bounds.zSize * node.bounds.ySize + node.bounds.xSize * node.bounds.zSize; + var nxs = node.xMax - node.xMin; + var nys = node.yMax - node.yMin; + var nzs = node.zMax - node.zMin; + var nodeArea = nxs * nys + nzs * nys + nxs * nzs; - var ch1 = sibling.bounds.clone(); - ch1.add(node.child1.bounds); - costDiffs.push(ch1.xSize * ch1.ySize + ch1.zSize * ch1.ySize + ch1.xSize * ch1.zSize - nodeArea); - var ch2 = sibling.bounds.clone(); - ch2.add(node.child2.bounds); - costDiffs.push(ch2.xSize * ch2.ySize + ch2.zSize * ch2.ySize + ch2.xSize * ch2.zSize - nodeArea); + costDiffs.push(sibling.getExpansionCost(nodes[node.child1]) - nodeArea); + costDiffs.push(sibling.getExpansionCost(nodes[node.child2]) - nodeArea); if (!sibling.isLeaf) { - var siblingArea = sibling.bounds.xSize * sibling.bounds.ySize + sibling.bounds.zSize * sibling.bounds.ySize - + sibling.bounds.xSize * sibling.bounds.zSize; - if (sibling.child1 != null) { - var ch3 = node.bounds.clone(); - ch3.add(sibling.child1.bounds); - costDiffs.push(ch3.xSize * ch3.ySize + ch3.zSize * ch3.ySize + ch3.xSize * ch3.zSize - siblingArea); + var sxs = sibling.xMax - sibling.xMin; + var sys = sibling.yMax - sibling.yMin; + var szs = sibling.zMax - sibling.zMin; + var siblingArea = sxs * sys + sys * szs + sxs * szs; + if (sibling.child1 != -1) { + costDiffs.push(node.getExpansionCost(nodes[sibling.child1]) - siblingArea); } - if (sibling.child2 != null) { - var ch4 = node.bounds.clone(); - ch4.add(sibling.child2.bounds); - costDiffs.push(ch4.xSize * ch4.ySize + ch4.zSize * ch4.ySize + ch4.xSize * ch4.zSize - siblingArea); + if (sibling.child2 != -1) { + costDiffs.push(node.getExpansionCost(nodes[sibling.child2]) - siblingArea); } } @@ -249,67 +370,67 @@ class BVHTree { if (costDiffs[bestDiffIndex] < 0.0) { switch (bestDiffIndex) { case 0: - if (parent.child1 == sibling) { + if (parent.child1 == sibling.index) { parent.child1 = node.child2; } else { parent.child2 = node.child2; } - if (node.child2 != null) { - node.child2.parent = parent; + if (node.child2 != -1) { + nodes[node.child2].parent = parent.index; } - node.child2 = sibling; - sibling.parent = node; - node.bounds = sibling.bounds.clone(); - if (node.child1 != null) { - node.bounds.add(node.child1.bounds); + node.child2 = sibling.index; + sibling.parent = node.index; + node.setBoundsFromNode(sibling); + if (node.child1 != -1) { + node.addNodeBounds(nodes[node.child1]); } case 1: - if (parent.child1 == sibling) { + if (parent.child1 == sibling.index) { parent.child1 = node.child1; } else { parent.child2 = node.child1; } - if (node.child1 != null) { - node.child1.parent = parent; + if (node.child1 != -1) { + nodes[node.child1].parent = parent.index; } - node.child1 = sibling; - sibling.parent = node; - node.bounds = sibling.bounds.clone(); - if (node.child2 != null) { - node.bounds.add(node.child2.bounds); + node.child1 = sibling.index; + sibling.parent = node.index; + node.setBoundsFromNode(sibling); + if (node.child2 != -1) { + node.addNodeBounds(nodes[node.child2]); } case 2: - if (parent.child1 == node) { + if (parent.child1 == node.index) { parent.child1 = sibling.child2; } else { parent.child2 = sibling.child2; } - if (sibling.child2 != null) { - sibling.child2.parent = parent; + if (sibling.child2 != -1) { + nodes[sibling.child2].parent = parent.index; } - sibling.child2 = node; - node.parent = sibling; - sibling.bounds = node.bounds.clone(); - if (sibling.child2 != null) { - sibling.bounds.add(sibling.child2.bounds); + sibling.child2 = node.index; + node.parent = sibling.index; + sibling.setBoundsFromNode(node); + if (sibling.child2 != -1) { + sibling.addNodeBounds(nodes[sibling.child2]); } case 3: - if (parent.child1 == node) { + if (parent.child1 == node.index) { parent.child1 = sibling.child1; } else { parent.child2 = sibling.child1; } - if (sibling.child1 != null) { - sibling.child1.parent = parent; + if (sibling.child1 != -1) { + nodes[sibling.child1].parent = parent.index; } - sibling.child1 = node; - node.parent = sibling; - sibling.bounds = node.bounds.clone(); - if (sibling.child1 != null) { - sibling.bounds.add(sibling.child1.bounds); + sibling.child1 = node.index; + node.parent = sibling.index; + sibling.setBoundsFromNode(node); + if (sibling.child1 != -1) { + sibling.addNodeBounds(nodes[sibling.child1]); } } } @@ -320,19 +441,21 @@ class BVHTree { if (this.root == null) return res; - var q = [this.root]; + var q = [this.root.index]; + var qptr = 0; - while (q.length != 0) { - var current = q.shift(); + while (qptr != q.length) { + var current = q[qptr++]; + var currentnode = this.nodes[current]; - if (current.bounds.containsBounds(searchbox) || current.bounds.collide(searchbox)) { - if (current.isLeaf) { - res.push(current.object); + if (currentnode.containsBounds(searchbox) || currentnode.collide(searchbox)) { + if (currentnode.isLeaf) { + res.push(currentnode.object); } else { - if (current.child1 != null) - q.push(current.child1); - if (current.child2 != null) - q.push(current.child2); + if (currentnode.child1 != -1) + q.push(currentnode.child1); + if (currentnode.child2 != -1) + q.push(currentnode.child2); } } } @@ -340,23 +463,25 @@ class BVHTree { return res; } - public function rayCast(origin:Vector, direction:Vector) { + public function rayCast(origin:Vector, direction:Vector, bestT:Float) { var res = []; if (this.root == null) return res; var ray = h3d.col.Ray.fromValues(origin.x, origin.y, origin.z, direction.x, direction.y, direction.z); - var q = [this.root]; - while (q.length != 0) { - var current = q.shift(); - if (ray.collide(current.bounds)) { - if (current.isLeaf) { - res = res.concat(current.object.rayCast(origin, direction)); + var q = [this.root.index]; + var qptr = 0; + while (qptr != q.length) { + var current = q[qptr++]; + var currentnode = this.nodes[current]; + if (currentnode.collideRay(ray)) { + if (currentnode.isLeaf) { + bestT = currentnode.object.rayCast(origin, direction, res, bestT); } else { - if (current.child1 != null) - q.push(current.child1); - if (current.child2 != null) - q.push(current.child2); + if (currentnode.child1 != -1) + q.push(currentnode.child1); + if (currentnode.child2 != -1) + q.push(currentnode.child2); } } } diff --git a/src/collision/BoxCollisionEntity.hx b/src/collision/BoxCollisionEntity.hx index f529d7e9..f017034d 100644 --- a/src/collision/BoxCollisionEntity.hx +++ b/src/collision/BoxCollisionEntity.hx @@ -27,10 +27,12 @@ class BoxCollisionEntity extends CollisionEntity implements IBVHObject { if (Debug.drawBounds) { if (_dbgEntity == null) { _dbgEntity = cast this.boundingBox.makeDebugObj(); + _dbgEntity.getMaterials()[0].castShadows = false; _dbgEntity.getMaterials()[0].mainPass.wireframe = true; MarbleGame.instance.scene.addChild(_dbgEntity); } else { _dbgEntity = cast this.boundingBox.makeDebugObj(); + _dbgEntity.getMaterials()[0].castShadows = false; _dbgEntity.getMaterials()[0].mainPass.wireframe = true; MarbleGame.instance.scene.addChild(_dbgEntity); } @@ -42,15 +44,16 @@ class BoxCollisionEntity extends CollisionEntity implements IBVHObject { if (Debug.drawBounds) { if (_dbgEntity != null) { _dbgEntity = cast this.boundingBox.makeDebugObj(); + _dbgEntity.getMaterials()[0].castShadows = false; _dbgEntity.getMaterials()[0].mainPass.wireframe = true; MarbleGame.instance.scene.addChild(_dbgEntity); } } } - public override function rayCast(rayOrigin:Vector, rayDirection:Vector) { + public override function rayCast(rayOrigin:Vector, rayDirection:Vector, results:Array, bestT:Float) { // TEMP cause bruh - return []; + return Math.POSITIVE_INFINITY; } public override function sphereIntersection(collisionEntity:SphereCollisionEntity, timeState:TimeState) { diff --git a/src/collision/Collision.hx b/src/collision/Collision.hx index 5bd2c4df..6d3889c2 100644 --- a/src/collision/Collision.hx +++ b/src/collision/Collision.hx @@ -20,11 +20,17 @@ typedef CPSSResult = { var c2:Vector; } -typedef ITSResult = { - var result:Bool; +@:publicFields +class ITSResult { + var result:Bool = false; var normal:Vector; var point:Vector; - var resIdx:Int; + var resIdx:Int = -1; + + public inline function new() { + this.point = new Vector(); + this.normal = new Vector(); + } } class Collision { @@ -45,7 +51,7 @@ class Collision { return p; } - public static function ClosestPointLine(start:Vector, end:Vector, center:Vector) { + public static inline function ClosestPointLine(start:Vector, end:Vector, center:Vector) { var d = end.sub(start); var v = center.sub(start); var t = v.dot(d) / d.lengthSq(); @@ -65,12 +71,7 @@ class Collision { edgeConcavities:Array) { var radiusSq = radius * radius; - var res:ITSResult = { - result: false, - point: null, - normal: null, - resIdx: 0 - }; + var res = new ITSResult(); var pnorm = normal.clone(); var d = -v0.dot(pnorm); @@ -104,12 +105,12 @@ class Collision { var chosenEdge = 0; // Bitfield - var chosenPt:Vector; + var chosenPt = new Vector(); if (r1.distanceSq(center) < r2.distanceSq(center)) { - chosenPt = r1; + chosenPt.load(r1); chosenEdge = 1; } else { - chosenPt = r2; + chosenPt.load(r2); chosenEdge = 2; } if (chosenPt.distanceSq(center) < r3.distanceSq(center)) @@ -144,126 +145,16 @@ class Collision { return res; } - public static function TriangleSphereIntersection(A:Vector, B:Vector, C:Vector, N:Vector, P:Vector, r:Float) { - var res:ITSResult = { - result: false, - point: null, - normal: null, - resIdx: -1 - }; - - var v0 = A; - var v1 = B; - var v2 = C; - A = A.sub(P); - B = B.sub(P); - C = C.sub(P); - var ca = C.sub(A); - var ba = B.sub(A); - var radiusSq = r * r; - var cp = ba.cross(ca); - var aDotCp = A.dot(cp); - var cpLenSq = cp.lengthSq(); - if (aDotCp * aDotCp > radiusSq * cpLenSq) { - return res; - } - - var aSq = A.dot(A); - var aDotB = A.dot(B); - var aDotC = A.dot(C); - var bSq = B.dot(B); - var bDotC = B.dot(C); - var cSq = C.dot(C); - - if (aSq > radiusSq && aDotB > aSq && aDotC > aSq) { - return res; - } - if (bSq > radiusSq && aDotB > bSq && bDotC > bSq) { - return res; - } - if (cSq > radiusSq && aDotC > cSq && bDotC > cSq) { - return res; - } - - var cSubB = C.sub(B); - var aSubC = A.sub(C); - var baSq = ba.lengthSq(); - var cSubBSq = cSubB.lengthSq(); - var aSubCSq = aSubC.lengthSq(); - var aTest = A.multiply(baSq).sub(ba.multiply(aDotB - aSq)); - var bTest = B.multiply(cSubBSq).sub(cSubB.multiply(bDotC - bSq)); - var cTest = C.multiply(aSubCSq).sub(aSubC.multiply(aDotC - cSq)); - var rhs = C.multiply(baSq).sub(aTest); - var rhs2 = A.multiply(cSubBSq).sub(bTest); - var rhs3 = B.multiply(aSubCSq).sub(cTest); - - if (aTest.dot(aTest) > radiusSq * baSq * baSq && aTest.dot(rhs) > 0) { - return res; - } - if (bTest.dot(bTest) > radiusSq * cSubBSq * cSubBSq && bTest.dot(rhs2) > 0) { - return res; - } - if (cTest.dot(cTest) > radiusSq * aSubCSq * aSubCSq && cTest.dot(rhs3) > 0) { - return res; - } - - var lhs = P.sub(v0); - var baca = ba.dot(ca); - var caSq = ca.lengthSq(); - var lhsBa = lhs.dot(ba); - var lhsCa = lhs.dot(ca); - var len = baSq * caSq - baca * baca; - var d1 = (caSq * lhsBa - baca * lhsCa) / len; - var d2 = (baSq * lhsCa - baca * lhsBa) / len; - - if (1 - d1 - d2 >= 0 && d1 >= 0 && d2 >= 0) { - res.result = true; - res.normal = N.clone(); - res.point = P.sub(N.multiply(P.sub(v0).dot(N))); - res.resIdx = 0; + public static inline function TriangleSphereIntersection(v0:Vector, v1:Vector, v2:Vector, N:Vector, P:Vector, r:Float, point:Vector, normal:Vector) { + ClosestPtPointTriangle(P, v0, v1, v2, point); + var v = point.sub(P); + if (v.dot(v) <= r * r) { + normal.load(P.sub(point)); + normal.normalize(); + return true; } else { - var closestPt = P.sub(N.multiply(P.sub(v0).dot(N))); - var r1 = ClosestPointLine(v0, v1, closestPt); - var r2 = ClosestPointLine(v1, v2, closestPt); - var r3 = ClosestPointLine(v2, v0, closestPt); - - var chosenEdge = 0; // Bitfield - - var chosenPt:Vector; - if (r1.distanceSq(P) < r2.distanceSq(P)) { - chosenPt = r1; - chosenEdge = 1; - } else { - chosenPt = r2; - chosenEdge = 2; - } - if (chosenPt.distanceSq(P) < r3.distanceSq(P)) - res.point = chosenPt; - else { - chosenEdge = 4; - res.point = r3; - } - res.normal = P.sub(res.point).normalized(); - res.result = true; - - res.resIdx = chosenEdge; - - // if (res.normal.dot(N) > 0.8) { - // // Internal edge - // if (chosenEdge & edgeData > 0) { - // chosenEdge -= 1; - // if (chosenEdge > 2) - // chosenEdge--; - // // if (edgeNormals[chosenEdge].length() < 0.5) { - // // res.normal = center.sub(res.point).normalized(); - // // } else - // if (edgeConcavities[chosenEdge]) { // Our edge is concave - // res.normal = N.clone(); - // } - // } - // } + return false; } - return res; } public static function IntersectSegmentCapsule(segStart:Vector, segEnd:Vector, capStart:Vector, capEnd:Vector, radius:Float) { @@ -444,37 +335,111 @@ class Collision { return null; } - public static function ClosestPtPointTriangle(pt:Vector, radius:Float, p0:Vector, p1:Vector, p2:Vector, normal:Vector) { - var closest:Vector = null; - var ptDot = pt.dot(normal); - var triDot = p0.dot(normal); - if (Math.abs(ptDot - triDot) > radius * 1.1) { - return null; + public static inline function ClosestPtPointTriangle(p:Vector, a:Vector, b:Vector, c:Vector, outP:Vector) { + // Check if P in vertex region outside A + var ab = b.sub(a); + var ac = c.sub(a); + var ap = p.sub(a); + var d1 = ab.dot(ap); + var d2 = ac.dot(ap); + if (d1 <= 0.0 && d2 <= 0.0) { // barycentric coordinates (1,0,0) + outP.load(a); + return; } - closest = pt.add(normal.multiply(triDot - ptDot)); - if (Collision.PointInTriangle2(closest, p0, p1, p2)) { - return closest; + // Check if P in vertex region outside B + var bp = p.sub(b); + var d3 = ab.dot(bp); + var d4 = ac.dot(bp); + if (d3 >= 0.0 && d4 <= d3) { // barycentric coordinates (0,1,0 + outP.load(b); + return; } - var t = 10.0; - var r1 = Collision.IntersectSegmentCapsule(pt, pt, p0, p1, radius); - if (r1.result && r1.tSeg < t) { - closest = p0.add((p1.sub(p0).multiply(r1.tCap))); - t = r1.tSeg; + + // Check if P in edge region of AB, if so return projection of P onto AB + var vc = d1 * d4 - d3 * d2; + if (vc <= 0.0 && d1 >= 0.0 && d3 <= 0.0) { + var v = d1 / (d1 - d3); + outP.load(a.add(ab.multiply(v))); + return; } - var r2 = Collision.IntersectSegmentCapsule(pt, pt, p1, p2, radius); - if (r2.result && r2.tSeg < t) { - closest = p1.add((p2.sub(p1).multiply(r2.tCap))); - t = r2.tSeg; + + // Check if P in vertex region outside C + var cp = p.sub(c); + var d5 = ab.dot(cp); + var d6 = ac.dot(cp); + if (d6 >= 0.0 && d5 <= d6) { // barycentric coordinates (0,0,1) + outP.load(c); + return; } - var r3 = Collision.IntersectSegmentCapsule(pt, pt, p2, p0, radius); - if (r3.result && r3.tSeg < t) { - closest = p2.add((p2.sub(p2).multiply(r3.tCap))); - t = r3.tSeg; + + // Check if P in edge region of AC, if so return projection of P onto AC + var vb = d5 * d2 - d1 * d6; + if (vb <= 0.0 && d2 >= 0.0 && d6 <= 0.0) { + var w = d2 / (d2 - d6); + outP.load(a.add(ac.multiply(w))); + return; } - var res = t < 1; - if (res) { - return closest; + + // Check if P in edge region of BC, if so return projection of P onto BC + var va = d3 * d6 - d5 * d4; + if (va <= 0.0 && (d4 - d3) >= 0.0 && (d5 - d6) >= 0.0) { + var w = (d4 - d3) / ((d4 - d3) + (d5 - d6)); + outP.load(b.add((c.sub(b)).multiply(w))); + return; + } + // P inside face region. Compute Q through its barycentric coordinates (u,v,w) + + var denom = 1.0 / (va + vb + vc); + var v = vb * denom; + var w = vc * denom; + outP.load(a.add(ab.multiply(v)).add(ac.multiply(w))); + return; + } + + public static function capsuleSphereNearestOverlap(a0:Vector, a1:Vector, radA:Float, b:Vector, radB:Float) { + var V = a1.sub(a0); + var A0B = a0.sub(b); + var d1 = A0B.dot(V); + var d2 = A0B.dot(A0B); + var d3 = V.dot(V); + var R2 = (radA + radB) * (radA + radB); + if (d2 < R2) { + // starting in collision state + return { + result: true, + t: 0.0 + } + } + if (d3 < 0.01) // no movement, and don't start in collision state, so no collision + return { + result: false, + t: 0.0 + } + + var b24ac = Math.sqrt(d1 * d1 - d2 * d3 + d3 * R2); + var t1 = (-d1 - b24ac) / d3; + if (t1 > 0 && t1 < 1.0) { + return { + result: true, + t: t1 + } + } + var t2 = (-d1 + b24ac) / d3; + if (t2 > 0 && t2 < 1.0) { + return { + result: true, + t: t2 + } + } + if (t1 < 0 && t2 > 0) { + return { + result: true, + t: 0.0 + } + } + return { + result: false, + t: 0.0 } - return null; } } diff --git a/src/collision/CollisionEntity.hx b/src/collision/CollisionEntity.hx index 1fec7c22..b6c01f02 100644 --- a/src/collision/CollisionEntity.hx +++ b/src/collision/CollisionEntity.hx @@ -1,5 +1,6 @@ package collision; +import collision.Collision.ITSResult; import collision.BVHTree.IBVHObject; import src.TimeState; import src.GameObject; @@ -24,8 +25,9 @@ class CollisionEntity implements IOctreeObject implements IBVHObject { public var bvh:BVHTree; - public var surfaces:Array; + var grid:Grid; + public var surfaces:Array; public var priority:Int; public var position:Int; public var velocity:Vector = new Vector(); @@ -35,12 +37,16 @@ class CollisionEntity implements IOctreeObject implements IBVHObject { var invTransform:Matrix; public var go:GameObject; + public var correctNormals:Bool = false; public var userData:Int; public var fastTransform:Bool = false; + public var isWorldStatic:Bool = false; var _transformKey:Int = 0; + public var key:Int = 0; + var _dbgEntity:h3d.scene.Mesh; public function new(go:GameObject) { @@ -61,16 +67,27 @@ class CollisionEntity implements IOctreeObject implements IBVHObject { // Generates the bvh public function finalize() { this.generateBoundingBox(); + #if hl this.bvh = new BVHTree(); for (surface in this.surfaces) { this.bvh.add(surface); } + #end + var bbox = new Bounds(); + for (surface in this.surfaces) + bbox.add(surface.boundingBox); + this.grid = new Grid(bbox); + for (surface in this.surfaces) + this.grid.insert(surface); + this.grid.build(); // this.bvh.build(); } public function dispose() { - for (s in this.surfaces) - s.dispose(); + if (this.surfaces != null) { + for (s in this.surfaces) + s.dispose(); + } go = null; surfaces = null; bvh = null; @@ -85,7 +102,7 @@ class CollisionEntity implements IOctreeObject implements IBVHObject { var oldPos = this.transform.getPosition(); var newPos = transform.getPosition(); this.transform.setPosition(newPos); - this.invTransform = this.transform.getInverse(); + this.invTransform.prependTranslation(oldPos.x - newPos.x, oldPos.y - newPos.y, oldPos.z - newPos.z); if (this.boundingBox == null) generateBoundingBox(); else { @@ -95,6 +112,21 @@ class CollisionEntity implements IOctreeObject implements IBVHObject { this.boundingBox.yMax += newPos.y - oldPos.y; this.boundingBox.zMin += newPos.z - oldPos.z; this.boundingBox.zMax += newPos.z - oldPos.z; + + if (Debug.drawBounds) { + if (_dbgEntity == null) { + _dbgEntity = cast this.boundingBox.makeDebugObj(); + _dbgEntity.getMaterials()[0].castShadows = false; + _dbgEntity.getMaterials()[0].mainPass.wireframe = true; + MarbleGame.instance.scene.addChild(_dbgEntity); + } else { + _dbgEntity.remove(); + _dbgEntity = cast this.boundingBox.makeDebugObj(); + _dbgEntity.getMaterials()[0].castShadows = false; + _dbgEntity.getMaterials()[0].mainPass.wireframe = true; + MarbleGame.instance.scene.addChild(_dbgEntity); + } + } } } else { this.transform.load(transform); @@ -115,44 +147,49 @@ class CollisionEntity implements IOctreeObject implements IBVHObject { if (Debug.drawBounds) { if (_dbgEntity == null) { _dbgEntity = cast this.boundingBox.makeDebugObj(); + _dbgEntity.getMaterials()[0].castShadows = false; _dbgEntity.getMaterials()[0].mainPass.wireframe = true; MarbleGame.instance.scene.addChild(_dbgEntity); } else { _dbgEntity.remove(); _dbgEntity = cast this.boundingBox.makeDebugObj(); + _dbgEntity.getMaterials()[0].castShadows = false; _dbgEntity.getMaterials()[0].mainPass.wireframe = true; MarbleGame.instance.scene.addChild(_dbgEntity); } } } - public function rayCast(rayOrigin:Vector, rayDirection:Vector):Array { + public function rayCast(rayOrigin:Vector, rayDirection:Vector, results:Array, bestT:Float) { var invMatrix = invTransform; var invTPos = invMatrix.clone(); invTPos.transpose(); var rStart = rayOrigin.clone(); rStart.transform(invMatrix); var rDir = rayDirection.transformed3x3(invMatrix); - if (bvh == null) { - var intersections = octree.raycast(rStart, rDir); - var iData:Array = []; - for (i in intersections) { - i.point.transform(transform); - i.normal.transform3x3(invTPos); - i.normal.normalize(); - iData.push({point: i.point, normal: i.normal, object: i.object}); + // if (bvh == null) { + // var intersections = grid.rayCast(rStart, rDir); // octree.raycast(rStart, rDir); + // // var iData:Array = []; + // for (i in intersections) { + // i.point.transform(transform); + // i.normal.transform3x3(invTPos); + // i.normal.normalize(); + // // iData.push({point: i.point, normal: i.normal, object: i.object}); + // } + // return intersections; // iData; + // } else { + var intersections = grid.rayCast(rStart, rDir, bestT); // this.bvh.rayCast(rStart, rDir); + for (i in intersections) { + i.point.transform(transform); + i.normal.transform3x3(invTPos); + i.normal.normalize(); + if (i.t < bestT) { + bestT = i.t; + results.push(i); } - return iData; - } else { - var intersections = this.bvh.rayCast(rStart, rDir); - for (i in intersections) { - i.point.transform(transform); - i.normal.transform3x3(invTPos); - i.normal.normalize(); - } - - return intersections; } + return bestT; + // } } public function getElementType() { @@ -178,13 +215,18 @@ class CollisionEntity implements IOctreeObject implements IBVHObject { var invScale = invMatrix.getScale(); var sphereRadius = new Vector(radius * invScale.x, radius * invScale.y, radius * invScale.z); sphereBounds.addSpherePos(localPos.x, localPos.y, localPos.z, Math.max(Math.max(sphereRadius.x, sphereRadius.y), sphereRadius.z) * 1.1); - var surfaces = bvh == null ? octree.boundingSearch(sphereBounds).map(x -> cast x) : bvh.boundingSearch(sphereBounds); + var surfaces = grid.boundingSearch(sphereBounds); // bvh == null ? octree.boundingSearch(sphereBounds).map(x -> cast x) : bvh.boundingSearch(sphereBounds); var invtform = invMatrix.clone(); invtform.transpose(); var tform = transform.clone(); // tform.setPosition(tform.getPosition().add(this.velocity.multiply(timeState.dt))); + if (isWorldStatic) { + tform.load(Matrix.I()); + invtform.load(Matrix.I()); + } + var contacts = []; for (obj in surfaces) { @@ -199,20 +241,31 @@ class CollisionEntity implements IOctreeObject implements IBVHObject { // var v0 = surface.points[surface.indices[i]].transformed(tform); // var v = surface.points[surface.indices[i + 1]].transformed(tform); // var v2 = surface.points[surface.indices[i + 2]].transformed(tform); - var v0 = verts.v1; - var v = verts.v2; - var v2 = verts.v3; + var v0 = new Vector(verts.v1x, verts.v1y, verts.v1z); + var v = new Vector(verts.v2x, verts.v2y, verts.v2z); + var v2 = new Vector(verts.v3x, verts.v3y, verts.v3z); - var surfacenormal = verts.n; // surface.normals[surface.indices[i]].transformed3x3(transform).normalized(); + var surfacenormal = new Vector(verts.nx, verts.ny, verts.nz); // surface.normals[surface.indices[i]].transformed3x3(transform).normalized(); - var res = Collision.TriangleSphereIntersection(v0, v, v2, surfacenormal, position, radius); - var closest = res.point; + if (correctNormals) { + var vn = v.sub(v0).cross(v2.sub(v0)).normalized().multiply(-1); + var vdot = vn.dot(surfacenormal); + if (vdot < 0.95) { + v.set(verts.v3x, verts.v3y, verts.v3z); + v2.set(verts.v2x, verts.v2y, verts.v2z); + + surfacenormal.load(vn); + } + } + + var closest = new Vector(); + var normal = new Vector(); + var res = Collision.TriangleSphereIntersection(v0, v, v2, surfacenormal, position, radius, closest, normal); // var closest = Collision.ClosestPtPointTriangle(position, radius, v0, v, v2, surfacenormal); - if (closest != null) { + if (res) { var contactDist = closest.distanceSq(position); - if (contactDist <= radius * radius && contactDist > 0.0225) { - var normal = res.normal; - + // Debug.drawTriangle(v0, v, v2); + if (contactDist <= radius * radius) { if (position.sub(closest).dot(surfacenormal) > 0) { normal.normalize(); @@ -221,11 +274,12 @@ class CollisionEntity implements IOctreeObject implements IBVHObject { // if (testDot > bestDot) { // bestDot = testDot; - var cinfo = new CollisionInfo(); - cinfo.normal = normal; - cinfo.point = closest; + var cinfo = CollisionPool.alloc(); + cinfo.normal.load(normal); + cinfo.point.load(closest); + cinfo.collider = null; // cinfo.collider = this; - cinfo.velocity = this.velocity.clone(); + cinfo.velocity.load(this.velocity); cinfo.contactDistance = Math.sqrt(contactDist); cinfo.otherObject = this.go; // cinfo.penetration = radius - (position.sub(closest).dot(normal)); @@ -233,7 +287,8 @@ class CollisionEntity implements IOctreeObject implements IBVHObject { cinfo.force = surface.force; cinfo.friction = surface.friction; contacts.push(cinfo); - this.go.onMarbleContact(timeState, cinfo); + if (this.go != null) + this.go.onMarbleContact(collisionEntity.marble, timeState, cinfo); // surfaceBestContact = cinfo; // } } diff --git a/src/collision/CollisionHull.hx b/src/collision/CollisionHull.hx index 27533661..3b8bdd17 100644 --- a/src/collision/CollisionHull.hx +++ b/src/collision/CollisionHull.hx @@ -40,16 +40,17 @@ class CollisionHull extends CollisionEntity { var pt = GJK.gjk(sph, this.hull).epa; if (pt != null) { - var cinfo = new CollisionInfo(); + var cinfo = CollisionPool.alloc(); cinfo.normal = pt.normalized(); cinfo.point = sph.position.sub(pt); cinfo.velocity = velocity; + cinfo.collider = null; cinfo.contactDistance = sph.radius + pt.length(); cinfo.restitution = restitution; cinfo.otherObject = this.go; cinfo.friction = friction; cinfo.force = force; - this.go.onMarbleContact(timeState, cinfo); + this.go.onMarbleContact(collisionEntity.marble, timeState, cinfo); return [cinfo]; } } diff --git a/src/collision/CollisionInfo.hx b/src/collision/CollisionInfo.hx index 7992608b..0a82d60b 100644 --- a/src/collision/CollisionInfo.hx +++ b/src/collision/CollisionInfo.hx @@ -4,18 +4,16 @@ import src.GameObject; import h3d.Vector; class CollisionInfo { - public var point:Vector; - public var normal:Vector; - public var velocity:Vector; + public var point:Vector = new Vector(); + public var normal:Vector = new Vector(); + public var velocity:Vector = new Vector(); public var collider:CollisionEntity; public var otherObject:GameObject; public var friction:Float; - public var vAtCMag:Float; public var normalForce:Float; public var restitution:Float; public var contactDistance:Float; public var force:Float; - public var penetration:Float; public function new() {} } diff --git a/src/collision/CollisionPool.hx b/src/collision/CollisionPool.hx new file mode 100644 index 00000000..94ecbfbc --- /dev/null +++ b/src/collision/CollisionPool.hx @@ -0,0 +1,21 @@ +package collision; + +class CollisionPool { + static var pool:Array = []; + static var currentPtr = 0; + + public static function alloc() { + if (pool.length <= currentPtr) { + pool.push(new CollisionInfo()); + } + return pool[currentPtr++]; + } + + public static function clear() { + currentPtr = 0; + } + + public static function freeMemory() { + pool = []; + } +} diff --git a/src/collision/CollisionSurface.hx b/src/collision/CollisionSurface.hx index ec367f61..4d3dc8b6 100644 --- a/src/collision/CollisionSurface.hx +++ b/src/collision/CollisionSurface.hx @@ -6,6 +6,37 @@ import octree.IOctreeObject; import h3d.Vector; import collision.BVHTree.IBVHObject; +@:publicFields +class TransformedCollisionTriangle { + var v1x:Float; + var v1y:Float; + var v1z:Float; + var v2x:Float; + var v2y:Float; + var v2z:Float; + var v3x:Float; + var v3y:Float; + var v3z:Float; + var nx:Float; + var ny:Float; + var nz:Float; + + inline public function new(v1:Vector, v2:Vector, v3:Vector, n:Vector) { + v1x = v1.x; + v1y = v1.y; + v1z = v1.z; + v2x = v2.x; + v2y = v2.y; + v2z = v2.z; + v3x = v3.x; + v3y = v3.y; + v3z = v3.z; + nx = n.x; + ny = n.y; + nz = n.z; + } +} + class CollisionSurface implements IOctreeObject implements IBVHObject { public var priority:Int; public var position:Int; @@ -19,6 +50,7 @@ class CollisionSurface implements IOctreeObject implements IBVHObject { public var originalIndices:Array; public var originalSurfaceIndex:Int; public var transformKeys:Array; + public var key:Int = 0; var _transformedPoints:Array; var _transformedNormals:Array; @@ -107,8 +139,7 @@ class CollisionSurface implements IOctreeObject implements IBVHObject { normals.push(z); } - public function rayCast(rayOrigin:Vector, rayDirection:Vector):Array { - var intersections = []; + public function rayCast(rayOrigin:Vector, rayDirection:Vector, intersections:Array, bestT:Float) { var i = 0; while (i < indices.length) { var p1 = getPoint(indices[i]); @@ -121,11 +152,19 @@ class CollisionSurface implements IOctreeObject implements IBVHObject { var ip = rayOrigin.add(rayDirection.multiply(t)); ip.w = 1; if (t >= 0 && Collision.PointInTriangle(ip, p1, p2, p3)) { - intersections.push({point: ip, normal: n, object: cast this}); + if (t < bestT) { + bestT = t; + intersections.push({ + point: ip.clone(), + normal: n.clone(), + object: cast this, + t: t + }); + } } i += 3; } - return intersections; + return bestT; } public function support(direction:Vector, transform:Matrix) { @@ -147,7 +186,7 @@ class CollisionSurface implements IOctreeObject implements IBVHObject { return furthestVertex; } - public function transformTriangle(idx:Int, tform:Matrix, invtform:Matrix, key:Int) { + public inline function transformTriangle(idx:Int, tform:Matrix, invtform:Matrix, key:Int) { if (_transformedPoints == null) { _transformedPoints = points.copy(); } @@ -182,12 +221,46 @@ class CollisionSurface implements IOctreeObject implements IBVHObject { _transformedPoints[p3 * 3 + 2] = pt.z; transformKeys[p3] = key; } - return { - v1: new Vector(_transformedPoints[p1 * 3], _transformedPoints[p1 * 3 + 1], _transformedPoints[p1 * 3 + 2]), - v2: new Vector(_transformedPoints[p2 * 3], _transformedPoints[p2 * 3 + 1], _transformedPoints[p2 * 3 + 2]), - v3: new Vector(_transformedPoints[p3 * 3], _transformedPoints[p3 * 3 + 1], _transformedPoints[p3 * 3 + 2]), - n: new Vector(_transformedNormals[p1 * 3], _transformedNormals[p1 * 3 + 1], _transformedNormals[p1 * 3 + 2]) - }; + return new TransformedCollisionTriangle(new Vector(_transformedPoints[p1 * 3], _transformedPoints[p1 * 3 + 1], _transformedPoints[p1 * 3 + 2]), + new Vector(_transformedPoints[p2 * 3], _transformedPoints[p2 * 3 + 1], _transformedPoints[p2 * 3 + 2]), + new Vector(_transformedPoints[p3 * 3], _transformedPoints[p3 * 3 + 1], _transformedPoints[p3 * 3 + 2]), + new Vector(_transformedNormals[p1 * 3], _transformedNormals[p1 * 3 + 1], _transformedNormals[p1 * 3 + 2])); + } + + public inline function getTriangle(idx:Int) { + var p1 = indices[idx]; + var p2 = indices[idx + 1]; + var p3 = indices[idx + 2]; + + return new TransformedCollisionTriangle(getPoint(p1), getPoint(p2), getPoint(p3), getNormal(p1)); + } + + public function getTransformed(m:Matrix, invtform:Matrix) { + var tformed = new CollisionSurface(); + tformed.points = this.points.copy(); + tformed.normals = this.normals.copy(); + tformed.indices = this.indices.copy(); + tformed.friction = this.friction; + tformed.force = this.force; + tformed.restitution = this.restitution; + tformed.transformKeys = this.transformKeys.copy(); + + for (i in 0...Std.int(points.length / 3)) { + var v = getPoint(i); + var v2 = v.transformed(m); + tformed.points[i * 3] = v2.x; + tformed.points[i * 3 + 1] = v2.y; + tformed.points[i * 3 + 2] = v2.z; + + var n = getNormal(i); + var n2 = n.transformed3x3(invtform).normalized(); + tformed.normals[i * 3] = n2.x; + tformed.normals[i * 3 + 1] = n2.y; + tformed.normals[i * 3 + 2] = n2.z; + } + tformed.generateBoundingBox(); + + return tformed; } public function dispose() { diff --git a/src/collision/CollisionWorld.hx b/src/collision/CollisionWorld.hx index 1ad34fc3..e089b060 100644 --- a/src/collision/CollisionWorld.hx +++ b/src/collision/CollisionWorld.hx @@ -1,5 +1,6 @@ package collision; +import h3d.Matrix; import src.MarbleGame; import src.TimeState; import h3d.col.Bounds; @@ -7,20 +8,36 @@ import h3d.col.Sphere; import h3d.Vector; import octree.Octree; +@:structInit +@:publicFields +class SphereIntersectionResult { + var foundEntities:Array; + var contacts:Array; +} + class CollisionWorld { - public var octree:Octree; + public var staticWorld:CollisionEntity; + public var grid:GridBroadphase; public var entities:Array = []; public var dynamicEntities:Array = []; - public var dynamicOctree:Octree; + public var dynamicGrid:GridBroadphase; + + public var marbleEntities:Array = []; var dynamicEntitySet:Map = []; public function new() { - this.octree = new Octree(); - this.dynamicOctree = new Octree(); + this.grid = new GridBroadphase(); + this.dynamicGrid = new GridBroadphase(); + this.staticWorld = new CollisionEntity(null); } - public function sphereIntersection(spherecollision:SphereCollisionEntity, timeState:TimeState) { + public function build() { + this.grid.build(); + this.dynamicGrid.build(); + } + + public function sphereIntersection(spherecollision:SphereCollisionEntity, timeState:TimeState):SphereIntersectionResult { var position = spherecollision.transform.getPosition(); var radius = spherecollision.radius; // var velocity = spherecollision.velocity; @@ -32,7 +49,7 @@ class CollisionWorld { box.transform(rotQuat.toMatrix()); box.offset(position.x, position.y, position.z); // box.addSpherePos(position.x + velocity.x * timeState.dt, position.y + velocity.y * timeState.dt, position.z + velocity.z * timeState.dt, radius); - var intersections = this.octree.boundingSearch(box); + var intersections = this.grid.boundingSearch(box); // var intersections = this.rtree.search([box.xMin, box.yMax, box.zMin], [box.xSize, box.ySize, box.zSize]); @@ -48,43 +65,43 @@ class CollisionWorld { } } - var dynSearch = dynamicOctree.boundingSearch(box).map(x -> cast(x, CollisionEntity)); + // if (marbleEntities.length > 1) { + // marbleSap.recompute(); + // var sapCollisions = marbleSap.getIntersections(spherecollision); + // for (obj in sapCollisions) { + // if (obj.go.isCollideable) { + // contacts = contacts.concat(obj.sphereIntersection(spherecollision, timeState)); + // } + // } + // } + + // contacts = contacts.concat(this.staticWorld.sphereIntersection(spherecollision, timeState)); + + var dynSearch = dynamicGrid.boundingSearch(box); for (obj in dynSearch) { if (obj != spherecollision) { - if (obj.boundingBox.collide(box) && obj.go.isCollideable) - contacts = contacts.concat(obj.sphereIntersection(spherecollision, timeState)); + var col = cast(obj, CollisionEntity); + if (col.boundingBox.collide(box) && col.go.isCollideable) + contacts = contacts.concat(col.sphereIntersection(spherecollision, timeState)); } } + + // for (marb in marbleEntities) { + // if (marb != spherecollision) { + // if (spherecollision.go.isCollideable) { + // var isecs = marb.sphereIntersection(spherecollision, timeState); + // if (isecs.length > 0) + // foundEntities.push(marb); + // contacts = contacts.concat(isecs); + // } + // } + // } return {foundEntities: foundEntities, contacts: contacts}; } - public function radiusSearch(center:Vector, radius:Float) { - var intersections = this.octree.radiusSearch(center, radius); - - var box = new Bounds(); - box.xMin = center.x - radius; - box.yMin = center.y - radius; - box.zMin = center.z - radius; - box.xMax = center.x + radius; - box.yMax = center.y + radius; - box.zMax = center.z + radius; - - var contacts:Array = []; - - for (obj in intersections) { - var entity:CollisionEntity = cast obj; - - contacts.push(entity); - } - - contacts = contacts.concat(dynamicOctree.boundingSearch(box, false).map(x -> cast(x, CollisionEntity))); - - return contacts; - } - public function boundingSearch(bounds:Bounds, useCache:Bool = true) { - var contacts = this.octree.boundingSearch(bounds, useCache).map(x -> cast(x, CollisionEntity)); - contacts = contacts.concat(dynamicOctree.boundingSearch(bounds, useCache).map(x -> cast(x, CollisionEntity))); + var contacts = this.grid.boundingSearch(bounds).map(x -> cast(x, CollisionEntity)); + contacts = contacts.concat(dynamicGrid.boundingSearch(bounds).map(x -> cast(x, CollisionEntity))); return contacts; } @@ -98,36 +115,74 @@ class CollisionWorld { + rayDirection.x * rayLength, rayStart.y + rayDirection.y * rayLength, rayStart.z + rayDirection.z * rayLength); - var objs = this.octree.boundingSearch(bounds).concat(dynamicOctree.boundingSearch(bounds)).map(x -> cast(x, CollisionEntity)); + var objs = this.grid.boundingSearch(bounds); + var dynObjs = dynamicGrid.boundingSearch(bounds); var results = []; for (obj in objs) { - results = results.concat(obj.rayCast(rayStart, rayDirection)); + var oo = cast(obj, CollisionEntity); + oo.rayCast(rayStart, rayDirection, results, rayLength); } + + for (obj in dynObjs) { + var oo = cast(obj, CollisionEntity); + oo.rayCast(rayStart, rayDirection, results, rayLength); + } + // results = results.concat(this.staticWorld.rayCast(rayStart, rayDirection)); return results; } public function addEntity(entity:CollisionEntity) { - this.octree.insert(entity); + this.grid.insert(entity); this.entities.push(entity); // this.rtree.insert([entity.boundingBox.xMin, entity.boundingBox.yMin, entity.boundingBox.zMin], // [entity.boundingBox.xSize, entity.boundingBox.ySize, entity.boundingBox.zSize], entity); } + public function removeEntity(entity:CollisionEntity) { + this.entities.remove(entity); + this.grid.remove(entity); + } + + public function addMarbleEntity(entity:SphereCollisionEntity) { + this.marbleEntities.push(entity); + } + + public function removeMarbleEntity(entity:SphereCollisionEntity) { + this.marbleEntities.remove(entity); + } + public function addMovingEntity(entity:CollisionEntity) { this.dynamicEntities.push(entity); - this.dynamicOctree.insert(entity); + this.dynamicGrid.insert(entity); this.dynamicEntitySet.set(entity, true); } + public function removeMovingEntity(entity:CollisionEntity) { + this.dynamicEntities.remove(entity); + this.dynamicGrid.remove(entity); + this.dynamicEntitySet.remove(entity); + } + public function updateTransform(entity:CollisionEntity) { if (!dynamicEntitySet.exists(entity)) { - this.octree.update(entity); + this.grid.update(entity); } else { - this.dynamicOctree.update(entity); + this.dynamicGrid.update(entity); } } + public function addStaticInterior(entity:CollisionEntity, transform:Matrix) { + var invTform = transform.getInverse(); + for (surf in entity.surfaces) { + staticWorld.addSurface(surf.getTransformed(transform, invTform)); + } + } + + public function finalizeStaticGeometry() { + this.staticWorld.finalize(); + } + public function dispose() { for (e in entities) { e.dispose(); @@ -135,10 +190,12 @@ class CollisionWorld { for (e in dynamicEntities) { e.dispose(); } - octree = null; + grid = null; entities = null; dynamicEntities = null; - dynamicOctree = null; + dynamicGrid = null; dynamicEntitySet = null; + staticWorld.dispose(); + staticWorld = null; } } diff --git a/src/collision/Grid.hx b/src/collision/Grid.hx index cd713ec8..d6df17d2 100644 --- a/src/collision/Grid.hx +++ b/src/collision/Grid.hx @@ -3,22 +3,31 @@ package collision; import haxe.Exception; import h3d.Vector; import h3d.col.Bounds; +import src.Util; class Grid { public var bounds:Bounds; // The bounds of the grid public var cellSize:Vector; // The dimensions of one cell - public var CELL_DIV = new Vector(12, 12, 12); // split the bounds into cells of dimensions 1/16th of the corresponding dimensions of the bounds + static var CELL_SIZE = 24; - var map:Map> = new Map(); + public var CELL_DIV = new Vector(CELL_SIZE, CELL_SIZE); // split the bounds into cells of dimensions 1/16th of the corresponding dimensions of the bounds + + var cells:Array> = []; var surfaces:Array = []; + var searchKey:Int = 0; public function new(bounds:Bounds) { this.bounds = bounds.clone(); - this.cellSize = new Vector(bounds.xSize / CELL_DIV.x, bounds.ySize / CELL_DIV.y, bounds.zSize / CELL_DIV.z); + this.cellSize = new Vector(bounds.xSize / CELL_DIV.x, bounds.ySize / CELL_DIV.y); + for (i in 0...CELL_SIZE) { + for (j in 0...CELL_SIZE) { + this.cells.push([]); + } + } } public function insert(surface:CollisionSurface) { @@ -26,61 +35,80 @@ class Grid { if (this.bounds.containsBounds(surface.boundingBox)) { var idx = this.surfaces.length; this.surfaces.push(surface); - - var xStart = Math.floor((surface.boundingBox.xMin - bounds.xMin) / this.cellSize.x); - var yStart = Math.floor((surface.boundingBox.yMin - bounds.yMin) / this.cellSize.y); - var zStart = Math.floor((surface.boundingBox.zMin - bounds.zMin) / this.cellSize.z); - var xEnd = Math.ceil((surface.boundingBox.xMax - bounds.xMin) / this.cellSize.x) + 1; - var yEnd = Math.ceil((surface.boundingBox.yMax - bounds.yMin) / this.cellSize.y) + 1; - var zEnd = Math.ceil((surface.boundingBox.zMax - bounds.zMin) / this.cellSize.z) + 1; - - // Insert the surface references from [xStart, yStart, zStart] to [xEnd, yEnd, zEnd] into the map - for (i in xStart...xEnd) { - for (j in yStart...yEnd) { - for (k in zStart...zEnd) { - var hash = hashVector(i, j, k); - if (!this.map.exists(hash)) { - this.map.set(hash, []); - } - this.map.get(hash).push(idx); - } - } - } } else { throw new Exception("Surface is not contained in the grid's bounds"); } } + public function build() { + for (i in 0...CELL_SIZE) { + var minX = this.bounds.xMin; + var maxX = this.bounds.xMin; + minX += i * this.cellSize.x; + maxX += (i + 1) * this.cellSize.x; + for (j in 0...CELL_SIZE) { + var minY = this.bounds.yMin; + var maxY = this.bounds.yMin; + minY += j * this.cellSize.y; + maxY += (j + 1) * this.cellSize.y; + + var binRect = new h2d.col.Bounds(); + binRect.xMin = minX; + binRect.yMin = minY; + binRect.xMax = maxX; + binRect.yMax = maxY; + + for (idx in 0...this.surfaces.length) { + var surface = this.surfaces[idx]; + var hullRect = new h2d.col.Bounds(); + hullRect.xMin = surface.boundingBox.xMin; + hullRect.yMin = surface.boundingBox.yMin; + hullRect.xMax = surface.boundingBox.xMax; + hullRect.yMax = surface.boundingBox.yMax; + + if (hullRect.intersects(binRect)) { + this.cells[16 * i + j].push(idx); + } + } + } + } + } + // searchbox should be in LOCAL coordinates public function boundingSearch(searchbox:Bounds) { - var xStart = Math.floor((searchbox.xMin - bounds.xMin) / this.cellSize.x); - var yStart = Math.floor((searchbox.yMin - bounds.yMin) / this.cellSize.y); - var zStart = Math.floor((searchbox.zMin - bounds.zMin) / this.cellSize.z); - var xEnd = Math.ceil((searchbox.xMax - bounds.xMin) / this.cellSize.x) + 1; - var yEnd = Math.ceil((searchbox.yMax - bounds.yMin) / this.cellSize.y) + 1; - var zEnd = Math.ceil((searchbox.zMax - bounds.zMin) / this.cellSize.z) + 1; + var queryMinX = Math.max(searchbox.xMin, bounds.xMin); + var queryMinY = Math.max(searchbox.yMin, bounds.yMin); + var queryMaxX = Math.min(searchbox.xMax, bounds.xMax); + var queryMaxY = Math.min(searchbox.yMax, bounds.yMax); + var xStart = Math.floor((queryMinX - bounds.xMin) / this.cellSize.x); + var yStart = Math.floor((queryMinY - bounds.yMin) / this.cellSize.y); + var xEnd = Math.ceil((queryMaxX - bounds.xMin) / this.cellSize.x); + var yEnd = Math.ceil((queryMaxY - bounds.yMin) / this.cellSize.y); + + if (xStart < 0) + xStart = 0; + if (yStart < 0) + yStart = 0; + if (xEnd > CELL_SIZE) + xEnd = CELL_SIZE; + if (yEnd > CELL_SIZE) + yEnd = CELL_SIZE; var foundSurfaces = []; - for (surf in this.surfaces) { - surf.key = false; - } + searchKey++; // Insert the surface references from [xStart, yStart, zStart] to [xEnd, yEnd, zEnd] into the map for (i in xStart...xEnd) { for (j in yStart...yEnd) { - for (k in zStart...zEnd) { - var hash = hashVector(i, j, k); - if (this.map.exists(hash)) { - var surfs = this.map.get(hash); - for (surf in surfs) { - if (surfaces[surf].key) - continue; - if (searchbox.containsBounds(surfaces[surf].boundingBox) || searchbox.collide(surfaces[surf].boundingBox)) { - foundSurfaces.push(surfaces[surf]); - surfaces[surf].key = true; - } - } + for (surfIdx in cells[16 * i + j]) { + var surf = surfaces[surfIdx]; + if (surf.key == searchKey) + continue; + surf.key = searchKey; + if (searchbox.containsBounds(surf.boundingBox) || searchbox.collide(surf.boundingBox)) { + foundSurfaces.push(surf); + surf.key = searchKey; } } } @@ -97,52 +125,44 @@ class Grid { return elegantPair(elegantPair(x, y), z); } - public function rayCast(origin:Vector, direction:Vector) { + public function rayCast(origin:Vector, direction:Vector, bestT:Float) { var cell = origin.sub(this.bounds.getMin().toVector()); cell.x /= this.cellSize.x; cell.y /= this.cellSize.y; - cell.z /= this.cellSize.z; - + var destCell = origin.add(direction.multiply(bestT)).sub(this.bounds.getMin().toVector()); + destCell.x /= this.cellSize.x; + destCell.y /= this.cellSize.y; var stepX, outX, X = Math.floor(cell.x); var stepY, outY, Y = Math.floor(cell.y); - var stepZ, outZ, Z = Math.floor(cell.z); - - if ((X < 0) || (X >= CELL_DIV.x) || (Y < 0) || (Y >= CELL_DIV.y) || (Z < 0) || (Z >= CELL_DIV.z)) + var destX = Util.clamp(Math.max(Math.floor(destCell.x), 0), 0, CELL_DIV.x); + var destY = Util.clamp(Math.max(Math.floor(destCell.y), 0), 0, CELL_DIV.y); + if ((X < 0) || (X >= CELL_DIV.x) || (Y < 0) || (Y >= CELL_DIV.y)) return []; - var cb = new Vector(); - if (direction.x > 0) { stepX = 1; - outX = CELL_DIV.x; - cb.x = this.bounds.getMin().x + (X + 1) * this.cellSize.x; + outX = destX; + if (outX == X) + outX = Math.min(CELL_DIV.x, outX + 1); + cb.x = this.bounds.xMin + (X + 1) * this.cellSize.x; } else { stepX = -1; - outX = -1; - cb.x = this.bounds.getMin().x + X * this.cellSize.x; + outX = destX - 1; + cb.x = this.bounds.xMin + X * this.cellSize.x; } if (direction.y > 0.0) { stepY = 1; - outY = CELL_DIV.y; - cb.y = this.bounds.getMin().y + (Y + 1) * this.cellSize.y; + outY = destY; + if (outY == Y) + outY = Math.min(CELL_DIV.y, outY + 1); + cb.y = this.bounds.yMin + (Y + 1) * this.cellSize.y; } else { stepY = -1; - outY = -1; - cb.y = this.bounds.getMin().y + Y * this.cellSize.y; + outY = destY - 1; + cb.y = this.bounds.yMin + Y * this.cellSize.y; } - if (direction.z > 0.0) { - stepZ = 1; - outZ = CELL_DIV.z; - cb.z = this.bounds.getMin().z + (Z + 1) * this.cellSize.z; - } else { - stepZ = -1; - outZ = -1; - cb.z = this.bounds.getMin().z + Z * this.cellSize.z; - } - var tmax = new Vector(); var tdelta = new Vector(); - var rxr, ryr, rzr; if (direction.x != 0) { rxr = 1.0 / direction.x; @@ -156,58 +176,29 @@ class Grid { tdelta.y = this.cellSize.y * stepY * ryr; } else tmax.y = 1000000; - if (direction.z != 0) { - rzr = 1.0 / direction.z; - tmax.z = (cb.z - origin.z) * rzr; - tdelta.z = this.cellSize.z * stepZ * rzr; - } else - tmax.z = 1000000; - - for (surf in this.surfaces) { - surf.key = false; - } - + searchKey++; var results = []; - while (true) { - var hash = hashVector(X, Y, Z); - if (this.map.exists(hash)) { - var currentSurfaces = this.map.get(hash).map(x -> this.surfaces[x]); - - for (surf in currentSurfaces) { - if (surf.key) - continue; - results = results.concat(surf.rayCast(origin, direction)); - surf.key = true; - } + var cell = cells[16 * X + Y]; + for (idx in cell) { + var surf = surfaces[idx]; + if (surf.key == searchKey) + continue; + surf.key = searchKey; + bestT = surf.rayCast(origin, direction, results, bestT); } if (tmax.x < tmax.y) { - if (tmax.x < tmax.z) { - X = X + stepX; - if (X == outX) - break; - tmax.x += tdelta.x; - } else { - Z = Z + stepZ; - if (Z == outZ) - break; - tmax.z += tdelta.z; - } + X = X + stepX; + if (X == outX) + break; + tmax.x += tdelta.x; } else { - if (tmax.y < tmax.z) { - Y = Y + stepY; - if (Y == outY) - break; - tmax.y += tdelta.y; - } else { - Z = Z + stepZ; - if (Z == outZ) - break; - tmax.z += tdelta.z; - } + Y = Y + stepY; + if (Y == outY) + break; + tmax.y += tdelta.y; } } - return results; } } diff --git a/src/collision/GridBroadphase.hx b/src/collision/GridBroadphase.hx new file mode 100644 index 00000000..ab6586a4 --- /dev/null +++ b/src/collision/GridBroadphase.hx @@ -0,0 +1,342 @@ +package collision; + +import haxe.Exception; +import h3d.Vector; +import h3d.col.Bounds; +import src.Util; + +@:publicFields +@:structInit +class GridBroadphaseProxy { + var index:Int; + var object:CollisionEntity; + var xMin:Int; + var xMax:Int; + var yMin:Int; + var yMax:Int; +} + +class GridBroadphase { + public var bounds:Bounds; // The bounds of the grid + + public var cellSize:Vector; // The dimensions of one cell + + static var CELL_SIZE = 24; + + public var CELL_DIV = new Vector(CELL_SIZE, CELL_SIZE); // split the bounds into cells of dimensions 1/16th of the corresponding dimensions of the bounds + + var cells:Array> = []; + + var objects:Array = []; + var objectToProxy:Map = []; + var searchKey:Int = 0; + + var _built = false; + + public function new() { + // this.bounds = bounds.clone(); + + // this.cellSize = new Vector(bounds.xSize / CELL_DIV.x, bounds.ySize / CELL_DIV.y); + for (i in 0...CELL_SIZE) { + for (j in 0...CELL_SIZE) { + this.cells.push([]); + } + } + } + + public function insert(object:CollisionEntity) { + if (!_built) { + var idx = this.objects.length; + this.objects.push({ + object: object, + xMin: 1000, + yMin: 1000, + xMax: -1000, + yMax: -1000, + index: idx, + }); + objectToProxy.set(object, this.objects[this.objects.length - 1]); + } else { + var idx = this.objects.length; + var proxy:GridBroadphaseProxy = { + object: object, + xMin: 1000, + yMin: 1000, + xMax: -1000, + yMax: -1000, + index: idx, + }; + this.objects.push(proxy); + objectToProxy.set(object, proxy); + + var queryMinX = Math.max(object.boundingBox.xMin, bounds.xMin); + var queryMinY = Math.max(object.boundingBox.yMin, bounds.yMin); + var queryMaxX = Math.min(object.boundingBox.xMax, bounds.xMax); + var queryMaxY = Math.min(object.boundingBox.yMax, bounds.yMax); + var xStart = Math.floor((queryMinX - bounds.xMin) / this.cellSize.x); + var yStart = Math.floor((queryMinY - bounds.yMin) / this.cellSize.y); + var xEnd = Math.ceil((queryMaxX - bounds.xMin) / this.cellSize.x); + var yEnd = Math.ceil((queryMaxY - bounds.yMin) / this.cellSize.y); + + for (i in xStart...xEnd) { + for (j in yStart...yEnd) { + this.cells[16 * i + j].push(idx); + proxy.xMin = Std.int(Math.min(proxy.xMin, i)); + proxy.yMin = Std.int(Math.min(proxy.yMin, j)); + proxy.xMax = Std.int(Math.max(proxy.xMax, i)); + proxy.yMax = Std.int(Math.max(proxy.yMax, j)); + } + } + } + } + + public function remove(object:CollisionEntity) { + var proxy = objectToProxy.get(object); + if (proxy == null) + return; + for (i in proxy.xMin...(proxy.xMax + 1)) { + for (j in proxy.yMin...(proxy.yMax + 1)) { + this.cells[16 * i + j].remove(proxy.index); + } + } + this.objects[proxy.index] = null; // Preserve indices pls + objectToProxy.remove(object); + } + + public function update(object:CollisionEntity) { + if (!_built) + return; + var queryMinX = Math.max(object.boundingBox.xMin, bounds.xMin); + var queryMinY = Math.max(object.boundingBox.yMin, bounds.yMin); + var queryMaxX = Math.min(object.boundingBox.xMax, bounds.xMax); + var queryMaxY = Math.min(object.boundingBox.yMax, bounds.yMax); + var xStart = Math.floor((queryMinX - bounds.xMin) / this.cellSize.x); + var yStart = Math.floor((queryMinY - bounds.yMin) / this.cellSize.y); + var xEnd = Math.floor((queryMaxX - bounds.xMin) / this.cellSize.x); + var yEnd = Math.floor((queryMaxY - bounds.yMin) / this.cellSize.y); + var proxy = objectToProxy.get(object); + if (proxy == null) { + insert(object); + } else { + // Update the cells + if (xStart != proxy.xMin || yStart != proxy.yMin || xEnd != proxy.xMax || yEnd != proxy.yMax) { + // Rebin the object + for (i in proxy.xMin...(proxy.xMax + 1)) { + for (j in proxy.yMin...(proxy.yMax + 1)) { + this.cells[16 * i + j].remove(proxy.index); + } + } + for (i in xStart...(xEnd + 1)) { + for (j in yStart...(yEnd + 1)) { + this.cells[16 * i + j].push(proxy.index); + } + } + proxy.xMin = xStart; + proxy.yMin = yStart; + proxy.xMax = xEnd; + proxy.yMax = yEnd; + } + } + } + + public function build() { + if (_built) + return; + _built = true; + // Find the bounds + var xMin = 1e8; + var xMax = -1e8; + var yMin = 1e8; + var yMax = -1e8; + var zMin = 1e8; + var zMax = -1e8; + for (i in 0...this.objects.length) { + if (this.objects[i] == null) + continue; + var surface = this.objects[i].object; + xMin = Math.min(xMin, surface.boundingBox.xMin); + xMax = Math.max(xMax, surface.boundingBox.xMax); + yMin = Math.min(yMin, surface.boundingBox.yMin); + yMax = Math.max(yMax, surface.boundingBox.yMax); + zMin = Math.min(zMin, surface.boundingBox.zMin); + zMax = Math.max(zMax, surface.boundingBox.zMax); + } + // Some padding + xMin -= 100; + xMax += 100; + yMin -= 100; + yMax += 100; + zMin -= 100; + zMax += 100; + this.bounds = Bounds.fromValues(xMin, yMin, zMin, xMax - xMin, yMax - yMin, zMax - zMin); + this.cellSize = new Vector(this.bounds.xSize / CELL_DIV.x, this.bounds.ySize / CELL_DIV.y); + + // Insert the objects + for (i in 0...CELL_SIZE) { + var minX = this.bounds.xMin; + var maxX = this.bounds.xMin; + minX += i * this.cellSize.x; + maxX += (i + 1) * this.cellSize.x; + for (j in 0...CELL_SIZE) { + var minY = this.bounds.yMin; + var maxY = this.bounds.yMin; + minY += j * this.cellSize.y; + maxY += (j + 1) * this.cellSize.y; + + var binRect = new h2d.col.Bounds(); + binRect.xMin = minX; + binRect.yMin = minY; + binRect.xMax = maxX; + binRect.yMax = maxY; + + for (idx in 0...this.objects.length) { + if (this.objects[idx] == null) + continue; + var surface = this.objects[idx]; + var hullRect = new h2d.col.Bounds(); + hullRect.xMin = surface.object.boundingBox.xMin; + hullRect.yMin = surface.object.boundingBox.yMin; + hullRect.xMax = surface.object.boundingBox.xMax; + hullRect.yMax = surface.object.boundingBox.yMax; + + if (hullRect.intersects(binRect)) { + this.cells[16 * i + j].push(idx); + surface.xMin = Std.int(Math.min(surface.xMin, i)); + surface.yMin = Std.int(Math.min(surface.yMin, j)); + surface.xMax = Std.int(Math.max(surface.xMax, i)); + surface.yMax = Std.int(Math.max(surface.yMax, j)); + } + } + } + } + } + + // searchbox should be in LOCAL coordinates + public function boundingSearch(searchbox:Bounds) { + var queryMinX = Math.max(searchbox.xMin, bounds.xMin); + var queryMinY = Math.max(searchbox.yMin, bounds.yMin); + var queryMaxX = Math.min(searchbox.xMax, bounds.xMax); + var queryMaxY = Math.min(searchbox.yMax, bounds.yMax); + var xStart = Math.floor((queryMinX - bounds.xMin) / this.cellSize.x); + var yStart = Math.floor((queryMinY - bounds.yMin) / this.cellSize.y); + var xEnd = Math.ceil((queryMaxX - bounds.xMin) / this.cellSize.x); + var yEnd = Math.ceil((queryMaxY - bounds.yMin) / this.cellSize.y); + + if (xStart < 0) + xStart = 0; + if (yStart < 0) + yStart = 0; + if (xEnd > CELL_SIZE) + xEnd = CELL_SIZE; + if (yEnd > CELL_SIZE) + yEnd = CELL_SIZE; + + var foundSurfaces = []; + + searchKey++; + + // Insert the surface references from [xStart, yStart, zStart] to [xEnd, yEnd, zEnd] into the map + for (i in xStart...xEnd) { + for (j in yStart...yEnd) { + for (surfIdx in cells[16 * i + j]) { + var surf = objects[surfIdx].object; + if (surf.key == searchKey) + continue; + surf.key = searchKey; + if (searchbox.containsBounds(surf.boundingBox) || searchbox.collide(surf.boundingBox)) { + foundSurfaces.push(surf); + surf.key = searchKey; + } + } + } + } + + return foundSurfaces; + } + + function elegantPair(x:Int, y:Int) { + return (x >= y) ? (x * x + x + y) : (y * y + x); + } + + function hashVector(x:Int, y:Int, z:Int) { + return elegantPair(elegantPair(x, y), z); + } + + public function rayCast(origin:Vector, direction:Vector, bestT:Float) { + var cell = origin.sub(this.bounds.getMin().toVector()); + cell.x /= this.cellSize.x; + cell.y /= this.cellSize.y; + var destCell = origin.add(direction.multiply(bestT)).sub(this.bounds.getMin().toVector()); + destCell.x /= this.cellSize.x; + destCell.y /= this.cellSize.y; + var stepX, outX, X = Math.floor(cell.x); + var stepY, outY, Y = Math.floor(cell.y); + var destX = Util.clamp(Math.max(Math.floor(destCell.x), 0), 0, CELL_DIV.x); + var destY = Util.clamp(Math.max(Math.floor(destCell.y), 0), 0, CELL_DIV.y); + if ((X < 0) || (X >= CELL_DIV.x) || (Y < 0) || (Y >= CELL_DIV.y)) { + return []; + } + var cb = new Vector(); + if (direction.x > 0) { + stepX = 1; + outX = destX; + if (outX == X) + outX = Math.min(CELL_DIV.x, outX + 1); + cb.x = this.bounds.xMin + (X + 1) * this.cellSize.x; + } else { + stepX = -1; + outX = destX - 1; + cb.x = this.bounds.xMin + X * this.cellSize.x; + } + if (direction.y > 0.0) { + stepY = 1; + outY = destY; + if (outY == Y) + outY = Math.min(CELL_DIV.y, outY + 1); + cb.y = this.bounds.yMin + (Y + 1) * this.cellSize.y; + } else { + stepY = -1; + outY = destY - 1; + cb.y = this.bounds.yMin + Y * this.cellSize.y; + } + var tmax = new Vector(); + var tdelta = new Vector(); + var rxr, ryr, rzr; + if (direction.x != 0) { + rxr = 1.0 / direction.x; + tmax.x = (cb.x - origin.x) * rxr; + tdelta.x = this.cellSize.x * stepX * rxr; + } else + tmax.x = 1000000; + if (direction.y != 0) { + ryr = 1.0 / direction.y; + tmax.y = (cb.y - origin.y) * ryr; + tdelta.y = this.cellSize.y * stepY * ryr; + } else + tmax.y = 1000000; + searchKey++; + var results = []; + while (true) { + var cell = cells[16 * X + Y]; + for (idx in cell) { + var surf = objects[idx].object; + if (surf.key == searchKey) + continue; + surf.key = searchKey; + bestT = surf.rayCast(origin, direction, results, bestT); + } + if (tmax.x < tmax.y) { + X = X + stepX; + if (X == outX) + break; + tmax.x += tdelta.x; + } else { + Y = Y + stepY; + if (Y == outY) + break; + tmax.y += tdelta.y; + } + } + return results; + } +} diff --git a/src/collision/SphereCollisionEntity.hx b/src/collision/SphereCollisionEntity.hx index 5bb97230..06892285 100644 --- a/src/collision/SphereCollisionEntity.hx +++ b/src/collision/SphereCollisionEntity.hx @@ -13,6 +13,7 @@ import src.Debug; class SphereCollisionEntity extends CollisionEntity { public var radius:Float; public var marble:Marble; + public var ignore:Bool = false; var _dbgEntity2:h3d.scene.Mesh; @@ -27,8 +28,9 @@ class SphereCollisionEntity extends CollisionEntity { public override function generateBoundingBox() { var boundingBox = new Bounds(); var pos = transform.getPosition(); - boundingBox.addSpherePos(pos.x, pos.y, pos.z, radius); - boundingBox.transform3x3(transform); + boundingBox.addSpherePos(0, 0, 0, radius); + boundingBox.transform(transform); + this.boundingBox = boundingBox; if (Debug.drawBounds) { @@ -68,12 +70,14 @@ class SphereCollisionEntity extends CollisionEntity { } } - public override function rayCast(rayOrigin:Vector, rayDirection:Vector) { + public override function rayCast(rayOrigin:Vector, rayDirection:Vector, results:Array, bestT:Float) { // TEMP cause bruh - return []; + return Math.POSITIVE_INFINITY; } public override function sphereIntersection(collisionEntity:SphereCollisionEntity, timeState:TimeState) { + if (ignore) + return []; var contacts = []; var thispos = transform.getPosition(); var position = collisionEntity.transform.getPosition(); @@ -85,26 +89,25 @@ class SphereCollisionEntity extends CollisionEntity { if (otherRadius * otherRadius * 1.01 > otherDist.lengthSq()) { var normDist = otherDist.normalized(); - var contact = new CollisionInfo(); + var contact = CollisionPool.alloc(); contact.collider = this; contact.friction = 1; contact.restitution = 1; - contact.velocity = this.velocity; + contact.velocity.load(this.velocity); contact.otherObject = this.go; - contact.point = position.add(normDist); - contact.normal = normDist.multiply(-1); + contact.point.load(position.add(normDist)); + contact.normal.load(normDist.multiply(-1)); contact.force = 0; contact.contactDistance = contact.point.distance(position); - contact.penetration = radius - (position.sub(contact.point).dot(contact.normal)); contacts.push(contact); // var othercontact = new CollisionInfo(); // othercontact.collider = collisionEntity; // othercontact.friction = 1; // othercontact.restitution = 1; - // othercontact.velocity = this.velocity; - // othercontact.point = thispos.add(position).multiply(0.5); - // othercontact.normal = contact.point.sub(position).normalized(); + // othercontact.velocity = collisionEntity.velocity.clone(); + // othercontact.point = thispos.sub(normDist); + // othercontact.normal = normDist.clone(); // othercontact.contactDistance = contact.point.distance(position); // othercontact.force = 0; // othercontact.penetration = this.radius - (thispos.sub(othercontact.point).dot(othercontact.normal)); diff --git a/src/dts/Sequence.hx b/src/dts/Sequence.hx index 8e81be70..187a24e9 100644 --- a/src/dts/Sequence.hx +++ b/src/dts/Sequence.hx @@ -30,6 +30,7 @@ class Sequence { var priority:Int; var flags:Int; var dirtyFlags:Int; + var lastSequenceKeyframe:Float; public function new() {} diff --git a/src/fs/ManifestFileSystem.hx b/src/fs/ManifestFileSystem.hx index ad099099..48d781bc 100644 --- a/src/fs/ManifestFileSystem.hx +++ b/src/fs/ManifestFileSystem.hx @@ -128,7 +128,7 @@ class ManifestEntry extends FileEntry { #elseif js if (loaded) { if (onReady != null) - haxe.Timer.delay(onReady, 1); + onReady(); } else { js.Browser.window.fetch(file).then((res:js.html.Response) -> { return res.arrayBuffer(); diff --git a/src/fs/TorqueFileSystem.hx b/src/fs/TorqueFileSystem.hx index 4158cba9..ed774242 100644 --- a/src/fs/TorqueFileSystem.hx +++ b/src/fs/TorqueFileSystem.hx @@ -2,8 +2,54 @@ package fs; import hxd.fs.LocalFileSystem; +#if hl +class TorqueFileEntry extends LocalEntry { + override function load(?onReady:Void->Void):Void { + #if macro + onReady(); + #else + // if (Settings.optionsSettings.fastLoad) + onReady(); + // else { + // if (onReady != null) + // haxe.Timer.delay(onReady, 1); + // } + #end + } +} +#end + class TorqueFileSystem extends LocalFileSystem { #if hl + public function new(dir:String, configuration:String) { + super(dir, configuration); + baseDir = dir; + if (configuration == null) + configuration = "default"; + + #if (macro && haxe_ver >= 4.0) + var exePath = null; + #elseif (haxe_ver >= 3.3) + var pr = Sys.programPath(); + var exePath = pr == null ? null : pr.split("\\").join("/").split("/"); + #else + var exePath = Sys.executablePath().split("\\").join("/").split("/"); + #end + + if (exePath != null) + exePath.pop(); + var froot = exePath == null ? baseDir : sys.FileSystem.fullPath(exePath.join("/") + "/" + baseDir); + if (froot == null || !sys.FileSystem.exists(froot) || !sys.FileSystem.isDirectory(froot)) { + froot = sys.FileSystem.fullPath(baseDir); + if (froot == null || !sys.FileSystem.exists(froot) || !sys.FileSystem.isDirectory(froot)) + throw "Could not find dir " + dir; + } + baseDir = froot.split("\\").join("/"); + if (!StringTools.endsWith(baseDir, "/")) + baseDir += "/"; + root = new TorqueFileEntry(this, "root", null, baseDir); + } + override function checkPath(path:String) { // make sure the file is loaded with correct case ! var baseDir = new haxe.io.Path(path).dir; @@ -12,7 +58,10 @@ class TorqueFileSystem extends LocalFileSystem { if (c == null) { isNew = true; c = new Map(); - for (f in try sys.FileSystem.readDirectory(baseDir) catch (e:Dynamic) []) + for (f in try + sys.FileSystem.readDirectory(baseDir) + catch (e:Dynamic) + []) c.set(f.toLowerCase(), true); directoryCache.set(baseDir.toLowerCase(), c); } @@ -37,7 +86,7 @@ class TorqueFileSystem extends LocalFileSystem { return null; f = f.split("\\").join("/"); if (!check || (sys.FileSystem.exists(f) && checkPath(f))) { - e = new LocalEntry(this, path.split("/").pop(), path, f); + e = new TorqueFileEntry(this, path.split("/").pop(), path, f); convert.run(e); if (e.file == null) e = null; diff --git a/src/gui/AchievementsGui.hx b/src/gui/AchievementsGui.hx index e2a331f3..02d2b819 100644 --- a/src/gui/AchievementsGui.hx +++ b/src/gui/AchievementsGui.hx @@ -6,6 +6,7 @@ import src.ResourceLoader; import src.MarbleGame; import src.Settings; import src.Mission; +import src.MissionList; class AchievementsGui extends GuiImage { public function new() { diff --git a/src/gui/Canvas.hx b/src/gui/Canvas.hx index 9414e126..f6188137 100644 --- a/src/gui/Canvas.hx +++ b/src/gui/Canvas.hx @@ -10,6 +10,7 @@ import gui.GuiControl.MouseState; class Canvas extends GuiControl { var scene2d:Scene; var marbleGame:MarbleGame; + var content:GuiControl; public function new(scene, marbleGame:MarbleGame) { super(); @@ -25,13 +26,15 @@ class Canvas extends GuiControl { public function setContent(content:GuiControl) { this.dispose(); + this.content = content; this.addChild(content); this.render(scene2d); } public function pushDialog(content:GuiControl) { + this.content.onDormant(scene2d); this.addChild(content); - this.render(scene2d); + content.render(scene2d, this._flow); } public function popDialog(content:GuiControl, dispose:Bool = true) { diff --git a/src/gui/ChatCtrl.hx b/src/gui/ChatCtrl.hx new file mode 100644 index 00000000..183d0e99 --- /dev/null +++ b/src/gui/ChatCtrl.hx @@ -0,0 +1,166 @@ +package gui; + +import gui.GuiControl.MouseState; +import src.Settings; +import hxd.res.BitmapFont; +import hxd.Key; +import h3d.Vector; +import src.ResourceLoader; +import net.NetCommands; +import net.Net; +import src.MarbleGame; + +@:publicFields +@:structInit +class ChatMessage { + var text:String; + var age:Float; +} + +class ChatCtrl extends GuiControl { + var chatHud:GuiMLText; + var chatHudBg:GuiMLText; + var chatHudInput:GuiTextInput; + var chatInputBg:GuiImage; + var chatInputBgText:GuiText; + var chats:Array; + var chatFocused:Bool = false; + + public function new() { + super(); + + var arial14fontdata = ResourceLoader.getFileEntry("data/font/Arial Bold.fnt"); + var arial14b = new BitmapFont(arial14fontdata.entry); + @:privateAccess arial14b.loader = ResourceLoader.loader; + var arial14 = arial14b.toSdfFont(cast 15 * Settings.uiScale, MultiChannel); + + this.chats = []; + + this.chatHudBg = new GuiMLText(arial14, (s) -> arial14); + this.chatHudBg.position = new Vector(1, 21); + this.chatHudBg.extent = new Vector(200, 250); + this.chatHudBg.text.textColor = 0; + this.addChild(chatHudBg); + + this.chatHud = new GuiMLText(arial14, (s) -> arial14); + this.chatHud.position = new Vector(0, 20); + this.chatHud.extent = new Vector(200, 250); + this.addChild(chatHud); + + this.chatInputBg = new GuiImage(ResourceLoader.getResource('data/ui/exit/black.png', ResourceLoader.getImage, this.imageResources).toTile()); + this.chatInputBg.position = new Vector(0, 0); + this.chatInputBg.extent = new Vector(200, 20); + this.addChild(chatInputBg); + + this.chatInputBgText = new GuiText(arial14); + this.chatInputBgText.position = new Vector(0, 0); + this.chatInputBgText.extent = new Vector(200, 20); + this.chatInputBg.addChild(chatInputBgText); + this.chatInputBgText.text.textColor = 0xF29515; + this.chatInputBgText.text.text = "Chat:"; + + this.chatHudInput = new GuiTextInput(arial14); + this.chatHudInput.position = new Vector(40, 0); + this.chatHudInput.extent = new Vector(160, 20); + @:privateAccess this.chatHudInput.text.interactive.forceAnywherefocus = true; + this.addChild(chatHudInput); + + this.chatInputBgText.text.visible = false; + this.chatInputBg.bmp.visible = false; + + var sendText = ""; + + this.chatHudInput.text.onFocus = (e) -> { + this.chatInputBgText.text.visible = true; + this.chatInputBg.bmp.visible = true; + chatFocused = true; + } + + this.chatHudInput.text.onFocusLost = (e) -> { + this.chatInputBgText.text.visible = false; + this.chatInputBg.bmp.visible = false; + this.chatHudInput.text.text = ""; + sendText = ""; + chatFocused = false; + } + + this.chatHudInput.text.onKeyDown = (e) -> { + if (e.keyCode == Key.ENTER) { + if (StringTools.trim(this.chatHudInput.text.text) != "") { + sendText = '${StringTools.htmlEscape(Settings.highscoreName.substr(0, 20))}: ${StringTools.htmlEscape(this.chatHudInput.text.text.substr(0, 150))}'; + if (Net.isClient) { + NetCommands.sendChatMessage(StringTools.htmlEscape(sendText)); + } + if (Net.isHost) { + NetCommands.sendServerChatMessage(StringTools.htmlEscape(sendText)); + } + } + this.chatHudInput.text.text = ""; + this.chatInputBgText.text.visible = false; + this.chatInputBg.bmp.visible = false; + chatFocused = false; + } + if (e.keyCode == Key.ESCAPE) { + this.chatHudInput.text.text = ""; + this.chatInputBgText.text.visible = false; + this.chatInputBg.bmp.visible = false; + chatFocused = false; + @:privateAccess Key.keyPressed[Key.ESCAPE] = 0; // consume escape + } + @:privateAccess Key.keyPressed[e.keyCode] = 0; // consume keys + } + + this.chatHud.text.text = ""; + } + + public inline function isChatFocused() { + return chatFocused; + } + + public function addChatMessage(text:String) { + var realText = StringTools.htmlUnescape(text); + this.chats.push({ + text: realText, + age: 10.0 + }); + if (this.chats.length > 10) { + this.chats = this.chats.slice(this.chats.length - 10); + } + redrawChatMessages(); + } + + function redrawChatMessages() { + var joined = this.chats.map(x -> x.text).join("
"); + this.chatHud.text.text = joined; + this.chatHudBg.text.text = StringTools.replace(joined, '#F29515', '#000000'); + } + + function tickChats(dt:Float) { + var needsRedraw = false; + var chatsToRemove = []; + for (chat in this.chats) { + chat.age -= dt; + if (chat.age < 0) { + chatsToRemove.push(chat); + } + } + while (chatsToRemove.length > 0) { + this.chats.remove(chatsToRemove[0]); + needsRedraw = true; + chatsToRemove.shift(); + } + if (needsRedraw) { + redrawChatMessages(); + } + } + + public function updateChat(dt:Float) { + if (!chatFocused) { + if (Key.isPressed(Key.T /*Settings.controlsSettings.chat*/)) { + this.chatHudInput.text.focus(); + } + } + + tickChats(dt); + } +} diff --git a/src/gui/EndGameGui.hx b/src/gui/EndGameGui.hx index a97da4ff..2bc3eb28 100644 --- a/src/gui/EndGameGui.hx +++ b/src/gui/EndGameGui.hx @@ -127,73 +127,133 @@ class EndGameGui extends GuiControl { egResult.position = new Vector(313, 54); egResult.extent = new Vector(244, 69); egResult.text.text = '

${Util.formatTime(timeState.gameplayClock)}

'; - egResult.text.filter = new DropShadow(1.414, 0.785, 0, 1, 0, 0.4, 1, true); + egResult.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; pg.addChild(egResult); var egFirstLine = new GuiMLText(domcasual24, mlFontLoader); egFirstLine.position = new Vector(340, 150); egFirstLine.extent = new Vector(210, 25); - egFirstLine.text.filter = new DropShadow(1.414, 0.785, 0x7777777F, 1, 0, 0.4, 1, true); + egFirstLine.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0x777777 + }; pg.addChild(egFirstLine); var egSecondLine = new GuiMLText(domcasual24, mlFontLoader); egSecondLine.position = new Vector(341, 178); egSecondLine.extent = new Vector(209, 25); - egSecondLine.text.filter = new DropShadow(1.414, 0.785, 0x7777777F, 1, 0, 0.4, 1, true); + egSecondLine.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0x777777 + }; pg.addChild(egSecondLine); var egThirdLine = new GuiMLText(domcasual24, mlFontLoader); egThirdLine.position = new Vector(341, 206); egThirdLine.extent = new Vector(209, 25); - egThirdLine.text.filter = new DropShadow(1.414, 0.785, 0x7777777F, 1, 0, 0.4, 1, true); + egThirdLine.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0x777777 + }; pg.addChild(egThirdLine); var egFourthLine = new GuiMLText(domcasual24, mlFontLoader); egFourthLine.position = new Vector(341, 234); egFourthLine.extent = new Vector(209, 25); - egFourthLine.text.filter = new DropShadow(1.414, 0.785, 0x7777777F, 1, 0, 0.4, 1, true); + egFourthLine.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0x777777 + }; pg.addChild(egFourthLine); var egFifthLine = new GuiMLText(domcasual24, mlFontLoader); egFifthLine.position = new Vector(341, 262); egFifthLine.extent = new Vector(209, 25); - egFifthLine.text.filter = new DropShadow(1.414, 0.785, 0x7777777F, 1, 0, 0.4, 1, true); + egFifthLine.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0x777777 + }; pg.addChild(egFifthLine); var egFirstLineScore = new GuiMLText(domcasual24, mlFontLoader); egFirstLineScore.position = new Vector(475, 150); egFirstLineScore.extent = new Vector(210, 25); - egFirstLineScore.text.filter = new DropShadow(1.414, 0.785, 0x7777777F, 1, 0, 0.4, 1, true); + egFirstLineScore.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0x777777 + }; pg.addChild(egFirstLineScore); var egSecondLineScore = new GuiMLText(domcasual24, mlFontLoader); egSecondLineScore.position = new Vector(476, 178); egSecondLineScore.extent = new Vector(209, 25); - egSecondLineScore.text.filter = new DropShadow(1.414, 0.785, 0x7777777F, 1, 0, 0.4, 1, true); + egSecondLineScore.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0x777777 + }; pg.addChild(egSecondLineScore); var egThirdLineScore = new GuiMLText(domcasual24, mlFontLoader); egThirdLineScore.position = new Vector(476, 206); egThirdLineScore.extent = new Vector(209, 25); - egThirdLineScore.text.filter = new DropShadow(1.414, 0.785, 0x7777777F, 1, 0, 0.4, 1, true); + egThirdLineScore.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0x777777 + }; pg.addChild(egThirdLineScore); var egFourthLineScore = new GuiMLText(domcasual24, mlFontLoader); egFourthLineScore.position = new Vector(476, 234); egFourthLineScore.extent = new Vector(209, 25); - egFourthLineScore.text.filter = new DropShadow(1.414, 0.785, 0x7777777F, 1, 0, 0.4, 1, true); + egFourthLineScore.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0x777777 + }; pg.addChild(egFourthLineScore); var egFifthLineScore = new GuiMLText(domcasual24, mlFontLoader); egFifthLineScore.position = new Vector(476, 262); egFifthLineScore.extent = new Vector(209, 25); - egFifthLineScore.text.filter = new DropShadow(1.414, 0.785, 0x7777777F, 1, 0, 0.4, 1, true); + egFifthLineScore.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0x777777 + }; pg.addChild(egFifthLineScore); var egTitleText = new GuiMLText(expo50, mlFontLoader); egTitleText.text.textColor = 0xffff00; egTitleText.text.text = 'Your Time:'; - egTitleText.text.filter = new DropShadow(1.414, 0.785, 0, 1, 0, 0.4, 1, true); + egTitleText.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; egTitleText.position = new Vector(34, 54); egTitleText.extent = new Vector(247, 69); pg.addChild(egTitleText); @@ -202,7 +262,12 @@ class EndGameGui extends GuiControl { egTopThreeText.position = new Vector(341, 114); egTopThreeText.extent = new Vector(209, 34); egTopThreeText.text.text = 'Top 5 Times:'; // Make toggleable 3-5 - egTopThreeText.text.filter = new DropShadow(1.414, 0.785, 0, 1, 0, 0.4, 1, true); + egTopThreeText.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; pg.addChild(egTopThreeText); var text = '

'; @@ -228,7 +293,12 @@ class EndGameGui extends GuiControl { var finishMessage = new GuiMLText(expo32, mlFontLoader); finishMessage.text.textColor = 0x00ff00; finishMessage.text.text = text; - finishMessage.text.filter = new DropShadow(1, 0.785, 0, 1, 0, 0.4, 1, true); + finishMessage.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; // finishMessage.justify = Center; finishMessage.position = new Vector(25, 120); finishMessage.extent = new Vector(293, 211); @@ -274,7 +344,12 @@ class EndGameGui extends GuiControl { leftColumn.text.lineSpacing = 5; leftColumn.text.textColor = 0xFFFFFF; leftColumn.text.text = 'Par Time:
${mission.game == "gold" || mission.game.toLowerCase() == "ultra" ? 'Gold Time:' : 'Platinum Time:'}
${mission.ultimateTime != 0 ? 'Ultimate Time:
' : ''}
Time Passed:
Clock Bonuses:
'; - leftColumn.text.filter = new DropShadow(1.414, 0.785, 0x7777777F, 1, 0, 0.4, 1, true); + leftColumn.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0x777777 + }; leftColumn.position = new Vector(25, 165); leftColumn.extent = new Vector(293, 211); pg.addChild(leftColumn); @@ -286,7 +361,12 @@ class EndGameGui extends GuiControl { rightColumn.text.lineSpacing = 5; rightColumn.text.textColor = 0xFFFFFF; rightColumn.text.text = '${Util.formatTime(mission.qualifyTime == Math.POSITIVE_INFINITY ? 5999.999 : mission.qualifyTime)}
${Util.formatTime(mission.goldTime)}
${mission.ultimateTime != 0 ? '${Util.formatTime(mission.ultimateTime)}
' : ''}
${Util.formatTime(elapsedTime)}
${Util.formatTime(bonusTime)}
'; - rightColumn.text.filter = new DropShadow(1.414, 0.785, 0xffffff, 1, 0, 0.4, 1, true); + rightColumn.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0x777777 + }; rightColumn.position = new Vector(235, 165); rightColumn.extent = new Vector(293, 211); pg.addChild(rightColumn); diff --git a/src/gui/EnterNameDlg.hx b/src/gui/EnterNameDlg.hx index d82836c1..a03a6c52 100644 --- a/src/gui/EnterNameDlg.hx +++ b/src/gui/EnterNameDlg.hx @@ -87,11 +87,19 @@ class EnterNameDlg extends GuiControl { var enterNameText = new GuiMLText(domcasual32, mlFontLoader); enterNameText.text.textColor = 0xFFFFFF; - enterNameText.text.filter = new DropShadow(1.414, 0.785, 0x7777777F, 1, 0, 0.4, 1, true); + enterNameText.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; enterNameText.position = new Vector(37, 23); enterNameText.extent = new Vector(345, 85); // enterNameText.justify = Center; - enterNameText.text.text = '

Well Done!
You have the${["", " second", " third", " fourth", " fifth"][place]} top time!

'; + if (place != -1) + enterNameText.text.text = '

Well Done!
You have the${["", " second", " third", " fourth", " fifth"][place]} top time!

'; + else + enterNameText.text.text = '

Enter your desired display name

'; dlg.addChild(enterNameText); dlg.addChild(enterNameEdit); diff --git a/src/gui/Graphics.hx b/src/gui/Graphics.hx new file mode 100644 index 00000000..7a2389af --- /dev/null +++ b/src/gui/Graphics.hx @@ -0,0 +1,904 @@ +package gui; + +import h2d.RenderContext; +import h2d.impl.BatchDrawState; +import hxd.Math; +import hxd.impl.Allocator; +import h2d.Drawable; + +private typedef GraphicsPoint = hxd.poly2tri.Point; + +@:dox(hide) +class GPoint { + public var x:Float; + public var y:Float; + public var r:Float; + public var g:Float; + public var b:Float; + public var a:Float; + + public function new() {} + + public function load(x, y, r, g, b, a) { + this.x = x; + this.y = y; + this.r = r; + this.g = g; + this.b = b; + this.a = a; + } +} + +private class GraphicsContent extends h3d.prim.Primitive { + var tmp:hxd.FloatBuffer; + var index:hxd.IndexBuffer; + var state:BatchDrawState; + + var bufferDirty:Bool; + var indexDirty:Bool; + #if track_alloc + var allocPos:hxd.impl.AllocPos; + #end + + var bufferSize:Int; + var ibufferSize:Int; + + public function new() { + state = new BatchDrawState(); + #if track_alloc + this.allocPos = new hxd.impl.AllocPos(); + #end + } + + public inline function addIndex(i) { + index.push(i); + state.add(1); + indexDirty = true; + } + + public inline function add(x:Float, y:Float, u:Float, v:Float, r:Float, g:Float, b:Float, a:Float) { + tmp.push(x); + tmp.push(y); + tmp.push(u); + tmp.push(v); + tmp.push(r); + tmp.push(g); + tmp.push(b); + tmp.push(a); + bufferDirty = true; + } + + public function setTile(tile:h2d.Tile) { + state.setTile(tile); + } + + public function next() { + var nvect = tmp.length >> 3; + if (nvect < 1 << 15) + return false; + tmp = new hxd.FloatBuffer(); + index = new hxd.IndexBuffer(); + var tex = state.currentTexture; + state = new BatchDrawState(); + state.setTexture(tex); + super.dispose(); + return true; + } + + override function alloc(engine:h3d.Engine) { + if (index.length <= 0) + return; + var alloc = Allocator.get(); + buffer = alloc.ofFloats(tmp, 8, RawFormat); + bufferSize = tmp.length; + #if track_alloc + @:privateAccess buffer.allocPos = allocPos; + #end + indexes = alloc.ofIndexes(index); + ibufferSize = index.length; + bufferDirty = false; + indexDirty = false; + } + + public function doRender(ctx:h2d.RenderContext) { + if (index.length == 0) + return; + flush(); + state.drawIndexed(ctx, buffer, indexes, 0, tmp.length >> 3); + } + + public function flush() { + if (buffer == null || buffer.isDisposed()) { + alloc(h3d.Engine.getCurrent()); + } else { + var allocator = Allocator.get(); + if (bufferDirty) { + if (tmp.length > bufferSize) { + allocator.disposeBuffer(buffer); + + buffer = new h3d.Buffer(tmp.length >> 3, 8, [RawFormat, Dynamic]); + buffer.uploadVector(tmp, 0, tmp.length >> 3); + bufferSize = tmp.length; + } else { + buffer.uploadVector(tmp, 0, tmp.length >> 3); + } + bufferDirty = false; + } + if (indexDirty) { + if (index.length > ibufferSize) { + allocator.disposeIndexBuffer(indexes); + indexes = allocator.ofIndexes(index); + ibufferSize = index.length; + } else { + indexes.upload(index, 0, index.length); + } + indexDirty = false; + } + } + } + + override function dispose() { + state.clear(); + // disposeBuffers(); + + // super.dispose(); + } + + function disposeBuffers() { + if (buffer != null) { + Allocator.get().disposeBuffer(buffer); + buffer = null; + } + if (indexes != null) { + Allocator.get().disposeIndexBuffer(indexes); + indexes = null; + } + } + + public function clear() { + dispose(); + tmp = new hxd.FloatBuffer(); + index = new hxd.IndexBuffer(); + } + + public function disposeForReal() { + state.clear(); + disposeBuffers(); + super.dispose(); + } +} + +/** + A simple interface to draw arbitrary 2D geometry. + + Usage notes: + * While Graphics allows for multiple unique textures, each texture swap causes a new drawcall, + and due to that it's recommended to minimize the amount of used textures per Graphics instance, + ideally limiting to only one texture. + * Due to how Graphics operate, removing them from the active `h2d.Scene` will cause a loss of all data. +**/ +class Graphics extends Drawable { + var content:GraphicsContent; + var tmpPoints:Array; + var pindex:Int; + var curR:Float; + var curG:Float; + var curB:Float; + var curA:Float; + var lineSize:Float; + var lineR:Float; + var lineG:Float; + var lineB:Float; + var lineA:Float; + var doFill:Bool; + + var xMin:Float; + var yMin:Float; + var xMax:Float; + var yMax:Float; + var xMinSize:Float; + var yMinSize:Float; + var xMaxSize:Float; + var yMaxSize:Float; + + var ma:Float = 1.; + var mb:Float = 0.; + var mc:Float = 0.; + var md:Float = 1.; + var mx:Float = 0.; + var my:Float = 0.; + + /** + The Tile used as source of Texture to render. + **/ + public var tile:h2d.Tile; + + /** + Adds bevel cut-off at line corners. + + The value is a percentile in range of 0...1, dictating at which point edges get beveled based on their angle. + Value of 0 being not beveled and 1 being always beveled. + **/ + public var bevel = 0.25; // 0 = not beveled, 1 = always beveled + + /** + Create a new Graphics instance. + @param parent An optional parent `h2d.Object` instance to which Graphics adds itself if set. + **/ + public function new(?parent) { + super(parent); + content = new GraphicsContent(); + tile = h2d.Tile.fromColor(0xFFFFFF); + clear(); + } + + override function onRemove() { + super.onRemove(); + clear(); + content.disposeForReal(); + } + + /** + Clears the Graphics contents. + **/ + public function clear() { + content.clear(); + tmpPoints = []; + pindex = 0; + lineSize = 0; + xMin = Math.POSITIVE_INFINITY; + yMin = Math.POSITIVE_INFINITY; + yMax = Math.NEGATIVE_INFINITY; + xMax = Math.NEGATIVE_INFINITY; + xMinSize = Math.POSITIVE_INFINITY; + yMinSize = Math.POSITIVE_INFINITY; + yMaxSize = Math.NEGATIVE_INFINITY; + xMaxSize = Math.NEGATIVE_INFINITY; + } + + override function getBoundsRec(relativeTo, out, forSize) { + super.getBoundsRec(relativeTo, out, forSize); + if (tile != null) { + if (forSize) + addBounds(relativeTo, out, xMinSize, yMinSize, xMaxSize - xMinSize, yMaxSize - yMinSize); + else + addBounds(relativeTo, out, xMin, yMin, xMax - xMin, yMax - yMin); + } + } + + function isConvex(points:Array) { + var first = true, sign = false; + for (i in 0...points.length) { + var p1 = points[i]; + var p2 = points[(i + 1) % points.length]; + var p3 = points[(i + 2) % points.length]; + var s = (p2.x - p1.x) * (p3.y - p1.y) - (p2.y - p1.y) * (p3.x - p1.x) > 0; + if (first) { + first = false; + sign = s; + } else if (sign != s) + return false; + } + return true; + } + + function flushLine(start) { + var pts = tmpPoints; + var last = pts.length - 1; + var prev = pts[last]; + var p = pts[0]; + + content.setTile(h2d.Tile.fromColor(0xFFFFFF)); + var closed = p.x == prev.x && p.y == prev.y; + var count = pts.length; + if (!closed) { + var prevLast = pts[last - 1]; + if (prevLast == null) + prevLast = p; + var gp = new GPoint(); + gp.load(prev.x * 2 - prevLast.x, prev.y * 2 - prevLast.y, 0, 0, 0, 0); + pts.push(gp); + var pNext = pts[1]; + if (pNext == null) + pNext = p; + var gp = new GPoint(); + gp.load(p.x * 2 - pNext.x, p.y * 2 - pNext.y, 0, 0, 0, 0); + prev = gp; + } else if (p != prev) { + count--; + last--; + prev = pts[last]; + } + + for (i in 0...count) { + var next = pts[(i + 1) % pts.length]; + + var nx1 = prev.y - p.y; + var ny1 = p.x - prev.x; + var ns1 = Math.invSqrt(nx1 * nx1 + ny1 * ny1); + + var nx2 = p.y - next.y; + var ny2 = next.x - p.x; + var ns2 = Math.invSqrt(nx2 * nx2 + ny2 * ny2); + + var nx = nx1 * ns1 + nx2 * ns2; + var ny = ny1 * ns1 + ny2 * ns2; + var ns = Math.invSqrt(nx * nx + ny * ny); + + nx *= ns; + ny *= ns; + + var size = nx * nx1 * ns1 + ny * ny1 * ns1; // N.N1 + + // *HACK* we should instead properly detect limits when the angle is too small + if (size < 0.1) + size = 0.1; + + var d = lineSize * 0.5 / size; + nx *= d; + ny *= d; + + if (size > bevel) { + content.add(p.x + nx, p.y + ny, 0, 0, p.r, p.g, p.b, p.a); + content.add(p.x - nx, p.y - ny, 0, 0, p.r, p.g, p.b, p.a); + + var pnext = i == last ? start : pindex + 2; + + if (i < count - 1 || closed) { + content.addIndex(pindex); + content.addIndex(pindex + 1); + content.addIndex(pnext); + + content.addIndex(pindex + 1); + content.addIndex(pnext); + content.addIndex(pnext + 1); + } + pindex += 2; + } else { + // bevel + var n0x = next.x - p.x; + var n0y = next.y - p.y; + var sign = n0x * nx + n0y * ny; + + var nnx = -ny; + var nny = nx; + + var size = nnx * nx1 * ns1 + nny * ny1 * ns1; + var d = lineSize * 0.5 / size; + nnx *= d; + nny *= d; + + var pnext = i == last ? start : pindex + 3; + + if (sign > 0) { + content.add(p.x + nx, p.y + ny, 0, 0, p.r, p.g, p.b, p.a); + content.add(p.x - nnx, p.y - nny, 0, 0, p.r, p.g, p.b, p.a); + content.add(p.x + nnx, p.y + nny, 0, 0, p.r, p.g, p.b, p.a); + + content.addIndex(pindex); + content.addIndex(pnext); + content.addIndex(pindex + 2); + + content.addIndex(pindex + 2); + content.addIndex(pnext); + content.addIndex(pnext + 1); + } else { + content.add(p.x + nnx, p.y + nny, 0, 0, p.r, p.g, p.b, p.a); + content.add(p.x - nx, p.y - ny, 0, 0, p.r, p.g, p.b, p.a); + content.add(p.x - nnx, p.y - nny, 0, 0, p.r, p.g, p.b, p.a); + + content.addIndex(pindex + 1); + content.addIndex(pnext); + content.addIndex(pindex + 2); + + content.addIndex(pindex + 1); + content.addIndex(pnext); + content.addIndex(pnext + 1); + } + + content.addIndex(pindex); + content.addIndex(pindex + 1); + content.addIndex(pindex + 2); + + pindex += 3; + } + + prev = p; + p = next; + } + content.setTile(tile); + } + + static var EARCUT = null; + + function flushFill(i0) { + if (tmpPoints.length < 3) + return; + + var pts = tmpPoints; + var p0 = pts[0]; + var p1 = pts[pts.length - 1]; + var last = null; + // closed poly + if (hxd.Math.abs(p0.x - p1.x) < 1e-9 && hxd.Math.abs(p0.y - p1.y) < 1e-9) + last = pts.pop(); + + if (isConvex(pts)) { + for (i in 1...pts.length - 1) { + content.addIndex(i0); + content.addIndex(i0 + i); + content.addIndex(i0 + i + 1); + } + } else { + var ear = EARCUT; + if (ear == null) + EARCUT = ear = new hxd.earcut.Earcut(); + for (i in ear.triangulate(pts)) + content.addIndex(i + i0); + } + + if (last != null) + pts.push(last); + } + + function flush() { + if (tmpPoints.length == 0) + return; + if (doFill) { + flushFill(pindex); + pindex += tmpPoints.length; + if (content.next()) + pindex = 0; + } + if (lineSize > 0) { + flushLine(pindex); + if (content.next()) + pindex = 0; + } + tmpPoints = []; + } + + /** + Begins a solid color fill. + + Beginning new fill will finish previous fill operation without need to call `Graphics.endFill`. + + @param color An RGB color with which to fill the drawn shapes. + @param alpha A transparency of the fill color. + **/ + public function beginFill(color:Int = 0, alpha = 1.) { + flush(); + tile = h2d.Tile.fromColor(0xFFFFFF); + content.setTile(tile); + setColor(color, alpha); + doFill = true; + } + + /** + Position a virtual tile at the given position and scale. Every draw will display a part of this tile relative + to these coordinates. + + Note that in by default, Tile is not wrapped, and in order to render tiling texture, `Drawable.tileWrap` have to be set. + Additionally, both `Tile.dx` and `Tile.dy` are ignored (use `dx`/`dy` arguments instead) + as well as tile defined size of the tile through `Tile.width` and `Tile.height` (use `scaleX`/`scaleY` relative to texture size). + + Beginning new fill will finish previous fill operation without need to call `Graphics.endFill`. + + @param dx An X offset of the Tile relative to Graphics. + @param dy An Y offset of the Tile relative to Graphics. + @param scaleX A horizontal scale factor applied to the Tile texture. + @param scaleY A vertical scale factor applied to the Tile texture. + @param tile The tile to fill with. If null, uses previously used Tile with `beginTileFill` or throws an error. + Previous tile is remembered across `Graphics.clear` calls. + **/ + public function beginTileFill(?dx:Float, ?dy:Float, ?scaleX:Float, ?scaleY:Float, ?tile:h2d.Tile) { + if (tile == null) + tile = this.tile; + if (tile == null) + throw "Tile not specified"; + flush(); + this.tile = tile; + content.setTile(tile); + setColor(0xFFFFFF); + doFill = true; + + if (dx == null) + dx = 0; + if (dy == null) + dy = 0; + if (scaleX == null) + scaleX = 1; + if (scaleY == null) + scaleY = 1; + dx -= tile.x; + dy -= tile.y; + + var tex = tile.getTexture(); + var pixWidth = 1 / tex.width; + var pixHeight = 1 / tex.height; + ma = pixWidth / scaleX; + mb = 0; + mc = 0; + md = pixHeight / scaleY; + mx = -dx * ma; + my = -dy * md; + } + + /** + Draws a Tile at given position. + See `Graphics.beginTileFill` for limitations. + + This methods ends current fill operation. + @param x The X position of the tile. + @param y The Y position of the tile. + @param tile The tile to draw. + **/ + public function drawTile(x:Float, y:Float, tile:h2d.Tile) { + beginTileFill(x, y, tile); + drawRect(x, y, tile.width, tile.height); + endFill(); + } + + /** + Sets an outline style. Changing the line style ends the currently drawn line. + + @param size Width of the outline. Setting size to 0 will remove the outline. + @param color An outline RGB color. + @param alpha An outline transparency. + **/ + public function lineStyle(size:Float = 0, color = 0, alpha = 1.) { + flush(); + this.lineSize = size; + lineA = alpha; + lineR = ((color >> 16) & 0xFF) / 255.; + lineG = ((color >> 8) & 0xFF) / 255.; + lineB = (color & 0xFF) / 255.; + } + + /** + Ends the current line and starts new one at given position. + **/ + public inline function moveTo(x, y) { + flush(); + lineTo(x, y); + } + + /** + Ends the current fill operation. + **/ + public function endFill() { + flush(); + doFill = false; + } + + /** + Changes current fill color. + Does not interrupt current fill operation and can be utilized to customize color per vertex. + During tile fill operation, color serves as a tile color multiplier. + @param color The new fill color. + @param alpha The new fill transparency. + **/ + public inline function setColor(color:Int, alpha:Float = 1.) { + curA = alpha; + curR = ((color >> 16) & 0xFF) / 255.; + curG = ((color >> 8) & 0xFF) / 255.; + curB = (color & 0xFF) / 255.; + } + + /** + Draws a rectangle with given parameters. + @param x The rectangle top-left corner X position. + @param y The rectangle top-left corner Y position. + @param w The rectangle width. + @param h The rectangle height. + **/ + public function drawRect(x:Float, y:Float, w:Float, h:Float) { + flush(); + lineTo(x, y); + lineTo(x + w, y); + lineTo(x + w, y + h); + lineTo(x, y + h); + lineTo(x, y); + var e = 0.01; // see #776 + tmpPoints[0].x += e; + tmpPoints[0].y += e; + tmpPoints[1].y += e; + tmpPoints[3].x += e; + tmpPoints[4].x += e; + tmpPoints[4].y += e; + flush(); + } + + /** + Draws a rounded rectangle with given parameters. + @param x The rectangle top-left corner X position. + @param y The rectangle top-left corner Y position. + @param w The rectangle width. + @param h The rectangle height. + @param radius Radius of the rectangle corners. + @param nsegments Amount of segments used for corners. When `0` segment count calculated automatically. + **/ + public function drawRoundedRect(x:Float, y:Float, w:Float, h:Float, radius:Float, nsegments = 0) { + if (radius <= 0) { + return drawRect(x, y, w, h); + } + x += radius; + y += radius; + w -= radius * 2; + h -= radius * 2; + flush(); + if (nsegments == 0) + nsegments = Math.ceil(Math.abs(radius * hxd.Math.degToRad(90) / 4)); + if (nsegments < 3) + nsegments = 3; + var angle = hxd.Math.degToRad(90) / (nsegments - 1); + inline function corner(x, y, angleStart) { + for (i in 0...nsegments) { + var a = i * angle + hxd.Math.degToRad(angleStart); + lineTo(x + Math.cos(a) * radius, y + Math.sin(a) * radius); + } + } + lineTo(x, y - radius); + lineTo(x + w, y - radius); + corner(x + w, y, 270); + lineTo(x + w + radius, y + h); + corner(x + w, y + h, 0); + lineTo(x, y + h + radius); + corner(x, y + h, 90); + lineTo(x - radius, y); + corner(x, y, 180); + flush(); + } + + /** + Draws a circle centered at given position. + @param cx X center position of the circle. + @param cy Y center position of the circle. + @param radius Radius of the circle. + @param nsegments Amount of segments used to draw the circle. When `0`, amount of segments calculated automatically. + **/ + public function drawCircle(cx:Float, cy:Float, radius:Float, nsegments = 0) { + flush(); + if (nsegments == 0) + nsegments = Math.ceil(Math.abs(radius * 3.14 * 2 / 4)); + if (nsegments < 3) + nsegments = 3; + var angle = Math.PI * 2 / nsegments; + for (i in 0...nsegments + 1) { + var a = i * angle; + lineTo(cx + Math.cos(a) * radius, cy + Math.sin(a) * radius); + } + flush(); + } + + /** + Draws an ellipse centered at given position. + @param cx X center position of the ellipse. + @param cy Y center position of the ellipse. + @param radiusX Horizontal radius of an ellipse. + @param radiusY Vertical radius of an ellipse. + @param rotationAngle Ellipse rotation in radians. + @param nsegments Amount of segments used to draw an ellipse. When `0`, amount of segments calculated automatically. + **/ + public function drawEllipse(cx:Float, cy:Float, radiusX:Float, radiusY:Float, rotationAngle:Float = 0, nsegments = 0) { + flush(); + if (nsegments == 0) + nsegments = Math.ceil(Math.abs(radiusY * 3.14 * 2 / 4)); + if (nsegments < 3) + nsegments = 3; + var angle = Math.PI * 2 / nsegments; + var x1, y1; + for (i in 0...nsegments + 1) { + var a = i * angle; + x1 = Math.cos(a) * Math.cos(rotationAngle) * radiusX - Math.sin(a) * Math.sin(rotationAngle) * radiusY; + y1 = Math.cos(rotationAngle) * Math.sin(a) * radiusY + Math.cos(a) * Math.sin(rotationAngle) * radiusX; + lineTo(cx + x1, cy + y1); + } + flush(); + } + + /** + Draws a pie centered at given position. + @param cx X center position of the pie. + @param cy Y center position of the pie. + @param radius Radius of the pie. + @param angleStart Starting angle of the pie in radians. + @param angleLength The pie size in clockwise direction with `2*PI` being full circle. + @param nsegments Amount of segments used to draw the pie. When `0`, amount of segments calculated automatically. + **/ + public function drawPie(cx:Float, cy:Float, radius:Float, angleStart:Float, angleLength:Float, nsegments = 0) { + if (Math.abs(angleLength) >= Math.PI * 2) { + return drawCircle(cx, cy, radius, nsegments); + } + flush(); + lineTo(cx, cy); + if (nsegments == 0) + nsegments = Math.ceil(Math.abs(radius * angleLength / 4)); + if (nsegments < 3) + nsegments = 3; + var angle = angleLength / (nsegments - 1); + for (i in 0...nsegments) { + var a = i * angle + angleStart; + lineTo(cx + Math.cos(a) * radius, cy + Math.sin(a) * radius); + } + lineTo(cx, cy); + flush(); + } + + /** + Draws a double-edged pie centered at given position. + @param cx X center position of the pie. + @param cy Y center position of the pie. + @param radius The outer radius of the pie. + @param innerRadius The inner radius of the pie. + @param angleStart Starting angle of the pie in radians. + @param angleLength The pie size in clockwise direction with `2*PI` being full circle. + @param nsegments Amount of segments used to draw the pie. When `0`, amount of segments calculated automatically. + **/ + public function drawPieInner(cx:Float, cy:Float, radius:Float, innerRadius:Float, angleStart:Float, angleLength:Float, nsegments = 0) { + flush(); + if (Math.abs(angleLength) >= Math.PI * 2 + 1e-3) + angleLength = Math.PI * 2 + 1e-3; + + var cs = Math.cos(angleStart); + var ss = Math.sin(angleStart); + var ce = Math.cos(angleStart + angleLength); + var se = Math.sin(angleStart + angleLength); + + lineTo(cx + cs * innerRadius, cy + ss * innerRadius); + + if (nsegments == 0) + nsegments = Math.ceil(Math.abs(radius * angleLength / 4)); + if (nsegments < 3) + nsegments = 3; + var angle = angleLength / (nsegments - 1); + for (i in 0...nsegments) { + var a = i * angle + angleStart; + lineTo(cx + Math.cos(a) * radius, cy + Math.sin(a) * radius); + } + lineTo(cx + ce * innerRadius, cy + se * innerRadius); + for (i in 0...nsegments) { + var a = (nsegments - 1 - i) * angle + angleStart; + lineTo(cx + Math.cos(a) * innerRadius, cy + Math.sin(a) * innerRadius); + } + flush(); + } + + /** + Draws a rectangular pie centered at given position. + @param cx X center position of the pie. + @param cy Y center position of the pie. + @param width Width of the pie. + @param height Height of the pie. + @param angleStart Starting angle of the pie in radians. + @param angleLength The pie size in clockwise direction with `2*PI` being solid rectangle. + @param nsegments Amount of segments used to draw the pie. When `0`, amount of segments calculated automatically. + **/ + public function drawRectanglePie(cx:Float, cy:Float, width:Float, height:Float, angleStart:Float, angleLength:Float, nsegments = 0) { + if (Math.abs(angleLength) >= Math.PI * 2) { + return drawRect(cx - (width / 2), cy - (height / 2), width, height); + } + flush(); + lineTo(cx, cy); + if (nsegments == 0) + nsegments = Math.ceil(Math.abs(Math.max(width, height) * angleLength / 4)); + if (nsegments < 3) + nsegments = 3; + var angle = angleLength / (nsegments - 1); + var square2 = Math.sqrt(2); + for (i in 0...nsegments) { + var a = i * angle + angleStart; + + var _width = Math.cos(a) * (width / 2 + 1) * square2; + var _height = Math.sin(a) * (height / 2 + 1) * square2; + + _width = Math.abs(_width) >= width / 2 ? (Math.cos(a) < 0 ? width / 2 * -1 : width / 2) : _width; + _height = Math.abs(_height) >= height / 2 ? (Math.sin(a) < 0 ? height / 2 * -1 : height / 2) : _height; + + lineTo(cx + _width, cy + _height); + } + lineTo(cx, cy); + flush(); + } + + /** + * Draws a quadratic Bezier curve using the current line style from the current drawing position to (cx, cy) and using the control point that (bx, by) specifies. + * IvanK Lib port ( http://lib.ivank.net ) + */ + public function curveTo(bx:Float, by:Float, cx:Float, cy:Float) { + var ax = tmpPoints.length == 0 ? 0 : tmpPoints[tmpPoints.length - 1].x; + var ay = tmpPoints.length == 0 ? 0 : tmpPoints[tmpPoints.length - 1].y; + var t = 2 / 3; + cubicCurveTo(ax + t * (bx - ax), ay + t * (by - ay), cx + t * (bx - cx), cy + t * (by - cy), cx, cy); + } + + /** + * Draws a cubic Bezier curve from the current drawing position to the specified anchor point. + * IvanK Lib port ( http://lib.ivank.net ) + * @param bx control X for start point + * @param by control Y for start point + * @param cx control X for end point + * @param cy control Y for end point + * @param dx end X + * @param dy end Y + * @param nsegments = 40 + */ + public function cubicCurveTo(bx:Float, by:Float, cx:Float, cy:Float, dx:Float, dy:Float, nsegments = 40) { + var ax = tmpPoints.length == 0 ? 0 : tmpPoints[tmpPoints.length - 1].x; + var ay = tmpPoints.length == 0 ? 0 : tmpPoints[tmpPoints.length - 1].y; + var tobx = bx - ax, toby = by - ay; + var tocx = cx - bx, tocy = cy - by; + var todx = dx - cx, tody = dy - cy; + var step = 1 / nsegments; + + for (i in 1...nsegments) { + var d = i * step; + var px = ax + d * tobx, py = ay + d * toby; + var qx = bx + d * tocx, qy = by + d * tocy; + var rx = cx + d * todx, ry = cy + d * tody; + var toqx = qx - px, toqy = qy - py; + var torx = rx - qx, tory = ry - qy; + + var sx = px + d * toqx, sy = py + d * toqy; + var tx = qx + d * torx, ty = qy + d * tory; + var totx = tx - sx, toty = ty - sy; + lineTo(sx + d * totx, sy + d * toty); + } + lineTo(dx, dy); + } + + /** + Draws a straight line from the current drawing position to the given position. + **/ + public inline function lineTo(x:Float, y:Float) { + addVertex(x, y, curR, curG, curB, curA, x * ma + y * mc + mx, x * mb + y * md + my); + } + + /** + Advanced usage. Adds new vertex to the current polygon with given parameters and current line style. + @param x Vertex X position + @param y Vertex Y position + @param r Red tint value of the vertex when performing fill operation. + @param g Green tint value of the vertex when performing fill operation. + @param b Blue tint value of the vertex when performing fill operation. + @param a Alpha of the vertex when performing fill operation. + @param u Normalized horizontal Texture position from the current Tile fill operation. + @param v Normalized vertical Texture position from the current Tile fill operation. + **/ + public function addVertex(x:Float, y:Float, r:Float, g:Float, b:Float, a:Float, u:Float = 0., v:Float = 0.) { + var half = lineSize / 2.0; + if (x - half < xMin) + xMin = x - half; + if (y - half < yMin) + yMin = y - half; + if (x + half > xMax) + xMax = x + half; + if (y + half > yMax) + yMax = y + half; + if (x < xMinSize) + xMinSize = x; + if (y < yMinSize) + yMinSize = y; + if (x > xMaxSize) + xMaxSize = x; + if (y > yMaxSize) + yMaxSize = y; + if (doFill) + content.add(x, y, u, v, r, g, b, a); + var gp = new GPoint(); + gp.load(x, y, lineR, lineG, lineB, lineA); + tmpPoints.push(gp); + } + + override function draw(ctx:RenderContext) { + if (!ctx.beginDrawBatchState(this)) + return; + content.doRender(ctx); + } + + override function sync(ctx:RenderContext) { + super.sync(ctx); + flush(); + content.flush(); + } +} diff --git a/src/gui/GuiControl.hx b/src/gui/GuiControl.hx index facb8a20..d0d1d6cf 100644 --- a/src/gui/GuiControl.hx +++ b/src/gui/GuiControl.hx @@ -368,6 +368,12 @@ class GuiControl { public function onMouseMove(mouseState:MouseState) {} + public function onDormant(scene2d:h2d.Scene) { + for (ch in this.children) { + ch.onDormant(scene2d); + } + } + public function onScroll(scrollX:Float, scrollY:Float) {} public function onRemove() { diff --git a/src/gui/GuiMLText.hx b/src/gui/GuiMLText.hx index 66f774cb..daf26334 100644 --- a/src/gui/GuiMLText.hx +++ b/src/gui/GuiMLText.hx @@ -7,7 +7,6 @@ import h2d.Bitmap; import h3d.Engine; import h3d.Vector; import gui.GuiText.Justification; -import h2d.HtmlText; import h2d.Scene; import hxd.res.BitmapFont; import h2d.Text; diff --git a/src/gui/GuiMLTextListCtrl.hx b/src/gui/GuiMLTextListCtrl.hx new file mode 100644 index 00000000..99ec72e6 --- /dev/null +++ b/src/gui/GuiMLTextListCtrl.hx @@ -0,0 +1,317 @@ +package gui; + +import h2d.filter.Filter; +import h2d.Flow; +import h3d.Engine; +import h2d.Tile; +import h2d.Bitmap; +import h3d.mat.Texture; +import shaders.GuiClipFilter; +import h2d.Graphics; +import gui.GuiControl.MouseState; +import h2d.Scene; +import h2d.Text; +import h2d.Font; +import src.MarbleGame; +import src.Settings; + +class GuiMLTextListCtrl extends GuiControl { + public var texts:Array; + public var onSelectedFunc:Int->Void; + + var font:Font; + var textObjs:Array; + var g:Graphics; + var _prevSelected:Int = -1; + + public var selectedColor:Int = 0x206464; + public var selectedFillColor:Int = 0xC8C8C8; + + public var textYOffset:Int = 0; + + public var scroll:Float = 0; + + public var scrollable:Bool = false; + + var dropShadow:{ + dx:Float, + dy:Float, + color:Int, + alpha:Float + }; + + var flow:Flow; + var _imageLoader:String->Tile; + + public function new(font:Font, texts:Array, imageLoader:String->Tile, ?filter:{ + dx:Float, + dy:Float, + color:Int, + alpha:Float + } = null) { + super(); + this.font = font; + this.texts = texts; + this._manualScroll = true; + this.textObjs = []; + this.dropShadow = filter; + this._imageLoader = imageLoader; + for (text in texts) { + var tobj = new HtmlText(font); + tobj.lineHeightMode = TextOnly; + tobj.imageVerticalAlign = Top; + tobj.loadImage = imageLoader; + tobj.text = text; + tobj.textColor = 0; + if (filter != null) + tobj.dropShadow = filter; + textObjs.push(tobj); + } + this.g = new Graphics(); + } + + public function setTexts(texts:Array) { + var renderRect = this.getRenderRectangle(); + for (textObj in this.textObjs) { + textObj.remove(); + } + this.textObjs = []; + for (text in texts) { + var tobj = new HtmlText(font); + tobj.loadImage = this._imageLoader; + tobj.imageVerticalAlign = Top; + tobj.lineHeightMode = TextOnly; + tobj.text = text; + tobj.textColor = 0; + + if (dropShadow != null) + tobj.dropShadow = dropShadow; + textObjs.push(tobj); + + if (this.scrollable) { + if (this.flow != null) { + if (this.flow.contains(tobj)) + this.flow.removeChild(tobj); + + this.flow.addChild(tobj); + + this.flow.getProperties(tobj).isAbsolute = true; + } + } + } + this.texts = texts; + this._prevSelected = -1; + if (this.onSelectedFunc != null) + this.onSelectedFunc(-1); + + redrawSelectionRect(renderRect); + + for (i in 0...textObjs.length) { + var text = textObjs[i]; + text.setPosition(Math.floor((!scrollable ? renderRect.position.x : 0) + 5), + Math.floor((!scrollable ? renderRect.position.y : 0) + + (i * (text.font.size + 4 * Settings.uiScale) + (5 + textYOffset) * Settings.uiScale - this.scroll))); + + if (_prevSelected == i) { + text.textColor = selectedColor; + } + } + } + + public override function render(scene2d:Scene, ?parent:h2d.Flow) { + var renderRect = this.getRenderRectangle(); + var htr = this.getHitTestRect(false); + + if (parent != null) { + if (parent.contains(g)) + parent.removeChild(g); + parent.addChild(g); + + var off = this.getOffsetFromParent(); + parent.getProperties(g).isAbsolute = true; + + g.setPosition(off.x, off.y - this.scroll); + } + + if (scrollable) { + this.flow = new Flow(); + + this.flow.maxWidth = cast htr.extent.x; + this.flow.maxHeight = cast htr.extent.y; + this.flow.multiline = true; + this.flow.layout = Stack; + this.flow.overflow = FlowOverflow.Hidden; + + if (parent != null) { + if (parent.contains(this.flow)) { + parent.removeChild(this.flow); + } + parent.addChild(this.flow); + var off = this.getOffsetFromParent(); + var props = parent.getProperties(this.flow); + props.isAbsolute = true; + + this.flow.setPosition(off.x, off.y); + } + } + + for (i in 0...textObjs.length) { + var text = textObjs[i]; + if (!scrollable) { + if (scene2d.contains(text)) + scene2d.removeChild(text); + scene2d.addChild(text); + } else { + if (this.flow.contains(text)) + this.flow.removeChild(text); + this.flow.addChild(text); + + this.flow.getProperties(text).isAbsolute = true; + } + + text.setPosition(Math.floor((!scrollable ? renderRect.position.x : 0) + 5), + Math.floor((!scrollable ? renderRect.position.y : 0) + + (i * (text.font.size + 4 * Settings.uiScale) + (5 + textYOffset) * Settings.uiScale - this.scroll))); + + if (_prevSelected == i) { + text.textColor = selectedColor; + } + } + + redrawSelectionRect(htr); + super.render(scene2d, parent); + } + + public function calculateFullHeight() { + return (this.texts.length * (font.size + 4 * Settings.uiScale)); + } + + public override function dispose() { + super.dispose(); + for (text in textObjs) { + text.remove(); + } + this.g.remove(); + if (this.scrollable) { + this.flow.remove(); + } + } + + public override function onRemove() { + super.onRemove(); + for (text in textObjs) { + if (MarbleGame.canvas.scene2d.contains(text)) { + MarbleGame.canvas.scene2d.removeChild(text); // Refresh "layer" + } + text.remove(); + } + if (MarbleGame.canvas.scene2d.contains(g)) + MarbleGame.canvas.scene2d.removeChild(g); + g.remove(); + } + + public override function onMouseMove(mouseState:MouseState) { + var mousePos = mouseState.position; + var renderRect = this.getRenderRectangle(); + var yStart = renderRect.position.y; + var dy = mousePos.y - yStart; + var hoverIndex = Math.floor(dy / (font.size + 4 * Settings.uiScale)); + if (hoverIndex >= this.texts.length) { + hoverIndex = -1; + } + + // Update the texts + for (i in 0...textObjs.length) { + var selected = i == hoverIndex || i == this._prevSelected; + var text = textObjs[i]; + text.textColor = selected ? selectedColor : 0; + // fill color = 0xC8C8C8 + } + // obviously in renderRect + } + + public override function onMouseLeave(mouseState:MouseState) { + for (i in 0...textObjs.length) { + if (i == this._prevSelected) + continue; + var text = textObjs[i]; + text.textColor = 0; + // fill color = 0xC8C8C8 + } + } + + public override function onMousePress(mouseState:MouseState) { + super.onMousePress(mouseState); + + var mousePos = mouseState.position; + var renderRect = this.getRenderRectangle(); + var yStart = renderRect.position.y; + var dy = mousePos.y - yStart; + var selectedIndex = Math.floor((dy + this.scroll) / (font.size + 4 * Settings.uiScale)); + if (selectedIndex >= this.texts.length) { + selectedIndex = -1; + } + if (_prevSelected != selectedIndex) { + _prevSelected = selectedIndex; + + redrawSelectionRect(renderRect); + } + + if (onSelectedFunc != null) { + onSelectedFunc(selectedIndex); + } + } + + function redrawSelectionRect(renderRect:Rect) { + if (_prevSelected != -1) { + g.clear(); + g.beginFill(selectedFillColor); + + var off = this.getOffsetFromParent(); + // Check if we are between the top and bottom, render normally in that case + var topY = 2 * Settings.uiScale + (_prevSelected * (font.size + 4 * Settings.uiScale)) + g.y; + var bottomY = 2 * Settings.uiScale + (_prevSelected * (font.size + 4 * Settings.uiScale)) + g.y + font.size + 4 * Settings.uiScale; + var topRectY = off.y; + var bottomRectY = off.y + renderRect.extent.y; + + if (topY >= topRectY && bottomY <= bottomRectY) + g.drawRect(0, 5 * Settings.uiScale + + (_prevSelected * (font.size + 4 * Settings.uiScale)) + - 3 * Settings.uiScale, renderRect.extent.x, + font.size + + 4 * Settings.uiScale); + // We need to do math the draw the partially visible top selected + if (topY <= topRectY && bottomY >= topRectY) { + g.drawRect(0, this.scroll, renderRect.extent.x, topY + font.size + 4 * Settings.uiScale - off.y); + } + // Same for the bottom + if (topY <= bottomRectY && bottomY >= bottomRectY) { + g.drawRect(0, this.scroll + + renderRect.extent.y + - font.size + - 4 * Settings.uiScale + + (topY + font.size + 4 * Settings.uiScale - bottomRectY), + renderRect.extent.x, off.y + + renderRect.extent.y + - (topY)); + } + g.endFill(); + } else { + g.clear(); + } + } + + public override function onScroll(scrollX:Float, scrollY:Float) { + super.onScroll(scrollX, scrollY); + var renderRect = this.getRenderRectangle(); + + this.scroll = scrollY; + var hittestrect = this.getHitTestRect(false); + for (i in 0...textObjs.length) { + var text = textObjs[i]; + text.y = Math.floor((i * (text.font.size + 4 * Settings.uiScale) + (5 + textYOffset) * Settings.uiScale - scrollY)); + g.y = -scrollY; + } + redrawSelectionRect(hittestrect); + } +} diff --git a/src/gui/GuiScrollCtrl.hx b/src/gui/GuiScrollCtrl.hx index 7828fd54..ac0d93dc 100644 --- a/src/gui/GuiScrollCtrl.hx +++ b/src/gui/GuiScrollCtrl.hx @@ -16,6 +16,7 @@ class GuiScrollCtrl extends GuiControl { public var enabled:Bool = true; public var childrenHandleScroll:Bool = false; public var scrollSpeed = 500; + public var scrollToBottom:Bool = false; var maxScrollY:Float; @@ -96,7 +97,13 @@ class GuiScrollCtrl extends GuiControl { } public function setScrollMax(max:Float) { - this.scrollY = 0; + var renderRect = this.getRenderRectangle(); + if (scrollToBottom) { + var scrollBarYSize = renderRect.extent.y * renderRect.extent.y / (max * Settings.uiScale); + this.scrollY = renderRect.extent.y - scrollBarYSize * Settings.uiScale; + } else { + this.scrollY = 0; + } this.maxScrollY = max; this.dirty = true; this.updateScrollVisual(); @@ -121,6 +128,14 @@ class GuiScrollCtrl extends GuiControl { scene2d.addChild(scrollBarY); scene2d.addChild(clickInteractive); + var renderRect = this.getRenderRectangle(); + if (scrollToBottom) { + var scrollBarYSize = renderRect.extent.y * renderRect.extent.y / (this.maxScrollY * Settings.uiScale); + this.scrollY = renderRect.extent.y - scrollBarYSize * Settings.uiScale; + } else { + this.scrollY = 0; + } + updateScrollVisual(); super.render(scene2d, parent); @@ -128,6 +143,19 @@ class GuiScrollCtrl extends GuiControl { var ch = this._flow.getChildAt(i); _contentYPositions.set(ch, ch.y); } + + if (scrollToBottom) { + updateScrollVisual(); + } + } + + public override function onDormant(scene2d:h2d.Scene) { + super.onDormant(scene2d); + if (scene2d.contains(scrollBarY)) + scene2d.removeChild(scrollBarY); + + if (scene2d.contains(clickInteractive)) + scene2d.removeChild(clickInteractive); } public function updateScrollVisual() { diff --git a/src/gui/GuiTextInput.hx b/src/gui/GuiTextInput.hx index cd08b4a2..77d33f3c 100644 --- a/src/gui/GuiTextInput.hx +++ b/src/gui/GuiTextInput.hx @@ -82,4 +82,9 @@ class GuiTextInput extends GuiControl { } #end } + + public function setCaretColor(col:Int) { + text.cursorTile = h2d.Tile.fromColor(col, Std.int(1 / hxd.Window.getInstance().windowToPixelRatio), text.font.size); + text.cursorTile.dy = 2 / hxd.Window.getInstance().windowToPixelRatio; + } } diff --git a/src/gui/GuiTextListCtrl.hx b/src/gui/GuiTextListCtrl.hx index 255795c9..83e1bd37 100644 --- a/src/gui/GuiTextListCtrl.hx +++ b/src/gui/GuiTextListCtrl.hx @@ -25,6 +25,8 @@ class GuiTextListCtrl extends GuiControl { public var selectedColor:Int = 0x206464; public var selectedFillColor:Int = 0xC8C8C8; + public var selectedFillColorAlpha:Float = 1.0; + public var textColor:Int = 0; public var textYOffset:Int = 0; @@ -32,18 +34,33 @@ class GuiTextListCtrl extends GuiControl { public var scrollable:Bool = false; + var dropShadow:{ + dx:Float, + dy:Float, + color:Int, + alpha:Float + }; + var flow:Flow; - public function new(font:Font, texts:Array) { + public function new(font:Font, texts:Array, textColor:Int = 0, ?filter:{ + dx:Float, + dy:Float, + color:Int, + alpha:Float + } = null) { super(); this.font = font; this.texts = texts; this._manualScroll = true; this.textObjs = []; + this.textColor = textColor; + this.dropShadow = filter; for (text in texts) { var tobj = new Text(font); tobj.text = text; - tobj.textColor = 0; + tobj.textColor = textColor; + tobj.dropShadow = this.dropShadow; textObjs.push(tobj); } this.g = new Graphics(); @@ -58,10 +75,11 @@ class GuiTextListCtrl extends GuiControl { for (text in texts) { var tobj = new Text(font); tobj.text = text; - tobj.textColor = 0; + tobj.textColor = textColor; + tobj.dropShadow = this.dropShadow; textObjs.push(tobj); - if (this.scrollable) { + if (this.scrollable && this.flow != null) { if (this.flow.contains(tobj)) this.flow.removeChild(tobj); @@ -186,7 +204,7 @@ class GuiTextListCtrl extends GuiControl { var renderRect = this.getRenderRectangle(); var yStart = renderRect.position.y; var dy = mousePos.y - yStart; - var hoverIndex = Math.floor(dy / (font.size + 4 * Settings.uiScale)); + var hoverIndex = Math.floor((dy + this.scroll) / (font.size + 4 * Settings.uiScale)); if (hoverIndex >= this.texts.length) { hoverIndex = -1; } @@ -195,7 +213,7 @@ class GuiTextListCtrl extends GuiControl { for (i in 0...textObjs.length) { var selected = i == hoverIndex || i == this._prevSelected; var text = textObjs[i]; - text.textColor = selected ? selectedColor : 0; + text.textColor = selected ? selectedColor : textColor; // fill color = 0xC8C8C8 } // obviously in renderRect @@ -206,7 +224,7 @@ class GuiTextListCtrl extends GuiControl { if (i == this._prevSelected) continue; var text = textObjs[i]; - text.textColor = 0; + text.textColor = textColor; // fill color = 0xC8C8C8 } } @@ -236,7 +254,7 @@ class GuiTextListCtrl extends GuiControl { function redrawSelectionRect(renderRect:Rect) { if (_prevSelected != -1) { g.clear(); - g.beginFill(selectedFillColor); + g.beginFill(selectedFillColor, selectedFillColorAlpha); var off = this.getOffsetFromParent(); // Check if we are between the top and bottom, render normally in that case diff --git a/src/gui/HtmlText.hx b/src/gui/HtmlText.hx new file mode 100644 index 00000000..4ad0763d --- /dev/null +++ b/src/gui/HtmlText.hx @@ -0,0 +1,904 @@ +package gui; + +import h2d.Bitmap; +import h2d.TileGroup; +import h2d.Font; +import h2d.Tile; +import h2d.RenderContext; +import h2d.Interactive; +import h2d.Object; +import h2d.Text; + +/** + The `HtmlText` line height calculation rules. +**/ +enum LineHeightMode { + /** + Accurate line height calculations. Each line will adjust it's height according to it's contents. + **/ + Accurate; + + /** + Only text adjusts line heights, and `` tags do not affect it (partial legacy behavior). + **/ + TextOnly; + + /** + Legacy line height mode. When used, line heights remain constant based on `Text.font` variable. + **/ + Constant; +} + +/** + `HtmlText` img tag vertical alignment rules. +**/ +enum ImageVerticalAlign { + /** + Align images along the top of the text line. + **/ + Top; + + /** + Align images to sit on the base line of the text. + **/ + Bottom; + + /** + Align images to the middle between the top of the text line its base line. + **/ + Middle; +} + +/** + A simple HTML text renderer. + + See the [Text](https://github.com/HeapsIO/heaps/wiki/Text) section of the manual for more details and a list of the supported HTML tags. +**/ +class HtmlText extends Text { + /** + A default method HtmlText uses to load images for `` tag. See `HtmlText.loadImage` for details. + **/ + public static dynamic function defaultLoadImage(url:String):h2d.Tile { + return null; + } + + /** + A default method HtmlText uses to load fonts for `` tags with `face` attribute. See `HtmlText.loadFont` for details. + **/ + public static dynamic function defaultLoadFont(name:String):h2d.Font { + return null; + } + + /** + A default method HtmlText uses to format assigned text. See `HtmlText.formatText` for details. + **/ + public static dynamic function defaultFormatText(text:String):String { + return text; + } + + /** + When enabled, condenses extra spaces (carriage-return, line-feed, tabulation and space character) to one space. + If not set, uncondensed whitespace is left as is, as well as line-breaks. + **/ + public var condenseWhite(default, set):Bool = true; + + /** + The spacing after `` tags in pixels. + **/ + public var imageSpacing(default, set):Float = 1; + + /** + Line height calculation mode controls how much space lines take up vertically. + Changing mode to `Constant` restores the legacy behavior of HtmlText. + **/ + public var lineHeightMode(default, set):LineHeightMode = Accurate; + + /** + Vertical alignment of the images in `` tag relative to the text. + **/ + public var imageVerticalAlign(default, set):ImageVerticalAlign = Bottom; + + var elements:Array = []; + var xPos:Float; + var yPos:Float; + var xMax:Float; + var xMin:Float; + var textXml:Xml; + var sizePos:Int; + var dropMatrix:h3d.shader.ColorMatrix; + var prevChar:Int; + var newLine:Bool; + var aHrefs:Array; + var aInteractive:Interactive; + + override function draw(ctx:RenderContext) { + if (dropShadow != null) { + var oldX = absX, oldY = absY; + absX += dropShadow.dx * matA + dropShadow.dy * matC; + absY += dropShadow.dx * matB + dropShadow.dy * matD; + if (dropMatrix == null) { + dropMatrix = new h3d.shader.ColorMatrix(); + addShader(dropMatrix); + } + dropMatrix.enabled = true; + var m = dropMatrix.matrix; + m.zero(); + m._41 = ((dropShadow.color >> 16) & 0xFF) / 255; + m._42 = ((dropShadow.color >> 8) & 0xFF) / 255; + m._43 = (dropShadow.color & 0xFF) / 255; + m._44 = dropShadow.alpha; + for (e in elements) { + if (e is TileGroup) + @:privateAccess (cast(e, TileGroup)).drawWith(ctx, this); + } + @:privateAccess glyphs.drawWith(ctx, this); + dropMatrix.enabled = false; + absX = oldX; + absY = oldY; + } else { + removeShader(dropMatrix); + dropMatrix = null; + } + @:privateAccess glyphs.drawWith(ctx, this); + } + + override function getShader(stype:Class):T { + if (shaders != null) + for (s in shaders) { + var c = Std.downcast(s, h3d.shader.ColorMatrix); + if (c != null && !c.enabled) + continue; + var s = hxd.impl.Api.downcast(s, stype); + if (s != null) + return s; + } + return null; + } + + /** + Method that should return an `h2d.Tile` instance for `` tags. By default calls `HtmlText.defaultLoadImage` method. + + HtmlText does not cache tile instances. + Due to internal structure, method should be deterministic and always return same Tile on consequent calls with same `url` input. + @param url A value contained in `src` attribute. + **/ + public dynamic function loadImage(url:String):Tile { + return defaultLoadImage(url); + } + + /** + Method that should return an `h2d.Font` instance for `` tags with `face` attribute. By default calls `HtmlText.defaultLoadFont` method. + + HtmlText does not cache font instances and it's recommended to perform said caching from outside. + Due to internal structure, method should be deterministic and always return same Font instance on consequent calls with same `name` input. + @param name A value contained in `face` attribute. + @returns Method should return loaded font instance or `null`. If `null` is returned - currently active font is used. + **/ + public dynamic function loadFont(name:String):Font { + var f = defaultLoadFont(name); + if (f == null) + return this.font; + else + return f; + } + + /** + Called on a tag click + **/ + public dynamic function onHyperlink(url:String):Void {} + + /** + Called when text is assigned, allowing to process arbitrary text to a valid XHTML. + **/ + public dynamic function formatText(text:String):String { + return defaultFormatText(text); + } + + override function set_text(t:String) { + super.set_text(formatText(t)); + return t; + } + + function parseText(text:String) { + return try Xml.parse(text) catch (e:Dynamic) throw "Could not parse " + text + " (" + e + ")"; + } + + inline function makeLineInfo(width:Float, height:Float, baseLine:Float):LineInfo { + return {width: width, height: height, baseLine: baseLine}; + } + + override function validateText() { + textXml = parseText(text); + validateNodes(textXml); + } + + function validateNodes(xml:Xml) { + switch (xml.nodeType) { + case Element: + var nodeName = xml.nodeName.toLowerCase(); + switch (nodeName) { + case "img": + loadImage(xml.get("src")); + case "font": + if (xml.exists("face")) { + loadFont(xml.get("face")); + } + case "b", "bold": + loadFont("bold"); + case "i", "italic": + loadFont("italic"); + } + for (child in xml) + validateNodes(child); + case Document: + for (child in xml) + validateNodes(child); + default: + } + } + + override function initGlyphs(text:String, rebuild = true) { + if (rebuild) { + glyphs.clear(); + for (e in elements) + e.remove(); + elements = []; + } + glyphs.setDefaultColor(textColor); + + var doc:Xml; + if (textXml == null) { + doc = parseText(text); + } else { + doc = textXml; + } + + yPos = 0; + xMax = 0; + xMin = Math.POSITIVE_INFINITY; + sizePos = 0; + calcYMin = 0; + + var metrics:Array = [makeLineInfo(0, font.lineHeight, font.baseLine)]; + prevChar = -1; + newLine = true; + var splitNode:SplitNode = { + node: null, + pos: 0, + font: font, + prevChar: -1, + width: 0, + height: 0, + baseLine: 0 + }; + for (e in doc) + buildSizes(e, font, metrics, splitNode); + + var max = 0.; + for (info in metrics) { + if (info.width > max) + max = info.width; + } + calcWidth = max; + + prevChar = -1; + newLine = true; + nextLine(textAlign, metrics[0].width); + for (e in doc) + addNode(e, font, textAlign, rebuild, metrics); + + if (xPos > xMax) + xMax = xPos; + + textXml = null; + + var y = yPos; + calcXMin = xMin; + calcWidth = xMax - xMin; + calcHeight = y + metrics[sizePos].height; + calcSizeHeight = y + metrics[sizePos].baseLine; // (font.baseLine > 0 ? font.baseLine : font.lineHeight); + calcDone = true; + if (rebuild) + needsRebuild = false; + } + + function buildSizes(e:Xml, font:Font, metrics:Array, splitNode:SplitNode) { + function wordSplit() { + var fnt = splitNode.font; + var str = splitNode.node.nodeValue; + var info = metrics[metrics.length - 1]; + var w = info.width; + var cc = str.charCodeAt(splitNode.pos); + // Restore line metrics to ones before split. + // Potential bug: `Text [Image] texttext` - third line will use metrics as if image is present in the line. + info.width = splitNode.width; + info.height = splitNode.height; + info.baseLine = splitNode.baseLine; + var char = fnt.getChar(cc); + if (lineBreak && fnt.charset.isSpace(cc)) { + // Space characters are converted to \n + w -= (splitNode.width + letterSpacing + char.width + char.getKerningOffset(splitNode.prevChar)); + splitNode.node.nodeValue = str.substr(0, splitNode.pos) + "\n" + str.substr(splitNode.pos + 1); + } else { + w -= (splitNode.width + letterSpacing + char.getKerningOffset(splitNode.prevChar)); + splitNode.node.nodeValue = str.substr(0, splitNode.pos + 1) + "\n" + str.substr(splitNode.pos + 1); + } + splitNode.node = null; + return w; + } + inline function lineFont() { + return lineHeightMode == Constant ? this.font : font; + } + if (e.nodeType == Xml.Element) { + inline function makeLineBreak() { + var fontInfo = lineFont(); + metrics.push(makeLineInfo(0, fontInfo.lineHeight, fontInfo.baseLine)); + splitNode.node = null; + newLine = true; + prevChar = -1; + } + + var nodeName = e.nodeName.toLowerCase(); + switch (nodeName) { + case "p": + if (!newLine) { + makeLineBreak(); + } + case "br": + makeLineBreak(); + case "img": + // TODO: Support width/height attributes + // Support max-width/max-height attributes (downscale) + // Support min-width/min-height attributes (upscale) + var i:Tile = loadImage(e.get("src")); + if (i == null) + i = Tile.fromColor(0xFF00FF, 8, 8); + + var size = metrics[metrics.length - 1].width + i.width + imageSpacing; + if (realMaxWidth >= 0 && size > realMaxWidth && metrics[metrics.length - 1].width > 0) { + if (splitNode.node != null) { + size = wordSplit() + i.width + imageSpacing; + var info = metrics[metrics.length - 1]; + // Bug: height/baseLine may be innacurate in case of sizeA sizeBsizeA where sizeB is larger. + switch (lineHeightMode) { + case Accurate: + var grow = i.height - i.dy - info.baseLine; + var h = info.height; + var bl = info.baseLine; + if (grow > 0) { + h += grow; + bl += grow; + } + metrics.push(makeLineInfo(size, Math.max(h, bl + i.dy), bl)); + default: + metrics.push(makeLineInfo(size, info.height, info.baseLine)); + } + } + } else { + var info = metrics[metrics.length - 1]; + info.width = size; + if (lineHeightMode == Accurate) { + var grow = i.height - i.dy - info.baseLine; + if (grow > 0) { + switch (imageVerticalAlign) { + case Top: + info.height += grow; + case Bottom: + info.baseLine += grow; + info.height += grow; + case Middle: + info.height += grow; + info.baseLine += Std.int(grow / 2); + } + } + grow = info.baseLine + i.dy; + if (info.height < grow) + info.height = grow; + } + } + newLine = false; + prevChar = -1; + case "font": + for (a in e.attributes()) { + var v = e.get(a); + switch (a.toLowerCase()) { + case "face": font = loadFont(v); + default: + } + } + case "b", "bold": + font = loadFont("bold"); + case "i", "italic": + font = loadFont("italic"); + default: + } + for (child in e) + buildSizes(child, font, metrics, splitNode); + switch (nodeName) { + case "p": + if (!newLine) { + makeLineBreak(); + } + default: + } + } else if (e.nodeValue.length != 0) { + newLine = false; + var text = htmlToText(e.nodeValue); + var fontInfo = lineFont(); + var info:LineInfo = metrics.pop(); + var leftMargin = info.width; + var maxWidth = realMaxWidth < 0 ? Math.POSITIVE_INFINITY : realMaxWidth; + var textSplit = [], restPos = 0; + var x = leftMargin; + var breakChars = 0; + for (i in 0...text.length) { + var cc = text.charCodeAt(i); + var g = font.getChar(cc); + var newline = cc == '\n'.code; + var esize = g.width + g.getKerningOffset(prevChar); + var nc = text.charCodeAt(i + 1); + if (font.charset.isBreakChar(cc) && (nc == null || !font.charset.isComplementChar(nc))) { + // Case: Very first word in text makes the line too long hence we want to start it off on a new line. + if (x > maxWidth && textSplit.length == 0 && splitNode.node != null) { + metrics.push(makeLineInfo(x, info.height, info.baseLine)); + x = wordSplit(); + } + + var size = x + esize + letterSpacing; + var k = i + 1, max = text.length; + var prevChar = cc; + while (size <= maxWidth && k < max) { + var cc = text.charCodeAt(k++); + if (lineBreak && (font.charset.isSpace(cc) || cc == '\n'.code)) + break; + var e = font.getChar(cc); + size += e.width + letterSpacing + e.getKerningOffset(prevChar); + prevChar = cc; + var nc = text.charCodeAt(k); + if (font.charset.isBreakChar(cc) && (nc == null || !font.charset.isComplementChar(nc))) + break; + } + // Avoid empty line when last char causes line-break while being CJK + if (lineBreak && size > maxWidth && i != max - 1) { + // Next word will reach maxWidth + newline = true; + if (font.charset.isSpace(cc)) { + textSplit.push(text.substr(restPos, i - restPos)); + g = null; + } else { + textSplit.push(text.substr(restPos, i + 1 - restPos)); + breakChars++; + } + splitNode.node = null; + restPos = i + 1; + } else { + splitNode.node = e; + splitNode.pos = i + breakChars; + splitNode.prevChar = this.prevChar; + splitNode.width = x; + splitNode.height = info.height; + splitNode.baseLine = info.baseLine; + splitNode.font = font; + } + } + if (g != null && cc != '\n'.code) + x += esize + letterSpacing; + if (newline) { + metrics.push(makeLineInfo(x, info.height, info.baseLine)); + info.height = fontInfo.lineHeight; + info.baseLine = fontInfo.baseLine; + x = 0; + prevChar = -1; + newLine = true; + } else { + prevChar = cc; + newLine = false; + } + } + + if (restPos < text.length) { + if (x > maxWidth) { + if (splitNode.node != null && splitNode.node != e) { + metrics.push(makeLineInfo(x, info.height, info.baseLine)); + x = wordSplit(); + } + } + textSplit.push(text.substr(restPos)); + metrics.push(makeLineInfo(x, info.height, info.baseLine)); + } + + if (newLine || metrics.length == 0) { + metrics.push(makeLineInfo(0, fontInfo.lineHeight, fontInfo.baseLine)); + textSplit.push(""); + } + // Save node value + e.nodeValue = textSplit.join("\n"); + } + } + + static var REG_SPACES = ~/[\r\n\t ]+/g; + + function htmlToText(t:String) { + if (condenseWhite) + t = REG_SPACES.replace(t, " "); + return t; + } + + inline function nextLine(align:Align, size:Float) { + switch (align) { + case Left: + xPos = 0; + if (xMin > 0) + xMin = 0; + case Right, Center, MultilineCenter, MultilineRight: + var max = if (align == MultilineCenter || align == MultilineRight) hxd.Math.ceil(calcWidth) else + calcWidth < 0 ? 0 : hxd.Math.ceil(realMaxWidth); + var k = align == Center || align == MultilineCenter ? 0.5 : 1; + xPos = Math.ffloor((max - size) * k); + if (xPos < xMin) + xMin = xPos; + } + } + + override function splitText(text:String):String { + if (realMaxWidth < 0) + return text; + yPos = 0; + xMax = 0; + sizePos = 0; + calcYMin = 0; + + var doc = parseText(text); + + /* + This might require a global refactoring at some point. + We would need a way to somehow build an AST from the XML representation + with all sizes and word breaks so analysis is much more easy. + */ + + var splitNode:SplitNode = { + node: null, + font: font, + width: 0, + height: 0, + baseLine: 0, + pos: 0, + prevChar: -1 + }; + var metrics = [makeLineInfo(0, font.lineHeight, font.baseLine)]; + prevChar = -1; + newLine = true; + + for (e in doc) + buildSizes(e, font, metrics, splitNode); + xMax = 0; + function addBreaks(e:Xml) { + if (e.nodeType == Xml.Element) { + for (x in e) + addBreaks(x); + } else { + var text = e.nodeValue; + var startI = 0; + var index = Lambda.indexOf(e.parent, e); + for (i in 0...text.length) { + if (text.charCodeAt(i) == '\n'.code) { + var pre = text.substring(startI, i); + if (pre != "") + e.parent.insertChild(Xml.createPCData(pre), index++); + e.parent.insertChild(Xml.createElement("br"), index++); + startI = i + 1; + } + } + if (startI < text.length) { + e.nodeValue = text.substr(startI); + } else { + e.parent.removeChild(e); + } + } + } + for (d in doc) + addBreaks(d); + return doc.toString(); + } + + override function getTextProgress(text:String, progress:Float):String { + if (progress >= text.length) + return text; + var doc = parseText(text); + function progressRec(e:Xml) { + if (progress <= 0) { + e.parent.removeChild(e); + return; + } + if (e.nodeType == Xml.Element) { + for (x in [for (x in e) x]) + progressRec(x); + } else { + var text = htmlToText(e.nodeValue); + var len = text.length; + if (len > progress) { + text = text.substr(0, Std.int(progress)); + e.nodeValue = text; + } + progress -= len; + } + } + for (x in [for (x in doc) x]) + progressRec(x); + return doc.toString(); + } + + function addNode(e:Xml, font:Font, align:Align, rebuild:Bool, metrics:Array) { + inline function createInteractive() { + if (aHrefs == null || aHrefs.length == 0) + return; + aInteractive = new Interactive(0, metrics[sizePos].height, this); + var href = aHrefs[aHrefs.length - 1]; + aInteractive.onClick = function(event) { + onHyperlink(href); + } + aInteractive.x = xPos; + aInteractive.y = yPos; + elements.push(aInteractive); + } + + inline function finalizeInteractive() { + if (aInteractive != null) { + aInteractive.width = xPos - aInteractive.x; + aInteractive = null; + } + } + + inline function makeLineBreak() { + finalizeInteractive(); + if (xPos > xMax) + xMax = xPos; + yPos += metrics[sizePos].height + lineSpacing; + nextLine(align, metrics[++sizePos].width); + createInteractive(); + } + if (e.nodeType == Xml.Element) { + var prevColor = null, prevGlyphs = null; + var oldAlign = align; + var nodeName = e.nodeName.toLowerCase(); + inline function setFont(v:String) { + font = loadFont(v); + if (prevGlyphs == null) + prevGlyphs = glyphs; + var prev = glyphs; + glyphs = new TileGroup(font == null ? null : font.tile, this); + if (font != null) { + switch (font.type) { + case SignedDistanceField(channel, alphaCutoff, smoothing): + var shader = new h3d.shader.SignedDistanceField(); + shader.channel = channel; + shader.alphaCutoff = alphaCutoff; + shader.smoothing = smoothing; + shader.autoSmoothing = smoothing == -1; + glyphs.smooth = this.smooth; + glyphs.addShader(shader); + default: + } + } + @:privateAccess glyphs.curColor.load(prev.curColor); + elements.push(glyphs); + } + switch (nodeName) { + case "font": + for (a in e.attributes()) { + var v = e.get(a); + switch (a.toLowerCase()) { + case "color": + if (prevColor == null) + prevColor = @:privateAccess glyphs.curColor.clone(); + if (v.charCodeAt(0) == '#'.code && v.length == 4) + v = "#" + v.charAt(1) + v.charAt(1) + v.charAt(2) + v.charAt(2) + v.charAt(3) + v.charAt(3); + glyphs.setDefaultColor(Std.parseInt("0x" + v.substr(1))); + case "opacity": + if (prevColor == null) + prevColor = @:privateAccess glyphs.curColor.clone(); + @:privateAccess glyphs.curColor.a *= Std.parseFloat(v); + case "face": + setFont(v); + default: + } + } + case "p": + for (a in e.attributes()) { + switch (a.toLowerCase()) { + case "align": + var v = e.get(a); + if (v != null) switch (v.toLowerCase()) { + case "left": + align = Left; + case "center": + align = Center; + case "right": + align = Right; + case "multiline-center": + align = MultilineCenter; + case "multiline-right": + align = MultilineRight; + // ?justify + } + default: + } + } + if (!newLine) { + makeLineBreak(); + newLine = true; + prevChar = -1; + } else { + nextLine(align, metrics[sizePos].width); + } + case "offset": + for (a in e.attributes()) { + switch (a.toLowerCase()) { + case "value": + var v = e.get(a); + if (v != null) xPos = Std.parseFloat(v); + default: + } + } + // nextLine(align, metrics[sizePos].width); + + case "b", "bold": + setFont("bold"); + case "i", "italic": + setFont("italic"); + case "br": + makeLineBreak(); + newLine = true; + prevChar = -1; + case "img": + var i:Tile = loadImage(e.get("src")); + if (i == null) + i = Tile.fromColor(0xFF00FF, 8, 8); + var py = yPos; + switch (imageVerticalAlign) { + case Bottom: + py += metrics[sizePos].baseLine - i.height; + case Middle: + py += metrics[sizePos].baseLine - i.height / 2; + case Top: + } + if (py + i.dy < calcYMin) + calcYMin = py + i.dy; + if (rebuild) { + var b = new Bitmap(i, this); + b.x = xPos; + b.y = py; + elements.push(b); + } + newLine = false; + prevChar = -1; + xPos += i.width + imageSpacing; + case "a": + if (e.exists("href")) { + finalizeInteractive(); + if (aHrefs == null) + aHrefs = []; + aHrefs.push(e.get("href")); + createInteractive(); + } + default: + } + for (child in e) + addNode(child, font, align, rebuild, metrics); + align = oldAlign; + switch (nodeName) { + case "p": + if (newLine) { + nextLine(align, metrics[sizePos].width); + } else if (sizePos < metrics.length - 2 || metrics[sizePos + 1].width != 0) { + // Condition avoid extra empty line if

was the last tag. + makeLineBreak(); + newLine = true; + prevChar = -1; + } + case "a": + if (aHrefs.length > 0) { + finalizeInteractive(); + aHrefs.pop(); + createInteractive(); + } + default: + } + if (prevGlyphs != null) + glyphs = prevGlyphs; + if (prevColor != null) + @:privateAccess glyphs.curColor.load(prevColor); + } else if (e.nodeValue.length != 0) { + newLine = false; + var t = e.nodeValue; + var dy = metrics[sizePos].baseLine - font.baseLine; + for (i in 0...t.length) { + var cc = t.charCodeAt(i); + if (cc == "\n".code) { + makeLineBreak(); + dy = metrics[sizePos].baseLine - font.baseLine; + prevChar = -1; + continue; + } else { + var fc = font.getChar(cc); + if (fc != null) { + xPos += fc.getKerningOffset(prevChar); + if (rebuild) + glyphs.add(xPos, yPos + dy, fc.t); + if (yPos == 0 && fc.t.dy + dy < calcYMin) + calcYMin = fc.t.dy + dy; + xPos += fc.width + letterSpacing; + } + prevChar = cc; + } + } + } + } + + function set_imageSpacing(s) { + if (imageSpacing == s) + return s; + imageSpacing = s; + rebuild(); + return s; + } + + override function set_textColor(c) { + if (this.textColor == c) + return c; + this.textColor = c; + rebuild(); + return c; + } + + function set_condenseWhite(value:Bool) { + if (this.condenseWhite != value) { + this.condenseWhite = value; + rebuild(); + } + return value; + } + + function set_imageVerticalAlign(align) { + if (this.imageVerticalAlign != align) { + this.imageVerticalAlign = align; + rebuild(); + } + return align; + } + + function set_lineHeightMode(v) { + if (this.lineHeightMode != v) { + this.lineHeightMode = v; + rebuild(); + } + return v; + } + + override function getBoundsRec(relativeTo:Object, out:h2d.col.Bounds, forSize:Bool) { + if (forSize) + for (i in elements) + if (hxd.impl.Api.isOfType(i, h2d.Bitmap)) + i.visible = false; + super.getBoundsRec(relativeTo, out, forSize); + if (forSize) + for (i in elements) + i.visible = true; + } +} + +private typedef LineInfo = { + var width:Float; + var height:Float; + var baseLine:Float; +} + +private typedef SplitNode = { + var node:Xml; + var prevChar:Int; + var pos:Int; + var width:Float; + var height:Float; + var baseLine:Float; + var font:h2d.Font; +} diff --git a/src/gui/JoinServerGui.hx b/src/gui/JoinServerGui.hx new file mode 100644 index 00000000..18522416 --- /dev/null +++ b/src/gui/JoinServerGui.hx @@ -0,0 +1,346 @@ +package gui; + +import net.MasterServerClient; +import net.MasterServerClient.RemoteServerInfo; +import net.Net; +import h2d.filter.DropShadow; +import hxd.res.BitmapFont; +import src.MarbleGame; +import src.ResourceLoader; +import h3d.Vector; +import src.Util; +import src.Settings; + +class JoinServerGui extends GuiImage { + public function new() { + function chooseBg() { + var rand = Math.random(); + if (rand >= 0 && rand <= 0.244) + return ResourceLoader.getImage('data/ui/backgrounds/gold/${cast (Math.floor(Util.lerp(1, 12, Math.random())), Int)}.jpg'); + if (rand > 0.244 && rand <= 0.816) + return ResourceLoader.getImage('data/ui/backgrounds/platinum/${cast (Math.floor(Util.lerp(1, 28, Math.random())), Int)}.jpg'); + return ResourceLoader.getImage('data/ui/backgrounds/ultra/${cast (Math.floor(Util.lerp(1, 9, Math.random())), Int)}.jpg'); + } + var img = chooseBg(); + super(img.resource.toTile()); + + function loadButtonImages(path:String) { + var normal = ResourceLoader.getResource('${path}_n.png', ResourceLoader.getImage, this.imageResources).toTile(); + var hover = ResourceLoader.getResource('${path}_h.png', ResourceLoader.getImage, this.imageResources).toTile(); + var pressed = ResourceLoader.getResource('${path}_d.png', ResourceLoader.getImage, this.imageResources).toTile(); + return [normal, hover, pressed]; + } + + function loadButtonImagesExt(path:String) { + var normal = ResourceLoader.getResource('${path}_n.png', ResourceLoader.getImage, this.imageResources).toTile(); + var hover = ResourceLoader.getResource('${path}_h.png', ResourceLoader.getImage, this.imageResources).toTile(); + var pressed = ResourceLoader.getResource('${path}_d.png', ResourceLoader.getImage, this.imageResources).toTile(); + var disabled = ResourceLoader.getResource('${path}_i.png', ResourceLoader.getImage, this.imageResources).toTile(); + return [normal, hover, pressed, disabled]; + } + + var markerFelt32fontdata = ResourceLoader.getFileEntry("data/font/MarkerFelt.fnt"); + var markerFelt32b = new BitmapFont(markerFelt32fontdata.entry); + @:privateAccess markerFelt32b.loader = ResourceLoader.loader; + var markerFelt32 = markerFelt32b.toSdfFont(cast 26 * Settings.uiScale, MultiChannel); + var markerFelt24 = markerFelt32b.toSdfFont(cast 18 * Settings.uiScale, MultiChannel); + var markerFelt18 = markerFelt32b.toSdfFont(cast 14 * Settings.uiScale, MultiChannel); + + function mlFontLoader(text:String) { + switch (text) { + case "MarkerFelt32": + return markerFelt32; + case "MarkerFelt24": + return markerFelt24; + case "MarkerFelt18": + return markerFelt18; + default: + return null; + } + } + + this.horizSizing = Width; + this.vertSizing = Height; + this.position = new Vector(); + this.extent = new Vector(640, 480); + + var passwordPopup = new GuiControl(); + passwordPopup.position = new Vector(0, 0); + passwordPopup.extent = new Vector(640, 480); + passwordPopup.horizSizing = Width; + passwordPopup.vertSizing = Height; + + var passwordWindow = new GuiImage(ResourceLoader.getResource("data/ui/mp/join/window2.png", ResourceLoader.getImage, this.imageResources).toTile()); + passwordWindow.horizSizing = Center; + passwordWindow.vertSizing = Center; + passwordWindow.position = new Vector(144, 199); + passwordWindow.extent = new Vector(508, 202); + passwordPopup.addChild(passwordWindow); + + var passwordTitle = new GuiText(markerFelt32); + passwordTitle.position = new Vector(22, 28); + passwordTitle.extent = new Vector(463, 14); + passwordTitle.text.textColor = 0xFFFFFF; + passwordTitle.horizSizing = Center; + passwordTitle.justify = Center; + passwordTitle.text.text = "Password Required"; + passwordTitle.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; + passwordWindow.addChild(passwordTitle); + + var passwordBar = new GuiImage(ResourceLoader.getResource("data/ui/mp/join/textbar.png", ResourceLoader.getImage, this.imageResources).toTile()); + passwordBar.position = new Vector(22, 73); + passwordBar.extent = new Vector(463, 47); + passwordWindow.addChild(passwordBar); + + var passwordInput = new GuiTextInput(markerFelt24); + passwordInput.position = new Vector(30, 79); + passwordInput.extent = new Vector(447, 38); + passwordInput.horizSizing = Center; + passwordInput.text.textColor = 0; + passwordWindow.addChild(passwordInput); + + var passwordCancel = new GuiButton(loadButtonImages("data/ui/mp/join/cancel")); + passwordCancel.position = new Vector(29, 126); + passwordCancel.extent = new Vector(94, 45); + passwordCancel.pressedAction = (e) -> { + passwordInput.text.text = ""; + MarbleGame.canvas.popDialog(passwordPopup, false); + } + passwordWindow.addChild(passwordCancel); + + var passwordJoin = new GuiButton(loadButtonImages("data/ui/mp/join/join")); + passwordJoin.position = new Vector(385, 126); + passwordJoin.extent = new Vector(94, 45); + passwordWindow.addChild(passwordJoin); + + var window = new GuiImage(ResourceLoader.getResource("data/ui/mp/join/window.png", ResourceLoader.getImage, this.imageResources).toTile()); + window.horizSizing = Center; + window.vertSizing = Center; + window.position = new Vector(-60, 5); + window.extent = new Vector(759, 469); + + var serverInfoContainer = new GuiControl(); + serverInfoContainer.position = new Vector(520, 58); + serverInfoContainer.extent = new Vector(210, 166); + window.addChild(serverInfoContainer); + + var serverInfo = new GuiMLText(markerFelt24, mlFontLoader); + serverInfo.position = new Vector(0, 0); + serverInfo.extent = new Vector(210, 166); + serverInfo.text.text = '

Select a Server

'; + serverInfo.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; + serverInfo.text.textColor = 0xFFFFFF; + serverInfoContainer.addChild(serverInfo); + + var serverListContainer = new GuiControl(); + serverListContainer.position = new Vector(30, 80); + serverListContainer.extent = new Vector(475, 290); + window.addChild(serverListContainer); + + function imgLoader(path:String) { + var t = switch (path) { + case "ready": + ResourceLoader.getResource("data/ui/mp/play/Ready.png", ResourceLoader.getImage, this.imageResources).toTile(); + case "notready": + ResourceLoader.getResource("data/ui/mp/play/NotReady.png", ResourceLoader.getImage, this.imageResources).toTile(); + case "pc": + ResourceLoader.getResource("data/ui/mp/play/platform_desktop_white.png", ResourceLoader.getImage, this.imageResources).toTile(); + case "mac": + ResourceLoader.getResource("data/ui/mp/play/platform_mac_white.png", ResourceLoader.getImage, this.imageResources).toTile(); + case "web": + ResourceLoader.getResource("data/ui/mp/play/platform_web_white.png", ResourceLoader.getImage, this.imageResources).toTile(); + case "android": + ResourceLoader.getResource("data/ui/mp/play/platform_android_white.png", ResourceLoader.getImage, this.imageResources).toTile(); + case "unknown": + ResourceLoader.getResource("data/ui/mp/play/platform_unknown_white.png", ResourceLoader.getImage, this.imageResources).toTile(); + case _: + return null; + }; + if (t != null) + t.scaleToSize(t.width * (Settings.uiScale), t.height * (Settings.uiScale)); + return t; + } + + var ourServerList:Array = []; + + var curSelection = -1; + var serverList = new GuiMLTextListCtrl(markerFelt18, [], imgLoader); + serverList.position = new Vector(0, 0); + serverList.extent = new Vector(475, 63); + serverList.scrollable = true; + serverList.textYOffset = -6; + serverList.onSelectedFunc = (sel) -> { + curSelection = sel; + + if (curSelection == -1) { + serverInfo.text.text = '

Select a Server

or Host your own

'; + } else { + var server = ourServerList[curSelection]; + serverInfo.text.text = '

${server.name}

Hosted by ${server.host}

${server.description}

'; + } + } + serverListContainer.addChild(serverList); + + var serverDisplays = []; + + var platformToString = ["unknown", "pc", "mac", "web", "android"]; + + function updateServerListDisplay() { + serverDisplays = ourServerList.map(x -> + '${x.name} ${x.players}/${x.maxPlayers}'); + serverList.setTexts(serverDisplays); + } + + MasterServerClient.connectToMasterServer(() -> { + MasterServerClient.instance.getServerList((servers) -> { + ourServerList = servers; + updateServerListDisplay(); + }); + }); + + var hostBtn = new GuiButton(loadButtonImages("data/ui/mp/join/host")); + hostBtn.position = new Vector(521, 379); + hostBtn.extent = new Vector(93, 45); + hostBtn.pressedAction = (e) -> { + Net.hostServer(Settings.serverSettings.name, Settings.serverSettings.description, Settings.serverSettings.maxPlayers, + Settings.serverSettings.password, () -> { + MarbleGame.canvas.setContent(new MPPlayMissionGui(true)); + }); + } + window.addChild(hostBtn); + + var joinFunc = (password:String) -> { + if (curSelection != -1) { + var selectedServerVersion = ourServerList[curSelection].version; + if (selectedServerVersion != MarbleGame.currentVersion) { + var pup = new MessageBoxOkDlg("You are using a different version of the game than the server. Please update your game."); + MarbleGame.canvas.pushDialog(pup); + return; + } + + MarbleGame.canvas.setContent(new MPMessageGui("Please Wait", "Connecting")); + var failed = true; + haxe.Timer.delay(() -> { + if (MarbleGame.canvas.content is MPMessageGui) { + var loadGui:MPMessageGui = cast MarbleGame.canvas.content; + if (loadGui != null) { + loadGui.setTexts("Error", "Failed to connect to server"); + } + } + }, 15000); + Net.joinServer(ourServerList[curSelection].id, password, () -> { + failed = false; + Net.remoteServerInfo = ourServerList[curSelection]; + }); + } + } + + var joinBtn = new GuiButton(loadButtonImages("data/ui/mp/join/join")); + joinBtn.position = new Vector(628, 379); + joinBtn.extent = new Vector(93, 45); + joinBtn.pressedAction = (e) -> { + if (curSelection != -1) { + if (ourServerList[curSelection].passworded) { + MarbleGame.canvas.pushDialog(passwordPopup); + } else { + joinFunc(""); + } + } + } + window.addChild(joinBtn); + + var usernameBtn = new GuiButton(loadButtonImages("data/ui/mp/join/username")); + usernameBtn.position = new Vector(216, 379); + usernameBtn.extent = new Vector(125, 45); + usernameBtn.pressedAction = (e) -> { + MarbleGame.canvas.pushDialog(new EnterNameDlg(-1, (n) -> {})); + } + window.addChild(usernameBtn); + + passwordJoin.pressedAction = (e) -> { + joinFunc(passwordInput.text.text); + } + + var refreshing = false; + var refreshBtn = new GuiButton(loadButtonImagesExt("data/ui/mp/join/refresh/refresh-1")); + refreshBtn.position = new Vector(126, 379); + refreshBtn.extent = new Vector(45, 45); + refreshBtn.pressedAction = (e) -> { + if (refreshing) + return; + refreshBtn.disabled = true; + refreshing = true; + MasterServerClient.connectToMasterServer(() -> { + MasterServerClient.instance.getServerList((servers) -> { + ourServerList = servers; + updateServerListDisplay(); + refreshing = false; + refreshBtn.disabled = false; + }); + }, () -> { + refreshing = false; + refreshBtn.disabled = false; + }); + } + window.addChild(refreshBtn); + + var serverSettingsBtn = new GuiButton(loadButtonImages("data/ui/mp/play/settings")); + serverSettingsBtn.position = new Vector(171, 379); + serverSettingsBtn.extent = new Vector(45, 45); + serverSettingsBtn.pressedAction = (e) -> { + MarbleGame.canvas.pushDialog(new MPServerDlg()); + } + window.addChild(serverSettingsBtn); + + var exitBtn = new GuiButton(loadButtonImages("data/ui/mp/join/leave")); + exitBtn.position = new Vector(32, 379); + exitBtn.extent = new Vector(93, 45); + exitBtn.pressedAction = (e) -> { + MarbleGame.canvas.setContent(new MainMenuGui()); + } + window.addChild(exitBtn); + + var titleText = new GuiText(markerFelt32); + titleText.position = new Vector(30, 20); + titleText.extent = new Vector(647, 30); + titleText.justify = Center; + titleText.text.text = "Join Server"; + titleText.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; + titleText.text.textColor = 0xFFFFFF; + window.addChild(titleText); + + var listTitle = new GuiText(markerFelt24); + listTitle.position = new Vector(30, 48); + listTitle.extent = new Vector(480, 22); + listTitle.text.textColor = 0xDDDDEE; + listTitle.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; + listTitle.text.text = " Server Name Players"; + window.addChild(listTitle); + + this.addChild(window); + + if (StringTools.trim(Settings.highscoreName).length == 0 || Settings.highscoreName == "" || Settings.highscoreName == null) { + haxe.Timer.delay(() -> MarbleGame.canvas.pushDialog(new EnterNameDlg(-1, (n) -> {})), 50); // Pls enter name + } + } +} diff --git a/src/gui/JukeboxDlg.hx b/src/gui/JukeboxDlg.hx index 524cc71b..be04ff7c 100644 --- a/src/gui/JukeboxDlg.hx +++ b/src/gui/JukeboxDlg.hx @@ -50,7 +50,12 @@ class JukeboxDlg extends GuiImage { var songTitle = new GuiMLText(markerFelt24, null); songTitle.position = new Vector(61, 262); songTitle.extent = new Vector(416, 22); - songTitle.text.filter = new DropShadow(1.414, 0.785, 0x0000007F, 1, 0, 0.4, 1, true); + songTitle.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; songTitle.text.textColor = 0xFFFFFF; songTitle.text.text = '

Title: ${songList[selectedIdx]}

'; this.addChild(songTitle); @@ -58,7 +63,12 @@ class JukeboxDlg extends GuiImage { var songStatus = new GuiMLText(markerFelt24, null); songStatus.position = new Vector(56, 283); songStatus.extent = new Vector(421, 22); - songStatus.text.filter = new DropShadow(1.414, 0.785, 0x0000007F, 1, 0, 0.4, 1, true); + songStatus.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; songStatus.text.textColor = 0xFFFFFF; songStatus.text.text = '

${playing ? "Playing" : "Stopped"}

'; this.addChild(songStatus); diff --git a/src/gui/MPEndGameGui.hx b/src/gui/MPEndGameGui.hx new file mode 100644 index 00000000..5535e23d --- /dev/null +++ b/src/gui/MPEndGameGui.hx @@ -0,0 +1,313 @@ +package gui; + +import net.NetCommands; +import net.Net; +import h3d.shader.AlphaChannel; +import hxd.res.BitmapFont; +import src.MarbleGame; +import src.ResourceLoader; +import h3d.Vector; +import src.Settings; +import src.DtsObject; + +class MPEndGameGui extends GuiImage { + public function new() { + var img = ResourceLoader.getImage('data/ui/exit/black.png'); + super(img.resource.toTile()); + this.horizSizing = Width; + this.vertSizing = Height; + this.position = new Vector(0, 0); + this.extent = new Vector(640, 480); + + var domcasual24fontdata = ResourceLoader.getFileEntry("data/font/DomCasualD.fnt"); + var domcasual24b = new BitmapFont(domcasual24fontdata.entry); + @:privateAccess domcasual24b.loader = ResourceLoader.loader; + var domcasual24 = domcasual24b.toSdfFont(cast 20 * Settings.uiScale, MultiChannel); + + var domcasual36 = domcasual24b.toSdfFont(cast 32 * Settings.uiScale, MultiChannel); + + var arial14fontdata = ResourceLoader.getFileEntry("data/font/arial.fnt"); + var arial14b = new BitmapFont(arial14fontdata.entry); + @:privateAccess arial14b.loader = ResourceLoader.loader; + var arial14 = arial14b.toSdfFont(cast 12 * Settings.uiScale, MultiChannel); + + var arialb14fontdata = ResourceLoader.getFileEntry("data/font/Arial Bold.fnt"); + var arialb14b = new BitmapFont(arialb14fontdata.entry); + @:privateAccess arialb14b.loader = ResourceLoader.loader; + var arialBold14 = arialb14b.toSdfFont(cast 12 * Settings.uiScale, MultiChannel); + + var markerFelt32fontdata = ResourceLoader.getFileEntry("data/font/MarkerFelt.fnt"); + var markerFelt32b = new BitmapFont(markerFelt32fontdata.entry); + @:privateAccess markerFelt32b.loader = ResourceLoader.loader; + var markerFelt32 = markerFelt32b.toSdfFont(cast 26 * Settings.uiScale, MultiChannel); + var markerFelt24 = markerFelt32b.toSdfFont(cast 20 * Settings.uiScale, MultiChannel); + var markerFelt20 = markerFelt32b.toSdfFont(cast 18.5 * Settings.uiScale, MultiChannel); + var markerFelt18 = markerFelt32b.toSdfFont(cast 17 * Settings.uiScale, MultiChannel); + var markerFelt26 = markerFelt32b.toSdfFont(cast 22 * Settings.uiScale, MultiChannel); + + var expo50fontdata = ResourceLoader.getFileEntry("data/font/EXPON.fnt"); + var expo50b = new BitmapFont(expo50fontdata.entry); + @:privateAccess expo50b.loader = ResourceLoader.loader; + var expo50 = expo50b.toSdfFont(cast 35 * Settings.uiScale, MultiChannel); + + function mlFontLoader(text:String) { + switch (text) { + case "DomCasual24": + return domcasual24; + case "Arial14": + return arial14; + case "ArialBold14": + return arialBold14; + case "MarkerFelt32": + return markerFelt32; + case "MarkerFelt24": + return markerFelt24; + case "MarkerFelt18": + return markerFelt18; + case "MarkerFelt20": + return markerFelt20; + case "MarkerFelt26": + return markerFelt26; + default: + return null; + } + } + + function loadButtonImages(path:String) { + var normal = ResourceLoader.getResource('${path}_n.png', ResourceLoader.getImage, this.imageResources).toTile(); + var hover = ResourceLoader.getResource('${path}_h.png', ResourceLoader.getImage, this.imageResources).toTile(); + var pressed = ResourceLoader.getResource('${path}_d.png', ResourceLoader.getImage, this.imageResources).toTile(); + return [normal, hover, pressed]; + } + + function loadButtonImagesExt(path:String) { + var normal = ResourceLoader.getResource('${path}_n.png', ResourceLoader.getImage, this.imageResources).toTile(); + var hover = ResourceLoader.getResource('${path}_h.png', ResourceLoader.getImage, this.imageResources).toTile(); + var pressed = ResourceLoader.getResource('${path}_d.png', ResourceLoader.getImage, this.imageResources).toTile(); + var disabled = ResourceLoader.getResource('${path}_i.png', ResourceLoader.getImage, this.imageResources).toTile(); + return [normal, hover, pressed, disabled]; + } + + var sidebar = new GuiImage(ResourceLoader.getResource("data/ui/mp/end/window.png", ResourceLoader.getImage, this.imageResources).toTile()); + sidebar.position = new Vector(587, 141); + sidebar.extent = new Vector(53, 198); + sidebar.horizSizing = Left; + sidebar.vertSizing = Center; + this.addChild(sidebar); + + var lobbyBtn = new GuiButton(loadButtonImagesExt("data/ui/mp/end/lobby")); + lobbyBtn.position = new Vector(5, 53); + lobbyBtn.extent = new Vector(49, 49); + lobbyBtn.vertSizing = Top; + lobbyBtn.pressedAction = (e) -> { + MarbleGame.instance.quitMission(); + } + if (Net.isClient) { + lobbyBtn.disabled = true; + } + sidebar.addChild(lobbyBtn); + + var restartBtn = new GuiButton(loadButtonImagesExt("data/ui/mp/end/restart")); + restartBtn.position = new Vector(5, 7); + restartBtn.extent = new Vector(49, 49); + restartBtn.pressedAction = (e) -> { + MarbleGame.canvas.popDialog(this); + MarbleGame.instance.paused = false; + NetCommands.completeRestartGame(); + } + if (Net.isClient) { + restartBtn.disabled = true; + } + sidebar.addChild(restartBtn); + + var exitBtn = new GuiButton(loadButtonImagesExt("data/ui/mp/end/exit")); + exitBtn.position = new Vector(5, 99); + exitBtn.extent = new Vector(49, 49); + exitBtn.vertSizing = Top; + exitBtn.horizSizing = Left; + exitBtn.pressedAction = (e) -> { + MarbleGame.canvas.popDialog(this); + MarbleGame.instance.paused = false; + MarbleGame.instance.quitMission(); + Net.disconnect(); + MarbleGame.canvas.setContent(new JoinServerGui()); + } + sidebar.addChild(exitBtn); + + var middleCtrl = new GuiControl(); + middleCtrl.horizSizing = Center; + middleCtrl.vertSizing = Height; + middleCtrl.position = new Vector(-80, 0); + middleCtrl.extent = new Vector(800, 480); + this.addChild(middleCtrl); + + var hasPlatinum = false; + var scores = @:privateAccess MarbleGame.instance.world.playGui.playerList; + for (player in scores) { + if (player.p > 0) { + hasPlatinum = true; + break; + } + } + + var headerML = new GuiText(domcasual36); + headerML.position = new Vector(25, 83); + headerML.extent = new Vector(750, 14); + headerML.horizSizing = Width; + headerML.text.textColor = 0xFFFFFF; + headerML.text.text = ' Name Score ${hasPlatinum ? " " : ""} Marble'; + middleCtrl.addChild(headerML); + + var ourRank = scores.indexOf(scores.filter(x -> x.us == true)[0]) + 1; + var rankSuffix = ourRank == 1 ? "st" : (ourRank == 2 ? "nd" : (ourRank == 3 ? "rd" : "th")); + + var col0 = 0xCFB52B; + var col1 = 0xCDCDCD; + var col2 = 0xD19275; + var col3 = 0xFFEE99; + + var rankColor = ourRank == 1 ? col0 : (ourRank == 2 ? col1 : (ourRank == 3 ? col2 : col3)); + + var titleML = new GuiText(expo50); + titleML.position = new Vector(25, 6); + titleML.extent = new Vector(750, 14); + titleML.justify = Center; + titleML.horizSizing = Width; + titleML.text.textColor = rankColor; + titleML.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; + titleML.text.text = 'You have won ' + ourRank + rankSuffix + ' place!'; + middleCtrl.addChild(titleML); + + var redGem = buildObjectShow("data/shapes/items/gem.dts", new Vector(365, 65), new Vector(64, 64), 2.5, 0, ["base.gem" => "red.gem"]); + middleCtrl.addChild(redGem); + var yellowGem = buildObjectShow("data/shapes/items/gem.dts", new Vector(417, 65), new Vector(64, 64), 2.5, 0, ["base.gem" => "yellow.gem"]); + middleCtrl.addChild(yellowGem); + var blueGem = buildObjectShow("data/shapes/items/gem.dts", new Vector(469, 65), new Vector(64, 64), 2.5, 0, ["base.gem" => "blue.gem"]); + middleCtrl.addChild(blueGem); + if (hasPlatinum) { + var platinumGem = buildObjectShow("data/shapes/items/gem.dts", new Vector(521, 65), new Vector(64, 64), 2.5, 0, ["base.gem" => "platinum.gem"]); + middleCtrl.addChild(platinumGem); + } + + var playerContainer = new GuiControl(); + playerContainer.horizSizing = Center; + playerContainer.vertSizing = Height; + playerContainer.position = new Vector(25, 125); + playerContainer.extent = new Vector(750, 275); + middleCtrl.addChild(playerContainer); + + var idx = 0; + + function addPlayer(rank:Int, playerName:String, score:Int, r:Int, y:Int, b:Int, p:Int, marbleCat:Int, marbleSel:Int) { + var container = new GuiControl(); + container.position = new Vector(0, 44 * idx); + container.extent = new Vector(750, 44); + + var playerNameT = new GuiText(domcasual36); + playerNameT.text.textColor = 0xFFFFFF; + playerNameT.text.text = '${rank}. ${playerName}'; + playerNameT.position = new Vector(0, 3); + playerNameT.extent = new Vector(300, 14); + container.addChild(playerNameT); + + var playerScore = new GuiText(domcasual36); + playerScore.text.textColor = 0xFFFFFF; + playerScore.text.text = '${score}'; + playerScore.position = new Vector(287, 3); + playerScore.extent = new Vector(310, 14); + container.addChild(playerScore); + + var playerR = new GuiText(domcasual36); + playerR.text.textColor = 0xFF0000; + playerR.text.text = '${r}'; + playerR.justify = Center; + playerR.position = new Vector(348, 3); + playerR.extent = new Vector(52, 14); + container.addChild(playerR); + + var playerY = new GuiText(domcasual36); + playerY.text.textColor = 0xFFFF00; + playerY.text.text = '${y}'; + playerY.justify = Center; + playerY.position = new Vector(400, 3); + playerY.extent = new Vector(52, 14); + container.addChild(playerY); + + var playerB = new GuiText(domcasual36); + playerB.text.textColor = 0x4040FF; + playerB.text.text = '${b}'; + playerB.justify = Center; + playerB.position = new Vector(452, 3); + playerB.extent = new Vector(52, 14); + container.addChild(playerB); + + if (hasPlatinum) { + var playerB = new GuiText(domcasual36); + playerB.text.textColor = 0xCCCCCC; + playerB.text.text = '${p}'; + playerB.justify = Center; + playerB.position = new Vector(504, 3); + playerB.extent = new Vector(52, 14); + container.addChild(playerB); + } + + var marble = buildObjectShow(MarbleSelectGui.marbleData[marbleCat][marbleSel].dts, new Vector((hasPlatinum ? 52 : 0) + 524, -10), + new Vector(64, 64), 2.4, 0, [ + "base.marble" => MarbleSelectGui.marbleData[marbleCat][marbleSel].skin + ".marble" + ]); + + container.addChild(marble); + + playerContainer.addChild(container); + + idx += 1; + } + + var r = 1; + for (player in scores) { + var cat = Settings.optionsSettings.marbleCategoryIndex; + var marb = Settings.optionsSettings.marbleIndex; + if (!player.us) { + var c = Net.clientIdMap[player.id]; + cat = c.marbleCatId; + marb = c.marbleId; + } + + addPlayer(r, player.name, player.score, player.r, player.y, player.b, player.p, cat, marb); + r += 1; + } + } + + function buildObjectShow(dtsPath:String, position:Vector, extent:Vector, dist:Float = 5, pitch:Float = 0, matnameOverride:Map = null) { + var oShow = new GuiObjectShow(); + var dtsObj = new DtsObject(); + dtsObj.dtsPath = dtsPath; + dtsObj.ambientRotate = true; + dtsObj.ambientSpinFactor /= -2; + dtsObj.showSequences = false; + dtsObj.useInstancing = false; + if (matnameOverride != null) { + for (key => value in matnameOverride) { + dtsObj.matNameOverride.set(key, value); + } + } + dtsObj.init(null, () -> {}); // The lambda is not gonna run async anyway + for (mat in dtsObj.materials) { + mat.mainPass.enableLights = false; + mat.mainPass.culling = None; + if (mat.blendMode != Alpha && mat.blendMode != Add) + mat.mainPass.addShader(new AlphaChannel()); + } + oShow.sceneObject = dtsObj; + oShow.position = position; + oShow.extent = extent; + oShow.renderDistance = dist; + oShow.renderPitch = pitch; + return oShow; + } +} diff --git a/src/gui/MPExitGameDlg.hx b/src/gui/MPExitGameDlg.hx new file mode 100644 index 00000000..8cabbee2 --- /dev/null +++ b/src/gui/MPExitGameDlg.hx @@ -0,0 +1,173 @@ +package gui; + +import net.NetCommands; +import h2d.filter.DropShadow; +import net.Net; +import src.MarbleGame; +import hxd.res.BitmapFont; +import h3d.Vector; +import src.ResourceLoader; +import src.Settings; +import hxd.Key; + +class MPExitGameDlg extends GuiControl { + public function new(resumeFunc:() -> Void, exitFunc:() -> Void) { + super(); + + this.horizSizing = Width; + this.vertSizing = Height; + this.position = new Vector(); + this.extent = new Vector(640, 480); + + function loadButtonImages(path:String) { + var normal = ResourceLoader.getResource('${path}_n.png', ResourceLoader.getImage, this.imageResources).toTile(); + var hover = ResourceLoader.getResource('${path}_h.png', ResourceLoader.getImage, this.imageResources).toTile(); + var pressed = ResourceLoader.getResource('${path}_d.png', ResourceLoader.getImage, this.imageResources).toTile(); + return [normal, hover, pressed]; + } + + function loadButtonImagesExt(path:String) { + var normal = ResourceLoader.getResource('${path}_n.png', ResourceLoader.getImage, this.imageResources).toTile(); + var hover = ResourceLoader.getResource('${path}_h.png', ResourceLoader.getImage, this.imageResources).toTile(); + var pressed = ResourceLoader.getResource('${path}_d.png', ResourceLoader.getImage, this.imageResources).toTile(); + var disabled = ResourceLoader.getResource('${path}_i.png', ResourceLoader.getImage, this.imageResources).toTile(); + return [normal, hover, pressed, disabled]; + } + + var dialogImg = new GuiImage(ResourceLoader.getResource("data/ui/mp/team/teamjoin.png", ResourceLoader.getImage, this.imageResources).toTile()); + dialogImg.horizSizing = Center; + dialogImg.vertSizing = Center; + dialogImg.position = new Vector(146, 115); + dialogImg.extent = new Vector(347, 250); + this.addChild(dialogImg); + + var partialRestart = new GuiButton(loadButtonImagesExt("data/ui/mp/exit/partial")); + partialRestart.position = new Vector(133, 80); + partialRestart.extent = new Vector(94, 45); + partialRestart.vertSizing = Top; + partialRestart.pressedAction = (e) -> { + MarbleGame.instance.paused = false; + NetCommands.partialRestartGame(); + MarbleGame.canvas.popDialog(this); + } + dialogImg.addChild(partialRestart); + if (!Net.isHost) { + partialRestart.disabled = true; + } + + var disconnectBtn = new GuiButton(Net.isHost ? loadButtonImages("data/ui/mp/exit/levelselect") : loadButtonImages("data/ui/mp/exit/disconnect")); + disconnectBtn.position = new Vector(22, 132); + disconnectBtn.extent = new Vector(114, 45); + disconnectBtn.vertSizing = Top; + disconnectBtn.pressedAction = (e) -> exitFunc(); + dialogImg.addChild(disconnectBtn); + + var resumeBtn = new GuiButton(loadButtonImages("data/ui/mp/exit/resume")); + resumeBtn.position = new Vector(133, 132); + resumeBtn.extent = new Vector(94, 45); + resumeBtn.vertSizing = Top; + resumeBtn.pressedAction = (e) -> resumeFunc(); + dialogImg.addChild(resumeBtn); + + var serverSettingsBtn = new GuiButton(loadButtonImagesExt("data/ui/mp/play/settings")); + serverSettingsBtn.position = new Vector(155, 184); + serverSettingsBtn.extent = new Vector(45, 45); + serverSettingsBtn.vertSizing = Top; + serverSettingsBtn.pressedAction = (e) -> { + MarbleGame.canvas.pushDialog(new MPServerDlg()); + }; + dialogImg.addChild(serverSettingsBtn); + if (!Net.isHost) { + serverSettingsBtn.disabled = true; + } + + var kickBtn = new GuiButton(loadButtonImagesExt("data/ui/mp/play/kick")); + kickBtn.position = new Vector(68, 184); + kickBtn.extent = new Vector(45, 45); + kickBtn.vertSizing = Top; + kickBtn.pressedAction = (e) -> { + MarbleGame.canvas.pushDialog(new MPKickBanDlg()); + } + dialogImg.addChild(kickBtn); + if (!Net.isHost) { + kickBtn.disabled = true; + } + + var optionsBtn = new GuiButton(loadButtonImagesExt("data/ui/mp/play/playersettings")); + optionsBtn.position = new Vector(242, 184); + optionsBtn.extent = new Vector(45, 45); + optionsBtn.vertSizing = Top; + optionsBtn.pressedAction = (e) -> { + MarbleGame.canvas.pushDialog(new OptionsDlg(true)); + } + dialogImg.addChild(optionsBtn); + + var quickspawnBtn = new GuiButton(loadButtonImages("data/ui/mp/exit/respawn")); + quickspawnBtn.position = new Vector(224, 132); + quickspawnBtn.extent = new Vector(104, 45); + quickspawnBtn.vertSizing = Top; + quickspawnBtn.pressedAction = (e) -> { + MarbleGame.instance.paused = false; + @:privateAccess Key.keyPressed[Settings.controlsSettings.respawn] = Key.getFrame() - 1; // jank + MarbleGame.canvas.popDialog(this); + } + dialogImg.addChild(quickspawnBtn); + + var completeRestart = new GuiButton(loadButtonImagesExt("data/ui/mp/exit/complete")); + completeRestart.position = new Vector(224, 80); + completeRestart.extent = new Vector(104, 45); + completeRestart.vertSizing = Top; + completeRestart.pressedAction = (e) -> { + MarbleGame.instance.paused = false; + NetCommands.completeRestartGame(); + MarbleGame.canvas.popDialog(this); + } + dialogImg.addChild(completeRestart); + if (!Net.isHost) { + completeRestart.disabled = true; + } + + var markerFelt32fontdata = ResourceLoader.getFileEntry("data/font/MarkerFelt.fnt"); + var markerFelt32b = new BitmapFont(markerFelt32fontdata.entry); + @:privateAccess markerFelt32b.loader = ResourceLoader.loader; + var markerFelt32 = markerFelt32b.toSdfFont(cast 26 * Settings.uiScale, MultiChannel); + var markerFelt38 = markerFelt32b.toSdfFont(cast 31 * Settings.uiScale, MultiChannel); + + var exitTitle = new GuiText(markerFelt38); + exitTitle.position = new Vector(8, 28); + exitTitle.extent = new Vector(331, 30); + exitTitle.justify = Center; + exitTitle.text.text = "Ingame Options"; + exitTitle.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; + dialogImg.addChild(exitTitle); + + var restartTitle = new GuiText(markerFelt32); + restartTitle.position = new Vector(20, 88); + restartTitle.extent = new Vector(114, 14); + restartTitle.justify = Center; + restartTitle.text.text = "Restart:"; + restartTitle.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; + dialogImg.addChild(restartTitle); + + var jukeboxButton = new GuiButton(loadButtonImages("data/ui/jukebox/jb_pausemenu")); + jukeboxButton.vertSizing = Top; + jukeboxButton.horizSizing = Left; + jukeboxButton.position = new Vector(439, 403); + jukeboxButton.extent = new Vector(187, 65); + jukeboxButton.pressedAction = (e) -> { + MarbleGame.canvas.pushDialog(new JukeboxDlg()); + } + + this.addChild(jukeboxButton); + } +} diff --git a/src/gui/MPKickBanDlg.hx b/src/gui/MPKickBanDlg.hx new file mode 100644 index 00000000..a759178f --- /dev/null +++ b/src/gui/MPKickBanDlg.hx @@ -0,0 +1,112 @@ +package gui; + +import net.NetCommands; +import net.Net; +import h2d.filter.DropShadow; +import hxd.res.BitmapFont; +import h3d.prim.Polygon; +import h3d.scene.Mesh; +import h3d.shader.AlphaChannel; +import src.MarbleGame; +import h3d.Vector; +import src.ResourceLoader; +import src.DtsObject; +import src.Settings; +import src.ResourceLoaderWorker; + +class MPKickBanDlg extends GuiImage { + public function new() { + var img = ResourceLoader.getImage("data/ui/mp/kickban/window.png"); + super(img.resource.toTile()); + this.horizSizing = Center; + this.vertSizing = Center; + this.position = new Vector(226, 137); + this.extent = new Vector(409, 316); + + function loadButtonImages(path:String) { + var normal = ResourceLoader.getResource('${path}_n.png', ResourceLoader.getImage, this.imageResources).toTile(); + var hover = ResourceLoader.getResource('${path}_h.png', ResourceLoader.getImage, this.imageResources).toTile(); + var pressed = ResourceLoader.getResource('${path}_d.png', ResourceLoader.getImage, this.imageResources).toTile(); + return [normal, hover, pressed]; + } + + function loadButtonImagesExt(path:String) { + var normal = ResourceLoader.getResource('${path}_n.png', ResourceLoader.getImage, this.imageResources).toTile(); + var hover = ResourceLoader.getResource('${path}_h.png', ResourceLoader.getImage, this.imageResources).toTile(); + var pressed = ResourceLoader.getResource('${path}_d.png', ResourceLoader.getImage, this.imageResources).toTile(); + var disabled = ResourceLoader.getResource('${path}_i.png', ResourceLoader.getImage, this.imageResources).toTile(); + return [normal, hover, pressed, disabled]; + } + + var markerFelt32fontdata = ResourceLoader.getFileEntry("data/font/MarkerFelt.fnt"); + var markerFelt32b = new BitmapFont(markerFelt32fontdata.entry); + @:privateAccess markerFelt32b.loader = ResourceLoader.loader; + var markerFelt32 = markerFelt32b.toSdfFont(cast 26 * Settings.uiScale, MultiChannel); + var markerFelt24 = markerFelt32b.toSdfFont(cast 20 * Settings.uiScale, MultiChannel); + var markerFelt20 = markerFelt32b.toSdfFont(cast 18.5 * Settings.uiScale, MultiChannel); + var markerFelt18 = markerFelt32b.toSdfFont(cast 17 * Settings.uiScale, MultiChannel); + var markerFelt26 = markerFelt32b.toSdfFont(cast 22 * Settings.uiScale, MultiChannel); + + var closeBtn = new GuiButton(loadButtonImages("data/ui/mp/team/close")); + closeBtn.position = new Vector(247, 254); + closeBtn.extent = new Vector(94, 45); + closeBtn.vertSizing = Bottom; + closeBtn.horizSizing = Right; + closeBtn.pressedAction = (e) -> { + MarbleGame.canvas.popDialog(this); + } + this.addChild(closeBtn); + + var kickBtn = new GuiButton(loadButtonImagesExt("data/ui/mp/kickban/kick")); + kickBtn.position = new Vector(77, 254); + kickBtn.extent = new Vector(94, 45); + kickBtn.vertSizing = Bottom; + kickBtn.horizSizing = Right; + kickBtn.disabled = true; + this.addChild(kickBtn); + + var kickTitle = new GuiText(markerFelt32); + kickTitle.text.textColor = 0xFFFFFF; + kickTitle.text.text = "Kick Players"; + kickTitle.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; + kickTitle.justify = Center; + kickTitle.position = new Vector(11, 17); + kickTitle.extent = new Vector(388, 14); + this.addChild(kickTitle); + + var playerNames = []; + var playerIds = []; + for (c in Net.clients) { + playerNames.push(c.getName()); + playerIds.push(c.id); + } + + var kickPlayerId = -1; + + var playerList = new GuiTextListCtrl(markerFelt18, playerNames, 0); + playerList.position = new Vector(120, 60); + playerList.extent = new Vector(188, 180); + playerList.textYOffset = -6; + playerList.onSelectedFunc = (sel) -> { + kickBtn.disabled = false; + kickPlayerId = playerIds[sel]; + } + this.addChild(playerList); + + kickBtn.pressedAction = (e) -> { + if (Net.clientIdMap.exists(kickPlayerId)) { + var playerToKick = kickPlayerId; + playerNames.remove(Net.clientIdMap.get(playerToKick).getName()); + playerIds.remove(playerToKick); + playerList.setTexts(playerNames); + kickBtn.disabled = true; + NetCommands.getKickedClient(Net.clientIdMap.get(playerToKick)); + } + } + } +} diff --git a/src/gui/MPMarbleSelectGui.hx b/src/gui/MPMarbleSelectGui.hx new file mode 100644 index 00000000..b7643617 --- /dev/null +++ b/src/gui/MPMarbleSelectGui.hx @@ -0,0 +1,238 @@ +package gui; + +import net.Net; +import net.NetCommands; +import h2d.filter.DropShadow; +import hxd.res.BitmapFont; +import h3d.prim.Polygon; +import h3d.scene.Mesh; +import h3d.shader.AlphaChannel; +import src.MarbleGame; +import h3d.Vector; +import src.ResourceLoader; +import src.DtsObject; +import src.Settings; +import src.ResourceLoaderWorker; + +class MPMarbleSelectGui extends GuiImage { + public function new() { + var img = ResourceLoader.getImage("data/ui/mp/team/teamcreate.png"); + super(img.resource.toTile()); + this.horizSizing = Center; + this.vertSizing = Center; + this.position = new Vector(73, -59); + this.extent = new Vector(493, 361); + + var categoryNames = ["Official Marbles", "MBUltra"]; + + var curSelection:Int = Settings.optionsSettings.marbleIndex; + var curCategorySelection:Int = Settings.optionsSettings.marbleCategoryIndex; + + function loadButtonImages(path:String) { + var normal = ResourceLoader.getResource('${path}_n.png', ResourceLoader.getImage, this.imageResources).toTile(); + var hover = ResourceLoader.getResource('${path}_h.png', ResourceLoader.getImage, this.imageResources).toTile(); + var pressed = ResourceLoader.getResource('${path}_d.png', ResourceLoader.getImage, this.imageResources).toTile(); + var disabled = ResourceLoader.getResource('${path}_i.png', ResourceLoader.getImage, this.imageResources).toTile(); + return [normal, hover, pressed, disabled]; + } + + var markerFelt32fontdata = ResourceLoader.getFileEntry("data/font/MarkerFelt.fnt"); + var markerFelt32b = new BitmapFont(markerFelt32fontdata.entry); + @:privateAccess markerFelt32b.loader = ResourceLoader.loader; + var markerFelt32 = markerFelt32b.toSdfFont(cast 26 * Settings.uiScale, MultiChannel); + var markerFelt24 = markerFelt32b.toSdfFont(cast 18 * Settings.uiScale, MultiChannel); + var markerFelt28 = markerFelt32b.toSdfFont(cast 26 * Settings.uiScale, MultiChannel); + + var selectBtn = new GuiButton(loadButtonImages("data/ui/mp/play/choose")); + selectBtn.horizSizing = Center; + selectBtn.vertSizing = Top; + selectBtn.position = new Vector(199, 270); + selectBtn.extent = new Vector(95, 45); + selectBtn.pressedAction = (e) -> { + Settings.optionsSettings.marbleIndex = curSelection; + Settings.optionsSettings.marbleCategoryIndex = curCategorySelection; + Settings.optionsSettings.marbleSkin = MarbleSelectGui.marbleData[curCategorySelection][curSelection].skin; + Settings.optionsSettings.marbleModel = MarbleSelectGui.marbleData[curCategorySelection][curSelection].dts; + Settings.optionsSettings.marbleShader = MarbleSelectGui.marbleData[curCategorySelection][curSelection].shader; + Settings.save(); + MarbleGame.canvas.popDialog(this); + + // Transmit changes to the server/clients + if (Net.isClient) { + NetCommands.setPlayerData(Net.clientId, Settings.highscoreName, Settings.optionsSettings.marbleIndex, + Settings.optionsSettings.marbleCategoryIndex, true); + } + if (Net.isHost) { + var b = Net.sendPlayerInfosBytes(); + for (cc in Net.clients) { + cc.sendBytes(b); + } + } + } + this.addChild(selectBtn); + + var marbleShow = buildObjectShow(MarbleSelectGui.marbleData[curCategorySelection][curSelection].dts, new Vector(171, 97), new Vector(150, 150), 2.6, + 0, [ + "base.marble" => MarbleSelectGui.marbleData[curCategorySelection][curSelection].skin + ".marble" + ]); + marbleShow.horizSizing = Center; + marbleShow.vertSizing = Bottom; + marbleShow.visible = true; + this.addChild(marbleShow); + + var titleText = new GuiMLText(markerFelt28, null); + titleText.text.textColor = 0xFFFFFF; + titleText.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; + titleText.horizSizing = Center; + titleText.vertSizing = Bottom; + titleText.position = new Vector(140, 67); + titleText.extent = new Vector(213, 27); + titleText.text.text = '

${categoryNames[curCategorySelection]}

'; + this.addChild(titleText); + + var marbleText = new GuiMLText(markerFelt24, null); + marbleText.text.textColor = 0xFFFFFF; + marbleText.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; + marbleText.horizSizing = Center; + marbleText.vertSizing = Bottom; + marbleText.position = new Vector(86, 243); + marbleText.extent = new Vector(320, 22); + marbleText.text.text = '

${MarbleSelectGui.marbleData[curCategorySelection][curSelection].name}

'; + this.addChild(marbleText); + + var changeMarbleText = new GuiImage(ResourceLoader.getResource("data/ui/play/change_marble_text.png", ResourceLoader.getImage, this.imageResources) + .toTile()); + changeMarbleText.horizSizing = Center; + changeMarbleText.position = new Vector(96, 26); + changeMarbleText.extent = new Vector(300, 39); + this.addChild(changeMarbleText); + + function setMarbleSelection(idx:Int, categoryIdx:Int) { + if (categoryIdx < 0) + categoryIdx = MarbleSelectGui.marbleData.length + categoryIdx; + if (categoryIdx >= MarbleSelectGui.marbleData.length) + categoryIdx -= MarbleSelectGui.marbleData.length; + + if (idx < 0) + idx = MarbleSelectGui.marbleData[categoryIdx].length + idx; + if (idx >= MarbleSelectGui.marbleData[categoryIdx].length) + idx -= MarbleSelectGui.marbleData[categoryIdx].length; + curSelection = idx; + curCategorySelection = categoryIdx; + var marble = MarbleSelectGui.marbleData[categoryIdx][idx]; + + titleText.text.text = '

${categoryNames[curCategorySelection]}

'; + marbleText.text.text = '

${marble.name}

'; + + var dtsObj = new DtsObject(); + dtsObj.dtsPath = marble.dts; + dtsObj.ambientRotate = true; + dtsObj.ambientSpinFactor /= -2; + dtsObj.showSequences = false; + dtsObj.useInstancing = false; + dtsObj.matNameOverride.set("base.marble", marble.skin + ".marble"); + + ResourceLoader.load(dtsObj.dtsPath).entry.load(() -> { + var dtsFile = ResourceLoader.loadDts(dtsObj.dtsPath); + var directoryPath = haxe.io.Path.directory(dtsObj.dtsPath); + var texToLoad = []; + for (i in 0...dtsFile.resource.matNames.length) { + var matName = dtsObj.matNameOverride.exists(dtsFile.resource.matNames[i]) ? dtsObj.matNameOverride.get(dtsFile.resource.matNames[i]) : dtsFile.resource.matNames[i]; + var fullNames = ResourceLoader.getFullNamesOf(directoryPath + '/' + matName).filter(x -> haxe.io.Path.extension(x) != "dts"); + var fullName = fullNames.length > 0 ? fullNames[0] : null; + if (fullName != null) { + texToLoad.push(fullName); + } + } + + var worker = new ResourceLoaderWorker(() -> { + dtsObj.init(null, () -> {}); // The lambda is not gonna run async anyway + for (mat in dtsObj.materials) { + mat.mainPass.enableLights = false; + mat.mainPass.culling = None; + if (mat.blendMode != Alpha && mat.blendMode != Add) + mat.mainPass.addShader(new AlphaChannel()); + } + marbleShow.changeObject(dtsObj); + }); + + for (texPath in texToLoad) { + worker.loadFile(texPath); + } + worker.run(); + }); + } + + var nextBtn = new GuiButton(loadButtonImages("data/ui/mp/play/next")); + nextBtn.position = new Vector(296, 270); + nextBtn.extent = new Vector(75, 45); + nextBtn.pressedAction = (e) -> { + setMarbleSelection(curSelection + 1, curCategorySelection); + } + this.addChild(nextBtn); + + var prevBtn = new GuiButton(loadButtonImages("data/ui/mp/play/prev")); + prevBtn.position = new Vector(123, 270); + prevBtn.extent = new Vector(75, 45); + prevBtn.pressedAction = (e) -> { + setMarbleSelection(curSelection - 1, curCategorySelection); + } + + var nextCategoryBtn = new GuiButton(loadButtonImages("data/ui/mp/play/nextcat")); + nextCategoryBtn.position = new Vector(371, 270); + nextCategoryBtn.extent = new Vector(85, 45); + nextCategoryBtn.pressedAction = (e) -> { + setMarbleSelection(0, curCategorySelection + 1); + } + this.addChild(nextCategoryBtn); + + var prevCategoryBtn = new GuiButton(loadButtonImages("data/ui/mp/play/prevcat")); + prevCategoryBtn.position = new Vector(37, 270); + prevCategoryBtn.extent = new Vector(85, 45); + prevCategoryBtn.pressedAction = (e) -> { + setMarbleSelection(0, curCategorySelection - 1); + } + this.addChild(prevCategoryBtn); + + setMarbleSelection(curSelection, curCategorySelection); + this.addChild(prevBtn); + } + + function buildObjectShow(dtsPath:String, position:Vector, extent:Vector, dist:Float = 5, pitch:Float = 0, matnameOverride:Map = null) { + var oShow = new GuiObjectShow(); + var dtsObj = new DtsObject(); + dtsObj.dtsPath = dtsPath; + dtsObj.ambientRotate = true; + dtsObj.ambientSpinFactor /= -2; + dtsObj.showSequences = false; + dtsObj.useInstancing = false; + if (matnameOverride != null) { + for (key => value in matnameOverride) { + dtsObj.matNameOverride.set(key, value); + } + } + dtsObj.init(null, () -> {}); // The lambda is not gonna run async anyway + for (mat in dtsObj.materials) { + mat.mainPass.enableLights = false; + mat.mainPass.culling = None; + if (mat.blendMode != Alpha && mat.blendMode != Add) + mat.mainPass.addShader(new AlphaChannel()); + } + oShow.sceneObject = dtsObj; + oShow.position = position; + oShow.extent = extent; + oShow.renderDistance = dist; + oShow.renderPitch = pitch; + return oShow; + } +} diff --git a/src/gui/MPMessageGui.hx b/src/gui/MPMessageGui.hx new file mode 100644 index 00000000..d75a5a67 --- /dev/null +++ b/src/gui/MPMessageGui.hx @@ -0,0 +1,106 @@ +package gui; + +import net.Net; +import hxd.res.BitmapFont; +import src.ResourceLoader; +import h3d.Vector; +import src.MarbleGame; +import src.Util; +import src.Settings; + +class MPMessageGui extends GuiImage { + public function new(titleText:String, msgText:String) { + function chooseBg() { + var rand = Math.random(); + if (rand >= 0 && rand <= 0.244) + return ResourceLoader.getImage('data/ui/backgrounds/gold/${cast (Math.floor(Util.lerp(1, 12, Math.random())), Int)}.jpg'); + if (rand > 0.244 && rand <= 0.816) + return ResourceLoader.getImage('data/ui/backgrounds/platinum/${cast (Math.floor(Util.lerp(1, 28, Math.random())), Int)}.jpg'); + return ResourceLoader.getImage('data/ui/backgrounds/ultra/${cast (Math.floor(Util.lerp(1, 9, Math.random())), Int)}.jpg'); + } + var img = chooseBg(); + super(img.resource.toTile()); + + function loadButtonImages(path:String) { + var normal = ResourceLoader.getResource('${path}_n.png', ResourceLoader.getImage, this.imageResources).toTile(); + var hover = ResourceLoader.getResource('${path}_h.png', ResourceLoader.getImage, this.imageResources).toTile(); + var pressed = ResourceLoader.getResource('${path}_d.png', ResourceLoader.getImage, this.imageResources).toTile(); + return [normal, hover, pressed]; + } + + var markerFelt32fontdata = ResourceLoader.getFileEntry("data/font/MarkerFelt.fnt"); + var markerFelt32b = new BitmapFont(markerFelt32fontdata.entry); + @:privateAccess markerFelt32b.loader = ResourceLoader.loader; + var markerFelt48 = markerFelt32b.toSdfFont(cast 42 * Settings.uiScale, MultiChannel); + var markerFelt28 = markerFelt32b.toSdfFont(cast 26 * Settings.uiScale, MultiChannel); + + this.horizSizing = Width; + this.vertSizing = Height; + this.position = new Vector(0, 0); + this.extent = new Vector(640, 480); + + var container = new GuiControl(); + container.horizSizing = Center; + container.vertSizing = Center; + container.position = new Vector(80, 60); + container.extent = new Vector(640, 480); + + this.addChild(container); + + var wnd = new GuiImage(ResourceLoader.getResource("data/ui/mp/window.png", ResourceLoader.getImage, this.imageResources).toTile()); + wnd.position = new Vector(64, 91); + wnd.extent = new Vector(511, 297); + wnd.horizSizing = Center; + wnd.vertSizing = Center; + container.addChild(wnd); + + var title = new GuiText(markerFelt48); + title.text.text = titleText; + title.text.textColor = 0xFFFFFF; + title.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; + title.horizSizing = Center; + title.position = new Vector(47, 26); + title.extent = new Vector(416, 14); + title.justify = Center; + wnd.addChild(title); + + var msg = new GuiText(markerFelt28); + msg.text.text = msgText; + msg.text.textColor = 0xFFFFFF; + msg.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; + msg.horizSizing = Relative; + msg.vertSizing = Relative; + msg.position = new Vector(15, 136); + msg.extent = new Vector(483, 65); + msg.justify = Center; + wnd.addChild(msg); + + var cancelBtn = new GuiButton(loadButtonImages('data/ui/mp/join/cancel')); + cancelBtn.position = new Vector(208, 210); + cancelBtn.extent = new Vector(94, 45); + cancelBtn.horizSizing = Center; + cancelBtn.vertSizing = Top; + cancelBtn.pressedAction = (e) -> { + Net.disconnect(); + MarbleGame.canvas.setContent(new JoinServerGui()); + } + wnd.addChild(cancelBtn); + + setTexts = (t, m) -> { + title.text.text = t; + msg.text.text = m; + } + } + + public dynamic function setTexts(titleText:String, msgText:String) {} +} diff --git a/src/gui/MPPlayMissionGui.hx b/src/gui/MPPlayMissionGui.hx new file mode 100644 index 00000000..bf64d997 --- /dev/null +++ b/src/gui/MPPlayMissionGui.hx @@ -0,0 +1,748 @@ +package gui; + +import src.Marbleland; +import h2d.Scene; +import hxd.Key; +import gui.GuiControl.MouseState; +import h2d.Tile; +import hxd.BitmapData; +import h2d.filter.DropShadow; +import hxd.res.BitmapFont; +import src.MarbleGame; +import src.ResourceLoader; +import h3d.Vector; +import src.Util; +import src.Settings; +import src.Mission; +import src.MissionList; +import net.ClientConnection.NetPlatform; +import net.Net; +import net.NetCommands; +import haxe.ds.Option; + +class MPPlayMissionGui extends GuiImage { + static var currentSelectionStatic:Int = -1; + static var currentCategoryStatic:String = "beginner"; + + public static var allChats:Array = []; + + static var setLevelFn:(String, Int) -> Void; + static var playSelectedLevel:(String, Int) -> Void; + static var setLevelStr:String->Void; + + var currentSelection:Int = 0; + var currentCategory:String = "beginner"; + var currentList:Array; + var setSelectedFunc:Int->Void; + var setScoreHover:Bool->Void; + var setCategoryFunc:(String, ?String, ?Bool) -> Void; + var buttonHoldFunc:(dt:Float, mouseState:MouseState) -> Void; + + var buttonCooldown:Float = 0.5; + var maxButtonCooldown:Float = 0.5; + + #if js + var previewTimeoutHandle:Option = None; + #end + #if hl + var previewToken:Int = 0; + #end + + var playerListCtrl:GuiMLTextListCtrl; + var chatInput:GuiTextInput; + var chatScroll:GuiScrollCtrl; + var chatBox:GuiMLText; + + public function new(isHost:Bool = true) { + MissionList.buildMissionList(); + function chooseBg() { + var rand = Math.random(); + if (rand >= 0 && rand <= 0.244) + return ResourceLoader.getImage('data/ui/backgrounds/gold/${cast (Math.floor(Util.lerp(1, 12, Math.random())), Int)}.jpg'); + if (rand > 0.244 && rand <= 0.816) + return ResourceLoader.getImage('data/ui/backgrounds/platinum/${cast (Math.floor(Util.lerp(1, 28, Math.random())), Int)}.jpg'); + return ResourceLoader.getImage('data/ui/backgrounds/ultra/${cast (Math.floor(Util.lerp(1, 9, Math.random())), Int)}.jpg'); + } + var img = chooseBg(); + super(img.resource.toTile()); + + if (currentSelectionStatic == -1) { + currentSelectionStatic = 0; + } + + // currentSelection = currentSelectionStatic; + // currentCategory = currentCategoryStatic; + + MarbleGame.instance.toRecord = false; + + function loadButtonImages(path:String) { + var normal = ResourceLoader.getResource('${path}_n.png', ResourceLoader.getImage, this.imageResources).toTile(); + var hover = ResourceLoader.getResource('${path}_h.png', ResourceLoader.getImage, this.imageResources).toTile(); + var pressed = ResourceLoader.getResource('${path}_d.png', ResourceLoader.getImage, this.imageResources).toTile(); + return [normal, hover, pressed]; + } + + function loadButtonImagesExt(path:String) { + var normal = ResourceLoader.getResource('${path}_n.png', ResourceLoader.getImage, this.imageResources).toTile(); + var hover = ResourceLoader.getResource('${path}_h.png', ResourceLoader.getImage, this.imageResources).toTile(); + var pressed = ResourceLoader.getResource('${path}_d.png', ResourceLoader.getImage, this.imageResources).toTile(); + var disabled = ResourceLoader.getResource('${path}_i.png', ResourceLoader.getImage, this.imageResources).toTile(); + return [normal, hover, pressed, disabled]; + } + + var domcasual24fontdata = ResourceLoader.getFileEntry("data/font/DomCasualD.fnt"); + var domcasual24b = new BitmapFont(domcasual24fontdata.entry); + @:privateAccess domcasual24b.loader = ResourceLoader.loader; + var domcasual24 = domcasual24b.toSdfFont(cast 20 * Settings.uiScale, MultiChannel); + + var domcasual32 = domcasual24b.toSdfFont(cast 26 * Settings.uiScale, MultiChannel); + + var arial14fontdata = ResourceLoader.getFileEntry("data/font/arial.fnt"); + var arial14b = new BitmapFont(arial14fontdata.entry); + @:privateAccess arial14b.loader = ResourceLoader.loader; + var arial14 = arial14b.toSdfFont(cast 12 * Settings.uiScale, MultiChannel); + + var arialb14fontdata = ResourceLoader.getFileEntry("data/font/Arial Bold.fnt"); + var arialb14b = new BitmapFont(arialb14fontdata.entry); + @:privateAccess arialb14b.loader = ResourceLoader.loader; + var arialBold14 = arialb14b.toSdfFont(cast 12 * Settings.uiScale, MultiChannel); + + var markerFelt32fontdata = ResourceLoader.getFileEntry("data/font/MarkerFelt.fnt"); + var markerFelt32b = new BitmapFont(markerFelt32fontdata.entry); + @:privateAccess markerFelt32b.loader = ResourceLoader.loader; + var markerFelt32 = markerFelt32b.toSdfFont(cast 26 * Settings.uiScale, MultiChannel); + var markerFelt24 = markerFelt32b.toSdfFont(cast 20 * Settings.uiScale, MultiChannel); + var markerFelt20 = markerFelt32b.toSdfFont(cast 18.5 * Settings.uiScale, MultiChannel); + var markerFelt18 = markerFelt32b.toSdfFont(cast 17 * Settings.uiScale, MultiChannel); + var markerFelt26 = markerFelt32b.toSdfFont(cast 22 * Settings.uiScale, MultiChannel); + + function mlFontLoader(text:String) { + switch (text) { + case "DomCasual24": + return domcasual24; + case "Arial14": + return arial14; + case "ArialBold14": + return arialBold14; + case "MarkerFelt32": + return markerFelt32; + case "MarkerFelt24": + return markerFelt24; + case "MarkerFelt18": + return markerFelt18; + case "MarkerFelt20": + return markerFelt20; + case "MarkerFelt26": + return markerFelt26; + default: + return null; + } + } + + this.horizSizing = Width; + this.vertSizing = Height; + this.position = new Vector(); + this.extent = new Vector(640, 480); + + var window = new GuiImage(ResourceLoader.getResource("data/ui/mp/play/window.png", ResourceLoader.getImage, this.imageResources).toTile()); + window.horizSizing = Center; + window.vertSizing = Center; + window.position = new Vector(-60, 5); + window.extent = new Vector(800, 600); + + var leaveBtn = new GuiButton(loadButtonImages("data/ui/mp/play/leave")); + leaveBtn.position = new Vector(59, 514); + leaveBtn.extent = new Vector(93, 44); + leaveBtn.pressedAction = (e) -> { + Net.disconnect(); + MarbleGame.canvas.setContent(new JoinServerGui()); + } + window.addChild(leaveBtn); + + var searchBtn = new GuiButton(loadButtonImagesExt("data/ui/mp/play/search")); + searchBtn.position = new Vector(255, 514); + searchBtn.extent = new Vector(44, 44); + searchBtn.pressedAction = (e) -> { + MarbleGame.canvas.pushDialog(new MPSearchGui(currentCategory == "custom")); + } + window.addChild(searchBtn); + if (Net.isClient) + searchBtn.disabled = true; + + var kickBtn = new GuiButton(loadButtonImagesExt("data/ui/mp/play/kick")); + kickBtn.position = new Vector(304, 514); + kickBtn.extent = new Vector(44, 44); + kickBtn.pressedAction = (e) -> { + MarbleGame.canvas.pushDialog(new MPKickBanDlg()); + } + window.addChild(kickBtn); + if (Net.isClient) + kickBtn.disabled = true; + + var serverSettingsBtn = new GuiButton(loadButtonImagesExt("data/ui/mp/play/settings")); + serverSettingsBtn.position = new Vector(157, 514); + serverSettingsBtn.extent = new Vector(44, 44); + serverSettingsBtn.pressedAction = (e) -> { + MarbleGame.canvas.pushDialog(new MPServerDlg()); + } + window.addChild(serverSettingsBtn); + if (Net.isClient) + serverSettingsBtn.disabled = true; + + var marbleSelectBtn = new GuiButton(loadButtonImages("data/ui/mp/play/marble")); + marbleSelectBtn.position = new Vector(206, 514); + marbleSelectBtn.extent = new Vector(44, 44); + marbleSelectBtn.pressedAction = (e) -> { + MarbleGame.canvas.pushDialog(new MPMarbleSelectGui()); + } + window.addChild(marbleSelectBtn); + + var temprev = new BitmapData(1, 1); + temprev.setPixel(0, 0, 0); + var tmpprevtile = Tile.fromBitmap(temprev); + + var pmPreview = new GuiImage(tmpprevtile); + pmPreview.position = new Vector(485, 44); + pmPreview.extent = new Vector(248, 187); + window.addChild(pmPreview); + + var difficultyPopover = new GuiControl(); + difficultyPopover.horizSizing = Width; + difficultyPopover.vertSizing = Height; + difficultyPopover.position = new Vector(); + difficultyPopover.extent = new Vector(640, 480); + + var difficultyPopoverInner = new GuiImage(tmpprevtile); + difficultyPopoverInner.horizSizing = Center; + difficultyPopoverInner.vertSizing = Center; + difficultyPopoverInner.position = new Vector(); + difficultyPopoverInner.extent = new Vector(800, 600); + difficultyPopoverInner.pressedAction = (e) -> { + MarbleGame.canvas.popDialog(difficultyPopover, false); + } + difficultyPopover.addChild(difficultyPopoverInner); + + var difficultySelector = new GuiButton(loadButtonImagesExt("data/ui/mp/play/difficulty_beginner")); + difficultySelector.position = new Vector(161, 47); + difficultySelector.extent = new Vector(204, 44); + if (isHost) + difficultySelector.pressedAction = (e) -> { + MarbleGame.canvas.pushDialog(difficultyPopover); + }; + else + difficultySelector.disabled = true; + window.addChild(difficultySelector); + + var difficultyCloseButton = new GuiButton(loadButtonImages("data/ui/mp/play/difficultymenu")); + difficultyCloseButton.position = new Vector(129, 61); + difficultyCloseButton.extent = new Vector(268, 193); + difficultyPopoverInner.addChild(difficultyCloseButton); + + var catFuncBuilder = (cat:String) -> { + return () -> { + currentList = MissionList.missionList["multiplayer"][cat]; + currentCategory = cat; + setCategoryFunc(cat); + } + } + var beginnerFn = catFuncBuilder("beginner"); + var intermediateFn = catFuncBuilder("intermediate"); + var advancedFn = catFuncBuilder("advanced"); + var customFn = catFuncBuilder("custom"); + + var difficulty0 = new GuiButtonText(loadButtonImages("data/ui/mp/play/difficultysel"), markerFelt24); + difficulty0.position = new Vector(43, 42); + difficulty0.ratio = -1 / 16; + difficulty0.setExtent(new Vector(180, 31)); + difficulty0.txtCtrl.text.text = "Intermediate"; + difficulty0.pressedAction = (e) -> { + intermediateFn(); + } + difficultyCloseButton.addChild(difficulty0); + + var difficulty1 = new GuiButtonText(loadButtonImages("data/ui/mp/play/difficultysel"), markerFelt24); + difficulty1.position = new Vector(43, 72); + difficulty1.ratio = -1 / 16; + difficulty1.setExtent(new Vector(180, 31)); + difficulty1.txtCtrl.text.text = "Advanced"; + difficulty1.pressedAction = (e) -> { + advancedFn(); + } + difficultyCloseButton.addChild(difficulty1); + + var difficulty2 = new GuiButtonText(loadButtonImages("data/ui/mp/play/difficultysel"), markerFelt24); + difficulty2.position = new Vector(43, 116); + difficulty2.ratio = -1 / 16; + difficulty2.setExtent(new Vector(180, 31)); + difficulty2.txtCtrl.text.text = "Custom"; + difficulty2.pressedAction = (e) -> { + customFn(); + } + difficultyCloseButton.addChild(difficulty2); + + var pmPreviewFrame = new GuiImage(ResourceLoader.getResource('data/ui/mp/play/levelframe.png', ResourceLoader.getImage, this.imageResources).toTile()); + pmPreviewFrame.position = new Vector(0, 0); + pmPreviewFrame.extent = new Vector(248, 187); + pmPreview.addChild(pmPreviewFrame); + + var prevBtn = new GuiButton(loadButtonImagesExt("data/ui/mp/play/prev")); + prevBtn.position = new Vector(491, 514); + prevBtn.extent = new Vector(73, 44); + prevBtn.gamepadAccelerator = ["dpadLeft"]; + prevBtn.pressedAction = (sender) -> { + NetCommands.setLobbyLevelIndex(currentCategory, currentSelection - 1); + } + if (isHost) + window.addChild(prevBtn); + + var nextBtn = new GuiButton(loadButtonImagesExt("data/ui/mp/play/next")); + nextBtn.position = new Vector(659, 514); + nextBtn.extent = new Vector(73, 44); + nextBtn.gamepadAccelerator = ["dpadRight"]; + + nextBtn.pressedAction = (sender) -> { + NetCommands.setLobbyLevelIndex(currentCategory, currentSelection + 1); + } + if (isHost) + window.addChild(nextBtn); + + var playBtn = new GuiButton(loadButtonImages("data/ui/mp/play/play")); + playBtn.position = new Vector(565, 514); + playBtn.extent = new Vector(93, 44); + playBtn.pressedAction = (sender) -> { + NetCommands.toggleReadiness(Net.isClient ? Net.clientId : 0); + // MarbleGame.instance.playMission(currentList[currentSelection], true); + } + window.addChild(playBtn); + + var pmDescContainer = new GuiControl(); + pmDescContainer.position = new Vector(43, 99); + pmDescContainer.extent = new Vector(427, 99); + window.addChild(pmDescContainer); + + var pmDesc = new GuiMLText(markerFelt18, mlFontLoader); + pmDesc.position = new Vector(0, 0); + pmDesc.extent = new Vector(427, 99); + pmDesc.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; + pmDesc.text.lineSpacing = -1; + pmDescContainer.addChild(pmDesc); + + var parTime = new GuiMLText(markerFelt18, mlFontLoader); + parTime.position = new Vector(43, 190); + parTime.extent = new Vector(416, 44); + parTime.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; + parTime.text.lineSpacing = -1; + window.addChild(parTime); + + function imgLoader(path:String) { + var t = switch (path) { + case "ready": + ResourceLoader.getResource("data/ui/mp/play/Ready.png", ResourceLoader.getImage, this.imageResources).toTile(); + case "notready": + ResourceLoader.getResource("data/ui/mp/play/NotReady.png", ResourceLoader.getImage, this.imageResources).toTile(); + case "pc": + ResourceLoader.getResource("data/ui/mp/play/platform_desktop_white.png", ResourceLoader.getImage, this.imageResources).toTile(); + case "mac": + ResourceLoader.getResource("data/ui/mp/play/platform_mac_white.png", ResourceLoader.getImage, this.imageResources).toTile(); + case "web": + ResourceLoader.getResource("data/ui/mp/play/platform_web_white.png", ResourceLoader.getImage, this.imageResources).toTile(); + case "android": + ResourceLoader.getResource("data/ui/mp/play/platform_android_white.png", ResourceLoader.getImage, this.imageResources).toTile(); + case "unknown": + ResourceLoader.getResource("data/ui/mp/play/platform_unknown_white.png", ResourceLoader.getImage, this.imageResources).toTile(); + case _: + return null; + }; + if (t != null) + t.scaleToSize(t.width * (Settings.uiScale), t.height * (Settings.uiScale)); + return t; + } + + var playersBox = new GuiControl(); + playersBox.position = new Vector(463, 279); + playersBox.extent = new Vector(305, 229); + window.addChild(playersBox); + + playerListCtrl = new GuiMLTextListCtrl(markerFelt18, [], imgLoader); + playerListCtrl.position = new Vector(0, 26); + playerListCtrl.extent = new Vector(305, 203); + playerListCtrl.scrollable = true; + playerListCtrl.textYOffset = -6; + playersBox.addChild(playerListCtrl); + + var playerListTitle = new GuiText(markerFelt24); + playerListTitle.position = new Vector(7, 0); + playerListTitle.extent = new Vector(275, 22); + playerListTitle.text.text = "Players"; + playerListTitle.text.textColor = 0xBDCFE4; + playerListTitle.justify = Center; + playerListTitle.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; + playersBox.addChild(playerListTitle); + + chatScroll = new GuiScrollCtrl(ResourceLoader.getResource("data/ui/common/philscroll.png", ResourceLoader.getImage, this.imageResources).toTile()); + chatScroll.position = new Vector(47, 282); + chatScroll.extent = new Vector(407, 193); + chatScroll.childrenHandleScroll = true; + chatScroll.scrollToBottom = true; + window.addChild(chatScroll); + + chatBox = new GuiMLText(markerFelt18, mlFontLoader); + chatBox.text.textColor = 0x000000; + chatBox.horizSizing = Width; + chatBox.position = new Vector(0, 0); + chatBox.extent = new Vector(396, 1184); + chatScroll.addChild(chatBox); + + var chatInputContainer = new GuiControl(); + chatInputContainer.position = new Vector(50, 476); + chatInputContainer.extent = new Vector(402, 30); + window.addChild(chatInputContainer); + + chatInput = new GuiTextInput(markerFelt18); + chatInput.text.textColor = 0x000000; + chatInput.horizSizing = Width; + chatInput.position = new Vector(50, 0); + chatInput.extent = new Vector(352, 30); + chatInputContainer.addChild(chatInput); + @:privateAccess chatInput.text.interactive.forceAnywherefocus = true; + + var chatInputFocusTxt = new GuiText(markerFelt18); + chatInputFocusTxt.position = new Vector(0, 0); + chatInputFocusTxt.extent = new Vector(50, 30); + chatInputFocusTxt.text.text = "Chat:"; + chatInputFocusTxt.text.textColor = 0x000000; + chatInputFocusTxt.justify = Center; + chatInputContainer.addChild(chatInputFocusTxt); + + chatInput.text.onKeyDown = (e) -> { + if (e.keyCode == Key.ENTER) { + if (StringTools.trim(chatInput.text.text) != "") { + var sendText = '${StringTools.htmlEscape(Settings.highscoreName.substr(0, 20))}: ${StringTools.htmlEscape(chatInput.text.text.substr(0, 100))}'; + if (Net.isClient) { + NetCommands.sendChatMessage(StringTools.htmlEscape(sendText)); + } + if (Net.isHost) { + NetCommands.sendServerChatMessage(StringTools.htmlEscape(sendText)); + } + } + chatInput.text.text = ""; + haxe.Timer.delay(() -> chatInput.text.focus(), 10); + } + @:privateAccess Key.keyPressed[e.keyCode] = 0; // consume keys + } + + this.addChild(window); + + buttonHoldFunc = (dt:Float, mouseState:MouseState) -> { + var prevBox = prevBtn.getRenderRectangle(); + var nextBox = nextBtn.getRenderRectangle(); + + if (prevBox.inRect(mouseState.position) && mouseState.button == Key.MOUSE_LEFT) { + if (buttonCooldown <= 0) { + prevBtn.pressedAction(new GuiEvent(prevBtn)); + buttonCooldown = maxButtonCooldown; + maxButtonCooldown *= 0.75; + } + } + + if (nextBox.inRect(mouseState.position) && mouseState.button == Key.MOUSE_LEFT) { + if (buttonCooldown <= 0) { + nextBtn.pressedAction(new GuiEvent(nextBtn)); + buttonCooldown = maxButtonCooldown; + maxButtonCooldown *= 0.75; + } + } + + if (buttonCooldown > 0 && mouseState.button == Key.MOUSE_LEFT) + buttonCooldown -= dt; + + if (mouseState.button != Key.MOUSE_LEFT) { + maxButtonCooldown = 0.5; + buttonCooldown = maxButtonCooldown; + } + } + + setCategoryFunc = function(category:String, ?sort:String = null, ?doRender:Bool = true) { + if (category == "custom") { + currentList = Marbleland.multiplayerMissions; + } else + currentList = MissionList.missionList["multiplayer"][category]; + + @:privateAccess difficultySelector.anim.frames = loadButtonImagesExt('data/ui/mp/play/difficulty_${category}'); + + if (category == "beginner") { + difficulty0.txtCtrl.text.text = "Intermediate"; + difficulty1.txtCtrl.text.text = "Advanced"; + difficulty2.txtCtrl.text.text = "Custom"; + difficulty0.pressedAction = (e) -> { + intermediateFn(); + } + difficulty1.pressedAction = (e) -> { + advancedFn(); + } + difficulty2.pressedAction = (e) -> { + customFn(); + } + } + if (category == "intermediate") { + difficulty0.txtCtrl.text.text = "Beginner"; + difficulty1.txtCtrl.text.text = "Advanced"; + difficulty2.txtCtrl.text.text = "Custom"; + difficulty0.pressedAction = (e) -> { + beginnerFn(); + } + difficulty1.pressedAction = (e) -> { + advancedFn(); + } + difficulty2.pressedAction = (e) -> { + customFn(); + } + } + if (category == "custom") { + difficulty0.txtCtrl.text.text = "Beginner"; + difficulty1.txtCtrl.text.text = "Intermediate"; + difficulty2.txtCtrl.text.text = "Advanced"; + difficulty0.pressedAction = (e) -> { + beginnerFn(); + } + difficulty1.pressedAction = (e) -> { + intermediateFn(); + } + difficulty2.pressedAction = (e) -> { + advancedFn(); + } + } + + if (sort != null) { + currentList = currentList.copy(); // Don't modify the originals + if (sort == "alpha") { + currentList.sort((x, y) -> x.title > y.title ? 1 : (x.title < y.title ? -1 : 0)); + } + if (sort == "date") { + currentList.sort((x, y) -> x.addedAt > y.addedAt ? 1 : (x.addedAt < y.addedAt ? -1 : 0)); + } + } + + currentCategoryStatic = currentCategory; + + NetCommands.setLobbyLevelIndex(category, 0); + // if (doRender) + // this.render(cast(this.parent, Canvas).scene2d); + } + + setSelectedFunc = function setSelected(index:Int) { + if (index > currentList.length - 1) { + index = currentList.length - 1; + } + if (index < 0) { + index = 0; + } + + currentSelection = index; + currentSelectionStatic = currentSelection; + + var currentMission = currentList[currentSelection]; + + if (index == 0) { + prevBtn.disabled = true; + } else + prevBtn.disabled = false; + if (index == Math.max(currentList.length - 1, 0)) { + nextBtn.disabled = true; + } else + nextBtn.disabled = false; + + // if (currentCategory != "custom" + // && Settings.progression[["beginner", "intermediate", "advanced", "expert"].indexOf(currentCategory)] < currentSelection) { + // noQualText.text.visible = true; + // filt.matrix.identity(); + // filt.matrix.colorGain(0, 96 / 255); + // pmPlay.disabled = true; + // } else { + playBtn.disabled = false; + // } + + if (currentMission == null) { + currentMission = new Mission(); + currentMission.title = ""; + currentMission.description = ""; + currentMission.path = "bruh"; + currentSelection = -1; + } + + pmDesc.text.text = '

#${currentSelection + 1}: ${currentMission.title}

' + + '${currentMission.description}'; + + parTime.text.text = 'Duration: ${Util.formatTime(currentMission.qualifyTime)}
' + + 'Author: ${currentMission.artist}'; + + // pmPreview.bmp.tile = tmpprevtile; + #if js + switch (previewTimeoutHandle) { + case None: + previewTimeoutHandle = Some(js.Browser.window.setTimeout(() -> { + var prevpath = currentMission.getPreviewImage(prevImg -> { + pmPreview.bmp.tile = prevImg; + }); + if (prevpath != pmPreview.bmp.tile.getTexture().name) { + pmPreview.bmp.tile = tmpprevtile; + } + }, 75)); + case Some(previewTimeoutHandle_id): + js.Browser.window.clearTimeout(previewTimeoutHandle_id); + previewTimeoutHandle = Some(js.Browser.window.setTimeout(() -> { + var prevpath = currentMission.getPreviewImage(prevImg -> { + pmPreview.bmp.tile = prevImg; + }); + if (prevpath != pmPreview.bmp.tile.getTexture().name) { + pmPreview.bmp.tile = tmpprevtile; + } + }, 75)); + } + #end + #if hl + var pTok = previewToken++; + var prevpath = currentMission.getPreviewImage(prevImg -> { + if (pTok + 1 != previewToken) + return; + pmPreview.bmp.tile = prevImg; + }); // Shit be sync + if (prevpath != pmPreview.bmp.tile.getTexture().name) { + pmPreview.bmp.tile = tmpprevtile; + } + #end + } + + playSelectedLevel = (cat:String, index:Int) -> { + // if (custSelected) { + // NetCommands.playCustomLevel(MPCustoms.missionList[custSelectedIdx].path); + // } else { + if (cat == "custom") { + var curMission = Marbleland.multiplayerMissions[index]; // mission[index]; + MarbleGame.instance.playMission(curMission, true); + } else { + var curMission = MissionList.missionList["multiplayer"][cat][index]; // mission[index]; + MarbleGame.instance.playMission(curMission, true); + } + // } + } + + setLevelFn = (cat:String, index:Int) -> { + if (currentCategory != cat) { + currentCategory = cat; + setCategoryFunc(cat); + } + setSelectedFunc(index); + } + + currentList = MissionList.missionList["multiplayer"]["beginner"]; + + // setCategoryFunc(currentCategoryStatic, null, false); + if (Net.isHost) { + NetCommands.setLobbyLevelIndex(currentCategoryStatic, currentSelectionStatic); + } else { + setCategoryFunc(currentCategoryStatic, null, false); + } + updateLobbyNames(); + redrawChat(); + haxe.Timer.delay(() -> { + this.chatScroll.updateScrollVisual(); + }, 50); + } + + public override function render(scene2d:Scene, ?parent:h2d.Flow) { + super.render(scene2d, parent); + setSelectedFunc(currentSelectionStatic); + } + + public override function update(dt:Float, mouseState:MouseState) { + super.update(dt, mouseState); + + buttonHoldFunc(dt, mouseState); + + if (Key.isPressed(Key.LEFT)) + setSelectedFunc(currentSelection - 1); + if (Key.isPressed(Key.RIGHT)) + setSelectedFunc(currentSelection + 1); + } + + inline function platformToString(platform:NetPlatform) { + return switch (platform) { + case Unknown: return "unknown"; + case Android: return "android"; + case MacOS: return "mac"; + case PC: return "pc"; + case Web: return "web"; + } + } + + public function updateLobbyNames() { + var playerListArr = []; + if (Net.isHost) { + playerListArr.push({ + name: Settings.highscoreName, + platform: Net.getPlatform(), + ready: Net.lobbyHostReady + }); + } + if (Net.isClient) { + playerListArr.push({ + name: Settings.highscoreName, + platform: Net.getPlatform(), + ready: Net.lobbyClientReady + }); + } + if (Net.clientIdMap != null) { + for (c => v in Net.clientIdMap) { + playerListArr.push({ + name: v.name, + platform: v.platform, + ready: v.lobbyReady + }); + } + } + + var playerListCompiled = playerListArr.map(player -> + '${player.name}${player.ready ? "Ready" : ""}'); + playerListCtrl.setTexts(playerListCompiled); + + // if (!showingCustoms) + // playerList.setTexts(playerListArr.map(player -> { + // return '${player.name}'; + // })); + } + + public static function addChatMessage(s:String) { + var realText = StringTools.htmlUnescape(s); + allChats.push(realText); + if (allChats.length > 100) { + allChats = allChats.slice(allChats.length - 100); + } + if (MarbleGame.canvas.content is MPPlayMissionGui) { + var mpp = cast(MarbleGame.canvas.content, MPPlayMissionGui); + mpp.redrawChat(); + } + } + + public function redrawChat() { + var joined = allChats.join("
"); + this.chatBox.text.text = StringTools.replace(joined, '#F29515', '#000000'); + this.chatScroll.setScrollMax(chatBox.text.textHeight); + this.chatScroll.updateScrollVisual(); + } +} diff --git a/src/gui/MPPreGameDlg.hx b/src/gui/MPPreGameDlg.hx new file mode 100644 index 00000000..41b6dfff --- /dev/null +++ b/src/gui/MPPreGameDlg.hx @@ -0,0 +1,327 @@ +package gui; + +import net.NetCommands; +import h2d.filter.DropShadow; +import net.Net; +import src.MarbleGame; +import hxd.res.BitmapFont; +import h3d.Vector; +import src.ResourceLoader; +import src.Settings; +import src.Console; +import net.MasterServerClient; + +class MPPreGameDlg extends GuiControl { + public function new() { + super(); + + this.horizSizing = Width; + this.vertSizing = Height; + this.position = new Vector(); + this.extent = new Vector(640, 480); + + function loadButtonImages(path:String) { + var normal = ResourceLoader.getResource('${path}_n.png', ResourceLoader.getImage, this.imageResources).toTile(); + var hover = ResourceLoader.getResource('${path}_h.png', ResourceLoader.getImage, this.imageResources).toTile(); + var pressed = ResourceLoader.getResource('${path}_d.png', ResourceLoader.getImage, this.imageResources).toTile(); + return [normal, hover, pressed]; + } + + function loadButtonImagesExt(path:String) { + var normal = ResourceLoader.getResource('${path}_n.png', ResourceLoader.getImage, this.imageResources).toTile(); + var hover = ResourceLoader.getResource('${path}_h.png', ResourceLoader.getImage, this.imageResources).toTile(); + var pressed = ResourceLoader.getResource('${path}_d.png', ResourceLoader.getImage, this.imageResources).toTile(); + var disabled = ResourceLoader.getResource('${path}_i.png', ResourceLoader.getImage, this.imageResources).toTile(); + return [normal, hover, pressed, disabled]; + } + + var markerFelt32fontdata = ResourceLoader.getFileEntry("data/font/MarkerFelt.fnt"); + var markerFelt32b = new BitmapFont(markerFelt32fontdata.entry); + @:privateAccess markerFelt32b.loader = ResourceLoader.loader; + var markerFelt32 = markerFelt32b.toSdfFont(cast 26 * Settings.uiScale, MultiChannel); + var markerFelt24 = markerFelt32b.toSdfFont(cast 20 * Settings.uiScale, MultiChannel); + var markerFelt20 = markerFelt32b.toSdfFont(cast 18.5 * Settings.uiScale, MultiChannel); + var markerFelt18 = markerFelt32b.toSdfFont(cast 17 * Settings.uiScale, MultiChannel); + var markerFelt26 = markerFelt32b.toSdfFont(cast 22 * Settings.uiScale, MultiChannel); + + var dialogImg = new GuiImage(ResourceLoader.getResource("data/ui/mp/pre/window.png", ResourceLoader.getImage, this.imageResources).toTile()); + dialogImg.horizSizing = Center; + dialogImg.vertSizing = Center; + dialogImg.position = new Vector(0, 0); + dialogImg.extent = new Vector(640, 480); + this.addChild(dialogImg); + + var leaveBtn = new GuiButton(loadButtonImages("data/ui/mp/pre/leave")); + leaveBtn.horizSizing = Left; + leaveBtn.vertSizing = Top; + leaveBtn.position = new Vector(499, 388); + leaveBtn.extent = new Vector(94, 45); + leaveBtn.pressedAction = (e) -> { + MarbleGame.instance.quitMission(true); + if (Net.isMP && Net.isClient) { + Net.disconnect(); + MarbleGame.canvas.setContent(new JoinServerGui()); + } + } + dialogImg.addChild(leaveBtn); + + var playBtn = new GuiButton(loadButtonImagesExt("data/ui/mp/pre/play")); + playBtn.horizSizing = Right; + playBtn.vertSizing = Top; + playBtn.position = new Vector(406, 388); + playBtn.extent = new Vector(94, 45); + playBtn.buttonType = Toggle; + playBtn.disabled = true; + playBtn.pressedAction = (e) -> { + for (id => client in Net.clientIdMap) { + client.state = GAME; + } + if (Settings.serverSettings.forceSpectators) { + for (id => client in Net.clientIdMap) { + client.spectator = true; // Make them spectator + } + } + var b = Net.sendPlayerInfosBytes(); // Update spectator status + for (cc in Net.clients) { + cc.sendBytes(b); + } + + if (MarbleGame.instance.world != null) { + Console.log('All are ready, starting'); + MarbleGame.instance.world.allClientsReady(); + } + Net.serverInfo.state = "PLAYING"; + MasterServerClient.instance.sendServerInfo(Net.serverInfo); // notify the server of the playing state + } + if (Net.isHost) + dialogImg.addChild(playBtn); + + var readyBtn = new GuiButton(loadButtonImages("data/ui/mp/pre/ready")); + readyBtn.horizSizing = Right; + readyBtn.vertSizing = Top; + readyBtn.position = new Vector(53, 394); + readyBtn.extent = new Vector(133, 33); + readyBtn.buttonType = Toggle; + dialogImg.addChild(readyBtn); + + var kickBtn = new GuiButton(loadButtonImages("data/ui/mp/play/kick")); + kickBtn.horizSizing = Right; + kickBtn.vertSizing = Bottom; + kickBtn.position = new Vector(360, 388); + kickBtn.extent = new Vector(45, 45); + kickBtn.pressedAction = (e) -> { + MarbleGame.canvas.pushDialog(new MPKickBanDlg()); + } + if (Net.isHost) + dialogImg.addChild(kickBtn); + + var spectateBtn = new GuiButton(loadButtonImages("data/ui/mp/pre/spectate")); + spectateBtn.horizSizing = Right; + spectateBtn.vertSizing = Top; + spectateBtn.position = new Vector(190, 394); + spectateBtn.extent = new Vector(127, 33); + spectateBtn.buttonType = Toggle; + spectateBtn.pressedAction = (e) -> { + NetCommands.toggleSpectate(Net.isHost ? 0 : Net.clientId); + updatePlayerList(); + } + dialogImg.addChild(spectateBtn); + + var serverTitle = new GuiText(markerFelt24); + serverTitle.text.textColor = 0xFFFFFF; + serverTitle.position = new Vector(60, 59); + serverTitle.extent = new Vector(525, 30); + serverTitle.text.text = Net.isHost ? Settings.serverSettings.name : Net.connectedServerInfo.name; + serverTitle.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; + serverTitle.justify = Center; + dialogImg.addChild(serverTitle); + + var serverDesc = new GuiText(markerFelt24); + serverDesc.text.textColor = 0xFFFFFF; + serverDesc.position = new Vector(60, 92); + serverDesc.extent = new Vector(525, 66); + serverDesc.text.text = Net.isHost ? Settings.serverSettings.description : Net.connectedServerInfo.description; + serverDesc.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; + serverDesc.justify = Center; + dialogImg.addChild(serverDesc); + + var levelName = new GuiText(markerFelt24); + levelName.text.textColor = 0xFFFFFF; + levelName.position = new Vector(60, 158); + levelName.extent = new Vector(525, 22); + levelName.text.text = MarbleGame.instance.world.mission.title; + levelName.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; + dialogImg.addChild(levelName); + + var levelDesc = new GuiMLText(markerFelt18, null); + levelDesc.text.textColor = 0xFFFFFF; + levelDesc.position = new Vector(60, 185); + levelDesc.extent = new Vector(516, 63); + levelDesc.text.text = StringTools.htmlEscape(MarbleGame.instance.world.mission.description); + levelDesc.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; + dialogImg.addChild(levelDesc); + + var playerTitle = new GuiText(markerFelt18); + playerTitle.text.textColor = 0xDDDDEE; + playerTitle.position = new Vector(60, 263); + playerTitle.extent = new Vector(525, 14); + playerTitle.text.text = "Player Status"; + playerTitle.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; + dialogImg.addChild(playerTitle); + + var playerListContainer = new GuiScrollCtrl(ResourceLoader.getResource("data/ui/common/philscroll.png", ResourceLoader.getImage, this.imageResources) + .toTile()); + playerListContainer.position = new Vector(57, 286); + playerListContainer.extent = new Vector(525, 99); + playerListContainer.childrenHandleScroll = true; + // playerList.maxScrollY = 394 * Settings.uiScale; + dialogImg.addChild(playerListContainer); + + var playerListLeft = new GuiTextListCtrl(markerFelt18, [], 0xFFFFFF, { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + color: 0, + alpha: 1 + }); + playerListLeft.selectedColor = 0xFFFFFF; + playerListLeft.selectedFillColor = 0x6092E5; + playerListLeft.selectedFillColorAlpha = 0.0; + playerListLeft.horizSizing = Width; + playerListLeft.position = new Vector(-1, -1); + playerListLeft.extent = new Vector(525, 2880); + playerListLeft.scrollable = true; + playerListLeft.textYOffset = -6; + playerListContainer.addChild(playerListLeft); + + var playerListRight = new GuiTextListCtrl(markerFelt18, [], 0xFFFFFF, { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + color: 0, + alpha: 1 + }); + playerListRight.selectedColor = 0xFFFFFF; + playerListRight.selectedFillColor = 0x6092E5; + playerListRight.selectedFillColorAlpha = 0.0; + playerListRight.horizSizing = Width; + playerListRight.position = new Vector(420, -1); + playerListRight.extent = new Vector(300, 2880); + playerListRight.scrollable = true; + playerListRight.textYOffset = -6; + playerListContainer.addChild(playerListRight); + playerListContainer.setScrollMax(playerListLeft.calculateFullHeight()); + + this.updatePlayerList = () -> { + var allReady = true; + var playerListArr = []; + if (Net.isHost) { + playerListArr.push({ + name: Settings.highscoreName, + ready: Net.lobbyHostReady, + spectate: Net.hostSpectate + }); + spectateBtn.anim.currentFrame = Net.hostSpectate ? 2 : 0; + readyBtn.anim.currentFrame = Net.lobbyHostReady ? 2 : 0; + } + if (Net.isClient) { + playerListArr.push({ + name: Settings.highscoreName, + ready: Net.lobbyClientReady, + spectate: Net.clientSpectate + }); + spectateBtn.anim.currentFrame = Net.clientSpectate ? 2 : 0; + readyBtn.anim.currentFrame = Net.lobbyClientReady ? 2 : 0; + spectateBtn.pressed = Net.clientSpectate; + readyBtn.pressed = Net.lobbyClientReady; + } + if (Net.clientIdMap != null) { + for (c => v in Net.clientIdMap) { + playerListArr.push({ + name: v.name, + ready: v.lobbyReady, + spectate: v.spectator + }); + } + } + for (p in playerListArr) { + if (!p.ready) { + allReady = false; + break; + } + } + + playBtn.disabled = !allReady; + + if (playerListArr.length > 1) { + spectateBtn.anim.visible = true; + spectateBtn.disabled = false; + } else { + spectateBtn.anim.visible = false; + spectateBtn.disabled = true; + } + + var playerListCompiled = playerListArr.map(player -> player.spectate ? '[S] ${player.name}' : player.name); + var playerListStateCompiled = playerListArr.map(player -> player.ready ? "[Ready]" : "[Waiting]"); + playerListLeft.setTexts(playerListCompiled); + playerListRight.setTexts(playerListStateCompiled); + + if (playerListArr.length == 1) { + // Disable spectating + Net.hostSpectate = false; + Net.clientSpectate = false; + } + + // if (!showingCustoms) + // playerList.setTexts(playerListArr.map(player -> { + // return '${player.name}'; + // })); + } + + readyBtn.pressedAction = (e) -> { + NetCommands.toggleReadiness(Net.isHost ? 0 : Net.clientId); + updatePlayerList(); + } + + // Make everyone un-lobby ready (again!) + for (c in Net.clients) { + c.lobbyReady = false; + c.spectator = false; + } + Net.hostSpectate = false; + Net.lobbyClientReady = false; + Net.lobbyHostReady = false; + if (Net.isHost) { + var b = Net.sendPlayerInfosBytes(); + for (cc in Net.clients) { + cc.sendBytes(b); + } + } + updatePlayerList(); + } + + public dynamic function updatePlayerList() {} +} diff --git a/src/gui/MPSearchGui.hx b/src/gui/MPSearchGui.hx new file mode 100644 index 00000000..d6560f55 --- /dev/null +++ b/src/gui/MPSearchGui.hx @@ -0,0 +1,282 @@ +package gui; + +import net.NetCommands; +import src.Marbleland; +import h2d.Tile; +import hxd.BitmapData; +import src.MarbleGame; +import hxd.res.BitmapFont; +import h3d.Vector; +import src.ResourceLoader; +import src.Settings; +import src.MissionList; + +class MPSearchGui extends GuiImage { + public function new(isCustom:Bool) { + var img = ResourceLoader.getImage("data/ui/mp/search/window.png"); + super(img.resource.toTile()); + + this.horizSizing = Center; + this.vertSizing = Center; + this.position = new Vector(76, 8); + this.extent = new Vector(487, 463); + + var missionList = []; + if (!isCustom) { + for (diffName => diff in MissionList.missionList["multiplayer"]) { + for (mis in diff) { + missionList.push({ + mis: mis, + name: mis.title, + artist: mis.artist, + path: mis.path, + difficulty: diffName, + }); + } + } + } else { + var customsList = Marbleland.multiplayerMissions; + for (mis in customsList) { + missionList.push({ + mis: mis, + name: mis.title, + artist: mis.artist, + path: mis.path, + difficulty: "custom" + }); + } + } + + var displayList = missionList.map(x -> x.name); + displayList.sort((x, y) -> (x > y) ? 1 : (x == y ? 0 : -1)); + missionList.sort((x, y) -> x.name > y.name ? 1 : (x.name == y.name ? 0 : -1)); + var retrieveMissionList = missionList; + + var searchMissionList:GuiTextListCtrl = null; + var scrollCtrl:GuiScrollCtrl = null; + + var currentSortBy = "title"; + + function sortBy(type:String, txt:String = "") { + if (type == "title") { + retrieveMissionList = missionList.filter(x -> StringTools.contains(x.name.toLowerCase(), txt.toLowerCase())); + displayList = retrieveMissionList.map(x -> x.name); + displayList.sort((x, y) -> (x > y) ? 1 : (x == y ? 0 : -1)); + retrieveMissionList.sort((x, y) -> x.name > y.name ? 1 : (x.name == y.name ? 0 : -1)); + } + if (type == "artist") { + retrieveMissionList = missionList.filter(x -> StringTools.contains(x.artist.toLowerCase(), txt.toLowerCase())); + retrieveMissionList.sort((x, y) -> x.artist > y.artist ? 1 : (x.artist == y.artist ? 0 : -1)); + displayList = retrieveMissionList.map(x -> '${x.name} By ${x.artist}'); + } + if (type == "file") { + retrieveMissionList = missionList.filter(x -> StringTools.contains(x.path.toLowerCase(), txt.toLowerCase())); + retrieveMissionList.sort((x, y) -> x.path > y.path ? 1 : (x.path == y.path ? 0 : -1)); + var idxofslash = 0; + displayList = retrieveMissionList.map(x -> { + var idxofslash = 0; + var slashcount = 0; + for (i in 0...x.path.length) { + if (x.path.charCodeAt(x.path.length - i - 1) == '/'.code) { + slashcount++; + if (slashcount == 2) { + idxofslash = x.path.length - i - 1; + break; + } + } + } + return '${x.path.substr(idxofslash + 1)}'; + }); + } + searchMissionList.setTexts(displayList); + scrollCtrl.setScrollMax(searchMissionList.calculateFullHeight()); + } + + function loadButtonImages(path:String) { + var normal = ResourceLoader.getResource('${path}_n.png', ResourceLoader.getImage, this.imageResources).toTile(); + var hover = ResourceLoader.getResource('${path}_h.png', ResourceLoader.getImage, this.imageResources).toTile(); + var pressed = ResourceLoader.getResource('${path}_d.png', ResourceLoader.getImage, this.imageResources).toTile(); + var disabledObj = ResourceLoader.getResource('${path}_i.png', ResourceLoader.getImage, this.imageResources); + var disabled = disabledObj != null ? disabledObj.toTile() : null; + return [normal, hover, pressed, disabled]; + } + + var markerFelt32fontdata = ResourceLoader.getFileEntry("data/font/MarkerFelt.fnt"); + var markerFelt32b = new BitmapFont(markerFelt32fontdata.entry); + @:privateAccess markerFelt32b.loader = ResourceLoader.loader; + var markerFelt32 = markerFelt32b.toSdfFont(cast 26 * Settings.uiScale, MultiChannel); + var markerFelt24 = markerFelt32b.toSdfFont(cast 18 * Settings.uiScale, MultiChannel); + var markerFelt18 = markerFelt32b.toSdfFont(cast 14 * Settings.uiScale, MultiChannel); + + var domcasual32fontdata = ResourceLoader.getFileEntry("data/font/DomCasualD.fnt"); + var domcasual32b = new BitmapFont(domcasual32fontdata.entry); + @:privateAccess domcasual32b.loader = ResourceLoader.loader; + var domcasual32 = domcasual32b.toSdfFont(cast 26 * Settings.uiScale, MultiChannel); + var domcasual64 = domcasual32b.toSdfFont(cast 58 * Settings.uiScale, MultiChannel); + var domcasual24 = domcasual32b.toSdfFont(cast 20 * Settings.uiScale, MultiChannel); + + var searchCancel = new GuiButton(loadButtonImages("data/ui/mp/search/cancel")); + searchCancel.vertSizing = Top; + searchCancel.position = new Vector(21, 395); + searchCancel.extent = new Vector(94, 45); + searchCancel.pressedAction = (e) -> { + MarbleGame.canvas.popDialog(this); + } + this.addChild(searchCancel); + + var selectedIdx:Int = -1; + + var searchPlay = new GuiButton(loadButtonImages("data/ui/mp/search/play")); + searchPlay.position = new Vector(370, 395); + searchPlay.extent = new Vector(94, 45); + searchPlay.disabled = true; + searchPlay.pressedAction = (e) -> { + if (selectedIdx != -1) { + var mis = retrieveMissionList[selectedIdx]; + + if (mis.difficulty == "custom") { + var idx = Marbleland.multiplayerMissions.indexOf(mis.mis); + NetCommands.setLobbyLevelIndex(mis.difficulty, idx); + } else { + var idx = MissionList.missionList["multiplayer"][mis.difficulty].indexOf(mis.mis); + NetCommands.setLobbyLevelIndex(mis.difficulty, idx); + } + MarbleGame.canvas.popDialog(this); + } + } + this.addChild(searchPlay); + + var searchTitle = new GuiText(domcasual24); + searchTitle.position = new Vector(52, 23); + searchTitle.extent = new Vector(64, 25); + searchTitle.text.textColor = 0x696969; + searchTitle.text.text = "Title:"; + this.addChild(searchTitle); + + var searchEdit = new GuiTextInput(domcasual24); + searchEdit.text.textColor = 0; + searchEdit.text.selectionColor.setColor(0xFFFFFFFF); + searchEdit.text.selectionTile = h2d.Tile.fromColor(0x808080, 0, hxd.Math.ceil(searchEdit.text.font.lineHeight)); + searchEdit.position = new Vector(91, 23); + searchEdit.extent = new Vector(373, 29); + searchEdit.onTextChange = (txt) -> { + sortBy(currentSortBy, txt); + }; + this.addChild(searchEdit); + + scrollCtrl = new GuiScrollCtrl(ResourceLoader.getResource("data/ui/common/philscroll.png", ResourceLoader.getImage, this.imageResources).toTile()); + scrollCtrl.position = new Vector(18, 68); + scrollCtrl.extent = new Vector(447, 317); + scrollCtrl.childrenHandleScroll = true; + this.addChild(scrollCtrl); + + searchMissionList = new GuiTextListCtrl(markerFelt24, displayList, 0xFFFFFF); + searchMissionList.selectedColor = 0xFFFFFF; + searchMissionList.selectedFillColor = 0x7585E3; + searchMissionList.horizSizing = Width; + searchMissionList.position = new Vector(4, -1); + searchMissionList.extent = new Vector(432, 2880); + searchMissionList.textYOffset = -6; + searchMissionList.scrollable = true; + searchMissionList.onSelectedFunc = (sel) -> { + selectedIdx = sel; + if (retrieveMissionList.length <= selectedIdx || selectedIdx < 0) { + searchPlay.disabled = true; + } else { + searchPlay.disabled = false; + } + } + scrollCtrl.addChild(searchMissionList); + scrollCtrl.setScrollMax(searchMissionList.calculateFullHeight()); + + var optionsPopup:GuiButton = null; + + var searchOptions = new GuiButton(loadButtonImages("data/ui/mp/search/options")); + searchOptions.vertSizing = Top; + searchOptions.horizSizing = Right; + searchOptions.position = new Vector(121, 398); + searchOptions.extent = new Vector(94, 45); + searchOptions.pressedAction = (e) -> { + MarbleGame.canvas.pushDialog(optionsPopup); + } + this.addChild(searchOptions); + + var temprev = new BitmapData(1, 1); + temprev.setPixel(0, 0, 0); + var tmpprevtile = Tile.fromBitmap(temprev); + + optionsPopup = new GuiButton([tmpprevtile, tmpprevtile, tmpprevtile]); + optionsPopup.horizSizing = Width; + optionsPopup.vertSizing = Height; + optionsPopup.position = new Vector(0, 0); + optionsPopup.extent = new Vector(640, 480); + optionsPopup.pressedAction = (e) -> { + MarbleGame.canvas.popDialog(optionsPopup, false); + } + + var optionsPopupInner = new GuiControl(); + optionsPopupInner.horizSizing = Center; + optionsPopupInner.vertSizing = Center; + optionsPopupInner.position = new Vector(80, 7); + optionsPopupInner.extent = new Vector(480, 465); + optionsPopup.addChild(optionsPopupInner); + + var optionsBgR = ResourceLoader.getResource('data/ui/mp/play/moremenu.png', ResourceLoader.getImage, this.imageResources).toTile(); + + var optionsBg = new GuiImage(optionsBgR); + optionsBg.position = new Vector(0, 281); + optionsBg.extent = new Vector(348, 148); + optionsPopupInner.addChild(optionsBg); + + var searchByFile = new GuiButton(loadButtonImages("data/ui/mp/search/file")); + searchByFile.buttonType = Radio; + searchByFile.position = new Vector(229, 45); + searchByFile.extent = new Vector(67, 45); + searchByFile.pressedAction = (e) -> { + searchTitle.text.text = "File:"; + currentSortBy = "file"; + sortBy("file"); + }; + optionsBg.addChild(searchByFile); + + var searchByartist = new GuiButton(loadButtonImages("data/ui/mp/search/artist")); + searchByartist.buttonType = Radio; + searchByartist.position = new Vector(159, 45); + searchByartist.extent = new Vector(71, 45); + searchByartist.pressedAction = (e) -> { + searchTitle.text.text = "Artist:"; + currentSortBy = "artist"; + sortBy("artist"); + }; + optionsBg.addChild(searchByartist); + + var searchByTitle = new GuiButton(loadButtonImages("data/ui/mp/search/name")); + searchByTitle.buttonType = Radio; + searchByTitle.position = new Vector(92, 45); + searchByTitle.extent = new Vector(68, 45); + searchByTitle.pressed = true; + searchByTitle.pressedAction = (e) -> { + searchTitle.text.text = "Title:"; + currentSortBy = "title"; + sortBy("title"); + }; + optionsBg.addChild(searchByTitle); + + var searchRandom = new GuiButton(loadButtonImages("data/ui/mp/search/random")); + searchRandom.vertSizing = Top; + searchRandom.position = new Vector(44, 45); + searchRandom.extent = new Vector(44, 44); + searchRandom.pressedAction = (e) -> { + var mis = retrieveMissionList[Math.floor(Math.random() * missionList.length)]; + + if (mis.difficulty == "custom") { + var idx = Marbleland.multiplayerMissions.indexOf(mis.mis); + NetCommands.setLobbyLevelIndex(mis.difficulty, idx); + } else { + var idx = MissionList.missionList["multiplayer"][mis.difficulty].indexOf(mis.mis); + NetCommands.setLobbyLevelIndex(mis.difficulty, idx); + } + } + optionsBg.addChild(searchRandom); + } +} diff --git a/src/gui/MPServerDlg.hx b/src/gui/MPServerDlg.hx new file mode 100644 index 00000000..e040d38b --- /dev/null +++ b/src/gui/MPServerDlg.hx @@ -0,0 +1,361 @@ +package gui; + +import net.MasterServerClient; +import net.Net; +import h2d.filter.DropShadow; +import src.Marbleland; +import h2d.Tile; +import hxd.BitmapData; +import src.MarbleGame; +import hxd.res.BitmapFont; +import h3d.Vector; +import src.ResourceLoader; +import src.Settings; +import src.MissionList; +import net.NetCommands; + +class MPServerDlg extends GuiImage { + public function new() { + var img = ResourceLoader.getImage("data/ui/mp/settings/serversettings.png"); + super(img.resource.toTile()); + + this.horizSizing = Center; + this.vertSizing = Center; + this.position = new Vector(100, 17); + this.extent = new Vector(440, 486); + + function loadButtonImages(path:String) { + var normal = ResourceLoader.getResource('${path}_n.png', ResourceLoader.getImage, this.imageResources).toTile(); + var hover = ResourceLoader.getResource('${path}_h.png', ResourceLoader.getImage, this.imageResources).toTile(); + var pressed = ResourceLoader.getResource('${path}_d.png', ResourceLoader.getImage, this.imageResources).toTile(); + return [normal, hover, pressed]; + } + + var markerFelt32fontdata = ResourceLoader.getFileEntry("data/font/MarkerFelt.fnt"); + var markerFelt32b = new BitmapFont(markerFelt32fontdata.entry); + @:privateAccess markerFelt32b.loader = ResourceLoader.loader; + var markerFelt32 = markerFelt32b.toSdfFont(cast 26 * Settings.uiScale, MultiChannel); + var markerFelt24 = markerFelt32b.toSdfFont(cast 20 * Settings.uiScale, MultiChannel); + var markerFelt20 = markerFelt32b.toSdfFont(cast 18.5 * Settings.uiScale, MultiChannel); + var markerFelt18 = markerFelt32b.toSdfFont(cast 17 * Settings.uiScale, MultiChannel); + var markerFelt26 = markerFelt32b.toSdfFont(cast 22 * Settings.uiScale, MultiChannel); + + var cancelBtn = new GuiButton(loadButtonImages("data/ui/mp/join/cancel")); + cancelBtn.vertSizing = Top; + cancelBtn.horizSizing = Left; + cancelBtn.position = new Vector(123, 424); + cancelBtn.extent = new Vector(94, 45); + cancelBtn.pressedAction = (e) -> { + MarbleGame.canvas.popDialog(this); + } + this.addChild(cancelBtn); + + var saveBtn = new GuiButton(loadButtonImages("data/ui/mp/join/save")); + saveBtn.horizSizing = Left; + saveBtn.vertSizing = Top; + saveBtn.position = new Vector(223, 424); + saveBtn.extent = new Vector(94, 45); + this.addChild(saveBtn); + + var title = new GuiText(markerFelt32); + title.text.text = "Server Settings"; + title.text.textColor = 0xFFFFFF; + title.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; + title.justify = Center; + title.position = new Vector(11, 21); + title.extent = new Vector(418, 14); + title.horizSizing = Width; + this.addChild(title); + + // var showPwdTitle = new GuiText(markerFelt18); + // showPwdTitle.text.text = "Show Password"; + // showPwdTitle.text.textColor = 0xFFFFFF; + // showPwdTitle.text.filter = new DropShadow(1.414, 0.785, 0x0000000F, 1, 0, 0.4, 1, true); + // showPwdTitle.position = new Vector(259, 94); + // showPwdTitle.extent = new Vector(129, 14); + // showPwdTitle.horizSizing = Left; + // this.addChild(showPwdTitle); + + // var showPasswords = new GuiButton(loadButtonImages("data/ui/mp/lb_chkbx")); + // showPasswords.buttonType = Toggle; + // showPasswords.horizSizing = Left; + // showPasswords.position = new Vector(389, 86); + // showPasswords.extent = new Vector(31, 31); + // this.addChild(showPasswords); + + // State variables + var curServerName = Settings.serverSettings.name; + var curServerPassword = Settings.serverSettings.password; + var curServerDescription = Settings.serverSettings.description; + var curServerMaxPlayers = Settings.serverSettings.maxPlayers; + var curServerForceSpectators = Settings.serverSettings.forceSpectators; + var curServerQuickRespawn = Settings.serverSettings.quickRespawn; + var curServerCompetitive = Settings.serverSettings.competitiveMode; + var curServerOldSpawns = Settings.serverSettings.oldSpawns; + + saveBtn.pressedAction = (e) -> { + Settings.serverSettings.name = curServerName; + Settings.serverSettings.password = curServerPassword; + Settings.serverSettings.description = curServerDescription; + Settings.serverSettings.maxPlayers = curServerMaxPlayers; + Settings.serverSettings.forceSpectators = curServerForceSpectators; + Settings.serverSettings.quickRespawn = curServerQuickRespawn; + Settings.serverSettings.competitiveMode = curServerCompetitive; + Settings.serverSettings.oldSpawns = curServerOldSpawns; + if (Net.isHost) { + Net.serverInfo.name = curServerName; + Net.serverInfo.description = curServerDescription; + Net.serverInfo.maxPlayers = curServerMaxPlayers; + Net.serverInfo.password = curServerPassword; + MasterServerClient.instance.sendServerInfo(Net.serverInfo); // Update data on master server + NetCommands.sendServerSettings(Settings.serverSettings.name, Settings.serverSettings.description, Settings.serverSettings.quickRespawn, + Settings.serverSettings.forceSpectators, Settings.serverSettings.competitiveMode, Settings.serverSettings.oldSpawns); + } + Settings.save(); + MarbleGame.canvas.popDialog(this); + } + + var serverSettingsContainer = new GuiControl(); + serverSettingsContainer.vertSizing = Height; + serverSettingsContainer.horizSizing = Left; + serverSettingsContainer.position = new Vector(16, 65); + serverSettingsContainer.extent = new Vector(390, 346); + this.addChild(serverSettingsContainer); + + var serverName = new GuiText(markerFelt18); + serverName.text.text = "Server Name:"; + serverName.text.textColor = 0xFFFFFF; + serverName.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; + serverName.position = new Vector(0, 0); + serverName.extent = new Vector(206, 14); + serverSettingsContainer.addChild(serverName); + + var serverNameEditBg = new GuiImage(ResourceLoader.getResource("data/ui/mp/settings/inputbg.png", ResourceLoader.getImage, this.imageResources) + .toTile()); + serverNameEditBg.position = new Vector(93, 0); + serverNameEditBg.extent = new Vector(297, 35); + serverSettingsContainer.addChild(serverNameEditBg); + + var serverNameEdit = new GuiTextInput(markerFelt18); + serverNameEdit.position = new Vector(3, 3); + serverNameEdit.extent = new Vector(291, 29); + serverNameEdit.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; + serverNameEdit.horizSizing = Left; + serverNameEdit.text.textColor = 0; + serverNameEdit.text.text = curServerName; + serverNameEdit.onTextChange = (t) -> { + curServerName = t; + } + serverNameEditBg.addChild(serverNameEdit); + + var password = new GuiText(markerFelt18); + password.text.text = "Password:"; + password.text.textColor = 0xFFFFFF; + password.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; + password.position = new Vector(0, 39); + password.extent = new Vector(206, 14); + serverSettingsContainer.addChild(password); + + var passwordEditBg = new GuiImage(ResourceLoader.getResource("data/ui/mp/settings/inputbg.png", ResourceLoader.getImage, this.imageResources) + .toTile()); + passwordEditBg.position = new Vector(93, 6 + 29); + passwordEditBg.extent = new Vector(297, 35); + serverSettingsContainer.addChild(passwordEditBg); + + var passwordEdit = new GuiTextInput(markerFelt18); + passwordEdit.position = new Vector(3, 3); + passwordEdit.extent = new Vector(291, 29); + passwordEdit.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; + passwordEdit.horizSizing = Left; + passwordEdit.text.textColor = 0; + passwordEdit.text.text = curServerPassword; + passwordEdit.onTextChange = (t) -> { + curServerPassword = t; + } + passwordEditBg.addChild(passwordEdit); + + var serverDescTitle = new GuiText(markerFelt18); + serverDescTitle.text.text = "Server Info:"; + serverDescTitle.text.textColor = 0xFFFFFF; + serverDescTitle.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; + serverDescTitle.position = new Vector(0, 39 * 2); + serverDescTitle.extent = new Vector(206, 14); + serverSettingsContainer.addChild(serverDescTitle); + + var serverDescEditBg = new GuiImage(ResourceLoader.getResource("data/ui/mp/settings/inputbg.png", ResourceLoader.getImage, this.imageResources) + .toTile()); + serverDescEditBg.position = new Vector(0, 39 * 3); + serverDescEditBg.extent = new Vector(297 + 93, 35); + serverSettingsContainer.addChild(serverDescEditBg); + + var serverDescEdit = new GuiTextInput(markerFelt18); + serverDescEdit.position = new Vector(3, 3); + serverDescEdit.extent = new Vector(291 + 93, 29); + serverDescEdit.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; + serverDescEdit.horizSizing = Left; + serverDescEdit.text.textColor = 0; + serverDescEdit.text.text = curServerDescription; + serverDescEdit.onTextChange = (t) -> { + curServerDescription = t; + } + serverDescEditBg.addChild(serverDescEdit); + + var maxPlayers = new GuiText(markerFelt18); + maxPlayers.text.text = "Max Players: " + curServerMaxPlayers; + maxPlayers.text.textColor = 0xFFFFFF; + maxPlayers.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; + maxPlayers.position = new Vector(0, 39 * 4); + maxPlayers.extent = new Vector(206, 14); + serverSettingsContainer.addChild(maxPlayers); + + var playerMinus = new GuiButton(loadButtonImages("data/ui/mp/settings/minus")); + playerMinus.position = new Vector(331, 9 + 29 * 5); + playerMinus.extent = new Vector(31, 31); + playerMinus.pressedAction = (sender) -> { + curServerMaxPlayers = Std.int(Math.max(1, curServerMaxPlayers - 1)); + maxPlayers.text.text = "Max Players: " + curServerMaxPlayers; + }; + serverSettingsContainer.addChild(playerMinus); + + var playerPlus = new GuiButton(loadButtonImages("data/ui/mp/settings/plus")); + playerPlus.position = new Vector(359, 9 + 29 * 5); + playerPlus.extent = new Vector(31, 31); + playerPlus.pressedAction = (sender) -> { + curServerMaxPlayers = Std.int(Math.min(8, curServerMaxPlayers + 1)); + maxPlayers.text.text = "Max Players: " + curServerMaxPlayers; + }; + serverSettingsContainer.addChild(playerPlus); + + var forceSpectators = new GuiText(markerFelt18); + forceSpectators.text.text = "Force Spectators:"; + forceSpectators.text.textColor = 0xFFFFFF; + forceSpectators.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; + forceSpectators.position = new Vector(0, 39 * 5); + forceSpectators.extent = new Vector(206, 14); + serverSettingsContainer.addChild(forceSpectators); + + var forceSpectatorsChk = new GuiButton(loadButtonImages("data/ui/mp/lb_chkbx")); + forceSpectatorsChk.position = new Vector(359, 9 * 2 + 29 * 6 + 2); + forceSpectatorsChk.extent = new Vector(31, 31); + forceSpectatorsChk.buttonType = Toggle; + forceSpectatorsChk.pressed = curServerForceSpectators; + forceSpectatorsChk.pressedAction = (sender) -> { + curServerForceSpectators = !curServerForceSpectators; + }; + serverSettingsContainer.addChild(forceSpectatorsChk); + + var quickRespawn = new GuiText(markerFelt18); + quickRespawn.text.text = "Allow Quick Respawn:"; + quickRespawn.text.textColor = 0xFFFFFF; + quickRespawn.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; + quickRespawn.position = new Vector(0, 39 * 6); + quickRespawn.extent = new Vector(206, 14); + serverSettingsContainer.addChild(quickRespawn); + + var quickRespawnChk = new GuiButton(loadButtonImages("data/ui/mp/lb_chkbx")); + quickRespawnChk.position = new Vector(359, 9 * 3 + 29 * 7 + 4); + quickRespawnChk.extent = new Vector(31, 31); + quickRespawnChk.buttonType = Toggle; + quickRespawnChk.pressed = curServerQuickRespawn; + quickRespawnChk.pressedAction = (sender) -> { + curServerQuickRespawn = !curServerQuickRespawn; + }; + serverSettingsContainer.addChild(quickRespawnChk); + + var competitive = new GuiText(markerFelt18); + competitive.text.text = "Competitive Mode:"; + competitive.text.textColor = 0xFFFFFF; + competitive.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; + competitive.position = new Vector(0, 39 * 7); + competitive.extent = new Vector(206, 14); + serverSettingsContainer.addChild(competitive); + + var competitiveChk = new GuiButton(loadButtonImages("data/ui/mp/lb_chkbx")); + competitiveChk.position = new Vector(359, 9 * 4 + 29 * 8 + 4); + competitiveChk.extent = new Vector(31, 31); + competitiveChk.buttonType = Toggle; + competitiveChk.pressed = curServerCompetitive; + competitiveChk.pressedAction = (sender) -> { + curServerCompetitive = !curServerCompetitive; + }; + serverSettingsContainer.addChild(competitiveChk); + + var oldSpawns = new GuiText(markerFelt18); + oldSpawns.text.text = "Old Spawns:"; + oldSpawns.text.textColor = 0xFFFFFF; + oldSpawns.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; + oldSpawns.position = new Vector(0, 39 * 8); + oldSpawns.extent = new Vector(206, 14); + serverSettingsContainer.addChild(oldSpawns); + + var oldSpawnsChk = new GuiButton(loadButtonImages("data/ui/mp/lb_chkbx")); + oldSpawnsChk.position = new Vector(359, 9 * 5 + 29 * 9 + 4); + oldSpawnsChk.extent = new Vector(31, 31); + oldSpawnsChk.buttonType = Toggle; + oldSpawnsChk.pressed = curServerOldSpawns; + oldSpawnsChk.pressedAction = (sender) -> { + curServerOldSpawns = !curServerOldSpawns; + }; + serverSettingsContainer.addChild(oldSpawnsChk); + } +} diff --git a/src/gui/MainMenuGui.hx b/src/gui/MainMenuGui.hx index 8dff8351..d85a9d24 100644 --- a/src/gui/MainMenuGui.hx +++ b/src/gui/MainMenuGui.hx @@ -10,6 +10,7 @@ import src.Settings; import src.Util; import src.Replay; import src.Marbleland; +import src.MissionList; class MainMenuGui extends GuiImage { public function new() { @@ -80,9 +81,12 @@ class MainMenuGui extends GuiImage { } mainMenuContent.addChild(playButton); - var lbButton = new GuiImage(ResourceLoader.getResource('data/ui/menu/online_i.png', ResourceLoader.getImage, this.imageResources).toTile()); + var lbButton = new GuiButton(loadButtonImages("data/ui/menu/online")); lbButton.position = new Vector(-5, 128); lbButton.extent = new Vector(247, 164); + lbButton.pressedAction = (sender) -> { + MarbleGame.canvas.setContent(new JoinServerGui()); + } mainMenuContent.addChild(lbButton); var optionsButton = new GuiButton(loadButtonImages("data/ui/menu/options")); @@ -178,8 +182,13 @@ class MainMenuGui extends GuiImage { versionText.vertSizing = Bottom; versionText.position = new Vector(502, 61); versionText.extent = new Vector(97, 72); - versionText.text.text = "

1.5.4

"; - versionText.text.filter = new DropShadow(1.414, 0.785, 0x3333337F, 1, 0, 0.7, 1, true); + versionText.text.text = '

${MarbleGame.currentVersion}

'; + versionText.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; this.addChild(versionText); var kofi = new GuiButton(loadButtonImages("data/ui/kofi1")); diff --git a/src/gui/MarbleSelectGui.hx b/src/gui/MarbleSelectGui.hx index d53d7e34..715eb2f8 100644 --- a/src/gui/MarbleSelectGui.hx +++ b/src/gui/MarbleSelectGui.hx @@ -13,6 +13,493 @@ import src.Settings; import src.ResourceLoaderWorker; class MarbleSelectGui extends GuiImage { + public static var marbleData = [ + [ + { + name: "Staff's Original", + dts: "data/shapes/balls/ball-superball.dts", + skin: "base", + shader: "Default" + }, + { + name: "3D Marble", + dts: "data/shapes/balls/3dMarble.dts", + skin: "base", + shader: "Default" + }, + { + name: "Mid P", + dts: "data/shapes/balls/midp.dts", + skin: "base", + shader: "Default" + }, + { + name: "Spade", + dts: "data/shapes/balls/ball-superball.dts", + skin: "skin4", + shader: "Default" + }, + { + name: "GMD Logo", + dts: "data/shapes/balls/ball-superball.dts", + skin: "skin5", + shader: "Default" + }, + { + name: "Textured Marble", + dts: "data/shapes/balls/ball-superball.dts", + skin: "skin6", + shader: "Default" + }, + { + name: "Golden Marble", + dts: "data/shapes/balls/ball-superball.dts", + skin: "skin7", + shader: "Default" + }, + { + name: "Rainbow Marble", + dts: "data/shapes/balls/ball-superball.dts", + skin: "skin8", + shader: "Default" + }, + { + name: "Brown Swirls", + dts: "data/shapes/balls/ball-superball.dts", + skin: "skin9", + shader: "Default" + }, + { + name: "Caution Stripes", + dts: "data/shapes/balls/ball-superball.dts", + skin: "skin10", + shader: "Default" + }, + { + name: "Earth", + dts: "data/shapes/balls/ball-superball.dts", + skin: "skin11", + shader: "Default" + }, + { + name: "Golf Ball", + dts: "data/shapes/balls/ball-superball.dts", + skin: "skin12", + shader: "Default" + }, + { + name: "Jupiter", + dts: "data/shapes/balls/ball-superball.dts", + skin: "skin13", + shader: "Default" + }, + { + name: "MB Gold Marble", + dts: "data/shapes/balls/ball-superball.dts", + skin: "skin14", + shader: "Default" + }, + { + name: "MBP on the Marble!", + dts: "data/shapes/balls/ball-superball.dts", + skin: "skin15", + shader: "Default" + }, + { + name: "Moshe", + dts: "data/shapes/balls/ball-superball.dts", + skin: "skin16", + shader: "Default" + }, + { + name: "Strong Bad", + dts: "data/shapes/balls/ball-superball.dts", + skin: "skin17", + shader: "Default" + }, + { + name: "Venus", + dts: "data/shapes/balls/ball-superball.dts", + skin: "skin18", + shader: "Default" + }, + { + name: "Water", + dts: "data/shapes/balls/ball-superball.dts", + skin: "skin19", + shader: "Default" + }, + { + name: "Evil Eye", + dts: "data/shapes/balls/ball-superball.dts", + skin: "skin20", + shader: "Default" + }, + { + name: "Desert and Sky", + dts: "data/shapes/balls/ball-superball.dts", + skin: "skin21", + shader: "Default" + }, + { + name: "Dirt Marble", + dts: "data/shapes/balls/ball-superball.dts", + skin: "skin22", + shader: "Default" + }, + { + name: "Friction Textured Marble", + dts: "data/shapes/balls/ball-superball.dts", + skin: "skin23", + shader: "Default" + }, + { + name: "Grass", + dts: "data/shapes/balls/ball-superball.dts", + skin: "skin24", + shader: "Default" + }, + { + name: "Mars", + dts: "data/shapes/balls/ball-superball.dts", + skin: "skin25", + shader: "Default" + }, + { + name: "Phil's Golf Ball", + dts: "data/shapes/balls/ball-superball.dts", + skin: "skin26", + shader: "Default" + }, + { + name: "Molten", + dts: "data/shapes/balls/ball-superball.dts", + skin: "skin27", + shader: "Default" + }, + { + name: "Lightning", + dts: "data/shapes/balls/ball-superball.dts", + skin: "skin28", + shader: "Default" + }, + { + name: "Phil'sEmpire", + dts: "data/shapes/balls/ball-superball.dts", + skin: "skin29", + shader: "Default" + }, + { + name: "Matan's Red Dragon", + dts: "data/shapes/balls/ball-superball.dts", + skin: "skin30", + shader: "Default" + }, + { + name: "Metallic Marble", + dts: "data/shapes/balls/ball-superball.dts", + skin: "skin31", + shader: "Default" + }, + { + name: "Sun", + dts: "data/shapes/balls/ball-superball.dts", + skin: "skin32", + shader: "Default" + }, + { + name: "Underwater", + dts: "data/shapes/balls/ball-superball.dts", + skin: "skin33", + shader: "Default" + }, + { + name: "GarageGames logo", + dts: "data/shapes/balls/garageGames.dts", + skin: "base", + shader: "Default" + }, + { + name: "Big Marble 1", + dts: "data/shapes/balls/bm1.dts", + skin: "base", + shader: "Default" + }, + { + name: "Big Marble 2", + dts: "data/shapes/balls/bm2.dts", + skin: "base", + shader: "Default" + }, + { + name: "Big Marble 3", + dts: "data/shapes/balls/bm3.dts", + skin: "base", + shader: "Default" + }, + { + name: "Small Marble 1", + dts: "data/shapes/balls/sm1.dts", + skin: "base", + shader: "Default" + }, + { + name: "Small Marble 2", + dts: "data/shapes/balls/sm2.dts", + skin: "base", + shader: "Default" + }, + { + name: "Small Marble 3", + dts: "data/shapes/balls/sm3.dts", + skin: "base", + shader: "Default" + } + ], + [ + { + name: "Deep Blue", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin1", + shader: "ClassicGlassPureSphere" + }, + { + name: "Blood Red", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin2", + shader: "Default" + }, + { + name: "Gang Green", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin6", + shader: "ClassicGlassPureSphere" + }, + { + name: "Pink Candy", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin27", + shader: "Default" + }, + { + name: "Chocolate", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin5", + shader: "ClassicGlassPureSphere" + }, + { + name: "Grape", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin4", + shader: "ClassicGlassPureSphere" + }, + { + name: "Lemon", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin28", + shader: "Default" + }, + { + name: "Lime Green", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin8", + shader: "Default" + }, + { + name: "Blueberry", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin7", + shader: "ClassicGlassPureSphere" + }, + { + name: "Tangerine", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin3", + shader: "ClassicGlassPureSphere" + }, + { + name: "8 Ball", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin9", + shader: "ClassicMarb3" + }, + { + name: "Ace of Hearts", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin22", + shader: "ClassicMarb3" + }, + { + name: "Football", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin16", + shader: "ClassicMarb3" + }, + { + name: "9 Ball", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin29", + shader: "ClassicMarb3" + }, + { + name: "Ace of Spades", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin24", + shader: "ClassicMarb3" + }, + { + name: "GarageGames", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin10", + shader: "ClassicMarb2" + }, + { + name: "Bob", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin30", + shader: "ClassicMarb3" + }, + { + name: "Skully", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin18", + shader: "Default" + }, + { + name: "Jack-o-Lantern", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin34", + shader: "Default" + }, + { + name: "Walled Up", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin25", + shader: "ClassicMarb3" + }, + { + name: "Sunny Side Up", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin11", + shader: "ClassicMetal" + }, + { + name: "Lunar", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin31", + shader: "ClassicMetal" + }, + { + name: "Battery", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin14", + shader: "ClassicMarb3" + }, + { + name: "Static", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin32", + shader: "ClassicMarb2" + }, + { + name: "Earth", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin20", + shader: "ClassicMarbGlass20" + }, + { + name: "Red and X", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin13", + shader: "ClassicMarb3" + }, + { + name: "Orange Spiral", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin12", + shader: "ClassicGlassPureSphere" + }, + { + name: "Blue Spiral", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin15", + shader: "ClassicGlassPureSphere" + }, + { + name: "Sliced Marble", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin21", + shader: "ClassicMarb3" + }, + { + name: "Orange Checkers", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin19", + shader: "ClassicMarb3" + }, + { + name: "Torque", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin33", + shader: "ClassicMarb3" + }, + { + name: "Fred", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin17", + shader: "ClassicMarb3" + }, + { + name: "Pirate", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin26", + shader: "ClassicMarbGlass18" + }, + { + name: "Shuriken", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin23", + shader: "ClassicMarb3" + }, + { + name: "Eyeball", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin35", + shader: "Default" + }, + { + name: "Woody", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin36", + shader: "Default" + }, + { + name: "Dat Nostalgia", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin37", + shader: "Default" + }, + { + name: "Graffiti", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin38", + shader: "Default" + }, + { + name: "Asteroid", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin39", + shader: "Default" + }, + { + name: "Disco Ball", + dts: "data/shapes/balls/pack1/pack1marble.dts", + skin: "uskin40", + shader: "Default" + } + ], + ]; + public function new() { var img = ResourceLoader.getImage("data/ui/marbleSelect/marbleSelect.png"); super(img.resource.toTile()); @@ -21,494 +508,6 @@ class MarbleSelectGui extends GuiImage { this.position = new Vector(73, -59); this.extent = new Vector(493, 361); - var marbleData = [ - [ - { - name: "Staff's Original", - dts: "data/shapes/balls/ball-superball.dts", - skin: "base", - shader: "Default" - }, - { - name: "3D Marble", - dts: "data/shapes/balls/3dMarble.dts", - skin: "base", - shader: "Default" - }, - { - name: "Mid P", - dts: "data/shapes/balls/midp.dts", - skin: "base", - shader: "Default" - }, - { - name: "Spade", - dts: "data/shapes/balls/ball-superball.dts", - skin: "skin4", - shader: "Default" - }, - { - name: "GMD Logo", - dts: "data/shapes/balls/ball-superball.dts", - skin: "skin5", - shader: "Default" - }, - { - name: "Textured Marble", - dts: "data/shapes/balls/ball-superball.dts", - skin: "skin6", - shader: "Default" - }, - { - name: "Golden Marble", - dts: "data/shapes/balls/ball-superball.dts", - skin: "skin7", - shader: "Default" - }, - { - name: "Rainbow Marble", - dts: "data/shapes/balls/ball-superball.dts", - skin: "skin8", - shader: "Default" - }, - { - name: "Brown Swirls", - dts: "data/shapes/balls/ball-superball.dts", - skin: "skin9", - shader: "Default" - }, - { - name: "Caution Stripes", - dts: "data/shapes/balls/ball-superball.dts", - skin: "skin10", - shader: "Default" - }, - { - name: "Earth", - dts: "data/shapes/balls/ball-superball.dts", - skin: "skin11", - shader: "Default" - }, - { - name: "Golf Ball", - dts: "data/shapes/balls/ball-superball.dts", - skin: "skin12", - shader: "Default" - }, - { - name: "Jupiter", - dts: "data/shapes/balls/ball-superball.dts", - skin: "skin13", - shader: "Default" - }, - { - name: "MB Gold Marble", - dts: "data/shapes/balls/ball-superball.dts", - skin: "skin14", - shader: "Default" - }, - { - name: "MBP on the Marble!", - dts: "data/shapes/balls/ball-superball.dts", - skin: "skin15", - shader: "Default" - }, - { - name: "Moshe", - dts: "data/shapes/balls/ball-superball.dts", - skin: "skin16", - shader: "Default" - }, - { - name: "Strong Bad", - dts: "data/shapes/balls/ball-superball.dts", - skin: "skin17", - shader: "Default" - }, - { - name: "Venus", - dts: "data/shapes/balls/ball-superball.dts", - skin: "skin18", - shader: "Default" - }, - { - name: "Water", - dts: "data/shapes/balls/ball-superball.dts", - skin: "skin19", - shader: "Default" - }, - { - name: "Evil Eye", - dts: "data/shapes/balls/ball-superball.dts", - skin: "skin20", - shader: "Default" - }, - { - name: "Desert and Sky", - dts: "data/shapes/balls/ball-superball.dts", - skin: "skin21", - shader: "Default" - }, - { - name: "Dirt Marble", - dts: "data/shapes/balls/ball-superball.dts", - skin: "skin22", - shader: "Default" - }, - { - name: "Friction Textured Marble", - dts: "data/shapes/balls/ball-superball.dts", - skin: "skin23", - shader: "Default" - }, - { - name: "Grass", - dts: "data/shapes/balls/ball-superball.dts", - skin: "skin24", - shader: "Default" - }, - { - name: "Mars", - dts: "data/shapes/balls/ball-superball.dts", - skin: "skin25", - shader: "Default" - }, - { - name: "Phil's Golf Ball", - dts: "data/shapes/balls/ball-superball.dts", - skin: "skin26", - shader: "Default" - }, - { - name: "Molten", - dts: "data/shapes/balls/ball-superball.dts", - skin: "skin27", - shader: "Default" - }, - { - name: "Lightning", - dts: "data/shapes/balls/ball-superball.dts", - skin: "skin28", - shader: "Default" - }, - { - name: "Phil'sEmpire", - dts: "data/shapes/balls/ball-superball.dts", - skin: "skin29", - shader: "Default" - }, - { - name: "Matan's Red Dragon", - dts: "data/shapes/balls/ball-superball.dts", - skin: "skin30", - shader: "Default" - }, - { - name: "Metallic Marble", - dts: "data/shapes/balls/ball-superball.dts", - skin: "skin31", - shader: "Default" - }, - { - name: "Sun", - dts: "data/shapes/balls/ball-superball.dts", - skin: "skin32", - shader: "Default" - }, - { - name: "Underwater", - dts: "data/shapes/balls/ball-superball.dts", - skin: "skin33", - shader: "Default" - }, - { - name: "GarageGames logo", - dts: "data/shapes/balls/garageGames.dts", - skin: "base", - shader: "Default" - }, - { - name: "Big Marble 1", - dts: "data/shapes/balls/bm1.dts", - skin: "base", - shader: "Default" - }, - { - name: "Big Marble 2", - dts: "data/shapes/balls/bm2.dts", - skin: "base", - shader: "Default" - }, - { - name: "Big Marble 3", - dts: "data/shapes/balls/bm3.dts", - skin: "base", - shader: "Default" - }, - { - name: "Small Marble 1", - dts: "data/shapes/balls/sm1.dts", - skin: "base", - shader: "Default" - }, - { - name: "Small Marble 2", - dts: "data/shapes/balls/sm2.dts", - skin: "base", - shader: "Default" - }, - { - name: "Small Marble 3", - dts: "data/shapes/balls/sm3.dts", - skin: "base", - shader: "Default" - } - ], - [ - { - name: "Deep Blue", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin1", - shader: "ClassicGlassPureSphere" - }, - { - name: "Blood Red", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin2", - shader: "Default" - }, - { - name: "Gang Green", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin6", - shader: "ClassicGlassPureSphere" - }, - { - name: "Pink Candy", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin27", - shader: "Default" - }, - { - name: "Chocolate", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin5", - shader: "ClassicGlassPureSphere" - }, - { - name: "Grape", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin4", - shader: "ClassicGlassPureSphere" - }, - { - name: "Lemon", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin28", - shader: "Default" - }, - { - name: "Lime Green", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin8", - shader: "Default" - }, - { - name: "Blueberry", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin7", - shader: "ClassicGlassPureSphere" - }, - { - name: "Tangerine", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin3", - shader: "ClassicGlassPureSphere" - }, - { - name: "8 Ball", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin9", - shader: "ClassicMarb3" - }, - { - name: "Ace of Hearts", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin22", - shader: "ClassicMarb3" - }, - { - name: "Football", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin16", - shader: "ClassicMarb3" - }, - { - name: "9 Ball", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin29", - shader: "ClassicMarb3" - }, - { - name: "Ace of Spades", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin24", - shader: "ClassicMarb3" - }, - { - name: "GarageGames", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin10", - shader: "ClassicMarb2" - }, - { - name: "Bob", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin30", - shader: "ClassicMarb3" - }, - { - name: "Skully", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin18", - shader: "Default" - }, - { - name: "Jack-o-Lantern", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin34", - shader: "Default" - }, - { - name: "Walled Up", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin25", - shader: "ClassicMarb3" - }, - { - name: "Sunny Side Up", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin11", - shader: "ClassicMetal" - }, - { - name: "Lunar", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin31", - shader: "ClassicMetal" - }, - { - name: "Battery", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin14", - shader: "ClassicMarb3" - }, - { - name: "Static", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin32", - shader: "ClassicMarb2" - }, - { - name: "Earth", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin20", - shader: "ClassicMarbGlass20" - }, - { - name: "Red and X", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin13", - shader: "ClassicMarb3" - }, - { - name: "Orange Spiral", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin12", - shader: "ClassicGlassPureSphere" - }, - { - name: "Blue Spiral", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin15", - shader: "ClassicGlassPureSphere" - }, - { - name: "Sliced Marble", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin21", - shader: "ClassicMarb3" - }, - { - name: "Orange Checkers", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin19", - shader: "ClassicMarb3" - }, - { - name: "Torque", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin33", - shader: "ClassicMarb3" - }, - { - name: "Fred", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin17", - shader: "ClassicMarb3" - }, - { - name: "Pirate", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin26", - shader: "ClassicMarbGlass18" - }, - { - name: "Shuriken", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin23", - shader: "ClassicMarb3" - }, - { - name: "Eyeball", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin35", - shader: "Default" - }, - { - name: "Woody", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin36", - shader: "Default" - }, - { - name: "Dat Nostalgia", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin37", - shader: "Default" - }, - { - name: "Graffiti", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin38", - shader: "Default" - }, - { - name: "Asteroid", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin39", - shader: "Default" - }, - { - name: "Disco Ball", - dts: "data/shapes/balls/pack1/pack1marble.dts", - skin: "uskin40", - shader: "Default" - } - - ], - ]; - var categoryNames = ["Official Marbles", "MBUltra"]; var curSelection:Int = Settings.optionsSettings.marbleIndex; @@ -554,7 +553,12 @@ class MarbleSelectGui extends GuiImage { var titleText = new GuiMLText(markerFelt28, null); titleText.text.textColor = 0xFFFFFF; - titleText.text.filter = new DropShadow(1.414, 0.785, 0, 1, 0x0000007F, 0.4, 1, true); + titleText.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; titleText.horizSizing = Center; titleText.vertSizing = Bottom; titleText.position = new Vector(140, 67); @@ -564,7 +568,12 @@ class MarbleSelectGui extends GuiImage { var marbleText = new GuiMLText(markerFelt24, null); marbleText.text.textColor = 0xFFFFFF; - marbleText.text.filter = new DropShadow(1.414, 0.785, 0, 1, 0x0000007F, 0.4, 1, true); + marbleText.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; marbleText.horizSizing = Center; marbleText.vertSizing = Bottom; marbleText.position = new Vector(86, 243); diff --git a/src/gui/OptionsDlg.hx b/src/gui/OptionsDlg.hx index 72958ac5..c889ea11 100644 --- a/src/gui/OptionsDlg.hx +++ b/src/gui/OptionsDlg.hx @@ -1,5 +1,6 @@ package gui; +import hxd.BitmapData; import h2d.filter.DropShadow; import h2d.Text; import gui.GuiControl.MouseState; @@ -18,7 +19,7 @@ import src.Settings; class OptionsDlg extends GuiImage { var musicSliderFunc:(dt:Float, mouseState:MouseState) -> Void; - public function new() { + public function new(pause:Bool = false) { function chooseBg() { var rand = Math.random(); if (rand >= 0 && rand <= 0.244) @@ -28,7 +29,13 @@ class OptionsDlg extends GuiImage { return ResourceLoader.getImage('data/ui/backgrounds/ultra/${cast (Math.floor(Util.lerp(1, 9, Math.random())), Int)}.jpg'); } var img = chooseBg(); - super(img.resource.toTile()); + var temprev = new BitmapData(1, 1); + temprev.setPixel(0, 0, 0); + var tmpprevtile = Tile.fromBitmap(temprev); + if (!pause) + super(img.resource.toTile()); + else + super(tmpprevtile); this.horizSizing = Width; this.vertSizing = Height; this.position = new Vector(); @@ -80,7 +87,10 @@ class OptionsDlg extends GuiImage { homeBtn.extent = new Vector(94, 46); homeBtn.pressedAction = (sender) -> { applyFunc(); - MarbleGame.canvas.setContent(new MainMenuGui()); + if (!pause) + MarbleGame.canvas.setContent(new MainMenuGui()); + else + MarbleGame.canvas.popDialog(this); } window.addChild(homeBtn); @@ -141,13 +151,18 @@ class OptionsDlg extends GuiImage { } function makeOption(text:String, valueFunc:Void->String, yPos:Float, parent:GuiControl, size:String, options:Array, onSelect:Int->Void, - right:Bool = false) { - var textObj = new GuiText(markerFelt32); + right:Bool = false, smallfont:Bool = false) { + var textObj = new GuiText(smallfont ? markerFelt24 : markerFelt32); textObj.position = new Vector(right ? 388 : 7, yPos); textObj.extent = new Vector(212, 14); textObj.text.text = text; textObj.text.textColor = 0xFFFFFF; - textObj.text.filter = new DropShadow(1.414, 0.785, 0x0000000F, 1, 0, 0.4, 1, true); + textObj.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; parent.addChild(textObj); var optDropdownImg = new GuiImage(ResourceLoader.getResource('data/ui/options/dropdown-${size}.png', ResourceLoader.getImage, this.imageResources) @@ -214,13 +229,18 @@ class OptionsDlg extends GuiImage { optBtns.push(optDropdown); } - function makeSlider(text:String, value:Float, yPos:Float, parent:GuiControl, onChange:Float->Void, right:Bool = false) { - var textObj = new GuiText(markerFelt32); + function makeSlider(text:String, value:Float, yPos:Float, parent:GuiControl, onChange:Float->Void, right:Bool = false, smallfont:Bool = false) { + var textObj = new GuiText(smallfont ? markerFelt24 : markerFelt32); textObj.position = new Vector(right ? 388 : 7, yPos); textObj.extent = new Vector(212, 14); textObj.text.text = text; textObj.text.textColor = 0xFFFFFF; - textObj.text.filter = new DropShadow(1.414, 0.785, 0x0000000F, 1, 0, 0.4, 1, true); + textObj.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; parent.addChild(textObj); var sliderBar = new GuiImage(ResourceLoader.getResource("data/ui/options/bar.png", ResourceLoader.getImage, this.imageResources).toTile()); @@ -336,8 +356,8 @@ class OptionsDlg extends GuiImage { makeSlider("Field of View:", (Settings.optionsSettings.fovX - 60) / (140 - 60), yPos, generalPanel, (val) -> { Settings.optionsSettings.fovX = cast(60 + val * (140 - 60)); }); - makeSlider("Mouse Speed:", (Settings.controlsSettings.cameraSensitivity - 0.2) / (3 - 0.2), yPos, generalPanel, (val) -> { - Settings.controlsSettings.cameraSensitivity = cast(0.2 + val * (3 - 0.2)); + makeSlider("Mouse Speed:", (Settings.controlsSettings.cameraSensitivity - 0.12) / (1.2 - 0.12), yPos, generalPanel, (val) -> { + Settings.controlsSettings.cameraSensitivity = cast(0.12 + val * (1.2 - 0.12)); }, true); function getConflictingBinding(bindingName:String, key:Int) { @@ -399,7 +419,12 @@ class OptionsDlg extends GuiImage { textObj.extent = new Vector(212, 14); textObj.text.text = text; textObj.text.textColor = 0xFFFFFF; - textObj.text.filter = new DropShadow(1.414, 0.785, 0x0000000F, 1, 0, 0.4, 1, true); + textObj.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; parent.addChild(textObj); var remapBtn = new GuiButtonText(loadButtonImages("data/ui/options/bind"), markerFelt24); @@ -413,49 +438,72 @@ class OptionsDlg extends GuiImage { parent.addChild(remapBtn); } - makeRemapOption("Move Forward:", 38, Util.getKeyForButton2(Settings.controlsSettings.forward), (key) -> Settings.controlsSettings.forward = key, - hotkeysPanel); - makeRemapOption("Move Left:", 38, Util.getKeyForButton2(Settings.controlsSettings.left), (key) -> Settings.controlsSettings.left = key, hotkeysPanel, - true); - makeRemapOption("Move Backward:", 86, Util.getKeyForButton2(Settings.controlsSettings.backward), (key) -> Settings.controlsSettings.backward = key, - hotkeysPanel); - makeRemapOption("Move Right:", 86, Util.getKeyForButton2(Settings.controlsSettings.right), (key) -> Settings.controlsSettings.right = key, - hotkeysPanel, true); - makeRemapOption("Look Up:", 134, Util.getKeyForButton2(Settings.controlsSettings.camForward), (key) -> Settings.controlsSettings.camForward = key, - hotkeysPanel); - makeRemapOption("Look Left:", 134, Util.getKeyForButton2(Settings.controlsSettings.camLeft), (key) -> Settings.controlsSettings.camLeft = key, - hotkeysPanel, true); - makeRemapOption("Look Down:", 182, Util.getKeyForButton2(Settings.controlsSettings.camBackward), (key) -> Settings.controlsSettings.camBackward = key, - hotkeysPanel); - makeRemapOption("Look Right:", 182, Util.getKeyForButton2(Settings.controlsSettings.camRight), (key) -> Settings.controlsSettings.camRight = key, - hotkeysPanel, true); - makeRemapOption("Jump:", 230, Util.getKeyForButton2(Settings.controlsSettings.jump), (key) -> Settings.controlsSettings.jump = key, hotkeysPanel); - makeRemapOption("Use Powerup:", 230, Util.getKeyForButton2(Settings.controlsSettings.powerup), (key) -> Settings.controlsSettings.powerup = key, - hotkeysPanel, true); - makeRemapOption("Free Look:", 278, Util.getKeyForButton2(Settings.controlsSettings.freelook), (key) -> Settings.controlsSettings.freelook = key, - hotkeysPanel); - makeRemapOption("Respawn:", 278, Util.getKeyForButton2(Settings.controlsSettings.respawn), (key) -> Settings.controlsSettings.respawn = key, - hotkeysPanel, true); - makeRemapOption("Blast:", 326, Util.getKeyForButton2(Settings.controlsSettings.blast), (key) -> Settings.controlsSettings.blast = key, hotkeysPanel); - if (Util.isTouchDevice()) { var textObj = new GuiText(markerFelt32); - textObj.position = new Vector(368, 326); + textObj.position = new Vector(5, 38); textObj.extent = new Vector(212, 14); textObj.text.text = "Touch Controls"; textObj.text.textColor = 0xFFFFFF; - textObj.text.filter = new DropShadow(1.414, 0.785, 0x0000000F, 1, 0, 0.4, 1, true); + textObj.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; hotkeysPanel.addChild(textObj); var remapBtn = new GuiButtonText(loadButtonImages("data/ui/options/bind"), markerFelt24); - remapBtn.position = new Vector(363 + 203, 323); + remapBtn.position = new Vector(5 + 203, 35); remapBtn.txtCtrl.text.text = "Edit"; remapBtn.setExtent(new Vector(152, 49)); - remapBtn.pressedAction = (sender) -> { - MarbleGame.canvas.setContent(new TouchCtrlsEditGui()); - } + if (!pause) + remapBtn.pressedAction = (sender) -> { + MarbleGame.canvas.setContent(new TouchCtrlsEditGui()); + } hotkeysPanel.addChild(remapBtn); + + makeOption("Hide Controls:", () -> '${Settings.touchSettings.hideControls ? "Yes" : "No"}', 38, hotkeysPanel, "small", ["No", "Yes"], (idx) -> { + Settings.touchSettings.hideControls = idx == 1; + }, true); + + makeSlider("Button-Camera Factor:", (Settings.touchSettings.buttonJoystickMultiplier) / 3, 86, hotkeysPanel, (val) -> { + Settings.touchSettings.buttonJoystickMultiplier = val * 3; + }, false, true); + + makeSlider("Camera Swipe Extent:", (Settings.touchSettings.cameraSwipeExtent - 5) / (35 - 5), 86, hotkeysPanel, (val) -> { + Settings.touchSettings.cameraSwipeExtent = 5 + (35 - 5) * val; + }, true, true); + + makeOption("Dynamic Joystick:", () -> '${Settings.touchSettings.dynamicJoystick ? "Yes" : "No"}', 134, hotkeysPanel, "small", ["No", "Yes"], + (idx) -> { + Settings.touchSettings.dynamicJoystick = idx == 1; + }, false, true); } else { + makeRemapOption("Move Forward:", 38, Util.getKeyForButton2(Settings.controlsSettings.forward), (key) -> Settings.controlsSettings.forward = key, + hotkeysPanel); + makeRemapOption("Move Left:", 38, Util.getKeyForButton2(Settings.controlsSettings.left), (key) -> Settings.controlsSettings.left = key, + hotkeysPanel, true); + makeRemapOption("Move Backward:", 86, Util.getKeyForButton2(Settings.controlsSettings.backward), + (key) -> Settings.controlsSettings.backward = key, hotkeysPanel); + makeRemapOption("Move Right:", 86, Util.getKeyForButton2(Settings.controlsSettings.right), (key) -> Settings.controlsSettings.right = key, + hotkeysPanel, true); + makeRemapOption("Look Up:", 134, Util.getKeyForButton2(Settings.controlsSettings.camForward), (key) -> Settings.controlsSettings.camForward = key, + hotkeysPanel); + makeRemapOption("Look Left:", 134, Util.getKeyForButton2(Settings.controlsSettings.camLeft), (key) -> Settings.controlsSettings.camLeft = key, + hotkeysPanel, true); + makeRemapOption("Look Down:", 182, Util.getKeyForButton2(Settings.controlsSettings.camBackward), + (key) -> Settings.controlsSettings.camBackward = key, hotkeysPanel); + makeRemapOption("Look Right:", 182, Util.getKeyForButton2(Settings.controlsSettings.camRight), (key) -> Settings.controlsSettings.camRight = key, + hotkeysPanel, true); + makeRemapOption("Jump:", 230, Util.getKeyForButton2(Settings.controlsSettings.jump), (key) -> Settings.controlsSettings.jump = key, hotkeysPanel); + makeRemapOption("Use Powerup:", 230, Util.getKeyForButton2(Settings.controlsSettings.powerup), (key) -> Settings.controlsSettings.powerup = key, + hotkeysPanel, true); + makeRemapOption("Free Look:", 278, Util.getKeyForButton2(Settings.controlsSettings.freelook), (key) -> Settings.controlsSettings.freelook = key, + hotkeysPanel); + makeRemapOption("Respawn:", 278, Util.getKeyForButton2(Settings.controlsSettings.respawn), (key) -> Settings.controlsSettings.respawn = key, + hotkeysPanel, true); + makeRemapOption("Blast:", 326, Util.getKeyForButton2(Settings.controlsSettings.blast), (key) -> Settings.controlsSettings.blast = key, + hotkeysPanel); makeRemapOption("Rewind:", 326, Util.getKeyForButton2(Settings.controlsSettings.rewind), (key) -> Settings.controlsSettings.rewind = key, hotkeysPanel, true); } diff --git a/src/gui/PlayGui.hx b/src/gui/PlayGui.hx index af1c63b4..ef304f24 100644 --- a/src/gui/PlayGui.hx +++ b/src/gui/PlayGui.hx @@ -1,5 +1,7 @@ package gui; +import net.NetPacket.ScoreboardPacket; +import net.Net; import src.ProfilerUI; import hxd.App; import hxd.res.Image; @@ -30,10 +32,26 @@ import hxd.res.Sound; import h3d.mat.Texture; import src.Settings; import src.Util; +import src.AudioManager; -typedef MiddleMessage = { - ctrl:GuiText, - age:Float, +@:publicFields +@:structInit +class MiddleMessage { + var ctrl:GuiText; + var age:Float; +} + +@:publicFields +@:structInit +class PlayerInfo { + var id:Int; + var name:String; + var us:Bool; + var score:Int; + var r:Int; + var y:Int; + var b:Int; + var p:Int; } class PlayGui { @@ -45,6 +63,10 @@ class PlayGui { var timerPoint:GuiAnim; var timerColon:GuiAnim; + var countdownNumbers:Array = []; + var countdownPoint:GuiAnim; + var countdownIcon:GuiImage; + var gemCountNumbers:Array = []; var gemCountSlash:GuiImage; var gemImageScene:h3d.scene.Scene; @@ -58,6 +80,11 @@ class PlayGui { var powerupImageSceneTargetBitmap:Bitmap; var powerupImageObject:DtsObject; + var blastBarTile:h2d.Tile; + var blastBarGreenTile:h2d.Tile; + var blastBarGrayTile:h2d.Tile; + var blastBarChargedTile:h2d.Tile; + var RSGOCenterText:Anim; var helpTextForeground:GuiText; @@ -69,11 +96,20 @@ class PlayGui { var blastFill:GuiImage; var blastFrame:GuiImage; + var playerListContainer:GuiControl; + var playerListCtrl:GuiMLTextListCtrl; + var playerListScoresCtrl:GuiMLTextListCtrl; + var playerList:Array = []; + var imageResources:Array> = []; var textureResources:Array> = []; var soundResources:Array> = []; var playGuiCtrl:GuiControl; + var chatCtrl:ChatCtrl; + var spectatorCtrl:GuiControl; + var spectatorTxt:GuiMLText; + var spectatorTxtMode:Int = -1; var resizeEv:Void->Void; @@ -86,6 +122,26 @@ class PlayGui { public function dispose() { if (_init) { playGuiCtrl.dispose(); + + if (playerListContainer != null) { + playerListContainer.dispose(); + playerListContainer = null; + playerListCtrl.dispose(); + playerListCtrl = null; + playerListScoresCtrl.dispose(); + playerListScoresCtrl = null; + } + + if (chatCtrl != null) { + chatCtrl.dispose(); + chatCtrl = null; + } + + if (spectatorCtrl != null) { + spectatorCtrl.dispose(); + spectatorCtrl = null; + } + gemImageScene.dispose(); gemImageSceneTarget.dispose(); gemImageSceneTargetBitmap.remove(); @@ -136,6 +192,12 @@ class PlayGui { timerNumbers.push(new GuiAnim(numberTiles)); } + if (MarbleGame.instance.world.isMultiplayer) { + for (i in 0...3) { + countdownNumbers.push(new GuiAnim(numberTiles)); + } + } + for (i in 0...6) { gemCountNumbers.push(new GuiAnim(numberTiles)); } @@ -150,29 +212,39 @@ class PlayGui { powerupBox = new GuiImage(ResourceLoader.getResource('data/ui/game/powerup.png', ResourceLoader.getImage, this.imageResources).toTile()); initTimer(); initGemCounter(() -> { + initCenterText(); + initPowerupBox(); + if (game == 'ultra' || Net.isMP) + initBlastBar(); + initTexts(); + if (Settings.optionsSettings.frameRateVis) + initFPSMeter(); + + if (MarbleGame.instance.world.isMultiplayer) { + initPlayerList(); + initChatHud(); + if (Net.hostSpectate || Net.clientSpectate) + initSpectatorMenu(); + + initGemCountdownTimer(); + } + + if (Util.isTouchDevice()) { + MarbleGame.instance.touchInput.showControls(this.playGuiCtrl, game == 'ultra' || MarbleGame.instance.world.isMultiplayer); + } + + playGuiCtrl.render(scene2d); + + resizeEv = () -> { + var wnd = Window.getInstance(); + playGuiCtrl.render(MarbleGame.canvas.scene2d); + powerupImageSceneTargetBitmap.x = wnd.width - 88; + }; + + Window.getInstance().addResizeEvent(resizeEv); + onFinish(); }); - initCenterText(); - initPowerupBox(); - if (game == 'ultra') - initBlastBar(); - initTexts(); - if (Settings.optionsSettings.frameRateVis) - initFPSMeter(); - - if (Util.isTouchDevice()) { - MarbleGame.instance.touchInput.showControls(this.playGuiCtrl, game == 'ultra'); - } - - playGuiCtrl.render(scene2d); - - resizeEv = () -> { - var wnd = Window.getInstance(); - playGuiCtrl.render(MarbleGame.canvas.scene2d); - powerupImageSceneTargetBitmap.x = wnd.width - 88; - }; - - Window.getInstance().addResizeEvent(resizeEv); } public function initTimer() { @@ -241,6 +313,44 @@ class PlayGui { playGuiCtrl.addChild(timerCtrl); } + public function initGemCountdownTimer() { + var timerCtrl = new GuiControl(); + timerCtrl.horizSizing = HorizSizing.Center; + timerCtrl.position = new Vector(215, 1); + timerCtrl.extent = new Vector(374, 58); + + countdownNumbers[0].position = new Vector(33, 10); + countdownNumbers[0].extent = new Vector(28, 37); + + countdownNumbers[1].position = new Vector(49, 10); + countdownNumbers[1].extent = new Vector(28, 37); + + var pointCols = [ + ResourceLoader.getResource('data/ui/game/numbers/point.png', ResourceLoader.getImage, this.imageResources).toTile(), + ResourceLoader.getResource('data/ui/game/numbers/point_green.png', ResourceLoader.getImage, this.imageResources).toTile(), + ResourceLoader.getResource('data/ui/game/numbers/point_red.png', ResourceLoader.getImage, this.imageResources).toTile() + ]; + + countdownPoint = new GuiAnim(pointCols); + countdownPoint.position = new Vector(59, 10); + countdownPoint.extent = new Vector(28, 37); + + countdownNumbers[2].position = new Vector(70, 10); + countdownNumbers[2].extent = new Vector(28, 37); + + countdownIcon = new GuiImage(ResourceLoader.getResource("data/ui/game/timerhuntrespawn.png", ResourceLoader.getImage, this.imageResources).toTile()); + countdownIcon.position = new Vector(0, 10); + countdownIcon.extent = new Vector(36, 36); + + timerCtrl.addChild(countdownIcon); + timerCtrl.addChild(countdownNumbers[0]); + timerCtrl.addChild(countdownNumbers[1]); + timerCtrl.addChild(countdownPoint); + timerCtrl.addChild(countdownNumbers[2]); + + playGuiCtrl.addChild(timerCtrl); + } + public function initCenterText() { RSGOCenterText.x = scene2d.width / 2 - RSGOCenterText.frames[0].width * Settings.uiScale / 2; RSGOCenterText.y = scene2d.height * 0.3; // - RSGOCenterText.frames[0].height / 2; @@ -269,6 +379,23 @@ class PlayGui { } } + public function doStateChangeSound(state:String) { + static var curState = "none"; + if (curState != state) { + if (state == "ready") { + AudioManager.playSound(ResourceLoader.getResource('data/sound/ready.wav', ResourceLoader.getAudio, @:privateAccess this.soundResources)); + } + if (state == "set") { + AudioManager.playSound(ResourceLoader.getResource('data/sound/set.wav', ResourceLoader.getAudio, @:privateAccess this.soundResources)); + } + if (state == "go") { + AudioManager.playSound(ResourceLoader.getResource('data/sound/go.wav', ResourceLoader.getAudio, @:privateAccess this.soundResources)); + } + } + + curState = state; + } + public function initGemCounter(onFinish:Void->Void) { gemCountNumbers[0].position = new Vector(30, 0); gemCountNumbers[0].extent = new Vector(43, 55); @@ -317,6 +444,9 @@ class PlayGui { var GEM_COLORS = ["blue", "red", "yellow", "purple", "green", "turquoise", "orange", "black"]; var gemColor = GEM_COLORS[Math.floor(Math.random() * GEM_COLORS.length)]; + if (MarbleGame.instance.world.mission.missionInfo.game == "PlatinumQuest") + gemColor = "platinum"; + gemImageObject = new DtsObject(); gemImageObject.dtsPath = "data/shapes/items/gem.dts"; gemImageObject.ambientRotate = true; @@ -452,6 +582,22 @@ class PlayGui { playGuiCtrl.addChild(fpsMeterCtrl); } + public function initChatHud() { + this.chatCtrl = new ChatCtrl(); + this.chatCtrl.position = new Vector(playGuiCtrl.extent.x - 201, 150); + this.chatCtrl.extent = new Vector(200, 250); + this.chatCtrl.horizSizing = Left; + this.playGuiCtrl.addChild(chatCtrl); + } + + public inline function isChatFocused() { + return this.chatCtrl?.chatFocused; + } + + public inline function addChatMessage(str:String) { + this.chatCtrl.addChatMessage(str); + } + function initBlastBar() { blastBar = new GuiControl(); blastBar.position = new Vector(6, 445); @@ -468,31 +614,340 @@ class PlayGui { blastFrame.position = new Vector(0, 0); blastFrame.extent = new Vector(120, 28); blastBar.addChild(blastFrame); + + blastBarTile = ResourceLoader.getResource("data/ui/game/blastbar.png", ResourceLoader.getImage, this.imageResources).toTile(); + blastBarGreenTile = ResourceLoader.getResource("data/ui/game/blastbar_bargreen.png", ResourceLoader.getImage, this.imageResources).toTile(); + blastBarGrayTile = ResourceLoader.getResource("data/ui/game/blastbar_bargray.png", ResourceLoader.getImage, this.imageResources).toTile(); + blastBarChargedTile = ResourceLoader.getResource("data/ui/game/blastbar_charged.png", ResourceLoader.getImage, this.imageResources).toTile(); } public function setBlastValue(value:Float) { + if (Net.clientSpectate || Net.hostSpectate) { + MarbleGame.instance.touchInput.blastbutton.setEnabled(true); + return; // Is not changed + } if (value <= 1) { if (blastFill.extent.y == 16) { // Was previously charged - blastFrame.bmp.tile = ResourceLoader.getResource("data/ui/game/blastbar.png", ResourceLoader.getImage, this.imageResources).toTile(); + blastFrame.bmp.tile = blastBarTile; } var oldVal = blastFill.extent.x; blastFill.extent = new Vector(Util.lerp(0, 110, value), 17); if (oldVal < 22 && blastFill.extent.x >= 22) { - blastFill.bmp.tile = ResourceLoader.getResource("data/ui/game/blastbar_bargreen.png", ResourceLoader.getImage, this.imageResources).toTile(); + blastFill.bmp.tile = blastBarGreenTile; MarbleGame.instance.touchInput.blastbutton.setEnabled(true); } if (oldVal >= 22 && blastFill.extent.x < 22) { - blastFill.bmp.tile = ResourceLoader.getResource("data/ui/game/blastbar_bargray.png", ResourceLoader.getImage, this.imageResources).toTile(); + blastFill.bmp.tile = blastBarGrayTile; MarbleGame.instance.touchInput.blastbutton.setEnabled(false); } } else { blastFill.extent = new Vector(0, 16); // WE will just use this extra number to store whether it was previously charged or not - blastFrame.bmp.tile = ResourceLoader.getResource("data/ui/game/blastbar_charged.png", ResourceLoader.getImage, this.imageResources).toTile(); + blastFrame.bmp.tile = blastBarChargedTile; MarbleGame.instance.touchInput.blastbutton.setEnabled(true); } this.blastBar.render(scene2d); } + function initPlayerList() { + var domcasual32fontdata = ResourceLoader.getFileEntry("data/font/DomCasualD.fnt"); + var domcasual32b = new BitmapFont(domcasual32fontdata.entry); + @:privateAccess domcasual32b.loader = ResourceLoader.loader; + var bfont = domcasual32b.toSdfFont(cast 26 * Settings.uiScale, MultiChannel); + + playerListContainer = new GuiControl(); + playerListContainer.horizSizing = Right; + playerListContainer.vertSizing = Height; + playerListContainer.position = new Vector(20, 100); + playerListContainer.extent = new Vector(380, 380); + this.playGuiCtrl.addChild(playerListContainer); + + var imgLoader = (s:String) -> { + var t = switch (s) { + case "high": + ResourceLoader.getResource("data/ui/mp/play/connection-high.png", ResourceLoader.getImage, this.imageResources).toTile(); + case "medium": + ResourceLoader.getResource("data/ui/mp/play/connection-medium.png", ResourceLoader.getImage, this.imageResources).toTile(); + case "low": + ResourceLoader.getResource("data/ui/mp/play/connection-low.png", ResourceLoader.getImage, this.imageResources).toTile(); + case "matanny": + ResourceLoader.getResource("data/ui/mp/play/connection-matanny.png", ResourceLoader.getImage, this.imageResources).toTile(); + case "unknown": + ResourceLoader.getResource("data/ui/mp/play/connection-unknown.png", ResourceLoader.getImage, this.imageResources).toTile(); + default: + null; + }; + if (t != null) + t.scaleToSize(t.width * (Settings.uiScale), t.height * (Settings.uiScale)); + return t; + } + + playerListCtrl = new GuiMLTextListCtrl(bfont, [], imgLoader, { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + color: 0, + alpha: 1 + }); + + playerListCtrl.position = new Vector(33, 3); + playerListCtrl.extent = new Vector(210, 271); + playerListCtrl.scrollable = true; + playerListCtrl.onSelectedFunc = (sel) -> {} + playerListContainer.addChild(playerListCtrl); + + playerListScoresCtrl = new GuiMLTextListCtrl(bfont, [], imgLoader, { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + color: 0, + alpha: 1 + }); + + playerListScoresCtrl.position = new Vector(233, 3); + playerListScoresCtrl.extent = new Vector(280, 271); + playerListScoresCtrl.scrollable = true; + playerListScoresCtrl.onSelectedFunc = (sel) -> {} + playerListContainer.addChild(playerListScoresCtrl); + } + + public function redrawPlayerList() { + var pl = []; + var plScores = []; + var col0 = "#CFB52B"; + var col1 = "#CDCDCD"; + var col2 = "#D19275"; + var col3 = "#FFEE99"; + var prevLead = playerList[0].us; + playerList.sort((a, b) -> a.score > b.score ? -1 : (a.score < b.score ? 1 : 0)); + for (i in 0...playerList.length) { + var item = playerList[i]; + var color = switch (i) { + case 0: + col0; + case 1: + col1; + case 2: + col2; + default: + col3; + }; + var isSpectating = false; + if (item.us) { + if (Net.isHost) + isSpectating = Net.hostSpectate; + if (Net.isClient) + isSpectating = Net.clientSpectate; + } else { + isSpectating = Net.clientIdMap[item.id].spectator; + } + pl.push('${i + 1}. ${isSpectating ? "[S] " : ""}${Util.rightPad(item.name, 25, 3)}'); + var connPing = item.us ? (Net.isHost ? 0 : Net.clientConnection.pingTicks) : (item.id == 0 ? 0 : Net.clientIdMap[item.id].pingTicks); + var pingStatus = "unknown"; + if (connPing <= 5) + pingStatus = "high"; + else if (connPing <= 8) + pingStatus = "medium"; + else if (connPing <= 16) + pingStatus = "low"; + else if (connPing < 32) + pingStatus = "matanny"; + plScores.push('${item.score}'); + } + playerListCtrl.setTexts(pl); + playerListScoresCtrl.setTexts(plScores); + + if ((playerList[0].us && !prevLead)) { + gemCountNumbers[0].anim.currentFrame += 10; + gemCountNumbers[1].anim.currentFrame += 10; + gemCountNumbers[2].anim.currentFrame += 10; + } + if (prevLead && !playerList[0].us) { + gemCountNumbers[0].anim.currentFrame -= 10; + gemCountNumbers[1].anim.currentFrame -= 10; + gemCountNumbers[2].anim.currentFrame -= 10; + } + } + + public function addPlayer(id:Int, name:String, us:Bool) { + if (playerListCtrl != null) { + playerList.push({ + id: id, + name: name, + us: us, + score: 0, + r: 0, + y: 0, + b: 0, + p: 0 + }); + redrawPlayerList(); + } + } + + public function removePlayer(id:Int) { + if (playerListCtrl != null) { + var f = playerList.filter(x -> x.id == id); + if (f.length != 0) + playerList.remove(f[0]); + redrawPlayerList(); + } + } + + public function incrementPlayerScore(id:Int, score:Int) { + var f = playerList.filter(x -> x.id == id); + if (f.length != 0) { + f[0].score += score; + if (score == 1) { + f[0].r += 1; + } + if (score == 2) { + f[0].y += 1; + } + if (score == 5) { + f[0].b += 1; + } + if (score == 10) { + f[0].p += 1; + } + if (f[0].us && Net.isClient) { + @:privateAccess formatGemHuntCounter(f[0].score); + } + } + + if (id == Net.clientId) { + if (Net.isClient) + AudioManager.playSound(ResourceLoader.getResource('data/sound/gotgem.wav', ResourceLoader.getAudio, this.soundResources)); + } else if (Net.isClient) + AudioManager.playSound(ResourceLoader.getResource('data/sound/opponentdiamond.wav', ResourceLoader.getAudio, this.soundResources)); + + redrawPlayerList(); + } + + public function updatePlayerScores(scoreboardPacket:ScoreboardPacket) { + for (player in playerList) { + player.score = scoreboardPacket.scoreBoard.exists(player.id) ? scoreboardPacket.scoreBoard.get(player.id) : 0; + player.r = scoreboardPacket.rBoard.exists(player.id) ? scoreboardPacket.rBoard.get(player.id) : 0; + player.y = scoreboardPacket.yBoard.exists(player.id) ? scoreboardPacket.yBoard.get(player.id) : 0; + player.b = scoreboardPacket.bBoard.exists(player.id) ? scoreboardPacket.bBoard.get(player.id) : 0; + player.p = scoreboardPacket.pBoard.exists(player.id) ? scoreboardPacket.pBoard.get(player.id) : 0; + } + redrawPlayerList(); + } + + public function resetPlayerScores() { + for (player in playerList) { + player.score = 0; + } + + redrawPlayerList(); + } + + public function initSpectatorMenu() { + spectatorCtrl = new GuiControl(); + spectatorCtrl.vertSizing = Top; + spectatorCtrl.position = new Vector(0, 330); + spectatorCtrl.extent = new Vector(302, 150); + + var specWnd = new GuiImage(ResourceLoader.getResource("data/ui/mp/play/spectator.png", ResourceLoader.getImage, this.imageResources).toTile()); + specWnd.horizSizing = Width; + specWnd.vertSizing = Top; + specWnd.position = new Vector(0, 0); + specWnd.extent = new Vector(302, 150); + + spectatorCtrl.addChild(specWnd); + + var domcasual24fontdata = ResourceLoader.getFileEntry("data/font/DomCasualD.fnt"); + var domcasual24b = new BitmapFont(domcasual24fontdata.entry); + @:privateAccess domcasual24b.loader = ResourceLoader.loader; + var domcasual24 = domcasual24b.toSdfFont(cast 20 * Settings.uiScale, MultiChannel); + + var domcasual32 = domcasual24b.toSdfFont(cast 26 * Settings.uiScale, MultiChannel); + + var arial14fontdata = ResourceLoader.getFileEntry("data/font/arial.fnt"); + var arial14b = new BitmapFont(arial14fontdata.entry); + @:privateAccess arial14b.loader = ResourceLoader.loader; + var arial14 = arial14b.toSdfFont(cast 12 * Settings.uiScale, MultiChannel); + + var arialb14fontdata = ResourceLoader.getFileEntry("data/font/Arial Bold.fnt"); + var arialb14b = new BitmapFont(arialb14fontdata.entry); + @:privateAccess arialb14b.loader = ResourceLoader.loader; + var arialBold14 = arialb14b.toSdfFont(cast 12 * Settings.uiScale, MultiChannel); + + var markerFelt32fontdata = ResourceLoader.getFileEntry("data/font/MarkerFelt.fnt"); + var markerFelt32b = new BitmapFont(markerFelt32fontdata.entry); + @:privateAccess markerFelt32b.loader = ResourceLoader.loader; + var markerFelt32 = markerFelt32b.toSdfFont(cast 26 * Settings.uiScale, MultiChannel); + var markerFelt24 = markerFelt32b.toSdfFont(cast 20 * Settings.uiScale, MultiChannel); + var markerFelt20 = markerFelt32b.toSdfFont(cast 18.5 * Settings.uiScale, MultiChannel); + var markerFelt18 = markerFelt32b.toSdfFont(cast 17 * Settings.uiScale, MultiChannel); + var markerFelt26 = markerFelt32b.toSdfFont(cast 22 * Settings.uiScale, MultiChannel); + + function mlFontLoader(text:String) { + switch (text) { + case "DomCasual24": + return domcasual24; + case "Arial14": + return arial14; + case "ArialBold14": + return arialBold14; + case "MarkerFelt32": + return markerFelt32; + case "MarkerFelt24": + return markerFelt24; + case "MarkerFelt18": + return markerFelt18; + case "MarkerFelt20": + return markerFelt20; + case "MarkerFelt26": + return markerFelt26; + default: + return null; + } + } + + spectatorTxt = new GuiMLText(markerFelt24, mlFontLoader); + spectatorTxt.position = new Vector(6, 9); + spectatorTxt.extent = new Vector(282, 14); + spectatorTxt.text.textColor = 0x000000; + + specWnd.addChild(spectatorTxt); + playGuiCtrl.addChild(spectatorCtrl); + } + + public function setSpectateMenu(enabled:Bool) { + if (enabled && spectatorCtrl == null) { + initSpectatorMenu(); + spectatorCtrl.render(MarbleGame.canvas.scene2d, @:privateAccess playGuiCtrl._flow); + blastFill.bmp.visible = false; + blastFrame.bmp.visible = false; + return true; + } + if (!enabled && spectatorCtrl != null) { + spectatorCtrl.dispose(); + spectatorCtrl = null; + blastFill.bmp.visible = true; + blastFrame.bmp.visible = true; + spectatorTxtMode = -1; + return true; + } + return false; + } + + public function setSpectateMenuText(mode:Int) { + if (spectatorTxtMode != mode) { + if (mode == 0) { + spectatorTxt.text.text = '

Spectator Info

+ Toggle Fly / Orbit: ${Util.getKeyForButton2(Settings.controlsSettings.blast)}'; + } + if (mode == 1) { + spectatorTxt.text.text = '

Spectator Info

+ Toggle Fly / Orbit: ${Util.getKeyForButton2(Settings.controlsSettings.blast)} +
Prev Player: ${Util.getKeyForButton2(Settings.controlsSettings.left)} +
Next Player: ${Util.getKeyForButton2(Settings.controlsSettings.right)}
'; + } + + spectatorTxtMode = mode; + } + } + public function setHelpTextOpacity(value:Float) { @:privateAccess helpTextForeground.text._textColorVec.a = value; @:privateAccess helpTextBackground.text._textColorVec.a = value; @@ -568,6 +1023,8 @@ class PlayGui { } public function formatGemCounter(collected:Int, total:Int) { + if (MarbleGame.instance.world.isMultiplayer) + return; if (total == 0) { for (number in gemCountNumbers) { number.anim.visible = false; @@ -598,6 +1055,33 @@ class PlayGui { gemCountNumbers[5].anim.currentFrame = totalOnes; } + public function formatGemHuntCounter(collected:Int) { + var collectedHundredths = Math.floor(collected / 100); + var collectedTenths = Math.floor(collected / 10) % 10; + var collectedOnes = collected % 10; + + if (collected >= 100) + gemCountNumbers[0].anim.visible = true; + else + gemCountNumbers[0].anim.visible = false; + if (collected >= 10) + gemCountNumbers[1].anim.visible = true; + else + gemCountNumbers[1].anim.visible = false; + gemCountNumbers[2].anim.visible = true; + gemCountNumbers[3].anim.visible = false; + gemCountNumbers[4].anim.visible = false; + gemCountNumbers[5].anim.visible = false; + + var off = playerList[0].us ? 10 : 0; + + gemCountNumbers[0].anim.currentFrame = off + collectedHundredths; + gemCountNumbers[1].anim.currentFrame = off + collectedTenths; + gemCountNumbers[2].anim.currentFrame = off + collectedOnes; + gemCountSlash.bmp.visible = false; + gemImageSceneTargetBitmap.visible = true; + } + // 0: default // 1: green // 2: red @@ -628,6 +1112,44 @@ class PlayGui { timerColon.anim.currentFrame = color; } + public function formatCountdownTimer(time:Float, color:Int = 0) { + if (time == 0) { + countdownNumbers[0].anim.visible = false; + countdownNumbers[1].anim.visible = false; + countdownNumbers[2].anim.visible = false; + countdownPoint.anim.visible = false; + countdownIcon.bmp.visible = false; + } else { + countdownNumbers[0].anim.visible = true; + countdownNumbers[1].anim.visible = true; + countdownNumbers[2].anim.visible = true; + countdownPoint.anim.visible = true; + countdownIcon.bmp.visible = true; + } + + var et = time * 1000; + var hundredth = Math.floor((et % 1000) / 10); + var totalSeconds = Math.floor(et / 1000); + var seconds = totalSeconds % 60; + + var secondsOne = seconds % 10; + var secondsTen = (seconds - secondsOne) / 10; + var hundredthOne = hundredth % 10; + var hundredthTen = (hundredth - hundredthOne) / 10; + + if (secondsTen > 0) { + countdownNumbers[0].anim.visible = true; + countdownNumbers[0].anim.currentFrame = secondsTen + color * 10; + } else { + countdownNumbers[0].anim.visible = false; + } + + countdownNumbers[1].anim.currentFrame = secondsOne + color * 10; + countdownNumbers[2].anim.currentFrame = hundredthTen + color * 10; + + countdownPoint.anim.currentFrame = color; + } + public function render(engine:h3d.Engine) { engine.pushTarget(this.gemImageSceneTarget); @@ -654,6 +1176,9 @@ class PlayGui { this.fpsMeter.text.text = '${Math.floor(ProfilerUI.instance.fps)} fps'; } this.updateMiddleMessages(timeState.dt); + if (Net.isMP) { + this.chatCtrl.updateChat(timeState.dt); + } } function updateMiddleMessages(dt:Float) { @@ -674,6 +1199,8 @@ class PlayGui { } public function addMiddleMessage(text:String, color:Int) { + if (this.middleMessages.length > 10) + return; var markerFelt32fontdata = ResourceLoader.getFileEntry("data/font/MarkerFelt.fnt"); var markerFelt32b = new BitmapFont(markerFelt32fontdata.entry); @:privateAccess markerFelt32b.loader = ResourceLoader.loader; @@ -687,9 +1214,14 @@ class PlayGui { middleMsg.text.text = text; middleMsg.justify = Center; middleMsg.text.textColor = color; - middleMsg.text.filter = new h2d.filter.DropShadow(1.414, 0.785, 0x000000F, 1, 0, 0.4, 1, true); + middleMsg.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; // new h2d.filter.DropShadow(1.414, 0.785, 0x000000F, 1, 0, 0.4, 1, true); this.playGuiCtrl.addChild(middleMsg); - middleMsg.render(scene2d); + middleMsg.render(scene2d, @:privateAccess this.playGuiCtrl._flow); middleMsg.text.y -= (25 / playGuiCtrl.extent.y) * scene2d.height; this.middleMessages.push({ctrl: middleMsg, age: 0}); diff --git a/src/gui/PlayMissionGui.hx b/src/gui/PlayMissionGui.hx index 693b3f18..fa01e92a 100644 --- a/src/gui/PlayMissionGui.hx +++ b/src/gui/PlayMissionGui.hx @@ -24,6 +24,7 @@ import src.ResourceLoader; import h3d.Vector; import src.Util; import src.MarbleGame; +import src.MissionList; class PlayMissionGui extends GuiImage { static var currentSelectionStatic:Int = -1; @@ -891,8 +892,12 @@ class PlayMissionGui extends GuiImage { setScoreHover = (isHover) -> { var currentMission = currentList[currentSelection]; - pmScoreText.text.filter = new DropShadow(1.414, 0.785, 0x0000000F, 1, 0, 0.4, 1, true); - + pmScoreText.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; var scoreTextTime = ""; var scoreData = Settings.getScores(currentMission.path); if (scoreData.length == 0) { @@ -981,10 +986,20 @@ class PlayMissionGui extends GuiImage { currentSelection = -1; } - pmDescription.text.filter = new DropShadow(1.414, 0.785, 0x0000000F, 1, 0, 0.4, 1, true); + pmDescription.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; pmDescription.text.lineSpacing = -1; - pmDescriptionRight.text.filter = new DropShadow(1.414, 0.785, 0x0000000F, 1, 0, 0.4, 1, true); + pmDescriptionRight.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; pmDescriptionRight.text.lineSpacing = -1; var descText = '

#${currentList.indexOf(currentMission) + 1}: ${currentMission.title}

'; @@ -1024,8 +1039,18 @@ class PlayMissionGui extends GuiImage { } pmDescription.text.text = descText; - pmParText.text.filter = new DropShadow(1.414, 0.785, 0x0000000F, 1, 0, 0.4, 1, true); - pmParTextRight.text.filter = new DropShadow(1.414, 0.785, 0x0000000F, 1, 0, 0.4, 1, true); + pmParText.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; + pmParTextRight.text.dropShadow = { + dx: 1 * Settings.uiScale, + dy: 1 * Settings.uiScale, + alpha: 0.5, + color: 0 + }; if (this.scoreShowing) { if (currentMission.game == "platinum") { pmParText.text.text = 'Platinum: ${Util.formatTime(currentMission.goldTime)}'; diff --git a/src/gui/ReplayCenterGui.hx b/src/gui/ReplayCenterGui.hx index 90f62447..dc8139af 100644 --- a/src/gui/ReplayCenterGui.hx +++ b/src/gui/ReplayCenterGui.hx @@ -10,6 +10,7 @@ import h3d.Vector; import src.Util; import src.MarbleGame; import src.Settings; +import src.MissionList; class ReplayCenterGui extends GuiImage { public function new() { diff --git a/src/gui/SearchGui.hx b/src/gui/SearchGui.hx index a608c35a..66c7c893 100644 --- a/src/gui/SearchGui.hx +++ b/src/gui/SearchGui.hx @@ -8,6 +8,7 @@ import hxd.res.BitmapFont; import h3d.Vector; import src.ResourceLoader; import src.Settings; +import src.MissionList; class SearchGui extends GuiImage { public function new(game:String, isCustom:Bool) { diff --git a/src/gui/StatisticsGui.hx b/src/gui/StatisticsGui.hx index 556814b2..6f2d709f 100644 --- a/src/gui/StatisticsGui.hx +++ b/src/gui/StatisticsGui.hx @@ -8,6 +8,7 @@ import src.Settings; import src.Settings.PlayStatistics; import src.Mission; import src.Util; +import src.MissionList; class StatisticsGui extends GuiImage { public function new(game:String) { diff --git a/src/gui/VersionGui.hx b/src/gui/VersionGui.hx index e2c7b9e4..9910ac0e 100644 --- a/src/gui/VersionGui.hx +++ b/src/gui/VersionGui.hx @@ -89,4 +89,18 @@ class VersionGui extends GuiImage { }); scrollCtrl.addChild(changelogContent); } + + public static function checkVersion() { + Http.get("https://raw.githubusercontent.com/RandomityGuy/MBHaxe/master/CHANGELOG.md", (res) -> { + var mdtext = res.toString(); + var firstline = mdtext.split("\n")[0]; + firstline = StringTools.replace(firstline, "#", ""); + firstline = StringTools.trim(firstline); + if (firstline != MarbleGame.currentVersion) { + // We need to update lol + var mbo = new MessageBoxOkDlg("New version available! Please update your game."); + MarbleGame.canvas.pushDialog(mbo); + } + }, (e) -> {}); + } } diff --git a/src/mis/MisParser.hx b/src/mis/MisParser.hx index e20a9137..fd1c0b9a 100644 --- a/src/mis/MisParser.hx +++ b/src/mis/MisParser.hx @@ -68,13 +68,13 @@ class MisParser { startText = marbleAttributesRegEx.matchedRight(); } - var activatedPackages = []; + // var activatedPackages = []; startText = outsideText; - while (activatePackageRegEx.match(startText)) { - activatedPackages.push(this.resolveExpression(activatePackageRegEx.matched(1))); - startText = marbleAttributesRegEx.matchedRight(); - } + // while (activatePackageRegEx.match(startText)) { + // activatedPackages.push(this.resolveExpression(activatePackageRegEx.matched(1))); + // startText = marbleAttributesRegEx.matchedRight(); + // } if (objectWriteBeginIndex != -1 && objectWriteEndIndex != -1) { this.text = this.text.substring(objectWriteBeginIndex, objectWriteEndIndex); @@ -99,11 +99,11 @@ class MisParser { else if (!lineMatch || (blockMatch && lineMatch && blockCommentRegEx.matchedPos().pos < lineCommentRegEx.matchedPos().pos)) { this.text = this.text.substring(0, blockCommentRegEx.matchedPos().pos) + this.text.substring(blockCommentRegEx.matchedPos().pos + blockCommentRegEx.matchedPos().len); - currentIndex += blockCommentRegEx.matchedPos().pos; + currentIndex = blockCommentRegEx.matchedPos().pos + blockCommentRegEx.matchedPos().len; } else { this.text = this.text.substring(0, lineCommentRegEx.matchedPos().pos) + this.text.substring(lineCommentRegEx.matchedPos().pos + lineCommentRegEx.matchedPos().len); - currentIndex += lineCommentRegEx.matchedPos().pos; + currentIndex = lineCommentRegEx.matchedPos().pos + lineCommentRegEx.matchedPos().len; } } @@ -127,7 +127,6 @@ class MisParser { var mf = new MisFile(); mf.root = cast elements[0]; mf.marbleAttributes = marbleAttributes; - mf.activatedPackages = activatedPackages; return mf; } @@ -247,14 +246,21 @@ class MisParser { var openingIndex = key.indexOf('['); var arrayName = key.substring(0, openingIndex); var array:Array; + var indexToken = key.substring(openingIndex + 1, key.indexOf("]")); if (obj.exists(arrayName)) array = obj.get(arrayName); else { array = []; obj.set(arrayName, array); } // Create a new array or use the existing one - var index = Std.parseInt(key.substring(openingIndex + 1, -1)); - array[index] = this.resolveExpression(parts[1]); + if (~/[0-9]+/.match(indexToken)) { + var index = Std.parseInt(indexToken); + array[index] = this.resolveExpression(parts[1]); + } else { + // Not a numeric indexer + indexToken = StringTools.trim(StringTools.replace(indexToken, "\"", "")); + obj.set(arrayName + indexToken, [this.resolveExpression(parts[1])]); + } } else { obj.set(key, [this.resolveExpression(parts[1])]); } @@ -287,13 +293,30 @@ class MisParser { function readPath(name:String) { var sg:MissionElementSimGroup = cast this.readSimGroup(name); - var obj = new MissionElementPath(); - obj._type = MissionElementType.Path; - obj._name = name; - obj.markers = sg.elements.map(x -> cast x); - obj.markers.sort((a, b) -> cast MisParser.parseNumber(a.seqnum) - MisParser.parseNumber(b.seqnum)); + var allMarkers = true; + // Verify if they are all markers + for (e in sg.elements) { + if (e._type != MissionElementType.Marker) { + allMarkers = false; + break; + } + } + if (allMarkers) { + var obj = new MissionElementPath(); + obj._type = MissionElementType.Path; + obj._name = name; + obj.markers = sg.elements.map(x -> cast x); + obj.markers.sort((a, b) -> cast MisParser.parseNumber(a.seqnum) - MisParser.parseNumber(b.seqnum)); - return obj; + return obj; + } else { + var obj = new MissionElementPath(); + obj._type = MissionElementType.Path; + obj._name = name; + obj.markers = sg.elements.filter(x -> x._type == MissionElementType.Marker).map(x -> cast x); + obj.markers.sort((a, b) -> cast MisParser.parseNumber(a.seqnum) - MisParser.parseNumber(b.seqnum)); + return obj; + } } /** Resolves a TorqueScript rvalue expression. Currently only supports the concatenation @ operator. */ diff --git a/src/mis/MissionElement.hx b/src/mis/MissionElement.hx index 2b3a0b5c..56e76291 100644 --- a/src/mis/MissionElement.hx +++ b/src/mis/MissionElement.hx @@ -58,6 +58,20 @@ class MissionElementScriptObject extends MissionElementBase { var music:String; var alarmstarttime:String; var game:String; + var gamemode:String; + var maxgemsperspawn:String; + var radiusfromgem:String; + var spawnblock:String; + var overviewwidth:String; + var overviewheight:String; + var spawnchancered:String; + var spawnchanceyellow:String; + var spawnchanceblue:String; + var spawnchanceplatinum:String; + var redspawnchance:String; + var yellowspawnchance:String; + var bluespawnchance:String; + var platinumspawnchance:String; public function new() { _type = MissionElementType.ScriptObject; @@ -248,6 +262,7 @@ class MissionElementTrigger extends MissionElementBase { var keepangular:Null; var keepcamera:Null; var camerayaw:Null; + var g:Null; public function new() { _type = MissionElementType.Trigger; diff --git a/src/modes/GameMode.hx b/src/modes/GameMode.hx new file mode 100644 index 00000000..b4c6c6a5 --- /dev/null +++ b/src/modes/GameMode.hx @@ -0,0 +1,45 @@ +package modes; + +import src.TimeState; +import src.Marble; +import shapes.Gem; +import h3d.Quat; +import h3d.Vector; +import src.MarbleWorld; +import src.Mission; +import src.Marble; + +enum ScoreType { + Time; + Score; +} + +interface GameMode { + public function getSpawnTransform():{position:Vector, orientation:Quat, up:Vector}; + public function getRespawnTransform(marble:Marble):{position:Vector, orientation:Quat, up:Vector}; + public function missionScan(mission:Mission):Void; + public function onMissionLoad():Void; + public function getStartTime():Float; + public function timeMultiplier():Float; + public function getScoreType():ScoreType; + public function getFinishScore():Float; + public function onTimeExpire():Void; + public function onRestart():Void; + public function onClientRestart():Void; + public function onRespawn(marble:Marble):Void; + public function onGemPickup(marble:Marble, gem:Gem):Void; + public function update(t:TimeState):Void; + + public function getPreloadFiles():Array; +} + +class GameModeFactory { + public static function getGameMode(level:MarbleWorld, mode:String):GameMode { + if (mode != null) { + if (mode.toLowerCase() == "hunt") { + return new HuntMode(level); + } + } + return new NullMode(level); + } +} diff --git a/src/modes/HuntMode.hx b/src/modes/HuntMode.hx new file mode 100644 index 00000000..66ec0058 --- /dev/null +++ b/src/modes/HuntMode.hx @@ -0,0 +1,750 @@ +package modes; + +import gui.MPEndGameGui; +import net.NetCommands; +import net.BitStream.OutputBitStream; +import net.NetPacket.GemPickupPacket; +import net.NetPacket.GemSpawnPacket; +import octree.IOctreeObject; +import octree.IOctreeObject.RayIntersectionData; +import h3d.col.Bounds; +import octree.IOctreeElement; +import shapes.GemBeam; +import h3d.Quat; +import h3d.Vector; +import shapes.Gem; +import mis.MisParser; +import mis.MissionElement.MissionElementSimGroup; +import octree.Octree; +import mis.MissionElement.MissionElementTrigger; +import mis.MissionElement.MissionElementType; +import src.Mission; +import src.Marble; +import src.AudioManager; +import src.ResourceLoader; +import net.Net; +import src.MarbleGame; +import src.Util; + +@:structInit +@:publicFields +class GemSpawnPoint implements IOctreeObject { + var gem:Gem; + var gemBeam:GemBeam; + + var boundingBox:Bounds; + var netIndex:Int; + + var priority:Int; + + public function new(vec:Vector, spawn:Gem, netIndex:Int) { + boundingBox = new Bounds(); + boundingBox.addPoint(vec.add(new Vector(-0.5, -0.5, -0.5)).toPoint()); + boundingBox.addPoint(vec.add(new Vector(0.5, 0.5, 0.5)).toPoint()); + this.gem = spawn; + this.netIndex = netIndex; + this.gem.netIndex = netIndex; + } + + public function getElementType() { + return 2; + } + + public function setPriority(priority:Int) { + this.priority = priority; + } + + public function rayCast(rayOrigin:Vector, rayDirection:Vector, resultSet:Array, bestT:Float):Float { + throw new haxe.exceptions.NotImplementedException(); // Not applicable + } +} + +class HuntMode extends NullMode { + var playerSpawnPoints:Array = []; + var spawnPointTaken = []; + var gemOctree:Octree; + var gemGroupRadius:Float; + var maxGemsPerGroup:Int; + var rng:RandomLCG = new RandomLCG(100); + var rng2:RandomLCG = new RandomLCG(100); + var gemSpawnPoints:Array; + var lastSpawn:GemSpawnPoint; + var activeGemSpawnGroup:Array; + var gemBeams:Array = []; + var gemToBeamMap:Map = []; + var gemToBlackBeamMap:Map = []; + var activeGems:Array = []; + var points:Int = 0; + var gemsCentroid:Vector; + var idealSpawnIndex:Int; + var expiredGems:Map = []; + var competitiveTimerStartTicks:Int; + + override function missionScan(mission:Mission) { + function scanMission(simGroup:MissionElementSimGroup) { + var elToRemove = []; + for (element in simGroup.elements) { + if ([MissionElementType.Trigger].contains(element._type)) { + var spawnSphere:MissionElementTrigger = cast element; + var dbname = spawnSphere.datablock.toLowerCase(); + if (dbname == "spawntrigger") { + playerSpawnPoints.push(spawnSphere); + spawnPointTaken.push(false); + } + } else if (element._type == MissionElementType.SimGroup) { + var scanPls = true; + if (Net.connectedServerInfo.oldSpawns) { + if (element._name.toLowerCase() == "newversion") { + // Remove this + elToRemove.push(element); + scanPls = false; + } + } else { + if (element._name.toLowerCase() == "oldversion") { + // Remove this + elToRemove.push(element); + scanPls = false; + } + } + if (scanPls) + scanMission(cast element); + } + } + while (elToRemove.length > 0) { + simGroup.elements.remove(elToRemove.pop()); + } + } + scanMission(mission.root); + }; + + override function getSpawnTransform() { + var idx = Net.connectedServerInfo.competitiveMode ? idealSpawnIndex : Math.floor(rng2.randRange(0, playerSpawnPoints.length - 1)); + if (!Net.connectedServerInfo.competitiveMode) { + while (spawnPointTaken[idx]) { + idx = Math.floor(rng2.randRange(0, playerSpawnPoints.length - 1)); + } + spawnPointTaken[idx] = true; + } + + var randomSpawn = playerSpawnPoints[idx]; + var spawnPos = MisParser.parseVector3(randomSpawn.position); + spawnPos.x *= -1; + var spawnRot = MisParser.parseRotation(randomSpawn.rotation); + spawnRot.x *= -1; + spawnRot.w *= -1; + var spawnMat = spawnRot.toMatrix(); + var up = spawnMat.up(); + + if (MisParser.parseBoolean(randomSpawn.g)) + up.load(up.multiply(-1)); + + spawnPos = spawnPos.add(up); // 1.5 -> 0.5 + return { + position: spawnPos, + orientation: spawnRot, + up: up + } + } + + public function freeSpawns() { + for (i in 0...playerSpawnPoints.length) { + spawnPointTaken[i] = false; + } + } + + override function getRespawnTransform(marble:Marble) { + var lastContactPos = marble.lastContactPosition; + if (lastContactPos == null) { + var idx = Math.floor(rng2.randRange(0, playerSpawnPoints.length - 1)); + var randomSpawn = playerSpawnPoints[idx]; + var spawnPos = MisParser.parseVector3(randomSpawn.position); + spawnPos.x *= -1; + var spawnRot = MisParser.parseRotation(randomSpawn.rotation); + spawnRot.x *= -1; + spawnRot.w *= -1; + var spawnMat = spawnRot.toMatrix(); + var up = spawnMat.up(); + if (MisParser.parseBoolean(randomSpawn.g)) + up.load(up.multiply(-1)); + + spawnPos = spawnPos.add(up); // 1.5 -> 0.5 + return { + position: spawnPos, + orientation: spawnRot, + up: up + } + } + // Pick closest spawn point + var closestSpawn:MissionElementTrigger = null; + var closestDistance = 1e10; + for (spawn in playerSpawnPoints) { + var pos = MisParser.parseVector3(spawn.position); + pos.x *= -1; + var dist = pos.distance(lastContactPos); + if (dist < closestDistance) { + closestDistance = dist; + closestSpawn = spawn; + } + } + if (closestSpawn != null) { + var spawnPos = MisParser.parseVector3(closestSpawn.position); + spawnPos.x *= -1; + var spawnRot = MisParser.parseRotation(closestSpawn.rotation); + spawnRot.x *= -1; + spawnRot.w *= -1; + var spawnMat = spawnRot.toMatrix(); + var up = spawnMat.up(); + if (MisParser.parseBoolean(closestSpawn.g)) + up.load(up.multiply(-1)); + + spawnPos = spawnPos.add(up); // 1.5 -> 0.5 + + return { + position: spawnPos, + orientation: spawnRot, + up: up + } + } + return null; + } + + function prepareGems() { + if (this.gemSpawnPoints == null) { + this.gemOctree = new Octree(); + this.gemSpawnPoints = []; + this.gemsCentroid = new Vector(); + for (gem in this.level.gems) { + var spawn:GemSpawnPoint = new GemSpawnPoint(gem.getAbsPos().getPosition(), gem, gemSpawnPoints.length); + gem.setHide(true); + gem.pickedUp = true; + this.gemSpawnPoints.push(spawn); + this.gemOctree.insert(spawn); + gem.setHide(true); + this.level.collisionWorld.removeEntity(gem.boundingCollider); // remove from octree to make it easy + if (level.isMultiplayer) { + @:privateAccess level.gemPredictions.alloc(); + } + gemsCentroid.load(gemsCentroid.add(gem.getAbsPos().getPosition())); + } + if (gemSpawnPoints.length > 0) + gemsCentroid.load(gemsCentroid.multiply(1.0 / gemSpawnPoints.length)); + + var closestSpawnIndex = 0; + var closestSpawnDistance = 1e8; + for (i in 0...playerSpawnPoints.length) { + var spawn = playerSpawnPoints[i]; + var spawnPos = MisParser.parseVector3(spawn.position); + spawnPos.x *= -1; + if (spawnPos.distance(gemsCentroid) < closestSpawnDistance) { + closestSpawnDistance = spawnPos.distance(gemsCentroid); + closestSpawnIndex = i; + } + } + idealSpawnIndex = closestSpawnIndex; + } + for (i in 0...spawnPointTaken.length) { + spawnPointTaken[i] = false; + } + } + + override function getPreloadFiles() { + return [ + 'data/sound/opponentdiamond.wav', + 'data/sound/firewrks.wav', + 'data/shapes/items/blue.gem.png', + 'data/shapes/items/red.gem.png', + 'data/shapes/items/yellow.gem.png', + 'data/shapes/items/platinum.gem.png' + ]; + } + + function setupGems() { + hideExisting(); + this.activeGems = []; + this.activeGemSpawnGroup = []; + this.rng.setSeed(cast Math.random() * 10000); + this.rng2.setSeed(cast Math.random() * 10000); + prepareGems(); + spawnHuntGems(); + } + + function spawnHuntGems(force:Bool = false) { + if (activeGems.length != 0 && !force) + return; + var gemGroupRadius = 15.0; + var maxGemsPerSpawn = 7; + if (level.mission.missionInfo.maxgemsperspawn != null && level.mission.missionInfo.maxgemsperspawn != "") + maxGemsPerSpawn = Std.parseInt(level.mission.missionInfo.maxgemsperspawn); + if (level.mission.missionInfo.radiusfromgem != null && level.mission.missionInfo.radiusfromgem != "") + gemGroupRadius = Std.parseFloat(level.mission.missionInfo.radiusfromgem); + var spawnBlock = gemGroupRadius * 2; + if (level.mission.missionInfo.spawnblock != null && level.mission.missionInfo.spawnblock != "") + spawnBlock = Std.parseFloat(level.mission.missionInfo.spawnblock); + + var lastPos = null; + if (lastSpawn != null) + lastPos = lastSpawn.gem.getAbsPos().getPosition(); + + var furthestDist = 0.0; + var furthest = null; + + for (i in 0...6) { + var gem = gemSpawnPoints[Std.int(rng.randRange(0, gemSpawnPoints.length - 1))]; + if (lastPos != null) { + var dist = gem.gem.getAbsPos().getPosition().distance(lastPos); + if (dist < spawnBlock) { + if (dist > furthestDist) { + furthestDist = dist; + furthest = gem; + } + continue; + } else { + break; + } + } else { + furthest = gem; + break; + } + } + if (furthest == null) { + furthest = gemSpawnPoints[Std.int(rng.randRange(0, gemSpawnPoints.length - 1))]; + } + var pos = furthest.gem.getAbsPos().getPosition(); + + var results = []; + while (results.length == 0) { + var search = gemOctree.radiusSearch(pos, gemGroupRadius); + for (elem in search) { + var gemElem:GemSpawnPoint = cast elem; + var gemPos = gemElem.gem.getAbsPos().getPosition(); + + if (level.mission.missionInfo.game == "PlatinumQuest") { + if (Net.connectedServerInfo.oldSpawns) { + // Spawn chances! + var chance = switch (gemElem.gem.gemColor.toLowerCase()) { + case "red.gem": + level.mission.missionInfo.spawnchancered != null ? Std.parseFloat(level.mission.missionInfo.spawnchancered) : 0.9; + case "yellow.gem": + level.mission.missionInfo.spawnchanceyellow != null ? Std.parseFloat(level.mission.missionInfo.spawnchanceyellow) : 0.65; + case "blue.gem": + level.mission.missionInfo.spawnchanceblue != null ? Std.parseFloat(level.mission.missionInfo.spawnchanceblue) : 0.35; + case "platinum.gem": + level.mission.missionInfo.spawnchanceplatinum != null ? Std.parseFloat(level.mission.missionInfo.spawnchanceplatinum) : 0.18; + default: + 1.0; + }; + var choice = Math.random(); + if (choice > chance) + continue; // Don't spawn! + } else { + // Spawn chances! + var chance = switch (gemElem.gem.gemColor.toLowerCase()) { + case "red.gem": + level.mission.missionInfo.redspawnchance != null ? Std.parseFloat(level.mission.missionInfo.redspawnchance) : 0.9; + case "yellow.gem": + level.mission.missionInfo.yellowspawnchance != null ? Std.parseFloat(level.mission.missionInfo.yellowspawnchance) : 0.65; + case "blue.gem": + level.mission.missionInfo.bluespawnchance != null ? Std.parseFloat(level.mission.missionInfo.bluespawnchance) : 0.35; + case "platinum.gem": + level.mission.missionInfo.platinumspawnchance != null ? Std.parseFloat(level.mission.missionInfo.platinumspawnchance) : 0.18; + default: + 1.0; + }; + var choice = Math.random(); + if (choice > chance) + continue; // Don't spawn! + } + } + + results.push({ + gem: gemElem.netIndex, + weight: this.gemGroupRadius - gemPos.distance(pos) + rng.randRange(0, getGemWeight(gemElem.gem) + 3) + }); + } + } + results.sort((a, b) -> { + if (a.weight > b.weight) + return -1; + if (a.weight < b.weight) + return 1; + return 0; + }); + var spawnSet = results.slice(0, maxGemsPerSpawn).map(x -> x.gem); + + if (force) { + for (activeGem in activeGemSpawnGroup) + spawnSet.remove(activeGem); + } + + for (gem in spawnSet) { + spawnGem(gem); + } + if (!force) + activeGemSpawnGroup = spawnSet; + else { + var uncollectedGems = []; + for (g in activeGemSpawnGroup) { + if (!gemSpawnPoints[g].gem.pickedUp) + uncollectedGems.push(g); + } + activeGemSpawnGroup = uncollectedGems.concat(spawnSet); + } + + if (level.isMultiplayer && Net.isHost) { + var bs = new OutputBitStream(); + bs.writeByte(GemSpawn); + var packet = new GemSpawnPacket(); + packet.gemIds = activeGemSpawnGroup; + packet.expireds = []; + for (i in 0...packet.gemIds.length) { + if (expiredGems.exists(gemSpawnPoints[packet.gemIds[i]].gem)) { + packet.expireds.push(true); + } else { + packet.expireds.push(false); + } + } + packet.serialize(bs); + Net.sendPacketToIngame(bs); + } + + lastSpawn = furthest; + } + + function spawnGem(spawn:Int, expired:Bool = false) { + var gem = gemSpawnPoints[spawn]; + gem.gem.setHide(false); + gem.gem.pickedUp = false; + this.level.collisionWorld.addEntity(gem.gem.boundingCollider); + activeGems.push(gem.gem); + if (!expired) { + if (gem.gemBeam == null) { + gem.gemBeam = new GemBeam(StringTools.replace(gem.gem.gemColor, '.gem', '')); + + var gemPos = gem.gem.getAbsPos().getPosition(); + + gem.gemBeam.setPosition(gemPos.x, gemPos.y, gemPos.z); + gem.gemBeam.setRotationQuat(gem.gem.getRotationQuat().clone()); + // gem.gemBeam.setOpacity(0.99); + this.gemBeams.push(gem.gemBeam); + + this.gemToBeamMap.set(gem.gem, gem.gemBeam); + + level.addDtsObject(gem.gemBeam, () -> { + // Please be fast lol + }); + } else { + gem.gemBeam.setHide(false); + } + } else { + if (gemToBlackBeamMap.exists(gem.gem)) { + gemToBlackBeamMap.get(gem.gem).setHide(false); + } else { + var blackBeam = new GemBeam("black"); + var pos = gem.gem.getAbsPos().getPosition(); + blackBeam.setPosition(gem.gem.x, gem.gem.y, gem.gem.z); + blackBeam.setRotationQuat(gem.gem.getRotationQuat().clone()); + blackBeam.setHide(false); + level.addDtsObject(blackBeam, () -> {}); + gemToBlackBeamMap.set(gem.gem, blackBeam); + } + } + } + + public inline function setGemHiddenStatus(gemId:Int, status:Bool) { + var gemSpawn = gemSpawnPoints[gemId]; + if (gemSpawn.gem != null) { + gemSpawn.gem.pickedUp = status; + gemSpawn.gem.setHide(status); + + if (expiredGems.exists(gemSpawn.gem)) { + var blackBeam = gemToBlackBeamMap.get(gemSpawn.gem); + blackBeam.setHide(status); + gemSpawn.gemBeam.setHide(true); + } else { + gemSpawn.gemBeam.setHide(status); + } + if (status) + this.activeGems.push(gemSpawn.gem); + else + this.activeGems.remove(gemSpawn.gem); + } else { + throw new haxe.Exception("Setting gem status for non existent gem!"); + } + } + + public function setActiveSpawnSphere(gems:Array, expireds:Array) { + hideExisting(); + expiredGems = []; + for (i in 0...gems.length) { + var gem = gems[i]; + spawnGem(gem, expireds[i]); + if (expireds[i]) { + expiredGems.set(gemSpawnPoints[gem].gem, true); + } + } + activeGemSpawnGroup = gems; + } + + function getGemWeight(gem:Gem) { + var col = gem.gemColor.toLowerCase(); + if (col == "red.gem") + return 0; + if (col == "yellow.gem") + return 1; + if (col == "blue.gem") + return 4; + if (col == "platinum.gem") + return 9; + return 0; + } + + function hideExisting() { + lastSpawn = null; + if (gemSpawnPoints != null) { + for (gs in gemSpawnPoints) { + gs.gem.setHide(true); + gs.gem.pickedUp = true; + if (gs.gemBeam != null) { + gs.gemBeam.setHide(true); + } + if (gemToBlackBeamMap.exists(gs.gem)) { + gemToBlackBeamMap.get(gs.gem).setHide(true); + } + } + } + } + + override public function getStartTime() { + return level.mission.qualifyTime; + } + + override function onRestart() { + setupGems(); + points = 0; + competitiveTimerStartTicks = 0; + @:privateAccess level.playGui.formatGemHuntCounter(points); + } + + override function onMissionLoad() { + prepareGems(); + competitiveTimerStartTicks = 0; + } + + override function onClientRestart() { + prepareGems(); + competitiveTimerStartTicks = 0; + } + + override function onTimeExpire() { + if (level.finishTime != null) + return; + + AudioManager.playSound(ResourceLoader.getResource("data/sound/firewrks.wav", ResourceLoader.getAudio, @:privateAccess level.soundResources)); + // AudioManager.playSound(ResourceLoader.getResource('data/sound/finish.wav', ResourceLoader.getAudio, @:privateAccess level.soundResources)); + level.finishTime = level.timeState.clone(); + level.marble.setMode(Finish); + level.marble.camera.finish = true; + level.finishYaw = level.marble.camera.CameraYaw; + level.finishPitch = level.marble.camera.CameraPitch; + // if (level.isMultiplayer) { + // @:privateAccess level.playGui.doMPEndGameMessage(); + // } else { + // level.displayAlert("Congratulations! You've finished!"); + // } + level.cancel(@:privateAccess level.oobSchedule); + level.cancel(@:privateAccess level.marble.oobSchedule); + for (marble in level.marbles) { + marble.setMode(Finish); + level.cancel(@:privateAccess marble.oobSchedule); + } + if (Net.isHost) + NetCommands.timerRanOut(); + + // Stop the ongoing sounds + if (@:privateAccess level.timeTravelSound != null) { + @:privateAccess level.timeTravelSound.stop(); + @:privateAccess level.timeTravelSound = null; + } + + if (@:privateAccess level.alarmSound != null) { + @:privateAccess level.alarmSound.stop(); + @:privateAccess level.alarmSound = null; + } + + level.schedule(level.timeState.currentAttemptTime + 2, () -> { + if (Util.isTouchDevice()) { + MarbleGame.instance.touchInput.setControlsEnabled(false); + } + #if js + var pointercontainer = js.Browser.document.querySelector("#pointercontainer"); + pointercontainer.hidden = false; + #end + MarbleGame.canvas.pushDialog(new MPEndGameGui()); + level.setCursorLock(false); + return 0; + }); + } + + override function onGemPickup(marble:Marble, gem:Gem) { + if ((@:privateAccess !marble.isNetUpdate && Net.isHost) || !Net.isMP) { + if (marble == level.marble) + AudioManager.playSound(ResourceLoader.getResource('data/sound/gotgem.wav', ResourceLoader.getAudio, @:privateAccess this.level.soundResources)); + else + AudioManager.playSound(ResourceLoader.getResource('data/sound/opponentdiamond.wav', ResourceLoader.getAudio, + @:privateAccess this.level.soundResources)); + } + activeGems.remove(gem); + + var wasExpiredGem = false; + + if (expiredGems.exists(gem)) { + wasExpiredGem = true; + } + if (gemToBlackBeamMap.exists(gem)) { + gemToBlackBeamMap.get(gem).setHide(true); + } + + var beam = gemToBeamMap.get(gem); + beam.setHide(true); + + var incr = 0; + switch (gem.gemColor.toLowerCase()) { + case "red.gem": + incr = 1; + case "yellow.gem": + incr = 2; + case "blue.gem": + incr = 5; + case "platinum.gem": + incr = 10; + } + + if (@:privateAccess !marble.isNetUpdate) { + if (marble == level.marble) { + switch (gem.gemColor.toLowerCase()) { + case "red.gem": + points += 1; + @:privateAccess level.playGui.addMiddleMessage('+1', 0xFF6666); + case "yellow.gem": + points += 2; + @:privateAccess level.playGui.addMiddleMessage('+2', 0xFFFF66); + case "blue.gem": + points += 5; + @:privateAccess level.playGui.addMiddleMessage('+5', 0x6666FF); + case "platinum.gem": + points += 10; + @:privateAccess level.playGui.addMiddleMessage('+10', 0xdddddd); + } + if (Net.isHost) + @:privateAccess level.playGui.formatGemHuntCounter(points); + } + } + + if (this.level.isMultiplayer && Net.isHost) { + if (Net.connectedServerInfo.competitiveMode && !wasExpiredGem) { + if (competitiveTimerStartTicks == 0) { + NetCommands.setCompetitiveTimerStartTicks(this.level.timeState.ticks); + } + var remaining = 0; + for (g in activeGems) + if (!expiredGems.exists(g)) + remaining++; + if (remaining == 3) { + var currentTime = level.timeState.ticks; + var endTime = competitiveTimerStartTicks + (20000 >> 5); + var remainingTicks = (endTime - currentTime); + if (remainingTicks > (15000 >> 5)) { + NetCommands.setCompetitiveTimerStartTicks(currentTime - (5000 >> 5)); + } + } + if (remaining == 2) { + var currentTime = level.timeState.ticks; + var endTime = competitiveTimerStartTicks + (20000 >> 5); + var remainingTicks = (endTime - currentTime); + if (remainingTicks > (10000 >> 5)) { + NetCommands.setCompetitiveTimerStartTicks(currentTime - (10000 >> 5)); + } + } + if (remaining == 1) { + var currentTime = level.timeState.ticks; + var endTime = competitiveTimerStartTicks + (20000 >> 5); + var remainingTicks = (endTime - currentTime); + if (remainingTicks > (5000 >> 5)) { + NetCommands.setCompetitiveTimerStartTicks(currentTime - (15000 >> 5)); + } + } + if (remaining == 0) { + NetCommands.setCompetitiveTimerStartTicks(0); + spawnNextGemCluster(); + } + } + + var packet = new GemPickupPacket(); + packet.clientId = @:privateAccess marble.connection == null ? 0 : @:privateAccess marble.connection.id; + packet.gemId = gem.netIndex; + packet.serverTicks = level.timeState.ticks; + packet.scoreIncr = incr; + var os = new OutputBitStream(); + os.writeByte(GemPickup); + packet.serialize(os); + Net.sendPacketToIngame(os); + + // Settings.playStatistics.totalMPScore += incr; + + @:privateAccess level.playGui.incrementPlayerScore(packet.clientId, packet.scoreIncr); + } + if (wasExpiredGem) + expiredGems.remove(gem); + if (this.level.isMultiplayer && Net.isClient) { + gem.pickUpClient = @:privateAccess marble.connection == null ? Net.clientId : @:privateAccess marble.connection.id; + } + if (!this.level.isMultiplayer || Net.isHost) { + spawnHuntGems(); + } + } + + public function setCompetitiveTimerStartTicks(ticks:Int) { + competitiveTimerStartTicks = ticks; + } + + function spawnNextGemCluster() { + // Expire all existing + for (g in activeGems) { + expiredGems.set(g, true); + var gemBeam = gemToBeamMap.get(g); + gemBeam.setHide(true); + if (gemToBlackBeamMap.exists(g)) { + gemToBlackBeamMap.get(g).setHide(false); + } else { + var blackBeam = new GemBeam("black"); + var pos = g.getAbsPos().getPosition(); + blackBeam.setPosition(g.x, g.y, g.z); + blackBeam.setRotationQuat(g.getRotationQuat().clone()); + blackBeam.setHide(false); + level.addDtsObject(blackBeam, () -> {}); + gemToBlackBeamMap.set(g, blackBeam); + } + } + spawnHuntGems(true); + } + + override function update(t:src.TimeState) { + if (Net.connectedServerInfo.competitiveMode) { + if (competitiveTimerStartTicks != 0) { + var currentTime = Net.isHost ? t.ticks : @:privateAccess level.marble.serverTicks; + var endTime = competitiveTimerStartTicks + (20000 >> 5); + @:privateAccess level.playGui.formatCountdownTimer(Math.max(0, (endTime - currentTime) * 0.032), 0); + if (Net.isHost && endTime < currentTime) { + spawnNextGemCluster(); + NetCommands.setCompetitiveTimerStartTicks(0); + } + } else { + @:privateAccess level.playGui.formatCountdownTimer(0, 0); + } + } + } + + override public function timeMultiplier() { + return -1; + } +} diff --git a/src/modes/NullMode.hx b/src/modes/NullMode.hx new file mode 100644 index 00000000..003cd4c6 --- /dev/null +++ b/src/modes/NullMode.hx @@ -0,0 +1,143 @@ +package modes; + +import src.Marble; +import modes.GameMode.ScoreType; +import shapes.Gem; +import h3d.Quat; +import h3d.Vector; +import shapes.StartPad; +import src.MarbleWorld; +import src.Mission; +import src.AudioManager; +import src.ResourceLoader; +import src.Console; + +class NullMode implements GameMode { + var level:MarbleWorld; + + public function new(level:MarbleWorld) { + this.level = level; + } + + public function getSpawnTransform() { + // The player is spawned at the last start pad in the mission file. + var startPad = this.level.dtsObjects.filter(x -> x is StartPad).pop(); + var position:Vector; + var quat:Quat = new Quat(); + if (startPad != null) { + // If there's a start pad, start there + position = startPad.getAbsPos().getPosition(); + quat = startPad.getRotationQuat().clone(); + position.z += 3; + } else { + position = new Vector(0, 0, 300); + } + return { + position: position, + orientation: quat, + up: new Vector(0, 0, 1) + }; + } + + public function getRespawnTransform(marble:Marble):{up:Vector, position:Vector, orientation:Quat} { + return null; + } + + public function missionScan(mission:Mission) { + // Do nothing + } + + public function getStartTime() { + return 0.0; + } + + public function timeMultiplier() { + return 1.0; + } + + public function onRestart() { + this.level.schedule(0.5, () -> { + // setCenterText('ready'); + Console.log("State Ready"); + AudioManager.playSound(ResourceLoader.getResource('data/sound/ready.wav', ResourceLoader.getAudio, @:privateAccess this.level.soundResources)); + return 0; + }); + this.level.schedule(2, () -> { + // setCenterText('set'); + Console.log("State Set"); + AudioManager.playSound(ResourceLoader.getResource('data/sound/set.wav', ResourceLoader.getAudio, @:privateAccess this.level.soundResources)); + return 0; + }); + this.level.schedule(3.5, () -> { + // setCenterText('go'); + Console.log("State Go"); + AudioManager.playSound(ResourceLoader.getResource('data/sound/go.wav', ResourceLoader.getAudio, @:privateAccess this.level.soundResources)); + Console.log("State Play"); + return 0; + }); + } + + public function onRespawn(marble:Marble) {} + + public function onGemPickup(marble:Marble, gem:Gem) { + this.level.gemCount++; + var string:String; + + // Show a notification (and play a sound) based on the gems remaining + if (this.level.gemCount == this.level.totalGems) { + string = "You have all the diamonds, head for the finish!"; + // if (!this.rewinding) + AudioManager.playSound(ResourceLoader.getResource('data/sound/gotallgems.wav', ResourceLoader.getAudio, @:privateAccess this.level.soundResources)); + + // Some levels with this package end immediately upon collection of all gems + // if (this.mission.misFile.activatedPackages.includes('endWithTheGems')) { + // let + // completionOfImpact = this.physics.computeCompletionOfImpactWithBody(gem.bodies[0], 2); // Get the exact point of impact + // this.touchFinish(completionOfImpact); + // } + } else { + string = "You picked up a diamond. "; + + var remaining = this.level.totalGems - this.level.gemCount; + if (remaining == 1) { + string += "Only one diamond to go!"; + } else { + string += '${remaining} diamonds to go!'; + } + + // if (!this.rewinding) + AudioManager.playSound(ResourceLoader.getResource('data/sound/gotgem.wav', ResourceLoader.getAudio, @:privateAccess this.level.soundResources)); + } + + this.level.displayAlert(string); + @:privateAccess this.level.playGui.formatGemCounter(this.level.gemCount, this.level.totalGems); + } + + public function getPreloadFiles() { + return []; + } + + public function onTimeExpire() {} + + public function getScoreType():ScoreType { + return Time; + } + + public function getFinishScore():Float { + return level.finishTime.gameplayClock; + } + + // public function getRewindState():RewindableState { + // return null; + // } + // public function applyRewindState(state:RewindableState) {} + // public function constructRewindState() { + // return null; + // } + + public function onClientRestart() {} + + public function onMissionLoad() {} + + public function update(t:src.TimeState) {} +} diff --git a/src/net/BitStream.hx b/src/net/BitStream.hx new file mode 100644 index 00000000..e07bb73e --- /dev/null +++ b/src/net/BitStream.hx @@ -0,0 +1,166 @@ +package net; + +import haxe.io.FPHelper; +import haxe.io.BytesOutput; +import haxe.io.BytesInput; +import haxe.io.Bytes; + +class InputBitStream { + var data:Bytes; + var position:Int; + var shift:Int; + + public function new(data:Bytes) { + this.data = data; + this.position = 0; + this.shift = 0; + } + + function readBits(bits:Int = 8) { + if (this.shift + bits >= 8) { + var extra = (this.shift + bits) % 8; + var remain = bits - extra; + var first = data.get(position) >> shift; + var result = first; + this.position++; + if (extra > 0) { + var second = (data.get(position) & (0xFF >> (8 - extra))) << remain; + result |= second; + } + this.shift = extra; + return result; + } else { + var result = (data.get(position) >> shift) & (0xFF >> (8 - bits)); + shift += bits; + + return result; + } + } + + public function readInt(bits:Int = 32) { + var value = 0; + var shift = 0; + while (bits > 0) { + value |= readBits(bits < 8 ? bits : 8) << shift; + shift += 8; + bits -= 8; + } + return value; + } + + public function readFlag() { + return readInt(1) != 0; + } + + public function readByte() { + return readInt(8); + } + + public function readUInt16() { + return readInt(16); + } + + public function readInt32() { + return readInt(32); + } + + public function readFloat() { + return FPHelper.i32ToFloat(readInt32()); + } + + public function readDouble() { + var lo = readInt32(); + var hi = readInt32(); + return FPHelper.i64ToDouble(lo, hi); + } + + public function readString() { + var length = readUInt16(); + var str = ""; + for (i in 0...length) { + str += String.fromCharCode(readByte()); + } + return str; + } +} + +class OutputBitStream { + var data:BytesOutput; + var position:Int; + var shift:Int; + var lastByte:Int; + + public function new(data:BytesOutput = null) { + this.data = data; + if (this.data == null) + this.data = new BytesOutput(); + this.position = 0; + this.shift = 0; + this.lastByte = 0; + } + + function writeBits(value:Int, bits:Int) { + value = value & (0xFF >> (8 - bits)); + if (this.shift + bits >= 8) { + var extra = (shift + bits) % 8; + var remain = bits - extra; + + var first = value & (0xFF >> (8 - remain)); + lastByte |= first << shift; + + var second = (value >> remain) & (0xFF >> (8 - extra)); + this.data.writeByte(this.lastByte); + this.lastByte = second; + this.shift = extra; + } else { + lastByte |= (value << this.shift) & (0xFF >> (8 - bits - this.shift)); + this.shift += bits; + } + } + + public function writeInt(value:Int, bits:Int = 32) { + while (bits > 0) { + this.writeBits(value & 0xFF, bits < 8 ? bits : 8); + value >>= 8; + bits -= 8; + } + } + + public function writeFlag(value:Bool) { + writeInt(value ? 1 : 0, 1); + } + + public function writeByte(value:Int) { + writeInt(value, 8); + } + + public function writeUInt16(value:Int) { + writeInt(value, 16); + } + + public function writeInt32(value:Int) { + writeInt(value, 32); + } + + public function getBytes() { + this.data.writeByte(this.lastByte); + return this.data.getBytes(); + } + + public function writeFloat(value:Float) { + writeInt(FPHelper.floatToI32(value), 32); + } + + public function writeString(value:String) { + writeUInt16(value.length); + for (i in 0...value.length) { + writeByte(StringTools.fastCodeAt(value, i)); + } + } + + public function writeDouble(value:Float) { + var i64 = FPHelper.doubleToI64(value); + writeInt32(i64.low); + writeInt32(i64.high); + } +} diff --git a/src/net/ClientConnection.hx b/src/net/ClientConnection.hx new file mode 100644 index 00000000..c3ca4691 --- /dev/null +++ b/src/net/ClientConnection.hx @@ -0,0 +1,150 @@ +package net; + +import haxe.io.Bytes; +import datachannel.RTCPeerConnection; +import datachannel.RTCDataChannel; +import net.MoveManager; +import src.TimeState; + +enum abstract GameplayState(Int) from Int to Int { + var UNKNOWN; + var LOBBY; + var GAME; +} + +enum abstract NetPlatform(Int) from Int to Int { + var Unknown; + var PC; + var MacOS; + var Web; + var Android; +} + +@:publicFields +class ClientConnection extends GameConnection { + var socket:RTCPeerConnection; + var datachannel:RTCDataChannel; + var datachannelUnreliable:RTCDataChannel; + var rtt:Float; + var pingSendTime:Float; + var _rttRecords:Array = []; + var lastRecvTime:Float; + var didWarnTimeout:Bool = false; + + public function new(id:Int, socket:RTCPeerConnection, datachannel:RTCDataChannel, datachannelUnreliable:RTCDataChannel) { + super(id); + this.socket = socket; + this.datachannel = datachannel; + this.datachannelUnreliable = datachannelUnreliable; + this.state = GameplayState.LOBBY; + this.rtt = 0; + this.name = "Unknown"; + } + + override function sendBytes(b:Bytes) { + datachannel.sendBytes(b); + } + + override function sendBytesUnreliable(b:Bytes) { + datachannelUnreliable.sendBytes(b); + } + + public inline function needsTimeoutWarn(t:Float) { + return (t - lastRecvTime) > 10 && !didWarnTimeout; + } + + public inline function needsTimeoutKick(t:Float) { + return (t - lastRecvTime) > 15 && didWarnTimeout; + } +} + +@:publicFields +class DummyConnection extends GameConnection { + public function new(id:Int) { + super(id); + this.state = GameplayState.GAME; + this.lobbyReady = true; + } +} + +@:publicFields +abstract class GameConnection { + var id:Int; + var state:GameplayState; + var moveManager:MoveManager; + var name:String; + var lobbyReady:Bool; + var platform:NetPlatform; + var marbleId:Int; + var marbleCatId:Int; + var spectator:Bool; + var pingTicks:Int; + + function new(id:Int) { + this.id = id; + this.moveManager = new MoveManager(this); + this.lobbyReady = false; + this.spectator = false; + } + + public function ready() { + state = GameplayState.GAME; + } + + public function toggleLobbyReady() { + lobbyReady = !lobbyReady; + } + + public function toggleSpectate() { + spectator = !spectator; + } + + public function queueMove(m:NetMove) { + moveManager.queueMove(m); + } + + public inline function acknowledgeMove(m:NetMove, timeState:TimeState) { + return moveManager.acknowledgeMove(m, timeState); + } + + public inline function getQueuedMoves() { + return @:privateAccess moveManager.queuedMoves; + } + + public inline function getQueuedMovesLength() { + return moveManager.getQueueSize(); + } + + public function recordMove(marble:src.Marble, motionDir:h3d.Vector, timeState:TimeState, serverTicks:Int) { + return moveManager.recordMove(marble, motionDir, timeState, serverTicks); + } + + public function getNextMove() { + return moveManager.getNextMove(); + } + + public function sendBytes(b:haxe.io.Bytes) {} + + public function sendBytesUnreliable(b:haxe.io.Bytes) {} + + public inline function getName() { + return name; + } + + public inline function setName(value:String) { + name = value; + } + + public inline function setMarbleId(value:Int, category:Int) { + marbleId = value; + marbleCatId = category; + } + + public inline function getMarbleId() { + return marbleId; + } + + public inline function getMarbleCatId() { + return marbleCatId; + } +} diff --git a/src/net/ExplodablePredictionStore.hx b/src/net/ExplodablePredictionStore.hx new file mode 100644 index 00000000..b86ae693 --- /dev/null +++ b/src/net/ExplodablePredictionStore.hx @@ -0,0 +1,37 @@ +package net; + +import src.MarbleWorld; +import net.NetPacket.ExplodableUpdatePacket; +import src.TimeState; +import net.NetPacket.PowerupPickupPacket; + +class ExplodablePredictionStore { + var world:MarbleWorld; + var predictions:Array; + + public inline function new(world:MarbleWorld) { + predictions = []; + this.world = world; + } + + public inline function alloc() { + predictions.push(-100000); + } + + public inline function getState(netIndex:Int) { + return predictions[netIndex]; + } + + public inline function acknowledgeExplodableUpdate(packet:ExplodableUpdatePacket) { + predictions[packet.explodableId] = packet.serverTicks; + if (!world.explodablesToTick.contains(packet.explodableId)) + world.explodablesToTick.push(packet.explodableId); + world.explodables[packet.explodableId].playExplosion(); + } + + public inline function reset() { + for (i in 0...predictions.length) { + predictions[i] = -100000; + } + } +} diff --git a/src/net/GemPredictionStore.hx b/src/net/GemPredictionStore.hx new file mode 100644 index 00000000..b39991fd --- /dev/null +++ b/src/net/GemPredictionStore.hx @@ -0,0 +1,35 @@ +package net; + +import net.NetPacket.GemSpawnPacket; +import net.NetPacket.GemPickupPacket; + +class GemPredictionStore { + var predictions:Array; + + public inline function new() { + predictions = []; + } + + public inline function alloc() { + predictions.push(true); + } + + public inline function getState(netIndex:Int) { + return predictions[netIndex]; + } + + public inline function acknowledgeGemPickup(packet:GemPickupPacket) { + predictions[packet.gemId] = true; + } + + public inline function acknowledgeGemSpawn(packet:GemSpawnPacket) { + for (gemId in packet.gemIds) + predictions[gemId] = false; + } + + public inline function reset() { + for (i in 0...predictions.length) { + predictions[i] = true; + } + } +} diff --git a/src/net/MarblePredictionStore.hx b/src/net/MarblePredictionStore.hx new file mode 100644 index 00000000..7f7da41a --- /dev/null +++ b/src/net/MarblePredictionStore.hx @@ -0,0 +1,86 @@ +package net; + +import net.NetPacket.MarbleUpdatePacket; +import net.NetPacket.MarbleMovePacket; +import src.TimeState; +import src.Marble; +import h3d.Vector; + +@:publicFields +class MarblePrediction { + var tick:Int; + var position:Vector; + var velocity:Vector; + var omega:Vector; + var isControl:Bool; + var blastAmount:Int; + + public function new(marble:Marble, tick:Int) { + this.tick = tick; + position = @:privateAccess marble.newPos.clone(); + velocity = @:privateAccess marble.velocity.clone(); + omega = @:privateAccess marble.omega.clone(); + blastAmount = @:privateAccess marble.blastTicks; + isControl = @:privateAccess marble.controllable; + } + + public inline function getError(p:MarbleUpdatePacket) { + // Just doing position errors is enough to make it work + var subs = position.sub(p.position).lengthSq(); // + velocity.sub(p.velocity).lengthSq() + omega.sub(p.omega).lengthSq(); + if (p.netFlags != 0) + subs += 1; + // if (p.powerUpId != powerupItemId) + // if (tick % 10 == 0) + // subs += 1; // temp + // if (isControl) + // subs += Math.abs(blastAmount - p.blastAmount); + return subs; + } +} + +class MarblePredictionStore { + var predictions:Map>; + + public function new() { + predictions = []; + } + + public function storeState(marble:Marble, tick:Int) { + var state = new MarblePrediction(marble, tick); + if (predictions.exists(marble)) { + var arr = predictions[marble]; + while (arr.length != 0 && arr[0].tick >= tick) + arr.shift(); + arr.push(state); + } else { + predictions.set(marble, [state]); + } + } + + public function retrieveState(marble:Marble, tick:Int) { + if (predictions.exists(marble)) { + var arr = predictions[marble]; + while (arr.length != 0 && arr[0].tick < tick) + arr.shift(); + if (arr.length == 0) + return null; + var p = arr[0]; + if (p.tick == tick) + return p; + return null; + } + return null; + } + + public function clearStatesAfterTick(marble:Marble, tick:Int) { + if (predictions.exists(marble)) { + var arr = predictions[marble]; + while (arr.length != 0 && arr[arr.length - 1].tick >= tick) + arr.pop(); + } + } + + public function removeMarbleFromPrediction(marble:Marble) { + this.predictions.remove(marble); + } +} diff --git a/src/net/MarbleUpdateQueue.hx b/src/net/MarbleUpdateQueue.hx new file mode 100644 index 00000000..94e4eb76 --- /dev/null +++ b/src/net/MarbleUpdateQueue.hx @@ -0,0 +1,121 @@ +package net; + +import h3d.Vector; +import net.NetPacket.MarbleNetFlags; +import net.NetPacket.MarbleUpdatePacket; +import net.Net; + +@:publicFields +class OtherMarbleUpdate { + var packets:Array = []; + var lastBlastTick:Int; + var lastHeliTick:Int; + var lastMegaTick:Int; + var lastSuperBounceTick:Int; + var lastShockAbsorberTick:Int; + var lastPowerUpId:Int; + var lastGravityUp:Vector; + var lastTrapdoorUpdates:Map = []; + + public function new() {} +} + +@:publicFields +class MarbleUpdateQueue { + var otherMarbleUpdates:Map = []; + var myMarbleUpdate:MarbleUpdatePacket; + var ourMoveApplied:Bool = false; + + public function new() {} + + public function enqueue(update:MarbleUpdatePacket) { + var cc = update.clientId; + if (cc != Net.clientId) { + // if (myMarbleUpdate != null && update.serverTicks > myMarbleUpdate.serverTicks) + // ourMoveApplied = true; + if (otherMarbleUpdates.exists(cc)) { + var otherUpdate = otherMarbleUpdates[cc]; + var ourList = otherUpdate.packets; + // Copy the netflagg'd fields + if (update.netFlags & MarbleNetFlags.DoBlast == 0) + update.blastTick = otherUpdate.lastBlastTick; + else + otherUpdate.lastBlastTick = update.blastTick; + if (update.netFlags & MarbleNetFlags.DoHelicopter == 0) + update.heliTick = otherUpdate.lastHeliTick; + else + otherUpdate.lastHeliTick = update.heliTick; + if (update.netFlags & MarbleNetFlags.DoMega == 0) + update.megaTick = otherUpdate.lastMegaTick; + else + otherUpdate.lastMegaTick = update.megaTick; + if (update.netFlags & MarbleNetFlags.DoSuperBounce == 0) + update.superBounceTick = otherUpdate.lastSuperBounceTick; + else + otherUpdate.lastSuperBounceTick = update.superBounceTick; + if (update.netFlags & MarbleNetFlags.DoShockAbsorber == 0) + update.shockAbsorberTick = otherUpdate.lastShockAbsorberTick; + else + otherUpdate.lastShockAbsorberTick = update.shockAbsorberTick; + if (update.netFlags & MarbleNetFlags.PickupPowerup == 0) + update.powerUpId = otherUpdate.lastPowerUpId; + else + otherUpdate.lastPowerUpId = update.powerUpId; + if (update.netFlags & MarbleNetFlags.GravityChange == 0) + update.gravityDirection = otherUpdate.lastGravityUp; + else + otherUpdate.lastGravityUp = update.gravityDirection; + if (update.netFlags & MarbleNetFlags.UpdateTrapdoor == 0) + update.trapdoorUpdates = otherUpdate.lastTrapdoorUpdates; + else + otherUpdate.lastTrapdoorUpdates = update.trapdoorUpdates; + ourList.push(update); + } else { + var otherUpdate = new OtherMarbleUpdate(); + otherUpdate.packets.push(update); + // Copy the netflagg'd fields + if (update.netFlags & MarbleNetFlags.DoBlast != 0) + otherUpdate.lastBlastTick = update.blastTick; + if (update.netFlags & MarbleNetFlags.DoHelicopter != 0) + otherUpdate.lastHeliTick = update.heliTick; + if (update.netFlags & MarbleNetFlags.DoMega != 0) + otherUpdate.lastMegaTick = update.megaTick; + if (update.netFlags & MarbleNetFlags.DoSuperBounce != 0) + otherUpdate.lastSuperBounceTick = update.superBounceTick; + if (update.netFlags & MarbleNetFlags.DoShockAbsorber != 0) + otherUpdate.lastShockAbsorberTick = update.shockAbsorberTick; + if (update.netFlags & MarbleNetFlags.PickupPowerup != 0) + otherUpdate.lastPowerUpId = update.powerUpId; + if (update.netFlags & MarbleNetFlags.GravityChange != 0) + otherUpdate.lastGravityUp = update.gravityDirection; + if (update.netFlags & MarbleNetFlags.UpdateTrapdoor != 0) + otherUpdate.lastTrapdoorUpdates = update.trapdoorUpdates; + otherMarbleUpdates[cc] = otherUpdate; + } + } else { + if (myMarbleUpdate == null || update.serverTicks > myMarbleUpdate.serverTicks) { + if (myMarbleUpdate != null) { + // Copy the netflagg'd fields + if (update.netFlags & MarbleNetFlags.DoBlast == 0) + update.blastTick = myMarbleUpdate.blastTick; + if (update.netFlags & MarbleNetFlags.DoHelicopter == 0) + update.heliTick = myMarbleUpdate.heliTick; + if (update.netFlags & MarbleNetFlags.DoMega == 0) + update.megaTick = myMarbleUpdate.megaTick; + if (update.netFlags & MarbleNetFlags.DoSuperBounce == 0) + update.superBounceTick = myMarbleUpdate.superBounceTick; + if (update.netFlags & MarbleNetFlags.DoShockAbsorber == 0) + update.shockAbsorberTick = myMarbleUpdate.shockAbsorberTick; + if (update.netFlags & MarbleNetFlags.PickupPowerup == 0) + update.powerUpId = myMarbleUpdate.powerUpId; + if (update.netFlags & MarbleNetFlags.GravityChange == 0) + update.gravityDirection = myMarbleUpdate.gravityDirection; + if (update.netFlags & MarbleNetFlags.UpdateTrapdoor == 0) + update.trapdoorUpdates = myMarbleUpdate.trapdoorUpdates; + } + myMarbleUpdate = update; + ourMoveApplied = false; + } + } + } +} diff --git a/src/net/MasterServerClient.hx b/src/net/MasterServerClient.hx new file mode 100644 index 00000000..c1870e6f --- /dev/null +++ b/src/net/MasterServerClient.hx @@ -0,0 +1,314 @@ +package net; + +import gui.MPMessageGui; +import gui.JoinServerGui; +import gui.MessageBoxOkDlg; +import src.MarbleGame; +import haxe.Json; +import net.Net.ServerInfo; +import haxe.net.WebSocket; +import src.Console; + +typedef RemoteServerInfo = { + id:String, + name:String, + host:String, + description:String, + players:Int, + maxPlayers:Int, + platform:Int, + version:String, + passworded:Bool +} + +class MasterServerClient { + #if js + static var serverIp = "wss://mbpmaster.randomityguy.me:8443"; + #else + static var serverIp = "ws://89.58.58.191:8084"; + #end + public static var instance:MasterServerClient; + + var ws:WebSocket; + var serverListCb:Array->Void; + + var open = false; + + static var wsToken:Int = 0; + + #if hl + var wsThread:sys.thread.Thread; + + static var responses:sys.thread.Deque<() -> Void> = new sys.thread.Deque<() -> Void>(); + + var toSend:sys.thread.Deque = new sys.thread.Deque(); + var stopping:Bool = false; + var stopMutex:sys.thread.Mutex = new sys.thread.Mutex(); + #end + + public function new(onOpenFunc:() -> Void, onErrorFunc:() -> Void) { + #if hl + wsThread = sys.thread.Thread.create(() -> { + hl.Gc.enable(false); + hl.Gc.blocking(true); // Wtf is this shit + #end + wsToken++; + + var myToken = wsToken; + + ws = WebSocket.create(serverIp); + #if hl + hl.Gc.enable(true); + hl.Gc.blocking(false); + #end + ws.onopen = () -> { + open = true; + #if hl + responses.add(() -> onOpenFunc()); + #end + #if js + onOpenFunc(); + #end + } + ws.onmessageString = (m) -> { + #if hl + responses.add(() -> handleMessage(m)); + #end + #if js + handleMessage(m); + #end + } + ws.onerror = (m) -> { + #if hl + responses.add(() -> { + MarbleGame.canvas.pushDialog(new MessageBoxOkDlg("Failed to connect to master server: " + m)); + }); + if (onErrorFunc != null) + responses.add(() -> { + onErrorFunc(); + }); + #end + #if js + MarbleGame.canvas.pushDialog(new MessageBoxOkDlg("Failed to connect to master server: " + m)); + if (onErrorFunc != null) + onErrorFunc(); + #end + #if hl + stopMutex.acquire(); + #end + if (myToken == wsToken) { + open = false; + ws = null; + instance = null; + } + #if hl + stopMutex.acquire(); + stopping = true; + stopMutex.release(); + if (myToken == wsToken) { + wsThread = null; + } + #end + } + ws.onclose = (?e) -> { + #if hl + stopMutex.acquire(); + #end + if (myToken == wsToken) { + open = false; + ws = null; + instance = null; + } + #if hl + stopping = true; + stopMutex.release(); + if (myToken == wsToken) { + wsThread = null; + } + #end + } + #if hl + while (true) { + stopMutex.acquire(); + if (stopping) + break; + while (true) { + var s = toSend.pop(false); + if (s == null) + break; + #if hl + hl.Gc.blocking(true); + #end + ws.sendString(s); + #if hl + hl.Gc.blocking(false); + #end + } + + #if hl + hl.Gc.blocking(true); + #end + ws.process(); + #if hl + hl.Gc.blocking(false); + #end + stopMutex.release(); + Sys.sleep(0.1); + } + #end + #if hl + }); + #end + } + + public static function process() { + #if sys + var resp = responses.pop(false); + if (resp != null) { + resp(); + } + #end + } + + public static function connectToMasterServer(onConnect:() -> Void, onError:() -> Void = null) { + if (instance == null) + instance = new MasterServerClient(onConnect, onError); + else { + if (instance.open) + onConnect(); + else { + if (instance != null && instance.ws != null) + instance.ws.close(); + instance = new MasterServerClient(onConnect, onError); + } + } + } + + public static function disconnectFromMasterServer() { + if (instance != null && instance.ws != null) { + instance.ws.close(); + if (instance != null) { + instance.open = false; + instance.ws = null; + instance = null; + } + } + } + + function queueMessage(m:String) { + #if hl + toSend.add(m); + #end + #if js + ws.sendString(m); + #end + } + + public function heartBeat() { + queueMessage(Json.stringify({ + type: "heartbeat" + })); + } + + public function sendServerInfo(serverInfo:ServerInfo) { + queueMessage(Json.stringify({ + type: "serverInfo", + id: serverInfo.id, + name: serverInfo.name, + host: serverInfo.hostname, + description: serverInfo.description, + players: serverInfo.players, + maxPlayers: serverInfo.maxPlayers, + password: serverInfo.password, + state: serverInfo.state, + platform: serverInfo.platform, + version: MarbleGame.currentVersion + })); + } + + public function sendConnectToServer(serverId:String, sdp:String, password:String) { + queueMessage(Json.stringify({ + type: "connect", + id: serverId, + sdp: sdp, + password: password + })); + } + + public function getServerList(serverListCb:Array->Void) { + this.serverListCb = serverListCb; + queueMessage(Json.stringify({ + type: "serverList" + })); + } + + function handleMessage(message:String) { + var conts = Json.parse(message); + Console.log('Received ${conts.type}'); + if (conts.type == "serverList") { + if (serverListCb != null) { + serverListCb(conts.servers); + } + } + if (conts.type == "connect") { + if (!Net.isHost) { + queueMessage(Json.stringify({ + type: "connectFailed", + success: false, + reason: "The server has shut down" + })); + return; + } + var joiningPrivate = conts.isPrivate; + + if (Net.serverInfo.players >= Net.serverInfo.maxPlayers) { + queueMessage(Json.stringify({ + type: "connectFailed", + success: false, + reason: "The server is full" + })); + return; + } + + var pubCount = 1; // Self + for (cid => cc in Net.clientIdMap) { + pubCount++; + } + + if (!joiningPrivate && pubCount >= Net.serverInfo.maxPlayers) { + queueMessage(Json.stringify({ + type: "connectFailed", + success: false, + reason: "The server is full" + })); + return; + } + + Net.addClientFromSdp(conts.sdp, (sdpReply) -> { + queueMessage(Json.stringify({ + success: true, + type: "connectResponse", + sdp: sdpReply, + clientId: conts.clientId + })); + }); + } + if (conts.type == "connectResponse") { + Console.log("Remote Description Received!"); + var sdpObj = Json.parse(conts.sdp); + if (@:privateAccess Net.client != null) + @:privateAccess Net.client.setRemoteDescription(sdpObj.sdp, sdpObj.type); + } + if (conts.type == "connectFailed") { + if (MarbleGame.canvas.content is MPMessageGui) { + var loadGui:MPMessageGui = cast MarbleGame.canvas.content; + if (loadGui != null) { + loadGui.setTexts("Error", conts.reason); + } + } + } + if (conts.type == "turnserver") { + Net.turnServer = conts.server; // Turn server! + } + } +} diff --git a/src/net/Move.hx b/src/net/Move.hx new file mode 100644 index 00000000..14252c7a --- /dev/null +++ b/src/net/Move.hx @@ -0,0 +1,13 @@ +package net; + +import h3d.Vector; + +class Move { + public var d:Vector; + public var jump:Bool; + public var powerup:Bool; + public var blast:Bool; + public var respawn:Bool; + + public function new() {} +} diff --git a/src/net/MoveManager.hx b/src/net/MoveManager.hx new file mode 100644 index 00000000..7d109352 --- /dev/null +++ b/src/net/MoveManager.hx @@ -0,0 +1,302 @@ +package net; + +import net.BitStream.OutputBitStream; +import net.BitStream.InputBitStream; +import net.NetPacket.MarbleUpdatePacket; +import shapes.PowerUp; +import net.NetPacket.MarbleMovePacket; +import src.TimeState; +import src.Console; +import net.ClientConnection; +import net.Net.NetPacketType; +import src.MarbleWorld; +import net.Move; +import h3d.Vector; +import src.Gamepad; +import src.Settings; +import hxd.Key; +import src.MarbleGame; +import src.Util; +import src.Marble; + +@:publicFields +class NetMove { + var motionDir:Vector; + var move:Move; + var id:Int; + var timeState:TimeState; + var serverTicks:Int; + + public function new(move:Move, motionDir:Vector, timeState:TimeState, serverTicks:Int, id:Int) { + this.move = move; + this.motionDir = motionDir; + this.id = id; + this.serverTicks = serverTicks; + this.timeState = timeState; + } +} + +class MoveManager { + var connection:GameConnection; + var queuedMoves:Array; + var nextMoveId:Int; + var lastMove:NetMove; + var lastAckMoveId:Int = -1; + var ackRTT:Int = -1; + + var maxMoves = 45; + var maxSendMoveListSize = 30; + + var serverTargetMoveListSize = 3; + var serverMaxMoveListSize = 8; + var serverAvgMoveListSize = 3.0; + var serverSmoothMoveAvg = 0.15; + var serverMoveListSizeSlack = 1.5; + var serverDefaultMinTargetMoveListSize = 3; + var serverAbnormalMoveCount = 0; + var serverLastRecvMove = 0; + var serverLastAckMove = 0; + + public var stall = false; + + public function new(connection:GameConnection) { + queuedMoves = []; + nextMoveId = 0; + this.connection = connection; + var mv = new Move(); + mv.d = new Vector(0, 0); + } + + public function recordMove(marble:Marble, motionDir:Vector, timeState:TimeState, serverTicks:Int) { + if (queuedMoves.length >= maxMoves || stall) { + return queuedMoves[queuedMoves.length - 1]; + } + var move = new Move(); + move.d = new Vector(); + if (!MarbleGame.instance.paused) { + move.d.x = Gamepad.getAxis(Settings.gamepadSettings.moveYAxis); + move.d.y = -Gamepad.getAxis(Settings.gamepadSettings.moveXAxis); + if (@:privateAccess !MarbleGame.instance.world.playGui.isChatFocused()) { + if (Key.isDown(Settings.controlsSettings.forward)) { + move.d.x -= 1; + } + if (Key.isDown(Settings.controlsSettings.backward)) { + move.d.x += 1; + } + if (Key.isDown(Settings.controlsSettings.left)) { + move.d.y += 1; + } + if (Key.isDown(Settings.controlsSettings.right)) { + move.d.y -= 1; + } + if (Key.isDown(Settings.controlsSettings.jump) + || MarbleGame.instance.touchInput.jumpButton.pressed + || Gamepad.isDown(Settings.gamepadSettings.jump)) { + move.jump = true; + } + if ((!Util.isTouchDevice() && Key.isDown(Settings.controlsSettings.powerup)) + || (Util.isTouchDevice() && MarbleGame.instance.touchInput.powerupButton.pressed) + || Gamepad.isDown(Settings.gamepadSettings.powerup)) { + move.powerup = true; + } + + if (Key.isDown(Settings.controlsSettings.blast) + || (MarbleGame.instance.touchInput.blastbutton.pressed) + || Gamepad.isDown(Settings.gamepadSettings.blast)) + move.blast = true; + + if (Key.isDown(Settings.controlsSettings.respawn) || Gamepad.isDown(Settings.gamepadSettings.respawn)) { + move.respawn = true; + @:privateAccess Key.keyPressed[Settings.controlsSettings.respawn] = 0; + Gamepad.releaseKey(Settings.gamepadSettings.respawn); + } + + if (MarbleGame.instance.touchInput.movementInput.pressed) { + move.d.y = -MarbleGame.instance.touchInput.movementInput.value.x; + move.d.x = MarbleGame.instance.touchInput.movementInput.value.y; + } + } + + // quantize moves for client + var qx = Std.int((move.d.x * 16) + 16); + var qy = Std.int((move.d.y * 16) + 16); + move.d.x = (qx - 16) / 16.0; + move.d.y = (qy - 16) / 16.0; + } + + var netMove = new NetMove(move, motionDir, timeState.clone(), serverTicks, nextMoveId++); + queuedMoves.push(netMove); + + if (nextMoveId >= 65535) // 65535 is reserved for null move + nextMoveId = 0; + + var moveStartIdx = queuedMoves.length - maxSendMoveListSize; + if (moveStartIdx < 0) + moveStartIdx = 0; + + var b = new OutputBitStream(); + var movePacket = new MarbleMovePacket(); + movePacket.clientId = Net.clientId; + movePacket.moves = queuedMoves.slice(moveStartIdx); + movePacket.clientTicks = timeState.ticks; + b.writeByte(NetPacketType.MarbleMove); + movePacket.serialize(b); + + Net.sendPacketToHostUnreliable(b); + + return netMove; + } + + function copyMove(to:Int, from:Int) { + queuedMoves[to].move = queuedMoves[from].move; + queuedMoves[to].motionDir.load(queuedMoves[from].motionDir); + } + + public inline function duplicateLastMove() { + if (queuedMoves.length == 0) + return; + queuedMoves.insert(0, queuedMoves[0]); + } + + public static inline function packMove(m:NetMove, b:OutputBitStream) { + b.writeUInt16(m.id); + b.writeByte(Std.int((m.move.d.x * 16) + 16)); + b.writeByte(Std.int((m.move.d.y * 16) + 16)); + b.writeFlag(m.move.jump); + b.writeFlag(m.move.powerup); + b.writeFlag(m.move.blast); + b.writeFlag(m.move.respawn); + b.writeFloat(m.motionDir.x); + b.writeFloat(m.motionDir.y); + b.writeFloat(m.motionDir.z); + return b; + } + + public static inline function unpackMove(b:InputBitStream) { + var moveId = b.readUInt16(); + var move = new Move(); + move.d = new Vector(); + move.d.x = (b.readByte() - 16) / 16.0; + move.d.y = (b.readByte() - 16) / 16.0; + move.jump = b.readFlag(); + move.powerup = b.readFlag(); + move.blast = b.readFlag(); + move.respawn = b.readFlag(); + var motionDir = new Vector(); + motionDir.x = b.readFloat(); + motionDir.y = b.readFloat(); + motionDir.z = b.readFloat(); + var netMove = new NetMove(move, motionDir, MarbleGame.instance.world.timeState.clone(), 0, moveId); + return netMove; + } + + public inline function queueMove(m:NetMove) { + if (serverLastRecvMove < m.id && serverLastAckMove < m.id) { + queuedMoves.push(m); + serverLastRecvMove = m.id; + } + // if (queuedMoves.length != 0) { + // var lastQueuedMove = queuedMoves[queuedMoves.length - 1]; + // if (lastQueuedMove.id < m.id) + // queuedMoves.push(m); + // } else if (lastMove == null || lastMove.id < m.id) { + // queuedMoves.push(m); + // } + } + + public function getNextMove() { + if (Net.isHost) { + serverAvgMoveListSize *= (1 - serverSmoothMoveAvg); + serverAvgMoveListSize += serverSmoothMoveAvg * queuedMoves.length; + if (serverAvgMoveListSize < serverTargetMoveListSize - serverMoveListSizeSlack + && queuedMoves.length < serverTargetMoveListSize + && queuedMoves.length != 0) { + serverAvgMoveListSize = Math.max(Std.int(serverAvgMoveListSize + serverMoveListSizeSlack + 0.5), queuedMoves.length); + // serverAbnormalMoveCount++; + // if (serverAbnormalMoveCount > 3) { + // serverTargetMoveListSize += 1; + // if (serverTargetMoveListSize > serverMaxMoveListSize) + // serverTargetMoveListSize = serverMaxMoveListSize; + // } + // Send null move + return null; + } + if (queuedMoves.length > serverMaxMoveListSize + || (serverAvgMoveListSize > serverTargetMoveListSize + serverMoveListSizeSlack + && queuedMoves.length > serverTargetMoveListSize)) { + // if (queuedMoves.length > serverMaxMoveListSize) { + var dropAmt = queuedMoves.length - serverTargetMoveListSize; + while (dropAmt-- > 0) { + queuedMoves.pop(); + } + // } + serverAvgMoveListSize = serverTargetMoveListSize; + // serverAbnormalMoveCount++; + // if (serverAbnormalMoveCount > 3) { + // serverTargetMoveListSize -= 1; + // if (serverTargetMoveListSize < serverDefaultMinTargetMoveListSize) + // serverTargetMoveListSize = serverDefaultMinTargetMoveListSize; + // } else { + // serverAbnormalMoveCount = 0; + // } + } + } + if (queuedMoves.length == 0) { + // if (lastMove != null) { + // lastMove.id++; // So that we force client's move to be overriden by this one + // } + return lastMove; + } else { + lastMove = queuedMoves[0]; + queuedMoves.shift(); + lastAckMoveId = lastMove.id; + return lastMove; + } + } + + public inline function getQueueSize() { + return queuedMoves.length; + } + + public function acknowledgeMove(m:NetMove, timeState:TimeState) { + if (m.id == 65535 || m.id == -1) { + return null; + } + if (m.id <= lastAckMoveId) + return null; // Already acked + if (queuedMoves.length == 0) + return null; + if (m.id >= nextMoveId) { + return queuedMoves[0]; // Input lag + } + while (m.id != queuedMoves[0].id) { + queuedMoves.shift(); + } + var delta = -1; + var mv = null; + if (m.id == queuedMoves[0].id) { + delta = queuedMoves[0].id - lastAckMoveId; + mv = queuedMoves.shift(); + ackRTT = timeState.ticks - mv.timeState.ticks; + // maxMoves = ackRTT + 2; + } + lastAckMoveId = m.id; + return mv; + } + + public function getMoveForTick(m:Int) { + if (m <= lastAckMoveId) + return null; + if (m == 65535 || m == -1) + return null; + if (queuedMoves.length == 0) + return null; + for (i in 0...queuedMoves.length) { + if (queuedMoves[i].id == m) + return queuedMoves[i]; + if (queuedMoves[i].id > m) + return null; + } + return null; + } +} diff --git a/src/net/Net.hx b/src/net/Net.hx new file mode 100644 index 00000000..fb958e11 --- /dev/null +++ b/src/net/Net.hx @@ -0,0 +1,904 @@ +package net; + +import net.NetPacket.ExplodableUpdatePacket; +import gui.MPMessageGui; +import gui.MessageBoxOkDlg; +import gui.JoinServerGui; +import gui.MPPreGameDlg; +import net.NetPacket.ScoreboardPacket; +import gui.MPPlayMissionGui; +import gui.Canvas; +import net.MasterServerClient.RemoteServerInfo; +import src.ResourceLoader; +import src.AudioManager; +import net.NetPacket.GemPickupPacket; +import net.NetPacket.GemSpawnPacket; +import net.BitStream.InputBitStream; +import net.BitStream.OutputBitStream; +import net.NetPacket.PowerupPickupPacket; +import net.ClientConnection; +import net.NetPacket.MarbleUpdatePacket; +import net.NetPacket.MarbleMovePacket; +import haxe.Json; +import datachannel.RTCPeerConnection; +import datachannel.RTCDataChannel; +import src.Console; +import net.NetCommands; +import src.MarbleGame; +import src.Settings; + +enum abstract NetPacketType(Int) from Int to Int { + var NullPacket; + var ClientIdAssign; + var NetCommand; + var Ping; + var PingBack; + var MarbleUpdate; + var MarbleMove; + var PowerupPickup; + var GemSpawn; + var GemPickup; + var ExplodableUpdate; + var PlayerInfo; + var ScoreBoardInfo; +} + +@:publicFields +class ServerInfo { + var id:String; + var name:String; + var hostname:String; + var description:String; + var players:Int; + var maxPlayers:Int; + var password:String; + var state:String; + var platform:NetPlatform; + + public function new(name:String, hostname:String, description:String, players:Int, maxPlayers:Int, password:String, state:String, platform:NetPlatform) { + this.id = Uuid.v4(); + this.name = name; + this.hostname = hostname; + this.description = description; + this.players = players; + this.maxPlayers = maxPlayers; + this.password = password; + this.state = state; + this.platform = platform; + } +} + +@:publicFields +@:structInit +class ConnectedServerInfo { + var name:String; + var description:String; + var quickRespawn:Bool; + var forceSpectator:Bool; + var competitiveMode:Bool; + var oldSpawns:Bool; +} + +class Net { + static var client:RTCPeerConnection; + static var clientDatachannel:RTCDataChannel; + static var clientDatachannelUnreliable:RTCDataChannel; + + public static var isMP:Bool; + public static var isHost:Bool; + public static var isClient:Bool; + + public static var lobbyHostReady:Bool; + public static var lobbyClientReady:Bool; + public static var hostReady:Bool; + public static var hostSpectate:Bool; + public static var clientSpectate:Bool; + + static var clientIdAllocs:Int = 1; + public static var clientId:Int; + public static var networkRNG:Float; + public static var clients:Map = []; + public static var clientIdMap:Map = []; + public static var clientConnection:ClientConnection; + public static var serverInfo:ServerInfo; + public static var remoteServerInfo:RemoteServerInfo; + public static var connectedServerInfo:ConnectedServerInfo; + + static var stunServers = ["stun:stun.l.google.com:19302"]; + + public static var turnServer:String = ""; + + public static function hostServer(name:String, description:String, maxPlayers:Int, password:String, onHosted:() -> Void) { + serverInfo = new ServerInfo(name, Settings.highscoreName, description, 1, maxPlayers, password, "LOBBY", getPlatform()); + MasterServerClient.connectToMasterServer(() -> { + isHost = true; + isClient = false; + clientId = 0; + isMP = true; + MasterServerClient.instance.sendServerInfo(serverInfo); + Net.connectedServerInfo = { + name: name, + description: description, + competitiveMode: Settings.serverSettings.competitiveMode, + quickRespawn: Settings.serverSettings.quickRespawn, + forceSpectator: Settings.serverSettings.forceSpectators, + oldSpawns: Settings.serverSettings.oldSpawns + }; + onHosted(); + }); + } + + public static function addClientFromSdp(sdpString:String, onFinishSdp:String->Void) { + var peer = new RTCPeerConnection(stunServers, "0.0.0.0"); + var sdpObj = Json.parse(sdpString); + peer.setRemoteDescription(sdpObj.sdp, sdpObj.type); + addClient(peer, onFinishSdp); + } + + static function addClient(peer:RTCPeerConnection, onFinishSdp:String->Void) { + var candidates = []; + peer.onLocalCandidate = (c) -> { + Console.log('Local candidate: ' + c); + if (c != "") + candidates.push('a=${c}'); + } + peer.onStateChange = (s) -> { + switch (s) { + case RTC_CLOSED: + Console.log("RTC State change: Connection closed!"); + case RTC_CONNECTED: + Console.log("RTC State change: Connected!"); + case RTC_CONNECTING: + Console.log("RTC State change: Connecting..."); + case RTC_DISCONNECTED: + Console.log("RTC State change: Disconnected!"); + case RTC_FAILED: + Console.log("RTC State change: Failed!"); + case RTC_NEW: + Console.log("RTC State change: New..."); + } + } + + var sdpFinished = false; + + var finishSdp = () -> { + if (sdpFinished) + return; + if (peer == null) + return; + sdpFinished = true; + var sdpObj = StringTools.trim(peer.localDescription); + sdpObj = sdpObj + '\r\n' + candidates.join('\r\n') + '\r\n'; + onFinishSdp(Json.stringify({ + sdp: sdpObj, + type: "answer" + })); + } + + peer.onGatheringStateChange = (s) -> { + switch (s) { + case RTC_GATHERING_COMPLETE: + Console.log("Gathering complete!"); + case RTC_GATHERING_INPROGRESS: + Console.log("Gathering in progress..."); + case RTC_GATHERING_NEW: + Console.log("Gathering new..."); + } + if (s == RTC_GATHERING_COMPLETE) { + finishSdp(); + } + } + var reliable:datachannel.RTCDataChannel = null; + var unreliable:datachannel.RTCDataChannel = null; + peer.onDataChannel = (dc:datachannel.RTCDataChannel) -> { + if (dc.name == "mp") + reliable = dc; + if (dc.name == "unreliable") { + unreliable = dc; + switch (dc.reliability) { + case Reliable: + Console.log("Error opening unreliable datachannel!"); + case Unreliable(maxRetransmits, maxLifetime): + Console.log("Opened unreliable datachannel: " + maxRetransmits + " " + maxLifetime); + } + } + if (reliable != null && unreliable != null) + onClientConnect(peer, reliable, unreliable); + } + } + + static function addGhost(id:Int) { + var ghost = new DummyConnection(id); + clientIdMap[id] = ghost; + } + + public static function joinServer(serverName:String, password:String, connectedCb:() -> Void) { + MasterServerClient.connectToMasterServer(() -> { + client = new RTCPeerConnection(stunServers, "0.0.0.0"); + var candidates = []; + + var closing = false; + + isMP = true; + isHost = false; + isClient = true; + + var closeFunc = (msg:String, forceShow:Bool) -> { + if (closing) + return; + closing = true; + var weLeftOurselves = !Net.isClient; // If we left ourselves, this would be set to false due to order of ops, disconnect being called first, and then the datachannel closing + disconnect(); + if (MarbleGame.instance.world != null) { + MarbleGame.instance.quitMission(); + } + if (!weLeftOurselves || forceShow) { + if (MarbleGame.canvas.content is MPMessageGui) { + var loadGui:MPMessageGui = cast MarbleGame.canvas.content; + if (loadGui != null) { + loadGui.setTexts("Error", msg); + } + } else { + MarbleGame.canvas.setContent(new MPMessageGui("Error", msg)); + } + } + } + + client.onLocalCandidate = (c) -> { + Console.log('Local candidate: ' + c); + if (c != "") + candidates.push('a=${c}'); + } + client.onStateChange = (s) -> { + switch (s) { + case RTC_CLOSED: + Console.log("RTC State change: Connection closed!"); + closeFunc("Connection closed", false); + case RTC_CONNECTED: + Console.log("RTC State change: Connected!"); + case RTC_CONNECTING: + Console.log("RTC State change: Connecting..."); + case RTC_DISCONNECTED: + Console.log("RTC State change: Disconnected!"); + case RTC_FAILED: + Console.log("RTC State change: Failed!"); + case RTC_NEW: + Console.log("RTC State change: New..."); + } + } + + var sdpFinished = false; + var finishSdp = () -> { + if (sdpFinished) + return; + sdpFinished = true; + if (client == null) + return; + Console.log("Local Description Set!"); + var sdpObj = StringTools.trim(client.localDescription); + sdpObj = sdpObj + '\r\n' + candidates.join('\r\n') + '\r\n'; + MasterServerClient.instance.sendConnectToServer(serverName, Json.stringify({ + sdp: sdpObj, + type: "offer" + }), password); + } + + client.onGatheringStateChange = (s) -> { + switch (s) { + case RTC_GATHERING_COMPLETE: + Console.log("Gathering complete!"); + case RTC_GATHERING_INPROGRESS: + Console.log("Gathering in progress..."); + case RTC_GATHERING_NEW: + Console.log("Gathering new..."); + } + if (s == RTC_GATHERING_COMPLETE) { + finishSdp(); + } + } + + // haxe.Timer.delay(() -> { + // finishSdp(); + // }, 5000); + + clientDatachannel = client.createDatachannel("mp"); + clientDatachannelUnreliable = client.createDatachannelWithOptions("unreliable", true, null, 600); + + var openFlags = 0; + + var onDatachannelOpen = (idx:Int) -> { + if (!Net.isMP) { + // Close + client.close(); + return; + } + openFlags |= idx; + if (openFlags == 3) { + if (MarbleGame.canvas.content is MPMessageGui) { + var loadGui:MPMessageGui = cast MarbleGame.canvas.content; + if (loadGui != null) { + loadGui.setTexts("Please Wait", "Handshaking"); + } + } + Console.log("Successfully connected!"); + clients.set(client, new ClientConnection(0, client, clientDatachannel, clientDatachannelUnreliable)); // host is always 0 + clientIdMap[0] = clients[client]; + clientConnection = cast clients[client]; + onConnectedToServer(); + haxe.Timer.delay(() -> connectedCb(), 1500); // 1.5 second delay to do the RTT calculation + } + } + var onDatachannelMessage = (dc:RTCDataChannel, b:haxe.io.Bytes) -> { + onPacketReceived(clientConnection, client, clientDatachannel, new InputBitStream(b)); + } + + var onDatachannelClose = (dc:RTCDataChannel) -> { + closeFunc("Disconnected", false); + } + + var onDatachannelError = (msg:String) -> { + Console.log('Errored out due to ${msg}'); + closeFunc("Connection error", false); + } + + clientDatachannel.onOpen = (n) -> { + onDatachannelOpen(1); + } + clientDatachannel.onMessage = (b) -> { + onDatachannelMessage(clientDatachannel, b); + } + clientDatachannel.onClosed = () -> { + onDatachannelClose(clientDatachannel); + } + clientDatachannel.onError = (msg) -> { + onDatachannelError(msg); + } + clientDatachannelUnreliable.onOpen = (n) -> { + onDatachannelOpen(2); + } + clientDatachannelUnreliable.onMessage = (b) -> { + onDatachannelMessage(clientDatachannelUnreliable, b); + } + clientDatachannelUnreliable.onClosed = () -> { + onDatachannelClose(clientDatachannelUnreliable); + } + clientDatachannelUnreliable.onError = (msg) -> { + onDatachannelError(msg); + } + }); + } + + public static function disconnect() { + if (Net.isClient) { + NetCommands.clientLeave(Net.clientId); + Net.isMP = false; + Net.isClient = false; + Net.isHost = false; + if (Net.client != null) + Net.client.close(); + Net.client = null; + Net.clientDatachannel = null; + Net.clientId = 0; + Net.clientIdAllocs = 1; + Net.clients.clear(); + Net.clientIdMap.clear(); + Net.clientConnection = null; + Net.serverInfo = null; + Net.remoteServerInfo = null; + Net.connectedServerInfo = null; + Net.lobbyHostReady = false; + Net.lobbyClientReady = false; + Net.hostReady = false; + Net.hostSpectate = false; + Net.clientSpectate = false; + MPPlayMissionGui.allChats = []; + // MultiplayerLevelSelectGui.custSelected = false; + } + if (Net.isHost) { + NetCommands.serverClosed(); + for (client => gc in clients) { + client.close(); + } + Net.isMP = false; + Net.isClient = false; + Net.isHost = false; + Net.clientId = 0; + Net.clientIdAllocs = 1; + Net.clients.clear(); + Net.clientIdMap.clear(); + MasterServerClient.disconnectFromMasterServer(); + Net.serverInfo = null; + Net.remoteServerInfo = null; + Net.connectedServerInfo = null; + Net.lobbyHostReady = false; + Net.lobbyClientReady = false; + Net.hostReady = false; + Net.hostSpectate = false; + Net.clientSpectate = false; + MPPlayMissionGui.allChats = []; + // MultiplayerLevelSelectGui.custSelected = false; + } + } + + public static function checkPacketTimeout(dt:Float) { + if (!Net.isMP) + return; + static var accum = 0.0; + static var wsAccum = 0.0; + accum += dt; + wsAccum += dt; + if (accum > 1.0) { + accum = 0; + var t = Console.time(); + for (dc => cc in clients) { + if (cc is ClientConnection) { + var conn = cast(cc, ClientConnection); + if (conn.needsTimeoutWarn(t)) { + conn.didWarnTimeout = true; + if (Net.isClient) { + NetCommands.requestPing(); + } + if (Net.isHost) { + NetCommands.pingClient(cc, t); + } + } + if (conn.needsTimeoutKick(t)) { + if (Net.isHost) { + dc.close(); + } + if (Net.isClient) { + disconnect(); + if (MarbleGame.instance.world != null) { + MarbleGame.instance.quitMission(); + } + if (!(MarbleGame.canvas.content is MPMessageGui)) { + var loadGui = new MPMessageGui("Error", "Timed out"); + MarbleGame.canvas.setContent(loadGui); + } + } + } + } + } + } + if (wsAccum >= 15.0) { + wsAccum = 0; + if (Net.isHost) { + if (MasterServerClient.instance != null) + MasterServerClient.instance.sendServerInfo(serverInfo); // Heartbeat + else + MasterServerClient.connectToMasterServer(() -> { + MasterServerClient.instance.sendServerInfo(serverInfo); // Heartbeat + }); + } + if (Net.isClient) { + if (MasterServerClient.instance != null) + MasterServerClient.instance.heartBeat(); + else + MasterServerClient.connectToMasterServer(() -> { + MasterServerClient.instance.heartBeat(); + }); + } + } + } + + static function onClientConnect(c:RTCPeerConnection, dc:RTCDataChannel, dcu:RTCDataChannel) { + if (!Net.isMP) { + c.close(); + return; + } + var clientId = allocateClientId(); + if (clientId == -1) { + c.close(); + return; // Failed to allocate ID + } + var cc = new ClientConnection(clientId, c, dc, dcu); + clients.set(c, cc); + clientIdMap[clientId] = clients[c]; + cc.lastRecvTime = Console.time(); // So it doesnt get timed out + + var closing = false; + + var onMessage = (dc:RTCDataChannel, msgBytes:haxe.io.Bytes) -> { + onPacketReceived(cc, c, dc, new InputBitStream(msgBytes)); + } + var onClosed = () -> { + if (closing) + return; + closing = true; + clients.remove(c); + onClientLeave(cc); + } + + var onError = (msg:String) -> { + if (closing) + return; + closing = true; + clients.remove(c); + Console.log('Client ${cc.id} errored out due to: ${msg}'); + onClientLeave(cc); + } + + dc.onMessage = (msgBytes) -> { + onMessage(dc, msgBytes); + } + dc.onClosed = () -> { + onClosed(); + } + dc.onError = (msg) -> { + onError(msg); + } + + dcu.onMessage = (msgBytes) -> { + onMessage(dcu, msgBytes); + } + dcu.onClosed = () -> { + onClosed(); + } + dcu.onError = (msg) -> { + onError(msg); + } + + var b = haxe.io.Bytes.alloc(2); + b.set(0, ClientIdAssign); + b.set(1, clientId); + dc.sendBytes(b); + Console.log("Client has connected!"); + // Send the ping packet to calculcate the RTT + var b = haxe.io.Bytes.alloc(2); + b.set(0, Ping); + b.set(1, 3); // Count + cast(clients[c], ClientConnection).pingSendTime = Console.time(); + dc.sendBytes(b); + Console.log("Sending ping packet!"); + + // AudioManager.playSound(ResourceLoader.getAudio("data/sound/spawn_alternate.wav").resource); + + serverInfo.players = 1; + for (k => v in clients) { // Recount + serverInfo.players++; + } + + serverInfo.players++; + MasterServerClient.instance.sendServerInfo(serverInfo); // notify the server of the new player + + if (MarbleGame.canvas.content is MPPlayMissionGui) { + cast(MarbleGame.canvas.content, MPPlayMissionGui).updateLobbyNames(); + } + + if (MarbleGame.canvas.children[MarbleGame.canvas.children.length - 1] is MPPreGameDlg) { + cast(MarbleGame.canvas.children[MarbleGame.canvas.children.length - 1], MPPreGameDlg).updatePlayerList(); + } + } + + static function onConnectedToServer() { + Console.log("Connected to the server!"); + // Send the ping packet to calculate the RTT + var b = haxe.io.Bytes.alloc(2); + b.set(0, Ping); + b.set(1, 3); // Count + cast(clients[client], ClientConnection).pingSendTime = Console.time(); + clientDatachannel.sendBytes(b); + Console.log("Sending ping packet!"); + } + + static function onClientLeave(cc:ClientConnection) { + if (!Net.isMP || cc == null) + return; + NetCommands.clientDisconnected(cc.id); + + if (cc.id != 0) { + freeClientId(cc.id); + } + + serverInfo.players = 1; + for (k => v in clients) { // Recount + serverInfo.players++; + } + + MasterServerClient.instance.sendServerInfo(serverInfo); // notify the server of the player leave + + // AudioManager.playSound(ResourceLoader.getAudio("data/sound/infotutorial.wav").resource); + + if (MarbleGame.canvas.content is MPPlayMissionGui) { + cast(MarbleGame.canvas.content, MPPlayMissionGui).updateLobbyNames(); + } + + if (MarbleGame.canvas.children[MarbleGame.canvas.children.length - 1] is MPPreGameDlg) { + cast(MarbleGame.canvas.children[MarbleGame.canvas.children.length - 1], MPPreGameDlg).updatePlayerList(); + } + } + + static function onClientHandshakeComplete(conn:ClientConnection) { + // Send our current mission to connecting client + // if (MultiplayerLevelSelectGui.custSelected) { + // NetCommands.setLobbyCustLevelNameClient(conn, MultiplayerLevelSelectGui.custPath); + // } else { + NetCommands.sendServerSettingsClient(conn, Settings.serverSettings.name, Settings.serverSettings.description, Settings.serverSettings.quickRespawn, + Settings.serverSettings.forceSpectators, Settings.serverSettings.competitiveMode, Settings.serverSettings.oldSpawns); + NetCommands.setLobbyLevelIndexClient(conn, MPPlayMissionGui.currentCategoryStatic, MPPlayMissionGui.currentSelectionStatic); + // } + + if (serverInfo.state == "PLAYING") { // We initiated the game, directly add in the marble + // if (MultiplayerLevelSelectGui.custSelected) { + // NetCommands.playCustomLevelMidJoinClient(conn, MultiplayerLevelSelectGui.custPath); + // } else + NetCommands.playLevelMidJoinClient(conn, MPPlayMissionGui.currentCategoryStatic, MPPlayMissionGui.currentSelectionStatic); + MarbleGame.instance.world.addJoiningClient(conn, () -> {}); + var playerInfoBytes = sendPlayerInfosBytes(); + for (dc => cc in clients) { + if (cc != conn) { + cc.sendBytes(playerInfoBytes); + NetCommands.addMidGameJoinMarbleClient(cc, conn.id); + } + } + } + if (serverInfo.state == "LOBBY") { + // Connect client to lobby + NetCommands.enterLobbyClient(conn); + } + } + + public static function sendPlayerInfosBytes() { + var b = new haxe.io.BytesOutput(); + b.writeByte(PlayerInfo); + var cnt = 0; + for (c in clientIdMap) + cnt++; + b.writeByte(cnt + 1); // all + host + for (c => v in clientIdMap) { + b.writeByte(c); + b.writeByte(v.lobbyReady ? 1 : 0); + b.writeByte(v.platform); + b.writeByte(v.marbleId); + b.writeByte(v.marbleCatId); + b.writeByte(v.spectator ? 1 : 0); + var name = v.getName(); + b.writeByte(name.length); + for (i in 0...name.length) { + b.writeByte(StringTools.fastCodeAt(name, i)); + } + } + // Write host data + b.writeByte(0); + b.writeByte(Net.lobbyHostReady ? 1 : 0); + b.writeByte(getPlatform()); + b.writeByte(Settings.optionsSettings.marbleIndex); + b.writeByte(Settings.optionsSettings.marbleCategoryIndex); + b.writeByte(Net.hostSpectate ? 1 : 0); + var name = Settings.highscoreName; + b.writeByte(name.length); + for (i in 0...name.length) { + b.writeByte(StringTools.fastCodeAt(name, i)); + } + return b.getBytes(); + } + + static function onPacketReceived(conn:ClientConnection, c:RTCPeerConnection, dc:RTCDataChannel, input:InputBitStream) { + if (!Net.isMP) + return; // only for MP + conn.lastRecvTime = Console.time(); + conn.didWarnTimeout = false; + + var packetType = input.readByte(); + switch (packetType) { + case NetCommand: + NetCommands.readPacket(input); + + case ClientIdAssign: + clientId = input.readByte(); // 8 bit client id, hopefully we don't exceed this + Console.log('Client ID set to ${clientId}'); + NetCommands.setPlayerData(clientId, Settings.highscoreName, Settings.optionsSettings.marbleIndex, + Settings.optionsSettings.marbleCategoryIndex, false); // Send our player name to the server + NetCommands.transmitPlatform(clientId, getPlatform()); // send our platform too + + case Ping: + var pingLeft = input.readByte(); + Console.log("Got ping packet!"); + var b = haxe.io.Bytes.alloc(2); + b.set(0, PingBack); + b.set(1, pingLeft); + dc.sendBytes(b); + + case PingBack: + var pingLeft = input.readByte(); + Console.log("Got pingback packet!"); + var now = Console.time(); + conn._rttRecords.push((now - conn.pingSendTime)); + if (pingLeft > 0) { + conn.pingSendTime = now; + var b = haxe.io.Bytes.alloc(2); + b.set(0, Ping); + b.set(1, pingLeft - 1); + dc.sendBytes(b); + } else { + for (r in conn._rttRecords) + conn.rtt += r; + conn.rtt /= conn._rttRecords.length; + Console.log('Got RTT ${conn.rtt} for client ${conn.id}'); + if (Net.isHost) { + var b = sendPlayerInfosBytes(); + for (cc in clients) { + cc.sendBytes(b); + } + onClientHandshakeComplete(conn); + } + } + + case MarbleUpdate: + var marbleUpdatePacket = new MarbleUpdatePacket(); + marbleUpdatePacket.deserialize(input); + var cc = marbleUpdatePacket.clientId; + var client = cc != Net.clientId ? clientIdMap[cc] : Net.clientConnection; + client.pingTicks = marbleUpdatePacket.pingTicks; + if (MarbleGame.instance.world != null && !MarbleGame.instance.world._disposed) { + var m = MarbleGame.instance.world.lastMoves; + m.enqueue(marbleUpdatePacket); + } + + case MarbleMove: + if (MarbleGame.instance.world != null && !MarbleGame.instance.world._disposed) { + var movePacket = new MarbleMovePacket(); + movePacket.deserialize(input); + var cc = clientIdMap[movePacket.clientId]; + if (cc.state == GAME) { + var startRecvId = cc.moveManager.getQueueSize(); + for (move in movePacket.moves) + cc.queueMove(move); + var endRecvId = cc.moveManager.getQueueSize(); + cc.pingTicks = movePacket.moves.length - (endRecvId - startRecvId); + } + } + + case PowerupPickup: + var powerupPickupPacket = new PowerupPickupPacket(); + powerupPickupPacket.deserialize(input); + if (MarbleGame.instance.world != null && !MarbleGame.instance.world._disposed) { + var m = @:privateAccess MarbleGame.instance.world.powerupPredictions; + m.acknowledgePowerupPickup(powerupPickupPacket, MarbleGame.instance.world.timeState, clientConnection.moveManager.getQueueSize()); + } + + case GemSpawn: + var gemSpawnPacket = new GemSpawnPacket(); + gemSpawnPacket.deserialize(input); + if (MarbleGame.instance.world != null && !MarbleGame.instance.world._disposed) { + MarbleGame.instance.world.spawnHuntGemsClientSide(gemSpawnPacket.gemIds, gemSpawnPacket.expireds); + @:privateAccess MarbleGame.instance.world.gemPredictions.acknowledgeGemSpawn(gemSpawnPacket); + } + + case GemPickup: + var gemPickupPacket = new GemPickupPacket(); + gemPickupPacket.deserialize(input); + if (MarbleGame.instance.world != null && !MarbleGame.instance.world._disposed) { + @:privateAccess MarbleGame.instance.world.playGui.incrementPlayerScore(gemPickupPacket.clientId, gemPickupPacket.scoreIncr); + @:privateAccess MarbleGame.instance.world.gemPredictions.acknowledgeGemPickup(gemPickupPacket); + } + + case PlayerInfo: + var count = input.readByte(); + var newP = false; + for (i in 0...count) { + var id = input.readByte(); + var cready = input.readByte() == 1; + var platform = input.readByte(); + var marble = input.readByte(); + var marbleCat = input.readByte(); + var cspectator = input.readByte() == 1; + if (id != 0 && id != Net.clientId && !clientIdMap.exists(id)) { + Console.log('Adding ghost connection ${id}'); + addGhost(id); + newP = true; + } + var nameLength = input.readByte(); + var name = ""; + for (j in 0...nameLength) { + name += String.fromCharCode(input.readByte()); + } + if (clientIdMap.exists(id)) { + clientIdMap[id].setName(name); + clientIdMap[id].setMarbleId(marble, marbleCat); + clientIdMap[id].lobbyReady = cready; + clientIdMap[id].platform = platform; + clientIdMap[id].spectator = cspectator; + } + if (Net.clientId == id) { + Net.lobbyClientReady = cready; + Net.clientSpectate = cspectator; + } + } + if (MarbleGame.canvas.content is MPPlayMissionGui) { + cast(MarbleGame.canvas.content, MPPlayMissionGui).updateLobbyNames(); + } + if (MarbleGame.canvas.children[MarbleGame.canvas.children.length - 1] is MPPreGameDlg) { + cast(MarbleGame.canvas.children[MarbleGame.canvas.children.length - 1], MPPreGameDlg).updatePlayerList(); + } + + case ScoreBoardInfo: + var scoreboardPacket = new ScoreboardPacket(); + scoreboardPacket.deserialize(input); + if (MarbleGame.instance.world != null && !MarbleGame.instance.world._disposed) { + @:privateAccess MarbleGame.instance.world.playGui.updatePlayerScores(scoreboardPacket); + } + + case ExplodableUpdate: + var explodableUpdatePacket = new ExplodableUpdatePacket(); + explodableUpdatePacket.deserialize(input); + if (MarbleGame.instance.world != null && !MarbleGame.instance.world._disposed) { + @:privateAccess MarbleGame.instance.world.explodablePredictions.acknowledgeExplodableUpdate(explodableUpdatePacket); + } + + case _: + Console.log("unknown command: " + packetType); + } + } + + static function allocateClientId() { + for (id in 0...32) { + if (Net.clientIdAllocs & (1 << id) == 0) { + Net.clientIdAllocs |= (1 << id); + return id; + } + } + return -1; + } + + static function freeClientId(id:Int) { + Net.clientIdAllocs &= ~(1 << id); + } + + public static function sendPacketToAll(packetData:OutputBitStream) { + var bytes = packetData.getBytes(); + for (c => v in clients) { + v.sendBytes(bytes); + } + } + + public static function sendPacketToIngame(packetData:OutputBitStream) { + var bytes = packetData.getBytes(); + for (c => v in clients) { + if (v.state == GAME) + v.sendBytes(bytes); + } + } + + public static function sendPacketToHost(packetData:OutputBitStream) { + if (clientDatachannel.state == Open) { + var bytes = packetData.getBytes(); + clientDatachannel.sendBytes(bytes); + } + } + + public static function sendPacketToHostUnreliable(packetData:OutputBitStream) { + if (clientDatachannelUnreliable.state == Open) { + var bytes = packetData.getBytes(); + clientDatachannelUnreliable.sendBytes(bytes); + } + } + + public static function sendPacketToClient(client:GameConnection, packetData:OutputBitStream) { + var bytes = packetData.getBytes(); + client.sendBytes(bytes); + } + + public static function addDummyConnection() { + if (Net.isHost) { + addGhost(Net.clientId++); + } + } + + public static inline function getPlatform() { + #if js + return NetPlatform.Web; + #end + #if hl + #if MACOS_BUNDLE + return NetPlatform.MacOS; + #else + #if android + return NetPlatform.Android; + #else + return NetPlatform.PC; + #end + #end + #end + } +} diff --git a/src/net/NetCommands.hx b/src/net/NetCommands.hx new file mode 100644 index 00000000..d8bce7b7 --- /dev/null +++ b/src/net/NetCommands.hx @@ -0,0 +1,459 @@ +package net; + +import gui.MPMessageGui; +import gui.MessageBoxOkDlg; +import gui.JoinServerGui; +import gui.MPExitGameDlg; +import gui.MPEndGameGui; +import gui.MPPreGameDlg; +import gui.MPPlayMissionGui; +import net.ClientConnection.NetPlatform; +import gui.EndGameGui; +import modes.HuntMode; +import net.ClientConnection.GameplayState; +import net.Net.NetPacketType; +import src.MarbleGame; +import src.MissionList; +import src.Console; +import src.Marbleland; +import src.Settings; +import src.Util; +import src.AudioManager; +import src.ResourceLoader; + +@:build(net.RPCMacro.build()) +class NetCommands { + @:rpc(server) public static function setLobbyLevelIndex(category:String, i:Int) { + if (MPPlayMissionGui.setLevelFn == null) { + MPPlayMissionGui.currentCategoryStatic = category; + MPPlayMissionGui.currentSelectionStatic = i; + } else { + MPPlayMissionGui.currentCategoryStatic = category; + MPPlayMissionGui.currentSelectionStatic = i; + MPPlayMissionGui.setLevelFn(category, i); + } + } + + // @:rpc(server) public static function setLobbyCustLevelName(str:String) { + // if (MPPlayMissionGui.setLevelFn != null) { + // MPPlayMissionGui.setLevelStr(str); + // } else { + // MultiplayerLevelSelectGui.custSelected = true; + // MultiplayerLevelSelectGui.custPath = str; + // } + // } + + @:rpc(server) public static function playLevel(category:String, levelIndex:Int) { + MPPlayMissionGui.playSelectedLevel(category, levelIndex); + if (Net.isHost) { + Net.serverInfo.state = "WAITING"; + MasterServerClient.instance.sendServerInfo(Net.serverInfo); // notify the server of the wait state + } + } + + // @:rpc(server) public static function playCustomLevel(levelPath:String) { + // var levelEntry = MPCustoms.missionList.filter(x -> x.path == levelPath)[0]; + // MarbleGame.canvas.setContent(new MultiplayerLoadingGui("Downloading", false)); + // MPCustoms.play(levelEntry, () -> {}, () -> { + // MarbleGame.canvas.setContent(new MultiplayerGui()); + // Net.disconnect(); // disconnect from the server + // }); + // if (Net.isHost) { + // Net.serverInfo.state = "WAITING"; + // MasterServerClient.instance.sendServerInfo(Net.serverInfo); // notify the server of the wait state + // } + // } + + @:rpc(server) public static function playLevelMidJoin(category:String, levelIndex:Int) { + if (Net.isClient) { + MissionList.buildMissionList(); + if (category == "custom") { + var curMission = Marbleland.multiplayerMissions[levelIndex]; + MarbleGame.instance.playMission(curMission, true); + } else { + var difficultyMissions = MissionList.missionList['multiplayer'][category]; + var curMission = difficultyMissions[levelIndex]; + MarbleGame.instance.playMission(curMission, true); + } + @:privateAccess MarbleGame.instance.world._skipPreGame = true; + } + } + + // @:rpc(server) public static function playCustomLevelMidJoin(path:String) { + // if (Net.isClient) { + // playCustomLevel(path); + // } + // } + + @:rpc(server) public static function enterLobby() { + if (Net.isClient) { + MarbleGame.canvas.setContent(new MPPlayMissionGui(false)); + } + } + + @:rpc(server) public static function setNetworkRNG(rng:Float) { + Net.networkRNG = rng; + if (MarbleGame.instance.world != null) { + var gameMode = MarbleGame.instance.world.gameMode; + if (gameMode is modes.HuntMode) { + var hunt:modes.HuntMode = cast gameMode; + @:privateAccess hunt.rng.setSeed(cast rng); + @:privateAccess hunt.rng2.setSeed(cast rng); + } + } + } + + @:rpc(client) public static function toggleReadiness(clientId:Int) { + if (Net.isHost) { + if (clientId == 0) + Net.lobbyHostReady = !Net.lobbyHostReady; + else + Net.clientIdMap[clientId].toggleLobbyReady(); + var allReady = true; + for (id => client in Net.clientIdMap) { + if (!client.lobbyReady) { + allReady = false; + break; + } + } + if (MarbleGame.canvas.content is MPPlayMissionGui) { + cast(MarbleGame.canvas.content, MPPlayMissionGui).updateLobbyNames(); + } + if (MarbleGame.canvas.children[MarbleGame.canvas.children.length - 1] is MPPreGameDlg) { + cast(MarbleGame.canvas.children[MarbleGame.canvas.children.length - 1], MPPreGameDlg).updatePlayerList(); + } + var b = Net.sendPlayerInfosBytes(); + for (cc in Net.clients) { + cc.sendBytes(b); + } + + if (allReady && Net.lobbyHostReady) { + // if (MultiplayerLevelSelectGui.custSelected) { + // NetCommands.playCustomLevel(MultiplayerLevelSelectGui.custPath); + // } else + if (MarbleGame.instance.world == null) { + NetCommands.playLevel(MPPlayMissionGui.currentCategoryStatic, MPPlayMissionGui.currentSelectionStatic); + } else {} + } + } + } + + @:rpc(client) public static function toggleSpectate(clientId:Int) { + if (Net.isHost) { + if (clientId == 0) + Net.hostSpectate = !Net.hostSpectate; + else + Net.clientIdMap[clientId].toggleSpectate(); + + if (MarbleGame.canvas.content is MPPlayMissionGui) { + cast(MarbleGame.canvas.content, MPPlayMissionGui).updateLobbyNames(); + } + if (MarbleGame.canvas.children[MarbleGame.canvas.children.length - 1] is MPPreGameDlg) { + cast(MarbleGame.canvas.children[MarbleGame.canvas.children.length - 1], MPPreGameDlg).updatePlayerList(); + } + var b = Net.sendPlayerInfosBytes(); + for (cc in Net.clients) { + cc.sendBytes(b); + } + } + } + + @:rpc(client) public static function clientIsReady(clientId:Int) { + if (Net.isHost) { + if (Net.serverInfo.state == "WAITING") { + Console.log('Client ${clientId} is ready!'); + if (clientId != -1) + Net.clientIdMap[clientId].ready(); + else + Net.hostReady = true; + var allReady = true; + for (id => client in Net.clientIdMap) { + if (client.state != GameplayState.GAME) { + allReady = false; + break; + } + } + if (allReady && Net.hostReady) { + if (MarbleGame.instance.world != null) { + Console.log('All are ready, starting'); + MarbleGame.instance.world.allClientsReady(); + } + Net.serverInfo.state = "PLAYING"; + MasterServerClient.instance.sendServerInfo(Net.serverInfo); // notify the server of the playing state + } + } else {} + } + } + + @:rpc(client) public static function requestMidGameJoinState(clientId:Int) { + if (Net.isHost) { + // Mid game join + Console.log("Mid game join for client " + clientId); + // Send em our present world state + if (MarbleGame.instance.world != null) { + var packets = MarbleGame.instance.world.getWorldStateForClientJoin(); + var c = Net.clientIdMap[clientId]; + + for (packet in packets) { + c.sendBytes(packet); + } + Net.clientIdMap[clientId].ready(); + + if (Settings.serverSettings.forceSpectators) { + Net.clientIdMap[clientId].spectator = true; + var b = Net.sendPlayerInfosBytes(); + for (cc in Net.clients) { + cc.sendBytes(b); + } + } + + if (MarbleGame.instance.world.serverStartTicks == 0) { + var allReady = true; + for (id => client in Net.clientIdMap) { + if (client.state != GameplayState.GAME) { + allReady = false; + break; + } + } + if (allReady) { + if (MarbleGame.instance.world != null) { + MarbleGame.instance.world.allClientsReady(); + } + } + } else { + // Send the start ticks + NetCommands.setStartTicksMidJoinClient(c, MarbleGame.instance.world.serverStartTicks, MarbleGame.instance.world.timeState.ticks); + } + } + } + } + + @:rpc(server) public static function addMidGameJoinMarble(cc:Int) { + if (Net.isClient) { + if (MarbleGame.instance.world != null) { + MarbleGame.instance.world.addJoiningClientGhost(Net.clientIdMap[cc], () -> {}); + } + } + } + + @:rpc(server) public static function setStartTicks(ticks:Int) { + if (MarbleGame.instance.world != null) { + MarbleGame.instance.world.serverStartTicks = ticks + 1; // Extra tick so we don't get 0 + if (Net.isClient) { + @:privateAccess MarbleGame.instance.world.marble.serverTicks = ticks; + } + MarbleGame.instance.world.startTime = MarbleGame.instance.world.timeState.timeSinceLoad + 3.5 + 0.032; // 1 extra tick + + if (MarbleGame.canvas.children[MarbleGame.canvas.children.length - 1] is MPPreGameDlg) { + MarbleGame.canvas.popDialog(MarbleGame.canvas.children[MarbleGame.canvas.children.length - 1]); + MarbleGame.instance.world.setCursorLock(true); + if (Util.isTouchDevice()) { + MarbleGame.canvas.render(MarbleGame.canvas.scene2d); + MarbleGame.instance.touchInput.setControlsEnabled(true); + } + MarbleGame.instance.world.marble.camera.stopOverview(); + AudioManager.playSound(ResourceLoader.getAudio('data/sound/spawn.wav').resource); + } + + if (Net.clientSpectate || Net.hostSpectate) { + MarbleGame.instance.world.marble.camera.enableSpectate(); + } else { + MarbleGame.instance.world.marble.camera.stopSpectate(); + } + } + } + + @:rpc(server) public static function setStartTicksMidJoin(startTicks:Int, currentTicks:Int) { + if (MarbleGame.instance.world != null) { + MarbleGame.instance.world.serverStartTicks = startTicks + 1; // Extra tick so we don't get 0 + MarbleGame.instance.world.startTime = MarbleGame.instance.world.timeState.timeSinceLoad + 0.032; // 1 extra tick + MarbleGame.instance.world.timeState.ticks = currentTicks; + } + } + + @:rpc(server) public static function timerRanOut() { + if (Net.isClient && MarbleGame.instance.world != null) { + if (MarbleGame.instance.paused) { + MarbleGame.instance.handlePauseGame(); // Unpause + } + var huntMode:HuntMode = cast MarbleGame.instance.world.gameMode; + huntMode.onTimeExpire(); + } + if (Net.isHost) { + Net.serverInfo.state = "WAITING"; + MasterServerClient.instance.sendServerInfo(Net.serverInfo); // notify the server of the playing state + } + } + + @:rpc(server) public static function clientDisconnected(clientId:Int) { + var conn = Net.clientIdMap.get(clientId); + if (MarbleGame.instance.world != null) { + MarbleGame.instance.world.removePlayer(conn); + } + Net.clientIdMap.remove(clientId); + if (MarbleGame.canvas.content is MPPlayMissionGui) { + cast(MarbleGame.canvas.content, MPPlayMissionGui).updateLobbyNames(); + } + if (MarbleGame.canvas.children[MarbleGame.canvas.children.length - 1] is MPPreGameDlg) { + cast(MarbleGame.canvas.children[MarbleGame.canvas.children.length - 1], MPPreGameDlg).updatePlayerList(); + } + } + + @:rpc(server) public static function clientJoin(clientId:Int) {} + + @:rpc(client) public static function clientLeave(clientId:Int) { + if (Net.isHost) { + @:privateAccess Net.onClientLeave(cast Net.clientIdMap[clientId]); + } + } + + @:rpc(server) public static function serverClosed() { + if (Net.isClient) { + if (MarbleGame.instance.world != null) { + MarbleGame.instance.quitMission(); + } + MarbleGame.canvas.setContent(new MPMessageGui("Info", "Server closed")); + } + } + + @:rpc(server) public static function getKicked() { + if (Net.isClient) { + Net.disconnect(); + MarbleGame.canvas.setContent(new MPMessageGui("Info", "You have been kicked from the server")); + } + } + + @:rpc(client) public static function setPlayerData(clientId:Int, name:String, marble:Int, marbleCat:Int, needRetransmit:Bool) { + if (Net.isHost) { + Net.clientIdMap[clientId].setName(name); + Net.clientIdMap[clientId].setMarbleId(marble, marbleCat); + if (MarbleGame.canvas.content is MPPlayMissionGui) { + cast(MarbleGame.canvas.content, MPPlayMissionGui).updateLobbyNames(); + } + if (needRetransmit) { + var b = Net.sendPlayerInfosBytes(); + for (cc in Net.clients) { + cc.sendBytes(b); + } + } + } + } + + @:rpc(client) public static function transmitPlatform(clientId:Int, platform:Int) { + if (Net.isHost) { + Net.clientIdMap[clientId].platform = platform; + if (MarbleGame.canvas.content is MPPlayMissionGui) { + cast(MarbleGame.canvas.content, MPPlayMissionGui).updateLobbyNames(); + } + } + } + + @:rpc(server) public static function endGame() { + for (c => v in Net.clientIdMap) { + v.state = LOBBY; + v.lobbyReady = false; + } + if (Net.isClient) { + if (MarbleGame.instance.world != null) { + MarbleGame.instance.quitMission(); + } + } + if (Net.isHost) { + Net.lobbyHostReady = false; + Net.hostReady = false; + + Net.serverInfo.state = "LOBBY"; + MasterServerClient.instance.sendServerInfo(Net.serverInfo); // notify the server of the playing state + var b = Net.sendPlayerInfosBytes(); + for (cc in Net.clients) { + cc.sendBytes(b); + } + } + } + + @:rpc(server) public static function completeRestartGame() { + if (Net.isClient) { + var gui = MarbleGame.canvas.children[MarbleGame.canvas.children.length - 1]; + if (gui is MPEndGameGui || gui is MPExitGameDlg) { + MarbleGame.instance.paused = false; + MarbleGame.canvas.popDialog(gui); + // egg.retryFunc(null); + } + } + var world = MarbleGame.instance.world; + world.completeRestart(); + if (Net.isClient) { + world.restartMultiplayerState(); + } + } + + @:rpc(server) public static function partialRestartGame() { + if (Net.isClient) { + var gui = MarbleGame.canvas.children[MarbleGame.canvas.children.length - 1]; + if (gui is MPEndGameGui || gui is MPExitGameDlg) { + MarbleGame.instance.paused = false; + MarbleGame.canvas.popDialog(gui); + // egg.retryFunc(null); + } + } + var world = MarbleGame.instance.world; + world.partialRestart(); + if (Net.isClient) { + world.restartMultiplayerState(); + } + } + + @:rpc(server) public static function ping(sendTime:Float) { + if (Net.isClient) { + pingBack(Console.time() - sendTime); + } + } + + @:rpc(client) public static function pingBack(ping:Float) { + // Do nothing??? + } + + @:rpc(client) public static function requestPing() { + if (Net.isHost) { + ping(Console.time()); + } + } + + @:rpc(server) public static function sendServerSettings(name:String, desc:String, quickRespawn:Bool, forceSpectator:Bool, competitive:Bool, + oldSpawns:Bool) { + Net.connectedServerInfo = { + name: name, + description: desc, + quickRespawn: quickRespawn, + forceSpectator: forceSpectator, + competitiveMode: competitive, + oldSpawns: oldSpawns + }; + } + + @:rpc(client) public static function sendChatMessage(msg:String) { + if (Net.isHost) { + sendServerChatMessage(msg); + } + } + + @:rpc(server) public static function sendServerChatMessage(msg:String) { + if (MarbleGame.instance.world != null) { + if (MarbleGame.instance.world._ready) { + @:privateAccess MarbleGame.instance.world.playGui.addChatMessage(msg); + } + } else { + // if (MarbleGame.canvas.content is MultiplayerLevelSelectGui) { + // cast(MarbleGame.canvas.content, MultiplayerLevelSelectGui).addChatMessage(msg); + // } + } + MPPlayMissionGui.addChatMessage(msg); + } + + @:rpc(server) public static function setCompetitiveTimerStartTicks(ticks:Int) { + if (MarbleGame.instance.world != null) { + var huntMode = cast(MarbleGame.instance.world.gameMode, HuntMode); + huntMode.setCompetitiveTimerStartTicks(ticks); + } + } +} diff --git a/src/net/NetPacket.hx b/src/net/NetPacket.hx new file mode 100644 index 00000000..04e316cf --- /dev/null +++ b/src/net/NetPacket.hx @@ -0,0 +1,356 @@ +package net; + +import net.BitStream.InputBitStream; +import net.BitStream.OutputBitStream; +import h3d.Vector; +import net.MoveManager.NetMove; + +interface NetPacket { + public function serialize(b:OutputBitStream):Void; + public function deserialize(b:InputBitStream):Void; +} + +@:publicFields +class MarbleMovePacket implements NetPacket { + var clientId:Int; + var clientTicks:Int; + var moves:Array; + + public function new() { + moves = []; + } + + public inline function deserialize(b:InputBitStream) { + clientId = b.readByte(); + clientTicks = b.readUInt16(); + var count = b.readInt(5); + moves = []; + for (i in 0...count) { + moves.push(MoveManager.unpackMove(b)); + } + } + + public inline function serialize(b:OutputBitStream) { + b.writeByte(clientId); + b.writeUInt16(clientTicks); + b.writeInt(moves.length, 5); + for (move in moves) + MoveManager.packMove(move, b); + } +} + +enum abstract MarbleNetFlags(Int) from Int to Int { + var NullFlag = 0; + var DoBlast = 1 << 0; + var DoHelicopter = 1 << 1; + var DoMega = 1 << 2; + var DoSuperBounce = 1 << 3; + var DoShockAbsorber = 1 << 4; + var PickupPowerup = 1 << 5; + var GravityChange = 1 << 6; + var UsePowerup = 1 << 7; + var UpdateTrapdoor = 1 << 8; + var DoUltraBlast = 1 << 9; +} + +@:publicFields +class MarbleUpdatePacket implements NetPacket { + var clientId:Int; + var move:NetMove; + var serverTicks:Int; + var calculationTicks:Int = -1; + var position:Vector; + var velocity:Vector; + var omega:Vector; + var blastAmount:Int; + var blastTick:Int; + var megaTick:Int; + var heliTick:Int; + var superBounceTick:Int; + var shockAbsorberTick:Int; + var gravityDirection:Vector; + var oob:Bool; + var powerUpId:Int; + var moveQueueSize:Int; + var pingTicks:Int; + var netFlags:Int; + var trapdoorUpdates:Map = []; + + public function new() {} + + public inline function serialize(b:OutputBitStream) { + b.writeInt(clientId, 6); + MoveManager.packMove(move, b); + b.writeUInt16(serverTicks); + b.writeInt(moveQueueSize, 6); + b.writeInt(pingTicks, 6); + b.writeFloat(position.x); + b.writeFloat(position.y); + b.writeFloat(position.z); + b.writeFloat(velocity.x); + b.writeFloat(velocity.y); + b.writeFloat(velocity.z); + b.writeFloat(omega.x); + b.writeFloat(omega.y); + b.writeFloat(omega.z); + b.writeInt(blastAmount, 11); + if (netFlags & MarbleNetFlags.DoBlast > 0) { + b.writeFlag(true); + b.writeFlag(netFlags & MarbleNetFlags.DoUltraBlast > 0); + b.writeUInt16(blastTick); + } else { + b.writeFlag(false); + } + if (netFlags & MarbleNetFlags.DoHelicopter > 0) { + b.writeFlag(true); + b.writeUInt16(heliTick); + } else { + b.writeFlag(false); + } + if (netFlags & MarbleNetFlags.DoMega > 0) { + b.writeFlag(true); + b.writeUInt16(megaTick); + } else { + b.writeFlag(false); + } + if (netFlags & MarbleNetFlags.DoSuperBounce > 0) { + b.writeFlag(true); + b.writeUInt16(superBounceTick); + } else { + b.writeFlag(false); + } + if (netFlags & MarbleNetFlags.DoShockAbsorber > 0) { + b.writeFlag(true); + b.writeUInt16(shockAbsorberTick); + } else { + b.writeFlag(false); + } + + b.writeFlag(oob); + if (netFlags & MarbleNetFlags.UsePowerup > 0) { + b.writeFlag(true); + } else { + b.writeFlag(false); + } + + if (netFlags & MarbleNetFlags.PickupPowerup > 0) { + b.writeFlag(true); + b.writeInt(powerUpId, 9); + } else { + b.writeFlag(false); + } + if (netFlags & MarbleNetFlags.GravityChange > 0) { + b.writeFlag(true); + b.writeFloat(gravityDirection.x); + b.writeFloat(gravityDirection.y); + b.writeFloat(gravityDirection.z); + } else { + b.writeFlag(false); + } + if (netFlags & MarbleNetFlags.UpdateTrapdoor > 0) { + b.writeFlag(true); + var cnt = 0; + for (k => v in trapdoorUpdates) { + cnt++; + } + b.writeInt(cnt, 4); + for (k => v in trapdoorUpdates) { + b.writeInt(k, 8); + b.writeUInt16(v); + } + } else { + b.writeFlag(false); + } + } + + public inline function deserialize(b:InputBitStream) { + clientId = b.readInt(6); + move = MoveManager.unpackMove(b); + serverTicks = b.readUInt16(); + moveQueueSize = b.readInt(6); + pingTicks = b.readInt(6); + position = new Vector(b.readFloat(), b.readFloat(), b.readFloat()); + velocity = new Vector(b.readFloat(), b.readFloat(), b.readFloat()); + omega = new Vector(b.readFloat(), b.readFloat(), b.readFloat()); + blastAmount = b.readInt(11); + this.netFlags = 0; + if (b.readFlag()) { + if (b.readFlag()) { + this.netFlags |= MarbleNetFlags.DoUltraBlast; + } + blastTick = b.readUInt16(); + this.netFlags |= MarbleNetFlags.DoBlast; + } + if (b.readFlag()) { + heliTick = b.readUInt16(); + this.netFlags |= MarbleNetFlags.DoHelicopter; + } + if (b.readFlag()) { + megaTick = b.readUInt16(); + this.netFlags |= MarbleNetFlags.DoMega; + } + if (b.readFlag()) { + superBounceTick = b.readUInt16(); + this.netFlags |= MarbleNetFlags.DoSuperBounce; + } + if (b.readFlag()) { + shockAbsorberTick = b.readUInt16(); + this.netFlags |= MarbleNetFlags.DoShockAbsorber; + } + oob = b.readFlag(); + if (b.readFlag()) + this.netFlags |= MarbleNetFlags.UsePowerup; + if (b.readFlag()) { + powerUpId = b.readInt(9); + this.netFlags |= MarbleNetFlags.PickupPowerup; + } + if (b.readFlag()) { + gravityDirection = new Vector(b.readFloat(), b.readFloat(), b.readFloat()); + this.netFlags |= MarbleNetFlags.GravityChange; + } + if (b.readFlag()) { + var cnt = b.readInt(4); + for (i in 0...cnt) { + var k = b.readInt(8); + var v = b.readUInt16(); + trapdoorUpdates[k] = v; + } + this.netFlags |= MarbleNetFlags.UpdateTrapdoor; + } + } +} + +@:publicFields +class PowerupPickupPacket implements NetPacket { + var clientId:Int; + var serverTicks:Int; + var powerupItemId:Int; + + public function new() {} + + public inline function deserialize(b:InputBitStream) { + clientId = b.readByte(); + serverTicks = b.readUInt16(); + powerupItemId = b.readInt(10); + } + + public inline function serialize(b:OutputBitStream) { + b.writeByte(clientId); + b.writeUInt16(serverTicks); + b.writeInt(powerupItemId, 10); + } +} + +@:publicFields +class ExplodableUpdatePacket implements NetPacket { + var serverTicks:Int; + var explodableId:Int; + + public function new() {} + + public inline function deserialize(b:InputBitStream) { + serverTicks = b.readUInt16(); + explodableId = b.readInt(11); + } + + public inline function serialize(b:OutputBitStream) { + b.writeUInt16(serverTicks); + b.writeInt(explodableId, 11); + } +} + +@:publicFields +class GemSpawnPacket implements NetPacket { + var gemIds:Array; + var expireds:Array; + + public function new() { + gemIds = []; + expireds = []; + } + + public function serialize(b:OutputBitStream) { + b.writeInt(gemIds.length, 5); + for (i in 0...gemIds.length) { + var gemId = gemIds[i]; + b.writeInt(gemId, 11); + b.writeFlag(expireds[i]); + } + } + + public function deserialize(b:InputBitStream) { + var count = b.readInt(5); + for (i in 0...count) { + gemIds.push(b.readInt(11)); + expireds.push(b.readFlag()); + } + } +} + +@:publicFields +class GemPickupPacket implements NetPacket { + var clientId:Int; + var serverTicks:Int; + var gemId:Int; + var scoreIncr:Int; + + public function new() {} + + public inline function deserialize(b:InputBitStream) { + clientId = b.readByte(); + serverTicks = b.readUInt16(); + gemId = b.readInt(11); + scoreIncr = b.readInt(4); + } + + public inline function serialize(b:OutputBitStream) { + b.writeByte(clientId); + b.writeUInt16(serverTicks); + b.writeInt(gemId, 11); + b.writeInt(scoreIncr, 4); + } +} + +@:publicFields +class ScoreboardPacket implements NetPacket { + var scoreBoard:Map; + var rBoard:Map; + var yBoard:Map; + var bBoard:Map; + var pBoard:Map; + + public function new() { + scoreBoard = new Map(); + rBoard = new Map(); + yBoard = new Map(); + bBoard = new Map(); + pBoard = new Map(); + } + + public inline function deserialize(b:InputBitStream) { + var count = b.readInt(4); + for (i in 0...count) { + var id = b.readInt(6); + scoreBoard[id] = b.readInt(10); + rBoard[id] = b.readInt(10); + yBoard[id] = b.readInt(10); + bBoard[id] = b.readInt(10); + pBoard[id] = b.readInt(10); + } + } + + public inline function serialize(b:OutputBitStream) { + var keycount = 0; + for (k => v in scoreBoard) + keycount++; + b.writeInt(keycount, 4); + for (key => v in scoreBoard) { + b.writeInt(key, 6); + b.writeInt(v, 10); + b.writeInt(rBoard[key], 10); + b.writeInt(yBoard[key], 10); + b.writeInt(bBoard[key], 10); + b.writeInt(pBoard[key], 10); + } + } +} diff --git a/src/net/PowerupPredictionStore.hx b/src/net/PowerupPredictionStore.hx new file mode 100644 index 00000000..72f0af41 --- /dev/null +++ b/src/net/PowerupPredictionStore.hx @@ -0,0 +1,30 @@ +package net; + +import src.TimeState; +import net.NetPacket.PowerupPickupPacket; + +class PowerupPredictionStore { + var predictions:Array; + + public inline function new() { + predictions = []; + } + + public inline function alloc() { + predictions.push(Math.NEGATIVE_INFINITY); + } + + public inline function getState(netIndex:Int) { + return predictions[netIndex]; + } + + public inline function acknowledgePowerupPickup(packet:PowerupPickupPacket, timeState:TimeState, futureTicks:Int) { + predictions[packet.powerupItemId] = timeState.currentAttemptTime - futureTicks * 0.032; // Approximate + } + + public inline function reset() { + for (i in 0...predictions.length) { + predictions[i] = Math.NEGATIVE_INFINITY; + } + } +} diff --git a/src/net/RPCMacro.hx b/src/net/RPCMacro.hx new file mode 100644 index 00000000..dedd9750 --- /dev/null +++ b/src/net/RPCMacro.hx @@ -0,0 +1,183 @@ +package net; + +import haxe.macro.Context; +import haxe.macro.Expr; + +class RPCMacro { + macro static public function build():Array { + var fields = Context.getBuildFields(); + + var rpcFnId = 1; + + var idtoFn:Map, + deserialize:Array + }> = new Map(); + + var fieldsToAdd = []; + + for (field in fields) { + if (field.meta.length > 0 && field.meta[0].name == ':rpc') { + switch (field.kind) { + case FFun(f): + { + var serializeFns = []; + var deserializeFns = []; + var callExprs = []; + for (arg in f.args) { + var argName = arg.name; + switch (arg.type) { + case TPath({ + name: 'Int' + }): { + deserializeFns.push(macro var $argName = stream.readInt32()); + callExprs.push(macro $i{argName}); + serializeFns.push(macro stream.writeInt32($i{argName})); + } + + case TPath({ + name: 'Bool' + }): { + deserializeFns.push(macro var $argName = stream.readFlag()); + callExprs.push(macro $i{argName}); + serializeFns.push(macro stream.writeFlag($i{argName})); + } + + case TPath({ + name: 'Float' + }): { + deserializeFns.push(macro var $argName = stream.readFloat()); + callExprs.push(macro $i{argName}); + serializeFns.push(macro stream.writeFloat($i{argName})); + } + + case TPath({ + name: 'String' + }): { + deserializeFns.push(macro var $argName = stream.readString()); + callExprs.push(macro $i{argName}); + serializeFns.push(macro stream.writeString($i{argName})); + } + + case _: {} + } + } + deserializeFns.push(macro { + $i{field.name}($a{callExprs}); + }); + idtoFn.set(rpcFnId, { + name: field.name, + serialize: serializeFns, + deserialize: deserializeFns + }); + + var directionParam = field.meta[0].params[0].expr; + switch (directionParam) { + case EConst(CIdent("server")): + var lastExpr = macro { + if (Net.isHost) { + var stream = new net.BitStream.OutputBitStream(); + stream.writeByte(NetPacketType.NetCommand); + stream.writeByte($v{rpcFnId}); + $b{serializeFns}; + Net.sendPacketToAll(stream); + } + }; + var origExpr = f.expr; + var lastExprSingle = macro { + if (Net.isHost) { + var stream = new net.BitStream.OutputBitStream(); + stream.writeByte(NetPacketType.NetCommand); + stream.writeByte($v{rpcFnId}); + $b{serializeFns}; + Net.sendPacketToClient(client, stream); + } + }; + + var singleClientfn:Field = { + name: field.name + "Client", + pos: Context.currentPos(), + access: [APublic, AStatic], + kind: FFun({ + args: [ + { + name: "client", + type: haxe.macro.TypeTools.toComplexType(Context.getType('net.ClientConnection.GameConnection')) + } + ].concat(f.args), + expr: macro $b{[origExpr, lastExprSingle]} + }) + }; + fieldsToAdd.push(singleClientfn); + + f.expr = macro $b{[f.expr, lastExpr]}; + + case EConst(CIdent("client")): + var lastExpr = macro { + if (!Net.isHost) { + var stream = new net.BitStream.OutputBitStream(); + stream.writeByte(NetPacketType.NetCommand); + stream.writeByte($v{rpcFnId}); + $b{serializeFns}; + Net.sendPacketToHost(stream); + } + }; + + f.expr = macro $b{[f.expr, lastExpr]}; + + case _: + {} + } + + rpcFnId++; + } + + case _: + {} + } + } + } + + var cases:Array = []; + for (k => v in idtoFn) { + cases.push({ + values: [macro $v{k}], + expr: macro { + $b{v.deserialize} + } + }); + } + + var deserializeField:Field = { + name: "readPacket", + pos: Context.currentPos(), + access: [APublic, AStatic], + kind: FFun({ + args: [ + { + name: "stream", + type: haxe.macro.TypeTools.toComplexType(Context.getType('net.BitStream.InputBitStream')) + } + ], + expr: macro { + var fnId = stream.readByte(); + + $e{ + { + expr: ESwitch(macro fnId, cases, null), + pos: Context.currentPos() + } + } + } + }) + }; + + fields.push(deserializeField); + for (fn in fieldsToAdd) { + fields.push(fn); + } + + return fields; + } +} diff --git a/src/net/TrapdoorPredictionStore.hx b/src/net/TrapdoorPredictionStore.hx new file mode 100644 index 00000000..496ab914 --- /dev/null +++ b/src/net/TrapdoorPredictionStore.hx @@ -0,0 +1,36 @@ +package net; + +import src.MarbleWorld; +import net.NetPacket.ExplodableUpdatePacket; +import src.TimeState; +import net.NetPacket.PowerupPickupPacket; + +class TrapdoorPredictionStore { + var world:MarbleWorld; + var predictions:Array; + + public inline function new(world:MarbleWorld) { + predictions = []; + this.world = world; + } + + public inline function alloc() { + predictions.push(-100000); + } + + public inline function getState(netIndex:Int) { + return predictions[netIndex]; + } + + public inline function acknowledgeTrapdoorUpdate(id:Int, ticks:Int) { + predictions[id] = ticks; + if (!world.trapdoorsToTick.contains(id)) + world.trapdoorsToTick.push(id); + } + + public inline function reset() { + for (i in 0...predictions.length) { + predictions[i] = -100000; + } + } +} diff --git a/src/net/Uuid.hx b/src/net/Uuid.hx new file mode 100644 index 00000000..0ab86b8b --- /dev/null +++ b/src/net/Uuid.hx @@ -0,0 +1,311 @@ +package net; + +/* + MIT License + https://github.com/flashultra/uuid + + Copyright (c) 2020 + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + + */ +import haxe.ds.Vector; +import haxe.Int64; +import haxe.io.Bytes; +import haxe.crypto.Md5; +import haxe.crypto.Sha1; + +class Uuid { + public inline static var DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; + public inline static var URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; + public inline static var ISO_OID = '6ba7b812-9dad-11d1-80b4-00c04fd430c8'; + public inline static var X500_DN = '6ba7b814-9dad-11d1-80b4-00c04fd430c8'; + public inline static var NIL = '00000000-0000-0000-0000-000000000000'; + + public inline static var LOWERCASE_BASE26 = "abcdefghijklmnopqrstuvwxyz"; + public inline static var UPPERCASE_BASE26 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + public inline static var NO_LOOK_ALIKES_BASE51 = "2346789ABCDEFGHJKLMNPQRTUVWXYZabcdefghijkmnpqrtwxyz"; // without 1, l, I, 0, O, o, u, v, 5, S, s + public inline static var FLICKR_BASE58 = "123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"; // without similar characters 0/O, 1/I/l + public inline static var BASE_70 = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-+!@#$^"; + public inline static var BASE_85 = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-:+=^!/*?&<>()[]{}@%$#"; + public inline static var COOKIE_BASE90 = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!#$%&'()*+-./:<=>?@[]^_`{|}~"; + public inline static var NANO_ID_ALPHABET = "_-0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; + + public inline static var NUMBERS_BIN = "01"; + public inline static var NUMBERS_OCT = "01234567"; + public inline static var NUMBERS_DEC = "0123456789"; + public inline static var NUMBERS_HEX = "0123456789abcdef"; + + static var lastMSecs:Float = 0; + static var lastNSecs = 0; + static var clockSequenceBuffer:Int = -1; + static var regexp:EReg = ~/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i; + + static var rndSeed:Int64 = Int64.fromFloat(#if js js.lib.Date.now() #elseif sys Sys.time() * 1000 #else Date.now().getTime() #end); + static var state0 = splitmix64_seed(rndSeed); + static var state1 = splitmix64_seed(rndSeed + Std.random(10000) + 1); + private static var DVS:Int64 = Int64.make(0x00000001, 0x00000000); + + private static function splitmix64_seed(index:Int64):Int64 { + var result:Int64 = (index + Int64.make(0x9E3779B9, 0x7F4A7C15)); + result = (result ^ (result >> 30)) * Int64.make(0xBF58476D, 0x1CE4E5B9); + result = (result ^ (result >> 27)) * Int64.make(0x94D049BB, 0x133111EB); + return result ^ (result >> 31); + } + + public static function randomFromRange(min:Int, max:Int):Int { + var s1:Int64 = state0; + var s0:Int64 = state1; + state0 = s0; + s1 ^= s1 << 23; + state1 = s1 ^ s0 ^ (s1 >>> 18) ^ (s0 >>> 5); + var result:Int = ((state1 + s0) % (max - min + 1)).low; + result = (result < 0) ? -result : result; + return result + min; + } + + public static function randomByte():Int { + return randomFromRange(0, 255); + } + + public static function fromShort(shortUuid:String, separator:String = '-', fromAlphabet:String = FLICKR_BASE58):String { + var uuid = Uuid.convert(shortUuid, fromAlphabet, NUMBERS_HEX); + return hexToUuid(uuid, separator); + } + + public static function toShort(uuid:String, separator:String = '-', toAlphabet:String = FLICKR_BASE58):String { + uuid = StringTools.replace(uuid, separator, '').toLowerCase(); + return Uuid.convert(uuid, NUMBERS_HEX, toAlphabet); + } + + public static function fromNano(nanoUuid:String, separator:String = '-', fromAlphabet:String = NANO_ID_ALPHABET):String { + var uuid = Uuid.convert(nanoUuid, fromAlphabet, NUMBERS_HEX); + return hexToUuid(uuid, separator); + } + + public static function toNano(uuid:String, separator:String = '-', toAlphabet:String = NANO_ID_ALPHABET):String { + uuid = StringTools.replace(uuid, separator, '').toLowerCase(); + return Uuid.convert(uuid, NUMBERS_HEX, toAlphabet); + } + + public static function v1(node:Bytes = null, optClockSequence:Int = -1, msecs:Float = -1, optNsecs:Int = -1, ?randomFunc:Void->Int, + separator:String = "-", shortUuid:Bool = false, toAlphabet:String = FLICKR_BASE58):String { + if (randomFunc == null) + randomFunc = randomByte; + var buffer:Bytes = Bytes.alloc(16); + if (node == null) { + node = Bytes.alloc(6); + for (i in 0...6) + node.set(i, randomFunc()); + node.set(0, node.get(0) | 0x01); + } + if (clockSequenceBuffer == -1) { + clockSequenceBuffer = (randomFunc() << 8 | randomFunc()) & 0x3fff; + } + var clockSeq = optClockSequence; + if (optClockSequence == -1) { + clockSeq = clockSequenceBuffer; + } + if (msecs == -1) { + msecs = Math.fround(#if js js.lib.Date.now() #elseif sys Sys.time() * 1000 #else Date.now().getTime() #end); + } + var nsecs = optNsecs; + if (optNsecs == -1) { + nsecs = lastNSecs + 1; + } + var dt = (msecs - lastMSecs) + (nsecs - lastNSecs) / 10000; + if (dt < 0 && (optClockSequence == -1)) { + clockSeq = (clockSeq + 1) & 0x3fff; + } + if ((dt < 0 || msecs > lastMSecs) && optNsecs == -1) { + nsecs = 0; + } + if (nsecs >= 10000) { + throw "Can't create more than 10M uuids/sec"; + } + lastMSecs = msecs; + lastNSecs = nsecs; + clockSequenceBuffer = clockSeq; + + msecs += 12219292800000; + var imsecs:Int64 = Int64.fromFloat(msecs); + var tl:Int = (((imsecs & 0xfffffff) * 10000 + nsecs) % DVS).low; + buffer.set(0, tl >>> 24 & 0xff); + buffer.set(1, tl >>> 16 & 0xff); + buffer.set(2, tl >>> 8 & 0xff); + buffer.set(3, tl & 0xff); + + var tmh:Int = ((imsecs / DVS * 10000) & 0xfffffff).low; + buffer.set(4, tmh >>> 8 & 0xff); + buffer.set(5, tmh & 0xff); + + buffer.set(6, tmh >>> 24 & 0xf | 0x10); + buffer.set(7, tmh >>> 16 & 0xff); + + buffer.set(8, clockSeq >>> 8 | 0x80); + buffer.set(9, clockSeq & 0xff); + + for (i in 0...6) + buffer.set(i + 10, node.get(i)); + + var uuid = stringify(buffer, separator); + if (shortUuid) + uuid = Uuid.toShort(uuid, separator, toAlphabet); + + return uuid; + } + + public static function v3(name:String, namespace:String = "", separator:String = "-", shortUuid:Bool = false, toAlphabet:String = FLICKR_BASE58):String { + namespace = StringTools.replace(namespace, '-', ''); + var buffer = Md5.make(Bytes.ofHex(namespace + Bytes.ofString(name).toHex())); + buffer.set(6, (buffer.get(6) & 0x0f) | 0x30); + buffer.set(8, (buffer.get(8) & 0x3f) | 0x80); + var uuid = stringify(buffer, separator); + if (shortUuid) + uuid = Uuid.toShort(uuid, separator, toAlphabet); + return uuid; + } + + public static function v4(randBytes:Bytes = null, ?randomFunc:Void->Int, separator:String = "-", shortUuid:Bool = false, + toAlphabet:String = FLICKR_BASE58):String { + if (randomFunc == null) + randomFunc = randomByte; + var buffer:Bytes = randBytes; + if (buffer == null) { + buffer = Bytes.alloc(16); + for (i in 0...16) { + buffer.set(i, randomFunc()); + } + } else { + if (buffer.length < 16) + throw "Random bytes should be at least 16 bytes"; + } + buffer.set(6, (buffer.get(6) & 0x0f) | 0x40); + buffer.set(8, (buffer.get(8) & 0x3f) | 0x80); + var uuid = stringify(buffer, separator); + if (shortUuid) + uuid = Uuid.toShort(uuid, separator, toAlphabet); + return uuid; + } + + public static function v5(name:String, namespace:String = "", separator:String = "-", shortUuid:Bool = false, toAlphabet:String = FLICKR_BASE58):String { + namespace = StringTools.replace(namespace, '-', ''); + var buffer = Sha1.make(Bytes.ofHex(namespace + Bytes.ofString(name).toHex())); + buffer.set(6, (buffer.get(6) & 0x0f) | 0x50); + buffer.set(8, (buffer.get(8) & 0x3f) | 0x80); + var uuid = stringify(buffer, separator); + if (shortUuid) + uuid = Uuid.toShort(uuid, separator, toAlphabet); + return uuid; + } + + public static function stringify(data:Bytes, separator:String = "-"):String { + return hexToUuid(data.toHex(), separator); + } + + public static function parse(uuid:String, separator:String = "-"):Bytes { + return Bytes.ofHex(StringTools.replace(uuid, separator, '')); + } + + public static function validate(uuid:String, separator:String = "-"):Bool { + if (separator == "") { + uuid = uuid.substr(0, 8) + + "-" + + uuid.substr(8, 4) + + "-" + + uuid.substr(12, 4) + + "-" + + uuid.substr(16, 4) + + "-" + + uuid.substr(20, 12); + } else if (separator != "-") { + uuid = StringTools.replace(uuid, separator, '-'); + } + return regexp.match(uuid); + } + + public static function version(uuid:String, separator:String = "-"):Int { + uuid = StringTools.replace(uuid, separator, ''); + return Std.parseInt("0x" + uuid.substr(12, 1)); + } + + public static function hexToUuid(hex:String, separator:String):String { + return (hex.substr(0, 8) + separator + hex.substr(8, 4) + separator + hex.substr(12, 4) + separator + hex.substr(16, 4) + separator + + hex.substr(20, 12)); + } + + public static function convert(number:String, fromAlphabet:String, toAlphabet:String):String { + var fromBase:Int = fromAlphabet.length; + var toBase:Int = toAlphabet.length; + var len = number.length; + var buf:String = ""; + var numberMap:Vector = new Vector(len); + var divide:Int = 0, newlen:Int = 0; + for (i in 0...len) { + numberMap[i] = fromAlphabet.indexOf(number.charAt(i)); + } + do { + divide = 0; + newlen = 0; + for (i in 0...len) { + divide = divide * fromBase + numberMap[i]; + if (divide >= toBase) { + numberMap[newlen++] = Math.floor(divide / toBase); + divide = divide % toBase; + } else if (newlen > 0) { + numberMap[newlen++] = 0; + } + } + len = newlen; + buf = toAlphabet.charAt(divide) + buf; + } while (newlen != 0); + + return buf; + } + + public static function nanoId(len:Int = 21, alphabet:String = NANO_ID_ALPHABET, ?randomFunc:Void->Int):String { + if (randomFunc == null) + randomFunc = randomByte; + if (alphabet == null) + throw "Alphabet cannot be null"; + if (alphabet.length == 0 || alphabet.length >= 256) + throw "Alphabet must contain between 1 and 255 symbols"; + if (len <= 0) + throw "Length must be greater than zero"; + var mask:Int = (2 << Math.floor(Math.log(alphabet.length - 1) / Math.log(2))) - 1; + var step:Int = Math.ceil(1.6 * mask * len / alphabet.length); + var sb = new StringBuf(); + while (sb.length != len) { + for (i in 0...step) { + var rnd = randomFunc(); + var aIndex:Int = rnd & mask; + if (aIndex < alphabet.length) { + sb.add(alphabet.charAt(aIndex)); + if (sb.length == len) + break; + } + } + } + return sb.toString(); + } + + public static function short(toAlphabet:String = FLICKR_BASE58, ?randomFunc:Void->Int):String { + return Uuid.v4(randomFunc, true, toAlphabet); + } +} diff --git a/src/octree/IOctreeObject.hx b/src/octree/IOctreeObject.hx index 479547cb..2376bc72 100644 --- a/src/octree/IOctreeObject.hx +++ b/src/octree/IOctreeObject.hx @@ -3,13 +3,16 @@ package octree; import h3d.Vector; import h3d.col.Bounds; -typedef RayIntersectionData = { +@:publicFields +@:structInit +class RayIntersectionData { var point:Vector; var normal:Vector; var object:IOctreeObject; + var t:Float; } interface IOctreeObject extends IOctreeElement { var boundingBox:Bounds; - function rayCast(rayOrigin:Vector, rayDirection:Vector):Array; + function rayCast(rayOrigin:Vector, rayDirection:Vector, resultSet:Array, bestT:Float):Float; } diff --git a/src/octree/Octree.hx b/src/octree/Octree.hx index 23529497..c3289024 100644 --- a/src/octree/Octree.hx +++ b/src/octree/Octree.hx @@ -16,23 +16,19 @@ class Octree { var prevBoundSearch:Bounds; var boundSearchCache:Array; - public function new() { - this.root = new OctreeNode(this, 0); - // Init the octree to a 1x1x1 cube - this.root.bounds = new Bounds(); - this.root.bounds.xMin = this.root.bounds.yMin = this.root.bounds.zMin = 0; - this.root.bounds.xMax = this.root.bounds.yMax = this.root.bounds.zMax = 1; + public function new(disableMerge:Bool = false) { + this.root = new OctreeNode(this, 0, disableMerge); this.objectToNode = new Map(); } public function insert(object:IOctreeObject) { var node = this.objectToNode.get(object); if (node != null) - return; // Don't insert if already contained in the tree + return false; // Don't insert if already contained in the tree while (!this.root.largerThan(object) || !this.root.containsCenter(object)) { // The root node does not fit the object; we need to grow the tree. if (this.root.depth == -32) { - return; + return true; } this.grow(object); } @@ -40,6 +36,7 @@ class Octree { this.root.insert(object); if (emptyBefore) this.shrink(); // See if we can fit the octree better now that we actually have an element in it + return true; } public function remove(object:IOctreeObject) { @@ -79,22 +76,24 @@ class Octree { count++; } } - averagePoint = averagePoint.multiply(1 / count); // count should be greater than 0, because that's why we're growing in the first place. + averagePoint.load(averagePoint.multiply(1 / count)); // count should be greater than 0, because that's why we're growing in the first place. // Determine the direction from the root center to the determined point - var rootCenter = this.root.bounds.getCenter().toVector(); + var rootCenter = new Vector((this.root.xMax + this.root.xMin) / 2, (this.root.yMax + this.root.yMin) / 2, (this.root.zMax + this.root.zMin) / 2); var direction = averagePoint.sub(rootCenter); // Determine the "direction of growth" // Create a new root. The current root will become a quadrant in this new root. var newRoot = new OctreeNode(this, this.root.depth - 1); - newRoot.bounds = this.root.bounds.clone(); - newRoot.bounds.xSize *= 2; - newRoot.bounds.ySize *= 2; - newRoot.bounds.zSize *= 2; + newRoot.xMin = this.root.xMin; + newRoot.yMin = this.root.yMin; + newRoot.zMin = this.root.zMin; + newRoot.xMax = 2 * this.root.xMax - this.root.xMin; + newRoot.yMax = 2 * this.root.yMax - this.root.yMin; + newRoot.zMax = 2 * this.root.zMax - this.root.zMin; if (direction.x < 0) - newRoot.bounds.xMin -= this.root.bounds.xSize; + newRoot.xMin -= this.root.xMax - this.root.xMin; if (direction.y < 0) - newRoot.bounds.yMin -= this.root.bounds.ySize; + newRoot.yMin -= this.root.yMax - this.root.yMin; if (direction.z < 0) - newRoot.bounds.zMin -= this.root.bounds.zSize; + newRoot.zMin -= this.root.zMax - this.root.zMin; if (this.root.count > 0) { var octantIndex = ((direction.x < 0) ? 1 : 0) + ((direction.y < 0) ? 2 : 0) + ((direction.z < 0) ? 4 : 0); newRoot.createOctants(); @@ -108,12 +107,12 @@ class Octree { /** Tries to shrink the octree if large parts of the octree are empty. */ public function shrink() { - if (this.root.bounds.xSize < 1 || this.root.bounds.ySize < 1 || this.root.bounds.zSize < 1 || this.root.objects.length > 0) + if (this.root.xMax - this.root.xMin < 1 || this.root.yMax - this.root.yMin < 1 || this.root.zMax - this.root.zMin < 1 || this.root.objects.length > 0) return; if (this.root.count == 0) { // Reset to default empty octree - this.root.bounds.xMin = this.root.bounds.yMin = this.root.bounds.zMin = 0; - this.root.bounds.xMax = this.root.bounds.yMax = this.root.bounds.zMin = 1; + this.root.xMin = this.root.yMin = this.root.zMin = 0; + this.root.xMax = this.root.yMax = this.root.zMax = 1; this.root.depth = 0; return; } @@ -154,9 +153,9 @@ class Octree { } /** Returns a list of all objects that intersect with the given ray, sorted by distance. */ - public function raycast(rayOrigin:Vector, rayDirection:Vector) { + public function raycast(rayOrigin:Vector, rayDirection:Vector, bestT:Float) { var intersections:Array = []; - this.root.raycast(rayOrigin, rayDirection, intersections); + this.root.raycast(rayOrigin, rayDirection, intersections, bestT); intersections.sort((a, b) -> (a.distance == b.distance) ? 0 : (a.distance > b.distance ? 1 : -1)); return intersections; } diff --git a/src/octree/OctreeNode.hx b/src/octree/OctreeNode.hx index 9ea946d9..9d9457c5 100644 --- a/src/octree/OctreeNode.hx +++ b/src/octree/OctreeNode.hx @@ -13,7 +13,13 @@ class OctreeNode implements IOctreeElement { public var position:Int; /** The min corner of the bounding box. */ - public var bounds:Bounds; + public var xMin:Float; + + public var yMin:Float; + public var zMin:Float; + public var xMax:Float; + public var yMax:Float; + public var zMax:Float; /** The size of the bounding box on all three axes. This forces the bounding box to be a cube. */ public var octants:Array = null; @@ -26,9 +32,18 @@ class OctreeNode implements IOctreeElement { public var depth:Int; - public function new(octree:Octree, depth:Int) { + var disableMerge:Bool; + + public function new(octree:Octree, depth:Int, disableMerge:Bool = false) { this.octree = octree; this.depth = depth; + this.xMin = 0; + this.yMin = 0; + this.zMin = 0; + this.xMax = 1; + this.yMax = 1; + this.zMax = 1; + this.disableMerge = disableMerge; } public function insert(object:IOctreeObject) { @@ -78,18 +93,15 @@ class OctreeNode implements IOctreeElement { public function createOctants() { this.octants = []; for (i in 0...8) { - var newNode = new OctreeNode(this.octree, this.depth + 1); + var newNode = new OctreeNode(this.octree, this.depth + 1, disableMerge); newNode.parent = this; - var newSize = this.bounds.getSize().multiply(1 / 2); - newNode.bounds = this.bounds.clone(); - newNode.bounds.setMin(new Point(this.bounds.xMin - + newSize.x * ((i & 1) >> 0), this.bounds.yMin - + newSize.y * ((i & 2) >> 1), - this.bounds.zMin - + newSize.z * ((i & 4) >> 2))); - newNode.bounds.xSize = newSize.x; - newNode.bounds.ySize = newSize.y; - newNode.bounds.zSize = newSize.z; + var newSize = new Vector(xMax - xMin, yMax - yMin, zMax - zMin); + newNode.xMin = this.xMin + newSize.x * ((i & 1) >> 0); + newNode.yMin = this.yMin + newSize.y * ((i & 2) >> 1); + newNode.zMin = this.zMin + newSize.z * ((i & 4) >> 2); + newNode.xMax = newNode.xMin + newSize.x; + newNode.yMax = newNode.yMin + newSize.y; + newNode.zMax = newNode.zMin + newSize.z; this.octants.push(newNode); } } @@ -128,7 +140,7 @@ class OctreeNode implements IOctreeElement { } public function merge() { - if (this.count > 8 || (this.octants == null)) + if (this.count > 8 || (this.octants == null) || disableMerge) return; // Add all objects in the octants back to this node for (i in 0...8) { @@ -141,28 +153,58 @@ class OctreeNode implements IOctreeElement { this.octants = null; // ...then devare the octants } - public function largerThan(object:IOctreeObject) { - return this.bounds.containsBounds(object.boundingBox); + public inline function largerThan(object:IOctreeObject) { + return xMin <= object.boundingBox.xMin && yMin <= object.boundingBox.yMin && zMin <= object.boundingBox.zMin && xMax >= object.boundingBox.xMax + && yMax >= object.boundingBox.yMax && zMax >= object.boundingBox.zMax; // return this.size > (box.xMax - box.xMin) && this.size > (box.yMax - box.yMin) && this.size > (box.zMax - box.zMin); } - public function containsCenter(object:IOctreeObject) { - return this.bounds.contains(object.boundingBox.getCenter()); + public inline function containsCenter(object:IOctreeObject) { + return this.containsPoint2(object.boundingBox.getCenter()); } - public function containsPoint(point:Vector) { - return this.bounds.contains(point.toPoint()); + public inline function containsPoint(p:Vector) { + return p.x >= xMin && p.x < xMax && p.y >= yMin && p.y < yMax && p.z >= zMin && p.z < zMax; } - public function raycast(rayOrigin:Vector, rayDirection:Vector, intersections:Array) { + public inline function containsPoint2(p:h3d.col.Point) { + return p.x >= xMin && p.x < xMax && p.y >= yMin && p.y < yMax && p.z >= zMin && p.z < zMax; + } + + inline function rayIntersection(r:Ray, bestMatch:Bool):Float { + var minTx = (xMin - r.px) / r.lx; + var minTy = (yMin - r.py) / r.ly; + var minTz = (zMin - r.pz) / r.lz; + var maxTx = (xMax - r.px) / r.lx; + var maxTy = (yMax - r.py) / r.ly; + var maxTz = (zMax - r.pz) / r.lz; + + var realMinTx = Math.min(minTx, maxTx); + var realMinTy = Math.min(minTy, maxTy); + var realMinTz = Math.min(minTz, maxTz); + var realMaxTx = Math.max(minTx, maxTx); + var realMaxTy = Math.max(minTy, maxTy); + var realMaxTz = Math.max(minTz, maxTz); + + var minmax = Math.min(Math.min(realMaxTx, realMaxTy), realMaxTz); + var maxmin = Math.max(Math.max(realMinTx, realMinTy), realMinTz); + + if (minmax < maxmin) + return -1; + + return maxmin; + } + + public function raycast(rayOrigin:Vector, rayDirection:Vector, intersections:Array, bestT:Float) { var ray = Ray.fromValues(rayOrigin.x, rayOrigin.y, rayOrigin.z, rayDirection.x, rayDirection.y, rayDirection.z); // Construct the loose bounding box of this node (2x in size, with the regular bounding box in the center) - if (this.bounds.rayIntersection(ray, true) == -1) + if (rayIntersection(ray, true) == -1) return; for (obj in this.objects) { - var iSecs = obj.rayCast(rayOrigin, rayDirection); + var iSecs = []; + obj.rayCast(rayOrigin, rayDirection, iSecs, bestT); for (intersection in iSecs) { var intersectionData = new OctreeIntersection(); intersectionData.distance = rayOrigin.distance(intersection.point); @@ -176,47 +218,27 @@ class OctreeNode implements IOctreeElement { if (this.octants != null) { for (i in 0...8) { var octant = this.octants[i]; - octant.raycast(rayOrigin, rayDirection, intersections); + octant.raycast(rayOrigin, rayDirection, intersections, bestT); } } } - public function boundingSearch(bounds:Bounds, intersections:Array) { - if (this.bounds.collide(bounds)) { + public function boundingSearch(b:Bounds, intersections:Array) { + if (!(xMin > b.xMax || yMin > b.yMax || zMin > b.zMax || xMax < b.xMin || yMax < b.yMin || zMax < b.zMin)) { for (obj in this.objects) { - if (obj.boundingBox.collide(bounds)) + if (obj.boundingBox.collide(b)) intersections.push(obj); } if (octants != null) { for (octant in this.octants) - octant.boundingSearch(bounds, intersections); + octant.boundingSearch(b, intersections); } } } - public function getClosestPoint(point:Vector) { - var closest = new Vector(); - if (this.bounds.xMin > point.x) - closest.x = this.bounds.xMin; - else if (this.bounds.xMax < point.x) - closest.x = this.bounds.xMax; - else - closest.x = point.x; - - if (this.bounds.yMin > point.y) - closest.y = this.bounds.yMin; - else if (this.bounds.yMax < point.y) - closest.y = this.bounds.yMax; - else - closest.y = point.y; - - if (this.bounds.zMin > point.z) - closest.z = this.bounds.zMin; - else if (this.bounds.zMax < point.z) - closest.z = this.bounds.zMax; - else - closest.z = point.z; - + public inline function getClosestPoint(point:Vector) { + var closest = new Vector(Math.min(Math.max(this.xMin, point.x), this.xMax), Math.min(Math.max(this.yMin, point.y), this.yMax), + Math.min(Math.max(this.zMin, point.z), this.zMax)); return closest; } diff --git a/src/octree/PriorityQueue.hx b/src/octree/PriorityQueue.hx index c8367b3b..a68ee36c 100644 --- a/src/octree/PriorityQueue.hx +++ b/src/octree/PriorityQueue.hx @@ -1,5 +1,6 @@ package octree; +@:generic class PriorityQueue { var queue:Array>; @@ -12,7 +13,7 @@ class PriorityQueue { public function enqueue(val:T, priority:Float) { var node = new PriorityQueueNode(val, priority); - if (this.queue == null) { + if (this.queue == null || this.queue.length == 0) { this.queue = [node]; } else { if (this.queue[0].priority >= priority) { diff --git a/src/octree/PriorityQueueNode.hx b/src/octree/PriorityQueueNode.hx index b9fc74d7..9ef34c02 100644 --- a/src/octree/PriorityQueueNode.hx +++ b/src/octree/PriorityQueueNode.hx @@ -1,5 +1,6 @@ package octree; +@:generic class PriorityQueueNode { public var value:T; public var priority:Float; diff --git a/src/rewind/InputRecorder.hx b/src/rewind/InputRecorder.hx new file mode 100644 index 00000000..7cf21750 --- /dev/null +++ b/src/rewind/InputRecorder.hx @@ -0,0 +1,62 @@ +package rewind; + +import src.MarbleWorld; +import h3d.Vector; +import net.Move; + +@:publicFields +class InputRecorderFrame { + var time:Float; + var move:Move; + var marbleAxes:Array; + var pos:Vector; + var velocity:Vector; + + public function new() {} +} + +class InputRecorder { + var frames:Array; + var level:MarbleWorld; + + public function new(level:MarbleWorld) { + frames = []; + this.level = level; + } + + public function recordInput(t:Float) { + var frame = new InputRecorderFrame(); + frame.time = t; + frame.move = level.marble.recordMove(); + frames.push(frame); + } + + public function recordMarble() { + frames[frames.length - 1].pos = @:privateAccess level.marble.newPos?.clone(); + frames[frames.length - 1].velocity = level.marble.velocity.clone(); + } + + public function recordAxis(axis:Array) { + frames[frames.length - 1].marbleAxes = axis.copy(); + } + + public function getMovesFrom(t:Float) { + if (frames.length == 0) + return []; + var start = 0; + var end = frames.length - 1; + var mid = Std.int(frames.length / 2); + while (end - start > 1) { + mid = Std.int((start / 2) + (end / 2)); + if (frames[mid].time < t) { + start = mid + 1; + } else if (frames[mid].time > t) { + end = mid - 1; + } else { + start = end = mid; + } + } + + return frames.slice(start - 1); + } +} diff --git a/src/rewind/RewindFrame.hx b/src/rewind/RewindFrame.hx index 3ff793ec..d2ad48ae 100644 --- a/src/rewind/RewindFrame.hx +++ b/src/rewind/RewindFrame.hx @@ -14,6 +14,29 @@ import src.TimeState; import src.DtsObject; import shapes.Gem; +@:publicFields +class RewindMPState { + var currentTime:Float; + var targetTime:Float; + var stoppedPosition:Vector; + var prevPosition:Vector; + var position:Vector; + var velocity:Vector; + + public function new() {} + + public function clone() { + var c = new RewindMPState(); + c.currentTime = currentTime; + c.targetTime = targetTime; + c.stoppedPosition = stoppedPosition != null ? stoppedPosition.clone() : null; + c.prevPosition = prevPosition.clone(); + c.position = position.clone(); + c.velocity = velocity.clone(); + return c; + } +} + @:publicFields class RewindFrame { var timeState:TimeState; @@ -23,11 +46,7 @@ class RewindFrame { var marbleAngularVelocity:Vector; var marblePowerup:PowerUp; var bonusTime:Float; - var mpStates:Array<{ - curState:PIState, - stopped:Bool, - position:Vector - }>; + var mpStates:Array; var gemCount:Int; var gemStates:Array; var powerupStates:Array; @@ -69,18 +88,7 @@ class RewindFrame { c.activePowerupStates = activePowerupStates.copy(); c.currentUp = currentUp.clone(); c.lastContactNormal = lastContactNormal.clone(); - c.mpStates = []; - for (s in mpStates) { - c.mpStates.push({ - curState: { - currentTime: s.curState.currentTime, - targetTime: s.curState.targetTime, - velocity: s.curState.velocity.clone(), - }, - stopped: s.stopped, - position: s.position.clone(), - }); - } + c.mpStates = mpStates.copy(); c.trapdoorStates = []; for (s in trapdoorStates) { c.trapdoorStates.push({ @@ -127,11 +135,14 @@ class RewindFrame { framesize += 24; // lastContactNormal framesize += 2; // mpStates.length for (s in mpStates) { - framesize += 8; // s.curState.currentTime - framesize += 8; // s.curState.targetTime - framesize += 24; // s.curState.velocity - framesize += 1; // s.stopped + framesize += 8; // s.currentTime + framesize += 8; // s.targetTime + framesize += 1; // Null + if (s.stoppedPosition != null) + framesize += 24; // s.stoppedPosition + framesize += 24; // s.prevPosition framesize += 24; // s.position + framesize += 24; // s.velocity } framesize += 2; // trapdoorStates.length for (s in trapdoorStates) { @@ -204,15 +215,23 @@ class RewindFrame { bb.writeDouble(lastContactNormal.z); bb.writeInt16(mpStates.length); for (s in mpStates) { - bb.writeDouble(s.curState.currentTime); - bb.writeDouble(s.curState.targetTime); - bb.writeDouble(s.curState.velocity.x); - bb.writeDouble(s.curState.velocity.y); - bb.writeDouble(s.curState.velocity.z); - bb.writeByte(s.stopped ? 1 : 0); + bb.writeDouble(s.currentTime); + bb.writeDouble(s.targetTime); + bb.writeByte(s.stoppedPosition == null ? 0 : 1); + if (s.stoppedPosition != null) { + bb.writeDouble(s.stoppedPosition.x); + bb.writeDouble(s.stoppedPosition.y); + bb.writeDouble(s.stoppedPosition.z); + } + bb.writeDouble(s.prevPosition.x); + bb.writeDouble(s.prevPosition.y); + bb.writeDouble(s.prevPosition.z); bb.writeDouble(s.position.x); bb.writeDouble(s.position.y); bb.writeDouble(s.position.z); + bb.writeDouble(s.velocity.x); + bb.writeDouble(s.velocity.y); + bb.writeDouble(s.velocity.z); } bb.writeInt16(trapdoorStates.length); for (s in trapdoorStates) { @@ -311,24 +330,29 @@ class RewindFrame { mpStates = []; var mpStates_len = br.readInt16(); for (i in 0...mpStates_len) { - var mpStates_item = { - curState: { - currentTime: 0.0, - targetTime: 0.0, - velocity: new Vector(), - }, - stopped: false, - position: new Vector() - }; - mpStates_item.curState.currentTime = br.readDouble(); - mpStates_item.curState.targetTime = br.readDouble(); - mpStates_item.curState.velocity.x = br.readDouble(); - mpStates_item.curState.velocity.y = br.readDouble(); - mpStates_item.curState.velocity.z = br.readDouble(); - mpStates_item.stopped = br.readByte() != 0; + var mpStates_item = new RewindMPState(); + mpStates_item.currentTime = br.readDouble(); + mpStates_item.targetTime = br.readDouble(); + mpStates_item.stoppedPosition = new Vector(); + mpStates_item.prevPosition = new Vector(); + mpStates_item.position = new Vector(); + mpStates_item.velocity = new Vector(); + if (br.readByte() != 0) { + mpStates_item.stoppedPosition.x = br.readDouble(); + mpStates_item.stoppedPosition.y = br.readDouble(); + mpStates_item.stoppedPosition.z = br.readDouble(); + } else { + mpStates_item.stoppedPosition = null; + } + mpStates_item.prevPosition.x = br.readDouble(); + mpStates_item.prevPosition.y = br.readDouble(); + mpStates_item.prevPosition.z = br.readDouble(); mpStates_item.position.x = br.readDouble(); mpStates_item.position.y = br.readDouble(); mpStates_item.position.z = br.readDouble(); + mpStates_item.velocity.x = br.readDouble(); + mpStates_item.velocity.y = br.readDouble(); + mpStates_item.velocity.z = br.readDouble(); mpStates.push(mpStates_item); } trapdoorStates = []; diff --git a/src/rewind/RewindManager.hx b/src/rewind/RewindManager.hx index 2ed905b7..03ccec20 100644 --- a/src/rewind/RewindManager.hx +++ b/src/rewind/RewindManager.hx @@ -1,5 +1,6 @@ package rewind; +import rewind.RewindFrame.RewindMPState; import haxe.io.BytesInput; import haxe.io.BytesBuffer; import mis.MissionElement.MissionElementBase; @@ -38,7 +39,7 @@ class RewindManager { public function recordFrame() { var rf = new RewindFrame(); rf.timeState = level.timeState.clone(); - rf.marblePosition = level.marble.getAbsPos().getPosition().clone(); + rf.marblePosition = level.marble.collider.transform.getPosition().clone(); rf.marbleOrientation = level.marble.getRotationQuat().clone(); rf.marbleVelocity = level.marble.velocity.clone(); rf.marbleAngularVelocity = level.marble.omega.clone(); @@ -52,18 +53,17 @@ class RewindManager { level.marble.helicopterEnableTime, @:privateAccess level.marble.megaMarbleEnableTime ]; - rf.currentUp = level.currentUp.clone(); + rf.currentUp = level.marble.currentUp.clone(); rf.lastContactNormal = level.marble.lastContactNormal.clone(); rf.mpStates = level.pathedInteriors.map(x -> { - return { - curState: { - currentTime: x.currentTime, - targetTime: x.targetTime, - velocity: x.velocity.clone(), - }, - stopped: @:privateAccess x.stopped, - position: x.getAbsPos().getPosition().clone(), - } + var mpstate = new RewindMPState(); + mpstate.currentTime = x.currentTime; + mpstate.targetTime = x.targetTime; + mpstate.velocity = x.velocity.clone(); + mpstate.stoppedPosition = @:privateAccess x.stopped ? @:privateAccess x.stoppedPosition.clone() : null; + mpstate.position = @:privateAccess x.position.clone(); + mpstate.prevPosition = @:privateAccess x.prevPosition.clone(); + return mpstate; }); rf.powerupStates = []; rf.landMineStates = []; @@ -98,10 +98,10 @@ class RewindManager { rf.powerupStates.push(ab.lastContactTime); } } - rf.blastAmt = level.blastAmount; + rf.blastAmt = level.marble.blastAmount; rf.oobState = { - oob: level.outOfBounds, - timeState: level.outOfBoundsTime != null ? level.outOfBoundsTime.clone() : null + oob: level.marble.outOfBounds, + timeState: level.marble.outOfBoundsTime != null ? level.marble.outOfBoundsTime.clone() : null }; rf.checkpointState = { currentCheckpoint: @:privateAccess level.currentCheckpoint, @@ -121,20 +121,20 @@ class RewindManager { public function applyFrame(rf:RewindFrame) { level.timeState = rf.timeState.clone(); - level.marble.setPosition(rf.marblePosition.x, rf.marblePosition.y, rf.marblePosition.z); + level.marble.setMarblePosition(rf.marblePosition.x, rf.marblePosition.y, rf.marblePosition.z); level.marble.setRotationQuat(rf.marbleOrientation.clone()); level.marble.velocity.set(rf.marbleVelocity.x, rf.marbleVelocity.y, rf.marbleVelocity.z); level.marble.omega.set(rf.marbleAngularVelocity.x, rf.marbleAngularVelocity.y, rf.marbleAngularVelocity.z); if (level.marble.heldPowerup == null) { if (rf.marblePowerup != null) { - level.pickUpPowerUp(rf.marblePowerup); + level.pickUpPowerUp(level.marble, rf.marblePowerup); } } else { if (rf.marblePowerup == null) { - level.deselectPowerUp(); + level.deselectPowerUp(level.marble); } else { - level.pickUpPowerUp(rf.marblePowerup); + level.pickUpPowerUp(level.marble, rf.marblePowerup); } } @@ -149,8 +149,10 @@ class RewindManager { @:privateAccess level.marble.helicopterEnableTime = rf.activePowerupStates[2]; @:privateAccess level.marble.megaMarbleEnableTime = rf.activePowerupStates[3]; - if (level.currentUp.x != rf.currentUp.x || level.currentUp.y != rf.currentUp.y || level.currentUp.z != rf.currentUp.z) { - level.setUp(rf.currentUp, level.timeState); + if (level.marble.currentUp.x != rf.currentUp.x + || level.marble.currentUp.y != rf.currentUp.y + || level.marble.currentUp.z != rf.currentUp.z) { + level.setUp(level.marble, rf.currentUp, level.timeState); // Hacky things @:privateAccess level.orientationChangeTime = level.timeState.currentAttemptTime - 300; var oldorient = level.newOrientationQuat; @@ -164,15 +166,23 @@ class RewindManager { @:privateAccess level.orientationChangeTime = -1e8; } - level.currentUp.set(rf.currentUp.x, rf.currentUp.y, rf.currentUp.z); + level.marble.currentUp.set(rf.currentUp.x, rf.currentUp.y, rf.currentUp.z); level.marble.lastContactNormal.set(rf.lastContactNormal.x, rf.lastContactNormal.y, rf.lastContactNormal.z); for (i in 0...rf.mpStates.length) { - level.pathedInteriors[i].currentTime = rf.mpStates[i].curState.currentTime; - level.pathedInteriors[i].targetTime = rf.mpStates[i].curState.targetTime; - level.pathedInteriors[i].velocity.set(rf.mpStates[i].curState.velocity.x, rf.mpStates[i].curState.velocity.y, rf.mpStates[i].curState.velocity.z); - @:privateAccess level.pathedInteriors[i].stopped = rf.mpStates[i].stopped; - level.pathedInteriors[i].setPosition(rf.mpStates[i].position.x, rf.mpStates[i].position.y, rf.mpStates[i].position.z); - level.pathedInteriors[i].setTransform(level.pathedInteriors[i].getTransform()); + level.pathedInteriors[i].currentTime = rf.mpStates[i].currentTime; + level.pathedInteriors[i].targetTime = rf.mpStates[i].targetTime; + level.pathedInteriors[i].velocity.load(rf.mpStates[i].velocity); + @:privateAccess level.pathedInteriors[i].stopped = rf.mpStates[i].stoppedPosition != null; + @:privateAccess level.pathedInteriors[i].position.load(rf.mpStates[i].position); + @:privateAccess level.pathedInteriors[i].prevPosition.load(rf.mpStates[i].prevPosition); + @:privateAccess level.pathedInteriors[i].stoppedPosition = rf.mpStates[i].stoppedPosition; + if (level.pathedInteriors[i].isCollideable) { + var tform = level.pathedInteriors[i].getAbsPos().clone(); + tform.setPosition(rf.mpStates[i].position); + @:privateAccess level.pathedInteriors[i].collider.setTransform(tform); + level.collisionWorld.updateTransform(@:privateAccess level.pathedInteriors[i].collider); + } + // level.pathedInteriors[i].setTransform(level.pathedInteriors[i].getTransform()); } var pstates = rf.powerupStates.copy(); var lmstates = rf.landMineStates.copy(); @@ -209,15 +219,15 @@ class RewindManager { if (!rf.oobState.oob) { @:privateAccess level.cancel(level.oobSchedule); - @:privateAccess level.cancel(level.oobSchedule2); + @:privateAccess level.cancel(level.marble.oobSchedule); } else { - level.goOutOfBounds(); + level.goOutOfBounds(level.marble); } - level.outOfBounds = rf.oobState.oob; + level.marble.outOfBounds = rf.oobState.oob; level.marble.camera.oob = rf.oobState.oob; - level.outOfBoundsTime = rf.oobState.timeState != null ? rf.oobState.timeState.clone() : null; - level.blastAmount = rf.blastAmt; + level.marble.outOfBoundsTime = rf.oobState.timeState != null ? rf.oobState.timeState.clone() : null; + level.marble.blastAmount = rf.blastAmt; @:privateAccess level.checkpointUp = rf.checkpointState.checkpointUp; @:privateAccess level.checkpointCollectedGems = rf.checkpointState.checkpointCollectedGems; @:privateAccess level.cheeckpointBlast = rf.checkpointState.checkpointBlast; diff --git a/src/shaders/CubemapRenderer.hx b/src/shaders/CubemapRenderer.hx index 54261e5d..726d16dc 100644 --- a/src/shaders/CubemapRenderer.hx +++ b/src/shaders/CubemapRenderer.hx @@ -16,22 +16,36 @@ class CubemapRenderer { var camera:Camera; var scene:Scene; var nextFaceToRender:Int; + var facesPerRender:Int = 2; + var updateFps:Float = 360.0; // 6 faces in (1/60) seconds, 1 face in (1/360) seconds + var lastRenderTime:Float = 0; + var usingSky:Bool = false; - public function new(scene:Scene, sky:Sky) { + public function new(scene:Scene, sky:Sky, useSky = false) { this.scene = scene; this.sky = sky; - this.cubemap = new Texture(128, 128, [Cube, Dynamic, Target], h3d.mat.Data.TextureFormat.RGB8); - this.cubemap.depthBuffer = new h3d.mat.DepthBuffer(128, 128, h3d.mat.DepthBuffer.DepthFormat.Depth24); + if (useSky) + this.cubemap = sky.cubemap; + else { + this.cubemap = new Texture(128, 128, [Cube, Dynamic, Target], h3d.mat.Data.TextureFormat.RGBA); + this.cubemap.depthBuffer = new h3d.mat.DepthBuffer(128, 128, h3d.mat.DepthBuffer.DepthFormat.Depth16); + } this.camera = new Camera(90, 1, 1, 0.02, scene.camera.zFar); this.position = new Vector(); this.nextFaceToRender = 0; } public function render(e:Engine, budget:Float = 1e8) { + var start = haxe.Timer.stamp(); + if (start - lastRenderTime > facesPerRender * 1.0 / updateFps) { + lastRenderTime = start; + } else { + return; + } + var scenecam = scene.camera; scene.camera = camera; - var start = haxe.Timer.stamp(); var renderedFaces = 0; for (i in 0...6) { @@ -39,6 +53,7 @@ class CubemapRenderer { e.pushTarget(cubemap, index); this.camera.setCubeMap(index, position); + this.camera.update(); e.clear(0, 1); scene.render(e); e.popTarget(); diff --git a/src/shaders/DtsTexture.hx b/src/shaders/DtsTexture.hx index 0fdd7e92..62f877b6 100644 --- a/src/shaders/DtsTexture.hx +++ b/src/shaders/DtsTexture.hx @@ -16,6 +16,8 @@ class DtsTexture extends hxsl.Shader { @range(0, 1) @param var killAlphaThreshold:Float; @param var texture:Sampler2D; @const var normalizeNormals:Bool; + @const var usePremultipliedAlpha:Bool; + @param var opacityMult:Float; @perInstance @param var currentOpacity:Float; var calculatedUV:Vec2; var pixelColor:Vec4; @@ -40,7 +42,11 @@ class DtsTexture extends hxsl.Shader { pixelColor *= c; if (specularAlpha) specColor *= c.aaa; - pixelColor.a *= c.a * currentOpacity; + if (usePremultipliedAlpha) { + pixelColor.a = c.a * currentOpacity * opacityMult; + } else { + pixelColor.a *= c.a * currentOpacity; + } } } diff --git a/src/shaders/NoiseTileMaterial.hx b/src/shaders/NoiseTileMaterial.hx index 5c3bd433..e36cc006 100644 --- a/src/shaders/NoiseTileMaterial.hx +++ b/src/shaders/NoiseTileMaterial.hx @@ -10,7 +10,7 @@ class NoiseTileMaterial extends hxsl.Shader { @param var ambientLight:Vec3; @param var dirLight:Vec3; @param var dirLightDir:Vec3; - @param var secondaryMapUvFactor:Float; + @param var uvScaleFactor:Float; @global var camera:{ var position:Vec3; @var var dir:Vec3; @@ -40,7 +40,7 @@ class NoiseTileMaterial extends hxsl.Shader { return saturate(result); } function vertex() { - calculatedUV = input.uv; + calculatedUV = input.uv * uvScaleFactor; fragLightW = step(0, dot(dirLight, input.normal)); } function fragment() { @@ -77,7 +77,7 @@ class NoiseTileMaterial extends hxsl.Shader { var outCol = diffuse + noiseAdd; var n = transformedNormal; - var nf = unpackNormal(normalMap.get(calculatedUV * secondaryMapUvFactor)); + var nf = unpackNormal(normalMap.get(calculatedUV)); var tanX = transformedTangent.xyz.normalize(); var tanY = n.cross(tanX) * transformedTangent.w; transformedNormal = (nf.x * tanX + nf.y * tanY + nf.z * n).normalize(); @@ -116,6 +116,6 @@ class NoiseTileMaterial extends hxsl.Shader { this.ambientLight = ambientLight.clone(); this.dirLight = dirLight.clone(); this.dirLightDir = dirLightDir.clone(); - this.secondaryMapUvFactor = secondaryMapUvFactor; + this.uvScaleFactor = secondaryMapUvFactor; } } diff --git a/src/shaders/PQMaterial.hx b/src/shaders/PQMaterial.hx new file mode 100644 index 00000000..7c6e2145 --- /dev/null +++ b/src/shaders/PQMaterial.hx @@ -0,0 +1,79 @@ +package shaders; + +class PQMaterial extends hxsl.Shader { + static var SRC = { + @param var diffuseMap:Sampler2D; + @param var normalMap:Sampler2D; + @param var shininess:Float; + @param var specularMap:Sampler2D; + @param var ambientLight:Vec3; + @param var dirLight:Vec3; + @param var dirLightDir:Vec3; + @param var secondaryUVMapFactor:Float; + @global var camera:{ + var position:Vec3; + @var var dir:Vec3; + }; + @global var global:{ + @perObject var modelView:Mat4; + @perObject var modelViewInverse:Mat4; + }; + @input var input:{ + var normal:Vec3; + var tangent:Vec3; + var uv:Vec2; + }; + var calculatedUV:Vec2; + var pixelColor:Vec4; + var specColor:Vec3; + var specPower:Float; + var transformedPosition:Vec3; + var transformedNormal:Vec3; + @var var transformedTangent:Vec4; + function __init__vertex() { + transformedTangent = vec4(input.tangent * global.modelView.mat3(), input.tangent.dot(input.tangent) > 0.5 ? 1. : -1.); + } + function vertex() { + calculatedUV = input.uv; + } + function fragment() { + // Diffuse part + var diffuse = diffuseMap.get(calculatedUV); + + var n = transformedNormal; + var nf = normalMap.get(calculatedUV * secondaryUVMapFactor) * 2.0 - 1.0; + var tanX = transformedTangent.xyz.normalize(); + var tanY = n.cross(tanX) * transformedTangent.w; + transformedNormal = (nf.x * tanX + nf.y * tanY + nf.z * n).normalize(); + + var cosTheta = clamp(dot(transformedNormal, -dirLightDir), 0, 1); + var effectiveSun = dirLight * cosTheta + ambientLight; + effectiveSun = vec3(clamp(effectiveSun.r, 0, 1), clamp(effectiveSun.g, 0, 1), clamp(effectiveSun.b, 0, 1)); + + var outCol = vec4(diffuse.rgb * effectiveSun.rgb, 1); + + var specularColor = specularMap.get(calculatedUV * secondaryUVMapFactor); + var eyeVec = (camera.position - transformedPosition).normalize(); + var halfAng = (eyeVec - dirLightDir).normalize(); + var specValue = saturate(transformedNormal.dot(halfAng)); + var specular = specularColor * pow(specValue, shininess); + + outCol.rgb += specular.rgb * dirLight; + outCol.a = 1; + + pixelColor = outCol; + } + } + + public function new(diffuse, normal, shininess, specularMap, ambientLight, dirLight, dirLightDir, secondaryFactor = 1.0) { + super(); + this.diffuseMap = diffuse; + this.normalMap = normal; + this.shininess = shininess; + this.specularMap = specularMap; + this.ambientLight = ambientLight.clone(); + this.dirLight = dirLight.clone(); + this.dirLightDir = dirLightDir.clone(); + this.secondaryUVMapFactor = secondaryFactor; + } +} diff --git a/src/shapes/AbstractBumper.hx b/src/shapes/AbstractBumper.hx index 01b0c69b..cf716770 100644 --- a/src/shapes/AbstractBumper.hx +++ b/src/shapes/AbstractBumper.hx @@ -16,7 +16,7 @@ class AbstractBumper extends DtsObject { override function update(timeState:src.TimeState) { // Override the keyframe var currentCompletion = getCurrentCompletion(timeState); - this.sequenceKeyframeOverride.set(this.dts.sequences[0], currentCompletion * (this.dts.sequences[0].numKeyFrames - 1)); + this.sequenceKeyframeOverride[0] = (currentCompletion * (this.dts.sequences[0].numKeyFrames - 1)); super.update(timeState); } @@ -27,8 +27,8 @@ class AbstractBumper extends DtsObject { return completion; } - override function onMarbleContact(time:TimeState, ?contact:CollisionInfo) { - super.onMarbleContact(time, contact); + override function onMarbleContact(marble:src.Marble, time:TimeState, ?contact:CollisionInfo) { + super.onMarbleContact(marble, time, contact); if (time.timeSinceLoad - this.lastContactTime <= 0) return; var currentCompletion = this.getCurrentCompletion(time); diff --git a/src/shapes/AntiGravity.hx b/src/shapes/AntiGravity.hx index 948dbbf1..5844f17b 100644 --- a/src/shapes/AntiGravity.hx +++ b/src/shapes/AntiGravity.hx @@ -6,6 +6,7 @@ import src.TimeState; import h3d.Vector; import src.DtsObject; import src.MarbleWorld; +import net.NetPacket.MarbleNetFlags; class AntiGravity extends PowerUp { public function new(element:MissionElementItem, norespawn:Bool = false) { @@ -20,23 +21,23 @@ class AntiGravity extends PowerUp { this.cooldownDuration = Math.NEGATIVE_INFINITY; } - public function pickUp():Bool { + public function pickUp(marble:src.Marble):Bool { var direction = new Vector(0, 0, -1); direction.transform(this.getRotationQuat().toMatrix()); - return !direction.equals(this.level.currentUp); + return !direction.equals(marble.currentUp); } - public function use(timeState:TimeState) { + public function use(marble:src.Marble, timeState:TimeState) { if (!this.level.rewinding) { var direction = new Vector(0, 0, -1); direction.transform(this.getRotationQuat().toMatrix()); - this.level.setUp(direction, timeState); + if (marble == level.marble) + this.level.setUp(marble, direction, timeState); + else { + @:privateAccess marble.netFlags |= MarbleNetFlags.GravityChange; + marble.currentUp.load(direction); + } } - // marble.body.addLinearVelocity(this.level.currentUp.scale(20)); // Simply add to vertical velocity - // if (!this.level.rewinding) - // AudioManager.play(this.sounds[1]); - // this.level.particles.createEmitter(superJumpParticleOptions, null, () => Util.vecOimoToThree(marble.body.getPosition())); - // this.level.deselectPowerUp(); } public override function init(level:MarbleWorld, onFinish:Void->Void) { diff --git a/src/shapes/Blast.hx b/src/shapes/Blast.hx index cbba68ea..1ee1fb50 100644 --- a/src/shapes/Blast.hx +++ b/src/shapes/Blast.hx @@ -26,11 +26,12 @@ class Blast extends PowerUp { }); } - public function pickUp():Bool { + public function pickUp(marble:src.Marble):Bool { return true; } - public function use(timeState:TimeState) { - this.level.blastAmount = 1.03; + public function use(marble:src.Marble, timeState:TimeState) { + marble.blastAmount = 1.03; + marble.blastTicks = 36000 >> 5; // Fix me } } diff --git a/src/shapes/Checkpoint.hx b/src/shapes/Checkpoint.hx index c9187d3c..9617c562 100644 --- a/src/shapes/Checkpoint.hx +++ b/src/shapes/Checkpoint.hx @@ -28,7 +28,7 @@ class Checkpoint extends DtsObject { }); } - public override function onMarbleContact(time:src.TimeState, ?contact:CollisionInfo) { + public override function onMarbleContact(marble:src.Marble, time:src.TimeState, ?contact:CollisionInfo) { this.level.saveCheckpointState({ obj: this, elem: this.element diff --git a/src/shapes/EasterEgg.hx b/src/shapes/EasterEgg.hx index f26cbadf..88797451 100644 --- a/src/shapes/EasterEgg.hx +++ b/src/shapes/EasterEgg.hx @@ -1,5 +1,6 @@ package shapes; +import src.Marble; import src.Settings; import mis.MissionElement.MissionElementItem; import src.ResourceLoader; @@ -13,9 +14,10 @@ class EasterEgg extends PowerUp { this.identifier = "EasterEgg"; this.pickUpName = "Easter Egg"; this.autoUse = true; + this.cooldownDuration = 1e8; } - public function pickUp():Bool { + public function pickUp(marble:Marble):Bool { var found:Bool = false; if (Settings.easterEggs.exists(this.level.mission.path)) { found = true; @@ -40,5 +42,5 @@ class EasterEgg extends PowerUp { }); } - public function use(timeState:src.TimeState) {} + public function use(marble:Marble, timeState:src.TimeState) {} } diff --git a/src/shapes/Explodable.hx b/src/shapes/Explodable.hx new file mode 100644 index 00000000..cf416185 --- /dev/null +++ b/src/shapes/Explodable.hx @@ -0,0 +1,168 @@ +package shapes; + +import src.ParticleSystem.ParticleEmitter; +import src.Marble; +import h3d.Vector; +import src.ParticleSystem.ParticleEmitterOptions; +import net.BitStream.OutputBitStream; +import net.NetPacket.ExplodableUpdatePacket; +import collision.CollisionInfo; +import src.ParticleSystem.ParticleData; +import src.DtsObject; +import src.TimeState; +import src.Util; +import net.Net; +import src.MarbleWorld; +import src.ResourceLoader; +import src.AudioManager; + +abstract class Explodable extends DtsObject { + var particle:ParticleEmitterOptions; + var smokeParticle:ParticleEmitterOptions; + var sparksParticle:ParticleEmitterOptions; + + var particleData:ParticleData; + var smokeParticleData:ParticleData; + var sparkParticleData:ParticleData; + + var disappearTime = -1e8; + var lastContactTick:Int = -100000; + + var renewTime = 5000; + + var explodeSoundFile:String = "data/sound/explode1.wav"; + + var emitter1:ParticleEmitter; + var emitter2:ParticleEmitter; + var emitter3:ParticleEmitter; + + public var netId:Int; + + override function update(timeState:TimeState) { + super.update(timeState); + + if (Net.isMP) { + if (Net.isHost) { + if (timeState.ticks >= this.lastContactTick + (renewTime >> 5) || timeState.ticks < this.lastContactTick) { + this.setHide(false); + } else { + this.setHide(true); + } + + var opacity = Util.clamp((timeState.ticks - (this.lastContactTick + (renewTime >> 5))), 0, 1); + this.setOpacity(opacity); + } else { + if (@:privateAccess level.marble.serverTicks >= this.lastContactTick + (renewTime >> 5) || @:privateAccess level.marble.serverTicks < this.lastContactTick) { + this.setHide(false); + } else { + this.setHide(true); + } + + var opacity = Util.clamp((@:privateAccess level.marble.serverTicks - (this.lastContactTick + (renewTime >> 5))), 0, 1); + this.setOpacity(opacity); + } + } else { + if (timeState.timeSinceLoad >= this.disappearTime + (renewTime / 1000) || timeState.timeSinceLoad < this.disappearTime) { + this.setHide(false); + } else { + this.setHide(true); + } + + var opacity = Util.clamp((timeState.timeSinceLoad - (this.disappearTime + (renewTime / 1000))), 0, 1); + this.setOpacity(opacity); + } + } + + public override function init(level:MarbleWorld, onFinish:Void->Void) { + super.init(level, () -> { + ResourceLoader.load(explodeSoundFile).entry.load(onFinish); + }); + } + + public inline function playExplosion() { + if (!this.level.rewinding && !Net.isClient) + AudioManager.playSound(ResourceLoader.getResource(explodeSoundFile, ResourceLoader.getAudio, this.soundResources)); + + emitter1 = this.level.particleManager.createEmitter(particle, particleData, this.getAbsPos().getPosition()); + emitter2 = this.level.particleManager.createEmitter(smokeParticle, smokeParticleData, this.getAbsPos().getPosition()); + emitter3 = this.level.particleManager.createEmitter(sparksParticle, sparkParticleData, this.getAbsPos().getPosition()); + } + + override function onMarbleContact(marble:src.Marble, timeState:TimeState, ?contact:CollisionInfo) { + if (this.isCollideable && !this.level.rewinding) { + // marble.velocity = marble.velocity.add(vec); + this.disappearTime = timeState.timeSinceLoad; + if (Net.isClient) { + this.lastContactTick = @:privateAccess marble.serverTicks; + } else { + this.lastContactTick = timeState.ticks; + } + this.setCollisionEnabled(false); + + if (!this.level.rewinding && @:privateAccess !marble.isNetUpdate && !Net.isClient) + AudioManager.playSound(ResourceLoader.getResource(explodeSoundFile, ResourceLoader.getAudio, this.soundResources)); + if (@:privateAccess !marble.isNetUpdate) { + emitter1 = this.level.particleManager.createEmitter(particle, particleData, this.getAbsPos().getPosition()); + emitter2 = this.level.particleManager.createEmitter(smokeParticle, smokeParticleData, this.getAbsPos().getPosition()); + emitter3 = this.level.particleManager.createEmitter(sparksParticle, sparkParticleData, this.getAbsPos().getPosition()); + } + + if (Net.isClient) { + if (!level.explodablesToTick.contains(netId)) + level.explodablesToTick.push(netId); + } + + // var minePos = this.getAbsPos().getPosition(); + // var off = marble.getAbsPos().getPosition().sub(minePos); + + // var strength = computeExplosionStrength(off.length()); + + // var impulse = off.normalized().multiply(strength); + applyImpulse(marble); + + if (Net.isHost) { + var packet = new ExplodableUpdatePacket(); + packet.explodableId = netId; + packet.serverTicks = timeState.ticks; + var os = new OutputBitStream(); + os.writeByte(ExplodableUpdate); + packet.serialize(os); + Net.sendPacketToIngame(os); + } + + // light = new h3d.scene.fwd.PointLight(MarbleGame.instance.scene); + // light.setPosition(minePos.x, minePos.y, minePos.z); + // light.enableSpecular = false; + + // for (collider in this.colliders) { + // var hull:CollisionHull = cast collider; + // hull.force = strength; + // } + } + // Normally, we would add a light here, but that's too expensive for THREE, apparently. + + // this.level.replay.recordMarbleContact(this); + } + + public function revertContactTicks(ticks:Int) { + this.lastContactTick = ticks; + if (level.timeState.ticks >= this.lastContactTick + (renewTime >> 5) || level.timeState.ticks < this.lastContactTick) { + if (emitter1 != null) { + this.level.particleManager.removeEmitterWithParticles(emitter1); + emitter1 = null; + } + + if (emitter2 != null) { + this.level.particleManager.removeEmitterWithParticles(emitter2); + emitter2 = null; + } + + if (emitter3 != null) { + this.level.particleManager.removeEmitterWithParticles(emitter3); + emitter3 = null; + } + } + } + + abstract function applyImpulse(marble:Marble):Void; +} diff --git a/src/shapes/Gem.hx b/src/shapes/Gem.hx index 302e1027..548d3b0d 100644 --- a/src/shapes/Gem.hx +++ b/src/shapes/Gem.hx @@ -7,9 +7,14 @@ import src.TimeState; import src.DtsObject; import src.ResourceLoaderWorker; import src.ResourceLoader; +import src.Marble; class Gem extends DtsObject { public var pickedUp:Bool; + public var netIndex:Int; + public var pickUpClient:Int = -1; + public var radarGemColor:Int; + public var radarGemIndex:Int; var gemColor:String; @@ -30,6 +35,47 @@ class Gem extends DtsObject { this.identifier = "Gem" + color; this.matNameOverride.set('base.gem', color + ".gem"); gemColor = color + ".gem"; + var colLower = color.toLowerCase(); + switch (colLower) { + case "red": + radarGemColor = 0xFF0000; + radarGemIndex = 0; + case "blue": + radarGemColor = 0x6666E6; + radarGemIndex = 2; + + case "yellow": + radarGemColor = 0xFEFF00; + radarGemIndex = 1; + + case "green": + radarGemColor = 0x66E666; + radarGemIndex = 3; + + case "orange": + radarGemColor = 0xE6BA66; + radarGemIndex = 4; + + case "pink": + radarGemColor = 0xE666E5; + radarGemIndex = 5; + + case "purple": + radarGemColor = 0xC566E6; + radarGemIndex = 6; + + case "turquoise": + radarGemColor = 0x66E5E6; + radarGemIndex = 7; + + case "black": + radarGemColor = 0x666666; + radarGemIndex = 8; + + case "platinum": + radarGemColor = 0xA5A5A5; + radarGemIndex = 9; + } } public override function init(level:MarbleWorld, onFinish:Void->Void) { @@ -51,18 +97,19 @@ class Gem extends DtsObject { } } - override function onMarbleInside(timeState:TimeState) { - super.onMarbleInside(timeState); + override function onMarbleInside(marble:Marble, timeState:TimeState) { + super.onMarbleInside(marble, timeState); if (this.pickedUp || this.level.rewinding) return; this.pickedUp = true; this.setOpacity(0); // Hide the gem - this.level.pickUpGem(this); + this.level.pickUpGem(marble, this); // this.level.replay.recordMarbleInside(this); } override function reset() { this.pickedUp = false; + this.pickUpClient = -1; this.setOpacity(1); } } diff --git a/src/shapes/GemBeam.hx b/src/shapes/GemBeam.hx new file mode 100644 index 00000000..a54b6d40 --- /dev/null +++ b/src/shapes/GemBeam.hx @@ -0,0 +1,17 @@ +package shapes; + +import h3d.mat.Material; +import src.DtsObject; +import src.ResourceLoader; + +class GemBeam extends DtsObject { + public function new(color:String) { + super(); + this.dtsPath = "data/shapes/gemlights/gemlight.dts"; + this.isCollideable = false; + this.isTSStatic = false; + this.identifier = "GemBeam" + color; + this.useInstancing = true; + this.matNameOverride.set('base.lightbeam', color + '.lightbeam'); + } +} diff --git a/src/shapes/Helicopter.hx b/src/shapes/Helicopter.hx index e0cd4d28..0efc5595 100644 --- a/src/shapes/Helicopter.hx +++ b/src/shapes/Helicopter.hx @@ -6,6 +6,7 @@ import src.TimeState; import src.DtsObject; import src.AudioManager; import src.MarbleWorld; +import src.Marble; class Helicopter extends PowerUp { public function new(element:MissionElementItem) { @@ -27,13 +28,12 @@ class Helicopter extends PowerUp { }); } - public function pickUp():Bool { - return this.level.pickUpPowerUp(this); + public function pickUp(marble:Marble):Bool { + return this.level.pickUpPowerUp(marble, this); } - public function use(timeState:TimeState) { - var marble = this.level.marble; - marble.enableHelicopter(timeState.currentAttemptTime); - this.level.deselectPowerUp(); + public function use(marble:Marble, timeState:TimeState) { + marble.enableHelicopter(timeState); + this.level.deselectPowerUp(marble); } } diff --git a/src/shapes/LandMine.hx b/src/shapes/LandMine.hx index b6b20c18..057f0266 100644 --- a/src/shapes/LandMine.hx +++ b/src/shapes/LandMine.hx @@ -1,5 +1,8 @@ package shapes; +import net.BitStream.OutputBitStream; +import net.NetPacket.ExplodableUpdatePacket; +import net.Net; import src.AudioManager; import src.TimeState; import collision.CollisionHull; @@ -90,13 +93,7 @@ final landMineSparksParticle:ParticleEmitterOptions = { } }; -class LandMine extends DtsObject { - var disappearTime = -1e8; - - var landMineParticleData:ParticleData; - var landMineSmokeParticleData:ParticleData; - var landMineSparkParticleData:ParticleData; - +class LandMine extends Explodable { var light:h3d.scene.fwd.PointLight; public function new() { @@ -105,58 +102,21 @@ class LandMine extends DtsObject { this.identifier = "LandMine"; this.isCollideable = true; - landMineParticleData = new ParticleData(); - landMineParticleData.identifier = "landMineParticle"; - landMineParticleData.texture = ResourceLoader.getResource("data/particles/smoke.png", ResourceLoader.getTexture, this.textureResources); + particleData = new ParticleData(); + particleData.identifier = "landMineParticle"; + particleData.texture = ResourceLoader.getResource("data/particles/smoke.png", ResourceLoader.getTexture, this.textureResources); - landMineSmokeParticleData = new ParticleData(); - landMineSmokeParticleData.identifier = "landMineSmokeParticle"; - landMineSmokeParticleData.texture = ResourceLoader.getResource("data/particles/smoke.png", ResourceLoader.getTexture, this.textureResources); + smokeParticleData = new ParticleData(); + smokeParticleData.identifier = "landMineSmokeParticle"; + smokeParticleData.texture = ResourceLoader.getResource("data/particles/smoke.png", ResourceLoader.getTexture, this.textureResources); - landMineSparkParticleData = new ParticleData(); - landMineSparkParticleData.identifier = "landMineSparkParticle"; - landMineSparkParticleData.texture = ResourceLoader.getResource("data/particles/spark.png", ResourceLoader.getTexture, this.textureResources); - } + sparkParticleData = new ParticleData(); + sparkParticleData.identifier = "landMineSparkParticle"; + sparkParticleData.texture = ResourceLoader.getResource("data/particles/spark.png", ResourceLoader.getTexture, this.textureResources); - public override function init(level:MarbleWorld, onFinish:Void->Void) { - super.init(level, () -> { - ResourceLoader.load("sound/explode1.wav").entry.load(onFinish); - }); - } - - override function onMarbleContact(timeState:TimeState, ?contact:CollisionInfo) { - if (this.isCollideable && !this.level.rewinding) { - // marble.velocity = marble.velocity.add(vec); - this.disappearTime = timeState.timeSinceLoad; - this.setCollisionEnabled(false); - - if (!this.level.rewinding) - AudioManager.playSound(ResourceLoader.getResource("data/sound/explode1.wav", ResourceLoader.getAudio, this.soundResources)); - this.level.particleManager.createEmitter(landMineParticle, landMineParticleData, this.getAbsPos().getPosition()); - this.level.particleManager.createEmitter(landMineSmokeParticle, landMineSmokeParticleData, this.getAbsPos().getPosition()); - this.level.particleManager.createEmitter(landMineSparksParticle, landMineSparkParticleData, this.getAbsPos().getPosition()); - - var marble = this.level.marble; - var minePos = this.getAbsPos().getPosition(); - var off = marble.getAbsPos().getPosition().sub(minePos); - - var strength = computeExplosionStrength(off.length()); - - var impulse = off.normalized().multiply(strength); - marble.applyImpulse(impulse); - - // light = new h3d.scene.fwd.PointLight(MarbleGame.instance.scene); - // light.setPosition(minePos.x, minePos.y, minePos.z); - // light.enableSpecular = false; - - // for (collider in this.colliders) { - // var hull:CollisionHull = cast collider; - // hull.force = strength; - // } - } - // Normally, we would add a light here, but that's too expensive for THREE, apparently. - - // this.level.replay.recordMarbleContact(this); + this.smokeParticle = landMineSmokeParticle; + this.sparksParticle = landMineSparksParticle; + this.particle = landMineParticle; } function computeExplosionStrength(r:Float) { @@ -173,28 +133,13 @@ class LandMine extends DtsObject { return v; } - override function update(timeState:TimeState) { - super.update(timeState); - if (timeState.timeSinceLoad >= this.disappearTime + 5 || timeState.timeSinceLoad < this.disappearTime) { - this.setHide(false); - } else { - this.setHide(true); - } + public function applyImpulse(marble:src.Marble) { + var minePos = this.getAbsPos().getPosition(); + var off = marble.getAbsPos().getPosition().sub(minePos); - // if (light != null) { - // var t = Util.clamp((timeState.timeSinceLoad - this.disappearTime) / 1.2, 0, 1); + var strength = computeExplosionStrength(off.length()); - // light.color = Util.lerpThreeVectors(new Vector(0.5, 0.5, 0), new Vector(0, 0, 0), t); - // var radius = Util.lerp(6, 3, t); - // light.params = new Vector(0, 1 / radius, 0); - - // if (t >= 1) { - // light.remove(); - // light = null; - // } - // } - - var opacity = Util.clamp((timeState.timeSinceLoad - (this.disappearTime + 5)), 0, 1); - this.setOpacity(opacity); + var impulse = off.normalized().multiply(strength); + marble.applyImpulse(impulse); } } diff --git a/src/shapes/MegaMarble.hx b/src/shapes/MegaMarble.hx index 2e1132a2..cc3332d9 100644 --- a/src/shapes/MegaMarble.hx +++ b/src/shapes/MegaMarble.hx @@ -34,13 +34,14 @@ class MegaMarble extends PowerUp { }); } - public function pickUp():Bool { - return this.level.pickUpPowerUp(this); + public function pickUp(marble:src.Marble):Bool { + return this.level.pickUpPowerUp(marble, this); } - public function use(timeState:TimeState) { - this.level.marble.enableMegaMarble(timeState.currentAttemptTime); - this.level.deselectPowerUp(); - AudioManager.playSound(ResourceLoader.getResource('data/sound/dosuperjump.wav', ResourceLoader.getAudio, this.soundResources)); + public function use(marble:src.Marble, timeState:TimeState) { + marble.enableMegaMarble(timeState); + this.level.deselectPowerUp(marble); + if (this.level.marble == marble && @:privateAccess !marble.isNetUpdate) + AudioManager.playSound(ResourceLoader.getResource('data/sound/dosuperjump.wav', ResourceLoader.getAudio, this.soundResources)); } } diff --git a/src/shapes/Nuke.hx b/src/shapes/Nuke.hx index a1607092..f4cdf7ca 100644 --- a/src/shapes/Nuke.hx +++ b/src/shapes/Nuke.hx @@ -1,5 +1,7 @@ package shapes; +import net.BitStream.OutputBitStream; +import net.NetPacket.ExplodableUpdatePacket; import src.AudioManager; import src.TimeState; import collision.CollisionHull; @@ -11,6 +13,7 @@ import src.ParticleSystem.ParticleData; import h3d.Vector; import src.ResourceLoader; import src.MarbleWorld; +import net.Net; final nukeParticle:ParticleEmitterOptions = { ejectionPeriod: 0.2, @@ -89,70 +92,31 @@ final nukeSparksParticle:ParticleEmitterOptions = { } }; -class Nuke extends DtsObject { - var disappearTime = -1e8; - - var nukeParticleData:ParticleData; - var nukeSmokeParticleData:ParticleData; - var nukeSparkParticleData:ParticleData; - +class Nuke extends Explodable { public function new() { super(); dtsPath = "data/shapes/hazards/nuke/nuke.dts"; this.identifier = "Nuke"; this.isCollideable = true; - nukeParticleData = new ParticleData(); - nukeParticleData.identifier = "nukeParticle"; - nukeParticleData.texture = ResourceLoader.getResource("data/particles/smoke.png", ResourceLoader.getTexture, this.textureResources); + particleData = new ParticleData(); + particleData.identifier = "nukeParticle"; + particleData.texture = ResourceLoader.getResource("data/particles/smoke.png", ResourceLoader.getTexture, this.textureResources); - nukeSmokeParticleData = new ParticleData(); - nukeSmokeParticleData.identifier = "nukeSmokeParticle"; - nukeSmokeParticleData.texture = ResourceLoader.getResource("data/particles/smoke.png", ResourceLoader.getTexture, this.textureResources); + smokeParticleData = new ParticleData(); + smokeParticleData.identifier = "nukeSmokeParticle"; + smokeParticleData.texture = ResourceLoader.getResource("data/particles/smoke.png", ResourceLoader.getTexture, this.textureResources); - nukeSparkParticleData = new ParticleData(); - nukeSparkParticleData.identifier = "nukeSparkParticle"; - nukeSparkParticleData.texture = ResourceLoader.getResource("data/particles/spark.png", ResourceLoader.getTexture, this.textureResources); - } + sparkParticleData = new ParticleData(); + sparkParticleData.identifier = "nukeSparkParticle"; + sparkParticleData.texture = ResourceLoader.getResource("data/particles/spark.png", ResourceLoader.getTexture, this.textureResources); - public override function init(level:MarbleWorld, onFinish:Void->Void) { - super.init(level, () -> { - ResourceLoader.load("sound/nukeexplode.wav").entry.load(onFinish); - }); - } + particle = nukeParticle; + smokeParticle = nukeSmokeParticle; + sparksParticle = nukeSparksParticle; - override function onMarbleContact(timeState:TimeState, ?contact:CollisionInfo) { - if (this.isCollideable && !this.level.rewinding) { - // marble.velocity = marble.velocity.add(vec); - this.disappearTime = timeState.timeSinceLoad; - this.setCollisionEnabled(false); - - // if (!this.level.rewinding) - AudioManager.playSound(ResourceLoader.getResource("data/sound/nukeexplode.wav", ResourceLoader.getAudio, this.soundResources)); - this.level.particleManager.createEmitter(nukeParticle, nukeParticleData, this.getAbsPos().getPosition()); - this.level.particleManager.createEmitter(nukeSmokeParticle, nukeSmokeParticleData, this.getAbsPos().getPosition()); - this.level.particleManager.createEmitter(nukeSparksParticle, nukeSparkParticleData, this.getAbsPos().getPosition()); - - var marble = this.level.marble; - var minePos = this.getAbsPos().getPosition(); - var dtsCenter = this.dts.bounds.center(); - // dtsCenter.x = -dtsCenter.x; - // minePos.x += dtsCenter.x; - // minePos.y += dtsCenter.y; - // minePos.z += dtsCenter.z; - var off = marble.getAbsPos().getPosition().sub(minePos); - - var force = computeExplosionForce(off); - marble.applyImpulse(force, true); - - // for (collider in this.colliders) { - // var hull:CollisionHull = cast collider; - // hull.force = strength; - // } - } - // Normally, we would add a light here, but that's too expensive for THREE, apparently. - - // this.level.replay.recordMarbleContact(this); + renewTime = 15000; + explodeSoundFile = "data/sound/nukeexplode.wav"; } function computeExplosionForce(distVec:Vector) { @@ -168,15 +132,12 @@ class Nuke extends DtsObject { return distVec; } - override function update(timeState:TimeState) { - super.update(timeState); - if (timeState.timeSinceLoad >= this.disappearTime + 15 || timeState.timeSinceLoad < this.disappearTime) { - this.setHide(false); - } else { - this.setHide(true); - } + public function applyImpulse(marble:src.Marble) { + var minePos = this.getAbsPos().getPosition(); + var dtsCenter = this.dts.bounds.center(); + var off = marble.getAbsPos().getPosition().sub(minePos); - var opacity = Util.clamp((timeState.timeSinceLoad - (this.disappearTime + 15)), 0, 1); - this.setOpacity(opacity); + var force = computeExplosionForce(off); + marble.applyImpulse(force, true); } } diff --git a/src/shapes/PowerUp.hx b/src/shapes/PowerUp.hx index f3ddf45b..952ad527 100644 --- a/src/shapes/PowerUp.hx +++ b/src/shapes/PowerUp.hx @@ -7,6 +7,10 @@ import src.TimeState; import src.Util; import h3d.Vector; import src.DtsObject; +import src.Marble; +import net.Net; +import net.BitStream.OutputBitStream; +import net.NetPacket.PowerupPickupPacket; abstract class PowerUp extends DtsObject { public var lastPickUpTime:Float = -1; @@ -15,6 +19,11 @@ abstract class PowerUp extends DtsObject { public var pickUpName:String; public var element:MissionElementItem; public var pickupSound:Sound; + public var netIndex:Int; + + // Net + var pickupClient:Int = -1; + var pickupTicks:Int = -1; var customPickupMessage:String = null; @@ -26,27 +35,46 @@ abstract class PowerUp extends DtsObject { this.element = element; } - public override function onMarbleInside(timeState:TimeState) { + public override function onMarbleInside(marble:Marble, timeState:TimeState) { var pickupable = this.lastPickUpTime == -1 || (timeState.currentAttemptTime - this.lastPickUpTime) >= this.cooldownDuration; if (!pickupable) return; - if (this.pickUp()) { + if (this.pickUp(marble)) { // this.level.replay.recordMarbleInside(this); + if (level.isMultiplayer && Net.isHost) { + var b = new OutputBitStream(); + b.writeByte(NetPacketType.PowerupPickup); + var pickupPacket = new PowerupPickupPacket(); + pickupPacket.clientId = @:privateAccess marble.connection != null ? @:privateAccess marble.connection.id : 0; + pickupPacket.serverTicks = timeState.ticks; + pickupPacket.powerupItemId = this.netIndex; + pickupPacket.serialize(b); + Net.sendPacketToIngame(b); + pickupClient = pickupPacket.clientId; + pickupTicks = pickupPacket.serverTicks; + } + + if (level.isMultiplayer && Net.isClient) { + pickupClient = @:privateAccess marble.connection != null ? @:privateAccess marble.connection.id : Net.clientId; + } + this.lastPickUpTime = timeState.currentAttemptTime; if (this.autoUse) - this.use(timeState); + this.use(marble, timeState); - if (customPickupMessage != null) - this.level.displayAlert(customPickupMessage); - else - this.level.displayAlert('You picked up a ${this.pickUpName}!'); - if (this.element.showhelponpickup == "1" && !this.autoUse) - this.level.displayHelp('Press to use the ${this.pickUpName}!'); + if (level.marble == marble && @:privateAccess !marble.isNetUpdate) { + if (customPickupMessage != null) + this.level.displayAlert(customPickupMessage); + else + this.level.displayAlert('You picked up a ${this.pickUpName}!'); + if (this.element.showhelponpickup == "1" && !this.autoUse) + this.level.displayHelp('Press to use the ${this.pickUpName}!'); - if (pickupSound != null && !this.level.rewinding) { - AudioManager.playSound(pickupSound); + if (pickupSound != null && !this.level.rewinding) { + AudioManager.playSound(pickupSound); + } } } } @@ -62,11 +90,13 @@ abstract class PowerUp extends DtsObject { this.setOpacity(opacity); } - public abstract function pickUp():Bool; + public abstract function pickUp(marble:Marble):Bool; - public abstract function use(timeState:TimeState):Void; + public abstract function use(marble:Marble, timeState:TimeState):Void; public override function reset() { this.lastPickUpTime = Math.NEGATIVE_INFINITY; + this.pickupClient = -1; + this.pickupTicks = -1; } } diff --git a/src/shapes/PushButton.hx b/src/shapes/PushButton.hx index 5046ebe7..0ac7dca4 100644 --- a/src/shapes/PushButton.hx +++ b/src/shapes/PushButton.hx @@ -28,7 +28,7 @@ class PushButton extends DtsObject { var currentCompletion = this.getCurrentCompletion(timeState); // Override the keyframe - this.sequenceKeyframeOverride.set(this.dts.sequences[0], currentCompletion * (this.dts.sequences[0].numKeyFrames - 1)); + this.sequenceKeyframeOverride[0] = (currentCompletion * (this.dts.sequences[0].numKeyFrames - 1)); super.update(timeState); } @@ -40,8 +40,8 @@ class PushButton extends DtsObject { return completion; } - override function onMarbleContact(time:TimeState, ?contact:CollisionInfo) { - super.onMarbleContact(time, contact); + override function onMarbleContact(marble:src.Marble, time:TimeState, ?contact:CollisionInfo) { + super.onMarbleContact(marble, time, contact); if (time.timeSinceLoad - this.lastContactTime <= 0) return; // The trapdoor is queued to open, so don't do anything. var currentCompletion = this.getCurrentCompletion(time); diff --git a/src/shapes/RandomPowerup.hx b/src/shapes/RandomPowerup.hx index 6f88ef87..e805472d 100644 --- a/src/shapes/RandomPowerup.hx +++ b/src/shapes/RandomPowerup.hx @@ -59,7 +59,7 @@ class RandomPowerup extends PowerUp { }); } - public function pickUp():Bool { + public function pickUp(marble:src.Marble):Bool { while (true) { var r = Std.random(6); if (this.level.isWatching) @@ -88,7 +88,7 @@ class RandomPowerup extends PowerUp { } pow.level = this.level; - if (pow.pickUp()) { + if (pow.pickUp(marble)) { this.cooldownDuration = pow.cooldownDuration; this.pickUpName = pow.pickUpName; if (this.level.isRecording) @@ -99,7 +99,7 @@ class RandomPowerup extends PowerUp { return true; } - public function use(time:TimeState) { + public function use(marble:src.Marble, time:TimeState) { if (this.wasTimeTravel) this.level.addBonusTime(5); } diff --git a/src/shapes/ShockAbsorber.hx b/src/shapes/ShockAbsorber.hx index 71a104c0..61253e63 100644 --- a/src/shapes/ShockAbsorber.hx +++ b/src/shapes/ShockAbsorber.hx @@ -25,13 +25,12 @@ class ShockAbsorber extends PowerUp { }); } - public function pickUp():Bool { - return this.level.pickUpPowerUp(this); + public function pickUp(marble:src.Marble):Bool { + return this.level.pickUpPowerUp(marble, this); } - public function use(timeState:TimeState) { - var marble = this.level.marble; - marble.enableShockAbsorber(timeState.currentAttemptTime); - this.level.deselectPowerUp(); + public function use(marble:src.Marble, timeState:TimeState) { + marble.enableShockAbsorber(timeState); + this.level.deselectPowerUp(marble); } } diff --git a/src/shapes/Sky.hx b/src/shapes/Sky.hx index 47f78ebb..4439d1f7 100644 --- a/src/shapes/Sky.hx +++ b/src/shapes/Sky.hx @@ -9,8 +9,15 @@ class Sky extends DtsObject { this.dtsPath = 'data/shapes/skies/${type}/${type}.dts'; this.isCollideable = false; - this.useInstancing = true; + this.useInstancing = false; this.identifier = type + "Sky"; } + + override function computeMaterials() { + super.computeMaterials(); + for (mat in materials) { + mat.mainPass.setPassName("skyshape"); + } + } } diff --git a/src/shapes/SuperBounce.hx b/src/shapes/SuperBounce.hx index a8a1ed04..c814e2e3 100644 --- a/src/shapes/SuperBounce.hx +++ b/src/shapes/SuperBounce.hx @@ -16,8 +16,8 @@ class SuperBounce extends PowerUp { this.pickUpName = "Marble Recoil PowerUp"; } - public function pickUp():Bool { - return this.level.pickUpPowerUp(this); + public function pickUp(marble:src.Marble):Bool { + return this.level.pickUpPowerUp(marble, this); } public override function init(level:MarbleWorld, onFinish:Void->Void) { @@ -29,13 +29,12 @@ class SuperBounce extends PowerUp { }); } - public function use(timeState:TimeState) { - var marble = this.level.marble; - marble.enableSuperBounce(timeState.currentAttemptTime); + public function use(marble:src.Marble, timeState:TimeState) { + marble.enableSuperBounce(timeState); // marble.body.addLinearVelocity(this.level.currentUp.scale(20)); // Simply add to vertical velocity // if (!this.level.rewinding) // AudioManager.play(this.sounds[1]); // this.level.particles.createEmitter(superJumpParticleOptions, null, () => Util.vecOimoToThree(marble.body.getPosition())); - this.level.deselectPowerUp(); + this.level.deselectPowerUp(marble); } } diff --git a/src/shapes/SuperJump.hx b/src/shapes/SuperJump.hx index a423f180..1a89fc19 100644 --- a/src/shapes/SuperJump.hx +++ b/src/shapes/SuperJump.hx @@ -57,18 +57,19 @@ class SuperJump extends PowerUp { }); } - public function pickUp():Bool { - return this.level.pickUpPowerUp(this); + public function pickUp(marble:src.Marble):Bool { + return this.level.pickUpPowerUp(marble, this); } - public function use(timeState:TimeState) { - var marble = this.level.marble; - marble.velocity = marble.velocity.add(this.level.currentUp.multiply(20)); - this.level.particleManager.createEmitter(superJumpParticleOptions, this.sjEmitterParticleData, null, () -> marble.getAbsPos().getPosition()); + public function use(marble:src.Marble, timeState:TimeState) { + marble.velocity.load(marble.velocity.add(marble.currentUp.multiply(20))); + if (@:privateAccess !marble.isNetUpdate) + this.level.particleManager.createEmitter(superJumpParticleOptions, this.sjEmitterParticleData, null, () -> marble.getAbsPos().getPosition()); // marble.body.addLinearVelocity(this.level.currentUp.scale(20)); // Simply add to vertical velocity // if (!this.level.rewinding) - AudioManager.playSound(ResourceLoader.getResource("data/sound/dosuperjump.wav", ResourceLoader.getAudio, this.soundResources)); + if (level.marble == marble && @:privateAccess !marble.isNetUpdate) + AudioManager.playSound(ResourceLoader.getResource("data/sound/dosuperjump.wav", ResourceLoader.getAudio, this.soundResources)); // this.level.particles.createEmitter(superJumpParticleOptions, null, () => Util.vecOimoToThree(marble.body.getPosition())); - this.level.deselectPowerUp(); + this.level.deselectPowerUp(marble); } } diff --git a/src/shapes/SuperSpeed.hx b/src/shapes/SuperSpeed.hx index fb323891..76de19ab 100644 --- a/src/shapes/SuperSpeed.hx +++ b/src/shapes/SuperSpeed.hx @@ -63,30 +63,32 @@ class SuperSpeed extends PowerUp { }); } - public function pickUp():Bool { - return this.level.pickUpPowerUp(this); + public function pickUp(marble:src.Marble):Bool { + return this.level.pickUpPowerUp(marble, this); } - public function use(timeState:TimeState) { - var marble = this.level.marble; + public function use(marble:src.Marble, timeState:TimeState) { var movementVector = marble.getMarbleAxis()[0]; - // Okay, so super speed directionality is a bit strange. In general, the direction is based on the normal vector of the last surface you had contact with. + var boostVec = movementVector.clone(); - // var quat = level.newOrientationQuat; - // movementVector.applyQuaternion(quat); + var contactDot = movementVector.dot(marble.lastContactNormal); + boostVec.load(boostVec.sub(marble.lastContactNormal.multiply(contactDot))); + if (boostVec.lengthSq() > 0.01) { + boostVec.normalize(); + } else { + boostVec.load(movementVector); + } - var quat2 = new Quat(); - // Determine the necessary rotation to rotate the up vector to the contact normal. - quat2.initMoveTo(this.level.currentUp, marble.lastContactNormal); - movementVector.transform(quat2.toMatrix()); - marble.velocity = marble.velocity.add(movementVector.multiply(-25)); + marble.velocity.load(marble.velocity.add(boostVec.multiply(-25))); // marble.body.addLinearVelocity(Util.vecThreeToOimo(movementVector).scale(24.7)); // Whirligig's determined value // marble.body.addLinearVelocity(this.level.currentUp.scale(20)); // Simply add to vertical velocity // if (!this.level.rewinding) - AudioManager.playSound(ResourceLoader.getResource("data/sound/dosuperspeed.wav", ResourceLoader.getAudio, this.soundResources)); - this.level.particleManager.createEmitter(superSpeedParticleOptions, this.ssEmitterParticleData, null, () -> marble.getAbsPos().getPosition()); - this.level.deselectPowerUp(); + if (level.marble == marble && @:privateAccess !marble.isNetUpdate) + AudioManager.playSound(ResourceLoader.getResource("data/sound/dosuperspeed.wav", ResourceLoader.getAudio, this.soundResources)); + if (@:privateAccess !marble.isNetUpdate) + this.level.particleManager.createEmitter(superSpeedParticleOptions, this.ssEmitterParticleData, null, () -> marble.getAbsPos().getPosition()); + this.level.deselectPowerUp(marble); } } diff --git a/src/shapes/TimeTravel.hx b/src/shapes/TimeTravel.hx index 226539f0..f4bbc7fb 100644 --- a/src/shapes/TimeTravel.hx +++ b/src/shapes/TimeTravel.hx @@ -38,11 +38,11 @@ class TimeTravel extends PowerUp { }); } - public function pickUp():Bool { + public function pickUp(marble:src.Marble):Bool { return true; } - public function use(time:TimeState) { + public function use(marble:src.Marble, time:TimeState) { if (!this.level.rewinding) level.addBonusTime(this.timeBonus); } diff --git a/src/shapes/Trapdoor.hx b/src/shapes/Trapdoor.hx index 6c8b155f..7b8a83e2 100644 --- a/src/shapes/Trapdoor.hx +++ b/src/shapes/Trapdoor.hx @@ -1,5 +1,6 @@ package shapes; +import net.Net; import hxd.snd.effect.Spatialization; import src.TimeState; import collision.CollisionInfo; @@ -17,6 +18,10 @@ class Trapdoor extends DtsObject { var lastDirection:Int; var lastCompletion:Float = 0; + var lastContactTicks:Int = -100000; + + var netId:Int; + public function new() { super(); this.dtsPath = "data/shapes/hazards/trapdoor.dts"; @@ -37,7 +42,7 @@ class Trapdoor extends DtsObject { var currentCompletion = this.getCurrentCompletion(timeState); // Override the keyframe - this.sequenceKeyframeOverride.set(this.dts.sequences[0], currentCompletion * (this.dts.sequences[0].numKeyFrames - 1)); + this.sequenceKeyframeOverride[0] = (currentCompletion * (this.dts.sequences[0].numKeyFrames - 1)); super.update(timeState); var diff = (currentCompletion - this.lastCompletion); @@ -48,8 +53,10 @@ class Trapdoor extends DtsObject { direction = -1; if (direction != 0 && direction != this.lastDirection) { // If the direction has changed, play the sound + var distFromUs = @:privateAccess this.level.marble.lastRenderPos.distanceSq(this.getAbsPos().getPosition()); var ch = AudioManager.playSound(ResourceLoader.getResource("data/sound/trapdooropen.wav", ResourceLoader.getAudio, this.soundResources), this.getAbsPos().getPosition()); + ch.volume *= (1 / Math.max(1, distFromUs)); } this.lastCompletion = currentCompletion; @@ -57,24 +64,70 @@ class Trapdoor extends DtsObject { } function getCurrentCompletion(timeState:TimeState) { - var elapsed = timeState.timeSinceLoad - this.lastContactTime; - var completion = Util.clamp(elapsed / 1.6666676998138428, 0, 1); - if (elapsed > 5) - completion = Util.clamp(1 - (elapsed - 5) / 1.6666676998138428, 0, 1); - return completion; + if (level.isMultiplayer) { + if (Net.isHost) { + var elapsed = (timeState.ticks - this.lastContactTicks) * 0.032 + (timeState.subframe * 0.032); + var completion = Util.clamp(elapsed / 1.6666676998138428, 0, 1); + if (elapsed > 5) + completion = Util.clamp(1 - (elapsed - 5) / 1.6666676998138428, 0, 1); + return completion; + } else { + var elapsed = (@:privateAccess level.marble.serverTicks - this.lastContactTicks) * 0.032 + (timeState.subframe * 0.032); + var completion = Util.clamp(elapsed / 1.6666676998138428, 0, 1); + if (elapsed > 5) + completion = Util.clamp(1 - (elapsed - 5) / 1.6666676998138428, 0, 1); + return completion; + } + } else { + var elapsed = timeState.timeSinceLoad - this.lastContactTime; + var completion = Util.clamp(elapsed / 1.6666676998138428, 0, 1); + if (elapsed > 5) + completion = Util.clamp(1 - (elapsed - 5) / 1.6666676998138428, 0, 1); + return completion; + } } - override function onMarbleContact(time:TimeState, ?contact:CollisionInfo) { - super.onMarbleContact(time, contact); - if (time.timeSinceLoad - this.lastContactTime <= 0) - return; // The trapdoor is queued to open, so don't do anything. + override function onMarbleContact(marble:src.Marble, time:TimeState, ?contact:CollisionInfo) { + super.onMarbleContact(marble, time, contact); + if (level.isMultiplayer) { + if (Net.isHost) { + if (time.ticks - this.lastContactTicks <= 0) + return; // The trapdoor is queued to open, so don't do anything. + } else { + if (@:privateAccess marble.serverTicks - this.lastContactTicks <= 0) + return; // The trapdoor is queued to open, so don't do anything. + } + } else { + if (time.timeSinceLoad - this.lastContactTime <= 0) + return; // The trapdoor is queued to open, so don't do anything. + } var currentCompletion = this.getCurrentCompletion(time); // Set the last contact time accordingly so that the trapdoor starts closing (again) - this.lastContactTime = time.timeSinceLoad - currentCompletion * 1.6666676998138428; - if (currentCompletion == 0) - this.lastContactTime += this.timeout; + if (level.isMultiplayer) { + if (Net.isHost) { + this.lastContactTicks = Std.int(time.ticks - currentCompletion * 1.6666676998138428 / 0.032); + } else { + this.lastContactTicks = Std.int(@:privateAccess marble.serverTicks - currentCompletion * 1.6666676998138428 / 0.032); + } + if (currentCompletion == 0) { + this.lastContactTicks += Std.int(this.timeout / 0.032); + } + } else { + this.lastContactTime = time.timeSinceLoad - currentCompletion * 1.6666676998138428; + if (currentCompletion == 0) + this.lastContactTime += this.timeout; + } + + if (Net.isHost) { + marble.queueTrapdoorUpdate(netId, this.lastContactTicks); + } + + if (Net.isClient) { + if (!level.trapdoorsToTick.contains(netId)) + level.trapdoorsToTick.push(netId); + } // this.level.replay.recordMarbleContact(this); } } diff --git a/src/touch/BlastButton.hx b/src/touch/BlastButton.hx index 689047bd..38be5a6c 100644 --- a/src/touch/BlastButton.hx +++ b/src/touch/BlastButton.hx @@ -1,5 +1,6 @@ package touch; +import src.MarbleGame; import touch.TouchInput.Touch; import h3d.Vector; import hxd.Window; @@ -7,9 +8,16 @@ import src.ResourceLoader; import src.Settings; class BlastButton extends TouchButton { + public var didPressIt:Bool = true; + public function new() { - super(ResourceLoader.getImage("data/ui/touch/explosion.png").resource, + var mode = MarbleGame.instance.world != null ? @:privateAccess MarbleGame.instance.world.marble.camera.spectate : false; + super(ResourceLoader.getImage(mode ? "data/ui/touch/video-camera.png" : "data/ui/touch/explosion.png").resource, new Vector(Settings.touchSettings.blastButtonPos[0], Settings.touchSettings.blastButtonPos[1]), Settings.touchSettings.blastButtonSize); this.setEnabled(false); + this.onClick = () -> { + this.pressed = true; + didPressIt = true; + } } } diff --git a/src/touch/CameraInput.hx b/src/touch/CameraInput.hx index add5e135..3a05a495 100644 --- a/src/touch/CameraInput.hx +++ b/src/touch/CameraInput.hx @@ -50,6 +50,15 @@ class CameraInput { var scene2d = interactive.getScene(); if (e.relX < scene2d.width / 2) { + var restartG = @:privateAccess MarbleGame.instance.touchInput.pauseButton?.collider; + if (restartG != null) { + if (e.relY > restartG.getAbsPos().y + restartG.height) { + if (Settings.touchSettings.dynamicJoystick) { + // Move that joystick over our finger + MarbleGame.instance.touchInput.movementInput.moveToFinger(e); + } + } + } return; } @@ -78,9 +87,9 @@ class CameraInput { if (jumpcam) { scaleFactor /= Settings.touchSettings.buttonJoystickMultiplier; } - if (Math.abs(delta.x) < 0.03) + if (Math.abs(delta.x) < 0.05) delta.x = 0; - if (Math.abs(delta.y) < 0.03) + if (Math.abs(delta.y) < 0.05) delta.y = 0; MarbleGame.instance.world.marble.camera.orbit(applyNonlinearScale(delta.x / scaleFactor), applyNonlinearScale(delta.y / scaleFactor), true); if (delta.x != 0) @@ -104,7 +113,7 @@ class CameraInput { } function applyNonlinearScale(value:Float) { - var clamped = Util.clamp(value, -10, 10); + var clamped = Util.clamp(value, -Settings.touchSettings.cameraSwipeExtent, Settings.touchSettings.cameraSwipeExtent); return Math.abs(clamped) < 3 ? Math.pow(Math.abs(clamped / 2), 2.7) * (clamped >= 0 ? 1 : -1) : clamped; } diff --git a/src/touch/MovementInput.hx b/src/touch/MovementInput.hx index 2e07fb34..b99d32f2 100644 --- a/src/touch/MovementInput.hx +++ b/src/touch/MovementInput.hx @@ -7,6 +7,7 @@ import h2d.col.Bounds; import gui.GuiControl; import h3d.Vector; import gui.GuiGraphics; +import src.MarbleGame; class MovementInput { var area:GuiGraphics; @@ -103,6 +104,26 @@ class MovementInput { this.joystick.graphics.alpha = 1; } + public function moveToFinger(e:hxd.Event) { + var restartG = @:privateAccess MarbleGame.instance.touchInput.pauseButton?.collider; + if (restartG != null) { + var size = Settings.touchSettings.joystickSize; + var scene2d = collider.getScene(); + this.area.graphics.setPosition(Util.clamp(e.relX - size * 3, 0, scene2d.width / 2 - size * 6), + Util.clamp(e.relY - size * 3, restartG.getAbsPos().y + restartG.height, scene2d.height - size * 6)); + + var xPos = Util.clamp(e.relX - this.area.graphics.x, size, size * 5); + var yPos = Util.clamp(e.relY - this.area.graphics.y, size, size * 5); + + this.value.x = (xPos - (size * 3)) / (size * 2); + this.value.y = (yPos - (size * 3)) / (size * 2); + + this.joystick.graphics.setPosition(this.area.graphics.x + xPos, this.area.graphics.y + yPos); + + this.collider.onPush(e); + } + } + public function add(parentGui:GuiControl) { parentGui.addChild(this.area); added = true; diff --git a/src/touch/PauseButton.hx b/src/touch/PauseButton.hx index 3130fabd..c9a9f45c 100644 --- a/src/touch/PauseButton.hx +++ b/src/touch/PauseButton.hx @@ -12,7 +12,7 @@ class PauseButton extends TouchButton { this.guiElement.vertSizing = Bottom; this.onClick = () -> { - if (MarbleGame.instance.world != null) { + if (MarbleGame.instance.world != null && @:privateAccess !MarbleGame.instance.paused) { @:privateAccess MarbleGame.instance.paused = true; MarbleGame.instance.handlePauseGame(); } diff --git a/src/touch/RestartButton.hx b/src/touch/RestartButton.hx index 589f24cc..afd3451f 100644 --- a/src/touch/RestartButton.hx +++ b/src/touch/RestartButton.hx @@ -3,6 +3,8 @@ package touch; import src.MarbleGame; import h3d.Vector; import src.ResourceLoader; +import src.Settings; +import hxd.Key; class RestartButton extends TouchButton { public function new() { @@ -11,8 +13,13 @@ class RestartButton extends TouchButton { this.guiElement.horizSizing = Right; this.guiElement.vertSizing = Bottom; this.onClick = () -> { - if (MarbleGame.instance.world.finishTime == null) - MarbleGame.instance.world.performRestart(); + if (MarbleGame.instance.world.finishTime == null) { + if (MarbleGame.instance.world.isMultiplayer) { + @:privateAccess Key.keyPressed[Settings.controlsSettings.respawn] = Key.getFrame() - 1; // jank + } else { + MarbleGame.instance.world.performRestart(); + } + } } } } diff --git a/src/touch/SpectatorChangeTargetButton.hx b/src/touch/SpectatorChangeTargetButton.hx new file mode 100644 index 00000000..47b153d1 --- /dev/null +++ b/src/touch/SpectatorChangeTargetButton.hx @@ -0,0 +1,25 @@ +package touch; + +import src.MarbleGame; +import touch.TouchInput.Touch; +import h3d.Vector; +import hxd.Window; +import src.ResourceLoader; +import src.Settings; + +class SpectatorChangeTargetButton extends TouchButton { + public var didPressIt:Bool = true; + + public function new(rightFacing:Bool) { + super(ResourceLoader.getImage(rightFacing ? "data/ui/touch/right.png" : "data/ui/touch/left.png").resource, new Vector(rightFacing ? 560 : 70, 120), + 60); + if (!rightFacing) { + this.guiElement.horizSizing = Right; + } + this.setEnabled(false); + this.onClick = () -> { + this.pressed = true; + didPressIt = true; + } + } +} diff --git a/src/touch/TouchInput.hx b/src/touch/TouchInput.hx index 3fc0e430..9405a451 100644 --- a/src/touch/TouchInput.hx +++ b/src/touch/TouchInput.hx @@ -4,6 +4,8 @@ import gui.GuiControl; import src.MarbleWorld; import h3d.Vector; import src.Settings; +import src.MarbleGame; +import src.ResourceLoader; enum TouchState { Pressed; @@ -44,6 +46,8 @@ class TouchInput { public var pauseButton:PauseButton; public var rewindButton:RewindButton; public var restartButton:RestartButton; + public var leftButton:SpectatorChangeTargetButton; + public var rightButton:SpectatorChangeTargetButton; public var currentTouchState:TouchEventState; @@ -118,23 +122,42 @@ class TouchInput { this.movementInput = new MovementInput(); this.jumpButton = new JumpButton(); this.powerupButton = new PowerupButton(); - if (Settings.optionsSettings.rewindEnabled) + if (Settings.optionsSettings.rewindEnabled && !MarbleGame.instance.world.isMultiplayer) this.rewindButton = new RewindButton(); if (ultra) this.blastbutton = new BlastButton(); this.pauseButton = new PauseButton(); - this.restartButton = new RestartButton(); + if (!MarbleGame.instance.world.isMultiplayer) + this.restartButton = new RestartButton(); pauseButton.add(parentGui); - restartButton.add(parentGui); + if (!MarbleGame.instance.world.isMultiplayer) + restartButton.add(parentGui); jumpButton.add(parentGui); powerupButton.add(parentGui); - if (Settings.optionsSettings.rewindEnabled) + if (Settings.optionsSettings.rewindEnabled && !MarbleGame.instance.world.isMultiplayer) rewindButton.add(parentGui); if (ultra) blastbutton.add(parentGui); movementInput.add(parentGui); cameraInput.add(parentGui); cameraInput.enabled = true; + + if (Settings.touchSettings.hideControls) { + this.jumpButton.setVisible(false); + this.powerupButton.setVisible(false); + if (this.blastbutton != null) + this.blastbutton.setVisible(false); + this.movementInput.setVisible(false); + this.pauseButton.setVisible(false); + if (this.restartButton != null) + this.restartButton.setVisible(false); + if (this.rewindButton != null) + this.rewindButton.setVisible(false); + if (this.leftButton != null) + this.leftButton.setVisible(false); + if (this.rightButton != null) + this.rightButton.setVisible(false); + } } public function setControlsEnabled(enabled:Bool) { @@ -144,10 +167,29 @@ class TouchInput { this.blastbutton.setVisible(enabled); this.movementInput.setVisible(enabled); this.pauseButton.setVisible(enabled); - this.restartButton.setVisible(enabled); + if (this.restartButton != null) + this.restartButton.setVisible(enabled); if (this.rewindButton != null) this.rewindButton.setVisible(enabled); this.cameraInput.enabled = enabled; + if (this.leftButton != null) + this.leftButton.setVisible(enabled); + if (this.rightButton != null) + this.rightButton.setVisible(enabled); + + if (Settings.touchSettings.hideControls) { + this.jumpButton.setVisible(false); + this.powerupButton.setVisible(false); + if (this.blastbutton != null) + this.blastbutton.setVisible(false); + this.movementInput.setVisible(false); + if (this.rewindButton != null) + this.rewindButton.setVisible(false); + if (this.leftButton != null) + this.leftButton.setVisible(false); + if (this.rightButton != null) + this.rightButton.setVisible(false); + } } public function hideControls(parentGui:GuiControl) { @@ -157,10 +199,19 @@ class TouchInput { blastbutton.remove(parentGui); movementInput.remove(parentGui); pauseButton.remove(parentGui); - restartButton.remove(parentGui); + if (this.restartButton != null) + restartButton.remove(parentGui); cameraInput.remove(parentGui); if (this.rewindButton != null) rewindButton.remove(parentGui); + if (this.leftButton != null) { + leftButton.remove(parentGui); + leftButton.dispose(); + } + if (this.rightButton != null) { + rightButton.remove(parentGui); + rightButton.dispose(); + } jumpButton.dispose(); powerupButton.dispose(); movementInput.dispose(); @@ -170,4 +221,41 @@ class TouchInput { if (this.rewindButton != null) rewindButton.dispose(); } + + public function setSpectatorControls(enabled:Bool) { + var tile = ResourceLoader.getImage(enabled ? "data/ui/touch/video-camera.png" : "data/ui/touch/explosion.png").resource; + @:privateAccess this.blastbutton.guiElement.graphics.content.state.tail.texture = tile.toTexture(); + if (enabled) { + jumpButton.setVisible(false); + if (this.leftButton == null) { // both are added at same time so it doesnt matter + var par = jumpButton.guiElement.parent; + this.leftButton = new SpectatorChangeTargetButton(false); + this.rightButton = new SpectatorChangeTargetButton(true); + this.leftButton.add(par); + this.rightButton.add(par); + this.leftButton.guiElement.render(MarbleGame.canvas.scene2d, @:privateAccess par._flow); + this.rightButton.guiElement.render(MarbleGame.canvas.scene2d, @:privateAccess par._flow); + } + } else { + jumpButton.setVisible(true); + if (this.leftButton != null) { + this.leftButton.remove(this.leftButton.guiElement.parent); + this.leftButton.dispose(); + this.leftButton = null; + } + if (this.rightButton != null) { + this.rightButton.remove(this.rightButton.guiElement.parent); + this.rightButton.dispose(); + this.rightButton = null; + } + } + } + + public function setSpectatorControlsVisibility(enabled:Bool) { + if (this.leftButton != null) { + this.leftButton.setVisible(enabled); + this.rightButton.setVisible(enabled); + this.movementInput.setVisible(!enabled); + } + } } diff --git a/src/triggers/CheckpointTrigger.hx b/src/triggers/CheckpointTrigger.hx index b670d018..012d6aaf 100644 --- a/src/triggers/CheckpointTrigger.hx +++ b/src/triggers/CheckpointTrigger.hx @@ -23,8 +23,8 @@ class CheckpointTrigger extends Trigger { }); } - public override function onMarbleEnter(time:src.TimeState) { - super.onMarbleEnter(time); + public override function onMarbleEnter(marble:src.Marble, time:src.TimeState) { + super.onMarbleEnter(marble, time); var shape = this.level.namedObjects.get(this.element.respawnpoint); if (shape == null) return; diff --git a/src/triggers/HelpTrigger.hx b/src/triggers/HelpTrigger.hx index a5282f86..ec2f6f30 100644 --- a/src/triggers/HelpTrigger.hx +++ b/src/triggers/HelpTrigger.hx @@ -5,9 +5,11 @@ import src.ResourceLoader; import src.AudioManager; class HelpTrigger extends Trigger { - override function onMarbleEnter(timeState:TimeState) { - AudioManager.playSound(ResourceLoader.getResource('data/sound/infotutorial.wav', ResourceLoader.getAudio, this.soundResources)); - this.level.displayHelp(this.element.text); + override function onMarbleEnter(marble:src.Marble, timeState:TimeState) { + if (marble == this.level.marble) { + AudioManager.playSound(ResourceLoader.getResource('data/sound/infotutorial.wav', ResourceLoader.getAudio, this.soundResources)); + this.level.displayHelp(this.element.text); + } // this.level.replay.recordMarbleEnter(this); } diff --git a/src/triggers/InBoundsTrigger.hx b/src/triggers/InBoundsTrigger.hx index a4160f09..5997bdf9 100644 --- a/src/triggers/InBoundsTrigger.hx +++ b/src/triggers/InBoundsTrigger.hx @@ -4,8 +4,8 @@ import src.TimeState; import src.ResourceLoader; class InBoundsTrigger extends Trigger { - override function onMarbleLeave(timeState:TimeState) { - this.level.goOutOfBounds(); + override function onMarbleLeave(marble:src.Marble, timeState:TimeState) { + this.level.goOutOfBounds(marble); // this.level.replay.recordMarbleLeave(this); } diff --git a/src/triggers/MustChangeTrigger.hx b/src/triggers/MustChangeTrigger.hx index a9035dc6..377b883d 100644 --- a/src/triggers/MustChangeTrigger.hx +++ b/src/triggers/MustChangeTrigger.hx @@ -13,7 +13,7 @@ class MustChangeTrigger extends Trigger { this.interior = interior; } - public override function onMarbleEnter(time:TimeState) { + public override function onMarbleEnter(marble:src.Marble, time:TimeState) { var ttime = MisParser.parseNumber(this.element.targettime); if (ttime > 0) ttime /= 1000; diff --git a/src/triggers/OutOfBoundsTrigger.hx b/src/triggers/OutOfBoundsTrigger.hx index 22c976c0..44321146 100644 --- a/src/triggers/OutOfBoundsTrigger.hx +++ b/src/triggers/OutOfBoundsTrigger.hx @@ -4,8 +4,8 @@ import src.TimeState; import src.ResourceLoader; class OutOfBoundsTrigger extends Trigger { - override function onMarbleInside(time:TimeState) { - this.level.goOutOfBounds(); + override function onMarbleInside(marble:src.Marble, time:TimeState) { + this.level.goOutOfBounds(marble); // this.level.replay.recordMarbleInside(this); } diff --git a/src/triggers/TeleportTrigger.hx b/src/triggers/TeleportTrigger.hx index 018fc588..2d56c19f 100644 --- a/src/triggers/TeleportTrigger.hx +++ b/src/triggers/TeleportTrigger.hx @@ -1,5 +1,6 @@ package triggers; +import src.Marble; import h3d.Vector; import src.ResourceLoader; import src.AudioManager; @@ -8,11 +9,17 @@ import src.MarbleWorld; import mis.MissionElement.MissionElementTrigger; import src.Console; +@:publicFields +@:structInit +class TeleportationState { + var entryTime:Null; + var exitTime:Null; +} + class TeleportTrigger extends Trigger { var delay:Float = 2; - var entryTime:Null = null; - var exitTime:Null = null; + var marbleStates:Map = []; public function new(element:MissionElementTrigger, level:MarbleWorld) { super(element, level); @@ -20,35 +27,48 @@ class TeleportTrigger extends Trigger { this.delay = MisParser.parseNumber(element.delay) / 1000; } - override function onMarbleEnter(time:src.TimeState) { - this.exitTime = null; - this.level.marble.setCloaking(true, time); - if (this.entryTime != null) - return; - this.entryTime = time.currentAttemptTime; - this.level.displayAlert("Teleporter has been activated, please wait."); - AudioManager.playSound(ResourceLoader.getResource("data/sound/teleport.wav", ResourceLoader.getAudio, this.soundResources)); + function getState(marble:Marble) { + if (marbleStates.exists(marble)) + return marbleStates.get(marble); + else { + marbleStates.set(marble, {entryTime: null, exitTime: null}); + return marbleStates.get(marble); + } } - override function onMarbleLeave(time:src.TimeState) { - this.exitTime = time.currentAttemptTime; - this.level.marble.setCloaking(false, time); + override function onMarbleEnter(marble:src.Marble, time:src.TimeState) { + var state = getState(marble); + state.exitTime = null; + marble.setCloaking(true, time); + if (state.entryTime != null) + return; + state.entryTime = time.currentAttemptTime; + if (level.marble == marble && @:privateAccess !marble.isNetUpdate) { + this.level.displayAlert("Teleporter has been activated, please wait."); + AudioManager.playSound(ResourceLoader.getResource("data/sound/teleport.wav", ResourceLoader.getAudio, this.soundResources)); + } + } + + override function onMarbleLeave(marble:src.Marble, time:src.TimeState) { + var state = getState(marble); + state.exitTime = time.currentAttemptTime; + marble.setCloaking(false, time); } public override function update(timeState:src.TimeState) { - if (this.entryTime == null) - return; + for (marble => state in marbleStates) { + if (state.entryTime == null) + continue; + if (state.exitTime != null && timeState.currentAttemptTime - state.exitTime > 0.05) { + state.entryTime = null; + state.exitTime = null; + continue; + } - if (timeState.currentAttemptTime - this.entryTime >= this.delay) { - this.executeTeleport(); - return; - } - - // There's a little delay after exiting before the teleporter gets cancelled - if (this.exitTime != null && timeState.currentAttemptTime - this.exitTime > 0.050) { - this.entryTime = null; - this.exitTime = null; - return; + if (timeState.currentAttemptTime - state.entryTime >= this.delay) { + state.entryTime = null; + this.executeTeleport(marble); + } } } @@ -56,9 +76,7 @@ class TeleportTrigger extends Trigger { ResourceLoader.load("sound/teleport.wav").entry.load(onFinish); } - function executeTeleport() { - this.entryTime = null; - + function executeTeleport(marble:Marble) { function chooseNonNull(a:String, b:String) { if (a != null) return a; @@ -88,45 +106,46 @@ class TeleportTrigger extends Trigger { position = destination.vertices[0].add(new Vector(0, 0, 3)).add(pos); // destination.vertices[0].clone().add(new Vector(0, 0, 3)); } position.w = 1; - this.level.marble.prevPos.load(position); - this.level.marble.setPosition(position.x, position.y, position.z); - var ct = this.level.marble.collider.transform.clone(); + marble.prevPos.load(position); + marble.setPosition(position.x, position.y, position.z); + var ct = marble.collider.transform.clone(); ct.setPosition(position); - this.level.marble.collider.setTransform(ct); + marble.collider.setTransform(ct); if (this.level.isRecording) { this.level.replay.recordMarbleStateFlags(false, false, true, false); } if (!MisParser.parseBoolean(chooseNonNull(this.element.keepvelocity, destination.element.keepvelocity))) - this.level.marble.velocity.set(0, 0, 0); + marble.velocity.set(0, 0, 0); if (MisParser.parseBoolean(chooseNonNull(this.element.inversevelocity, destination.element.inversevelocity))) - this.level.marble.velocity.scale(-1); + marble.velocity.scale(-1); if (!MisParser.parseBoolean(chooseNonNull(this.element.keepangular, destination.element.keepangular))) - this.level.marble.omega.set(0, 0, 0); + marble.omega.set(0, 0, 0); Console.log('Teleport:'); Console.log('Marble Position: ${position.x} ${position.y} ${position.z}'); - Console.log('Marble Velocity: ${this.level.marble.velocity.x} ${this.level.marble.velocity.y} ${this.level.marble.velocity.z}'); - Console.log('Marble Angular: ${this.level.marble.omega.x} ${this.level.marble.omega.y} ${this.level.marble.omega.z}'); + Console.log('Marble Velocity: ${marble.velocity.x} ${marble.velocity.y} ${marble.velocity.z}'); + Console.log('Marble Angular: ${marble.omega.x} ${marble.omega.y} ${marble.omega.z}'); // Determine camera orientation - if (!MisParser.parseBoolean(chooseNonNull(this.element.keepcamera, destination.element.keepcamera))) { - var yaw:Float; - if (this.element.camerayaw != null) - yaw = MisParser.parseNumber(this.element.camerayaw) * Math.PI / 180; - else if (destination.element.camerayaw != null) - yaw = MisParser.parseNumber(destination.element.camerayaw) * Math.PI / 180; - else - yaw = 0; + if (marble == level.marble) { + if (!MisParser.parseBoolean(chooseNonNull(this.element.keepcamera, destination.element.keepcamera))) { + var yaw:Float; + if (this.element.camerayaw != null) + yaw = MisParser.parseNumber(this.element.camerayaw) * Math.PI / 180; + else if (destination.element.camerayaw != null) + yaw = MisParser.parseNumber(destination.element.camerayaw) * Math.PI / 180; + else + yaw = 0; - yaw = -yaw; // Need to flip it for some reason + yaw = -yaw; // Need to flip it for some reason - this.level.marble.camera.CameraYaw = yaw + Math.PI / 2; - this.level.marble.camera.CameraPitch = 0.45; - this.level.marble.camera.nextCameraYaw = yaw + Math.PI / 2; - this.level.marble.camera.nextCameraPitch = 0.45; + marble.camera.CameraYaw = yaw + Math.PI / 2; + marble.camera.CameraPitch = 0.45; + marble.camera.nextCameraYaw = yaw + Math.PI / 2; + marble.camera.nextCameraPitch = 0.45; + } + AudioManager.playSound(ResourceLoader.getResource("data/sound/spawn.wav", ResourceLoader.getAudio, this.soundResources)); } - - AudioManager.playSound(ResourceLoader.getResource("data/sound/spawn.wav", ResourceLoader.getAudio, this.soundResources)); } }