From e102d9742afd3d959d395eed76e0f99b985ea4aa Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Tue, 27 Oct 2020 10:05:24 +0100 Subject: [PATCH] [MIRROR] Various mech fixes (#1479) * Various fixes to mechs (#54595) Vehicle objects now call bumpopen() rather than Bumped() when moving into an airlock, and thus will once again open any door the pilot has access to. Closes #54480 Fixes Ripley MK-I to MK-II conversions destroying equipment. MK-I to MK-II conversions now sets the MK-II's integrity to be same percentage as the MK-I's integrity. Thus, upgrading a full-health MK-I will no longer result in a damaged MK-II. Both Ripley types no longer start with an orebox, that function has been moved to the Clarke. * Various mech fixes Co-authored-by: zxaber <37497534+zxaber@users.noreply.github.com> --- code/modules/vehicles/_vehicle.dm | 3 +- .../mecha/equipment/tools/work_tools.dm | 68 +++++++++---------- code/modules/vehicles/mecha/working/clarke.dm | 1 + code/modules/vehicles/mecha/working/ripley.dm | 2 - .../modules/vehicles/mecha/working/working.dm | 4 -- 5 files changed, 37 insertions(+), 41 deletions(-) diff --git a/code/modules/vehicles/_vehicle.dm b/code/modules/vehicles/_vehicle.dm index de0c34cc12c..7b039127f4a 100644 --- a/code/modules/vehicles/_vehicle.dm +++ b/code/modules/vehicles/_vehicle.dm @@ -172,8 +172,9 @@ . = ..() if(emulate_door_bumps) if(istype(A, /obj/machinery/door)) + var/obj/machinery/door/conditionalwall = A for(var/m in occupants) - A.Bumped(m) + conditionalwall.bumpopen(m) /obj/vehicle/Move(newloc, dir) . = ..() diff --git a/code/modules/vehicles/mecha/equipment/tools/work_tools.dm b/code/modules/vehicles/mecha/equipment/tools/work_tools.dm index 662b2de5267..d04fc2a933b 100644 --- a/code/modules/vehicles/mecha/equipment/tools/work_tools.dm +++ b/code/modules/vehicles/mecha/equipment/tools/work_tools.dm @@ -336,39 +336,39 @@ return FALSE return TRUE -/obj/item/mecha_parts/mecha_equipment/ripleyupgrade/attach(obj/vehicle/sealed/mecha/M) - var/obj/vehicle/sealed/mecha/working/ripley/mk2/N = new (get_turf(M),1) - if(!N) +/obj/item/mecha_parts/mecha_equipment/ripleyupgrade/attach(obj/vehicle/sealed/mecha/markone) + var/obj/vehicle/sealed/mecha/working/ripley/mk2/marktwo = new (get_turf(markone),1) + if(!marktwo) return - QDEL_NULL(N.cell) - if (M.cell) - N.cell = M.cell - M.cell.forceMove(N) - M.cell = null - QDEL_NULL(N.scanmod) - if (M.scanmod) - N.scanmod = M.scanmod - M.scanmod.forceMove(N) - M.scanmod = null - QDEL_NULL(N.capacitor) - if (M.capacitor) - N.capacitor = M.capacitor - M.capacitor.forceMove(N) - M.capacitor = null - N.update_part_values() - for(var/obj/item/mecha_parts/E in M.contents) - if(istype(E, /obj/item/mecha_parts/concealed_weapon_bay)) //why is the bay not just a variable change who did this - E.forceMove(N) - for(var/obj/item/mecha_parts/mecha_equipment/E in M.equipment) //Move the equipment over... - E.detach(M) - E.attach(N) - N.dna_lock = M.dna_lock - N.mecha_flags = M.mecha_flags - N.strafe = M.strafe - N.obj_integrity = M.obj_integrity //This is not a repair tool - if(M.name != initial(M.name)) - N.name = M.name - M.wreckage = FALSE - qdel(M) - playsound(get_turf(N),'sound/items/ratchet.ogg',50,TRUE) + QDEL_NULL(marktwo.cell) + if (markone.cell) + marktwo.cell = markone.cell + markone.cell.forceMove(marktwo) + markone.cell = null + QDEL_NULL(marktwo.scanmod) + if (markone.scanmod) + marktwo.scanmod = markone.scanmod + markone.scanmod.forceMove(marktwo) + markone.scanmod = null + QDEL_NULL(marktwo.capacitor) + if (markone.capacitor) + marktwo.capacitor = markone.capacitor + markone.capacitor.forceMove(marktwo) + markone.capacitor = null + marktwo.update_part_values() + for(var/obj/item/mecha_parts/equipment in markone.contents) + if(istype(equipment, /obj/item/mecha_parts/concealed_weapon_bay)) //why is the bay not just a variable change who did this + equipment.forceMove(marktwo) + for(var/obj/item/mecha_parts/mecha_equipment/equipment in markone.equipment) //Move the equipment over... + equipment.detach(marktwo) + equipment.attach(marktwo) + marktwo.dna_lock = markone.dna_lock + marktwo.mecha_flags = markone.mecha_flags + marktwo.strafe = markone.strafe + marktwo.obj_integrity = round((markone.obj_integrity / markone.max_integrity) * marktwo.obj_integrity) //Integ set to the same percentage integ as the old mecha, rounded to be whole number + if(markone.name != initial(markone.name)) + marktwo.name = markone.name + markone.wreckage = FALSE + qdel(markone) + playsound(get_turf(marktwo),'sound/items/ratchet.ogg',50,TRUE) return diff --git a/code/modules/vehicles/mecha/working/clarke.dm b/code/modules/vehicles/mecha/working/clarke.dm index 36b6a0d4356..dadc3c5a723 100644 --- a/code/modules/vehicles/mecha/working/clarke.dm +++ b/code/modules/vehicles/mecha/working/clarke.dm @@ -18,6 +18,7 @@ /obj/vehicle/sealed/mecha/working/clarke/Initialize() . = ..() + box = new(src) var/obj/item/mecha_parts/mecha_equipment/orebox_manager/ME = new(src) ME.attach(src) diff --git a/code/modules/vehicles/mecha/working/ripley.dm b/code/modules/vehicles/mecha/working/ripley.dm index 363485cc6bf..94c96bc89de 100644 --- a/code/modules/vehicles/mecha/working/ripley.dm +++ b/code/modules/vehicles/mecha/working/ripley.dm @@ -44,8 +44,6 @@ /obj/vehicle/sealed/mecha/working/ripley/Initialize() . = ..() - //Add ore box to cargo, here because the clarke has a unremovable box - LAZYADD(cargo, box) AddComponent(/datum/component/armor_plate,3,/obj/item/stack/sheet/animalhide/goliath_hide,list(MELEE = 10, BULLET = 5, LASER = 5)) diff --git a/code/modules/vehicles/mecha/working/working.dm b/code/modules/vehicles/mecha/working/working.dm index de496d8e51f..72952f1f800 100644 --- a/code/modules/vehicles/mecha/working/working.dm +++ b/code/modules/vehicles/mecha/working/working.dm @@ -4,10 +4,6 @@ /// Handles an internal ore box for working mechs var/obj/structure/ore_box/box -/obj/vehicle/sealed/mecha/working/Initialize() - . = ..() - box = new(src) - /obj/vehicle/sealed/mecha/working/Destroy() QDEL_NULL(box) return ..()