From a6c6c44112c39f8e27a8c1e735e856c6c10e35ff Mon Sep 17 00:00:00 2001 From: CaelAislinn Date: Thu, 5 Jan 2012 22:03:43 +1000 Subject: [PATCH] ported z-levels from old bs12. ready for implementation into map/s Signed-off-by: CaelAislinn --- baystation12.dme | 2 + code/WorkInProgress/Cael_Aislinn/MultiZ.dm | 189 ++++++++++++++++++ code/WorkInProgress/Cael_Aislinn/multiz.dmi | Bin 0 -> 16001 bytes .../Cael_Aislinn/multiz_pipe.dmi | Bin 0 -> 1884 bytes 4 files changed, 191 insertions(+) create mode 100644 code/WorkInProgress/Cael_Aislinn/MultiZ.dm create mode 100644 code/WorkInProgress/Cael_Aislinn/multiz.dmi create mode 100644 code/WorkInProgress/Cael_Aislinn/multiz_pipe.dmi diff --git a/baystation12.dme b/baystation12.dme index f58c6eba48c..f092d22a12b 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -140,6 +140,7 @@ #define FILE_DIR "code/unused/pda2" #define FILE_DIR "code/unused/spacecraft" #define FILE_DIR "code/WorkInProgress" +#define FILE_DIR "code/WorkInProgress/Cael_Aislinn" #define FILE_DIR "code/WorkInProgress/mapload" #define FILE_DIR "code/WorkInProgress/Mini" #define FILE_DIR "code/WorkInProgress/organs" @@ -999,6 +1000,7 @@ #include "code\WorkInProgress\buildmode.dm" #include "code\WorkInProgress\detective_work.dm" #include "code\WorkInProgress\explosion_particles.dm" +#include "code\WorkInProgress\Cael_Aislinn\MultiZ.dm" #include "code\WorkInProgress\mapload\dmm_suite.dm" #include "code\WorkInProgress\mapload\reader.dm" #include "code\WorkInProgress\Mini\atmos_control.dm" diff --git a/code/WorkInProgress/Cael_Aislinn/MultiZ.dm b/code/WorkInProgress/Cael_Aislinn/MultiZ.dm new file mode 100644 index 00000000000..2e12e95b983 --- /dev/null +++ b/code/WorkInProgress/Cael_Aislinn/MultiZ.dm @@ -0,0 +1,189 @@ +/obj/multiz + icon = 'multiz.dmi' + density = 0 + opacity = 0 + anchored = 1 + var/istop = 1 + + CanPass(obj/mover, turf/source, height, airflow) + return airflow || !density + +/obj/multiz/proc/targetZ() + return src.z + (istop ? 1 : -1) + +/obj/multiz/ladder + icon_state = "ladderdown" + name = "ladder" + desc = "A Ladder. You climb up and down it." + +/obj/multiz/ladder/New() + ..() + if (!istop) + icon_state = "ladderup" + else + icon_state = "ladderdown" + +/obj/multiz/ladder/attack_paw(var/mob/M) + return attack_hand(M) + +/obj/multiz/ladder/attackby(var/W, var/mob/M) + return attack_hand(M) + +/obj/multiz/ladder/attack_hand(var/mob/M) + M.Move(locate(src.x, src.y, targetZ())) +/* +/obj/multiz/ladder/blob_act() + var/newblob = 1 + for(var/obj/blob in locate(src.x, src.y, targetZ())) + newblob = 0 + if(newblob) + new /obj/blob(locate(src.x, src.y, targetZ())) +*/ +//Stairs. var/dir on all four component objects should be the dir you'd walk from top to bottom +//active = bump to move down +//active/bottom = bump to move up +//enter = decorative downwards stairs +//enter/bottom = decorative upward stairs +/obj/multiz/stairs + name = "Stairs" + desc = "Stairs. You walk up and down them." + icon_state = "ramptop" + +/obj/multiz/stairs/New() + icon_state = istop ^ istype(src, /obj/multiz/stairs/active) ? "ramptop" : "rampbottom" + +/obj/multiz/stairs/enter/bottom + istop = 0 + +/obj/multiz/stairs/active + density = 1 + +/obj/multiz/stairs/active/Bumped(var/atom/movable/M) + if(istype(src, /obj/multiz/stairs/active/bottom) && !locate(/obj/multiz/stairs/enter) in M.loc) + return //If on bottom, only let them go up stairs if they've moved to the entry tile first. + //If it's the top, they can fall down just fine. + if(ismob(M) && M:client) + M:client.moving = 1 + M.Move(locate(src.x, src.y, targetZ())) + if (ismob(M) && M:client) + M:client.moving = 0 + +/obj/multiz/stairs/active/Click() + if(!istype(usr,/mob/dead/observer)) + return ..() + usr.client.moving = 1 + usr.Move(locate(src.x, src.y, targetZ())) + usr.client.moving = 0 +/obj/multiz/stairs/active/bottom + istop = 0 + opacity = 1 + +/turf/simulated/floor/open + name = "open space" + intact = 0 + icon_state = "open" + pathweight = 100000 //Seriously, don't try and path over this one numbnuts + var/icon/darkoverlays = null + var/turf/floorbelow + //floorstrength = 1 + mouse_opacity = 2 + + New() + ..() + spawn(1) + if(!istype(src, /turf/simulated/floor/open)) //This should not be needed but is. + return + floorbelow = locate(x, y, z + 1) + if(floorbelow) + //Fortunately, I've done this before. - Aryn + if(istype(floorbelow,/turf/space) || floorbelow.z > 4) + new/turf/space(src) + else if(!istype(floorbelow,/turf/simulated/floor)) + new/turf/simulated/floor/plating(src) + else + //if(ticker) + //find_zone() + update() + else + new/turf/space(src) + + Del() + . = ..() + + Enter(var/atom/movable/AM) + if (..()) //TODO make this check if gravity is active (future use) - Sukasa + spawn(1) + if(AM) + AM.Move(locate(x, y, z + 1)) + if (istype(AM, /mob)) + AM:bruteloss += 20 //You were totally doin it wrong. 5 damage? Really? - Aryn + AM:weakened = max(AM:weakened,5) + AM:updatehealth() + return ..() + + attackby() + //nothing + + proc/update() //Update the overlayss to make the openspace turf show what's down a level + if(!floorbelow) return + /*src.clearoverlays() + src.addoverlay(floorbelow) + for(var/obj/o in floorbelow.contents) + src.addoverlay(image(o, dir=o.dir, layer = TURF_LAYER+0.05*o.layer)) + var/image/I = image('ULIcons.dmi', "[min(max(floorbelow.LightLevelRed - 4, 0), 7)]-[min(max(floorbelow.LightLevelGreen - 4, 0), 7)]-[min(max(floorbelow.LightLevelBlue - 4, 0), 7)]") + I.layer = TURF_LAYER + 0.2 + src.addoverlay(I) + I = image('ULIcons.dmi', "1-1-1") + I.layer = TURF_LAYER + 0.2 + src.addoverlay(I)*/ + +var/maxZ = 1 +var/minZ = 1 + +// Maybe it's best to have this hardcoded for whatever we'd add to the map, in order to avoid exploits +// (such as mining base => admin station) +// Note that this assumes the ship's top is at z=1 and bottom at z=4 +/obj/item/weapon/tank/jetpack/proc/move_z(cardinal, mob/user as mob) + if (user.z > 1) + user << "\red There is nothing of interest in that direction." + return + if(allow_thrust(0.01, user)) + switch(cardinal) + if (UP) // Going up! + if(user.z > maxZ) // If we aren't at the very top of the ship + var/turf/T = locate(user.x, user.y, user.z - 1) + // You can only jetpack up if there's space above, and you're sitting on either hull (on the exterior), or space + //if(T && istype(T, /turf/space) && (istype(user.loc, /turf/space) || istype(user.loc, /turf/space/*/hull*/))) + //check through turf contents to make sure there's nothing blocking the way + if(T && istype(T, /turf/space)) + var/blocked = 0 + for(var/atom/A in T.contents) + if(T.density) + blocked = 1 + user << "\red You bump into [T.name]." + break + if(!blocked) + user.Move(T) + else + user << "\red You bump into the ship's plating." + else + user << "\red The ship's gravity well keeps you in orbit!" // Assuming the ship starts on z level 1, you don't want to go past it + + if (DOWN) // Going down! + if (user.z < 1) // If we aren't at the very bottom of the ship, or out in space + var/turf/T = locate(user.x, user.y, user.z + 1) + // You can only jetpack down if you're sitting on space and there's space down below, or hull + if(T && (istype(T, /turf/space) || istype(T, /turf/space/*/hull*/)) && istype(user.loc, /turf/space)) + var/blocked = 0 + for(var/atom/A in T.contents) + if(T.density) + blocked = 1 + user << "\red You bump into [T.name]." + break + if(!blocked) + user.Move(T) + else + user << "\red You bump into the ship's plating." + else + user << "\red The ship's gravity well keeps you in orbit!" + diff --git a/code/WorkInProgress/Cael_Aislinn/multiz.dmi b/code/WorkInProgress/Cael_Aislinn/multiz.dmi new file mode 100644 index 0000000000000000000000000000000000000000..8e7e6d03102a57200b9e6b50d6f1a1d404ab88f2 GIT binary patch literal 16001 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 M$*IfMN?U~eA6j_!IRF3v literal 0 HcmV?d00001 diff --git a/code/WorkInProgress/Cael_Aislinn/multiz_pipe.dmi b/code/WorkInProgress/Cael_Aislinn/multiz_pipe.dmi new file mode 100644 index 0000000000000000000000000000000000000000..a3bbbee0b282a47d18520c3dd92d38d190da1705 GIT binary patch literal 1884 zcmXAqc{H0@AII;LAYNl{EL8+mp^MSVXxfSdu^qJ)RjO%7Rn!_gAu?(yJruQ_(1{rx z)5BZ3Q>rD5r6|K#dLpRct)i$BMD%?+^T)lv<=lJj_uTvaoSWnB>YyN}B?kadaB?JH zfFt|+kd=Yw4y%AZIHV1q9Vhzg8MVGSchvdB(RclW zo{zlE{xYALJwABeq}LrTEM{l>9S6=28vh)X>#XX0K`l(J_`;XIjp8P}=c(JdaCyE7 zKa#5&<9Qp-nHB{uJ ztu-#smn!DFnr234cKU07cA09aTM<)ClZK}W(}S^7-l_CAWtK@_CL6mxe9*to(8dZT zCp)Vh?yPMt`MgT|rhCt|`vKEmbzqdhHVEU}*NyTdVi99?ig4W2bc|s5xKoB27pE4& z;o%0Fvk!B6Kt=%lRpL5g`gLl@r%y-YJmolnqr^0R@j{3n5b_!(=iYi>}R`8NsbD zzc-(!1%MmTv9ZNmakVjTVd44-Ar+u~{rx+6JjD5tjBx&=@Ix!{d;rGdJozsII7aH~ z>ctUJAA+iE-Y=;2Juy2iT5V)SL@1U9<)!2um1hTrByYCXEm7*^kX7XY{)CrrK0mKD z19C^4(kTtu_(A!nwkEY|K7?Ew5_5!fL$r z;_p1DXY7T!SS&74+S^*;=W&T?TeW+{SkI4W_`N=ft;WX2ObJ)LWw$#T>_40#6&aRu zx!qG!x?t|~sakocq#+7qVa**J9L(gAZd|L(aDGV!dv*T?T8@Oa!xIPttHHqu&$mRP zzC#C1^rJ81#n9Ws(fYR}U|!`A*g_WDUIP#Vn^RnXv1$I(T8^< z^u$mNHd=?OErxO{a)3L-+#FREs0jv60?vU{H9ZwEgzI8~yvG=J^fF3s3;8ii0ybkk4y;@nSeHPXQ)Cs=K>8 zabrP&c)-1&C$kFY65y-8D`5$2Rot!tpqEe6%=$HDC1vc^5A3C86QHfDn}7U|3nzao zO}{ekg0V`G1>1W&=9YsUePus}>W+R(IN*c$vo*7{v=o5XtK*hMy@|h+)i*TIf`d^@ zOG`V2@|sf2?Vn1xiRx1B#^X4(;Av(^!p1Lcs(#o?xaW0)a0I}OWs7&VNYbLNU@#oIj zYIm1WZVNSogM;7Rq0b@!K%r3fSMJt?l-K0gS3`YI?59?;0@|J&$7w0dx1`(2fPxKM zO!t*`j|Vtl|Z!w)Sd*nv1fIJwOIvM->~KfTUipnMa9s< zLpFvjAv)GD&xr>gocWh*qt|kpQ$5OA`eA(amqu>L13HlZxJ&BvV1h957oXlL$9p+$ zkRampbRLrZrpB%*2T>5-n=JY)aFlhd=iP1lZx5A5yXgS68!3`n1Qu4TJy~kh*(Rna zV)3RyoSY5>-&nK2)PH zc;gmlsk!|UkrcK0#>>C1u)gcgzOZy(q`~vtuShAFAf08@5R4