diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm
index 52725ba63f8..92e76712e64 100644
--- a/code/game/machinery/constructable_frame.dm
+++ b/code/game/machinery/constructable_frame.dm
@@ -67,6 +67,17 @@
else
user << "You need five length of cable to wire the frame."
return
+ else if(istype(P, /obj/item/stack/sheet/glass))
+ var/obj/item/stack/sheet/glass/G = P
+ if(G.amount<5)
+ user << "\red You do not have enough glass to build a display case."
+ return
+ G.use(5)
+ user << "\blue You add the glass to the frame."
+ playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, 1)
+ new /obj/structure/displaycase_frame(src.loc)
+ del(src)
+ return
if(istype(P, /obj/item/weapon/wrench))
playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1)
user << "You dismantle the frame."
diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm
index 1d3db77dcfa..72d77cd5a60 100644
--- a/code/game/mecha/mech_fabricator.dm
+++ b/code/game/mecha/mech_fabricator.dm
@@ -95,6 +95,16 @@
/obj/item/mecha_parts/part/durand_right_leg,
/obj/item/mecha_parts/part/durand_armor
),
+ "Phazon"=list(
+ /obj/item/mecha_parts/chassis/phazon,
+ /obj/item/mecha_parts/part/phazon_torso,
+ /obj/item/mecha_parts/part/phazon_head,
+ /obj/item/mecha_parts/part/phazon_left_arm,
+ /obj/item/mecha_parts/part/phazon_right_arm,
+ /obj/item/mecha_parts/part/phazon_left_leg,
+ /obj/item/mecha_parts/part/phazon_right_leg,
+ /obj/item/mecha_parts/part/phazon_armor
+ ),
"H.O.N.K"=list(
/obj/item/mecha_parts/chassis/honker,
/obj/item/mecha_parts/part/honker_torso,
@@ -103,7 +113,7 @@
/obj/item/mecha_parts/part/honker_right_arm,
/obj/item/mecha_parts/part/honker_left_leg,
/obj/item/mecha_parts/part/honker_right_leg
- ),
+ ),
"Exosuit Equipment"=list(
/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp,
/obj/item/mecha_parts/mecha_equipment/tool/drill,
diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm
index 2a275f508d6..48662874413 100644
--- a/code/game/mecha/mecha_construction_paths.dm
+++ b/code/game/mecha/mecha_construction_paths.dm
@@ -1078,15 +1078,13 @@
feedback_inc("mecha_durand_created",1)
return
-
/datum/construction/mecha/phazon_chassis
- result = "/obj/mecha/combat/phazon"
steps = list(list("key"=/obj/item/mecha_parts/part/phazon_torso),//1
- list("key"=/obj/item/mecha_parts/part/phazon_left_arm),//2
- list("key"=/obj/item/mecha_parts/part/phazon_right_arm),//3
- list("key"=/obj/item/mecha_parts/part/phazon_left_leg),//4
- list("key"=/obj/item/mecha_parts/part/phazon_right_leg),//5
- list("key"=/obj/item/mecha_parts/part/phazon_head)
+ list("key"=/obj/item/mecha_parts/part/phazon_head),//2
+ list("key"=/obj/item/mecha_parts/part/phazon_left_arm),//3
+ list("key"=/obj/item/mecha_parts/part/phazon_right_arm),//4
+ list("key"=/obj/item/mecha_parts/part/phazon_left_leg),//5
+ list("key"=/obj/item/mecha_parts/part/phazon_right_leg)//6
)
custom_action(step, atom/used_atom, mob/user)
@@ -1098,8 +1096,302 @@
action(atom/used_atom,mob/user as mob)
return check_all_steps(used_atom,user)
+ spawn_result(mob/user as mob)
+ var/obj/item/mecha_parts/chassis/const_holder = holder
+ const_holder.construct = new /datum/construction/reversible/mecha/phazon(const_holder)
+ const_holder.icon = 'icons/mecha/mech_construction.dmi'
+ const_holder.icon_state = "phazon0"
+ const_holder.density = 1
+ spawn()
+ del src
+ return
+
+/datum/construction/reversible/mecha/phazon
+ result = "/obj/mecha/combat/phazon"
+ steps = list(
+ //1
+ list("key"=/obj/item/weapon/weldingtool,
+ "backkey"=/obj/item/weapon/wrench,
+ "desc"="External armor is wrenched."),
+ //2
+ list("key"=/obj/item/weapon/wrench,
+ "backkey"=/obj/item/weapon/crowbar,
+ "desc"="External armor is installed."),
+ //3
+ list("key"=/obj/item/mecha_parts/part/phazon_armor,
+ "backkey"=/obj/item/weapon/weldingtool,
+ "desc"="Phase armor is welded."),
+ //4
+ list("key"=/obj/item/weapon/weldingtool,
+ "backkey"=/obj/item/weapon/wrench,
+ "desc"="Phase armor is wrenched."),
+ //5
+ list("key"=/obj/item/weapon/wrench,
+ "backkey"=/obj/item/weapon/crowbar,
+ "desc"="Phase armor is installed."),
+ //6
+ list("key"=/obj/item/stack/sheet/plasteel,
+ "backkey"=/obj/item/weapon/screwdriver,
+ "desc"="The bluespace crystal is engaged."),
+ //7
+ list("key"=/obj/item/weapon/screwdriver,
+ "backkey"=/obj/item/weapon/wirecutters,
+ "desc"="The bluespace crystal is connected."),
+ //8
+ list("key"=/obj/item/stack/cable_coil,
+ "backkey"=/obj/item/weapon/crowbar,
+ "desc"="The bluespace crystal is installed."),
+ //9
+ list("key"=/obj/item/bluespace_crystal,
+ "backkey"=/obj/item/weapon/screwdriver,
+ "desc"="Super capacitor is secured."),
+ //10
+ list("key"=/obj/item/weapon/screwdriver,
+ "backkey"=/obj/item/weapon/crowbar,
+ "desc"="Super capacitor is installed."),
+ //11
+ list("key"=/obj/item/weapon/stock_parts/capacitor/super,
+ "backkey"=/obj/item/weapon/screwdriver,
+ "desc"="Phasic scanner module is secured."),
+ //12
+ list("key"=/obj/item/weapon/screwdriver,
+ "backkey"=/obj/item/weapon/crowbar,
+ "desc"="Phasic scanner module is installed."),
+ //13
+ list("key"=/obj/item/weapon/stock_parts/scanning_module/phasic,
+ "backkey"=/obj/item/weapon/screwdriver,
+ "desc"="Scanning module is secured."),
+ //14
+ list("key"=/obj/item/weapon/screwdriver,
+ "backkey"=/obj/item/weapon/crowbar,
+ "desc"="Scanning module is installed."),
+ //15
+ list("key"=/obj/item/weapon/circuitboard/mecha/phazon/targeting,
+ "backkey"=/obj/item/weapon/screwdriver,
+ "desc"="Peripherals control module is secured."),
+ //16
+ list("key"=/obj/item/weapon/screwdriver,
+ "backkey"=/obj/item/weapon/crowbar,
+ "desc"="Peripherals control module is installed"),
+ //17
+ list("key"=/obj/item/weapon/circuitboard/mecha/phazon/peripherals,
+ "backkey"=/obj/item/weapon/screwdriver,
+ "desc"="Central control module is secured."),
+ //18
+ list("key"=/obj/item/weapon/screwdriver,
+ "backkey"=/obj/item/weapon/crowbar,
+ "desc"="Central control module is installed."),
+ //19
+ list("key"=/obj/item/weapon/circuitboard/mecha/phazon/main,
+ "backkey"=/obj/item/weapon/screwdriver,
+ "desc"="The wiring is adjusted."),
+ //20
+ list("key"=/obj/item/weapon/wirecutters,
+ "backkey"=/obj/item/weapon/screwdriver,
+ "desc"="The wiring is added."),
+ //21
+ list("key"=/obj/item/stack/cable_coil,
+ "backkey"=/obj/item/weapon/screwdriver,
+ "desc"="The hydraulic systems are active."),
+ //22
+ list("key"=/obj/item/weapon/screwdriver,
+ "backkey"=/obj/item/weapon/wrench,
+ "desc"="The hydraulic systems are connected."),
+ //23
+ list("key"=/obj/item/weapon/wrench,
+ "desc"="The hydraulic systems are disconnected.")
+ )
+/datum/construction/reversible/mecha/phazon/action(atom/used_atom,mob/user as mob)
+ return check_step(used_atom,user)
+
+/datum/construction/reversible/mecha/phazon/custom_action(index, diff, atom/used_atom, mob/user)
+ if(!..())
+ return 0
+
+ //TODO: better messages.
+ switch(index)
+ if(23)
+ user.visible_message("[user] connects the [holder] hydraulic systems", "You connect the [holder] hydraulic systems.")
+ holder.icon_state = "phazon1"
+ if(22)
+ if(diff==FORWARD)
+ user.visible_message("[user] activates the [holder] hydraulic systems.", "You activate the [holder] hydraulic systems.")
+ holder.icon_state = "phazon2"
+ else
+ user.visible_message("[user] disconnects the [holder] hydraulic systems", "You disconnect the [holder] hydraulic systems.")
+ holder.icon_state = "phazon0"
+ if(21)
+ if(diff==FORWARD)
+ user.visible_message("[user] adds the wiring to the [holder].", "You add the wiring to the [holder].")
+ holder.icon_state = "phazon3"
+ else
+ user.visible_message("[user] deactivates the [holder] hydraulic systems.", "You deactivate the [holder] hydraulic systems.")
+ holder.icon_state = "phazon1"
+ if(20)
+ if(diff==FORWARD)
+ user.visible_message("[user] adjusts the wiring of the [holder].", "You adjust the wiring of the [holder].")
+ holder.icon_state = "phazon4"
+ else
+ user.visible_message("[user] removes the wiring from the [holder].", "You remove the wiring from the [holder].")
+ var/obj/item/stack/cable_coil/coil = new /obj/item/stack/cable_coil(get_turf(holder))
+ coil.amount = 4
+ holder.icon_state = "phazon2"
+ if(19)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs the central control module into the [holder].", "You install the central computer mainboard into the [holder].")
+ qdel(used_atom)
+ holder.icon_state = "phazon5"
+ else
+ user.visible_message("[user] disconnects the wiring of the [holder].", "You disconnect the wiring of the [holder].")
+ holder.icon_state = "phazon3"
+ if(18)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
+ holder.icon_state = "phazon6"
+ else
+ user.visible_message("[user] removes the central control module from the [holder].", "You remove the central computer mainboard from the [holder].")
+ new /obj/item/weapon/circuitboard/mecha/phazon/main(get_turf(holder))
+ holder.icon_state = "phazon4"
+ if(17)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs the peripherals control module into the [holder].", "You install the peripherals control module into the [holder].")
+ qdel(used_atom)
+ holder.icon_state = "phazon7"
+ else
+ user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
+ holder.icon_state = "phazon5"
+ if(16)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
+ holder.icon_state = "phazon8"
+ else
+ user.visible_message("[user] removes the peripherals control module from the [holder].", "You remove the peripherals control module from the [holder].")
+ new /obj/item/weapon/circuitboard/mecha/phazon/peripherals(get_turf(holder))
+ holder.icon_state = "phazon6"
+ if(15)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs the weapon control module into the [holder].", "You install the weapon control module into the [holder].")
+ qdel(used_atom)
+ holder.icon_state = "phazon9"
+ else
+ user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
+ holder.icon_state = "phazon7"
+ if(14)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the weapon control module.", "You secure the weapon control module.")
+ holder.icon_state = "phazon10"
+ else
+ user.visible_message("[user] removes the weapon control module from the [holder].", "You remove the weapon control module from the [holder].")
+ new /obj/item/weapon/circuitboard/mecha/phazon/targeting(get_turf(holder))
+ holder.icon_state = "phazon8"
+ if(13)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs phasic scanner module to the [holder].", "You install phasic scanner module to the [holder].")
+ qdel(used_atom)
+ holder.icon_state = "phazon11"
+ else
+ user.visible_message("[user] unfastens the weapon control module.", "You unfasten the weapon control module.")
+ holder.icon_state = "phazon9"
+ if(12)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the phasic scanner module.", "You secure the phasic scanner module.")
+ holder.icon_state = "phazon12"
+ else
+ user.visible_message("[user] removes the phasic scanner module from the [holder].", "You remove the phasic scanner module from the [holder].")
+ new /obj/item/weapon/stock_parts/scanning_module/phasic(get_turf(holder))
+ holder.icon_state = "phazon10"
+ if(11)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs super capacitor to the [holder].", "You install super capacitor to the [holder].")
+ qdel(used_atom)
+ holder.icon_state = "phazon13"
+ else
+ user.visible_message("[user] unfastens the phasic scanner module.", "You unfasten the phasic scanner module.")
+ holder.icon_state = "phazon11"
+ if(10)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the super capacitor.", "You secure the super capacitor.")
+ holder.icon_state = "phazon14"
+ else
+ user.visible_message("[user] removes the super capacitor from the [holder].", "You remove the super capacitor from the [holder].")
+ new /obj/item/weapon/stock_parts/capacitor/super(get_turf(holder))
+ holder.icon_state = "phazon12"
+ if(9)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs the bluespace crystal.", "You install the bluespace crystal.")
+ qdel(used_atom)
+ holder.icon_state = "phazon15"
+ else
+ user.visible_message("[user] unsecures the super capacitor from the [holder].", "You unsecure the super capacitor from the [holder].")
+ holder.icon_state = "phazon13"
+ if(8)
+ if(diff==FORWARD)
+ user.visible_message("[user] connects the bluespace crystal.", "You connect the bluespace crystal.")
+ holder.icon_state = "phazon16"
+ else
+ user.visible_message("[user] removes the bluespace crystal from the [holder].", "You remove the bluespace crystal from the [holder].")
+ new /obj/item/bluespace_crystal(get_turf(holder))
+ holder.icon_state = "phazon14"
+ if(7)
+ if(diff==FORWARD)
+ user.visible_message("[user] engages the bluespace crystal.", "You engage the bluespace crystal.")
+ holder.icon_state = "phazon17"
+ else
+ user.visible_message("[user] disconnects the bluespace crystal from the [holder].", "You disconnect the bluespace crystal from the [holder].")
+ holder.icon_state = "phazon15"
+ if(6)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs the phase armor layer to the [holder].", "You install the phase armor layer to the [holder].")
+ holder.icon_state = "phazon18"
+ else
+ user.visible_message("[user] disengages the bluespace crystal.", "You disengage the bluespace crystal.")
+ holder.icon_state = "phazon16"
+ if(5)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the phase armor layer.", "You secure the phase armor layer.")
+ holder.icon_state = "phazon19"
+ else
+ user.visible_message("[user] pries the phase armor layer from the [holder].", "You pry the phase armor layer from the [holder].")
+ var/obj/item/stack/sheet/plasteel/MS = new /obj/item/stack/sheet/plasteel(get_turf(holder))
+ MS.amount = 5
+ holder.icon_state = "phazon17"
+ if(4)
+ if(diff==FORWARD)
+ user.visible_message("[user] welds the phase armor layer to the [holder].", "You weld the phase armor layer to the [holder].")
+ holder.icon_state = "phazon20"
+ else
+ user.visible_message("[user] unfastens the phase armor layer.", "You unfasten the phase armor layer.")
+ holder.icon_state = "phazon18"
+ if(3)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs Phazon Armor Plates to the [holder].", "You install Phazon Armor Plates to the [holder].")
+ qdel(used_atom)
+ holder.icon_state = "phazon21"
+ else
+ user.visible_message("[user] cuts phase armor layer from the [holder].", "You cut the phase armor layer from the [holder].")
+ holder.icon_state = "phazon19"
+ if(2)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures Phazon Armor Plates.", "You secure Phazon Armor Plates.")
+ holder.icon_state = "phazon22"
+ else
+ user.visible_message("[user] pries Phazon Armor Plates from the [holder].", "You pry Phazon Armor Plates from the [holder].")
+ new /obj/item/mecha_parts/part/phazon_armor(get_turf(holder))
+ holder.icon_state = "phazon20"
+ if(1)
+ if(diff==FORWARD)
+ user.visible_message("[user] welds Phazon Armor Plates to the [holder].", "You weld Phazon Armor Plates to the [holder].")
+ else
+ user.visible_message("[user] unfastens Phazon Armor Plates.", "You unfasten Phazon Armor Plates.")
+ holder.icon_state = "phazon21"
+ return 1
+
+/datum/construction/reversible/mecha/phazon/spawn_result()
+ ..()
+ feedback_inc("mecha_phazon_created",1)
+ return
/datum/construction/mecha/odysseus_chassis
steps = list(list("key"=/obj/item/mecha_parts/part/odysseus_torso),//1
diff --git a/code/game/mecha/mecha_parts.dm b/code/game/mecha/mecha_parts.dm
index cb92361b7db..59624f49756 100644
--- a/code/game/mecha/mecha_parts.dm
+++ b/code/game/mecha/mecha_parts.dm
@@ -293,14 +293,14 @@
icon_state = "phazon_harness"
construction_time = 300
construction_cost = list("metal"=35000,"glass"=10000,"plasma"=20000)
- origin_tech = "programming=5;materials=7;bluespace=6;powerstorage=6"
+ origin_tech = "programming=5;materials=7;bluespace=4;powerstorage=6"
/obj/item/mecha_parts/part/phazon_head
name="Phazon Head"
icon_state = "phazon_head"
construction_time = 200
construction_cost = list("metal"=15000,"glass"=5000,"plasma"=10000)
- origin_tech = "programming=4;materials=5;magnets=6"
+ origin_tech = "programming=4;materials=5;magnets=5"
/obj/item/mecha_parts/part/phazon_left_arm
name="Phazon Left Arm"
@@ -330,9 +330,15 @@
construction_cost = list("metal"=20000,"plasma"=10000)
origin_tech = "materials=5;bluespace=3;magnets=3"
+/obj/item/mecha_parts/part/phazon_armor
+ name="Phazon armor"
+ desc="Phazon armor plates. They are layered with plasma to protect the pilot from the stress of phasing and have unusual properties."
+ icon_state = "phazon_armor"
+ construction_time = 300
+ construction_cost = list("metal"=45000,"plasma"=30000)
+ origin_tech = "materials=6;bluespace=4;magnets=5"
+
///////// Odysseus
-
-
/obj/item/mecha_parts/chassis/odysseus
name = "Odysseus Chassis"
@@ -452,6 +458,22 @@
durand/main
name = "Circuit board (Durand Central Control module)"
icon_state = "mainboard"
+
+ phazon
+ origin_tech = "programming=4"
+
+ phazon/peripherals
+ name = "Circuit board (Phazon Peripherals Control module)"
+ icon_state = "mcontroller"
+
+ phazon/targeting
+ name = "Circuit board (Phazon Weapon Control and Targeting module)"
+ icon_state = "mcontroller"
+ origin_tech = "programming=4;combat=4"
+
+ phazon/main
+ name = "Circuit board (Phazon Central Control module)"
+ icon_state = "mainboard"
honker
origin_tech = "programming=4"
diff --git a/code/game/objects/items/bluespace_crystal.dm b/code/game/objects/items/bluespace_crystal.dm
index ce9aac56064..d2b4c6e961c 100644
--- a/code/game/objects/items/bluespace_crystal.dm
+++ b/code/game/objects/items/bluespace_crystal.dm
@@ -5,7 +5,7 @@
icon = 'icons/obj/telescience.dmi'
icon_state = "bluespace_crystal"
w_class = 1
- origin_tech = "bluespace=4;materials=5"
+ origin_tech = "bluespace=3;materials=5"
var/blink_range = 8 // The teleport range when crushed/thrown at someone.
/obj/item/bluespace_crystal/New()
diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm
index 2a475ed7be0..e477868a72e 100644
--- a/code/game/objects/structures/displaycase.dm
+++ b/code/game/objects/structures/displaycase.dm
@@ -1,23 +1,84 @@
+/obj/structure/displaycase_frame
+ name = "display case frame"
+ icon = 'icons/obj/stock_parts.dmi'
+ icon_state="box_glass"
+ var/obj/item/weapon/airlock_electronics/circuit = null
+ var/state=0
+
+/obj/structure/displaycase_frame/attackby(obj/item/weapon/W as obj, mob/user as mob)
+ var/pstate=state
+ var/turf/T=get_turf(src)
+ switch(state)
+ if(0)
+ if(istype(W, /obj/item/weapon/airlock_electronics) && W:icon_state != "door_electronics_smoked")
+ user.drop_item()
+ circuit = W
+ circuit.loc = src
+ state++
+ playsound(get_turf(src), 'sound/items/Screwdriver.ogg', 50, 1)
+ if(istype(W, /obj/item/weapon/crowbar))
+ new /obj/machinery/constructable_frame/machine_frame(T)
+ new /obj/item/stack/sheet/glass(T)
+ del(src)
+ playsound(get_turf(src), 'sound/items/Crowbar.ogg', 50, 1)
+ return
+
+ if(1)
+ if(isscrewdriver(W))
+ var/obj/structure/displaycase/C=new(T)
+ if(circuit.one_access)
+ C.req_access = null
+ C.req_one_access = circuit.conf_access
+ else
+ C.req_access = circuit.conf_access
+ C.req_one_access = null
+ playsound(get_turf(src), 'sound/items/Screwdriver.ogg', 50, 1)
+ del(src)
+ return
+ if(istype(W, /obj/item/weapon/crowbar))
+ circuit.loc=T
+ circuit=null
+ state--
+ playsound(get_turf(src), 'sound/items/Crowbar.ogg', 50, 1)
+ if(pstate!=state)
+ pstate=state
+ update_icon()
+
+/obj/structure/displaycase_frame/update_icon()
+ switch(state)
+ if(1)
+ icon_state="box_glass_circuit"
+ else
+ icon_state="box_glass"
+
/obj/structure/displaycase
- name = "Display Case"
+ name = "display case"
icon = 'icons/obj/stationobjs.dmi'
icon_state = "glassbox20"
desc = "A display case for prized possessions. It taunts you to kick it."
density = 1
anchored = 1
- unacidable = 1//Dissolving the case would also delete the gun.
+ unacidable = 1//Dissolving the case would also delete the contents.
var/health = 30
var/obj/item/occupant = null
var/destroyed = 0
var/locked = 0
- var/ue=null
- var/image/occupant_overlay=null
+ var/ue = null
+ var/image/occupant_overlay = null
+ var/obj/item/weapon/airlock_electronics/circuit
+
+/obj/structure/displaycase/captains_laser
+ name = "captain's display case"
+ desc = "A display case for the captain's antique laser gun. It taunts you to kick it."
/obj/structure/displaycase/captains_laser/New()
- occupant=new /obj/item/weapon/gun/energy/laser/captain(src)
- locked=1
- req_access=list(access_captain)
+ req_access = list(access_captain)
+ occupant = new /obj/item/weapon/gun/energy/laser/captain(src)
+ locked = 1
update_icon()
+
+/obj/structure/proc/getPrint(mob/user as mob)
+ return md5(user:dna:uni_identity)
/obj/structure/displaycase/examine()
..()
@@ -28,8 +89,9 @@
usr << "Nothing."
/obj/structure/displaycase/proc/dump()
- occupant.loc=get_turf(src)
- occupant=null
+ if(occupant)
+ occupant.loc=get_turf(src)
+ occupant=null
occupant_overlay=null
/obj/structure/displaycase/ex_act(severity)
@@ -38,7 +100,7 @@
getFromPool(/obj/item/weapon/shard, loc)
if (occupant)
dump()
- qdel(src)
+ del(src)
if (2)
if (prob(50))
src.health -= 15
@@ -78,7 +140,7 @@
playsound(get_turf(src), "shatter", 70, 1)
update_icon()
else
- playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1)
+ playsound(get_turf(src), 'sound/effects/Glasshit.ogg', 75, 1)
return
/obj/structure/displaycase/update_icon()
@@ -93,8 +155,6 @@
occupant_overlay = image(occupant_icon)
occupant_overlay.pixel_x=8
occupant_overlay.pixel_y=8
- //occupant_overlay.Shift(NORTH, 8)
- //occupant_overlay.Shift(EAST, 8)
if(locked)
occupant_overlay.alpha=128//ChangeOpacity(0.5)
//underlays += occupant_overlay
@@ -115,6 +175,32 @@
user << "\icon[src] \blue You close \the [src] and swipe your card, locking it."
update_icon()
return
+ if(istype(W,/obj/item/weapon/crowbar) && (!locked || destroyed))
+ user.visible_message("[user.name] pries \the [src] apart.", \
+ "You pry \the [src] apart.", \
+ "You hear something pop.")
+ var/turf/T=get_turf(src)
+ playsound(T, 'sound/items/Crowbar.ogg', 50, 1)
+ dump()
+ var/obj/item/weapon/airlock_electronics/C = circuit
+ if(!C)
+ C=new (src)
+ C.one_access=!(req_access && req_access.len>0)
+ if(!C.one_access)
+ C.conf_access=req_access
+ else
+ C.conf_access=req_one_access
+ if(!destroyed)
+ var/obj/structure/displaycase_frame/F=new(T)
+ F.state=1
+ F.circuit=C
+ F.circuit.loc=F
+ F.update_icon()
+ else
+ C.loc=T
+ circuit=null
+ new /obj/machinery/constructable_frame/machine_frame(T)
+ del(src)
if(user.a_intent == "harm")
src.health -= W.force
src.healthcheck()
@@ -133,9 +219,6 @@
/obj/structure/displaycase/attack_paw(mob/user as mob)
return src.attack_hand(user)
-/obj/structure/displaycase/proc/getPrint(mob/user as mob)
- return md5(user:dna:uni_identity)
-
/obj/structure/displaycase/attack_hand(mob/user as mob)
if (destroyed)
if(occupant)
@@ -160,8 +243,8 @@
user << "\red Access denied."
return
- user << "\blue Your press your thumb against the fingerprint scanner, and deactivate the hover field built into the case."
if(occupant)
+ user << "\blue Your press your thumb against the fingerprint scanner, and deactivate the hover field built into the case."
dump()
update_icon()
else
diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm
index a114de5871d..366d7abeddd 100644
--- a/code/modules/research/designs.dm
+++ b/code/modules/research/designs.dm
@@ -716,6 +716,7 @@ datum/design/posibrain
//////////Mecha Module Disks///////
///////////////////////////////////
+// Ripley
datum/design/ripley_main
name = "Circuit Design (APLU \"Ripley\" Central Control module)"
desc = "Allows for the construction of a \"Ripley\" Central Control module."
@@ -734,6 +735,7 @@ datum/design/ripley_peri
materials = list("$glass" = 2000, "sacid" = 20)
build_path = "/obj/item/weapon/circuitboard/mecha/ripley/peripherals"
+// Odysseus
datum/design/odysseus_main
name = "Circuit Design (\"Odysseus\" Central Control module)"
desc = "Allows for the construction of a \"Odysseus\" Central Control module."
@@ -752,6 +754,7 @@ datum/design/odysseus_peri
materials = list("$glass" = 2000, "sacid" = 20)
build_path = "/obj/item/weapon/circuitboard/mecha/odysseus/peripherals"
+// Gygax
datum/design/gygax_main
name = "Circuit Design (\"Gygax\" Central Control module)"
desc = "Allows for the construction of a \"Gygax\" Central Control module."
@@ -779,6 +782,7 @@ datum/design/gygax_targ
materials = list("$glass" = 2000, "sacid" = 20)
build_path = "/obj/item/weapon/circuitboard/mecha/gygax/targeting"
+// Durand
datum/design/durand_main
name = "Circuit Design (\"Durand\" Central Control module)"
desc = "Allows for the construction of a \"Durand\" Central Control module."
@@ -806,6 +810,35 @@ datum/design/durand_targ
materials = list("$glass" = 2000, "sacid" = 20)
build_path = "/obj/item/weapon/circuitboard/mecha/durand/targeting"
+// Phazon
+datum/design/phazon_main
+ name = "Exosuit Design (\"Phazon\" Central Control module)"
+ desc = "Allows for the construction of a \"Phazon\" Central Control module."
+ id = "phazon_main"
+ req_tech = list("programming" = 5, "materials" = 7, "powerstorage" = 6)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/mecha/phazon/main
+
+datum/design/phazon_peri
+ name = "Exosuit Design (\"Phazon\" Peripherals Control module)"
+ desc = "Allows for the construction of a \"Phazon\" Peripheral Control module."
+ id = "phazon_peri"
+ req_tech = list("programming" = 5, "bluespace" = 4)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/mecha/phazon/peripherals
+
+datum/design/phazon_targ
+ name = "Exosuit Design (\"Phazon\" Weapons & Targeting Control module)"
+ desc = "Allows for the construction of a \"Phazon\" Weapons & Targeting Control module."
+ id = "phazon_targ"
+ req_tech = list("programming" = 5, "magnets" = 5)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/mecha/phazon/targeting
+
+// H.O.N.K.
datum/design/honker_main
name = "Circuit Design (\"H.O.N.K\" Central Control module)"
desc = "Allows for the construction of a \"H.O.N.K\" Central Control module."
@@ -832,7 +865,8 @@ datum/design/honker_targ
build_type = IMPRINTER
materials = list("$glass" = 2000, "sacid" = 20)
build_path = "/obj/item/weapon/circuitboard/mecha/honker/targeting"
-
+
+// Space pod
/datum/design/spacepod_main
name = "Circuit Design (Space Pod Mainboard)"
desc = "Allows for the construction of a Space Pod mainboard."
@@ -840,8 +874,8 @@ datum/design/honker_targ
req_tech = list("programming" = 4)
build_type = IMPRINTER
materials = list("$glass" = 2000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/mecha/pod
-
+ build_path = /obj/item/weapon/circuitboard/mecha/pod
+
////////////////////////////////////////
/////////// Mecha Equpment /////////////
////////////////////////////////////////
@@ -1985,6 +2019,24 @@ datum/design/mesons
materials = list("$metal" = 50, "$glass" = 50)
build_path = "/obj/item/clothing/glasses/meson"
+datum/design/night_vision_goggles
+ name = "Night Vision Goggles"
+ desc = "Goggles that let you see through darkness unhindered."
+ id = "night_visision_goggles"
+ req_tech = list("magnets" = 4)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 100, "$glass" = 100, "$uranium" = 1000)
+ build_path = /obj/item/clothing/glasses/night
+
+datum/design/magboots
+ name = "Magnetic Boots"
+ desc = "Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle."
+ id = "magboots"
+ req_tech = list("materials" = 4, "magnets" = 4, "engineering" = 5)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 4500, "$silver" = 1500, "$gold" = 2500)
+ build_path = /obj/item/clothing/shoes/magboots
+
datum/design/miningblueprint1
name = "Mining Schematic Disk Version 1"
desc = "Contains the schematics for a new range of Pickaxes."
@@ -2048,7 +2100,7 @@ datum/design/bluespace_crystal
name = "Artificial Bluespace Crystal"
desc = "A small blue crystal with mystical properties."
id = "bluespace_crystal"
- req_tech = list("bluespace" = 4, "materials" = 6)
+ req_tech = list("bluespace" = 3, "materials" = 5)
build_type = PROTOLATHE
materials = list("$gold" = 1500, "$diamond" = 3000, "$plasma" = 1500)
reliability_base = 100
@@ -2076,6 +2128,15 @@ datum/design/health_hud
materials = list("$metal" = 50, "$glass" = 50)
build_path = "/obj/item/clothing/glasses/hud/health"
+datum/design/health_hud_night
+ name = "Night Vision Health Scanner HUD"
+ desc = "An advanced medical head-up display that allows doctors to find patients in complete darkness."
+ id = "health_hud_night"
+ req_tech = list("biotech" = 4, "magnets" = 5)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 200, "$glass" = 200, "$uranium" = 1000, "$silver" = 250)
+ build_path = /obj/item/clothing/glasses/hud/health/night
+
datum/design/security_hud
name = "Security HUD"
desc = "A heads-up display that scans the humans in view and provides accurate data about their ID status."
@@ -2085,6 +2146,15 @@ datum/design/security_hud
materials = list("$metal" = 50, "$glass" = 50)
build_path = "/obj/item/clothing/glasses/hud/security"
+datum/design/security_hud_night
+ name = "Night Vision Security HUD"
+ desc = "A heads-up display which provides id data and vision in complete darkness."
+ id = "security_hud_night"
+ req_tech = list("magnets" = 5, "combat" = 4)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 200, "$glass" = 200, "$uranium" = 1000, "$gold" = 350)
+ build_path = /obj/item/clothing/glasses/hud/security/night
+
/////////////////////////////////////////
//////////////////Test///////////////////
/////////////////////////////////////////
diff --git a/icons/mecha/mech_construct.dmi b/icons/mecha/mech_construct.dmi
index a07c36ecf28..b2740298c2e 100644
Binary files a/icons/mecha/mech_construct.dmi and b/icons/mecha/mech_construct.dmi differ
diff --git a/icons/mecha/mech_construction.dmi b/icons/mecha/mech_construction.dmi
index 5cf5b9cae70..6e8ea53ef7a 100644
Binary files a/icons/mecha/mech_construction.dmi and b/icons/mecha/mech_construction.dmi differ
diff --git a/icons/obj/clothing/species/skrell/hats.dmi b/icons/obj/clothing/species/skrell/hats.dmi
new file mode 100644
index 00000000000..30c012ddf18
Binary files /dev/null and b/icons/obj/clothing/species/skrell/hats.dmi differ
diff --git a/icons/obj/clothing/species/skrell/suits.dmi b/icons/obj/clothing/species/skrell/suits.dmi
new file mode 100644
index 00000000000..47af90a1212
Binary files /dev/null and b/icons/obj/clothing/species/skrell/suits.dmi differ
diff --git a/icons/obj/clothing/species/tajaran/hats.dmi b/icons/obj/clothing/species/tajaran/hats.dmi
new file mode 100644
index 00000000000..224fcaee58e
Binary files /dev/null and b/icons/obj/clothing/species/tajaran/hats.dmi differ
diff --git a/icons/obj/clothing/species/tajaran/suits.dmi b/icons/obj/clothing/species/tajaran/suits.dmi
new file mode 100644
index 00000000000..3b0b4dafbd1
Binary files /dev/null and b/icons/obj/clothing/species/tajaran/suits.dmi differ
diff --git a/icons/obj/clothing/species/unathi/hats.dmi b/icons/obj/clothing/species/unathi/hats.dmi
new file mode 100644
index 00000000000..987e0accac6
Binary files /dev/null and b/icons/obj/clothing/species/unathi/hats.dmi differ
diff --git a/icons/obj/clothing/species/unathi/suits.dmi b/icons/obj/clothing/species/unathi/suits.dmi
new file mode 100644
index 00000000000..9e6217ce1b2
Binary files /dev/null and b/icons/obj/clothing/species/unathi/suits.dmi differ
diff --git a/icons/obj/stock_parts.dmi b/icons/obj/stock_parts.dmi
index 4226d924dfa..1e56e5848dc 100644
Binary files a/icons/obj/stock_parts.dmi and b/icons/obj/stock_parts.dmi differ