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