TG: Added Invisty's Emitter sprites.

Cleaned up part of the door code and moved some defines to their proper files.
Firelocks can now be welded open and now shows the welded overlay properly.
Borgs can now properly mess with door wiring. r2895
This commit is contained in:
Ren Erthilo
2012-03-27 05:50:15 +01:00
parent 06394fe66b
commit 5fabd286d1
11 changed files with 595 additions and 459 deletions
+1 -1
View File
@@ -318,7 +318,6 @@
#include "code\defines\obj\clothing.dm"
#include "code\defines\obj\computer.dm"
#include "code\defines\obj\decal.dm"
#include "code\defines\obj\door.dm"
#include "code\defines\obj\hydro.dm"
#include "code\defines\obj\machinery.dm"
#include "code\defines\obj\radio.dm"
@@ -548,6 +547,7 @@
#include "code\game\machinery\doors\firedoor.dm"
#include "code\game\machinery\doors\poddoor.dm"
#include "code\game\machinery\doors\shutters.dm"
#include "code\game\machinery\doors\unpowered.dm"
#include "code\game\machinery\doors\windowdoor.dm"
#include "code\game\machinery\embedded_controller\access_controller.dm"
#include "code\game\machinery\embedded_controller\airlock_controller.dm"
+273 -388
View File
@@ -1,195 +1,287 @@
/obj/machinery/door/Bumped(atom/AM)
if(p_open || operating) return
if(ismob(AM))
var/mob/M = AM
if(world.time - AM.last_bumped <= 60) return //NOTE do we really need that?
if(M.client && !M:handcuffed)
bumpopen(M)
else if(istype(AM, /obj/machinery/bot))
var/obj/machinery/bot/bot = AM
if(src.check_access(bot.botcard))
if(density)
open()
else if(istype(AM, /obj/effect/critter))
var/obj/effect/critter/critter = AM
if(critter.opensdoors) return
if(src.check_access_list(critter.access_list))
if(density)
open()
// else if(istype(AM, /obj/effect/alien/facehugger))
// if(src.check_access(null))
// if(density)
// open()
else if(istype(AM, /obj/mecha))
var/obj/mecha/mecha = AM
/obj/machinery/door
name = "Door"
desc = "It opens and closes."
icon = 'doorint.dmi'
icon_state = "door1"
opacity = 1
density = 1
layer = 2.7
anchored = 1
var/secondsElectrified = 0
var/visible = 1
var/p_open = 0
var/operating = 0
var/autoclose = 0
var/glass = 0
var/forcecrush = 0
var/holdopen = 0
proc/bumpopen(mob/user as mob)
proc/update_nearby_tiles(need_rebuild)
proc/requiresID() return 1
proc/animate(animation)
proc/open()
proc/close()
New()
..()
if(density)
if(mecha.occupant && (src.allowed(mecha.occupant) || src.check_access_list(mecha.operation_req_access)))
layer = 3.1 //Above most items if closed
else
layer = 2.7 //Under all objects if opened. 2.7 due to tables being at 2.6
update_nearby_tiles(need_rebuild=1)
return
Del()
update_nearby_tiles()
..()
return
Bumped(atom/AM)
if(p_open || operating) return
if(ismob(AM))
var/mob/M = AM
if(world.time - M.last_bumped <= 60) return
if(M.client && !M:handcuffed)
bumpopen(M)
return
if(istype(AM, /obj/machinery/bot))
var/obj/machinery/bot/bot = AM
if(src.check_access(bot.botcard))
if(density)
open()
return
if(istype(AM, /obj/effect/critter))
var/obj/effect/critter/critter = AM
if(critter.opensdoors) return
if(src.check_access_list(critter.access_list))
if(density)
open()
return
if(istype(AM, /obj/mecha))
var/obj/mecha/mecha = AM
if(density)
if(mecha.occupant && (src.allowed(mecha.occupant) || src.check_access_list(mecha.operation_req_access)))
open()
else
flick("door_deny", src)
return
return
CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
if(air_group) return 0
if(istype(mover) && mover.checkpass(PASSGLASS))
return !opacity
return !density
bumpopen(mob/user as mob)
if(operating) return
src.add_fingerprint(user)
if(!src.requiresID())
user = null
if(allowed(user) && density)
open()
else if(density)
flick("door_deny", src)
return
meteorhit(obj/M as obj)
src.open()
return
attack_ai(mob/user as mob)
return src.attack_hand(user)
attack_paw(mob/user as mob)
return src.attack_hand(user)
attack_hand(mob/user as mob)
return src.attackby(user, user)
attackby(obj/item/I as obj, mob/user as mob)
if(src.operating) return
src.add_fingerprint(user)
if(!src.requiresID())
user = null
if(src.density && (istype(I, /obj/item/weapon/card/emag)||istype(I, /obj/item/weapon/melee/energy/blade)))
flick("door_spark", src)
sleep(6)
open()
operating = -1
return 1
if(src.allowed(user))
if(src.density)
open()
else
flick("door_deny", src)
/obj/machinery/door/proc/bumpopen(mob/user as mob)
if (src.operating)
close()
return
if(src.density)
flick("door_deny", src)
return
//if(world.timeofday-last_used <= 10)
// return
src.add_fingerprint(user)
if (!src.requiresID())
//don't care who they are or what they have, act as if they're NOTHING
user = null
if (src.allowed(user))
if (src.density)
//last_used = world.timeofday
blob_act()
if(prob(40))
del(src)
return
emp_act(severity)
if(prob(20/severity) && (istype(src,/obj/machinery/door/airlock) || istype(src,/obj/machinery/door/window)) )
open()
else if (src.density)
flick("door_deny", src)
return
if(prob(40/severity))
if(secondsElectrified == 0)
secondsElectrified = -1
spawn(300)
secondsElectrified = 0
..()
/obj/machinery/door/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
if(air_group) return 0
if(istype(mover) && mover.checkpass(PASSGLASS))
return !opacity
return !density
/obj/machinery/door/proc/update_nearby_tiles(need_rebuild)
if(!air_master) return 0
var/turf/simulated/source = loc
var/turf/simulated/north = get_step(source,NORTH)
var/turf/simulated/south = get_step(source,SOUTH)
var/turf/simulated/east = get_step(source,EAST)
var/turf/simulated/west = get_step(source,WEST)
if(need_rebuild)
if(istype(source)) //Rebuild/update nearby group geometry
if(source.parent)
air_master.groups_to_rebuild += source.parent
else
air_master.tiles_to_update += source
if(istype(north))
if(north.parent)
air_master.groups_to_rebuild += north.parent
else
air_master.tiles_to_update += north
if(istype(south))
if(south.parent)
air_master.groups_to_rebuild += south.parent
else
air_master.tiles_to_update += south
if(istype(east))
if(east.parent)
air_master.groups_to_rebuild += east.parent
else
air_master.tiles_to_update += east
if(istype(west))
if(west.parent)
air_master.groups_to_rebuild += west.parent
else
air_master.tiles_to_update += west
else
if(istype(source)) air_master.tiles_to_update += source
if(istype(north)) air_master.tiles_to_update += north
if(istype(south)) air_master.tiles_to_update += south
if(istype(east)) air_master.tiles_to_update += east
if(istype(west)) air_master.tiles_to_update += west
return 1
/obj/machinery/door/New()
..()
if(density)
layer = 3.1 //Above most items if closed
else
layer = 2.7 //Under all objects if opened. 2.7 due to tables being at 2.6
update_nearby_tiles(need_rebuild=1)
/obj/machinery/door/Del()
update_nearby_tiles()
..()
/obj/machinery/door/meteorhit(obj/M as obj)
src.open()
return
/obj/machinery/door/attack_ai(mob/user as mob)
return src.attack_hand(user)
/obj/machinery/door/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/machinery/door/attack_hand(mob/user as mob)
return src.attackby(user, user)
/obj/machinery/door/proc/requiresID()
return 1
/obj/machinery/door/attackby(obj/item/I as obj, mob/user as mob)
if(istype(I, /obj/item/device/detective_scanner))
return ..()
if (src.operating || isrobot(user))
return
src.add_fingerprint(user)
if (!src.requiresID())
//don't care who they are or what they have, act as if they're NOTHING
user = null
if (src.density && (istype(I, /obj/item/weapon/card/emag) ||istype(I, /obj/item/weapon/melee/energy/blade)))
if(istype(I, /obj/item/weapon/card/emag))
var/obj/item/weapon/card/emag/E = I
if(E.uses)
E.uses--
else
return
src.operating = -1
if(istype(I, /obj/item/weapon/melee/energy/blade))
if(istype(src, /obj/machinery/door/airlock))
var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
spark_system.set_up(5, 0, src.loc)
spark_system.start()
playsound(src.loc, 'blade1.ogg', 50, 1)
playsound(src.loc, "sparks", 50, 1)
for(var/mob/O in viewers(user, 3))
O.show_message(text("\blue The door has been sliced open by [] with an energy blade!", user), 1, text("\red You hear metal being sliced and sparks flying."), 2)
if((!src:arePowerSystemsOn()) || (stat & NOPOWER) || src:isWireCut(AIRLOCK_WIRE_DOOR_BOLTS))
var/obj/structure/door_assembly/temp
var/failsafe=0
switch(src:doortype)
if(0) temp=new/obj/structure/door_assembly/door_assembly_0(src.loc)
if(1) temp=new/obj/structure/door_assembly/door_assembly_com(src.loc)
if(2) temp=new/obj/structure/door_assembly/door_assembly_sec(src.loc)
if(3) temp=new/obj/structure/door_assembly/door_assembly_eng(src.loc)
if(4) temp=new/obj/structure/door_assembly/door_assembly_med(src.loc)
if(5) temp=new/obj/structure/door_assembly/door_assembly_mai(src.loc)
if(6) temp=new/obj/structure/door_assembly/door_assembly_ext(src.loc)
if(7) temp=new/obj/structure/door_assembly/door_assembly_g(src.loc)
else failsafe=1
if(!failsafe)
temp.anchored=0
step_away(temp,usr,15)
else del(temp)
ex_act(severity)
switch(severity)
if(1.0)
del(src)
if(2.0)
if(prob(25))
del(src)
return
else
src:welded = 0
src:locked = 0
update_icon()
flick("door_spark", src)
sleep(6)
open()
return 1
if (src.allowed(user))
if (src.density)
open()
if(3.0)
if(prob(80))
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(2, 1, src)
s.start()
return
update_icon()
if(density)
icon_state = "door1"
else
close()
else if (src.density)
flick("door_deny", src)
icon_state = "door0"
return
animate(animation)
switch(animation)
if("opening")
if(p_open)
flick("o_doorc0", src)
else
flick("doorc0", src)
if("closing")
if(p_open)
flick("o_doorc1", src)
else
flick("doorc1", src)
if("deny")
flick("door_deny", src)
return
open()
if(!density) return 1
if(operating > 0) return
if(!ticker) return 0
if(!operating) operating = 1
animate("opening")
sleep(10)
src.layer = 2.7
src.density = 0
update_icon()
src.sd_SetOpacity(0)
update_nearby_tiles()
if(operating) operating = 0
if(autoclose)
spawn(150)
autoclose()
return 1
close()
if(density) return 1
if(operating) return
operating = 1
animate("closing")
src.density = 1
src.layer = 3.1
sleep(10)
update_icon()
if(visible && !glass)
src.sd_SetOpacity(1)
operating = 0
update_nearby_tiles()
return
update_nearby_tiles(need_rebuild)
if(!air_master) return 0
var/turf/simulated/source = loc
var/turf/simulated/north = get_step(source,NORTH)
var/turf/simulated/south = get_step(source,SOUTH)
var/turf/simulated/east = get_step(source,EAST)
var/turf/simulated/west = get_step(source,WEST)
if(need_rebuild)
if(istype(source)) //Rebuild/update nearby group geometry
if(source.parent)
air_master.groups_to_rebuild += source.parent
else
air_master.tiles_to_update += source
if(istype(north))
if(north.parent)
air_master.groups_to_rebuild += north.parent
else
air_master.tiles_to_update += north
if(istype(south))
if(south.parent)
air_master.groups_to_rebuild += south.parent
else
air_master.tiles_to_update += south
if(istype(east))
if(east.parent)
air_master.groups_to_rebuild += east.parent
else
air_master.tiles_to_update += east
if(istype(west))
if(west.parent)
air_master.groups_to_rebuild += west.parent
else
air_master.tiles_to_update += west
else
if(istype(source)) air_master.tiles_to_update += source
if(istype(north)) air_master.tiles_to_update += north
if(istype(south)) air_master.tiles_to_update += south
if(istype(east)) air_master.tiles_to_update += east
if(istype(west)) air_master.tiles_to_update += west
return 1
/obj/machinery/door/proc/autoclose()
var/obj/machinery/door/airlock/A = src
if(!A.density && !A.operating && !A.locked && !A.welded)
close()
return
/*
/obj/machinery/door/airlock/proc/ion_act()
if(src.z == 1 && src.density)
if(length(req_access) > 0 && !(12 in req_access))
@@ -216,211 +308,4 @@
else
close()
return
/obj/machinery/door/blob_act()
if(prob(40))
del(src)
/obj/machinery/door/emp_act(severity)
if(prob(20/severity) && (istype(src,/obj/machinery/door/airlock) || istype(src,/obj/machinery/door/window)) )
open()
if(prob(40/severity))
if(secondsElectrified == 0)
secondsElectrified = -1
spawn(300)
secondsElectrified = 0
..()
/obj/machinery/door/ex_act(severity)
switch(severity)
if(1.0)
del(src)
if(2.0)
if(prob(25))
del(src)
if(3.0)
if(prob(80))
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(2, 1, src)
s.start()
/obj/machinery/door/update_icon()
if(density)
icon_state = "door1"
else
icon_state = "door0"
return
/obj/machinery/door/proc/animate(animation)
switch(animation)
if("opening")
if(p_open)
flick("o_doorc0", src)
else
flick("doorc0", src)
if("closing")
if(p_open)
flick("o_doorc1", src)
else
flick("doorc1", src)
if("deny")
flick("door_deny", src)
return
/obj/machinery/door/proc/open()
if(!density)
return 1
if (src.operating == 1) //doors can still open when emag-disabled
return
if (!ticker)
return 0
if(!src.operating) //in case of emag
src.operating = 1
animate("opening")
sleep(10)
src.layer = 2.7
src.density = 0
update_icon()
src.sd_SetOpacity(0)
update_nearby_tiles()
if(operating == 1) //emag again
src.operating = 0
if(autoclose)
spawn(150)
autoclose()
return 1
/obj/machinery/door/proc/close()
if(density)
return 1
if (src.operating)
return
src.operating = 1
var/X = src:x
var/Y = src:y
var/Z = src:z
var/held = 1
if(src.holdopen && !forcecrush)
while(held == 1 && holdopen && !forcecrush) //If it is no longer hold open, it should close.
sleep(held? 10:40)
held = 0
var/list/objects = locate(X,Y,Z)
for(var/obj/T in objects)
if(!istype(T,/obj/machinery/door) && !(istype(T,/obj/machinery) && T.anchored == 1) && !istype(T,/obj/structure/cable) && !istype(T,/obj/structure/disposalpipe) && !(T.loc == get_turf(src)))
held = 1
for(var/mob/living/T in objects) //Geez, ghosts were OP.
held = 1
animate("closing")
src.density = 1
spawn(4)
if(!istype(src, /obj/machinery/door/window))
for(var/mob/living/L in src.loc) // Crush mobs and move them out of the way
if(src.forcecrush) // Save an AI, crush a limb
var/limbname = pick("l_arm", "r_arm", "l_hand","r_hand", "l_foot", "r_foot")
var/limbdisplay
for(var/organ in L:organs)
var/datum/organ/external/temp = L:organs["[organ]"]
if (istype(temp, /datum/organ/external) && temp.name == limbname)
limbdisplay = temp.display_name // Take the name for down below
temp.take_damage(rand(50,80), 0) //OH GOD IT HURTS
break
L << "\red The airlock crushes your [limbdisplay]!"
for(var/mob/O in viewers(L, null))
if(O == L)
continue
O.show_message("\red The airlock crushes [L.name]'s [limbdisplay]!", 1)
sleep(rand(2,8))
L << "\red The airlock forces you out of the way!" //Lucky you
for(var/mob/O in viewers(L, null))
O.show_message("\red The airlock pushes [L.name] out of the way!", 1)
var/list/lst = list(NORTH,SOUTH,EAST,WEST)
var/turf/T = get_random_turf(L, lst)
if(T)
L.loc = T
if(!src.forcecrush)
for(var/obj/item/I in src.loc) // Move items out of the way
if(!I.anchored)
var/list/lst = list(NORTH,SOUTH,EAST,WEST)
var/turf/T = get_random_turf(I, lst)
if(T)
I.loc = T
sleep(6)
update_icon()
if(src.visible && (!src.glass))
src.sd_SetOpacity(1)
if(operating == 1)
operating = 0
update_nearby_tiles()
/obj/machinery/door/proc/autoclose()
var/obj/machinery/door/airlock/A = src
if ((!A.density) && !( A.operating ) && !(A.locked) && !( A.welded ))
close()
else return
/////////////////////////////////////////////////// Unpowered doors
/obj/machinery/door/unpowered/Bumped(atom/AM)
if(p_open || operating) return
if (src.locked)
return
if(ismob(AM))
var/mob/M = AM
if(world.time - AM.last_bumped <= 60) return
if(M.client && !M:handcuffed)
bumpopen(M)
else if(istype(AM, /obj/machinery/bot))
var/obj/machinery/bot/bot = AM
if(src.check_access(bot.botcard))
if(density)
open()
// else if(istype(AM, /obj/effect/alien/facehugger))
// if(src.check_access(null))
// if(density)
// open()
/obj/machinery/door/unpowered
autoclose = 0
var/locked = 0
/obj/machinery/door/unpowered/attack_ai(mob/user as mob)
return src.attack_hand(user)
/obj/machinery/door/unpowered/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/machinery/door/unpowered/attack_hand(mob/user as mob)
return src.attackby(null, user)
/obj/machinery/door/unpowered/attackby(obj/item/I as obj, mob/user as mob)
if (src.operating)
return
if (src.locked)
return
src.add_fingerprint(user)
if (src.allowed(user))
if (src.density)
open()
else
close()
return
/obj/machinery/door/unpowered/shuttle
icon = 'shuttle.dmi'
name = "door"
icon_state = "door1"
opacity = 1
density = 1
*/
+79 -59
View File
@@ -1,73 +1,95 @@
/var/const/OPEN = 1
/var/const/CLOSED = 2
/obj/machinery/door/firedoor/Bumped(atom/AM)
if(p_open || operating)
return
if(!density)
return ..()
else
/obj/machinery/door/firedoor
name = "Firelock"
desc = "Apply crowbar"
icon = 'Doorfire.dmi'
icon_state = "door_open"
var/blocked = 0
opacity = 0
density = 0
var/nextstate = null
Bumped(atom/AM)
if(p_open || operating) return
if(!density) return ..()
return 0
/obj/machinery/door/firedoor/power_change()
if( powered(ENVIRON) )
stat &= ~NOPOWER
else
stat |= NOPOWER
power_change()
if(powered(ENVIRON))
stat &= ~NOPOWER
else
stat |= NOPOWER
return
/obj/machinery/door/firedoor/attackby(obj/item/weapon/C as obj, mob/user as mob)
src.add_fingerprint(user)
if ((istype(C, /obj/item/weapon/weldingtool) && !( src.operating ) && src.density))
var/obj/item/weapon/weldingtool/W = C
if(W.remove_fuel(0, user))
src.blocked = !src.blocked
user << text("\red You [blocked?"welded":"unwelded"] the [src]")
update_icon()
return
if (istype(C, /obj/item/weapon/crowbar) || (istype(C,/obj/item/weapon/fireaxe) && C.wielded == 1) )
if (!src.blocked && !src.operating)
attackby(obj/item/weapon/C as obj, mob/user as mob)
src.add_fingerprint(user)
if(operating) return//Already doing something.
if(istype(C, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/W = C
if(W.remove_fuel(0, user))
src.blocked = !src.blocked
user << text("\red You [blocked?"welded":"unwelded"] the [src]")
update_icon()
return
if (istype(C, /obj/item/weapon/crowbar) || (istype(C,/obj/item/weapon/fireaxe) && C.wielded == 1))
if(blocked || operating) return
if(src.density)
spawn( 0 )
src.operating = 1
animate("opening")
sleep(15)
layer = 2.7
src.density = 0
update_icon()
src.sd_SetOpacity(0)
src.operating = 0
spawn(0)
open()
return
else //close it up again
spawn( 0 )
src.operating = 1
animate("closing")
src.density = 1
layer = 3.1
sleep(15)
update_icon()
src.sd_SetOpacity(1)
src.operating = 0
spawn(0)
close()
return
return
/obj/machinery/door/firedoor/process()
if(src.operating)
return
if(src.nextstate)
if(src.nextstate == OPEN && src.density)
spawn()
src.open()
else if(src.nextstate == CLOSED && !src.density)
spawn()
src.close()
src.nextstate = null
process()
if(operating || stat & NOPOWER || !nextstate) return
switch(nextstate)
if(OPEN)
spawn()
open()
if(CLOSED)
spawn()
close()
nextstate = null
return
animate(animation)
switch(animation)
if("opening")
flick("door_opening", src)
if("closing")
flick("door_closing", src)
return
update_icon()
overlays = null
if(density)
icon_state = "door_closed"
if(blocked)
overlays += "welded"
else
icon_state = "door_open"
if(blocked)
overlays += "welded_open"
return
//border_only fire doors are special when it comes to air groups
/obj/machinery/door/firedoor/border_only
CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
if(air_group)
var/direction = get_dir(src,target)
@@ -78,9 +100,9 @@
return (dir != direction)
else
return 0
return 1
update_nearby_tiles(need_rebuild)
if(!air_master) return 0
@@ -98,9 +120,7 @@
air_master.groups_to_rebuild += destination.parent
else
air_master.tiles_to_update += destination
else
if(istype(source)) air_master.tiles_to_update += source
if(istype(destination)) air_master.tiles_to_update += destination
return 1
+111 -7
View File
@@ -1,9 +1,10 @@
//cael - added this for the lockdown computer
/obj/machinery/door/poddoor/Topic(href, href_list)
if(href_list["close"])
close()
if(href_list["open"])
open()
/obj/machinery/door/poddoor
name = "Podlock"
desc = "A type of powerful blast door."
icon = 'rapid_pdoor.dmi'
icon_state = "pdoor1"
var/id = 1.0
var/networkTag = ""
/obj/machinery/door/poddoor/Bumped(atom/AM)
if(!density)
@@ -270,4 +271,107 @@
sleep(10)
src.operating = 0
return
return
/obj/machinery/door/poddoor/two_tile_hor
var/obj/machinery/door/poddoor/filler_object/f1
var/obj/machinery/door/poddoor/filler_object/f2
icon = '1x2blast_hor.dmi'
New()
..()
f1 = new/obj/machinery/door/poddoor/filler_object (src.loc)
f2 = new/obj/machinery/door/poddoor/filler_object (get_step(src,EAST))
f1.density = density
f2.density = density
f1.sd_SetOpacity(opacity)
f2.sd_SetOpacity(opacity)
Del()
del f1
del f2
..()
/obj/machinery/door/poddoor/two_tile_ver
var/obj/machinery/door/poddoor/filler_object/f1
var/obj/machinery/door/poddoor/filler_object/f2
icon = '1x2blast_vert.dmi'
New()
..()
f1 = new/obj/machinery/door/poddoor/filler_object (src.loc)
f2 = new/obj/machinery/door/poddoor/filler_object (get_step(src,NORTH))
f1.density = density
f2.density = density
f1.sd_SetOpacity(opacity)
f2.sd_SetOpacity(opacity)
Del()
del f1
del f2
..()
/obj/machinery/door/poddoor/four_tile_hor
var/obj/machinery/door/poddoor/filler_object/f1
var/obj/machinery/door/poddoor/filler_object/f2
var/obj/machinery/door/poddoor/filler_object/f3
var/obj/machinery/door/poddoor/filler_object/f4
icon = '1x4blast_hor.dmi'
New()
..()
f1 = new/obj/machinery/door/poddoor/filler_object (src.loc)
f2 = new/obj/machinery/door/poddoor/filler_object (get_step(f1,EAST))
f3 = new/obj/machinery/door/poddoor/filler_object (get_step(f2,EAST))
f4 = new/obj/machinery/door/poddoor/filler_object (get_step(f3,EAST))
f1.density = density
f2.density = density
f3.density = density
f4.density = density
f1.sd_SetOpacity(opacity)
f2.sd_SetOpacity(opacity)
f4.sd_SetOpacity(opacity)
f3.sd_SetOpacity(opacity)
Del()
del f1
del f2
del f3
del f4
..()
/obj/machinery/door/poddoor/four_tile_ver
var/obj/machinery/door/poddoor/filler_object/f1
var/obj/machinery/door/poddoor/filler_object/f2
var/obj/machinery/door/poddoor/filler_object/f3
var/obj/machinery/door/poddoor/filler_object/f4
icon = '1x4blast_vert.dmi'
New()
..()
f1 = new/obj/machinery/door/poddoor/filler_object (src.loc)
f2 = new/obj/machinery/door/poddoor/filler_object (get_step(f1,NORTH))
f3 = new/obj/machinery/door/poddoor/filler_object (get_step(f2,NORTH))
f4 = new/obj/machinery/door/poddoor/filler_object (get_step(f3,NORTH))
f1.density = density
f2.density = density
f3.density = density
f4.density = density
f1.sd_SetOpacity(opacity)
f2.sd_SetOpacity(opacity)
f4.sd_SetOpacity(opacity)
f3.sd_SetOpacity(opacity)
Del()
del f1
del f2
del f3
del f4
..()
/obj/machinery/door/poddoor/filler_object
name = ""
icon_state = ""
+25
View File
@@ -0,0 +1,25 @@
/obj/machinery/door/unpowered
autoclose = 0
var/locked = 0
Bumped(atom/AM)
if(src.locked) return
..()
return
attackby(obj/item/I as obj, mob/user as mob)
if(istype(I, /obj/item/weapon/card/emag)||istype(I, /obj/item/weapon/melee/energy/blade)) return
if(src.locked) return
..()
return
/obj/machinery/door/unpowered/shuttle
icon = 'shuttle.dmi'
name = "door"
icon_state = "door1"
opacity = 1
density = 1
+89 -1
View File
@@ -1,3 +1,14 @@
/obj/machinery/door/window
name = "interior door"
desc = "A door made from a window, yet it can not break nor be depowered."
icon = 'windoor.dmi'
icon_state = "left"
var/base_state = "left"
visible = 0.0
flags = ON_BORDER
opacity = 0
/obj/machinery/door/window/update_nearby_tiles(need_rebuild)
if(!air_master) return 0
@@ -147,4 +158,81 @@
close()
else if (src.density)
flick(text("[]deny", src.base_state), src)
return
return
/obj/machinery/door/window/brigdoor
name = "Brig Door"
icon = 'windoor.dmi'
icon_state = "leftsecure"
base_state = "leftsecure"
req_access = list(access_security)
var/id = null
/obj/machinery/door/window/northleft
dir = NORTH
/obj/machinery/door/window/eastleft
dir = EAST
/obj/machinery/door/window/westleft
dir = WEST
/obj/machinery/door/window/southleft
dir = SOUTH
/obj/machinery/door/window/northright
dir = NORTH
icon_state = "right"
base_state = "right"
/obj/machinery/door/window/eastright
dir = EAST
icon_state = "right"
base_state = "right"
/obj/machinery/door/window/westright
dir = WEST
icon_state = "right"
base_state = "right"
/obj/machinery/door/window/southright
dir = SOUTH
icon_state = "right"
base_state = "right"
/obj/machinery/door/window/brigdoor/northleft
dir = NORTH
/obj/machinery/door/window/brigdoor/eastleft
dir = EAST
/obj/machinery/door/window/brigdoor/westleft
dir = WEST
/obj/machinery/door/window/brigdoor/southleft
dir = SOUTH
/obj/machinery/door/window/brigdoor/northright
dir = NORTH
icon_state = "rightsecure"
base_state = "rightsecure"
/obj/machinery/door/window/brigdoor/eastright
dir = EAST
icon_state = "rightsecure"
base_state = "rightsecure"
/obj/machinery/door/window/brigdoor/westright
dir = WEST
icon_state = "rightsecure"
base_state = "rightsecure"
/obj/machinery/door/window/brigdoor/southright
dir = SOUTH
icon_state = "rightsecure"
base_state = "rightsecure"
+3 -3
View File
@@ -2,7 +2,7 @@
name = "Emitter"
desc = "A heavy duty industrial laser"
icon = 'singularity.dmi'
icon_state = "Emitter"
icon_state = "emitter"
anchored = 0
density = 1
req_access = list(access_engine)
@@ -39,9 +39,9 @@
update_icon()
if (active && !(stat & (NOPOWER|BROKEN)))
icon_state = "Emitter +a"
icon_state = "emitter_+a"
else
icon_state = "Emitter"
icon_state = "emitter"
attack_hand(mob/user as mob)
@@ -10,6 +10,11 @@
origin_tech = "combat=3;magnets=2"
projectile_type = "/obj/item/projectile/beam"
/obj/item/weapon/gun/energy/laser/practice
name = "practice laser gun"
desc = "A modified version of the basic laser gun, this one fires less concentrated energy bolts designed for target practice."
projectile_type = "/obj/item/projectile/beam/practice"
obj/item/weapon/gun/energy/laser/retro
name ="\improper Retro Laser"
@@ -47,6 +47,15 @@
spawn(0)
del(src)
/obj/item/projectile/beam/practice
name = "laser"
icon_state = "laser"
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
damage = 0
damage_type = BURN
flag = "laser"
eyeblur = 2
/obj/item/projectile/beam/heavylaser
name = "\improper Heavy Laser"
icon_state = "heavylaser"
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 33 KiB