From 234af8bc9e82d0b801e9d410b3058cb50ff893c2 Mon Sep 17 00:00:00 2001 From: Mechoid Date: Sat, 20 Apr 2019 00:33:04 -0700 Subject: [PATCH 1/4] Multi-Tile movement, and a shuttle mechanized vehicle to use it. --- code/_onclick/adjacent.dm | 2 +- code/datums/riding.dm | 2 +- code/game/atoms_movable.dm | 57 ++++++---- code/game/mecha/equipment/weapons/weapons.dm | 25 +++-- code/game/mecha/mecha.dm | 24 +++-- code/game/mecha/mecha_wreckage.dm | 8 ++ code/game/mecha/medical/medical.dm | 7 +- .../game/mecha/{working => space}/hoverpod.dm | 12 ++- code/game/mecha/space/shuttle.dm | 99 ++++++++++++++++++ code/game/objects/effects/effect_system.dm | 4 + code/modules/multi-tile/multi-tile.dm | 28 +++++ code/modules/projectiles/projectile.dm | 21 +++- code/modules/vehicles/vehicle.dm | 1 - icons/mecha/mecha64x64.dmi | Bin 8416 -> 37695 bytes icons/obj/vehicles_64x64.dmi | Bin 19409 -> 19406 bytes polaris.dme | 4 +- 16 files changed, 246 insertions(+), 48 deletions(-) rename code/game/mecha/{working => space}/hoverpod.dm (91%) create mode 100644 code/game/mecha/space/shuttle.dm create mode 100644 code/modules/multi-tile/multi-tile.dm diff --git a/code/_onclick/adjacent.dm b/code/_onclick/adjacent.dm index 47e7e99a92..bca457b20e 100644 --- a/code/_onclick/adjacent.dm +++ b/code/_onclick/adjacent.dm @@ -83,7 +83,7 @@ Quick adjacency (to turf): if(!isturf(loc)) return 0 for(var/turf/T in locs) if(isnull(T)) continue - if(T.Adjacent(neighbor,src)) return 1 + if(T.Adjacent(neighbor,T)) return 1 return 0 // This is necessary for storage items not on your person. diff --git a/code/datums/riding.dm b/code/datums/riding.dm index 746cc6dcf7..4f9513397a 100644 --- a/code/datums/riding.dm +++ b/code/datums/riding.dm @@ -101,7 +101,7 @@ if(keycheck(user)) if(!Process_Spacemove(direction) || !isturf(ridden.loc)) return - step(ridden, direction) + ridden.Move(get_step(ridden, direction)) handle_vehicle_layer() handle_vehicle_offsets() diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index d3897f3993..595da9a1de 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -65,41 +65,52 @@ if(!newloc.Enter(src, src.loc)) return + + if(!check_multi_tile_move_density_dir(direct, locs)) // We're big, and we can't move that way. + return + // Past this is the point of no return - var/atom/oldloc = loc - var/area/oldarea = get_area(oldloc) - var/area/newarea = get_area(newloc) - loc = newloc - . = TRUE - oldloc.Exited(src, newloc) - if(oldarea != newarea) - oldarea.Exited(src, newloc) + if(!locs || locs.len <= 1) // We're not a multi-tile object. + var/atom/oldloc = loc + var/area/oldarea = get_area(oldloc) + var/area/newarea = get_area(newloc) + loc = newloc + . = TRUE + oldloc.Exited(src, newloc) + if(oldarea != newarea) + oldarea.Exited(src, newloc) - for(var/i in oldloc) - if(i == src) // Multi tile objects - continue - var/atom/movable/thing = i - thing.Uncrossed(src) + for(var/i in oldloc) + if(i == src) // Multi tile objects + continue + var/atom/movable/thing = i + thing.Uncrossed(src) - newloc.Entered(src, oldloc) - if(oldarea != newarea) - newarea.Entered(src, oldloc) + newloc.Entered(src, oldloc) + if(oldarea != newarea) + newarea.Entered(src, oldloc) + + for(var/i in loc) + if(i == src) // Multi tile objects + continue + var/atom/movable/thing = i + thing.Crossed(src) + + else if(newloc) // We're a multi-tile object. + . = doMove(newloc) - for(var/i in loc) - if(i == src) // Multi tile objects - continue - var/atom/movable/thing = i - thing.Crossed(src) // //////////////////////////////////////// -/atom/movable/Move(atom/newloc, direct) +/atom/movable/Move(atom/newloc, direct = 0) if(!loc || !newloc) return FALSE var/atom/oldloc = loc if(loc != newloc) - if (!(direct & (direct - 1))) //Cardinal move + if(!direct) + direct = get_dir(oldloc, newloc) + if (direct in list(NORTH, SOUTH, EAST, WEST, UP, DOWN)) //Cardinal move . = ..() else //Diagonal move, split it into cardinal moves moving_diagonally = FIRST_DIAG_STEP diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index 2be7566822..d697560541 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -34,11 +34,18 @@ var/turf/aimloc = targloc if(deviation) aimloc = locate(targloc.x+GaussRandRound(deviation,1),targloc.y+GaussRandRound(deviation,1),targloc.z) - if(!aimloc || aimloc == curloc) + if(!aimloc || aimloc == curloc || (locs && aimloc in locs)) break playsound(chassis, fire_sound, fire_volume, 1) projectiles-- - var/P = new projectile(curloc) + var/turf/projectile_turf + if(chassis.locs && chassis.locs.len) // Multi tile. + for(var/turf/Tloc in chassis.locs) + if(get_dist(Tloc, aimloc) < get_dist(loc, aimloc)) + projectile_turf = get_turf(Tloc) + if(!projectile_turf) + projectile_turf = get_turf(curloc) + var/P = new projectile(projectile_turf) Fire(P, target, params) if(i == 1) set_ready_state(0) @@ -61,11 +68,14 @@ return /obj/item/mecha_parts/mecha_equipment/weapon/proc/Fire(atom/A, atom/target, params) - var/obj/item/projectile/P = A - P.dispersion = deviation - process_accuracy(P, chassis.occupant, target) - P.preparePixelProjectile(target, chassis.occupant, params) - P.fire() + if(istype(A, /obj/item/projectile)) // Sanity. + var/obj/item/projectile/P = A + P.dispersion = deviation + process_accuracy(P, chassis.occupant, target) + P.launch_projectile_from_turf(target, chassis.occupant.zone_sel.selecting, chassis.occupant, params) + else if(istype(A, /atom/movable)) + var/atom/movable/AM = A + AM.throw_at(target, 7, 1, chassis) /obj/item/mecha_parts/mecha_equipment/weapon/proc/process_accuracy(obj/projectile, mob/living/user, atom/target) var/obj/item/projectile/P = projectile @@ -415,6 +425,7 @@ var/heavy_blast = 1 var/light_blast = 2 var/flash_blast = 4 + does_spin = FALSE // No fun corkscrew missiles. /obj/item/missile/proc/warhead_special(var/target) explosion(target, devastation, heavy_blast, light_blast, flash_blast) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 9b17cb8613..b556286292 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -49,6 +49,8 @@ var/mech_faction = null var/firstactivation = 0 //It's simple. If it's 0, no one entered it yet. Otherwise someone entered it at least once. + var/stomp_sound = 'sound/mecha/mechstep.ogg' + var/swivel_sound = 'sound/mecha/mechturn.ogg' //inner atmos var/use_internal_tank = 0 @@ -441,21 +443,24 @@ /obj/mecha/proc/mechturn(direction) set_dir(direction) - playsound(src,'sound/mecha/mechturn.ogg',40,1) + if(swivel_sound) + playsound(src,swivel_sound,40,1) return 1 /obj/mecha/proc/mechstep(direction) - var/result = step(src,direction) - if(result) - playsound(src,"mechstep",40,1) + var/result = get_step(src,direction) + if(result && Move(result)) + if(stomp_sound) + playsound(src,stomp_sound,40,1) handle_equipment_movement() return result /obj/mecha/proc/mechsteprand() - var/result = step_rand(src) - if(result) - playsound(src,"mechstep",40,1) + var/result = get_step_rand(src) + if(result && Move(result)) + if(stomp_sound) + playsound(src,stomp_sound,40,1) handle_equipment_movement() return result @@ -473,9 +478,10 @@ else //I have no idea why I disabled this obstacle.Bumped(src) else if(istype(obstacle, /mob)) - step(obstacle,src.dir) + var/mob/M = obstacle + M.Move(get_step(obstacle,src.dir)) else - obstacle.Bumped(src) + . = ..(obstacle) return /////////////////////////////////// diff --git a/code/game/mecha/mecha_wreckage.dm b/code/game/mecha/mecha_wreckage.dm index 5a95b9017c..b77ed8004d 100644 --- a/code/game/mecha/mecha_wreckage.dm +++ b/code/game/mecha/mecha_wreckage.dm @@ -217,3 +217,11 @@ name = "Janus wreckage" icon_state = "janus-broken" description_info = "Due to the incredibly intricate design of this exosuit, it is impossible to salvage components from it." + +/obj/effect/decal/mecha_wreckage/shuttlecraft + name = "Shuttlecraft wreckage" + desc = "Remains of some unfortunate shuttlecraft. Completely unrepairable." + icon = 'icons/mecha/mecha64x64.dmi' + icon_state = "shuttle_standard-broken" + bound_width = 64 + bound_height = 64 diff --git a/code/game/mecha/medical/medical.dm b/code/game/mecha/medical/medical.dm index 90ab62681a..6e9dee5047 100644 --- a/code/game/mecha/medical/medical.dm +++ b/code/game/mecha/medical/medical.dm @@ -5,6 +5,8 @@ max_universal_equip = 1 max_special_equip = 1 + stomp_sound = 'sound/mecha/mechmove01.ogg' + cargo_capacity = 1 /obj/mecha/medical/Initialize() @@ -13,7 +15,7 @@ if(isPlayerLevel(T.z)) new /obj/item/mecha_parts/mecha_tracking(src) - +/* // One horrific bastardization of glorious inheritence dead. A billion to go. ~Mech /obj/mecha/medical/mechturn(direction) set_dir(direction) playsound(src,'sound/mecha/mechmove01.ogg',40,1) @@ -29,4 +31,5 @@ var/result = step_rand(src) if(result) playsound(src,'sound/mecha/mechstep.ogg',25,1) - return result \ No newline at end of file + return result +*/ diff --git a/code/game/mecha/working/hoverpod.dm b/code/game/mecha/space/hoverpod.dm similarity index 91% rename from code/game/mecha/working/hoverpod.dm rename to code/game/mecha/space/hoverpod.dm index 8c19c2b004..85fc59d564 100644 --- a/code/game/mecha/working/hoverpod.dm +++ b/code/game/mecha/space/hoverpod.dm @@ -17,6 +17,9 @@ var/datum/effect/effect/system/ion_trail_follow/ion_trail var/stabilization_enabled = 1 + stomp_sound = 'sound/machines/hiss.ogg' + swivel_sound = null + max_hull_equip = 2 max_weapon_equip = 0 max_utility_equip = 2 @@ -49,7 +52,7 @@ output += ..() return output -//No space drifting +// No space drifting /obj/mecha/working/hoverpod/check_for_support() //does the hoverpod have enough charge left to stabilize itself? if (!has_charge(step_energy_drain)) @@ -62,6 +65,11 @@ return ..() +// No falling if we've got our boosters on +/obj/mecha/working/hoverpod/can_fall() + return (stabilization_enabled && has_charge(step_energy_drain)) + +/* // One horrific bastardization of glorious inheritence dead. A billion to go. ~Mech //these three procs overriden to play different sounds /obj/mecha/working/hoverpod/mechturn(direction) set_dir(direction) @@ -80,7 +88,7 @@ if(result) playsound(src,'sound/machines/hiss.ogg',40,1) return result - +*/ //Hoverpod variants /obj/mecha/working/hoverpod/combatpod diff --git a/code/game/mecha/space/shuttle.dm b/code/game/mecha/space/shuttle.dm new file mode 100644 index 0000000000..7e361ece0c --- /dev/null +++ b/code/game/mecha/space/shuttle.dm @@ -0,0 +1,99 @@ +/obj/mecha/working/hoverpod/shuttlecraft + desc = "A more advanced variant of the hoverpod." + name = "Shuttle" + catalogue_data = list(/datum/category_item/catalogue/technology/hoverpod) + icon = 'icons/mecha/mecha64x64.dmi' + icon_state = "shuttle_standard" + initial_icon = "shuttle_standard" + internal_damage_threshold = 60 + step_in = 2 + step_energy_drain = 5 + max_temperature = 20000 + health = 300 + maxhealth = 300 + infra_luminosity = 6 + wreckage = /obj/effect/decal/mecha_wreckage/shuttlecraft + cargo_capacity = 3 + max_equip = 3 + + opacity = FALSE + + stomp_sound = 'sound/machines/generator/generator_end.ogg' + swivel_sound = 'sound/machines/hiss.ogg' + + // Paint colors! Null if not set. + var/base_paint + var/engine_paint + var/central_paint + var/front_paint + + var/image/base_paint_mask + var/image/engine_paint_mask + var/image/central_paint_mask + var/image/front_paint_mask + + bound_height = 64 + bound_width = 64 + + max_hull_equip = 2 + max_weapon_equip = 1 + max_utility_equip = 2 + max_universal_equip = 1 + max_special_equip = 1 + +/obj/mecha/working/hoverpod/Initialize() + ..() + ion_trail.stop() + +/obj/mecha/working/hoverpod/shuttlecraft/moved_inside(var/mob/living/carbon/human/H as mob) + . = ..(H) + if(.) + ion_trail.start() + +/obj/mecha/working/hoverpod/shuttlecraft/go_out() + . = ..() + if(!occupant) + ion_trail.stop() + +/obj/mecha/working/hoverpod/shuttlecraft/update_icon() + overlays.Cut() + ..() + + if(base_paint) + if(!base_paint_mask) + base_paint_mask = image(icon, "[initial_icon]-mask+base", src.layer + 1) + base_paint_mask.color = base_paint + overlays |= base_paint_mask + if(front_paint) + if(!front_paint_mask) + front_paint_mask = image(icon, "[initial_icon]-mask+front", src.layer + 1) + front_paint_mask.color = front_paint + overlays |= front_paint_mask + if(engine_paint) + if(!engine_paint_mask) + engine_paint_mask = image(icon, "[initial_icon]-mask+engine", src.layer + 1) + engine_paint_mask.color = engine_paint + overlays |= engine_paint_mask + if(central_paint) + if(!engine_paint_mask) + central_paint_mask = image(icon, "[initial_icon]-mask+central", src.layer + 2) + central_paint_mask.color = central_paint + overlays |= central_paint_mask + +/obj/mecha/working/hoverpod/shuttlecraft/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W,/obj/item/device/multitool) && state == 1) + var/new_paint_location = input("Please select a target zone.", "Paint Zone", null) as null|anything in list("Central", "Engine", "Base", "Front", "CANCEL") + if(new_paint_location && new_paint_location != "CANCEL") + var/new_paint_color = input("Please select a paint color.", "Paint Color", null) as color|null + if(new_paint_color) + switch(new_paint_location) + if("Central") + central_paint = new_paint_color + if("Engine") + engine_paint = new_paint_color + if("Front") + front_paint = new_paint_color + if("Base") + base_paint = new_paint_color + update_icon() + else ..() diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index f21d6443fb..551449a8fb 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -408,6 +408,10 @@ steam.start() -- spawns the effect src.processing = 0 spawn(0) var/turf/T = get_turf(src.holder) + if(istype(holder, /atom/movable)) + var/atom/movable/AM = holder + if(AM.locs && AM.locs.len) + T = pick(AM.locs) if(T != src.oldposition) if(isturf(T)) var/obj/effect/effect/ion_trails/I = new /obj/effect/effect/ion_trails(src.oldposition) diff --git a/code/modules/multi-tile/multi-tile.dm b/code/modules/multi-tile/multi-tile.dm new file mode 100644 index 0000000000..b8dd9ef512 --- /dev/null +++ b/code/modules/multi-tile/multi-tile.dm @@ -0,0 +1,28 @@ +/* + * This is the home of multi-tile movement checks, and thus here be dragons. You are warned. + */ + +/atom/movable/proc/check_multi_tile_move_density_dir(var/stepdir) + if(!locs || !locs.len) + return TRUE + + if(bound_height > 32 || bound_width > 32) + var/safe_move = TRUE + var/list/checked_turfs = list() + for(var/turf/T in locs) + var/turf/Tcheck = get_step(T, stepdir) + if(Tcheck in checked_turfs) + continue + if(Tcheck in locs) + checked_turfs |= Tcheck + continue + if(!(Tcheck in locs)) + if(!T.Exit(src, Tcheck)) + safe_move = FALSE + if(!Tcheck.Enter(src, T)) + safe_move = FALSE + checked_turfs |= Tcheck + if(!safe_move) + break + return safe_move + return TRUE diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index e180ac271c..d74bfb9caf 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -346,10 +346,18 @@ /obj/item/projectile/proc/preparePixelProjectile(atom/target, atom/source, params, spread = 0) var/turf/curloc = get_turf(source) var/turf/targloc = get_turf(target) + + if(istype(source, /atom/movable)) + var/atom/movable/MT = source + if(MT.locs && MT.locs.len) // Multi tile! + for(var/turf/T in MT.locs) + if(get_dist(T, target) < get_turf(curloc)) + curloc = get_turf(T) + trajectory_ignore_forcemove = TRUE forceMove(get_turf(source)) trajectory_ignore_forcemove = FALSE - starting = get_turf(source) + starting = curloc original = target if(targloc || !params) yo = targloc.y - curloc.y @@ -651,3 +659,14 @@ silenced = launcher.silenced return launch_projectile(target, target_zone, user, params, angle_override, forced_spread) + +/obj/item/projectile/proc/launch_projectile_from_turf(atom/target, target_zone, mob/user, params, angle_override, forced_spread = 0) + original = target + def_zone = check_zone(target_zone) + firer = user + var/direct_target + if(get_turf(target) == get_turf(src)) + direct_target = target + + preparePixelProjectile(target, get_turf(src), params, forced_spread) + return fire(angle_override, direct_target) diff --git a/code/modules/vehicles/vehicle.dm b/code/modules/vehicles/vehicle.dm index 15d2b21449..7f884698fd 100644 --- a/code/modules/vehicles/vehicle.dm +++ b/code/modules/vehicles/vehicle.dm @@ -81,7 +81,6 @@ if(riding_datum) riding_datum.handle_ride(user, direction) - /obj/vehicle/Moved() . = ..() if(riding_datum) diff --git a/icons/mecha/mecha64x64.dmi b/icons/mecha/mecha64x64.dmi index 37c60a6286aadf2cfada92a02aa57ccce0286340..141724e4adf8d86a7776e57e5cc419369f17307e 100644 GIT binary patch literal 37695 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 literal 8416 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 Il`X>l2Y-hV5dZ)H diff --git a/icons/obj/vehicles_64x64.dmi b/icons/obj/vehicles_64x64.dmi index 98ed024d68e313003f77b2f61f0483d51fce5506..2558d66eedaaf2724a9d32bf773fc04237b5fc23 100644 GIT binary patch delta 273 zcmV+s0q*|MmjTX~0g&i__s{xK#rR zxN>78hK2kBsbQ2RJhW7de{b;-L&P`}7foi`bNk55?MSSmO`M4JHs&qpM%9&A3V-Ty zc2SwhZ4&yN<)99^c_fXI25jh@&N6d2%am?94QG2TOXy+`1BG^f77BT_p*s!61B0`& zZlQ$AeD0anN2pMzPwoqE)cb|H1lA+4GXgs&us(qehS}M>7T!1*5{86B7AQ8AsPd&d z9A-O3+ZT{v>=j-(?kYx0Re=7V{m&uKt?@>A3J8AbDR8#wNpSAzNpL25y`5CB@7*vG XQL?`Okv9N?fZvq^*KlgH>;dITIV*v( delta 276 zcmV+v0qg$GmjTh20g&i_`+8JZbVOxyV{&P5bZKvH004NLrIgDG!Y~j;*U49ex~Hxp^?T8HjnZTy4Z+z2avujjk&(6X7V} z?4mQ9yCe=d%R%pR`$!tAEV$4+o>b;>mTA+p8qRh`mC(i#1I2EC6bf~9VK9pPp3YfW zpP_`xey*9;2dGfH5APFiRQ^H(0xJpZn7~d5Y)D|Ees=t>h4dp|wyjSd6SkV7*i@m4 zm~L^HdoRY_g9Kxb@WOFNu}0|v%>V3vK6x&Ux64yNa7{;nGfzi?^H4{Ev(oGCq=J2a a4Fi#E7Wbd>2IkKOf%Z Date: Wed, 1 May 2019 01:36:26 -0700 Subject: [PATCH 2/4] Fix a stupid error. --- polaris.dme | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/polaris.dme b/polaris.dme index 01c173ddbf..a0326489fd 100644 --- a/polaris.dme +++ b/polaris.dme @@ -2163,7 +2163,8 @@ #include "code\modules\modular_computers\NTNet\emails\email_account.dm" #include "code\modules\modular_computers\NTNet\emails\email_message.dm" #include "code\modules\modular_computers\NTNet\NTNRC\conversation.dm" -#include "code\modules\multi-tile\multi-tile.dm"#include "code\modules\multiz\_stubs.dm" +#include "code\modules\multi-tile\multi-tile.dm" +#include "code\modules\multiz\_stubs.dm" #include "code\modules\multiz\basic.dm" #include "code\modules\multiz\hoist.dm" #include "code\modules\multiz\movement.dm" From 3d49cdb59ad3e124d86b9606c31c3fb469c55124 Mon Sep 17 00:00:00 2001 From: Mechoid Date: Thu, 2 May 2019 19:39:49 -0700 Subject: [PATCH 3/4] Don't ask me why it works, I don't understand. --- code/game/atoms_movable.dm | 9 ++++++++- code/game/mecha/equipment/mecha_equipment.dm | 2 -- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 595da9a1de..7f9a528717 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -110,7 +110,7 @@ if(loc != newloc) if(!direct) direct = get_dir(oldloc, newloc) - if (direct in list(NORTH, SOUTH, EAST, WEST, UP, DOWN)) //Cardinal move + if (!(direct & (direct - 1))) //Cardinal move . = ..() else //Diagonal move, split it into cardinal moves moving_diagonally = FIRST_DIAG_STEP @@ -200,6 +200,13 @@ . = TRUE return CanPass(AM, loc) +/atom/movable/CanPass(atom/movable/mover, turf/target) + . = ..() + if(locs && locs.len >= 2) // If something is standing on top of us, let them pass. + if(mover.loc in locs) + . = TRUE + return . + //oldloc = old location on atom, inserted when forceMove is called and ONLY when forceMove is called! /atom/movable/Crossed(atom/movable/AM, oldloc) return diff --git a/code/game/mecha/equipment/mecha_equipment.dm b/code/game/mecha/equipment/mecha_equipment.dm index 7652e98571..35ee1cd7b6 100644 --- a/code/game/mecha/equipment/mecha_equipment.dm +++ b/code/game/mecha/equipment/mecha_equipment.dm @@ -205,13 +205,11 @@ set_ready_state(1) return - /obj/item/mecha_parts/mecha_equipment/Topic(href,href_list) if(href_list["detach"]) src.detach() return - /obj/item/mecha_parts/mecha_equipment/proc/set_ready_state(state) equip_ready = state if(chassis) From c8a4190f876c913cee201d5e3ec49b55a0ad263d Mon Sep 17 00:00:00 2001 From: Mechoid Date: Fri, 3 May 2019 21:27:58 -0700 Subject: [PATCH 4/4] Fix Windows, I don't know why it worked without this when it didn't before but fuck if I question BYOND today. --- code/_onclick/adjacent.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/_onclick/adjacent.dm b/code/_onclick/adjacent.dm index bca457b20e..47e7e99a92 100644 --- a/code/_onclick/adjacent.dm +++ b/code/_onclick/adjacent.dm @@ -83,7 +83,7 @@ Quick adjacency (to turf): if(!isturf(loc)) return 0 for(var/turf/T in locs) if(isnull(T)) continue - if(T.Adjacent(neighbor,T)) return 1 + if(T.Adjacent(neighbor,src)) return 1 return 0 // This is necessary for storage items not on your person.