From beaaaa9f8a5e59c90aca119e8cf89528fa5ef6ca Mon Sep 17 00:00:00 2001 From: PsiOmegaDelta Date: Tue, 30 Jun 2015 14:52:37 +0200 Subject: [PATCH 1/7] Portable turrets are now (more or less) a single entity --- code/game/machinery/portable_turret.dm | 130 +++++++++---------------- 1 file changed, 47 insertions(+), 83 deletions(-) diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index 1c5c8766de..d92bd8de2d 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -6,10 +6,9 @@ /obj/machinery/porta_turret name = "turret" icon = 'icons/obj/turrets.dmi' - icon_state = "grey_target_prism" + icon_state = "turretCover" anchored = 1 - layer = 3 - invisibility = INVISIBILITY_LEVEL_TWO //the turret is invisible if it's inside its cover + density = 1 use_power = 1 //this turret uses and requires power idle_power_usage = 50 //when inactive, this turret takes up constant 50 Equipment power @@ -34,7 +33,6 @@ var/iconholder = null //holder for the icon_state. 1 for orange sprite, null for blue. var/egun = null //holder to handle certain guns switching bullettypes - var/obj/machinery/porta_turret_cover/cover = null //the cover that is covering this turret var/last_fired = 0 //1: if the turret is cooling down from a shot, 0: turret is ready to fire var/shot_delay = 15 //1.5 seconds between each shot @@ -66,16 +64,18 @@ /obj/machinery/porta_turret/New() ..() - icon_state = "grey_target_prism" //Sets up a spark system spark_system = new /datum/effect/effect/system/spark_spread spark_system.set_up(5, 0, src) spark_system.attach(src) - cover = new /obj/machinery/porta_turret_cover(loc) - cover.Parent_Turret = src setup() +/obj/machinery/porta_turret/Destroy() + qdel(spark_system) + spark_system = null + . = ..() + /obj/machinery/porta_turret/proc/setup() var/obj/item/weapon/gun/energy/E = installation //All energy-based weapons are applicable //var/obj/item/ammo_casing/shottype = E.projectile_type @@ -127,31 +127,30 @@ eshot_sound = 'sound/weapons/Laser.ogg' egun = 1 +var/list/turret_icons + /obj/machinery/porta_turret/update_icon() - if(!anchored) - icon_state = "turretCover" - return + if(!turret_icons) + turret_icons = list() + turret_icons["open"] = image(icon, "openTurretCover") + + underlays.Cut() + underlays += turret_icons["open"] + if(stat & BROKEN) icon_state = "destroyed_target_prism" - else - if(powered()) - if(enabled) - if(iconholder) - //lasers have a orange icon - icon_state = "orange_target_prism" - else - //almost everything has a blue icon - icon_state = "target_prism" + else if(raised || raising) + if(powered() && enabled) + if(iconholder) + //lasers have a orange icon + icon_state = "orange_target_prism" else - icon_state = "grey_target_prism" + //almost everything has a blue icon + icon_state = "target_prism" else icon_state = "grey_target_prism" - -/obj/machinery/porta_turret/Destroy() - //deletes its own cover with it - qdel(cover) - cover = null - ..() + else + icon_state = "turretCover" /obj/machinery/porta_turret/proc/isLocked(mob/user) if(ailock && user.isSilicon()) @@ -310,17 +309,13 @@ if(!anchored) playsound(loc, 'sound/items/Ratchet.ogg', 100, 1) anchored = 1 - invisibility = INVISIBILITY_LEVEL_TWO update_icon() user << "You secure the exterior bolts on the turret." - create_cover() else if(anchored) playsound(loc, 'sound/items/Ratchet.ogg', 100, 1) anchored = 0 user << "You unsecure the exterior bolts on the turret." - invisibility = 0 update_icon() - qdel(cover) //deletes the cover, and the turret instance itself becomes its own cover. wrenching = 0 else if(istype(I, /obj/item/weapon/card/id)||istype(I, /obj/item/device/pda)) @@ -345,6 +340,9 @@ ..() /obj/machinery/porta_turret/proc/take_damage(var/force) + if(!raised && !raising) + force = force / 8 + health -= force if (force > 5 && prob(45)) spark_system.start() @@ -352,10 +350,12 @@ die() //the death process :( /obj/machinery/porta_turret/bullet_act(obj/item/projectile/Proj) - if(Proj.damage_type == HALLOSS) return + if(!raised && !raising) + return + if(enabled) if(!attacked && !emagged) attacked = 1 @@ -403,28 +403,15 @@ health = 0 density = 0 stat |= BROKEN //enables the BROKEN bit - invisibility = 0 spark_system.start() //creates some sparks because they look cool density = 1 update_icon() - qdel(cover) //deletes the cover - no need on keeping it there! - -/obj/machinery/porta_turret/proc/create_cover() - if(cover == null && anchored) - cover = new /obj/machinery/porta_turret_cover(loc) //if the turret has no cover and is anchored, give it a cover - cover.Parent_Turret = src //assign the cover its Parent_Turret, which would be this (src) /obj/machinery/porta_turret/process() //the main machinery process set background = BACKGROUND_ENABLED - if(cover == null && anchored) //if it has no cover and is anchored - if(stat & BROKEN) //if the turret is borked - qdel(cover) //delete its cover, assuming it has one. Workaround for a pesky little bug - else - create_cover() - if(stat & (NOPOWER|BROKEN)) //if the turret has no power or is broken, make the turret pop down if it hasn't already popDown() @@ -536,14 +523,17 @@ return if(stat & BROKEN) return - invisibility = 0 raising = 1 - flick("popup", cover) + update_icon() + + var/atom/flick_holder = PoolOrNew(/atom/movable/porta_turret_cover, loc) + flick_holder.layer = layer + 0.1 + flick("popup", flick_holder) sleep(10) + qdel(flick_holder) + raising = 0 - cover.icon_state = "openTurretCover" raised = 1 - layer = 4 update_icon() /obj/machinery/porta_turret/proc/popDown() //pops the turret down @@ -554,14 +544,17 @@ return if(stat & BROKEN) return - layer = 3 raising = 1 - flick("popdown", cover) + update_icon() + + var/atom/flick_holder = PoolOrNew(/atom/movable/porta_turret_cover, loc) + flick_holder.layer = layer + 0.1 + flick("popdown", flick_holder) sleep(10) + qdel(flick_holder) + raising = 0 - cover.icon_state = "turretCover" raised = 0 - invisibility = INVISIBILITY_LEVEL_TWO update_icon() /obj/machinery/porta_turret/proc/target(var/mob/living/target) @@ -811,9 +804,6 @@ Turret.enabled = 0 Turret.setup() -// Turret.cover=new/obj/machinery/porta_turret_cover(loc) -// Turret.cover.Parent_Turret=Turret -// Turret.cover.name = finish_name qdel(src) // qdel else if(istype(I, /obj/item/weapon/crowbar)) @@ -832,6 +822,7 @@ finish_name = t return + ..() @@ -857,32 +848,5 @@ /obj/machinery/porta_turret_construct/attack_ai() return - -/************************ -* PORTABLE TURRET COVER * -************************/ - -/obj/machinery/porta_turret_cover - name = "turret" +/atom/movable/porta_turret_cover icon = 'icons/obj/turrets.dmi' - icon_state = "turretCover" - anchored = 1 - layer = 3.5 - density = 0 - var/obj/machinery/porta_turret/Parent_Turret = null - -/obj/machinery/porta_turret_cover/Destroy() - Parent_Turret = null - ..() - -/obj/machinery/porta_turret_cover/attack_ai(mob/user) - return attack_hand(user) - -/obj/machinery/porta_turret_cover/attack_hand(mob/user) - return Parent_Turret.attack_hand(user) - -/obj/machinery/porta_turret_cover/Topic(href, href_list) - Parent_Turret.Topic(href, href_list, 1) // Calling another object's Topic requires that we claim to not have a window, otherwise BYOND's base proc will runtime. - -/obj/machinery/porta_turret_cover/attackby(obj/item/I, mob/user) - Parent_Turret.attackby(I, user) From 001d4839f19b3e65aa3a61434accf9323c1beb8f Mon Sep 17 00:00:00 2001 From: PsiOmegaDelta Date: Tue, 30 Jun 2015 15:03:51 +0200 Subject: [PATCH 2/7] Fixes missing assessment check. --- code/game/machinery/portable_turret.dm | 2 +- code/modules/mob/living/bot/secbot.dm | 2 +- code/modules/mob/mob_helpers.dm | 9 ++++++--- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index d92bd8de2d..bcc09bc681 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -503,7 +503,7 @@ var/list/turret_icons if(emagged) return 10 - return H.assess_perp(src, check_weapons, check_records, check_arrest) + return H.assess_perp(src, check_access, check_weapons, check_records, check_arrest) /obj/machinery/porta_turret/proc/tryToShootAt(var/list/mob/living/targets) if(targets.len && last_target && (last_target in targets) && target(last_target)) diff --git a/code/modules/mob/living/bot/secbot.dm b/code/modules/mob/living/bot/secbot.dm index 848da5633a..a0a7a69450 100644 --- a/code/modules/mob/living/bot/secbot.dm +++ b/code/modules/mob/living/bot/secbot.dm @@ -342,7 +342,7 @@ if(emagged) return 10 - return M.assess_perp(access_scanner, idcheck, check_records, check_arrest) + return M.assess_perp(access_scanner, 0, idcheck, check_records, check_arrest) /mob/living/bot/secbot/proc/patrol_step() if(loc == patrol_target) diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 17def087b3..3cdfd9ec51 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -622,13 +622,13 @@ proc/is_blind(A) return client && client.inactivity < active MINUTES #define SAFE_PERP -50 -/mob/living/proc/assess_perp(var/auth_weapons, var/check_records, var/check_arrest) +/mob/living/proc/assess_perp(var/obj/access_obj, var/check_access, var/auth_weapons, var/check_records, var/check_arrest) if(stat == DEAD) return SAFE_PERP return 0 -/mob/living/carbon/human/assess_perp(var/obj/access_obj, var/auth_weapons, var/check_records, var/check_arrest) +/mob/living/carbon/human/assess_perp(var/obj/access_obj, var/check_access, var/auth_weapons, var/check_records, var/check_arrest) var/threatcount = ..() if(. == SAFE_PERP) return SAFE_PERP @@ -640,6 +640,9 @@ proc/is_blind(A) // A proper CentCom id is hard currency. else if(id && istype(id, /obj/item/weapon/card/id/centcom)) return SAFE_PERP + + if(check_access && !access_obj.allowed(src)) + threatcount += 4 if(auth_weapons && !access_obj.allowed(src)) if(istype(l_hand, /obj/item/weapon/gun) || istype(l_hand, /obj/item/weapon/melee)) @@ -668,7 +671,7 @@ proc/is_blind(A) return threatcount -/mob/living/simple_animal/hostile/assess_perp(var/obj/access_obj, var/auth_weapons, var/check_records, var/check_arrest) +/mob/living/simple_animal/hostile/assess_perp(var/obj/access_obj, var/check_access, var/auth_weapons, var/check_records, var/check_arrest) var/threatcount = ..() if(. == SAFE_PERP) return SAFE_PERP From b7bdd4b583d5cf3ce4c61af555acfb2356c2a02f Mon Sep 17 00:00:00 2001 From: PsiOmegaDelta Date: Tue, 30 Jun 2015 15:08:29 +0200 Subject: [PATCH 3/7] Create Crescent/ERT portable turret presets. --- code/game/machinery/portable_turret.dm | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index bcc09bc681..9647a2a99c 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -58,7 +58,13 @@ var/wrenching = 0 var/last_target //last target fired at, prevents turrets from erratically firing at all valid targets in range +/obj/machinery/porta_turret/crescent + ailock = 1 + check_access = 0 + check_records = 0 + /obj/machinery/porta_turret/stationary + ailock = 1 lethal = 1 installation = /obj/item/weapon/gun/energy/laser @@ -341,6 +347,8 @@ var/list/turret_icons /obj/machinery/porta_turret/proc/take_damage(var/force) if(!raised && !raising) + if(force < 10) + return force = force / 8 health -= force @@ -395,9 +403,9 @@ var/list/turret_icons if (prob(25)) qdel(src) else - take_damage(150) //should instakill most turrets + take_damage(initial(health) * 8) //should instakill most turrets if (3) - take_damage(50) + take_damage(400) /obj/machinery/porta_turret/proc/die() //called when the turret dies, ie, health <= 0 health = 0 From a76c915e2e87a087c5147892f397dd60acdea983 Mon Sep 17 00:00:00 2001 From: PsiOmegaDelta Date: Tue, 30 Jun 2015 15:09:33 +0200 Subject: [PATCH 4/7] Adds missing changelog icon to the client pre-fetch. --- code/game/machinery/portable_turret.dm | 7 ++----- code/modules/mob/mob.dm | 1 + 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index 9647a2a99c..e8f0101f78 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -347,9 +347,9 @@ var/list/turret_icons /obj/machinery/porta_turret/proc/take_damage(var/force) if(!raised && !raising) - if(force < 10) - return force = force / 8 + if(force < 5) + return health -= force if (force > 5 && prob(45)) @@ -361,9 +361,6 @@ var/list/turret_icons if(Proj.damage_type == HALLOSS) return - if(!raised && !raising) - return - if(enabled) if(!attacked && !emagged) attacked = 1 diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index f133330997..49e02b6e79 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -376,6 +376,7 @@ 'html/hard-hat-exclamation.png', 'html/image-minus.png', 'html/image-plus.png', + 'html/map-pencil.png', 'html/music-minus.png', 'html/music-plus.png', 'html/tick-circle.png', From d827e41bdf7c7b8da154dc31fa568938f4f2f91e Mon Sep 17 00:00:00 2001 From: PsiOmegaDelta Date: Tue, 30 Jun 2015 15:31:44 +0200 Subject: [PATCH 5/7] Replaces the portable turrets on Crescent with the clean presets. --- code/game/machinery/portable_turret.dm | 38 +++++++++++++++++--------- maps/exodus-2.dmm | 13 +++++---- 2 files changed, 32 insertions(+), 19 deletions(-) diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index e8f0101f78..a030b54a12 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -9,12 +9,10 @@ icon_state = "turretCover" anchored = 1 - density = 1 + density = 0 use_power = 1 //this turret uses and requires power idle_power_usage = 50 //when inactive, this turret takes up constant 50 Equipment power active_power_usage = 300 //when active, this turret takes up constant 300 Equipment power - req_access = null - req_one_access = list(access_security, access_heads) power_channel = EQUIP //drains power from the EQUIPMENT channel var/raised = 0 //if the turret cover is "open" and the turret is raised @@ -59,9 +57,14 @@ var/last_target //last target fired at, prevents turrets from erratically firing at all valid targets in range /obj/machinery/porta_turret/crescent + enabled = 0 ailock = 1 - check_access = 0 - check_records = 0 + check_synth = 0 + check_access = 1 + check_arrest = 1 + check_records = 1 + check_weapons = 1 + check_anomalies = 1 /obj/machinery/porta_turret/stationary ailock = 1 @@ -70,6 +73,9 @@ /obj/machinery/porta_turret/New() ..() + req_access.Cut() + req_one_access = list(access_security, access_heads) + //Sets up a spark system spark_system = new /datum/effect/effect/system/spark_spread spark_system.set_up(5, 0, src) @@ -77,6 +83,11 @@ setup() +/obj/machinery/porta_turret/crescent/New() + ..() + req_one_access.Cut() + req_access = list(access_cent_specops) + /obj/machinery/porta_turret/Destroy() qdel(spark_system) spark_system = null @@ -406,10 +417,8 @@ var/list/turret_icons /obj/machinery/porta_turret/proc/die() //called when the turret dies, ie, health <= 0 health = 0 - density = 0 stat |= BROKEN //enables the BROKEN bit spark_system.start() //creates some sparks because they look cool - density = 1 update_icon() /obj/machinery/porta_turret/process() @@ -528,7 +537,7 @@ var/list/turret_icons return if(stat & BROKEN) return - raising = 1 + set_raised_raising(raised, 1) update_icon() var/atom/flick_holder = PoolOrNew(/atom/movable/porta_turret_cover, loc) @@ -537,8 +546,7 @@ var/list/turret_icons sleep(10) qdel(flick_holder) - raising = 0 - raised = 1 + set_raised_raising(1, 0) update_icon() /obj/machinery/porta_turret/proc/popDown() //pops the turret down @@ -549,7 +557,7 @@ var/list/turret_icons return if(stat & BROKEN) return - raising = 1 + set_raised_raising(raised, 1) update_icon() var/atom/flick_holder = PoolOrNew(/atom/movable/porta_turret_cover, loc) @@ -558,10 +566,14 @@ var/list/turret_icons sleep(10) qdel(flick_holder) - raising = 0 - raised = 0 + set_raised_raising(0, 0) update_icon() +/obj/machinery/porta_turret/proc/set_raised_raising(var/raised, var/raising) + src.raised = raised + src.raising = raising + density = raised || raising + /obj/machinery/porta_turret/proc/target(var/mob/living/target) if(disabled) return diff --git a/maps/exodus-2.dmm b/maps/exodus-2.dmm index 324426950c..4ebdbb66e6 100644 --- a/maps/exodus-2.dmm +++ b/maps/exodus-2.dmm @@ -1128,7 +1128,7 @@ "vJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/unsimulated/floor{name = "plating"},/area/centcom/control) "vK" = (/obj/machinery/vending/tool,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "vL" = (/obj/structure/sign/poster{poster_type = "/datum/poster/bay_50"; pixel_x = -32},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"vM" = (/obj/structure/table/woodentable{dir = 10},/obj/machinery/button/remote/blast_door{name = "Spec Ops Ready Room"; pixel_y = 15; req_access = list(11); id = "CREED"},/obj/machinery/button/remote/blast_door{name = "Mech Storage"; icon_state = "doorctrl0"; pixel_y = 0; req_access = list(11); id = "ASSAULT"},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed) +"vM" = (/obj/structure/table/woodentable{dir = 10},/obj/machinery/button/remote/blast_door{id = "CREED"; name = "Spec Ops Ready Room"; pixel_y = 4; req_access = list(108)},/obj/machinery/button/remote/blast_door{icon_state = "doorctrl0"; id = "ASSAULT"; name = "Mech Storage"; pixel_y = -4; req_access = list(108)},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed) "vN" = (/obj/machinery/button/remote/blast_door{id = "crescent_checkpoint_access"; name = "Crescent Checkpoint Access"; pixel_x = -6; pixel_y = -24},/obj/machinery/button/remote/blast_door{id = "crescent_thunderdome"; name = "Thunderdome Access"; pixel_x = 6; pixel_y = -24},/obj/machinery/button/remote/blast_door{id = "crescent_vip_shuttle"; name = "VIP Shuttle Access"; pixel_x = 6; pixel_y = -34},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "vO" = (/obj/machinery/door/airlock/centcom{name = "Maintenance Access"; opacity = 1; req_access = list(106)},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) "vP" = (/obj/mecha/combat/gygax/dark,/obj/machinery/camera/network/ert{c_tag = "Assault Armor North"},/turf/unsimulated/floor{icon_state = "delivery"; dir = 6},/area/centcom/specops) @@ -1193,7 +1193,7 @@ "wW" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "ASSAULT2"; name = "Launch Bay #2"; p_open = 0},/turf/unsimulated/floor{name = "plating"},/area/centcom/specops) "wX" = (/obj/structure/table/rack,/obj/item/rig_module/mounted,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "wY" = (/obj/item/stack/material/glass{amount = 50},/obj/item/stack/material/glass{amount = 50},/obj/item/stack/material/glass{amount = 50},/obj/item/stack/material/glass{amount = 50},/obj/item/stack/material/steel{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/material/steel{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/material/steel{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/material/steel{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/material/plasteel{amount = 50},/obj/item/stack/material/plasteel{amount = 50},/obj/item/stack/material/plasteel{amount = 50},/obj/item/stack/material/plasteel{amount = 50},/obj/item/stack/material/glass/reinforced{amount = 50},/obj/item/stack/material/glass/reinforced{amount = 50},/obj/item/stack/material/glass/reinforced{amount = 50},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 3},/obj/structure/table/steel_reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) -"wZ" = (/obj/machinery/porta_turret{anchored = 0; check_records = 0; enabled = 0; req_one_access = list(103); use_power = 0},/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) +"wZ" = (/obj/machinery/porta_turret/crescent,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "xa" = (/obj/machinery/portable_atmospherics/powered/pump/filled,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "xb" = (/obj/structure/table/reinforced,/obj/item/weapon/cell/high,/obj/item/weapon/cell/high,/obj/item/weapon/cell/high,/obj/item/weapon/cell/high,/obj/item/weapon/cell/high,/obj/item/weapon/cell/high,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "xc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{name = "plating"},/area/centcom/specops) @@ -1842,7 +1842,7 @@ "Jv" = (/turf/unsimulated/wall/fakeglass,/area/wizard_station) "Jw" = (/turf/unsimulated/floor{dir = 8; icon_state = "chapel"},/area/wizard_station) "Jx" = (/turf/unsimulated/floor{icon_state = "chapel"},/area/wizard_station) -"Jy" = (/obj/machinery/porta_turret{anchored = 0; check_records = 0; enabled = 0; req_one_access = list(103); use_power = 0},/turf/unsimulated/floor{icon_state = "bot"},/area/centcom/holding) +"Jy" = (/obj/machinery/porta_turret/crescent,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "Jz" = (/obj/item/organ/xenos/eggsac,/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) "JA" = (/obj/item/weapon/tank/nitrogen,/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) "JB" = (/obj/item/organ/stack,/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) @@ -2143,6 +2143,7 @@ "Pk" = (/mob/living/carbon/human/monkey{name = "Murphey"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station) "Pl" = (/obj/item/weapon/material/knife/ritual,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station) "Pm" = (/turf/simulated/shuttle/wall{icon_state = "swall13"; dir = 2},/area/centcom/ferry) +"Pn" = (/obj/machinery/porta_turret/crescent,/turf/unsimulated/floor{icon_state = "bot"},/area/centcom/holding) (1,1,1) = {" aaabacadaeafagahaaaiajakalamanaoagafajacadahakaeamaiaoalahajeEapaqarasatauavawaxayazaAaBaCaDaEaFaGaHaIaJaKawaxayazaAaBaCaDaEaFaLaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMtwtwtwtwtwtwtwtwtwtwtwtwtwaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaNaOaOaOaOaOaOaOaOaOaOaPaOaOaOaOaOaOaOaOaOaOaPaOaOaOaOaOaOaOaOaOaOaPaOaOaOaOaOaOaOaOaOaOaPaOaOaOaOaOaOaOaOaOaOaPaOaOaOaOaOaOaOaOaOaOaPaOaOaOaOaOaOaOaOaOaOaQ @@ -2279,14 +2280,14 @@ aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMuUuVuVuVuVuVuVuVuVuVuVuVuVuVAIuXuVuVuVuYAIuZvavbvbvctvwluhuhuhuhuhuhuhtvwmuhuhuhuhvpwownwpwpyhzrzpzEyIyIyhwqwqwqtvuDuEuFuGuHtxuIuIuItxtWtWtWtWtWtxuJuKuJuLuMuguNuNuNuOurururuOuruPuQuPuruRuSuTtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMustvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvvQtvtvtvuhuhuhuhuhuhuhuhtvuhuhuhuhwytvtvtvtvtvyhyhyhyhyhyhyhxQxQxQtvwzwAvlvmvntxufufuftxvlvmvowAwBtxvqvrvqvrvqugtxtxtxtxurururtxvsvtuPvuvsvvvwvwtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumuaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMustvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvutvIvbvbwEtvvxwPukxowVwXuhuhtvuhuhuhuhwYtvxawZwZxaxcxbxexdxQxQxQxQxQxgtvufufvBvCvCvCvCvCvCvCvCvCvDufufxhvqvqvqvqvqugvFuNuotxurururtxvGvGxkvGvGvvvwvwtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumu -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMuUuVuVuVuVuVuVuVuVuVuVuVuVuVwWuXuVuVuVuYwWwivavbvbxltvwFwGwGwGwItvuhuhtvuhuhuhuhxmtvuhxQxQxQxnxQxQxQxQxQxQxQxQxptvufufvVvWvXvXvXvXvXvXvXvYueufufugvZwawbwcwdugweuNwjtxurururtxwfwfuNwfwfvvvwvwtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMwgaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumu +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMuUuVuVuVuVuVuVuVuVuVuVuVuVuVwWuXuVuVuVuYwWwivavbvbxltvwFwGwGwGwItvuhuhtvuhuhuhuhxmtvuhxQxQxQxnxQxQxQxQxQxQxQxQxptvufJyvVvWvXvXvXvXvXvXvXvYueJyufugvZwawbwcwdugweuNwjtxurururtxwfwfuNwfwfvvvwvwtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMwgaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMustvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvutwxvbvbxqxcxrxtxsxvxuxcuhuhxcuhuhuhuhxwxcuhxQxQuwxxxQxQxQxexetvtvtvtvtvufufvVwrwsufwtwuwvufwswrueufufugugugugugugugweuNwjtxurururtxwwwwuNwwwwvvvwvwtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMuUuVuVuVuVuVuVuVuVuVuVuVuVuVxyuXuVuVuVuYxyxzvavbvbxAxnxHuhuhuhxIxnuhuhxnuhuhxKxJxLxnxMxQxQxQtvwFwGwHwGwItvwJwJwJxNufufwKwLwMwNwOxOwQwRwSwLwTufufxRwUwUwUwUwUtxtxuOtxtxtxuOtxtxuNuNuNuNuNvvvwvwtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMustvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvutxXvbvbxYtvyauhuhuhuhtvybybtvycyctvtvtvtvxMxQxQuwuWxfxfxfxfxfydxfxfxfydufufufyeufufxiufxiufufyeufufufxjurururururxjurururururururxjwwwwwwwwwwvvvwvwtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMmu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMuUuVuVuVuVuVuVuVuVuVuVuVuVuVyfuXuVuVuVuYyfygyivbvbuwyjuhuhuhuhuhyjuhuhykuhuhymylyzyzuhxQxQvdtvwFwGwHwGwItvxBxBxByAufufvBxCxDwNxEufxFwRxGxCvDufufxjurururururxjurururururururxjwwwwwwwwwwtxuOuOtxtxtxtxtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMustvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvvbvbuwyjuhuhuhuhuhyjuhuhyCuhuhxQyDyDyDxQxQxQzcyKyGyMxQySyQtvtvtvtvtvufufvVwLxSufxiufxivNyqwLueufufwAxTxUxUxUxVtxtxxWtxtxtxuOtxtxtxyXyXyXtxtxurururyYurxZtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMtvvbvbyZtvwFwGwGwGwItvzezetvzfuhxQzgzizhxQxQxQyRzkyMxQxQxQxQxxxQxKzltvufufvVtxtxynyoufypxStxtxueufuftxaMaMaMaMaMtxyrystxuNytuNuNyuyvywywywzmtxururuQuQururyyaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMtvtvtvtvtvznztzszvzuuhuhuhxczwuhxQzizCzxxQxQxQxQxxxQxQxQzFzDxcxQxQzGtvufufvVtxtxvlvmvmvmvotxtxueufuftxaMaMaMaMaMtxysystxyLyLyLuNyuywywywywzHtxuryNuPuPyOuryPaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMtvtvtvtvtvznztzszvzuuhuhuhxczwuhxQzizCzxxQxQxQxQxxxQxQxQzFzDxcxQxQzGtvufJyvVtxtxvlvmvmvmvotxtxueJyuftxaMaMaMaMaMtxysystxyLyLyLuNyuywywywywzHtxuryNuPuPyOuryPaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMtvuhuhuhuhuhuhuhuhxnzIuhxQzJzJzJxQxQxQxQxxxQxQxQzFzDxnyJyEyFtvufufwKyTyTyTyTyTyTyTyTyTwTufuftxaMaMaMaMaMtxyUystxyLyVyLuNyuyuyuyuyuyutxuryNuPuPyOuryPaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMtvuhuhuhuhuhuhuhuhtvwCuhuhzOuhuhuhxQxQwCzkxQxQxQzFzDtvtvtvtvtvtxwAzQxRtxufufufufuftxtxtxtxtxtxaMaMaMaMaMtxAbystxvFuNuNuNyuaMaMaMaMaMtxuryNuPuPyOuryPaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM mtmtmtmtmtmtmtmtmtmtAemtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMtvAfAfAhAoAnAqApwDtvAsArwqtvABABtvwqArAsyKAFxQxQzFzDtvAGAKAJAGAMAPDCAQCNtxwAASxRtxtxaMaMaMaMaMaMaMaMaMaMtxtxtxtxtxtxtxtxyuaMaMaMaMaMzyuryNuPuPyOuryPaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMzzmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtwgmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmt @@ -2304,7 +2305,7 @@ dCmuBvCuCuCuCuBvBvmumuBvEXEYEXCgBzBzBzBzBzBzBzBzBzBzAZFlFaFpAZAZmumudCmumumuaMmt dCmuFVCuCuCuCuFWBvmumuFYFXEXEXCgBzBzBzBzBzBzBzBzBzBzAZBvBvBvBvBvmumudCmumumuaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAVAWCsDeCtEdBEEEEEEEEEEEEEFrFqAYAWAWAHGfGdGgCPCPCNGqGpGLDCDCDCDCDDDCDCGODCDCGRGTDpGTHfADADADHjHkADADHjADADCrACaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM dCmuHmHAHzCuHBCuCumumuHHHCHIAZAZAZAZAZAZAZAZAZAZCgAZAZAZAZAZAZAZAZAZAZmumuaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAVAWAWCsBnFZCsBnBnBrBqBsBnPmByAYAWAWAHHKHJHLCPCPHMDCDDDCDCDCDCDCDDDCDCDCDCDCGRHNFGFHAtHOADCrCCBuADCrCCBuADHQAtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM dCmuIhCuImCuHzCuCumumuBvBvBvAZBzBzBzBzBzBzAZIqIGIGIGIIAZBzBzBzBzBzBzAZmuaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAVAWAWAWAWAWAWAWAWAWAWAWAWAWAXAYAWAWAHIKIJILCPCPHMDCDDDCDCDCDCITISFGIUDCDCIWIVCNaMaMCCBuADCrCMBuADCrCMBuADCrCCaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -dCmuBvCuIXCuIYCuCumumuaMaMmuAZBzBFBzBzBzBzAZIGIGJaIGIGAZBzBzBzBzBFBzAZmuaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHJcJbJbCPCPCNJmJlJnDCJoDCEKJpDyJqDCGRJyJrCNaMaMCMBuADCrCMBuNcCrCMBuADCrCMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +dCmuBvCuIXCuIYCuCumumuaMaMmuAZBzBFBzBzBzBzAZIGIGJaIGIGAZBzBzBzBzBFBzAZmuaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHJcJbJbCPCPCNJmJlJnDCJoDCEKJpDyJqDCGRPnJrCNaMaMCMBuADCrCMBuNcCrCMBuADCrCMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM dCmuBvJAJzCuCuJBCumumuaMaMmuAZBzBzBzBzBzBzCgIGIGJCIGIGCgBzBzBzBzBzBzAZmuaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNJEJDJDJDJFCZDaCPCPCPJHCPCPCPCPCPCPCPCPCPCPNyCPCNDyEpJIDCDCDCFxFtFGJJDCDCJLJKCNaMaMDfBuADCrCMBuADCrCMBuADCrDfaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM dCmuBvBvCuCuCuCuBvmumumAaMaMAZBzBzAZJMJOJNAZIGJSJRIGIGAZJMJOJNAZBzBzAZaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNJUJUJUJUJUDhDiDjDkDlCPDmDnDoDlCPCPCPCPCPCPCPCPCNDyEpJVDCDCDCDCDDDCDCDCDCDCGRHNFGFHAtJWADCrDfBuADCrDfBuADJXAtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM dCmuBvBvBvBvJYJZBvmumBmAaMaMAZBzBzAZaMaMaMAZAZJMJOJNAZAZaMaMaMAZBzBzAZaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNJUKaJUJUJUDsDiDtDuDlCPDmDvDwDlCPCPKbKbKbKbKbKbCNDyDzDADBDCDCDCDDDCDCDCDCDCGRGTDpGTKcADADKdADADADADADKdADCrACaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM From 49e7f1830ad511c36151d98c235f35ef9d4ca442 Mon Sep 17 00:00:00 2001 From: PsiOmegaDelta Date: Tue, 30 Jun 2015 15:51:36 +0200 Subject: [PATCH 6/7] Changelog entry. --- html/changelogs/PsiOmegaDelta-SinglePortableUnit.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 html/changelogs/PsiOmegaDelta-SinglePortableUnit.yml diff --git a/html/changelogs/PsiOmegaDelta-SinglePortableUnit.yml b/html/changelogs/PsiOmegaDelta-SinglePortableUnit.yml new file mode 100644 index 0000000000..8570ce49e8 --- /dev/null +++ b/html/changelogs/PsiOmegaDelta-SinglePortableUnit.yml @@ -0,0 +1,7 @@ +author: PsiOmegaDelta +delete-after: True + +changes: + - tweak: "Portable turrets now only blocks movement while deployed." + - tweak: "Portable turrets are no longer invincible while undeployed, however they have increased damage resistance in this state." + - bugfix: "Crescent portable turrets should no longer act up during attempts to (un)wrench and alter their settings." \ No newline at end of file From ba630d255688a4ce63805caea097af18b62ffee9 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Tue, 30 Jun 2015 16:28:00 +0200 Subject: [PATCH 7/7] Portable turret feedback changes. --- code/game/machinery/portable_turret.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index a030b54a12..10d86aa4b2 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -413,7 +413,7 @@ var/list/turret_icons else take_damage(initial(health) * 8) //should instakill most turrets if (3) - take_damage(400) + take_damage(initial(health) * 8 / 3) /obj/machinery/porta_turret/proc/die() //called when the turret dies, ie, health <= 0 health = 0