From c5b897a951f92122a3fb0ee1958468b2f5340cc8 Mon Sep 17 00:00:00 2001 From: Markolie Date: Wed, 22 Feb 2017 18:24:43 +0100 Subject: [PATCH 1/7] Fix fax machine logout issue, fix card eject telekinesis interaction, fix death alarm follow link, fix flavor text not hiding when unknown, fix spacepod mining lasers --- code/game/machinery/computer/card.dm | 31 ++++++++------- .../game/objects/items/devices/radio/radio.dm | 4 +- .../weapons/implants/implant_death_alarm.dm | 15 +++---- .../mob/living/carbon/human/examine.dm | 3 +- code/modules/paperwork/faxmachine.dm | 39 ++++++++++--------- .../guns/energy/kinetic_accelerator.dm | 11 ++++++ code/modules/spacepods/equipment.dm | 19 +++++---- 7 files changed, 68 insertions(+), 54 deletions(-) diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index 8ccc505f39f..502ef6cc6e1 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -100,18 +100,19 @@ var/time_last_changed_position = 0 set name = "Eject ID Card" set src in oview(1) - if(!usr || usr.stat || usr.lying) return + if(usr.restrained()) + return if(scan) to_chat(usr, "You remove \the [scan] from \the [src].") - scan.loc = get_turf(src) - if(!usr.get_active_hand()) + scan.forceMove(get_turf(src)) + if(!usr.get_active_hand() && Adjacent(usr)) usr.put_in_hands(scan) scan = null else if(modify) to_chat(usr, "You remove \the [modify] from \the [src].") - modify.loc = get_turf(src) - if(!usr.get_active_hand()) + modify.forceMove(get_turf(src)) + if(!usr.get_active_hand() && Adjacent(usr)) usr.put_in_hands(modify) modify = null else @@ -260,35 +261,35 @@ var/time_last_changed_position = 0 data_core.manifest_modify(modify.registered_name, modify.assignment) modify.name = text("[modify.registered_name]'s ID Card ([modify.assignment])") if(ishuman(usr)) - modify.loc = usr.loc - if(!usr.get_active_hand()) + modify.forceMove(get_turf(src)) + if(!usr.get_active_hand() && Adjacent(usr)) usr.put_in_hands(modify) modify = null else - modify.loc = loc + modify.forceMove(get_turf(src)) modify = null - else + else if(Adjacent(usr)) var/obj/item/I = usr.get_active_hand() if(istype(I, /obj/item/weapon/card/id)) usr.drop_item() - I.loc = src + I.forceMove(src) modify = I if("scan") if(scan) if(ishuman(usr)) - scan.loc = usr.loc - if(!usr.get_active_hand()) + scan.forceMove(get_turf(src)) + if(!usr.get_active_hand() && Adjacent(usr)) usr.put_in_hands(scan) scan = null else - scan.loc = src.loc + scan.forceMove(get_turf(src)) scan = null - else + else if(Adjacent(usr)) var/obj/item/I = usr.get_active_hand() if(istype(I, /obj/item/weapon/card/id)) usr.drop_item() - I.loc = src + I.forceMove(src) scan = I if("access") diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index e144c5d3c50..8ff0147256d 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -242,7 +242,6 @@ var/global/list/default_medbay_channels = list( var/datum/radio_frequency/connection = null if(channel && channels && channels.len > 0) if(channel == "department") -// to_chat(world, "DEBUG: channel=\"[channel]\" switching to \"[channels[1]]\"") channel = channels[1] connection = secure_radio_connections[channel] else @@ -259,9 +258,8 @@ var/global/list/default_medbay_channels = list( Broadcast_Message(connection, A, 0, "*garbled automated announcement*", src, message, from, "Automated Announcement", from, "synthesized voice", - 4, 0, zlevel, connection.frequency, follow_target=follow_target) + 4, 0, zlevel, connection.frequency, follow_target = follow_target) qdel(A) - return // Just a dummy mob used for making announcements, so we don't create AIs to do this // I'm not sure who thought that was a good idea. -- Crazylemon diff --git a/code/game/objects/items/weapons/implants/implant_death_alarm.dm b/code/game/objects/items/weapons/implants/implant_death_alarm.dm index db4f25e1be2..da9560122ad 100644 --- a/code/game/objects/items/weapons/implants/implant_death_alarm.dm +++ b/code/game/objects/items/weapons/implants/implant_death_alarm.dm @@ -3,6 +3,7 @@ desc = "An alarm which monitors host vital signs and transmits a radio message upon death." var/mobname = "Will Robinson" activated = 0 + var/static/list/stealth_areas = typecacheof(list(/area/syndicate_station, /area/syndicate_mothership, /area/shuttle/syndicate_elite)) /obj/item/weapon/implant/death_alarm/get_data() var/dat = {"Implant Specifications:
@@ -33,26 +34,26 @@ /obj/item/weapon/implant/death_alarm/activate(var/cause) var/mob/M = imp_in var/area/t = get_area(M) + + var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset(null) + a.follow_target = M + switch(cause) if("death") - var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset(null) - if(istype(t, /area/syndicate_station) || istype(t, /area/syndicate_mothership) || istype(t, /area/shuttle/syndicate_elite) ) + if(is_type_in_typecache(t, stealth_areas)) //give the syndies a bit of stealth a.autosay("[mobname] has died in Space!", "[mobname]'s Death Alarm") else a.autosay("[mobname] has died in [t.name]!", "[mobname]'s Death Alarm") - qdel(a) qdel(src) if("emp") - var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset(null) var/name = prob(50) ? t.name : pick(teleportlocs) a.autosay("[mobname] has died in [name]!", "[mobname]'s Death Alarm") - qdel(a) else - var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset(null) a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm") - qdel(a) qdel(src) + + qdel(a) /obj/item/weapon/implant/death_alarm/emp_act(severity) //for some reason alarms stop going off in case they are emp'd, even without this activate("emp") //let's shout that this dude is dead diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 453402ec7e3..ffd759b3295 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -494,7 +494,8 @@ msg += "Medical records: \[View\] \[Add comment\]\n" - if(print_flavor_text()) msg += "[print_flavor_text()]\n" + if(print_flavor_text() && !skipface) + msg += "[print_flavor_text()]\n" msg += "*---------*" if(pose) diff --git a/code/modules/paperwork/faxmachine.dm b/code/modules/paperwork/faxmachine.dm index 51b78d0b973..a7f631f9924 100644 --- a/code/modules/paperwork/faxmachine.dm +++ b/code/modules/paperwork/faxmachine.dm @@ -18,8 +18,10 @@ var/list/alldepartments = list() active_power_usage = 200 var/obj/item/weapon/card/id/scan = null // identification + var/authenticated = 0 var/sendcooldown = 0 // to avoid spamming fax messages + var/cooldown_time = 1800 var/department = "Unknown" // our department @@ -52,7 +54,7 @@ var/list/alldepartments = list() else return ..() -/obj/machinery/photocopier/faxmachine/emag_act(user as mob) +/obj/machinery/photocopier/faxmachine/emag_act(mob/user) if(!emagged) emagged = 1 to_chat(user, "The transmitters realign to an unknown source!") @@ -123,7 +125,7 @@ var/list/alldepartments = list() if(copyitem) copyitem.forceMove(get_turf(src)) if(ishuman(usr)) - if(!usr.get_active_hand()) + if(!usr.get_active_hand() && Adjacent(usr)) usr.put_in_hands(copyitem) to_chat(usr, "You eject \the [copyitem] from \the [src].") copyitem = null @@ -154,10 +156,10 @@ var/list/alldepartments = list() destination = lastdestination if(href_list["auth"]) - if((!authenticated) && scan) + if(!is_authenticated && scan) if(check_access(scan)) authenticated = 1 - else if(!authenticated) + else if(is_authenticated) authenticated = 0 if(href_list["rename"]) @@ -177,25 +179,24 @@ var/list/alldepartments = list() /obj/machinery/photocopier/faxmachine/proc/scan(var/obj/item/weapon/card/id/card = null) if(scan) // Card is in machine if(ishuman(usr)) - scan.forceMove(get_turf(usr)) - if(!usr.get_active_hand()) + scan.forceMove(get_turf(src)) + if(!usr.get_active_hand() && Adjacent(usr)) usr.put_in_hands(scan) scan = null else scan.forceMove(get_turf(src)) scan = null - else + else if(Adjacent(usr)) if(!card) var/obj/item/I = usr.get_active_hand() if(istype(I, /obj/item/weapon/card/id)) usr.drop_item() I.forceMove(src) scan = I - else - if(istype(card)) - usr.drop_item() - card.forceMove(src) - scan = card + else if(istype(card)) + usr.drop_item() + card.forceMove(src) + scan = card nanomanager.update_uis(src) /obj/machinery/photocopier/faxmachine/proc/sendfax(var/destination,var/mob/sender) @@ -220,7 +221,6 @@ var/list/alldepartments = list() F.sent_at = world.time visible_message("[src] beeps, \"Message transmitted successfully.\"") - //sendcooldown = 600 else visible_message("[src] beeps, \"Error transmitting message.\"") @@ -253,6 +253,9 @@ var/list/alldepartments = list() /obj/machinery/photocopier/faxmachine/proc/send_admin_fax(var/mob/sender, var/destination) if(stat & (BROKEN|NOPOWER)) return + + if(sendcooldown) + return use_power(200) @@ -284,15 +287,15 @@ var/list/alldepartments = list() message_admins(sender, "CENTCOM FAX", destination, rcvdcopy, "#006100") if("Syndicate") message_admins(sender, "SYNDICATE FAX", destination, rcvdcopy, "#DC143C") - sendcooldown = 1800 - sleep(50) - visible_message("[src] beeps, \"Message transmitted successfully.\"") + sendcooldown = cooldown_time + spawn(50) + visible_message("[src] beeps, \"Message transmitted successfully.\"") /obj/machinery/photocopier/faxmachine/proc/message_admins(var/mob/sender, var/faxname, var/faxtype, var/obj/item/sent, font_colour="#9A04D1") - var/msg = "[faxname]: [key_name(sender, 1)] (PP) (VV) (CA) ([admin_jump_link(sender)]) | REPLY: (RADIO) (FAX) (SM) | REJECT: (TEMPLATE) (BSA) (EVILFAX) : Receiving '[sent.name]' via secure connection... view message" + var/msg = "[faxname]: [key_name_admin(sender)] | REPLY: (RADIO) (FAX) (SM) | REJECT: (TEMPLATE) (BSA) (EVILFAX) : Receiving '[sent.name]' via secure connection... view message" for(var/client/C in admins) - if(R_EVENT & C.holder.rights) + if(check_rights(R_EVENT, 0, C)) to_chat(C, msg) if(C.prefs.sound & SOUND_ADMINHELP) C << 'sound/effects/adminhelp.ogg' diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index b859fc400fc..9a4445d111d 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -179,6 +179,17 @@ var/mob_aoe = FALSE var/list/hit_overlays = list() +/obj/item/projectile/kinetic/pod + range = 4 + +/obj/item/projectile/kinetic/pod/regular + damage = 50 + pressure_decrease = 0.5 + +/obj/item/projectile/kinetic/pod/enhanced + turf_aoe = TRUE + mob_aoe = TRUE + /obj/item/projectile/kinetic/on_range() strike_thing() ..() diff --git a/code/modules/spacepods/equipment.dm b/code/modules/spacepods/equipment.dm index 752c90f5db4..65b3b9232b8 100644 --- a/code/modules/spacepods/equipment.dm +++ b/code/modules/spacepods/equipment.dm @@ -28,9 +28,8 @@ firstloc = get_turf(my_atom) secondloc = get_step(firstloc,NORTH) olddir = dir - var/proj_type = text2path(projectile_type) - var/obj/item/projectile/projone = new proj_type(firstloc) - var/obj/item/projectile/projtwo = new proj_type(secondloc) + var/obj/item/projectile/projone = new projectile_type(firstloc) + var/obj/item/projectile/projtwo = new projectile_type(secondloc) projone.starting = get_turf(my_atom) projone.firer = usr projone.def_zone = "chest" @@ -79,7 +78,7 @@ desc = "You shouldn't be seeing this" icon = 'icons/vehicles/spacepod.dmi' icon_state = "blank" - var/projectile_type + var/obj/item/projectile/projectile_type var/shot_cost = 0 var/shots_per = 1 var/fire_sound @@ -89,7 +88,7 @@ name = "disabler system" desc = "A weak taser system for space pods, fires disabler beams." icon_state = "weapon_taser" - projectile_type = "/obj/item/projectile/beam/disabler" + projectile_type = /obj/item/projectile/beam/disabler shot_cost = 400 fire_sound = 'sound/weapons/Taser.ogg' @@ -97,7 +96,7 @@ name = "burst taser system" desc = "A weak taser system for space pods, this one fires 3 at a time." icon_state = "weapon_burst_taser" - projectile_type = "/obj/item/projectile/beam/disabler" + projectile_type = /obj/item/projectile/beam/disabler shot_cost = 1200 shots_per = 3 fire_sound = 'sound/weapons/Taser.ogg' @@ -107,7 +106,7 @@ name = "laser system" desc = "A weak laser system for space pods, fires concentrated bursts of energy" icon_state = "weapon_laser" - projectile_type = "/obj/item/projectile/beam" + projectile_type = /obj/item/projectile/beam shot_cost = 600 fire_sound = 'sound/weapons/Laser.ogg' @@ -117,7 +116,7 @@ desc = "A weak mining laser system for space pods, fires bursts of energy that cut through rock" icon = 'icons/goonstation/pods/ship.dmi' icon_state = "pod_taser" - projectile_type = "/obj/item/projectile/kinetic" + projectile_type = /obj/item/projectile/kinetic/pod shot_cost = 300 fire_delay = 14 fire_sound = 'sound/weapons/Kenetic_accel.ogg' @@ -127,7 +126,7 @@ desc = "A mining laser system for space pods, fires bursts of energy that cut through rock" icon = 'icons/goonstation/pods/ship.dmi' icon_state = "pod_m_laser" - projectile_type = "/obj/item/projectile/kinetic/super" + projectile_type = /obj/item/projectile/kinetic/pod/regular shot_cost = 250 fire_delay = 10 fire_sound = 'sound/weapons/Kenetic_accel.ogg' @@ -137,7 +136,7 @@ desc = "An enhanced mining laser system for space pods, fires bursts of energy that cut through rock" icon = 'icons/goonstation/pods/ship.dmi' icon_state = "pod_w_laser" - projectile_type = "/obj/item/projectile/kinetic/hyper" + projectile_type = /obj/item/projectile/kinetic/pod/enhanced shot_cost = 200 fire_delay = 8 fire_sound = 'sound/weapons/Kenetic_accel.ogg' From 8432113c59dd87c37966d033cb28e87046a73d3a Mon Sep 17 00:00:00 2001 From: Markolie Date: Wed, 22 Feb 2017 18:36:10 +0100 Subject: [PATCH 2/7] Add eject ID card to fax machine --- code/game/machinery/computer/card.dm | 1 - code/modules/paperwork/faxmachine.dm | 17 +++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index 502ef6cc6e1..5b7463d1b8c 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -117,7 +117,6 @@ var/time_last_changed_position = 0 modify = null else to_chat(usr, "There is nothing to remove from the console.") - return /obj/machinery/computer/card/attackby(obj/item/weapon/card/id/id_card, mob/user, params) if(!istype(id_card)) diff --git a/code/modules/paperwork/faxmachine.dm b/code/modules/paperwork/faxmachine.dm index a7f631f9924..18c5184f593 100644 --- a/code/modules/paperwork/faxmachine.dm +++ b/code/modules/paperwork/faxmachine.dm @@ -198,6 +198,23 @@ var/list/alldepartments = list() card.forceMove(src) scan = card nanomanager.update_uis(src) + +/obj/machinery/photocopier/faxmachine/verb/eject_id() + set category = null + set name = "Eject ID Card" + set src in oview(1) + + if(usr.restrained()) + return + + if(scan) + to_chat(usr, "You remove \the [scan] from \the [src].") + scan.forceMove(get_turf(src)) + if(!usr.get_active_hand() && Adjacent(usr)) + usr.put_in_hands(scan) + scan = null + else + to_chat(usr, "There is nothing to remove from \the [src].") /obj/machinery/photocopier/faxmachine/proc/sendfax(var/destination,var/mob/sender) if(stat & (BROKEN|NOPOWER)) From 707b9268811b26fff886d9b38475d6cf8cd98b99 Mon Sep 17 00:00:00 2001 From: Markolie Date: Wed, 22 Feb 2017 18:48:50 +0100 Subject: [PATCH 3/7] Fax fix --- code/modules/paperwork/faxmachine.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/paperwork/faxmachine.dm b/code/modules/paperwork/faxmachine.dm index 18c5184f593..14925d9752f 100644 --- a/code/modules/paperwork/faxmachine.dm +++ b/code/modules/paperwork/faxmachine.dm @@ -312,7 +312,7 @@ var/list/alldepartments = list() /obj/machinery/photocopier/faxmachine/proc/message_admins(var/mob/sender, var/faxname, var/faxtype, var/obj/item/sent, font_colour="#9A04D1") var/msg = "[faxname]: [key_name_admin(sender)] | REPLY: (RADIO) (FAX) (SM) | REJECT: (TEMPLATE) (BSA) (EVILFAX) : Receiving '[sent.name]' via secure connection... view message" for(var/client/C in admins) - if(check_rights(R_EVENT, 0, C)) + if(check_rights(R_EVENT, 0, C.mob)) to_chat(C, msg) if(C.prefs.sound & SOUND_ADMINHELP) C << 'sound/effects/adminhelp.ogg' From fb5327166475eeeb92608e8d16919286ba743509 Mon Sep 17 00:00:00 2001 From: Markolie Date: Wed, 22 Feb 2017 20:08:33 +0100 Subject: [PATCH 4/7] Band aid fix for ambulance teleporting --- code/modules/vehicle/ambulance.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/modules/vehicle/ambulance.dm b/code/modules/vehicle/ambulance.dm index 7d3f9084f5f..cd39a41df79 100644 --- a/code/modules/vehicle/ambulance.dm +++ b/code/modules/vehicle/ambulance.dm @@ -31,6 +31,9 @@ /obj/vehicle/ambulance/Move(newloc, Dir) var/oldloc = loc + if(bed && !Adjacent(bed)) + bed = null + return . = ..() if(bed && get_dist(oldloc, loc) <= 2) bed.Move(oldloc) From c56fbcf312137ca462b0dcbf0326caaa616098e1 Mon Sep 17 00:00:00 2001 From: Markolie Date: Wed, 22 Feb 2017 20:13:36 +0100 Subject: [PATCH 5/7] No need to block movement --- code/modules/vehicle/ambulance.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/modules/vehicle/ambulance.dm b/code/modules/vehicle/ambulance.dm index cd39a41df79..ab64ac1252d 100644 --- a/code/modules/vehicle/ambulance.dm +++ b/code/modules/vehicle/ambulance.dm @@ -33,7 +33,6 @@ var/oldloc = loc if(bed && !Adjacent(bed)) bed = null - return . = ..() if(bed && get_dist(oldloc, loc) <= 2) bed.Move(oldloc) From 01c7c6eb4344adcc0c5c22ea75351273f13757ec Mon Sep 17 00:00:00 2001 From: Markolie Date: Fri, 24 Feb 2017 12:56:09 +0100 Subject: [PATCH 6/7] Fix chef preview hat --- code/modules/mob/new_player/preferences_setup.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index 15473caf5f2..e8899ef6123 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -470,7 +470,7 @@ if(CHEF) clothes_s = new /icon(uniform_dmi, "chef_s") clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) - clothes_s.Blend(new /icon('icons/mob/head.dmi', "chefhat"), ICON_OVERLAY) + clothes_s.Blend(new /icon('icons/mob/head.dmi', "chef"), ICON_OVERLAY) if(prob(1)) clothes_s.Blend(new /icon('icons/mob/suit.dmi', "apronchef"), ICON_OVERLAY) switch(backbag) From f54ade7f46d832e57c58d7ef6aa08ceebc4ea56e Mon Sep 17 00:00:00 2001 From: Markolie Date: Fri, 24 Feb 2017 16:14:17 +0100 Subject: [PATCH 7/7] Fix nuke ops victory declaration --- code/game/gamemodes/nuclear/nuclearbomb.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm index 6e50736e722..2476753b34b 100644 --- a/code/game/gamemodes/nuclear/nuclearbomb.dm +++ b/code/game/gamemodes/nuclear/nuclearbomb.dm @@ -399,6 +399,7 @@ var/bomb_set /obj/item/weapon/disk/nuclear/New() ..() processing_objects.Add(src) + poi_list |= src /obj/item/weapon/disk/nuclear/process() var/turf/disk_loc = get_turf(src) @@ -414,10 +415,12 @@ var/bomb_set if(force) message_admins("[src] has been !!force deleted!! in ([diskturf ? "[diskturf.x], [diskturf.y] ,[diskturf.z] - JMP":"nonexistent location"]).") log_game("[src] has been !!force deleted!! in ([diskturf ? "[diskturf.x], [diskturf.y] ,[diskturf.z]":"nonexistent location"]).") + poi_list.Remove(src) processing_objects.Remove(src) return ..() if(blobstart.len > 0) + poi_list.Remove(src) var/obj/item/weapon/disk/nuclear/NEWDISK = new(pick(blobstart)) transfer_fingerprints_to(NEWDISK) message_admins("[src] has been destroyed at ([diskturf.x], [diskturf.y], [diskturf.z] - JMP). Moving it to ([NEWDISK.x], [NEWDISK.y], [NEWDISK.z] - JMP).")