12/21 modernizations from TG live (#103)
* sync (#3) * shuttle auto call * Merge /vore into /master (#39) * progress * Compile errors fixed No idea if it's test worthy tho as conflicts with race overhaul and narky removal. * Update admins.txt * efforts continue Fuck grab code, seriously * grab code is cancer * Execute the Narkism Do not hesitate. Show no mercy. * holy shit grab code is awful * have I bitched about grab code My bitching, let me show you it * código de agarre es una mierda No really it is * yeah I don't even know anymore. * Lolnope. Fuck grab code * I'm not even sure what to fix anymore * Self eating is not an acceptable fate * Taste the void, son. * My code doesn't pass it's own sanity check. Maybe it's a sign of things to come. * uncommented and notes * It Works and I Don't Know Why (#38) * shuttle auto call * it works and I don't know why * Subsystem 12/21 Most Recent TG subsystem folder * globalvars 12/21 Tossed out the flavor_misc and parallax files * Onclick 12/21 as well as .dme updates * _defines 12/21 ommited old _MC.dm * _HELPERS 12/21 Preserved snowflake placement of furry sprites * _defeines/genetics reapplied narkism holdover for snowflake races. * Oops forgot mutant colors * modules porting 12/21 + Sounds/icons Admin, Client and most of mob life files ommitted * enviroment file * Admin optimizations ahelp log system kept * Mob ports 12/21 Flavor text preserved * datums ported 12/21 * Game ported 12/21 * batch of duplicate fixes/dogborg work Dogborgs need to be modernized to refractored borg standards. * moar fixes * Maps and futher compile fixes
This commit is contained in:
@@ -0,0 +1,243 @@
|
||||
/turf/closed/wall/mineral
|
||||
name = "mineral wall"
|
||||
desc = "This shouldn't exist"
|
||||
icon_state = ""
|
||||
var/last_event = 0
|
||||
var/active = null
|
||||
canSmoothWith = null
|
||||
smooth = SMOOTH_TRUE
|
||||
|
||||
/turf/closed/wall/mineral/gold
|
||||
name = "gold wall"
|
||||
desc = "A wall with gold plating. Swag!"
|
||||
icon = 'icons/turf/walls/gold_wall.dmi'
|
||||
icon_state = "gold"
|
||||
sheet_type = /obj/item/stack/sheet/mineral/gold
|
||||
//var/electro = 1
|
||||
//var/shocked = null
|
||||
explosion_block = 0 //gold is a soft metal you dingus.
|
||||
canSmoothWith = list(/turf/closed/wall/mineral/gold, /obj/structure/falsewall/gold)
|
||||
|
||||
/turf/closed/wall/mineral/silver
|
||||
name = "silver wall"
|
||||
desc = "A wall with silver plating. Shiny!"
|
||||
icon = 'icons/turf/walls/silver_wall.dmi'
|
||||
icon_state = "silver"
|
||||
sheet_type = /obj/item/stack/sheet/mineral/silver
|
||||
//var/electro = 0.75
|
||||
//var/shocked = null
|
||||
canSmoothWith = list(/turf/closed/wall/mineral/silver, /obj/structure/falsewall/silver)
|
||||
|
||||
/turf/closed/wall/mineral/diamond
|
||||
name = "diamond wall"
|
||||
desc = "A wall with diamond plating. You monster."
|
||||
icon = 'icons/turf/walls/diamond_wall.dmi'
|
||||
icon_state = "diamond"
|
||||
sheet_type = /obj/item/stack/sheet/mineral/diamond
|
||||
slicing_duration = 200 //diamond wall takes twice as much time to slice
|
||||
explosion_block = 3
|
||||
canSmoothWith = list(/turf/closed/wall/mineral/diamond, /obj/structure/falsewall/diamond)
|
||||
|
||||
/turf/closed/wall/mineral/diamond/thermitemelt(mob/user)
|
||||
return
|
||||
|
||||
/turf/closed/wall/mineral/clown
|
||||
name = "bananium wall"
|
||||
desc = "A wall with bananium plating. Honk!"
|
||||
icon = 'icons/turf/walls/bananium_wall.dmi'
|
||||
icon_state = "bananium"
|
||||
sheet_type = /obj/item/stack/sheet/mineral/bananium
|
||||
canSmoothWith = list(/turf/closed/wall/mineral/clown, /obj/structure/falsewall/clown)
|
||||
|
||||
/turf/closed/wall/mineral/sandstone
|
||||
name = "sandstone wall"
|
||||
desc = "A wall with sandstone plating. Rough."
|
||||
icon = 'icons/turf/walls/sandstone_wall.dmi'
|
||||
icon_state = "sandstone"
|
||||
sheet_type = /obj/item/stack/sheet/mineral/sandstone
|
||||
explosion_block = 0
|
||||
canSmoothWith = list(/turf/closed/wall/mineral/sandstone, /obj/structure/falsewall/sandstone)
|
||||
|
||||
/turf/closed/wall/mineral/uranium
|
||||
name = "uranium wall"
|
||||
desc = "A wall with uranium plating. This is probably a bad idea."
|
||||
icon = 'icons/turf/walls/uranium_wall.dmi'
|
||||
icon_state = "uranium"
|
||||
sheet_type = /obj/item/stack/sheet/mineral/uranium
|
||||
canSmoothWith = list(/turf/closed/wall/mineral/uranium, /obj/structure/falsewall/uranium)
|
||||
|
||||
/turf/closed/wall/mineral/uranium/proc/radiate()
|
||||
if(!active)
|
||||
if(world.time > last_event+15)
|
||||
active = 1
|
||||
radiation_pulse(get_turf(src), 3, 3, 4, 0)
|
||||
for(var/turf/closed/wall/mineral/uranium/T in orange(1,src))
|
||||
T.radiate()
|
||||
last_event = world.time
|
||||
active = null
|
||||
return
|
||||
return
|
||||
|
||||
/turf/closed/wall/mineral/uranium/attack_hand(mob/user)
|
||||
radiate()
|
||||
..()
|
||||
|
||||
/turf/closed/wall/mineral/uranium/attackby(obj/item/weapon/W, mob/user, params)
|
||||
radiate()
|
||||
..()
|
||||
|
||||
/turf/closed/wall/mineral/uranium/Bumped(AM as mob|obj)
|
||||
radiate()
|
||||
..()
|
||||
|
||||
/turf/closed/wall/mineral/plasma
|
||||
name = "plasma wall"
|
||||
desc = "A wall with plasma plating. This is definitely a bad idea."
|
||||
icon = 'icons/turf/walls/plasma_wall.dmi'
|
||||
icon_state = "plasma"
|
||||
sheet_type = /obj/item/stack/sheet/mineral/plasma
|
||||
thermal_conductivity = 0.04
|
||||
canSmoothWith = list(/turf/closed/wall/mineral/plasma, /obj/structure/falsewall/plasma)
|
||||
|
||||
/turf/closed/wall/mineral/plasma/attackby(obj/item/weapon/W, mob/user, params)
|
||||
if(W.is_hot() > 300)//If the temperature of the object is over 300, then ignite
|
||||
message_admins("Plasma wall ignited by [key_name_admin(user)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[user]'>FLW</A>) in ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
|
||||
log_game("Plasma wall ignited by [key_name(user)] in ([x],[y],[z])")
|
||||
ignite(W.is_hot())
|
||||
return
|
||||
..()
|
||||
|
||||
/turf/closed/wall/mineral/plasma/proc/PlasmaBurn(temperature)
|
||||
new girder_type(src)
|
||||
src.ChangeTurf(/turf/open/floor/plasteel)
|
||||
var/turf/open/T = src
|
||||
T.atmos_spawn_air("plasma=400;TEMP=1000")
|
||||
|
||||
/turf/closed/wall/mineral/plasma/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)//Doesn't fucking work because walls don't interact with air :(
|
||||
if(exposed_temperature > 300)
|
||||
PlasmaBurn(exposed_temperature)
|
||||
|
||||
/turf/closed/wall/mineral/plasma/proc/ignite(exposed_temperature)
|
||||
if(exposed_temperature > 300)
|
||||
PlasmaBurn(exposed_temperature)
|
||||
|
||||
/turf/closed/wall/mineral/plasma/bullet_act(var/obj/item/projectile/Proj)
|
||||
if(istype(Proj,/obj/item/projectile/beam))
|
||||
PlasmaBurn(2500)
|
||||
else if(istype(Proj,/obj/item/projectile/ion))
|
||||
PlasmaBurn(500)
|
||||
..()
|
||||
|
||||
|
||||
/turf/closed/wall/mineral/wood
|
||||
name = "wooden wall"
|
||||
desc = "A wall with wooden plating. Stiff."
|
||||
icon = 'icons/turf/walls/wood_wall.dmi'
|
||||
icon_state = "wood"
|
||||
sheet_type = /obj/item/stack/sheet/mineral/wood
|
||||
hardness = 70
|
||||
explosion_block = 0
|
||||
canSmoothWith = list(/turf/closed/wall/mineral/wood, /obj/structure/falsewall/wood)
|
||||
|
||||
/turf/closed/wall/mineral/iron
|
||||
name = "rough metal wall"
|
||||
desc = "A wall with rough metal plating."
|
||||
icon = 'icons/turf/walls/iron_wall.dmi'
|
||||
icon_state = "iron"
|
||||
sheet_type = /obj/item/stack/rods
|
||||
canSmoothWith = list(/turf/closed/wall/mineral/iron, /obj/structure/falsewall/iron)
|
||||
|
||||
/turf/closed/wall/mineral/snow
|
||||
name = "packed snow wall"
|
||||
desc = "A wall made of densely packed snow blocks."
|
||||
icon = 'icons/turf/walls/snow_wall.dmi'
|
||||
icon_state = "snow"
|
||||
hardness = 80
|
||||
sheet_type = /obj/item/stack/sheet/mineral/snow
|
||||
canSmoothWith = null
|
||||
|
||||
/turf/closed/wall/mineral/abductor
|
||||
name = "alien wall"
|
||||
desc = "A wall with alien alloy plating."
|
||||
icon = 'icons/turf/walls/abductor_wall.dmi'
|
||||
icon_state = "abductor"
|
||||
smooth = SMOOTH_TRUE|SMOOTH_DIAGONAL
|
||||
sheet_type = /obj/item/stack/sheet/mineral/abductor
|
||||
slicing_duration = 200 //alien wall takes twice as much time to slice
|
||||
explosion_block = 3
|
||||
canSmoothWith = list(/turf/closed/wall/mineral/abductor, /obj/structure/falsewall/abductor)
|
||||
|
||||
/turf/closed/wall/mineral/titanium //has to use this path due to how building walls works
|
||||
name = "wall"
|
||||
desc = "A light-weight titanium wall used in shuttles."
|
||||
icon = 'icons/turf/walls/shuttle_wall.dmi'
|
||||
icon_state = "map-shuttle"
|
||||
sheet_type = /obj/item/stack/sheet/mineral/titanium
|
||||
smooth = SMOOTH_MORE|SMOOTH_DIAGONAL
|
||||
canSmoothWith = list(/turf/closed/wall/mineral/titanium, /obj/machinery/door/airlock/shuttle, /obj/machinery/door/airlock/, /turf/closed/wall/shuttle, /obj/structure/window/shuttle, /obj/structure/shuttle/engine, /obj/structure/shuttle/engine/heater, )
|
||||
|
||||
/turf/closed/wall/mineral/titanium/nodiagonal
|
||||
smooth = SMOOTH_MORE
|
||||
icon_state = "map-shuttle_nd"
|
||||
|
||||
/turf/closed/wall/mineral/titanium/nosmooth
|
||||
icon = 'icons/turf/shuttle.dmi'
|
||||
icon_state = "wall"
|
||||
smooth = SMOOTH_FALSE
|
||||
|
||||
/turf/closed/wall/mineral/titanium/overspace
|
||||
icon_state = "map-overspace"
|
||||
fixed_underlay = list("space"=1)
|
||||
|
||||
//sub-type to be used for interior shuttle walls
|
||||
//won't get an underlay of the destination turf on shuttle move
|
||||
/turf/closed/wall/mineral/titanium/interior/copyTurf(turf/T)
|
||||
if(T.type != type)
|
||||
T.ChangeTurf(type)
|
||||
if(underlays.len)
|
||||
T.underlays = underlays
|
||||
if(T.icon_state != icon_state)
|
||||
T.icon_state = icon_state
|
||||
if(T.icon != icon)
|
||||
T.icon = icon
|
||||
if(color)
|
||||
T.atom_colours = atom_colours.Copy()
|
||||
T.update_atom_colour()
|
||||
if(T.dir != dir)
|
||||
T.dir = dir
|
||||
T.transform = transform
|
||||
return T
|
||||
|
||||
/turf/closed/wall/mineral/titanium/copyTurf(turf/T)
|
||||
. = ..()
|
||||
T.transform = transform
|
||||
|
||||
/turf/closed/wall/mineral/plastitanium
|
||||
name = "wall"
|
||||
desc = "An evil wall of plasma and titanium."
|
||||
icon = 'icons/turf/shuttle.dmi'
|
||||
icon_state = "wall3"
|
||||
sheet_type = /obj/item/stack/sheet/mineral/plastitanium
|
||||
smooth = SMOOTH_FALSE
|
||||
|
||||
//have to copypaste this code
|
||||
/turf/closed/wall/mineral/plastitanium/interior/copyTurf(turf/T)
|
||||
if(T.type != type)
|
||||
T.ChangeTurf(type)
|
||||
if(underlays.len)
|
||||
T.underlays = underlays
|
||||
if(T.icon_state != icon_state)
|
||||
T.icon_state = icon_state
|
||||
if(T.icon != icon)
|
||||
T.icon = icon
|
||||
if(color)
|
||||
T.atom_colours = atom_colours.Copy()
|
||||
T.update_atom_colour()
|
||||
if(T.dir != dir)
|
||||
T.dir = dir
|
||||
T.transform = transform
|
||||
return T
|
||||
|
||||
/turf/closed/wall/mineral/plastitanium/copyTurf(turf/T)
|
||||
. = ..()
|
||||
T.transform = transform
|
||||
@@ -0,0 +1,156 @@
|
||||
/turf/closed/wall/mineral/cult
|
||||
name = "runed metal wall"
|
||||
desc = "A cold metal wall engraved with indecipherable symbols. Studying them causes your head to pound."
|
||||
icon = 'icons/turf/walls/cult_wall.dmi'
|
||||
icon_state = "cult"
|
||||
canSmoothWith = null
|
||||
sheet_type = /obj/item/stack/sheet/runed_metal
|
||||
sheet_amount = 1
|
||||
girder_type = /obj/structure/girder/cult
|
||||
|
||||
/turf/closed/wall/mineral/cult/New()
|
||||
PoolOrNew(/obj/effect/overlay/temp/cult/turf, src)
|
||||
..()
|
||||
|
||||
/turf/closed/wall/mineral/cult/devastate_wall()
|
||||
new sheet_type(get_turf(src), sheet_amount)
|
||||
|
||||
/turf/closed/wall/mineral/cult/narsie_act()
|
||||
return
|
||||
|
||||
/turf/closed/wall/mineral/cult/ratvar_act()
|
||||
. = ..()
|
||||
if(istype(src, /turf/closed/wall/mineral/cult)) //if we haven't changed type
|
||||
var/previouscolor = color
|
||||
color = "#FAE48C"
|
||||
animate(src, color = previouscolor, time = 8)
|
||||
addtimer(src, "update_atom_colour", 8)
|
||||
|
||||
/turf/closed/wall/mineral/cult/artificer
|
||||
name = "runed stone wall"
|
||||
desc = "A cold stone wall engraved with indecipherable symbols. Studying them causes your head to pound."
|
||||
|
||||
/turf/closed/wall/mineral/cult/artificer/break_wall()
|
||||
PoolOrNew(/obj/effect/overlay/temp/cult/turf, get_turf(src))
|
||||
return null //excuse me we want no runed metal here
|
||||
|
||||
/turf/closed/wall/mineral/cult/artificer/devastate_wall()
|
||||
PoolOrNew(/obj/effect/overlay/temp/cult/turf, get_turf(src))
|
||||
|
||||
//Clockwork wall: Causes nearby tinkerer's caches to generate components.
|
||||
/turf/closed/wall/clockwork
|
||||
name = "clockwork wall"
|
||||
desc = "A huge chunk of warm metal. The clanging of machinery emanates from within."
|
||||
explosion_block = 2
|
||||
hardness = 10
|
||||
sheet_type = /obj/item/stack/tile/brass
|
||||
sheet_amount = 1
|
||||
girder_type = /obj/structure/destructible/clockwork/wall_gear
|
||||
var/obj/effect/clockwork/overlay/wall/realappearence
|
||||
var/obj/structure/destructible/clockwork/cache/linkedcache
|
||||
|
||||
/turf/closed/wall/clockwork/New()
|
||||
..()
|
||||
PoolOrNew(/obj/effect/overlay/temp/ratvar/wall, src)
|
||||
PoolOrNew(/obj/effect/overlay/temp/ratvar/beam, src)
|
||||
realappearence = PoolOrNew(/obj/effect/clockwork/overlay/wall, src)
|
||||
realappearence.linked = src
|
||||
change_construction_value(5)
|
||||
|
||||
/turf/closed/wall/clockwork/examine(mob/user)
|
||||
..()
|
||||
if((is_servant_of_ratvar(user) || isobserver(user)) && linkedcache)
|
||||
user << "<span class='brass'>It is linked, generating components in a cache!</span>"
|
||||
|
||||
/turf/closed/wall/clockwork/Destroy()
|
||||
be_removed()
|
||||
return ..()
|
||||
|
||||
/turf/closed/wall/clockwork/ChangeTurf(path, defer_change = FALSE)
|
||||
if(path != type)
|
||||
be_removed()
|
||||
return ..()
|
||||
|
||||
/turf/closed/wall/clockwork/proc/be_removed()
|
||||
if(linkedcache)
|
||||
linkedcache.linkedwall = null
|
||||
linkedcache = null
|
||||
change_construction_value(-5)
|
||||
qdel(realappearence)
|
||||
realappearence = null
|
||||
|
||||
/turf/closed/wall/clockwork/attackby(obj/item/I, mob/living/user, params)
|
||||
if(istype(I, /obj/item/weapon/weldingtool))
|
||||
var/obj/item/weapon/weldingtool/WT = I
|
||||
if(!WT.remove_fuel(0,user))
|
||||
return 0
|
||||
playsound(src, WT.usesound, 100, 1)
|
||||
user.visible_message("<span class='notice'>[user] begins slowly breaking down [src]...</span>", "<span class='notice'>You begin painstakingly destroying [src]...</span>")
|
||||
if(!do_after(user, 120*WT.toolspeed, target = src))
|
||||
return 0
|
||||
if(!WT.remove_fuel(1, user))
|
||||
return 0
|
||||
user.visible_message("<span class='notice'>[user] breaks apart [src]!</span>", "<span class='notice'>You break apart [src]!</span>")
|
||||
dismantle_wall()
|
||||
return 1
|
||||
return ..()
|
||||
|
||||
/turf/closed/wall/clockwork/narsie_act()
|
||||
..()
|
||||
if(istype(src, /turf/closed/wall/clockwork)) //if we haven't changed type
|
||||
var/previouscolor = color
|
||||
color = "#960000"
|
||||
animate(src, color = previouscolor, time = 8)
|
||||
addtimer(src, "update_atom_colour", 8)
|
||||
|
||||
/turf/closed/wall/clockwork/dismantle_wall(devastated=0, explode=0)
|
||||
if(devastated)
|
||||
devastate_wall()
|
||||
ChangeTurf(/turf/open/floor/plating)
|
||||
else
|
||||
playsound(src, 'sound/items/Welder.ogg', 100, 1)
|
||||
var/newgirder = break_wall()
|
||||
if(newgirder) //maybe we want a gear!
|
||||
transfer_fingerprints_to(newgirder)
|
||||
ChangeTurf(/turf/open/floor/clockwork)
|
||||
|
||||
for(var/obj/O in src) //Eject contents!
|
||||
if(istype(O,/obj/structure/sign/poster))
|
||||
var/obj/structure/sign/poster/P = O
|
||||
P.roll_and_drop(src)
|
||||
else
|
||||
O.loc = src
|
||||
|
||||
|
||||
/turf/closed/wall/clockwork/devastate_wall()
|
||||
for(var/i in 1 to 2)
|
||||
new/obj/item/clockwork/alloy_shards/large(src)
|
||||
for(var/i in 1 to 2)
|
||||
new/obj/item/clockwork/alloy_shards/medium(src)
|
||||
for(var/i in 1 to 3)
|
||||
new/obj/item/clockwork/alloy_shards/small(src)
|
||||
|
||||
|
||||
/turf/closed/wall/vault
|
||||
icon = 'icons/turf/walls.dmi'
|
||||
icon_state = "rockvault"
|
||||
|
||||
/turf/closed/wall/ice
|
||||
icon = 'icons/turf/walls/icedmetal_wall.dmi'
|
||||
icon_state = "iced"
|
||||
desc = "A wall covered in a thick sheet of ice."
|
||||
canSmoothWith = null
|
||||
hardness = 35
|
||||
slicing_duration = 150 //welding through the ice+metal
|
||||
|
||||
/turf/closed/wall/rust
|
||||
name = "rusted wall"
|
||||
desc = "A rusted metal wall."
|
||||
icon = 'icons/turf/walls/rusty_wall.dmi'
|
||||
hardness = 45
|
||||
|
||||
/turf/closed/wall/r_wall/rust
|
||||
name = "rusted reinforced wall"
|
||||
desc = "A huge chunk of rusted reinforced metal."
|
||||
icon = 'icons/turf/walls/rusty_reinforced_wall.dmi'
|
||||
hardness = 15
|
||||
@@ -0,0 +1,249 @@
|
||||
/turf/closed/wall/r_wall
|
||||
name = "reinforced wall"
|
||||
desc = "A huge chunk of reinforced metal used to separate rooms."
|
||||
icon = 'icons/turf/walls/reinforced_wall.dmi'
|
||||
icon_state = "r_wall"
|
||||
opacity = 1
|
||||
density = 1
|
||||
|
||||
var/d_state = INTACT
|
||||
hardness = 10
|
||||
sheet_type = /obj/item/stack/sheet/plasteel
|
||||
sheet_amount = 1
|
||||
girder_type = /obj/structure/girder/reinforced
|
||||
explosion_block = 2
|
||||
|
||||
/turf/closed/wall/r_wall/examine(mob/user)
|
||||
..()
|
||||
switch(d_state)
|
||||
if(INTACT)
|
||||
user << "<span class='notice'>The outer <b>grille</b> is fully intact.</span>"
|
||||
if(SUPPORT_LINES)
|
||||
user << "<span class='notice'>The outer <i>grille</i> has been cut, and the support lines are <b>screwed</b> securely to the outer cover.</span>"
|
||||
if(COVER)
|
||||
user << "<span class='notice'>The support lines have been <i>unscrewed</i>, and the metal cover is <b>welded</b> firmly in place.</span>"
|
||||
if(CUT_COVER)
|
||||
user << "<span class='notice'>The metal cover has been <i>sliced through</i>, and is <b>connected loosely</b> to the girder.</span>"
|
||||
if(BOLTS)
|
||||
user << "<span class='notice'>The outer cover has been <i>pried away</i>, and the bolts anchoring the support rods are <b>wrenched</b> in place.</span>"
|
||||
if(SUPPORT_RODS)
|
||||
user << "<span class='notice'>The bolts anchoring the support rods have been <i>loosened</i>, but are still <b>welded</b> firmly to the girder.</span>"
|
||||
if(SHEATH)
|
||||
user << "<span class='notice'>The support rods have been <i>sliced through</i>, and the outer sheath is <b>connected loosely</b> to the girder.</span>"
|
||||
|
||||
/turf/closed/wall/r_wall/devastate_wall()
|
||||
new sheet_type(src, sheet_amount)
|
||||
new /obj/item/stack/sheet/metal(src, 2)
|
||||
|
||||
/turf/closed/wall/r_wall/attack_animal(mob/living/simple_animal/M)
|
||||
M.changeNext_move(CLICK_CD_MELEE)
|
||||
M.do_attack_animation(src)
|
||||
if(M.environment_smash == 3)
|
||||
dismantle_wall(1)
|
||||
playsound(src, 'sound/effects/meteorimpact.ogg', 100, 1)
|
||||
else
|
||||
playsound(src, 'sound/effects/bang.ogg', 50, 1)
|
||||
M << "<span class='warning'>This wall is far too strong for you to destroy.</span>"
|
||||
|
||||
/turf/closed/wall/r_wall/try_destroy(obj/item/weapon/W, mob/user, turf/T)
|
||||
if(istype(W, /obj/item/weapon/pickaxe/drill/jackhammer))
|
||||
var/obj/item/weapon/pickaxe/drill/jackhammer/D = W
|
||||
user << "<span class='notice'>You begin to smash though the [name]...</span>"
|
||||
if(do_after(user, 50, target = src))
|
||||
if(!istype(src, /turf/closed/wall/r_wall) || !W)
|
||||
return 1
|
||||
D.playDigSound()
|
||||
visible_message("<span class='warning'>[user] smashes through the [name] with the [D.name]!</span>", "<span class='italics'>You hear the grinding of metal.</span>")
|
||||
dismantle_wall()
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/turf/closed/wall/r_wall/try_decon(obj/item/weapon/W, mob/user, turf/T)
|
||||
//DECONSTRUCTION
|
||||
switch(d_state)
|
||||
if(INTACT)
|
||||
if(istype(W, /obj/item/weapon/wirecutters))
|
||||
playsound(src, W.usesound, 100, 1)
|
||||
d_state = SUPPORT_LINES
|
||||
update_icon()
|
||||
user << "<span class='notice'>You cut the outer grille.</span>"
|
||||
return 1
|
||||
|
||||
if(SUPPORT_LINES)
|
||||
if(istype(W, /obj/item/weapon/screwdriver))
|
||||
user << "<span class='notice'>You begin unsecuring the support lines...</span>"
|
||||
playsound(src, W.usesound, 100, 1)
|
||||
if(do_after(user, 40*W.toolspeed, target = src))
|
||||
if(!istype(src, /turf/closed/wall/r_wall) || !W || d_state != SUPPORT_LINES)
|
||||
return 1
|
||||
d_state = COVER
|
||||
update_icon()
|
||||
user << "<span class='notice'>You unsecure the support lines.</span>"
|
||||
return 1
|
||||
|
||||
else if(istype(W, /obj/item/weapon/wirecutters))
|
||||
playsound(src, W.usesound, 100, 1)
|
||||
d_state = INTACT
|
||||
update_icon()
|
||||
user << "<span class='notice'>You repair the outer grille.</span>"
|
||||
return 1
|
||||
|
||||
if(COVER)
|
||||
if(istype(W, /obj/item/weapon/weldingtool))
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
if(WT.remove_fuel(0,user))
|
||||
user << "<span class='notice'>You begin slicing through the metal cover...</span>"
|
||||
playsound(src, W.usesound, 100, 1)
|
||||
if(do_after(user, 60*W.toolspeed, target = src))
|
||||
if(!istype(src, /turf/closed/wall/r_wall) || !WT || !WT.isOn() || d_state != COVER)
|
||||
return 1
|
||||
d_state = CUT_COVER
|
||||
update_icon()
|
||||
user << "<span class='notice'>You press firmly on the cover, dislodging it.</span>"
|
||||
return 1
|
||||
|
||||
if(istype(W, /obj/item/weapon/gun/energy/plasmacutter))
|
||||
user << "<span class='notice'>You begin slicing through the metal cover...</span>"
|
||||
playsound(src, 'sound/items/Welder.ogg', 100, 1)
|
||||
if(do_after(user, 60*W.toolspeed, target = src))
|
||||
if(!istype(src, /turf/closed/wall/r_wall) || !W || d_state != COVER)
|
||||
return 1
|
||||
d_state = CUT_COVER
|
||||
update_icon()
|
||||
user << "<span class='notice'>You press firmly on the cover, dislodging it.</span>"
|
||||
return 1
|
||||
|
||||
if(istype(W, /obj/item/weapon/screwdriver))
|
||||
user << "<span class='notice'>You begin securing the support lines...</span>"
|
||||
playsound(src, W.usesound, 100, 1)
|
||||
if(do_after(user, 40*W.toolspeed, target = src))
|
||||
if(!istype(src, /turf/closed/wall/r_wall) || !W || d_state != COVER)
|
||||
return 1
|
||||
d_state = SUPPORT_LINES
|
||||
update_icon()
|
||||
user << "<span class='notice'>The support lines have been secured.</span>"
|
||||
return 1
|
||||
|
||||
if(CUT_COVER)
|
||||
if(istype(W, /obj/item/weapon/crowbar))
|
||||
user << "<span class='notice'>You struggle to pry off the cover...</span>"
|
||||
playsound(src, W.usesound, 100, 1)
|
||||
if(do_after(user, 100*W.toolspeed, target = src))
|
||||
if(!istype(src, /turf/closed/wall/r_wall) || !W || d_state != CUT_COVER)
|
||||
return 1
|
||||
d_state = BOLTS
|
||||
update_icon()
|
||||
user << "<span class='notice'>You pry off the cover.</span>"
|
||||
return 1
|
||||
|
||||
if(istype(W, /obj/item/weapon/weldingtool))
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
if(WT.remove_fuel(0,user))
|
||||
user << "<span class='notice'>You begin welding the metal cover back to the frame...</span>"
|
||||
playsound(src, WT.usesound, 100, 1)
|
||||
if(do_after(user, 60*WT.toolspeed, target = src))
|
||||
if(!istype(src, /turf/closed/wall/r_wall) || !WT || !WT.isOn() || d_state != CUT_COVER)
|
||||
return 1
|
||||
d_state = COVER
|
||||
update_icon()
|
||||
user << "<span class='notice'>The metal cover has been welded securely to the frame.</span>"
|
||||
return 1
|
||||
|
||||
if(BOLTS)
|
||||
if(istype(W, /obj/item/weapon/wrench))
|
||||
user << "<span class='notice'>You start loosening the anchoring bolts which secure the support rods to their frame...</span>"
|
||||
playsound(src, W.usesound, 100, 1)
|
||||
if(do_after(user, 40*W.toolspeed, target = src))
|
||||
if(!istype(src, /turf/closed/wall/r_wall) || !W || d_state != BOLTS)
|
||||
return 1
|
||||
d_state = SUPPORT_RODS
|
||||
update_icon()
|
||||
user << "<span class='notice'>You remove the bolts anchoring the support rods.</span>"
|
||||
return 1
|
||||
|
||||
if(istype(W, /obj/item/weapon/crowbar))
|
||||
user << "<span class='notice'>You start to pry the cover back into place...</span>"
|
||||
playsound(src, W.usesound, 100, 1)
|
||||
if(do_after(user, 20*W.toolspeed, target = src))
|
||||
if(!istype(src, /turf/closed/wall/r_wall) || !W || d_state != BOLTS)
|
||||
return 1
|
||||
d_state = CUT_COVER
|
||||
update_icon()
|
||||
user << "<span class='notice'>The metal cover has been pried back into place.</span>"
|
||||
return 1
|
||||
|
||||
if(SUPPORT_RODS)
|
||||
if(istype(W, /obj/item/weapon/weldingtool))
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
if(WT.remove_fuel(0,user))
|
||||
user << "<span class='notice'>You begin slicing through the support rods...</span>"
|
||||
playsound(src, W.usesound, 100, 1)
|
||||
if(do_after(user, 100*W.toolspeed, target = src))
|
||||
if(!istype(src, /turf/closed/wall/r_wall) || !WT || !WT.isOn() || d_state != SUPPORT_RODS)
|
||||
return 1
|
||||
d_state = SHEATH
|
||||
update_icon()
|
||||
user << "<span class='notice'>You slice through the support rods.</span>"
|
||||
return 1
|
||||
|
||||
if(istype(W, /obj/item/weapon/gun/energy/plasmacutter))
|
||||
user << "<span class='notice'>You begin slicing through the support rods...</span>"
|
||||
playsound(src, 'sound/items/Welder.ogg', 100, 1)
|
||||
if(do_after(user, 70*W.toolspeed, target = src))
|
||||
if(!istype(src, /turf/closed/wall/r_wall) || !W || d_state != SUPPORT_RODS)
|
||||
return 1
|
||||
d_state = SHEATH
|
||||
update_icon()
|
||||
user << "<span class='notice'>You slice through the support rods.</span>"
|
||||
return 1
|
||||
|
||||
if(istype(W, /obj/item/weapon/wrench))
|
||||
user << "<span class='notice'>You start tightening the bolts which secure the support rods to their frame...</span>"
|
||||
playsound(src, W.usesound, 100, 1)
|
||||
if(do_after(user, 40*W.toolspeed, target = src))
|
||||
if(!istype(src, /turf/closed/wall/r_wall) || !W || d_state != SUPPORT_RODS)
|
||||
return 1
|
||||
d_state = BOLTS
|
||||
update_icon()
|
||||
user << "<span class='notice'>You tighten the bolts anchoring the support rods.</span>"
|
||||
return 1
|
||||
|
||||
if(SHEATH)
|
||||
if(istype(W, /obj/item/weapon/crowbar))
|
||||
user << "<span class='notice'>You struggle to pry off the outer sheath...</span>"
|
||||
playsound(src, W.usesound, 100, 1)
|
||||
if(do_after(user, 100*W.toolspeed, target = src))
|
||||
if(!istype(src, /turf/closed/wall/r_wall) || !W || d_state != SHEATH)
|
||||
return 1
|
||||
user << "<span class='notice'>You pry off the outer sheath.</span>"
|
||||
dismantle_wall()
|
||||
return 1
|
||||
|
||||
if(istype(W, /obj/item/weapon/weldingtool))
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
if(WT.remove_fuel(0,user))
|
||||
user << "<span class='notice'>You begin welding the support rods back together...</span>"
|
||||
playsound(src, WT.usesound, 100, 1)
|
||||
if(do_after(user, 100*WT.toolspeed, target = src))
|
||||
if(!istype(src, /turf/closed/wall/r_wall) || !WT || !WT.isOn() || d_state != SHEATH)
|
||||
return 1
|
||||
d_state = SUPPORT_RODS
|
||||
update_icon()
|
||||
user << "<span class='notice'>You weld the support rods back together.</span>"
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/turf/closed/wall/r_wall/proc/update_icon()
|
||||
if(d_state)
|
||||
smooth = SMOOTH_FALSE
|
||||
clear_smooth_overlays()
|
||||
icon_state = "r_wall-[d_state]"
|
||||
else
|
||||
smooth = SMOOTH_TRUE
|
||||
queue_smooth_neighbors(src)
|
||||
icon_state = "r_wall"
|
||||
|
||||
/turf/closed/wall/r_wall/singularity_pull(S, current_size)
|
||||
if(current_size >= STAGE_FIVE)
|
||||
if(prob(30))
|
||||
dismantle_wall()
|
||||
@@ -0,0 +1,67 @@
|
||||
|
||||
|
||||
/turf/closed/wall/shuttle
|
||||
name = "wall"
|
||||
icon = 'icons/turf/shuttle.dmi'
|
||||
icon_state = "wall"
|
||||
sheet_type = /obj/item/stack/sheet/mineral/titanium
|
||||
smooth = SMOOTH_FALSE
|
||||
|
||||
/turf/closed/wall/shuttle/copyTurf(turf/T)
|
||||
. = ..()
|
||||
T.transform = transform
|
||||
|
||||
/turf/closed/wall/shuttle/survival
|
||||
name = "pod wall"
|
||||
desc = "An easily-compressable wall used for temporary shelter."
|
||||
icon = 'icons/turf/walls/survival_pod_walls.dmi'
|
||||
icon_state = "smooth"
|
||||
smooth = SMOOTH_MORE|SMOOTH_DIAGONAL
|
||||
canSmoothWith = list(/turf/closed/wall/shuttle/survival, /obj/machinery/door/airlock/survival_pod, /obj/structure/window/shuttle/survival_pod, /obj/structure/shuttle/engine)
|
||||
|
||||
/turf/closed/wall/shuttle/survival/nodiagonal
|
||||
smooth = SMOOTH_MORE
|
||||
|
||||
/turf/closed/wall/shuttle/survival/pod
|
||||
canSmoothWith = list(/turf/closed/wall/shuttle/survival, /obj/machinery/door/airlock, /obj/structure/window/fulltile, /obj/structure/window/reinforced/fulltile, /obj/structure/window/reinforced/tinted/fulltile, /obj/structure/window/shuttle, /obj/structure/shuttle/engine)
|
||||
|
||||
|
||||
/turf/closed/wall/shuttle/syndie
|
||||
icon_state = "wall3"
|
||||
sheet_type = /obj/item/stack/sheet/mineral/plastitanium
|
||||
|
||||
/turf/closed/wall/shuttle/smooth
|
||||
name = "wall"
|
||||
icon = 'icons/turf/walls/shuttle_wall.dmi'
|
||||
icon_state = "shuttle"
|
||||
sheet_type = /obj/item/stack/sheet/mineral/titanium
|
||||
smooth = SMOOTH_MORE|SMOOTH_DIAGONAL
|
||||
canSmoothWith = list(/turf/closed/wall/shuttle/smooth, /obj/structure/window/shuttle, /obj/structure/shuttle, /obj/machinery/door/airlock/glass, /obj/machinery/door/airlock/shuttle)
|
||||
|
||||
/turf/closed/wall/shuttle/smooth/nodiagonal
|
||||
smooth = SMOOTH_MORE
|
||||
icon_state = "shuttle_nd"
|
||||
|
||||
/turf/closed/wall/shuttle/smooth/overspace
|
||||
icon_state = "overspace"
|
||||
fixed_underlay = list("space"=1)
|
||||
|
||||
//sub-type to be used for interior shuttle walls
|
||||
//won't get an underlay of the destination turf on shuttle move
|
||||
/turf/closed/wall/shuttle/interior/copyTurf(turf/T)
|
||||
if(T.type != type)
|
||||
T.ChangeTurf(type)
|
||||
if(underlays.len)
|
||||
T.underlays = underlays
|
||||
if(T.icon_state != icon_state)
|
||||
T.icon_state = icon_state
|
||||
if(T.icon != icon)
|
||||
T.icon = icon
|
||||
if(color)
|
||||
T.atom_colours = atom_colours.Copy()
|
||||
T.update_atom_colour()
|
||||
if(T.dir != dir)
|
||||
T.setDir(dir)
|
||||
T.transform = transform
|
||||
return T
|
||||
|
||||
Reference in New Issue
Block a user