Merge pull request #341 from caelaislinn/master

antiqua engineering, lockdown computers, camera monitor circuitboards, minor changes
This commit is contained in:
Albert Iordache
2012-02-01 03:21:28 -08:00
19 changed files with 1537 additions and 685 deletions
+2
View File
@@ -451,6 +451,7 @@
#include "code\game\machinery\autolathe.dm"
#include "code\game\machinery\biogenerator.dm"
#include "code\game\machinery\camera.dm"
#include "code\game\machinery\camera_monitor.dm"
#include "code\game\machinery\cell_charger.dm"
#include "code\game\machinery\cloning.dm"
#include "code\game\machinery\constructable_frame.dm"
@@ -510,6 +511,7 @@
#include "code\game\machinery\computer\crew.dm"
#include "code\game\machinery\computer\explosive.dm"
#include "code\game\machinery\computer\hologram.dm"
#include "code\game\machinery\computer\lockdown.dm"
#include "code\game\machinery\computer\medical.dm"
#include "code\game\machinery\computer\Operating.dm"
#include "code\game\machinery\computer\power.dm"
+68 -7
View File
@@ -31,6 +31,55 @@
/obj/multiz/ladder/attack_hand(var/mob/M)
M.Move(locate(src.x, src.y, targetZ()))
/obj/multiz/ladder/hatch
icon_state = "hatchdown"
name = "hatch"
desc = "A Hatch. You climb down it, and it will automatically seal against pressure loss behind you."
/obj/multiz/ladder/hatch/New()
..()
if(istop == 1)
icon_state = "hatchdown"
/obj/multiz/ladder/hatch/hatchbottom
icon_state = "hatchdown"
/obj/multiz/ladder/hatch/hatchbottom/New()
istop = 0
..()
/obj/multiz/ladder/hatch/attack_hand(var/mob/M)
var/obj/multiz/ladder/hatch/Htop
var/obj/multiz/ladder/hatch/Hbottom
if(!istop && src.z > 1)
Htop = locate(/obj/multiz/ladder/hatch, locate(src.x, src.y, src.z-1))
Hbottom = src
else
Hbottom = locate(/obj/multiz/ladder/hatch, locate(src.x, src.y, src.z + 1))
Htop = src
if(!Htop)
//world << "Htop == null"
return
if(!Hbottom)
//world << "Hbottom == null"
return
if(Htop.icon_state == "hatchdown")
flick("hatchdown-open",Htop)
Hbottom.overlays += "green-ladderlight"
spawn(7)
if(M.z == src.z && get_dist(src,M) <= 1)
M.Move(locate(src.x, src.y, targetZ()))
flick("hatchdown-close",Htop)
Hbottom.overlays -= "green-ladderlight"
Hbottom.overlays += "red-ladderlight"
spawn(7)
Htop.icon_state = "hatchdown"
Hbottom.overlays -= "red-ladderlight"
/*
/obj/multiz/ladder/blob_act()
var/newblob = 1
@@ -81,7 +130,7 @@
/turf/simulated/floor/open
name = "open space"
intact = 0
icon_state = "open"
icon_state = "black"
pathweight = 100000 //Seriously, don't try and path over this one numbnuts
var/icon/darkoverlays = null
var/turf/floorbelow
@@ -115,10 +164,22 @@
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()
if (istype(AM, /mob/living/carbon/human))
var/mob/living/carbon/human/H = AM
var/damage = rand(5,15)
H.apply_damage(2*damage, BRUTE, "head")
H.apply_damage(2*damage, BRUTE, "chest")
H.apply_damage(0.5*damage, BRUTE, "l_leg")
H.apply_damage(0.5*damage, BRUTE, "r_leg")
H.apply_damage(0.5*damage, BRUTE, "l_arm")
H.apply_damage(0.5*damage, BRUTE, "r_arm")
var/obj/effect/decal/cleanable/blood/B = new(src.loc)
B.blood_DNA = H.dna.unique_enzymes
B.blood_type = H.b_type
H:weakened = max(H:weakened,2)
H:updatehealth()
return ..()
attackby()
@@ -137,8 +198,8 @@
I.layer = TURF_LAYER + 0.2
src.addoverlay(I)*/
var/maxZ = 1
var/minZ = 1
var/maxZ = 6
var/minZ = 2
// 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)
Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 17 KiB

+57 -5
View File
@@ -100,6 +100,8 @@ proc/process_ghost_teleport_locs()
/*-----------------------------------------------------------------------------*/
/area/engine/
name = "Engineering"
icon_state = "engine"
/area/turret_protected/
@@ -671,23 +673,73 @@ proc/process_ghost_teleport_locs()
//Engineering
/area/engine
engineering
engine_smes
name = "Engineering SMES"
icon_state = "engine_smes"
requires_power = 0//This area only covers the batteries and they deal with their own power
engineering
name = "Engineering"
icon_state = "engine"
particle_accelerator
name = "Particle Accelerator"
icon_state = "engine_smes" // not really, but it's some way to distinguish
icon_state = "engine_pa"
chiefs_office
name = "Chief Engineers office"
icon_state = "engine_ce"
//new engine areas
control
name = "Engineering Control"
icon_state = "engine_control"
port
name = "Engineering Port"
icon_state = "engine_port"
starboard
name = "Engineering Starboard"
icon_state = "engine_starboard"
fore
name = "Engineering Fore"
icon_state = "engine_fore"
aft
name = "Engineering Aft"
icon_state = "engine_aft"
locker
name = "Engineering Locker Room"
icon_state = "engine_locker"
construction_storage
name = "Engineering Construction Storage"
icon_state = "engine_construction"
atmos_storage
name = "Engineering Atmos Storage"
icon_state = "engine_atmos"
electrical_storage
name = "Engineering Electrical Storage"
icon_state = "engine_electrical"
secure_storage
name = "Engineering Secure Storage"
icon_state = "engine_secure"
foyer
name = "Engineering Foyer"
icon_state = "engine_foyer"
breakroom
name = "Engineering Break Room"
icon_state = "engine_breakroom"
core
name = "Engineering Core"
icon_state = "engine_core"
//Solars
+17
View File
@@ -237,6 +237,23 @@
network = "MINE"
circuit = "/obj/item/weapon/circuitboard/mining"
/obj/machinery/computer/security/engineering
name = "Engineering Cameras"
desc = "Used to access the various cameras in engineering."
icon_state = "engineeringcameras"
network = "ENGINEERING"
circuit = "/obj/item/weapon/circuitboard/engineeringcam"
/obj/machinery/computer/lockdown
/*
name = "Lockdown Control"
desc = "Used to control blast doors."
icon_state = "lockdown"
circuit = "/obj/item/weapon/circuitboard/lockdown"
var/connectedDoorIds[0]
var/department = ""
var/connected_doors[0][0]
*/
/obj/machinery/computer/crew
name = "Crew monitoring computer"
+1
View File
@@ -39,6 +39,7 @@
icon = 'rapid_pdoor.dmi'
icon_state = "pdoor1"
var/id = 1.0
var/networkTag = ""
/obj/machinery/door/poddoor/two_tile_hor
var/obj/machinery/door/poddoor/filler_object/f1
+7
View File
@@ -337,6 +337,13 @@
icon_state = "yellow"
item_state = "toolbox_yellow"
/obj/item/weapon/storage/PCMBox
name = "spare power control modules"
desc = "A box of spare power control module circuit boards."
icon = 'storage.dmi'
icon_state = "circuit"
item_state = "syringe_kit"
/obj/item/weapon/storage/toolbox/syndicate
name = "Suspicious looking toolbox"
icon_state = "syndicate"
+8
View File
@@ -31,6 +31,14 @@
containertype = "/obj/structure/closet/crate"
containername = "Empty Box crate"
/datum/supply_packs/pcm
name = "Power Control Module supplies"
contains = list("/obj/item/weapon/storage/PCMBox",
"/obj/item/weapon/storage/PCMBox")
cost = 25
containertype = "/obj/structure/closet/crate"
containername = "Power Control Module crate"
/datum/supply_packs/body_bags
name = "Body Bag supplies"
contains = list(
+108
View File
@@ -0,0 +1,108 @@
//the researchable camera circuit that can connect to any camera network
/obj/item/weapon/circuitboard/camera
//name = "Circuit board (Camera)"
var/secured = 1
var/authorised = 0
var/possibleNets[0]
var/network = ""
build_path = 0
//when adding a new camera network, you should only need to update these two procs
New()
possibleNets["Engineering"] = access_engine
possibleNets["SS13"] = access_security
possibleNets["Outpost"] = access_mining
proc/updateBuildPath()
build_path = ""
if(authorised && secured)
switch(network)
if("SS13")
build_path = "/obj/machinery/computer/security"
if("Engineering")
build_path = "/obj/machinery/computer/security/engineeringcam"
if("Outpost")
build_path = "/obj/machinery/computer/security/mining"
attackby(var/obj/item/I, var/mob/user)//if(health > 50)
..()
if(istype(I,/obj/item/weapon/card/emag))
if(network)
authorised = 1
user << "\blue You authorised the circuit network!"
updateDialog()
else
user << "\blue You must select a camera network circuit!"
else if(istype(I,/obj/item/weapon/screwdriver))
secured = !secured
user.visible_message("\blue The [src] can [secured ? "no longer" : "now"] be modified.")
updateBuildPath()
return
attack_self(var/mob/user)
if(!secured && ishuman(user))
user.machine = src
interact(user, 0)
proc/interact(var/mob/user, var/ai=0)
if(secured)
return
if (!ishuman(user))
return ..(user)
var/t = "<B>Circuitboard Console - Camera Monitoring Computer</B><BR>"
t += "<A href='?src=\ref[src];close=1'>Close</A><BR>"
t += "<hr> Please select a camera network:<br>"
for(var/curNet in possibleNets)
if(network == curNet)
t += "- [curNet]<br>"
else
t += "- <A href='?src=\ref[src];net=[curNet]'>[curNet]</A><BR>"
t += "<hr>"
if(network)
if(authorised)
t += "Authenticated <A href='?src=\ref[src];removeauth=1'>(Clear Auth)</A><BR>"
else
t += "<A href='?src=\ref[src];auth=1'><b>*Authenticate*</b></A> (Requires an appropriate access ID)<br>"
else
t += "<A href='?src=\ref[src];auth=1'>*Authenticate*</A> (Requires an appropriate access ID)<BR>"
t += "<A href='?src=\ref[src];close=1'>Close</A><BR>"
user << browse(t, "window=camcircuit;size=500x400")
onclose(user, "camcircuit")
Topic(href, href_list)
..()
if( href_list["close"] )
usr << browse(null, "window=camcircuit")
usr.machine = null
return
else if(href_list["net"])
network = href_list["net"]
authorised = 0
else if( href_list["auth"] )
var/mob/M = usr
var/obj/item/weapon/card/id/I = M.equipped()
if (istype(I, /obj/item/device/pda))
var/obj/item/device/pda/pda = I
I = pda.id
if (I && istype(I))
if(access_captain in I.access)
authorised = 1
else if (possibleNets[network] in I.access)
authorised = 1
if(istype(I,/obj/item/weapon/card/emag))
if(network)
authorised = 1
usr << "\blue You authorised the circuit network!"
updateDialog()
else
usr << "\blue You must select a camera network circuit!"
else if( href_list["removeauth"] )
authorised = 0
updateDialog()
updateDialog()
if(istype(src.loc,/mob))
attack_self(src.loc)
+24 -12
View File
@@ -28,9 +28,6 @@
frame_desc = null
contain_parts = 1
/obj/item/weapon/circuitboard/security
name = "Circuit board (Security)"
build_path = "/obj/machinery/computer/security"
/obj/item/weapon/circuitboard/aicore
name = "Circuit board (AI core)"
origin_tech = "programming=4;biotech=2"
@@ -154,10 +151,22 @@
name = "Circuit board (Operating Computer)"
build_path = "/obj/machinery/computer/operating"
origin_tech = "programming=2;biotech=2"
/obj/item/weapon/circuitboard/mining
name = "Circuit board (Outpost Status Display)"
build_path = "/obj/machinery/computer/security/mining"
/obj/item/weapon/circuitboard/camera
name = "Circuit board (Camera)"
origin_tech = "programming=2"
build_path = "" //build path has to be manually set
/obj/item/weapon/circuitboard/security
name = "Circuit board (Security Monitoring)"
origin_tech = "" //unresearchable
build_path = "/obj/machinery/computer/security"
/obj/item/weapon/circuitboard/security/engineering
name = "Circuit board (Engineering Monitoring)"
origin_tech = "" //unresearchable
build_path = "/obj/machinery/computer/security/engineering"
/obj/item/weapon/circuitboard/security/mining
name = "Circuit board (Mining Outpost Monitoring)"
origin_tech = "" //unresearchable
build_path = "/obj/machinery/computer/security/mining"
/obj/item/weapon/circuitboard/comm_monitor
name = "Circuit board (Telecommunications Monitor)"
build_path = "/obj/machinery/computer/telecomms/monitor"
@@ -204,12 +213,15 @@
if(istype(P, /obj/item/weapon/circuitboard) && !circuit)
var/obj/item/weapon/circuitboard/B = P
if(B.board_type == "computer")
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
user << "\blue You place the circuit board inside the frame."
src.icon_state = "1"
src.circuit = P
user.drop_item()
P.loc = src
if(B.build_path != "")
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
user << "\blue You place the circuit board inside the frame."
src.icon_state = "1"
src.circuit = P
user.drop_item()
P.loc = src
else
user << "\red That circuit board requires additional modifications before it can be used."
else
user << "\red This frame does not accept circuit boards of this type!"
if(istype(P, /obj/item/weapon/screwdriver) && circuit)
+132
View File
@@ -0,0 +1,132 @@
//this computer displays status and remotely activates multiple shutters / blast doors
//might even make it able to lock / electrify area doors, later
/obj/machinery/computer/lockdown
name = "Lockdown Control"
desc = "Used to control blast doors."
icon_state = "lockdown"
circuit = "/obj/item/weapon/circuitboard/lockdown"
var/connectedDoorIds[0][0]
var/department = ""
var/connected_doors[0][0]
///obj/machinery/door/poddoor
New()
..()
//only load blast doors for map-defined departments for the moment
switch(department)
if("Engineering")
connectedDoorIds.Add("Engineering Primary Access")
connectedDoorIds.Add("Engineering Secondary Access")
connectedDoorIds.Add("Fore Maintenance Access")
connectedDoorIds.Add("Aft Maintenance Access")
connectedDoorIds.Add("Particle Accelerator Rad Shielding")
connectedDoorIds.Add("Foreward Emitter Array Rad Shielding")
connectedDoorIds.Add("Aftward Emitter Array Rad Shielding")
connectedDoorIds.Add("Starboard Observation Rad Shielding")
connectedDoorIds.Add("Atmospheric Storage Rad Shielding")
connectedDoorIds.Add("Construction Storage Rad Shielding")
connectedDoorIds.Add("Engineering Secure Storage")
//loop through the world, grabbing all the relevant doors
spawn(1)
for(var/networkId in connectedDoorIds)
//world << "\blue Creating [networkId]"
for(var/obj/machinery/door/poddoor/D in world)
if(D.id == networkId)
connected_doors.Add(D)
//world << "\blue Added [D]"
attack_ai(mob/user)
attack_hand(user)
attack_hand(mob/user)
add_fingerprint(user)
if(stat & (BROKEN|NOPOWER))
return
interact(user)
power_change()
if(stat & BROKEN)
icon_state = "broken"
else
if( powered() )
icon_state = initial(icon_state)
stat &= ~NOPOWER
else
spawn(rand(0, 15))
src.icon_state = "c_unpowered"
stat |= NOPOWER
Topic(href, href_list)
..()
if( href_list["close"] )
usr << browse(null, "window=lockdown")
usr.machine = null
return
if( href_list["openDoor"] )
var/obj/machinery/door/poddoor/D = href_list["door"]
if(D.density)
D.open()
src.updateDialog()
return
if( href_list["closeDoor"] )
var/obj/machinery/door/poddoor/D = href_list["door"]
if(!D.density)
D.close()
src.updateDialog()
return
if( href_list["close_all"] )
for(var/obj/machinery/door/poddoor/D in connected_doors)
if(D.id == href_list["netId"])
if(!D.density)
spawn(0)
D.close()
src.updateDialog()
return
if( href_list["open_all"] )
for(var/obj/machinery/door/poddoor/D in connected_doors)
if(D.id == href_list["netId"])
if(D.density)
spawn(0)
D.open()
src.updateDialog()
return
if(href_list["update"])
src.updateDialog()
return
proc
interact(mob/user)
if ( (get_dist(src, user) > 1 ) || (stat & (BROKEN|NOPOWER)) )
if (!istype(user, /mob/living/silicon))
user.machine = null
user << browse(null, "window=lockdown")
return
var/t = "<B>Lockdown Control</B><BR>"
t += "<A href='?src=\ref[src];close=1'>Close</A><BR>"
t += "<table border=1>"
for(var/curNetId in connectedDoorIds)
t += "<tr>"
t += "<td><b>" + curNetId + "<b></td>"
t += "<td><b><a href='?src=\ref[src];open_all=1;netId=[curNetId]'>Open All</a> / <a href='?src=\ref[src];close_all=0;netId=[curNetId]'>Close All</a></b></td>"
t += "</tr>"
for(var/obj/machinery/door/poddoor/D in connected_doors)
if(D.id == curNetId )
t += "<tr>"
t += "<td> [D.networkTag]</td>"
if(D.density)
t += "<td><a href='?src=\ref[D];open=1'>Open</a> - Close</td>"
else
t += "<td>Open - <a href='?src=\ref[D];close=1'>Close</a></td>"
t += "</tr>"
t += "</table>"
t += "<A href='?src=\ref[src];close=1'>Close</A><BR>"
user << browse(t, "window=lockdown;size=500x800")
onclose(user, "lockdown")
+7
View File
@@ -1,3 +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/Bumped(atom/AM)
if(!density)
return ..()
+1 -1
View File
@@ -2,7 +2,7 @@
//this item is intended to give the effect of entering the mine, so that light gradually fades
/obj/effect/light_emitter
name = "Light-emtter"
name = "Light-emitter"
anchored = 1
unacidable = 1
luminosity = 8
+5 -5
View File
@@ -67,14 +67,14 @@ datum
///////////////////Computer Boards///////////////////////////////////
seccamera
name = "Circuit Design (Security)"
desc = "Allows for the construction of circuit boards used to build security camera computers."
id = "seccamera"
camera
name = "Circuit Design (Camera)"
desc = "Allows for the construction of circuit boards used to build camera network computers."
id = "camera"
req_tech = list("programming" = 2)
build_type = IMPRINTER
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/circuitboard/security"
build_path = "/obj/item/weapon/circuitboard/camera"
aicore
name = "Circuit Design (AI Core)"
Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 18 KiB

+1100 -655
View File
File diff suppressed because it is too large Load Diff