Merge pull request #4301 from IK3I/master

Adds Pod Locks
This commit is contained in:
Fox McCloud
2016-05-05 21:39:19 -04:00
6 changed files with 125 additions and 17 deletions
+2 -2
View File
@@ -164,7 +164,7 @@
"adh" = (/obj/structure/rack,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/item/clothing/suit/armor/bulletproof{pixel_x = 0; pixel_y = 0},/obj/item/clothing/head/helmet/alt,/obj/item/clothing/suit/armor/bulletproof{pixel_x = 0; pixel_y = 0},/obj/item/clothing/head/helmet/alt,/obj/item/clothing/suit/armor/bulletproof{pixel_x = 0; pixel_y = 0},/obj/item/clothing/head/helmet/alt,/turf/simulated/floor/plasteel{dir = 8; icon_state = "vault"; tag = "icon-vault (WEST)"},/area/security/securearmoury)
"adi" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/securearmoury)
"adj" = (/obj/item/device/radio/intercom/department/security{pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos)
"adk" = (/obj/structure/table/woodentable,/obj/item/weapon/stamp/hos,/obj/item/device/flashlight/lamp/green{on = 0; pixel_x = -3; pixel_y = 8},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/carpet,/area/security/hos)
"adk" = (/obj/structure/table/woodentable,/obj/item/weapon/stamp/hos,/obj/item/device/flashlight/lamp/green{on = 0; pixel_x = -3; pixel_y = 8},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/item/device/spacepod_key{id = 100000},/turf/simulated/floor/carpet,/area/security/hos)
"adl" = (/obj/structure/table/woodentable,/obj/machinery/atmospherics/unary/vent_pump,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/carpet,/area/security/hos)
"adm" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/sop_security,/obj/item/weapon/book/manual/sop_legal,/turf/simulated/floor/carpet,/area/security/hos)
"adn" = (/obj/machinery/door_control{id = "Prison Gate"; name = "Prison Wing Lockdown"; pixel_x = -28; pixel_y = 7; req_access_txt = "2"},/obj/machinery/door_control{id = "Secure Gate"; name = "Brig Lockdown"; pixel_x = -28; pixel_y = -3; req_access_txt = "2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos)
@@ -314,7 +314,7 @@
"agb" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/securehallway)
"agc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 5},/area/security/securehallway)
"agd" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/wall,/area/security/podbay)
"age" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/table/reinforced,/obj/item/clothing/suit/jacket/pilot,/obj/item/clothing/head/beret/sec,/obj/machinery/light_switch{pixel_x = -25},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay)
"age" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/table/reinforced,/obj/item/clothing/suit/jacket/pilot,/obj/item/clothing/head/beret/sec,/obj/machinery/light_switch{pixel_x = -25},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/item/device/spacepod_key{id = 100000},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay)
"agf" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay)
"agg" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay)
"agh" = (/obj/structure/closet/secure_closet/security,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "Security Podbay APC"; pixel_x = 25},/obj/item/device/spacepod_equipment/weaponry/laser,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay)
+2 -1
View File
@@ -206,7 +206,8 @@
/obj/item/clothing/shoes/magboots,
/obj/item/areaeditor/blueprints,
/obj/item/clothing/head/helmet/space,
/obj/item/weapon/storage/internal
/obj/item/weapon/storage/internal,
/obj/item/device/spacepod_key
)
// These items will NOT be preserved
var/list/do_not_preserve_items = list (
+50 -6
View File
@@ -49,6 +49,7 @@
var/obj/item/device/spacepod_equipment/weaponry/weapon_system // weapons system
var/obj/item/device/spacepod_equipment/misc/misc_system // misc system
var/obj/item/device/spacepod_equipment/cargo/cargo_system // cargo system
var/obj/item/device/spacepod_equipment/lock/lock_system // lock system
//var/obj/item/device/spacepod_equipment/engine/engine_system // engine system
//var/obj/item/device/spacepod_equipment/shield/shield_system // shielding system
@@ -69,7 +70,7 @@
/obj/item/device/spacepod_equipment/weaponry
name = "pod weapon"
desc = "You shouldn't be seeing this"
icon = 'icons/goonstation/pods/ship.dmi'
icon = 'icons/vehicles/spacepod.dmi'
icon_state = "blank"
var/projectile_type
var/shot_cost = 0
@@ -80,7 +81,7 @@
/obj/item/device/spacepod_equipment/weaponry/taser
name = "disabler system"
desc = "A weak taser system for space pods, fires disabler beams."
icon_state = "pod_taser"
icon_state = "weapon_taser"
projectile_type = "/obj/item/projectile/beam/disabler"
shot_cost = 400
fire_sound = "sound/weapons/Taser.ogg"
@@ -88,7 +89,7 @@
/obj/item/device/spacepod_equipment/weaponry/burst_taser
name = "burst taser system"
desc = "A weak taser system for space pods, this one fires 3 at a time."
icon_state = "pod_b_taser"
icon_state = "weapon_burst_taser"
projectile_type = "/obj/item/projectile/beam/disabler"
shot_cost = 1200
shots_per = 3
@@ -98,7 +99,7 @@
/obj/item/device/spacepod_equipment/weaponry/laser
name = "laser system"
desc = "A weak laser system for space pods, fires concentrated bursts of energy"
icon_state = "pod_w_laser"
icon_state = "weapon_laser"
projectile_type = "/obj/item/projectile/beam"
shot_cost = 600
fire_sound = 'sound/weapons/Laser.ogg'
@@ -107,6 +108,7 @@
/obj/item/device/spacepod_equipment/weaponry/mining_laser_basic
name = "weak mining laser system"
desc = "A weak mining laser system for space pods, fires bursts of energy that cut through rock"
icon = 'icons/goonstation/pods/ship.dmi'
icon_state = "pod_taser"
projectile_type = "/obj/item/projectile/kinetic"
shot_cost = 300
@@ -116,6 +118,7 @@
/obj/item/device/spacepod_equipment/weaponry/mining_laser
name = "mining laser system"
desc = "A mining laser system for space pods, fires bursts of energy that cut through rock"
icon = 'icons/goonstation/pods/ship.dmi'
icon_state = "pod_m_laser"
projectile_type = "/obj/item/projectile/kinetic/super"
shot_cost = 250
@@ -125,6 +128,7 @@
/obj/item/device/spacepod_equipment/weaponry/mining_laser_hyper
name = "enhanced mining laser system"
desc = "An enhanced mining laser system for space pods, fires bursts of energy that cut through rock"
icon = 'icons/goonstation/pods/ship.dmi'
icon_state = "pod_w_laser"
projectile_type = "/obj/item/projectile/kinetic/hyper"
shot_cost = 200
@@ -159,7 +163,7 @@
/obj/item/device/spacepod_equipment/cargo
name = "pod cargo"
desc = "You shouldn't be seeing this"
icon = 'icons/goonstation/pods/ship.dmi'
icon = 'icons/vehicles/spacepod.dmi'
icon_state = "blank"
/obj/item/device/spacepod_equipment/cargo/proc/passover(var/obj/item/I)
@@ -171,7 +175,7 @@
/obj/item/device/spacepod_equipment/cargo/ore
name = "\improper spacepod ore storage system"
desc = "An ore storage system for spacepods. Scoops up any ore you drive over."
icon_state = "pod_locator"
icon_state = "cargo_ore"
var/obj/structure/ore_box/box
/obj/item/device/spacepod_equipment/cargo/ore/passover(var/obj/item/I)
@@ -186,3 +190,43 @@
/obj/item/device/spacepod_equipment/cargo/ore/removed(var/mob/user)
. = ..()
unload()
/obj/item/device/spacepod_equipment/lock
name = "pod lock"
desc = "You shouldn't be seeing this"
icon = 'icons/vehicles/spacepod.dmi'
icon_state = "blank"
var/mode = 0
var/id = null
// Key and Tumbler System
/obj/item/device/spacepod_equipment/lock/keyed
name = "spacepod tumbler lock"
desc = "A locking system to stop podjacking. This version uses a standalone key."
icon_state = "lock_tumbler"
var/static/id_source = 0
/obj/item/device/spacepod_equipment/lock/keyed/New()
..()
id = ++id_source
// The key
/obj/item/device/spacepod_key
name = "spacepod key"
desc = "A key for a spacepod lock."
icon = 'icons/vehicles/spacepod.dmi'
icon_state = "podkey"
w_class = 1.0
var/id = 0
// Key - Lock Interactions
/obj/item/device/spacepod_equipment/lock/keyed/attackby(obj/item/I as obj, mob/user as mob, params)
if(istype(I, /obj/item/device/spacepod_key))
var/obj/item/device/spacepod_key/key = I
if(!key.id)
key.id = id
to_chat(user, "<span class='notice'>You grind the blank key to fit the lock.</span>")
else
to_chat(user, "<span class='warning'>This key is already ground!</span>")
else
..()
+46 -8
View File
@@ -250,9 +250,12 @@
/obj/spacepod/attackby(obj/item/W as obj, mob/user as mob, params)
if(iscrowbar(W))
hatch_open = !hatch_open
playsound(loc, 'sound/items/Crowbar.ogg', 50, 1)
to_chat(user, "<span class='notice'>You [hatch_open ? "open" : "close"] the maintenance hatch.</span>")
if(!equipment_system.lock_system || allow2enter || hatch_open)
hatch_open = !hatch_open
playsound(loc, 'sound/items/Crowbar.ogg', 50, 1)
to_chat(user, "<span class='notice'>You [hatch_open ? "open" : "close"] the maintenance hatch.</span>")
else
to_chat(user, "<span class='warning'>The hatch is locked shut!</span>")
if(istype(W, /obj/item/weapon/stock_parts/cell))
if(!hatch_open)
to_chat(user, "\red The maintenance hatch is closed!")
@@ -305,6 +308,25 @@
equipment_system.cargo_system = W
equipment_system.cargo_system.my_atom = src
return
if(istype(W, /obj/item/device/spacepod_equipment/lock))
if(equipment_system.lock_system)
to_chat(user, "<span class='notice'>The pod already has a lock system, remove it first.</span>")
return
else
to_chat(user, "<span class='notice'>You insert \the [W] into the lock system.</span>")
user.drop_item(W)
W.forceMove(src)
equipment_system.lock_system = W
equipment_system.lock_system.my_atom = src
return
if(istype(W, /obj/item/device/spacepod_key) && istype(equipment_system.lock_system, /obj/item/device/spacepod_equipment/lock/keyed))
var/obj/item/device/spacepod_key/key = W
if (key.id == equipment_system.lock_system.id)
locksecondseat()
else
to_chat(user, "<span class='warning'>This is the wrong key!</span>")
return
if(istype(W, /obj/item/weapon/weldingtool))
if(!hatch_open)
@@ -340,6 +362,8 @@
possible.Add("Misc. System")
if(equipment_system.cargo_system)
possible.Add("Cargo System")
if(equipment_system.lock_system)
possible.Add("Lock System")
/* Not yet implemented
if(equipment_system.engine_system)
possible.Add("Engine System")
@@ -379,6 +403,15 @@
equipment_system.cargo_system = null
else
to_chat(user, "<span class='warning'>You need an open hand to do that.</span>")
if("Lock System")
SPE = equipment_system.lock_system
if(user.put_in_any_hand_if_possible(SPE))
to_chat(user, "<span class='notice'>You remove \the [SPE] from the equipment system.</span>")
SPE.removed(user)
SPE.my_atom = null
equipment_system.lock_system = null
else
to_chat(user, "<span class='warning'>You need an open hand to do that.</span>")
/*
if("engine system")
SPE = equipment_system.engine_system
@@ -423,6 +456,11 @@
equipment_system.misc_system = L
equipment_system.misc_system.my_atom = src
equipment_system.misc_system.enabled = 1
var/obj/item/device/spacepod_equipment/lock/keyed/K = new /obj/item/device/spacepod_equipment/lock/keyed
K.loc = equipment_system
equipment_system.lock_system = K
equipment_system.lock_system.my_atom = src
equipment_system.lock_system.id = 100000
return
/obj/spacepod/random/New()
@@ -534,7 +572,11 @@
moved_other_inside(M)
if(M == user)
enter_pod(user)
if(!equipment_system.lock_system || allow2enter)
enter_pod(user)
else
to_chat(user, "<span class='warning'>\The [src]'s doors are locked!</span>")
if(istype(A, /obj/structure/ore_box)) // For loading ore boxes
var/obj/structure/ore_box/O = A
@@ -638,10 +680,6 @@
log_debug("##SPACEPOD WARNING: OCCUPANT [occupant2] ESCAPED, TURF [get_turf(src)] | AREA [get_area(src)] | COORDS [x], [y], [z]")
occupant2 = null
if(!occupant && !allow2enter)
allow2enter = 1
log_debug("##SPACEPOD WARNING: DOORS WERE STILL LOCKED WITH NO OCCUPANT, TURF [get_turf(src)] | AREA [get_area(src)] | COORDS [x], [y], [z]")
/obj/spacepod/verb/exit_pod()
set name = "Exit pod"
set category = "Spacepod"
@@ -181,4 +181,29 @@
build_type = PODFAB
materials = list(MAT_METAL=20000, MAT_GLASS=2000)
build_path = /obj/item/device/spacepod_equipment/cargo/ore
category = list("Pod_Parts")
//////////////////////////////////////////
//////SPACEPOD LOCK ITEMS////////////////
//////////////////////////////////////////
/datum/design/pod_lock_keyed
construction_time = 100
name = "Spacepod Tumbler Lock"
desc = "Allows for the construction of a tumbler style podlock."
id = "podlock_keyed"
req_tech = list("materials" = 1) //The most basic kind of locking system
build_type = PODFAB
materials = list(MAT_METAL=4500)
build_path = /obj/item/device/spacepod_equipment/lock/keyed
category = list("Pod_Parts")
/datum/design/pod_key
construction_time = 100
name = "Spacepod Tumbler Lock Key"
desc = "Allows for the construction of a blank key for a podlock."
id = "podkey"
req_tech = list("materials" = 1) //The most basic kind of locking system
build_type = PODFAB
materials = list(MAT_METAL=500)
build_path = /obj/item/device/spacepod_key
category = list("Pod_Parts")
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB