From c2958ce4d5c509967e7ffcf2c54e6a40513e03b3 Mon Sep 17 00:00:00 2001 From: MistakeNot4892 Date: Fri, 17 Sep 2021 10:31:24 +1000 Subject: [PATCH 1/2] Mecha Bugfixes --- code/game/mecha/mecha.dm | 52 +++++++++++++++++++++++++++------------- 1 file changed, 36 insertions(+), 16 deletions(-) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 01175eb3b08..648ce04c091 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -212,6 +212,12 @@ for(var/path in starting_equipment) var/obj/item/mecha_parts/mecha_equipment/ME = new path(src) ME.attach(src) +<<<<<<< HEAD +======= + + START_PROCESSING(SSobj, src) + +>>>>>>> 73929910166... Merge pull request #8269 from Mechoid/MechaProcessing update_transform() /obj/mecha/drain_power(var/drain_check) @@ -328,6 +334,8 @@ QDEL_NULL(spark_system) QDEL_NULL(minihud) + STOP_PROCESSING(SSobj, src) + mechas_list -= src //global mech list . = ..() @@ -917,27 +925,27 @@ if(istype(obstacle, /mob))//First we check if it is a mob. Mechs mostly shouln't go through them, even while phasing. var/mob/M = obstacle M.Move(get_step(obstacle,src.dir)) + else if(phasing && get_charge()>=phasing_energy_drain)//Phazon check. This could use an improvement elsewhere. + src.use_power(phasing_energy_drain) + phase() + . = ..(obstacle) + return else if(istype(obstacle, /obj))//Then we check for regular obstacles. var/obj/O = obstacle - - if(phasing && get_charge()>=phasing_energy_drain)//Phazon check. This could use an improvement elsewhere. - spawn() - if(can_phase) - can_phase = FALSE - flick("[initial_icon]-phase", src) - src.loc = get_step(src,src.dir) - src.use_power(phasing_energy_drain) - sleep(get_step_delay() * 3) - can_phase = TRUE - occupant_message("Phazed.") - . = ..(obstacle) - return if(istype(O, /obj/effect/portal)) //derpfix +<<<<<<< HEAD src.anchored = FALSE //I have no idea what this really fix. O.Crossed(src) spawn(0)//countering portal teleport spawn(0), hurr src.anchored = TRUE else if(O.anchored) +======= + src.anchored = 0 // Portals can only move unanchored objects. + O.Crossed(src) + spawn(0)//countering portal teleport spawn(0), hurr + src.anchored = 1 + if(O.anchored) +>>>>>>> 73929910166... Merge pull request #8269 from Mechoid/MechaProcessing obstacle.Bumped(src) else step(obstacle,src.dir) @@ -946,6 +954,18 @@ . = ..(obstacle) return +/obj/mecha/proc/phase() // Force the mecha to move forward by phasing. + set waitfor = FALSE + if(can_phase) + can_phase = FALSE + flick("[initial_icon]-phase", src) + forceMove(get_step(src,src.dir)) + sleep(get_step_delay() * 3) + can_phase = TRUE + occupant_message("Phazed.") + return TRUE // In the event this is sequenced + return FALSE + /////////////////////////////////// //////// Internal damage //////// /////////////////////////////////// @@ -1704,8 +1724,7 @@ return /obj/mecha/remove_air(amount) - var/obj/item/mecha_parts/component/gas/GC = internal_components[MECH_GAS] - if(use_internal_tank && (GC && prob(GC.get_efficiency() * 100))) + if(use_internal_tank) return cabin_air.remove(amount) else var/turf/T = get_turf(src) @@ -1714,7 +1733,8 @@ return /obj/mecha/return_air() - if(use_internal_tank) + var/obj/item/mecha_parts/component/gas/GC = internal_components[MECH_GAS] + if(use_internal_tank && (GC && prob(GC.get_efficiency() * 100))) return cabin_air return get_turf_air() From 25caea012f59b152fdd0b722ae860b16bfa20104 Mon Sep 17 00:00:00 2001 From: Aronai Sieyes Date: Mon, 27 Sep 2021 14:04:19 -0400 Subject: [PATCH 2/2] Fix merge --- code/game/mecha/mecha.dm | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 648ce04c091..c83fb398b2f 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -212,12 +212,9 @@ for(var/path in starting_equipment) var/obj/item/mecha_parts/mecha_equipment/ME = new path(src) ME.attach(src) -<<<<<<< HEAD -======= START_PROCESSING(SSobj, src) ->>>>>>> 73929910166... Merge pull request #8269 from Mechoid/MechaProcessing update_transform() /obj/mecha/drain_power(var/drain_check) @@ -933,19 +930,11 @@ else if(istype(obstacle, /obj))//Then we check for regular obstacles. var/obj/O = obstacle if(istype(O, /obj/effect/portal)) //derpfix -<<<<<<< HEAD - src.anchored = FALSE //I have no idea what this really fix. - O.Crossed(src) - spawn(0)//countering portal teleport spawn(0), hurr - src.anchored = TRUE - else if(O.anchored) -======= src.anchored = 0 // Portals can only move unanchored objects. O.Crossed(src) spawn(0)//countering portal teleport spawn(0), hurr src.anchored = 1 if(O.anchored) ->>>>>>> 73929910166... Merge pull request #8269 from Mechoid/MechaProcessing obstacle.Bumped(src) else step(obstacle,src.dir)