From d64186ec9b8850cb78e8040ed1e0e8170c47e4e5 Mon Sep 17 00:00:00 2001 From: "sieve32@gmail.com" Date: Thu, 10 Jan 2013 19:07:02 +0000 Subject: [PATCH] -Now instead of just giving an angry message, any living mob with a client and the nuke disk that hits a transition on Z1 on them will have their momentum reversed, effectively sending them back where they came from. (Dead and clientless mobs still have the disk deleted from them) Fixes Issue 1183 -Most game-specific messages now print to all non-new_player mobs instead of the world, round-end reports are unchanged but request consoles and other announcements will not be heard by people in the lobby any more Fixes Issue 1158 -Tweaked the temperature resistance of mechs to be more inline with current fires. Most mechs protect almost as well as a full fire suit, and the firefighter mech is just over 2x more effective Fixes Issue 1027 -False-walls can no longer be fixed when on top of a dense turfs Fixes Issue 1196 -Tweaked how damage was read for CPR and self-examining so you can't perform CPR on yourself at 100 damage Fixes Issue 1202 -Made stun-glove construction use the cable/Use() instead of just amount-2, so you can no longer get 0 amount coils Fixes Issue 1206 -Glass reagent containers and droppers now log attacks like syringes do, with the list of reagents Fixes Issue 1234 git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5508 316c924e-a436-60f5-8080-3fe189b3f50e --- code/defines/procs/command_alert.dm | 13 +++++---- code/game/gamemodes/blob/blob.dm | 4 ++- code/game/gamemodes/events.dm | 29 +++++++++++++------ code/game/gamemodes/events/miniblob.dm | 4 ++- code/game/gamemodes/events/wormholes.dm | 4 ++- code/game/gamemodes/game_mode.dm | 4 ++- code/game/gamemodes/gameticker.dm | 4 ++- .../game/gamemodes/malfunction/malfunction.dm | 4 ++- code/game/machinery/requests_console.dm | 4 ++- code/game/mecha/combat/durand.dm | 2 +- code/game/mecha/combat/gygax.dm | 4 +-- code/game/mecha/combat/honker.dm | 2 +- code/game/mecha/combat/marauder.dm | 2 +- code/game/mecha/combat/phazon.dm | 2 +- code/game/mecha/mecha.dm | 2 +- code/game/mecha/medical/odysseus.dm | 2 +- code/game/mecha/working/ripley.dm | 4 +-- code/game/objects/structures/false_walls.dm | 6 ++-- code/game/turfs/space/space.dm | 8 +++-- code/modules/clothing/gloves/stungloves.dm | 2 +- code/modules/mob/living/carbon/carbon.dm | 2 +- .../living/carbon/human/human_attackhand.dm | 2 +- .../reagents/reagent_containers/dropper.dm | 10 +++++++ .../reagents/reagent_containers/glass.dm | 9 ++++++ .../reagent_containers/robodropper.dm | 9 ++++++ maps/tgstation.2.1.0.dmm | 4 +-- 26 files changed, 101 insertions(+), 41 deletions(-) diff --git a/code/defines/procs/command_alert.dm b/code/defines/procs/command_alert.dm index 23ee3c1119..6a68d10572 100644 --- a/code/defines/procs/command_alert.dm +++ b/code/defines/procs/command_alert.dm @@ -1,9 +1,12 @@ /proc/command_alert(var/text, var/title = "") - world << "

[command_name()] Update

" + var/command + command += "

[command_name()] Update

" if (title && length(title) > 0) - world << "

[html_encode(title)]

" - - world << "[html_encode(text)]" - world << "
" + command += "

[html_encode(title)]

" + command += "
[html_encode(text)]
" + command += "
" + for(var/mob/M in player_list) + if(!istype(M,/mob/new_player)) + M << command diff --git a/code/game/gamemodes/blob/blob.dm b/code/game/gamemodes/blob/blob.dm index 7454370030..7cca20dfac 100644 --- a/code/game/gamemodes/blob/blob.dm +++ b/code/game/gamemodes/blob/blob.dm @@ -109,7 +109,9 @@ var/list/blob_nodes = list() if (1) command_alert("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert") - world << sound('sound/AI/outbreak5.ogg') + for(var/mob/M in player_list) + if(!istype(M,/mob/new_player)) + M << sound('sound/AI/outbreak5.ogg') autoexpand = 0//No more extra pulses stage = -1 //next stage in 4-5 minutes diff --git a/code/game/gamemodes/events.dm b/code/game/gamemodes/events.dm index fec3b7df9a..e6452da992 100644 --- a/code/game/gamemodes/events.dm +++ b/code/game/gamemodes/events.dm @@ -29,7 +29,9 @@ switch(pick(eventNumbersToPickFrom)) if(1) command_alert("Meteors have been detected on collision course with the station.", "Meteor Alert") - world << sound('sound/AI/meteors.ogg') + for(var/mob/M in player_list) + if(!istype(M,/mob/new_player)) + M << sound('sound/AI/meteors.ogg') spawn(100) meteor_wave() spawn_meteors() @@ -39,7 +41,9 @@ if(2) command_alert("Gravitational anomalies detected on the station. There is no additional data.", "Anomaly Alert") - world << sound('sound/AI/granomalies.ogg') + for(var/mob/M in player_list) + if(!istype(M,/mob/new_player)) + M << sound('sound/AI/granomalies.ogg') var/turf/T = pick(blobstart) var/obj/effect/bhole/bh = new /obj/effect/bhole( T.loc, 30 ) spawn(rand(50, 300)) @@ -110,7 +114,8 @@ /proc/power_failure() command_alert("Abnormal activity detected in [station_name()]'s powernet. As a precautionary measure, the station's power will be shut off for an indeterminate duration.", "Critical Power Failure") - world << sound('sound/AI/poweroff.ogg') + for(var/mob/M in player_list) + M << sound('sound/AI/poweroff.ogg') for(var/obj/machinery/power/smes/S in world) if(istype(get_area(S), /area/turret_protected) || S.z != 1) continue @@ -158,7 +163,8 @@ /proc/power_restore() command_alert("Power has been restored to [station_name()]. We apologize for the inconvenience.", "Power Systems Nominal") - world << sound('sound/AI/poweron.ogg') + for(var/mob/M in player_list) + M << sound('sound/AI/poweron.ogg') for(var/obj/machinery/power/apc/C in world) if(C.cell && C.z == 1) C.cell.charge = C.cell.maxcharge @@ -180,7 +186,8 @@ /proc/power_restore_quick() command_alert("All SMESs on [station_name()] have been recharged. We apologize for the inconvenience.", "Power Systems Nominal") - world << sound('sound/AI/poweron.ogg') + for(var/mob/M in player_list) + M << sound('sound/AI/poweron.ogg') for(var/obj/machinery/power/smes/S in world) if(S.z != 1) continue @@ -266,7 +273,8 @@ break spawn(rand(1500, 3000)) //Delayed announcements to keep the crew on their toes. command_alert("Confirmed outbreak of level 7 viral biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert") - world << sound('sound/AI/outbreak7.ogg') + for(var/mob/M in player_list) + M << sound('sound/AI/outbreak7.ogg') /proc/alien_infestation(var/spawncount = 1) // -- TLE //command_alert("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert") @@ -294,7 +302,8 @@ spawn(rand(5000, 6000)) //Delayed announcements to keep the crew on their toes. command_alert("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert") - world << sound('sound/AI/aliens.ogg') + for(var/mob/M in player_list) + M << sound('sound/AI/aliens.ogg') /proc/high_radiation_event() @@ -331,7 +340,8 @@ M.apply_effect((rand(15,75)),IRRADIATE,0) sleep(100) command_alert("High levels of radiation detected near the station. Please report to the Med-bay if you feel strange.", "Anomaly Alert") - world << sound('sound/AI/radiation.ogg') + for(var/mob/M in player_list) + M << sound('sound/AI/radiation.ogg') @@ -381,7 +391,8 @@ //sleep(100) spawn(rand(300, 600)) //Delayed announcements to keep the crew on their toes. command_alert("Unknown biological entities have been detected near [station_name()], please stand-by.", "Lifesign Alert") - world << sound('sound/AI/commandreport.ogg') + for(var/mob/M in player_list) + M << sound('sound/AI/commandreport.ogg') /proc/lightsout(isEvent = 0, lightsoutAmount = 1,lightsoutRange = 25) //leave lightsoutAmount as 0 to break ALL lights if(isEvent) diff --git a/code/game/gamemodes/events/miniblob.dm b/code/game/gamemodes/events/miniblob.dm index fec1968a23..9172aba434 100644 --- a/code/game/gamemodes/events/miniblob.dm +++ b/code/game/gamemodes/events/miniblob.dm @@ -13,7 +13,9 @@ blobevent = 0 spawn(rand(1000, 2000)) //Delayed announcements to keep the crew on their toes. command_alert("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert") - world << sound('sound/AI/outbreak5.ogg') + for(var/mob/M in player_list) + if(!istype(M,/mob/new_player)) + M << sound('sound/AI/outbreak5.ogg') /proc/dotheblobbaby() if (blobevent) diff --git a/code/game/gamemodes/events/wormholes.dm b/code/game/gamemodes/events/wormholes.dm index 45f2993b20..1ef19e24ac 100644 --- a/code/game/gamemodes/events/wormholes.dm +++ b/code/game/gamemodes/events/wormholes.dm @@ -8,7 +8,9 @@ if(pick_turfs.len) //All ready. Announce that bad juju is afoot. command_alert("Space-time anomalies detected on the station. There is no additional data.", "Anomaly Alert") - world << sound('sound/AI/spanomalies.ogg') + for(var/mob/M in player_list) + if(!istype(M,/mob/new_player)) + M << sound('sound/AI/spanomalies.ogg') //prob(20) can be approximated to 1 wormhole every 5 turfs! //admittedly less random but totally worth it >_< diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index ded6a9a5f0..d20bdb669e 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -230,7 +230,9 @@ Whitespace:Seperator; comm.messagetext.Add(intercepttext) command_alert("Summary downloaded and printed out at all communications consoles.", "Enemy communication intercept. Security Level Elevated.") - world << sound('sound/AI/intercept.ogg') + for(var/mob/M in player_list) + if(!istype(M,/mob/new_player)) + M << sound('sound/AI/intercept.ogg') if(security_level < SEC_LEVEL_BLUE) set_security_level(SEC_LEVEL_BLUE) diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm index 8cc75751ce..4183ac322d 100644 --- a/code/game/gamemodes/gameticker.dm +++ b/code/game/gamemodes/gameticker.dm @@ -271,7 +271,9 @@ var/global/datum/controller/gameticker/ticker if(player.mind.assigned_role != "MODE") job_master.EquipRank(player, player.mind.assigned_role, 0) if(captainless) - world << "Captainship not forced on anyone." + for(var/mob/M in player_list) + if(!istype(M,/mob/new_player)) + M << "Captainship not forced on anyone." proc/process() diff --git a/code/game/gamemodes/malfunction/malfunction.dm b/code/game/gamemodes/malfunction/malfunction.dm index b0b12a9c4a..3ae4807464 100644 --- a/code/game/gamemodes/malfunction/malfunction.dm +++ b/code/game/gamemodes/malfunction/malfunction.dm @@ -171,7 +171,9 @@ ticker.mode:malf_mode_declared = 1 for(var/datum/mind/AI_mind in ticker.mode:malf_ai) AI_mind.current.verbs -= /datum/game_mode/malfunction/proc/takeover - world << sound('sound/AI/aimalf.ogg') + for(var/mob/M in player_list) + if(!istype(M,/mob/new_player)) + M << sound('sound/AI/aimalf.ogg') /datum/game_mode/malfunction/proc/ai_win() diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index 23be1f83f0..ced7486384 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -245,7 +245,9 @@ var/list/obj/machinery/requests_console/allConsoles = list() if(href_list["sendAnnouncement"]) if(!announcementConsole) return - world << "[department] announcement: [message]" + for(var/mob/M in player_list) + if(!istype(M,/mob/new_player)) + M << "[department] announcement: [message]" announceAuth = 0 message = "" screen = 0 diff --git a/code/game/mecha/combat/durand.dm b/code/game/mecha/combat/durand.dm index 6dac559b94..920e081b69 100644 --- a/code/game/mecha/combat/durand.dm +++ b/code/game/mecha/combat/durand.dm @@ -7,7 +7,7 @@ health = 400 deflect_chance = 20 damage_absorption = list("brute"=0.5,"fire"=1.1,"bullet"=0.65,"laser"=0.85,"energy"=0.9,"bomb"=0.8) - max_temperature = 3000 + max_temperature = 30000 infra_luminosity = 8 force = 40 var/defence = 0 diff --git a/code/game/mecha/combat/gygax.dm b/code/game/mecha/combat/gygax.dm index 8fc2f5bf4d..3e9c6f5b31 100644 --- a/code/game/mecha/combat/gygax.dm +++ b/code/game/mecha/combat/gygax.dm @@ -7,7 +7,7 @@ health = 300 deflect_chance = 15 damage_absorption = list("brute"=0.75,"fire"=1,"bullet"=0.8,"laser"=0.7,"energy"=0.85,"bomb"=1) - max_temperature = 3500 + max_temperature = 25000 infra_luminosity = 6 var/overload = 0 var/overload_coeff = 2 @@ -22,7 +22,7 @@ health = 400 deflect_chance = 25 damage_absorption = list("brute"=0.6,"fire"=0.8,"bullet"=0.6,"laser"=0.5,"energy"=0.65,"bomb"=0.8) - max_temperature = 4500 + max_temperature = 45000 overload_coeff = 1 wreckage = /obj/effect/decal/mecha_wreckage/gygax/dark max_equip = 4 diff --git a/code/game/mecha/combat/honker.dm b/code/game/mecha/combat/honker.dm index 62dcd59b49..ca849a9846 100644 --- a/code/game/mecha/combat/honker.dm +++ b/code/game/mecha/combat/honker.dm @@ -7,7 +7,7 @@ deflect_chance = 60 internal_damage_threshold = 60 damage_absorption = list("brute"=1.2,"fire"=1.5,"bullet"=1,"laser"=1,"energy"=1,"bomb"=1) - max_temperature = 3500 + max_temperature = 25000 infra_luminosity = 5 operation_req_access = list(access_clown) wreckage = /obj/effect/decal/mecha_wreckage/honker diff --git a/code/game/mecha/combat/marauder.dm b/code/game/mecha/combat/marauder.dm index b366b9e770..d70c0b532f 100644 --- a/code/game/mecha/combat/marauder.dm +++ b/code/game/mecha/combat/marauder.dm @@ -6,7 +6,7 @@ health = 500 deflect_chance = 25 damage_absorption = list("brute"=0.5,"fire"=0.7,"bullet"=0.45,"laser"=0.6,"energy"=0.7,"bomb"=0.7) - max_temperature = 5000 + max_temperature = 60000 infra_luminosity = 3 var/zoom = 0 var/thrusters = 0 diff --git a/code/game/mecha/combat/phazon.dm b/code/game/mecha/combat/phazon.dm index 6bcad8dab5..509935564a 100644 --- a/code/game/mecha/combat/phazon.dm +++ b/code/game/mecha/combat/phazon.dm @@ -8,7 +8,7 @@ health = 200 deflect_chance = 30 damage_absorption = list("brute"=0.7,"fire"=0.7,"bullet"=0.7,"laser"=0.7,"energy"=0.7,"bomb"=0.7) - max_temperature = 1000 + max_temperature = 25000 infra_luminosity = 3 wreckage = /obj/effect/decal/mecha_wreckage/phazon add_req_access = 1 diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 167681d0f3..54c1641d00 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -48,7 +48,7 @@ var/obj/item/device/radio/radio = null - var/max_temperature = 2500 + var/max_temperature = 25000 var/internal_damage_threshold = 50 //health percentage below which internal damage is possible var/internal_damage = 0 //contains bitflags diff --git a/code/game/mecha/medical/odysseus.dm b/code/game/mecha/medical/odysseus.dm index 621f70e5d1..ada9de0796 100644 --- a/code/game/mecha/medical/odysseus.dm +++ b/code/game/mecha/medical/odysseus.dm @@ -3,7 +3,7 @@ name = "Odysseus" icon_state = "odysseus" step_in = 2 - max_temperature = 1500 + max_temperature = 15000 health = 120 wreckage = /obj/effect/decal/mecha_wreckage/odysseus internal_damage_threshold = 35 diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm index 3f58dc8edd..2ad11bb021 100644 --- a/code/game/mecha/working/ripley.dm +++ b/code/game/mecha/working/ripley.dm @@ -3,7 +3,7 @@ name = "APLU \"Ripley\"" icon_state = "ripley" step_in = 6 - max_temperature = 1000 + max_temperature = 20000 health = 200 wreckage = /obj/effect/decal/mecha_wreckage/ripley var/list/cargo = new @@ -19,7 +19,7 @@ desc = "Standart APLU chassis was refitted with additional thermal protection and cistern." name = "APLU \"Firefighter\"" icon_state = "firefighter" - max_temperature = 4500 + max_temperature = 65000 health = 250 lights_power = 8 damage_absorption = list("fire"=0.5,"bullet"=0.8,"bomb"=0.5) diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm index 3337936ae2..b49820dc54 100644 --- a/code/game/objects/structures/false_walls.dm +++ b/code/game/objects/structures/false_walls.dm @@ -88,8 +88,11 @@ return if(density) + var/turf/T = get_turf(src) + if(T.density) + user << "\red The wall is blocked!" + return if(istype(W, /obj/item/weapon/screwdriver)) - var/turf/T = get_turf(src) user.visible_message("[user] tightens some bolts on the wall.", "You tighten the bolts on the wall.") if(!mineral || mineral == "metal") T.ChangeTurf(/turf/simulated/wall) @@ -100,7 +103,6 @@ if( istype(W, /obj/item/weapon/weldingtool) ) var/obj/item/weapon/weldingtool/WT = W if( WT:welding ) - var/turf/T = get_turf(src) if(!mineral) T.ChangeTurf(/turf/simulated/wall) else diff --git a/code/game/turfs/space/space.dm b/code/game/turfs/space/space.dm index 1a2e043877..60369f3b5e 100644 --- a/code/game/turfs/space/space.dm +++ b/code/game/turfs/space/space.dm @@ -80,16 +80,18 @@ del(A) //The disk's Del() proc ensures a new one is created return - if(!isemptylist(A.search_contents_for(/obj/item/weapon/disk/nuclear))) + var/list/disk_search = list(A.search_contents_for(/obj/item/weapon/disk/nuclear)) + if(!isemptylist(disk_search)) if(istype(A, /mob/living)) var/mob/living/MM = A if(MM.client && !MM.stat) MM << "\red Something you are carrying is preventing you from leaving. Don't play stupid; you know exactly what it is." + MM.inertia_dir = turn(MM.inertia_dir,180) else - for(var/obj/item/weapon/disk/nuclear/N in A.search_contents_for(/obj/item/weapon/disk/nuclear)) + for(var/obj/item/weapon/disk/nuclear/N in disk_search) del(N)//Make the disk respawn it is on a clientless mob or corpse else - for(var/obj/item/weapon/disk/nuclear/N in A.search_contents_for(/obj/item/weapon/disk/nuclear)) + for(var/obj/item/weapon/disk/nuclear/N in disk_search) del(N)//Make the disk respawn if it is floating on its own return diff --git a/code/modules/clothing/gloves/stungloves.dm b/code/modules/clothing/gloves/stungloves.dm index 9d245316f7..b892f001d3 100644 --- a/code/modules/clothing/gloves/stungloves.dm +++ b/code/modules/clothing/gloves/stungloves.dm @@ -7,7 +7,7 @@ var/obj/item/weapon/cable_coil/C = W if(!wired) if(C.amount >= 2) - C.amount -= 2 + C.use(2) wired = 1 siemens_coefficient = 1 user << "You wrap some wires around [src]." diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 4abb3db83f..b28dc9dc29 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -137,7 +137,7 @@ swap_hand() /mob/living/carbon/proc/help_shake_act(mob/living/carbon/M) - if (src.health > 0) + if (src.health >= 0) if(src == M && istype(src, /mob/living/carbon/human)) var/mob/living/carbon/human/H = src src.visible_message( \ diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index 8bc4926de7..fb148ae39b 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -59,7 +59,7 @@ switch(M.a_intent) if("help") - if(health > 0) + if(health >= 0) help_shake_act(M) return 1 if(M.health < -75) return 0 diff --git a/code/modules/reagents/reagent_containers/dropper.dm b/code/modules/reagents/reagent_containers/dropper.dm index fc18d449eb..22ea087b13 100644 --- a/code/modules/reagents/reagent_containers/dropper.dm +++ b/code/modules/reagents/reagent_containers/dropper.dm @@ -52,6 +52,7 @@ src.reagents.reaction(safe_thing, TOUCH) + user << "\blue You transfer [trans] units of the solution." if (src.reagents.total_volume<=0) filled = 0 @@ -62,6 +63,15 @@ for(var/mob/O in viewers(world.view, user)) O.show_message(text("\red [] squirts something into []'s eyes!", user, target), 1) src.reagents.reaction(target, TOUCH) + var/mob/M = target + var/R + if(src.reagents) + for(var/datum/reagent/A in src.reagents.reagent_list) + R += A.id + " (" + R += num2text(A.volume) + ")," + user.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] squirted [M]/[M.ckey] with ([R])" + M.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] squirted [M]/[M.ckey] with ([R])" + log_attack("\[[time_stamp()]\] [user]/[user.ckey] squirted [M]/[M.ckey] with ([R])") trans = src.reagents.trans_to(target, amount_per_transfer_from_this) user << "\blue You transfer [trans] units of the solution." diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index a0e65ac616..5eb3f5bc1a 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -46,7 +46,16 @@ return if(ismob(target) && target.reagents && reagents.total_volume) + var/mob/M = target user << "\blue You splash the solution onto [target]." + var/R + if(src.reagents) + for(var/datum/reagent/A in src.reagents.reagent_list) + R += A.id + " (" + R += num2text(A.volume) + ")," + user.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] splashed [M]/[M.ckey] with ([R])" + M.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] splashed [M]/[M.ckey] with ([R])" + log_attack("\[[time_stamp()]\] [user]/[user.ckey] splashed [M]/[M.ckey] with ([R])") for(var/mob/O in viewers(world.view, user)) O.show_message(text("\red [] has been splashed with something by []!", target, user), 1) src.reagents.reaction(target, TOUCH) diff --git a/code/modules/reagents/reagent_containers/robodropper.dm b/code/modules/reagents/reagent_containers/robodropper.dm index e766311195..a42d588f4b 100644 --- a/code/modules/reagents/reagent_containers/robodropper.dm +++ b/code/modules/reagents/reagent_containers/robodropper.dm @@ -61,6 +61,15 @@ for(var/mob/O in viewers(world.view, user)) O.show_message(text("\red [] squirts something into []'s eyes!", user, target), 1) src.reagents.reaction(target, TOUCH) + var/mob/M = target + var/R + if(src.reagents) + for(var/datum/reagent/A in src.reagents.reagent_list) + R += A.id + " (" + R += num2text(A.volume) + ")," + user.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] squirted [M]/[M.ckey] with ([R])" + M.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] squirted [M]/[M.ckey] with ([R])" + log_attack("\[[time_stamp()]\] [user]/[user.ckey] squirted [M]/[M.ckey] with ([R])") trans = src.reagents.trans_to(target, amount_per_transfer_from_this) user << "\blue You transfer [trans] units of the solution." diff --git a/maps/tgstation.2.1.0.dmm b/maps/tgstation.2.1.0.dmm index 9e2fba9dbc..18c6a146b6 100644 --- a/maps/tgstation.2.1.0.dmm +++ b/maps/tgstation.2.1.0.dmm @@ -4121,7 +4121,7 @@ "bBm" = (/obj/structure/table,/obj/item/weapon/scalpel{pixel_y = 12},/obj/item/weapon/circular_saw,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bBn" = (/obj/structure/table,/obj/item/weapon/cautery{pixel_x = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "whitehall"; dir = 2},/area/medical/sleeper) "bBo" = (/obj/structure/table,/obj/item/weapon/retractor,/turf/simulated/floor,/area/medical/sleeper) -"bBp" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/gun/syringe,/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) +"bBp" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/gun/projectile/syringe,/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bBq" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{dir = 2; icon_state = "whiteredcorner"},/area/medical/sleeper) "bBr" = (/obj/structure/closet/l3closet/general,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bBs" = (/obj/structure/closet/secure_closet/medical3,/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) @@ -4352,7 +4352,7 @@ "bFJ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{tag = "icon-whitehall (WEST)"; icon_state = "whitehall"; dir = 8},/area/medical/sleeper) "bFK" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/obj/structure/sign/nosmoking_2{pixel_x = -28},/turf/simulated/floor{dir = 1; icon_state = "whiteredcorner"},/area/medical/sleeper) "bFL" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/vending/wallmed1{pixel_x = 28; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/camera{c_tag = "Medbay Recovery Room"; dir = 8; network = "SS13"},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) -"bFM" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/item/weapon/hand_labeler,/obj/item/weapon/gun/syringe,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) +"bFM" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/item/weapon/hand_labeler,/obj/item/weapon/gun/projectile/syringe,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bFN" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline{pixel_x = 7; pixel_y = -3},/obj/item/weapon/reagent_containers/glass/bottle/antitoxin{pixel_x = -4; pixel_y = -3},/obj/item/weapon/reagent_containers/syringe/inaprovaline{pixel_x = 3; pixel_y = -2},/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/glass/bottle/toxin{pixel_x = 4; pixel_y = 2},/obj/item/weapon/reagent_containers/syringe/inaprovaline{pixel_x = 5; pixel_y = -2},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bFO" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bFP" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/clothing/tie/stethoscope,/obj/machinery/vending/wallmed1{pixel_y = 28},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)