<BLOCKSET href="http://blocks.flatland.com/flatsets/basic.bset"/> <BLOCKSET HREF="http://blocks.flatland.com/kirascurro/matrix/archroom.bset"/> <MAP style="double" dimensions="(10,10,4)" /> <SKY texture="@archroom:nitesky2.gif" brightness="100%" /> <GROUND texture="@archroom:nitesky2.gif"/> <AMBIENT_LIGHT brightness="100%"/> </HEAD> <BODY> <!-- Block scale script by Xuriel www.xuriel.com Thanks dude --> <!-- Additional scripts v0.03 by UniHacker --> <create symbol="aa" block="archroom"> <PART NAME="part1,part11,part5,part4a,part8a,part12a,part16a" TEXTURE="@archroom:wall1a_ani.gif" /> <PART NAME="part2,part12,part6,part9,part5a,part9a,part13a,part1a" TEXTURE="@archroom:wall2a_ani.gif" /> <PART NAME="part3,part13,part7,part10,part6a,part10a,part14a,part2a" TEXTURE="@archroom:wall3a_ani.gif" /> <PART NAME="part4,part14,part8,part7a,part11a,part15a,part3a" TEXTURE="@archroom:wall4a_ani.gif" /> <PART NAME="stopwalle,ntopwallw" TEXTURE="@archroom:doortopa_ani.gif" /> <PART NAME="dome,topwalle,topwallw" COLOR="(0,0,0)" /> <PART NAME="floor" TEXTURE="@archroom:archfloor.jpg" TRANSLUCENCY="1%" /> <param movable="yes" /> <define> <scale_x>5.0</scale_x> <scale_y>5.0</scale_y> <scale_z>5.0</scale_z> </define> </create> <create symbol="ee" block="archroom"><!--reflection--> <PART NAME="*" FACES="2"/> <PART NAME="part1,part11,part5,part4a,part8a,part12a,part16a" TEXTURE="@archroom:wall1a_ani.gif" /> <PART NAME="part2,part12,part6,part9,part5a,part9a,part13a,part1a" TEXTURE="@archroom:wall2a_ani.gif" /> <PART NAME="part3,part13,part7,part10,part6a,part10a,part14a,part2a" TEXTURE="@archroom:wall3a_ani.gif" /> <PART NAME="part4,part14,part8,part7a,part11a,part15a,part3a" TEXTURE="@archroom:wall4a_ani.gif" /> <PART NAME="stopwalle,ntopwallw" TEXTURE="@archroom:doortopa_ani.gif" /> <PART NAME="dome,topwalle,topwallw" COLOR="(0,0,0)" /> <PART NAME="floor" FACES="0" SOLID="yes" /> <param movable="yes" /> <define> <scale_x>5.0</scale_x> <scale_y>-5.0</scale_y> <scale_z>5.0</scale_z> </define> </create> <create symbol="ba" block="aroomdoore"> <PART NAME="swall1e" TEXTURE="@archroom:doorrighta_ani.gif" /> <PART NAME="swall2e" TEXTURE="@archroom:doorlefta_ani.gif" /> <PART NAME="innerwall1e,innerwall2e" COLOR="(0,0,0)" /> <PART NAME="knobe" TEXTURE="@archroom:silverfoil.jpg" /> <PART NAME="dooredgese" COLOR="(252,255,252)"/> <PART NAME="sdoore" TEXTURE="@archroom:archdoor.jpg"/> <param movable="yes" /> <define> <scale_x>5.0</scale_x> <scale_y>5.0</scale_y> <scale_z>5.0</scale_z> </define> <ACTION TRIGGER="location" TARGET="(1,1,1)"> <REPLACE SOURCE=".."/> </ACTION> <SCRIPT TRIGGER="click on" PARTNAME="sdoore"> // Remove self self.location:x = 0; self.location:y = 256; self.location:z = 256 * (map.dimensions:rows - 1); // Remove reflected closed door block block = map.get_block("gg"); block.location:x = 0; block.location:y = 256; block.location:z = 256 * (map.dimensions:rows - 1); </SCRIPT> </create> <create symbol="bb" block="aroomdoore"> <PART NAME="swall1e" TEXTURE="@archroom:doorrighta_ani.gif" /> <PART NAME="swall2e" TEXTURE="@archroom:doorlefta_ani.gif" /> <PART NAME="innerwall1e,innerwall2e" COLOR="(0,0,0)" /> <PART NAME="knobe" TEXTURE="@archroom:silverfoil.jpg" /> <PART NAME="dooredgese" COLOR="(252,255,252)"/> <PART NAME="sdoore" TEXTURE="@archroom:archdoor.jpg"/> <param movable="yes" /> <define> <scale_x>5.0</scale_x> <scale_y>5.0</scale_y> <scale_z>5.0</scale_z> </define> <ACTION TRIGGER="location" TARGET="(1,1,1)"> <REPLACE SOURCE=".."/> </ACTION> </create> <create symbol="gg" block="aroomdoore"><!--reflection--> <PART NAME="*" FACES="2"/> <PART NAME="nwalle,doorwallse,innerwall1e,innerwall2e" FACES="0" /> <PART NAME="dooredgese" COLOR="(252,255,252)"/> <PART NAME="sdoore,ndoore" TEXTURE="@archroom:archdoor.jpg"/> <param movable="yes" /> <define> <scale_x>5.0</scale_x> <scale_y>-5.0</scale_y> <scale_z>5.0</scale_z> </define> </create> <create symbol="cc" block="aroomdooreopen"> <PART NAME="swall1e" TEXTURE="@archroom:doorrighta_ani.gif" /> <PART NAME="swall2e" TEXTURE="@archroom:doorlefta_ani.gif" /> <PART NAME="knobe" TEXTURE="@archroom:silverfoil.jpg" /> <PART NAME="innerwall1e,innerwall2e" COLOR="(0,0,0)" /> <PART NAME="dooredgese" COLOR="(252,255,252)"/> <PART NAME="sdoore" TEXTURE="@archroom:archdoor.jpg"/> <param movable="yes" solid="no"/> <define> <scale_x>5.0</scale_x> <scale_y>5.0</scale_y> <scale_z>5.0</scale_z> </define> </create> <create symbol="hh" block="aroomdooreopen"><!--reflection--> <PART NAME="*" FACES="2"/> <PART NAME="swall1e" TEXTURE="@archroom:doorrighta_ani.gif" /> <PART NAME="swall2e" TEXTURE="@archroom:doorlefta_ani.gif" /> <PART NAME="knobe" TEXTURE="@archroom:silverfoil.jpg" /> <PART NAME="innerwall1e,innerwall2e" COLOR="(0,0,0)" /> <PART NAME="dooredgese" COLOR="(252,255,252)"/> <PART NAME="sdoore" TEXTURE="@archroom:archdoor.jpg"/> <param movable="yes" /> <define> <scale_x>5.0</scale_x> <scale_y>-5.0</scale_y> <scale_z>5.0</scale_z> </define> </create> <create symbol="da" block="aroomdoorw"> <PART NAME="nwall1w" TEXTURE="@archroom:doorrighta_ani.gif" /> <PART NAME="nwall2w" TEXTURE="@archroom:doorlefta_ani.gif" /> <PART NAME="knobw" TEXTURE="@archroom:silverfoil.jpg" /> <PART NAME="innerwall1w,innerwall2w" COLOR="(0,0,0)" /> <PART NAME="dooredgesw" COLOR="(252,255,252)"/> <PART NAME="ndoorw" TEXTURE="@archroom:archdoor.jpg"/> <param movable="yes" /> <define> <scale_x>5.0</scale_x> <scale_y>5.0</scale_y> <scale_z>5.0</scale_z> </define> <ACTION TRIGGER="location" TARGET="(1,1,1)"> <REPLACE SOURCE=".."/> </ACTION> <ACTION TRIGGER="click on"> <REPLACE SOURCE="dp" TARGET="(3,4,2)"/> </ACTION> </create> <create symbol="dp" block="sound"> <param movable="yes" /> <ACTION TRIGGER="timer" DELAY="5"> <REPLACE SOURCE=".."/> </ACTION> <POPUP PLACEMENT="center" TRIGGER="proximity" RADIUS="3" BRIGHTNESS="100%" TEXT="The One did not take this door. Why should you?" TEXTALIGN="top" TEXTCOLOR="(0,255,0)" /> </create> <create symbol="dd" block="aroomdoorw"> <PART NAME="nwall1w" TEXTURE="@archroom:doorrighta_ani.gif" /> <PART NAME="nwall2w" TEXTURE="@archroom:doorlefta_ani.gif" /> <PART NAME="knobw" TEXTURE="@archroom:silverfoil.jpg" /> <PART NAME="innerwall1w,innerwall2w" COLOR="(0,0,0)" /> <PART NAME="dooredgesw" COLOR="(252,255,252)"/> <PART NAME="ndoorw" TEXTURE="@archroom:archdoor.jpg"/> <param movable="yes" /> <define> <scale_x>5.0</scale_x> <scale_y>5.0</scale_y> <scale_z>5.0</scale_z> </define> <ACTION TRIGGER="location" TARGET="(1,1,1)"> <REPLACE SOURCE=".."/> </ACTION> </create> <create symbol="ff" block="aroomdoorw"><!--reflection--> <PART NAME="*" FACES="2"/> <PART NAME="swallw,doorwallsw,innerwall1w,innerwall2w" FACES="0" /> <PART NAME="dooredgesw" COLOR="(252,255,252)"/> <PART NAME="ndoorw,sdoorw" TEXTURE="@archroom:archdoor.jpg"/> <param movable="yes" /> <define> <scale_x>5.0</scale_x> <scale_y>-5.0</scale_y> <scale_z>5.0</scale_z> </define> </create> <!--Scale Function Script--> <define> <function name="scaleblock" params="block"> /* Grab all of the block's vertices */ vertex_list = block.get_vertices(); /* Loop through vertices and scale */ for n = 0 to block.vertices { vertex_list.set( n, block.vertex[n]:x * block.scale_x, block.vertex[n]:y * block.scale_y, block.vertex[n]:z * block.scale_z ); } /* Scale the origin as well */ block.origin:x = block.origin:x * block.scale_x; block.origin:y = block.origin:y * block.scale_y; block.origin:z = block.origin:z * block.scale_z; /* Scale the location of the block */ if (block.scale_x gt 1) { block.location:x = block.location:x - block.origin:x; } if (block.scale_y gt 1) { block.location:y = block.location:y - block.origin:y; } if (block.scale_z gt 1) { block.location:z = block.location:z - block.origin:z; } /* Pop the new set of vertices */ block.set_vertices(vertex_list); </function> </define> <!-- AT START, SCALE AND POSITION BLOCKS --> <define> <function name="start"> block = map.get_block("aa"); scaleblock(block); block.location:y = 512; block = map.get_block("ee"); scaleblock(block); block.location:y = 512; block.location:x = block.location:x - 256; block = map.get_block("bb"); scaleblock(block); block.location:y = 512; block = map.get_block("gg"); scaleblock(block); block.location:y = 512; block.location:x = block.location:x - 256; block = map.get_block("cc"); scaleblock(block); block.location:y = 512; block = map.get_block("hh"); scaleblock(block); block.location:y = 512; block.location:x = block.location:x - 256; block = map.get_block("dd"); scaleblock(block); block.location:y = 512; block = map.get_block("ff"); scaleblock(block); block.location:y = 512; block.location:x = block.location:x - 256; </function> </define> <!--East Door Proximity-Based Clickability Scripts by UniHacker--> <script trigger="step in" location="(6,7,2)" radius="1"> // Insert and scale clickable closed door block map.set_block(5, 5, 3, "ba"); block = map.get_block("ba"); scaleblock(block); block.location:y = 512; // Remove non-clickable closed door block block = map.get_block("bb"); block.location:x = 0; block.location:y = 256; block.location:z = 256 * (map.dimensions:rows - 1); </script> <script trigger="step out" location="(6,7,2)" radius="1"> // Insert and scale non-clickable closed door block map.set_block(5, 5, 3, "bb"); block = map.get_block("bb"); scaleblock(block); block.location:y = 512; // Insert and scale reflected closed door block // Doesn't quite work - door is invisible from inside the room :( map.set_block(6, 5, 3, "gg"); block = map.get_block("gg"); scaleblock(block); block.location:y = 512; block.location:x = block.location:x - 256; // Remove clickable closed door block block = map.get_block("ba"); block.location:x = 0; block.location:y = 256; block.location:z = 256 * (map.dimensions:rows - 1); </script> <!--West Door Proximity-Based Clickability Scripts by UniHacker--> <script trigger="step in" location="(3,4,2)" radius="1"> // Insert and scale clickable closed door block map.set_block(5, 5, 1, "da"); block = map.get_block("da"); scaleblock(block); block.location:y = 512; // Remove non-clickable closed door block block = map.get_block("dd"); block.location:x = 0; block.location:y = 256; block.location:z = 256 * (map.dimensions:rows - 1); </script> <script trigger="step out" location="(3,4,2)" radius="1"> // Insert and scale non-clickable closed door block map.set_block(5, 5, 1, "dd"); block = map.get_block("dd"); scaleblock(block); block.location:y = 512; // Remove clickable closed door block block = map.get_block("da"); block.location:x = 0; block.location:y = 256; block.location:z = 256 * (map.dimensions:rows - 1); </script> <!--exit--> <CREATE SYMBOL="ii" BLOCK="full"> <PART NAME="*" TEXTURE="@archroom:nitesky2.gif"/> </CREATE> <CREATE SYMBOL="jj" BLOCK="floor"> <PART NAME="*" TEXTURE="@archroom:nitesky2.gif"/> <ACTION TRIGGER="step in" RADIUS="1"> <REPLACE SOURCE="kk" /> </ACTION> </CREATE> <CREATE SYMBOL="kk" BLOCK="floor"> <PART NAME="*" TEXTURE="@archroom:nitesky2.gif"/> <ACTION TRIGGER="timer" DELAY="1"> <REPLACE SOURCE="ll" /> </ACTION> <SOUND FILE="@archroom:shout.wav" VOLUME="100%" RADIUS="10" FLOOD="yes" PLAYBACK="once" /> </CREATE> <CREATE SYMBOL="ll" BLOCK="floor"> <PART NAME="*" TEXTURE="@archroom:nitesky2.gif"/> <EXIT HREF="theportal.3dml#archroom" TRIGGER="step on" /> </CREATE> <CREATE SYMBOL="mm" BLOCK="full"> <PART NAME="*" FACES="0" SOLID="yes"/> </CREATE> <CREATE SYMBOL="nn" BLOCK="floor"> <PARAM ORIENT="east,90"/> <PART NAME="*" TEXTURE="@archroom:nitesky2.gif"/> </CREATE> <CREATE SYMBOL="oo" BLOCK="floor"> <PARAM ORIENT="north,90"/> <PART NAME="*" TEXTURE="@archroom:nitesky2.gif"/> </CREATE> <CREATE SYMBOL="pp" BLOCK="archchair"> <PARAM ORIENT="up,45"/> <PART NAME="chairback,cushion,armtops" TEXTURE="@archroom:blkvinyl.jpg" /> <PART NAME="base,armrests" TEXTURE="@archroom:steel1.jpg" ANGLE="90" /> <PART NAME="wheels" COLOR="(0,0,0)" /> </CREATE> <LEVEL number="1"> .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. dd ff .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. </LEVEL> <LEVEL number="2"> .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. cc hh .. .. .. .. .. .. .. pp .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ii .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. </LEVEL> <LEVEL number="3"> .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. bb gg .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. oo .. .. .. .. .. .. .. .. ii mm nn .. .. .. .. .. .. .. ii jj ii .. .. .. .. .. .. .. </LEVEL> <LEVEL number="4"> .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. aa ee .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ii .. .. .. .. .. .. .. .. .. ii .. .. .. .. .. .. .. .. </LEVEL> <ENTRANCE location="(6,4,2)" name="default" ANGLE="225"/> <ENTRANCE location="(2,10,3)" name="white" /> <!--<ENTRANCE location="(3,7,2)" name="default" ANGLE="40"/>--> <EXIT LOCATION="(6,8,2)" HREF="#white" TRIGGER="step on"/> <EXIT LOCATION="(7,7,2)" HREF="#white" TRIGGER="step on"/> <EXIT LOCATION="(7,8,2)" HREF="#white" TRIGGER="step on"/> <EXIT LOCATION="(7,8,1)" HREF="#white" TRIGGER="step on"/> </BODY> </SPOT>