-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
This commit is contained in:
sieve32@gmail.com
2013-01-10 19:07:02 +00:00
parent 692fc1b95a
commit d64186ec9b
26 changed files with 101 additions and 41 deletions

View File

@@ -1,9 +1,12 @@
/proc/command_alert(var/text, var/title = "") /proc/command_alert(var/text, var/title = "")
world << "<h1 class='alert'>[command_name()] Update</h1>" var/command
command += "<h1 class='alert'>[command_name()] Update</h1>"
if (title && length(title) > 0) if (title && length(title) > 0)
world << "<h2 class='alert'>[html_encode(title)]</h2>" command += "<br><h2 class='alert'>[html_encode(title)]</h2>"
world << "<span class='alert'>[html_encode(text)]</span>"
world << "<br>"
command += "<br><span class='alert'>[html_encode(text)]</span><br>"
command += "<br>"
for(var/mob/M in player_list)
if(!istype(M,/mob/new_player))
M << command

View File

@@ -109,7 +109,9 @@ var/list/blob_nodes = list()
if (1) if (1)
command_alert("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert") 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 autoexpand = 0//No more extra pulses
stage = -1 stage = -1
//next stage in 4-5 minutes //next stage in 4-5 minutes

View File

@@ -29,7 +29,9 @@
switch(pick(eventNumbersToPickFrom)) switch(pick(eventNumbersToPickFrom))
if(1) if(1)
command_alert("Meteors have been detected on collision course with the station.", "Meteor Alert") 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) spawn(100)
meteor_wave() meteor_wave()
spawn_meteors() spawn_meteors()
@@ -39,7 +41,9 @@
if(2) if(2)
command_alert("Gravitational anomalies detected on the station. There is no additional data.", "Anomaly Alert") 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/turf/T = pick(blobstart)
var/obj/effect/bhole/bh = new /obj/effect/bhole( T.loc, 30 ) var/obj/effect/bhole/bh = new /obj/effect/bhole( T.loc, 30 )
spawn(rand(50, 300)) spawn(rand(50, 300))
@@ -110,7 +114,8 @@
/proc/power_failure() /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") 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) for(var/obj/machinery/power/smes/S in world)
if(istype(get_area(S), /area/turret_protected) || S.z != 1) if(istype(get_area(S), /area/turret_protected) || S.z != 1)
continue continue
@@ -158,7 +163,8 @@
/proc/power_restore() /proc/power_restore()
command_alert("Power has been restored to [station_name()]. We apologize for the inconvenience.", "Power Systems Nominal") 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) for(var/obj/machinery/power/apc/C in world)
if(C.cell && C.z == 1) if(C.cell && C.z == 1)
C.cell.charge = C.cell.maxcharge C.cell.charge = C.cell.maxcharge
@@ -180,7 +186,8 @@
/proc/power_restore_quick() /proc/power_restore_quick()
command_alert("All SMESs on [station_name()] have been recharged. We apologize for the inconvenience.", "Power Systems Nominal") 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) for(var/obj/machinery/power/smes/S in world)
if(S.z != 1) if(S.z != 1)
continue continue
@@ -266,7 +273,8 @@
break break
spawn(rand(1500, 3000)) //Delayed announcements to keep the crew on their toes. 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") 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 /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") //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. 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") 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() /proc/high_radiation_event()
@@ -331,7 +340,8 @@
M.apply_effect((rand(15,75)),IRRADIATE,0) M.apply_effect((rand(15,75)),IRRADIATE,0)
sleep(100) sleep(100)
command_alert("High levels of radiation detected near the station. Please report to the Med-bay if you feel strange.", "Anomaly Alert") 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) //sleep(100)
spawn(rand(300, 600)) //Delayed announcements to keep the crew on their toes. 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") 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 /proc/lightsout(isEvent = 0, lightsoutAmount = 1,lightsoutRange = 25) //leave lightsoutAmount as 0 to break ALL lights
if(isEvent) if(isEvent)

View File

@@ -13,7 +13,9 @@
blobevent = 0 blobevent = 0
spawn(rand(1000, 2000)) //Delayed announcements to keep the crew on their toes. 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") 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() /proc/dotheblobbaby()
if (blobevent) if (blobevent)

View File

@@ -8,7 +8,9 @@
if(pick_turfs.len) if(pick_turfs.len)
//All ready. Announce that bad juju is afoot. //All ready. Announce that bad juju is afoot.
command_alert("Space-time anomalies detected on the station. There is no additional data.", "Anomaly Alert") 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! //prob(20) can be approximated to 1 wormhole every 5 turfs!
//admittedly less random but totally worth it >_< //admittedly less random but totally worth it >_<

View File

@@ -230,7 +230,9 @@ Whitespace:Seperator;
comm.messagetext.Add(intercepttext) comm.messagetext.Add(intercepttext)
command_alert("Summary downloaded and printed out at all communications consoles.", "Enemy communication intercept. Security Level Elevated.") 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) if(security_level < SEC_LEVEL_BLUE)
set_security_level(SEC_LEVEL_BLUE) set_security_level(SEC_LEVEL_BLUE)

View File

@@ -271,7 +271,9 @@ var/global/datum/controller/gameticker/ticker
if(player.mind.assigned_role != "MODE") if(player.mind.assigned_role != "MODE")
job_master.EquipRank(player, player.mind.assigned_role, 0) job_master.EquipRank(player, player.mind.assigned_role, 0)
if(captainless) 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() proc/process()

View File

@@ -171,7 +171,9 @@
ticker.mode:malf_mode_declared = 1 ticker.mode:malf_mode_declared = 1
for(var/datum/mind/AI_mind in ticker.mode:malf_ai) for(var/datum/mind/AI_mind in ticker.mode:malf_ai)
AI_mind.current.verbs -= /datum/game_mode/malfunction/proc/takeover 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() /datum/game_mode/malfunction/proc/ai_win()

View File

@@ -245,7 +245,9 @@ var/list/obj/machinery/requests_console/allConsoles = list()
if(href_list["sendAnnouncement"]) if(href_list["sendAnnouncement"])
if(!announcementConsole) return if(!announcementConsole) return
world << "<b><font size = 3><font color = red>[department] announcement:</font color> [message]</font size></b>" for(var/mob/M in player_list)
if(!istype(M,/mob/new_player))
M << "<b><font size = 3><font color = red>[department] announcement:</font color> [message]</font size></b>"
announceAuth = 0 announceAuth = 0
message = "" message = ""
screen = 0 screen = 0

View File

@@ -7,7 +7,7 @@
health = 400 health = 400
deflect_chance = 20 deflect_chance = 20
damage_absorption = list("brute"=0.5,"fire"=1.1,"bullet"=0.65,"laser"=0.85,"energy"=0.9,"bomb"=0.8) 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 infra_luminosity = 8
force = 40 force = 40
var/defence = 0 var/defence = 0

View File

@@ -7,7 +7,7 @@
health = 300 health = 300
deflect_chance = 15 deflect_chance = 15
damage_absorption = list("brute"=0.75,"fire"=1,"bullet"=0.8,"laser"=0.7,"energy"=0.85,"bomb"=1) 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 infra_luminosity = 6
var/overload = 0 var/overload = 0
var/overload_coeff = 2 var/overload_coeff = 2
@@ -22,7 +22,7 @@
health = 400 health = 400
deflect_chance = 25 deflect_chance = 25
damage_absorption = list("brute"=0.6,"fire"=0.8,"bullet"=0.6,"laser"=0.5,"energy"=0.65,"bomb"=0.8) 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 overload_coeff = 1
wreckage = /obj/effect/decal/mecha_wreckage/gygax/dark wreckage = /obj/effect/decal/mecha_wreckage/gygax/dark
max_equip = 4 max_equip = 4

View File

@@ -7,7 +7,7 @@
deflect_chance = 60 deflect_chance = 60
internal_damage_threshold = 60 internal_damage_threshold = 60
damage_absorption = list("brute"=1.2,"fire"=1.5,"bullet"=1,"laser"=1,"energy"=1,"bomb"=1) 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 infra_luminosity = 5
operation_req_access = list(access_clown) operation_req_access = list(access_clown)
wreckage = /obj/effect/decal/mecha_wreckage/honker wreckage = /obj/effect/decal/mecha_wreckage/honker

View File

@@ -6,7 +6,7 @@
health = 500 health = 500
deflect_chance = 25 deflect_chance = 25
damage_absorption = list("brute"=0.5,"fire"=0.7,"bullet"=0.45,"laser"=0.6,"energy"=0.7,"bomb"=0.7) 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 infra_luminosity = 3
var/zoom = 0 var/zoom = 0
var/thrusters = 0 var/thrusters = 0

View File

@@ -8,7 +8,7 @@
health = 200 health = 200
deflect_chance = 30 deflect_chance = 30
damage_absorption = list("brute"=0.7,"fire"=0.7,"bullet"=0.7,"laser"=0.7,"energy"=0.7,"bomb"=0.7) 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 infra_luminosity = 3
wreckage = /obj/effect/decal/mecha_wreckage/phazon wreckage = /obj/effect/decal/mecha_wreckage/phazon
add_req_access = 1 add_req_access = 1

View File

@@ -48,7 +48,7 @@
var/obj/item/device/radio/radio = null 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_threshold = 50 //health percentage below which internal damage is possible
var/internal_damage = 0 //contains bitflags var/internal_damage = 0 //contains bitflags

View File

@@ -3,7 +3,7 @@
name = "Odysseus" name = "Odysseus"
icon_state = "odysseus" icon_state = "odysseus"
step_in = 2 step_in = 2
max_temperature = 1500 max_temperature = 15000
health = 120 health = 120
wreckage = /obj/effect/decal/mecha_wreckage/odysseus wreckage = /obj/effect/decal/mecha_wreckage/odysseus
internal_damage_threshold = 35 internal_damage_threshold = 35

View File

@@ -3,7 +3,7 @@
name = "APLU \"Ripley\"" name = "APLU \"Ripley\""
icon_state = "ripley" icon_state = "ripley"
step_in = 6 step_in = 6
max_temperature = 1000 max_temperature = 20000
health = 200 health = 200
wreckage = /obj/effect/decal/mecha_wreckage/ripley wreckage = /obj/effect/decal/mecha_wreckage/ripley
var/list/cargo = new var/list/cargo = new
@@ -19,7 +19,7 @@
desc = "Standart APLU chassis was refitted with additional thermal protection and cistern." desc = "Standart APLU chassis was refitted with additional thermal protection and cistern."
name = "APLU \"Firefighter\"" name = "APLU \"Firefighter\""
icon_state = "firefighter" icon_state = "firefighter"
max_temperature = 4500 max_temperature = 65000
health = 250 health = 250
lights_power = 8 lights_power = 8
damage_absorption = list("fire"=0.5,"bullet"=0.8,"bomb"=0.5) damage_absorption = list("fire"=0.5,"bullet"=0.8,"bomb"=0.5)

View File

@@ -88,8 +88,11 @@
return return
if(density) if(density)
if(istype(W, /obj/item/weapon/screwdriver))
var/turf/T = get_turf(src) var/turf/T = get_turf(src)
if(T.density)
user << "\red The wall is blocked!"
return
if(istype(W, /obj/item/weapon/screwdriver))
user.visible_message("[user] tightens some bolts on the wall.", "You tighten the bolts on the wall.") user.visible_message("[user] tightens some bolts on the wall.", "You tighten the bolts on the wall.")
if(!mineral || mineral == "metal") if(!mineral || mineral == "metal")
T.ChangeTurf(/turf/simulated/wall) T.ChangeTurf(/turf/simulated/wall)
@@ -100,7 +103,6 @@
if( istype(W, /obj/item/weapon/weldingtool) ) if( istype(W, /obj/item/weapon/weldingtool) )
var/obj/item/weapon/weldingtool/WT = W var/obj/item/weapon/weldingtool/WT = W
if( WT:welding ) if( WT:welding )
var/turf/T = get_turf(src)
if(!mineral) if(!mineral)
T.ChangeTurf(/turf/simulated/wall) T.ChangeTurf(/turf/simulated/wall)
else else

View File

@@ -80,16 +80,18 @@
del(A) //The disk's Del() proc ensures a new one is created del(A) //The disk's Del() proc ensures a new one is created
return 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)) if(istype(A, /mob/living))
var/mob/living/MM = A var/mob/living/MM = A
if(MM.client && !MM.stat) 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 << "\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 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 del(N)//Make the disk respawn it is on a clientless mob or corpse
else 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 del(N)//Make the disk respawn if it is floating on its own
return return

View File

@@ -7,7 +7,7 @@
var/obj/item/weapon/cable_coil/C = W var/obj/item/weapon/cable_coil/C = W
if(!wired) if(!wired)
if(C.amount >= 2) if(C.amount >= 2)
C.amount -= 2 C.use(2)
wired = 1 wired = 1
siemens_coefficient = 1 siemens_coefficient = 1
user << "<span class='notice'>You wrap some wires around [src].</span>" user << "<span class='notice'>You wrap some wires around [src].</span>"

View File

@@ -137,7 +137,7 @@
swap_hand() swap_hand()
/mob/living/carbon/proc/help_shake_act(mob/living/carbon/M) /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)) if(src == M && istype(src, /mob/living/carbon/human))
var/mob/living/carbon/human/H = src var/mob/living/carbon/human/H = src
src.visible_message( \ src.visible_message( \

View File

@@ -59,7 +59,7 @@
switch(M.a_intent) switch(M.a_intent)
if("help") if("help")
if(health > 0) if(health >= 0)
help_shake_act(M) help_shake_act(M)
return 1 return 1
if(M.health < -75) return 0 if(M.health < -75) return 0

View File

@@ -52,6 +52,7 @@
src.reagents.reaction(safe_thing, TOUCH) src.reagents.reaction(safe_thing, TOUCH)
user << "\blue You transfer [trans] units of the solution." user << "\blue You transfer [trans] units of the solution."
if (src.reagents.total_volume<=0) if (src.reagents.total_volume<=0)
filled = 0 filled = 0
@@ -62,6 +63,15 @@
for(var/mob/O in viewers(world.view, user)) for(var/mob/O in viewers(world.view, user))
O.show_message(text("\red <B>[] squirts something into []'s eyes!</B>", user, target), 1) O.show_message(text("\red <B>[] squirts something into []'s eyes!</B>", user, target), 1)
src.reagents.reaction(target, TOUCH) 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()]\] <b>[user]/[user.ckey]</b> squirted <b>[M]/[M.ckey]</b> with ([R])"
M.attack_log += "\[[time_stamp()]\] <b>[user]/[user.ckey]</b> squirted <b>[M]/[M.ckey]</b> with ([R])"
log_attack("\[[time_stamp()]\] <b>[user]/[user.ckey]</b> squirted <b>[M]/[M.ckey]</b> with ([R])")
trans = src.reagents.trans_to(target, amount_per_transfer_from_this) trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
user << "\blue You transfer [trans] units of the solution." user << "\blue You transfer [trans] units of the solution."

View File

@@ -46,7 +46,16 @@
return return
if(ismob(target) && target.reagents && reagents.total_volume) if(ismob(target) && target.reagents && reagents.total_volume)
var/mob/M = target
user << "\blue You splash the solution onto [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()]\] <b>[user]/[user.ckey]</b> splashed <b>[M]/[M.ckey]</b> with ([R])"
M.attack_log += "\[[time_stamp()]\] <b>[user]/[user.ckey]</b> splashed <b>[M]/[M.ckey]</b> with ([R])"
log_attack("\[[time_stamp()]\] <b>[user]/[user.ckey]</b> splashed <b>[M]/[M.ckey]</b> with ([R])")
for(var/mob/O in viewers(world.view, user)) for(var/mob/O in viewers(world.view, user))
O.show_message(text("\red [] has been splashed with something by []!", target, user), 1) O.show_message(text("\red [] has been splashed with something by []!", target, user), 1)
src.reagents.reaction(target, TOUCH) src.reagents.reaction(target, TOUCH)

View File

@@ -61,6 +61,15 @@
for(var/mob/O in viewers(world.view, user)) for(var/mob/O in viewers(world.view, user))
O.show_message(text("\red <B>[] squirts something into []'s eyes!</B>", user, target), 1) O.show_message(text("\red <B>[] squirts something into []'s eyes!</B>", user, target), 1)
src.reagents.reaction(target, TOUCH) 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()]\] <b>[user]/[user.ckey]</b> squirted <b>[M]/[M.ckey]</b> with ([R])"
M.attack_log += "\[[time_stamp()]\] <b>[user]/[user.ckey]</b> squirted <b>[M]/[M.ckey]</b> with ([R])"
log_attack("\[[time_stamp()]\] <b>[user]/[user.ckey]</b> squirted <b>[M]/[M.ckey]</b> with ([R])")
trans = src.reagents.trans_to(target, amount_per_transfer_from_this) trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
user << "\blue You transfer [trans] units of the solution." user << "\blue You transfer [trans] units of the solution."

View File

@@ -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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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)