From ca521a04cb0fbc2c9411aa234712e7d89173e252 Mon Sep 17 00:00:00 2001 From: clusterfack Date: Mon, 12 Jan 2015 01:19:04 -0600 Subject: [PATCH] Made MMIs examine text show if they are locked or unlocked. Move the size examine text to the same line as the name. Made mmis/posibrains drop parts used for creating mommis that you have added to them when added to a robot. Made turfs not lose or gain gases when you change their turf. --- code/game/atoms.dm | 4 +- code/game/machinery/cryo.dm | 2 +- code/game/objects/items.dm | 5 +-- code/game/objects/items/robot/robot_parts.dm | 46 ++++++++++++-------- code/game/turfs/turf.dm | 5 ++- code/modules/mob/dead/observer/observer.dm | 3 ++ code/modules/mob/living/carbon/brain/MMI.dm | 1 + 7 files changed, 40 insertions(+), 26 deletions(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 232212f17c6..8a57c512fed 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -282,7 +282,7 @@ its easier to just keep the beam vertical. //Woo hoo. Overtime //All atoms -/atom/proc/examine(mob/user) +/atom/proc/examine(mob/user, var/size = "") //This reformat names to get a/an properly working on item descriptions when they are bloody var/f_name = "\a [src]." if(src.blood_DNA) @@ -292,7 +292,7 @@ its easier to just keep the beam vertical. f_name = "a " f_name += "blood-stained [name]!" - user << "\icon[src] That's [f_name]" + user << "\icon[src] That's [f_name]" + size if(desc) user << desc diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm index 59deb80d6a2..53bda9dd4fe 100644 --- a/code/game/machinery/cryo.dm +++ b/code/game/machinery/cryo.dm @@ -131,7 +131,7 @@ for(var/atom/movable/floater in (contents - beaker)) user << "A figure floats in the depths, they appear to be [floater.name]" if(beaker) - user << "A beaker is releasing the following chemicals into the fluids:" + user << "A beaker, releasing the following chemicals into the fluids:" for(var/datum/reagent/R in beaker.reagents.reagent_list) user << "[R.volume] units of [R.name]" else diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 5df554fb129..8291fa1c8b1 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -108,7 +108,6 @@ src.loc = T /obj/item/examine(mob/user) - ..() //TODO: Make The following code simply append to the description instead of a separate line var/size switch(src.w_class) if(1.0) @@ -128,7 +127,7 @@ pronoun = "They are" else pronoun = "It is" - user << " [pronoun] a [size] item." + ..(user, " [pronoun] a [size] item.") /obj/item/attack_ai(mob/user as mob) @@ -796,4 +795,4 @@ spawn(0) //this is needed or multiple items will be thrown sequentially and not simultaneously if(current_size >= STAGE_FOUR) throw_at(S, 14, 3) - else ..() + else ..() diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index 9c9f0b7b319..1f2b56a0f76 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -148,9 +148,9 @@ src.chest = W src.updateicon() else if(!W:wires) - user << "\blue You need to attach wires to it first!" + user << "You need to attach wires to it first!" else - user << "\blue You need to attach a cell to it first!" + user << "You need to attach a cell to it first!" if(istype(W, /obj/item/robot_parts/head)) if(src.head) return @@ -160,16 +160,17 @@ src.head = W src.updateicon() else - user << "\blue You need to attach a flash to it first!" + user << "You need to attach a flash to it first!" if(istype(W, /obj/item/device/mmi) || istype(W, /obj/item/device/mmi/posibrain)) var/obj/item/device/mmi/M = W + var/turf/T = get_turf(src) if(check_completion()) if(!istype(loc,/turf)) - user << "\red You can't put the [W] in, the frame has to be standing on the ground to be perfectly precise." + user << "You can't put the [W] in, the frame has to be standing on the ground to be perfectly precise." return if(!M.brainmob) - user << "\red Sticking an empty [W] into the frame would sort of defeat the purpose." + user << "Sticking an empty [W] into the frame would sort of defeat the purpose." return if(!M.brainmob.key) var/ghost_can_reenter = 0 @@ -183,18 +184,25 @@ return if(M.brainmob.stat == DEAD) - user << "\red Sticking a dead [W] into the frame would sort of defeat the purpose." + user << "Sticking a dead [W] into the frame would sort of defeat the purpose." return if(M.brainmob.mind in ticker.mode.head_revolutionaries) - user << "\red The frame's firmware lets out a shrill sound, and flashes 'Abnormal Memory Engram'. It refuses to accept the [W]." + user << "The frame's firmware lets out a shrill sound, and flashes 'Abnormal Memory Engram'. It refuses to accept the [W]." return if(jobban_isbanned(M.brainmob, "Cyborg")) - user << "\red This [W] does not seem to fit." + user << "This [W] does not seem to fit." return var/mob/living/silicon/robot/O = new /mob/living/silicon/robot(get_turf(loc), unfinished = 1) + + for(var/P in M.mommi_assembly_parts) //Let's give back all those mommi creation components + for(var/obj/item/L in M.contents) + if(L == P) + L.loc = T + M.contents -= L + if(!O) return user.drop_item() @@ -226,7 +234,7 @@ del(src) else - user << "\blue The MMI must go in after everything else!" + user << "The MMI must go in after everything else!" if (istype(W, /obj/item/weapon/pen)) var/t = stripped_input(user, "Enter new robot name", src.name, src.created_name, MAX_NAME_LEN) @@ -243,42 +251,42 @@ ..() if(istype(W, /obj/item/weapon/cell)) if(src.cell) - user << "\blue You have already inserted a cell!" + user << "You have already inserted a cell!" return else user.drop_item() W.loc = src src.cell = W - user << "\blue You insert the cell!" + user << "You insert the cell!" if(istype(W, /obj/item/weapon/cable_coil)) if(src.wires) - user << "\blue You have already inserted wire!" + user << "You have already inserted wire!" return else var/obj/item/weapon/cable_coil/coil = W coil.use(1) src.wires = 1.0 - user << "\blue You insert the wire!" + user << "You insert the wire!" return /obj/item/robot_parts/head/attackby(obj/item/W as obj, mob/user as mob) ..() if(istype(W, /obj/item/device/flash)) if(src.flash1 && src.flash2) - user << "\blue You have already inserted the eyes!" + user << "You have already inserted the eyes!" return else if(src.flash1) user.drop_item() W.loc = src src.flash2 = W - user << "\blue You insert the flash into the eye socket!" + user << "You insert the flash into the eye socket!" else user.drop_item() W.loc = src src.flash1 = W - user << "\blue You insert the flash into the eye socket!" + user << "You insert the flash into the eye socket!" else if(istype(W, /obj/item/weapon/stock_parts/manipulator)) - user << "\blue You install some manipulators and modify the head, creating a functional spider-bot!" + user << "You install some manipulators and modify the head, creating a functional spider-bot!" new /mob/living/simple_animal/spiderbot(get_turf(loc)) user.drop_item() del(W) @@ -289,9 +297,9 @@ /obj/item/robot_parts/attackby(obj/item/W as obj, mob/user as mob) if(istype(W,/obj/item/weapon/card/emag)) if(sabotaged) - user << "\red [src] is already sabotaged!" + user << "[src] is already sabotaged!" else - user << "\red You slide [W] into the dataport on [src] and short out the safeties." + user << "You slide [W] into the dataport on [src] and short out the safeties." sabotaged = 1 return ..() \ No newline at end of file diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index ea1a13a4159..05b8e212c2e 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -233,6 +233,7 @@ #endif var/old_lumcount = lighting_lumcount - initial(lighting_lumcount) + var/datum/gas_mixture/env //world << "Replacing [src.type] with [N]" @@ -243,6 +244,7 @@ //Despite this being called a bunch during explosions, //the zone will only really do heavy lifting once. var/turf/simulated/S = src + env = S.air //Get the air before the change if(S.zone) S.zone.rebuild() if(ispath(N, /turf/simulated/floor)) @@ -254,7 +256,8 @@ // zone.SetStatus(ZONE_ACTIVE) var/turf/simulated/W = new N( locate(src.x, src.y, src.z) ) - //W.Assimilate_Air() + if(env) + W.air = env //Copy the old environment data over if both turfs were simulated W.lighting_lumcount += old_lumcount if(old_lumcount != W.lighting_lumcount) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 1f865e1fb36..07bc4c6462e 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -465,6 +465,9 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp var/list/mobs = getmobs() var/input = input("Please, select a mob!", "Haunt", null, null) as null|anything in mobs var/mob/target = mobs[input] + if(istype(target,/mob/living/silicon/ai)) + var/mob/living/silicon/ai/M = target + target = M.eyeobj ManualFollow(target) // This is the ghost's follow verb with an argument diff --git a/code/modules/mob/living/carbon/brain/MMI.dm b/code/modules/mob/living/carbon/brain/MMI.dm index b8efdde7d92..9c464dc8d3a 100644 --- a/code/modules/mob/living/carbon/brain/MMI.dm +++ b/code/modules/mob/living/carbon/brain/MMI.dm @@ -243,3 +243,4 @@ else if(!src.brainmob.key) user << "It seems to be in a deep dream-state" //ghosted user << "*---------*" + user << "It's interface is [locked ? "unlocked" : "locked"] "