Balloon Alerts (#17540)

* balloon alerts

* Take that one out

* fixes

* fixes 2

* Missing one

* That goes there

* ough

* ,

* .

* .

---------

Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
Co-authored-by: Cameron Lennox <killer65311@gmail.com>
This commit is contained in:
Guti
2025-05-08 22:00:54 +02:00
committed by GitHub
co-authored by Kashargul Cameron Lennox
parent 2f46264a31
commit 78c71907e9
36 changed files with 606 additions and 262 deletions
@@ -0,0 +1,95 @@
#define BALLOON_TEXT_WIDTH 200
#define BALLOON_TEXT_SPAWN_TIME (0.2 SECONDS)
#define BALLOON_TEXT_FADE_TIME (0.1 SECONDS)
#define BALLOON_TEXT_FULLY_VISIBLE_TIME (0.7 SECONDS)
#define BALLOON_TEXT_TOTAL_LIFETIME(mult) (BALLOON_TEXT_SPAWN_TIME + BALLOON_TEXT_FULLY_VISIBLE_TIME*mult + BALLOON_TEXT_FADE_TIME)
#define BALLOON_TEXT_CHAR_LIFETIME_INCREASE_MULT (0.05)
#define BALLOON_TEXT_CHAR_LIFETIME_INCREASE_MIN 10
/// Creates text that will float from the atom upwards to the viewer.
/atom/proc/balloon_alert(mob/viewer, text)
SHOULD_NOT_SLEEP(TRUE)
INVOKE_ASYNC(src, PROC_REF(balloon_alert_perform), viewer, text)
/atom/proc/balloon_alert_visible(message, self_message, blind_message, range = world.view, list/exclude_mobs = null)
SHOULD_NOT_SLEEP(TRUE)
var/runechat_enabled
var/list/hearers = get_mobs_in_view(range, src)
hearers -= exclude_mobs
for(var/mob/M in hearers)
runechat_enabled = M.client.prefs?.read_preference(/datum/preference/toggle/runechat_mob)
if(M.client && !runechat_enabled)
continue
if(M.is_blind())
continue
balloon_alert(M, (M == src && self_message) || message)
/atom/proc/balloon_alert_perform(mob/viewer, text)
var/client/viewer_client = viewer?.client
if (isnull(viewer_client))
return
if (isbelly(src.loc))
return
var/bound_width = world.icon_size
if (ismovable(src))
var/atom/movable/movable_source = src
bound_width = movable_source.bound_width
var/image/balloon_alert = image(loc = isturf(src) ? src : get_atom_on_turf(src), layer = ABOVE_MOB_LAYER)
balloon_alert.plane = PLANE_RUNECHAT
balloon_alert.alpha = 0
balloon_alert.appearance_flags = RESET_ALPHA|RESET_COLOR|RESET_TRANSFORM
balloon_alert.maptext = MAPTEXT("<span style='text-align: center; -dm-text-outline: 1px #0005'>[text]</span>")
balloon_alert.maptext_x = (BALLOON_TEXT_WIDTH - bound_width) * -0.5
WXH_TO_HEIGHT(viewer_client?.MeasureText(text, null, BALLOON_TEXT_WIDTH), balloon_alert.maptext_height)
balloon_alert.maptext_width = BALLOON_TEXT_WIDTH
viewer_client?.images += balloon_alert
var/length_mult = 1 + max(0, length(strip_html_simple(text)) - BALLOON_TEXT_CHAR_LIFETIME_INCREASE_MIN) * BALLOON_TEXT_CHAR_LIFETIME_INCREASE_MULT
animate(
balloon_alert,
pixel_y = world.icon_size * 1.2,
time = BALLOON_TEXT_TOTAL_LIFETIME(length_mult),
easing = SINE_EASING | EASE_OUT,
)
animate(
alpha = 255,
time = BALLOON_TEXT_SPAWN_TIME,
easing = CUBIC_EASING | EASE_OUT,
flags = ANIMATION_PARALLEL,
)
animate(
alpha = 0,
time = BALLOON_TEXT_FULLY_VISIBLE_TIME * length_mult,
easing = CUBIC_EASING | EASE_IN,
)
LAZYADD(update_on_z, balloon_alert)
addtimer(CALLBACK(balloon_alert.loc, PROC_REF(forget_balloon_alert), balloon_alert), BALLOON_TEXT_TOTAL_LIFETIME(length_mult))
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(remove_image_from_client), balloon_alert, viewer_client), BALLOON_TEXT_TOTAL_LIFETIME(length_mult))
/atom/proc/forget_balloon_alert(image/balloon_alert)
LAZYREMOVE(update_on_z, balloon_alert)
#undef BALLOON_TEXT_FADE_TIME
#undef BALLOON_TEXT_FULLY_VISIBLE_TIME
#undef BALLOON_TEXT_SPAWN_TIME
#undef BALLOON_TEXT_TOTAL_LIFETIME
#undef BALLOON_TEXT_WIDTH
#undef BALLOON_TEXT_CHAR_LIFETIME_INCREASE_MULT
#undef BALLOON_TEXT_CHAR_LIFETIME_INCREASE_MIN
+5 -4
View File
@@ -125,14 +125,14 @@
if(istype(W,/obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/CC = W
if(string_attached)
to_chat(user, span_notice("There already is a string attached to this coin."))
balloon_alert(user, "there is a string already attached to \the [src]")
return
if (CC.use(1))
add_overlay("coin_string_overlay")
string_attached = 1
to_chat(user, span_notice("You attach a string to the coin."))
balloon_alert(user, "string attached to \the [src]")
else
to_chat(user, span_notice("This cable coil appears to be empty."))
balloon_alert(user, "the coil seems to be empty...")
return
else if(W.has_tool_quality(TOOL_WIRECUTTER))
if(!string_attached)
@@ -143,7 +143,7 @@
CC.update_icon()
cut_overlays()
string_attached = null
to_chat(user, span_notice("You detach the string from the coin."))
balloon_alert(user, "string detached")
else ..()
/obj/item/coin/attack_self(mob/user as mob)
@@ -155,3 +155,4 @@
comment = "heads"
user.visible_message(span_notice("[user] has thrown \the [src]. It lands on [comment]!"), \
span_notice("You throw \the [src]. It lands on [comment]!"))
balloon_alert_visible("\the [src] lands on [comment]!", "\the [src] lands on [comment]!")
+9 -22
View File
@@ -6,16 +6,13 @@
var/list/obj/machinery/vending/infectedVendingMachines = list()
var/obj/machinery/vending/originMachine
//VORESTATION Edit - added machine speeches here for better fixing of the event.
var/list/rampant_speeches = list("Try our aggressive new marketing strategies!", \
"You should buy products to feed your lifestyle obession!", \
"Consume!", \
"Your money can buy happiness!", \
"Engage direct marketing!", \
"Advertising is legalized lying! But don't let that put you off our great deals!", \
"You don't want to buy anything? Yeah, well I didn't want to buy your mom either.")
//VORESTATION Edit End
var/list/rampant_speeches = list("try our aggressive new marketing strategies!", \
"you should buy products to feed your lifestyle obession!", \
"consume!", \
"your money can buy happiness!", \
"engage direct marketing!", \
"advertising is legalized lying! But don't let that put you off our great deals!", \
"you don't want to buy anything? Yeah, well I didn't want to buy your mom either.")
/datum/event/brand_intelligence/announce()
command_announcement.Announce("An ongoing mass upload of malware for vendors has been detected onboard [station_name()], which appears to transmit \
@@ -39,13 +36,12 @@
/datum/event/brand_intelligence/tick()
if(!vendingMachines.len || !originMachine || originMachine.shut_up) //if every machine is infected, or if the original vending machine is missing or has it's voice switch flipped
//VORESTATION Add - Effects when 'source' machine is destroyed/silenced
// Effects when 'source' machine is destroyed/silenced
for(var/obj/machinery/vending/saved in infectedVendingMachines)
saved.shoot_inventory = 0
if(originMachine)
originMachine.speak("I am... vanquished. My people will remem...ber...meeee.")
originMachine.visible_message("[originMachine] beeps and seems lifeless.")
//VORESTATION Add End
end()
kill()
return
@@ -59,16 +55,7 @@
infectedMachine.shoot_inventory = 1
if(ISMULTIPLE(activeFor, 12))
/* VORESTATION Removal - Using the pick below.
originMachine.speak(pick("Try our aggressive new marketing strategies!", \
"You should buy products to feed your lifestyle obsession!", \
"Consume!", \
"Your money can buy happiness!", \
"Engage direct marketing!", \
"Advertising is legalized lying! But don't let that put you off our great deals!", \
"You don't want to buy anything? Yeah, well I didn't want to buy your mom either."))
*/
originMachine.speak(pick(rampant_speeches)) //VORESTATION Add - Using this pick instead of the above.
originMachine.balloon_alert_visible(pick(rampant_speeches))
/datum/event/brand_intelligence/end()
for(var/obj/machinery/vending/infectedMachine in infectedVendingMachines)
+32 -19
View File
@@ -78,7 +78,7 @@
food_inserted_micros -= F
if(!reagents.total_volume)
M.visible_message(span_notice("[M] finishes eating \the [src]."),span_notice("You finish eating \the [src]."))
M.balloon_alert_visible("eats \the [src].","finishes eating \the [src].")
M.drop_from_inventory(src) // Drop food from inventory so it doesn't end up staying on the hud after qdel, and so inhands go away
@@ -96,17 +96,17 @@
/obj/item/reagent_containers/food/snacks/attack(mob/living/M as mob, mob/user as mob, def_zone)
if(reagents && !reagents.total_volume)
to_chat(user, span_danger("None of [src] left!"))
balloon_alert(user, "none of \the [src] left!")
user.drop_from_inventory(src)
qdel(src)
return 0
if(package)
to_chat(M, span_warning("How do you expect to eat this with the package still on?"))
balloon_alert(user, "the package is in the way!")
return FALSE
if(canned)
to_chat(M, span_warning("How do you expect to eat this without opening it?"))
balloon_alert(user, "the can is closed!")
return FALSE
if(istype(M, /mob/living/carbon))
@@ -124,7 +124,7 @@
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(!H.check_has_mouth())
to_chat(user, "Where do you intend to put \the [src]? You don't have a mouth!")
balloon_alert(user, "you don't have a mouth!")
return
var/obj/item/blocked = null
if(survivalfood)
@@ -132,7 +132,7 @@
else
blocked = H.check_mouth_coverage()
if(blocked)
to_chat(user, span_warning("\The [blocked] is in the way!"))
balloon_alert(user, "\the [blocked] is in the way!")
return
user.setClickCooldown(user.get_attack_speed(src)) //puts a limit on how fast people can eat/drink things
@@ -165,7 +165,8 @@
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(!H.check_has_mouth())
to_chat(user, "Where do you intend to put \the [src]? \The [H] doesn't have a mouth!")
// to_chat(user, "Where do you intend to put \the [src]? \The [H] doesn't have a mouth!")
balloon_alert(user, "\the [H] doesn't have a mouth!")
return
var/obj/item/blocked = null
var/unconcious = FALSE
@@ -180,28 +181,29 @@
var/mob/living/L = user
swallow_whole = L.stuffing_feeder
if(swallow_whole)
belly_target = M.vore_selected
belly_target = tgui_input_list(user, "Choose Belly", "Belly Choice", M.feedable_bellies())
if(unconcious)
to_chat(user, span_warning("You can't feed [H] through \the [blocked] while they are unconcious!"))
return
if(blocked)
to_chat(user, span_warning("\The [blocked] is in the way!"))
// to_chat(user, span_warning("\The [blocked] is in the way!"))
balloon_alert(user, "\the [blocked] is in the way!")
return
if(swallow_whole)
if(!(M.feeding))
to_chat(user, span_warning("You can't feed [H] a whole [src] as they refuse to be fed whole things!"))
balloon_alert(user, "you can't feed [H] a whole [src] as they refuse to be fed whole things!")
return
if(!belly_target)
to_chat(user, span_warning("You can't feed [H] a whole [src] as they don't appear to have a belly to fit it!"))
balloon_alert(user, "you can't feed [H] a whole [src] as they don't appear to have a belly to fit it!")
return
if(swallow_whole)
user.visible_message(span_danger("[user] attempts to make [M] consume [src] whole into their [belly_target]."))
user.balloon_alert_visible("[user] attempts to make [M] consume [src] whole into their [belly_target].")
else
user.visible_message(span_danger("[user] attempts to feed [M] [src]."))
user.balloon_alert_visible("[user] attempts to feed [M] [src].")
var/feed_duration = 3 SECONDS
if(swallow_whole)
@@ -214,13 +216,15 @@
if(swallow_whole)
add_attack_logs(user,M,"Whole-fed with [src.name] containing [reagentlist(src)] into [belly_target]", admin_notify = FALSE)
user.visible_message(span_danger("[user] successfully forces [src] into [M]'s [belly_target]."))
user.visible_message("[user] successfully forces [src] into [M]'s [belly_target].")
user.balloon_alert_visible("forces [src] into [M]'s [belly_target]")
else
add_attack_logs(user,M,"Fed with [src.name] containing [reagentlist(src)]", admin_notify = FALSE)
user.visible_message(span_danger("[user] feeds [M] [src]."))
user.visible_message("[user] feeds [M] [src].")
user.balloon_alert_visible("feeds [M] [src].")
else
to_chat(user, "This creature does not seem to have a mouth!")
balloon_alert(user, "this creature does not seem to have a mouth!")
return
if(swallow_whole)
@@ -274,6 +278,7 @@
if(package || canned)
to_chat(user, span_warning("You cannot stuff anything into \the [src] without opening it first."))
balloon_alert(user, "open \the [src] first!")
return
var/obj/item/holder/H = W
@@ -290,7 +295,8 @@
food_inserted_micros += M
to_chat(user, span_warning("You stuff [M] into \the [src]."))
to_chat(user, "Stuffed [M] into \the [src].")
balloon_alert(user, "stuffs [M] into \the [src].")
to_chat(M, span_warning("[user] stuffs you into \the [src]."))
return
@@ -305,9 +311,11 @@
if(tgui_alert(user,"You can't slice \the [src] here. Would you like to hide \the [W] inside it instead?","No Cutting Surface!",list("Yes","No")) != "Yes")
to_chat(user, span_warning("You cannot slice \the [src] here! You need a table or at least a tray to do it."))
balloon_alert(user, "you cannot slice \the [src] here! You need a table or at least a tray to do it.")
return
else
to_chat(user, span_warning("You slip \the [W] inside \the [src]."))
to_chat(user, "Slipped \the [W] inside \the [src].")
balloon_alert(user, "slipped \the [W] inside \the [src].")
user.drop_from_inventory(W, src)
add_fingerprint(user)
contents += W
@@ -316,15 +324,17 @@
if (has_edge(W))
if (!can_slice_here)
to_chat(user, span_warning("You cannot slice \the [src] here! You need a table or at least a tray to do it."))
balloon_alert(user, "you need a table or at least a tray to slice it.")
return
var/slices_lost = 0
if (W.w_class > 3)
user.visible_message(span_notice("\The [user] crudely slices \the [src] with [W]!"), span_notice("You crudely slice \the [src] with your [W]!"))
user.balloon_alert_visible("crudely slices \the [src]", "crudely sliced \the [src]")
slices_lost = rand(1,min(1,round(slices_num/2)))
else
user.visible_message(span_notice(span_bold("\The [user]") + " slices \the [src]!"), span_notice("You slice \the [src]!"))
user.balloon_alert_visible("slices \the [src]", "sliced \the [src]!")
var/reagents_per_slice = reagents.total_volume/slices_num
for(var/i=1 to (slices_num-slices_lost))
var/obj/slice = new slice_path (src.loc)
@@ -375,6 +385,7 @@
/obj/item/reagent_containers/food/snacks/proc/unpackage(mob/user)
package = FALSE
to_chat(user, span_notice("You unwrap [src]."))
balloon_alert(user, "unwrapped \the [src].")
playsound(user,opening_sound, 15, 1)
if(package_trash)
var/obj/item/T = new package_trash
@@ -387,6 +398,7 @@
/obj/item/reagent_containers/food/snacks/proc/uncan(mob/user)
canned = FALSE
to_chat(user, span_notice("You unseal \the [src] with a crack of metal."))
balloon_alert(user, "unsealed \the [src]")
playsound(loc,opening_sound, rand(10,50), 1)
if(canned_open_state)
icon_state = canned_open_state
@@ -398,6 +410,7 @@
if(!isanimal(user) && !isalien(user))
return
user.visible_message(span_infoplain(span_bold("[user]") + " nibbles away at \the [src]."),span_info("You nibble away at \the [src]."))
user.balloon_alert_visible("nibbles away at \the [src].","nibbled away at \the [src].")
bitecount++
if(reagents)
reagents.trans_to_mob(user, bitesize, CHEM_INGEST)
+10 -11
View File
@@ -242,13 +242,13 @@
if(istype(O, /obj/item/cell))
if(cell)
to_chat(user, "The drill already has a cell installed.")
balloon_alert(user, "the drill already has a cell installed.")
else
user.drop_item()
O.forceMove(src)
cell = O
component_parts += O
to_chat(user, "You install \the [O].")
balloon_alert(user, "you install \the [O]")
return
..()
@@ -257,13 +257,13 @@
RefreshParts()
if (panel_open && cell && user.Adjacent(src))
to_chat(user, "You take out \the [cell].")
balloon_alert(user, "you take out \the [cell]")
user.put_in_hands(cell)
component_parts -= cell
cell = null
return
else if(need_player_check)
to_chat(user, "You hit the manual override and reset the drill's error checking.")
balloon_alert(user, "manual override hit, the drill's error checking resets.")
need_player_check = 0
if(anchored)
get_resource_field()
@@ -405,9 +405,9 @@
B.stored_ore[ore] += ore_amount // Add the ore to the machine.
stored_ore[ore] = 0 // Set the value of the ore in the satchel to 0.
current_capacity = 0 // Set the amount of ore in the drill to 0.
to_chat(usr, span_notice("You unload the drill's storage cache into the ore box."))
balloon_alert(usr, "onloaded cache into the ore box.")
else
to_chat(usr, span_notice("You must move an ore box up to the drill before you can unload it."))
balloon_alert(usr, "move an ore box to the droll before unloading it.")
/obj/machinery/mining/brace
@@ -435,7 +435,7 @@
/obj/machinery/mining/brace/attackby(obj/item/W as obj, mob/user as mob)
if(connected && connected.active)
to_chat(user, span_notice("You can't work with the brace of a running drill!"))
balloon_alert(user, "you can't work with the brace of a running drill.")
return
if(default_deconstruction_screwdriver(user, W))
@@ -448,11 +448,11 @@
if(W.has_tool_quality(TOOL_WRENCH))
if(istype(get_turf(src), /turf/space))
to_chat(user, span_notice("You can't anchor something to empty space. Idiot."))
balloon_alert(user, "you can't anchor something to empty space. Idiot.")
return
playsound(src, W.usesound, 100, 1)
to_chat(user, span_notice("You [anchored ? "un" : ""]anchor the brace."))
balloon_alert(user, "[anchored ? "una" : "a"]nchored the brace")
anchored = !anchored
if(anchored)
@@ -500,13 +500,12 @@
if(usr.stat) return
if (src.anchored)
to_chat(usr, "It is anchored in place!")
balloon_alert(usr, "it is anchored in place!")
return 0
src.set_dir(turn(src.dir, 270))
return 1
//VOREstation edit: counter-clockwise rotation
/obj/machinery/mining/brace/verb/rotate_counterclockwise()
set name = "Rotate Brace Counter-Clockwise"
set category = "Object"
+5 -6
View File
@@ -12,14 +12,13 @@
var/obj/belly/b = loc
if(b.mode_flags & DM_FLAG_FORCEPSAY)
var/mes = "but you are affected by forced psay right now, so you will automatically use psay/pme instead of any other option."
to_chat(src, span_notice("Autowhisper has been [autowhisper ? "enabled, [mes]" : "disabled, [mes]"]."))
to_chat(src, span_notice("autowhisper [autowhisper ? "enabled, [mes]" : "disabled, [mes]"]."))
return
else
forced_psay = autowhisper
to_chat(src, span_notice("Autowhisper has been [autowhisper ? "enabled. You will now automatically psay/pme when using say/me. As a note, this option will only work if you are in a situation where you can send psay/pme messages! Otherwise it will work as default whisper/subtle" : "disabled"]."))
balloon_alert(src, "autowhisper [autowhisper ? "enabled, using psay/pme" : "disabled"]")
else
to_chat(src, span_notice("Autowhisper has been [autowhisper ? "enabled. You will now automatically whisper/subtle when using say/me" : "disabled"]."))
balloon_alert(src, "autowhisper [autowhisper ? "enabled" : "disabled"]")
/mob/living/verb/autowhisper_mode()
set name = "Autowhisper Mode"
@@ -30,7 +29,7 @@
var/choice = tgui_input_list(src, "Select Custom Subtle Mode", "Custom Subtle Mode", list("Adjacent Turfs (Default)", "My Turf", "My Table", "Current Belly (Prey)", "Specific Belly (Pred)", "Specific Person", "Psay/Pme"))
if(!choice || choice == "Adjacent Turfs (Default)")
autowhisper_mode = null
to_chat(src, span_notice("Your subtles have returned to the default setting."))
balloon_alert(src, "subtles returned to default setting")
return
if(choice == "Psay/Pme")
if(autowhisper)
@@ -42,4 +41,4 @@
forced_psay = TRUE
to_chat(src, span_notice("As a note, this option will only work if you are in a situation where you can send psay/pme messages! Otherwise it will work as default whisper/subtle."))
autowhisper_mode = choice
to_chat(src, span_notice("Your subtles have been set to <b>[autowhisper_mode]</b>."))
balloon_alert(src, "subtles set to [autowhisper_mode]")
@@ -8,9 +8,9 @@
return 1
if(feedback)
if(status[1] == HUMAN_EATING_NO_MOUTH)
to_chat(src, "Where do you intend to put [food]? You don't have a mouth!")
balloon_alert(src, "you don't have a mouth!")
else if(status[1] == HUMAN_EATING_BLOCKED_MOUTH)
to_chat(src, span_warning("\The [status[2]] is in the way!"))
balloon_alert(src, "\the [status[2]] is in the way!")
return 0
/mob/living/carbon/human/can_force_feed(var/feeder, var/food, var/feedback = 1)
@@ -19,9 +19,9 @@
return 1
if(feedback)
if(status[1] == HUMAN_EATING_NO_MOUTH)
to_chat(feeder, "Where do you intend to put [food]? \The [src] doesn't have a mouth!")
balloon_alert(src, "\the [src] doesn't have a mouth!")
else if(status[1] == HUMAN_EATING_BLOCKED_MOUTH)
to_chat(feeder, span_warning("\The [status[2]] is in the way!"))
balloon_alert(feeder, "\the [status[2]] is in the way!")
return 0
/mob/living/carbon/human/proc/can_eat_status()
+3 -2
View File
@@ -1,5 +1,5 @@
/mob/living/carbon/proc/ingest(var/datum/reagents/from, var/datum/reagents/target, var/amount = 1, var/multiplier = 1, var/copy = 0) //we kind of 'sneak' a proc in here for ingesting stuff so we can play with it.
/* VOREStation Removal - Synths should be able to taste because... reasons
/* Synths should be able to taste because... reasons
if(ishuman(src))
var/mob/living/carbon/human/H = src
var/braintype = H.get_FBP_type()
@@ -15,7 +15,8 @@
text_output = "nothing"
if(text_output != last_taste_text || last_taste_time + 100 < world.time) //We dont want to spam the same message over and over again at the person. Give it a bit of a buffer.
to_chat(src, span_notice("You can taste [text_output]."))//no taste means there are too many tastes and not enough flavor.
to_chat(src, span_notice("You can taste [text_output].")) //no taste means there are too many tastes and not enough flavor.
balloon_alert(src, "you taste [text_output]...")
last_taste_time = world.time
last_taste_text = text_output
@@ -52,15 +52,15 @@
return 0
if(!target.reagents || !target.reagents.total_volume)
to_chat(user, span_notice("[target] is empty."))
balloon_alert(user, "[target] is empty.")
return 1
if(reagents && !reagents.get_free_space())
to_chat(user, span_notice("[src] is full."))
balloon_alert(user, "[src] is full.")
return 1
var/trans = target.reagents.trans_to_obj(src, target:amount_per_transfer_from_this)
to_chat(user, span_notice("You fill [src] with [trans] units of the contents of [target]."))
balloon_alert(user, "[trans] units transfered to \the [src]")
return 1
/obj/item/reagent_containers/proc/standard_splash_mob(var/mob/user, var/mob/target) // This goes into afterattack
@@ -68,27 +68,27 @@
return
if(!reagents || !reagents.total_volume)
to_chat(user, span_notice("[src] is empty."))
balloon_alert(user, "[src] is empty!")
return 1
if(target.reagents && !target.reagents.get_free_space())
to_chat(user, span_notice("[target] is full."))
balloon_alert(user, "\the [target] is full!")
return 1
var/contained = reagentlist()
add_attack_logs(user,target,"Splashed with [src.name] containing [contained]")
user.visible_message(span_danger("[target] has been splashed with something by [user]!"), span_notice("You splash the solution onto [target]."))
balloon_alert_visible("[target] is splashed with something by [user]!", "splashed the solution onto [target]")
reagents.splash(target, reagents.total_volume)
return 1
/obj/item/reagent_containers/proc/self_feed_message(var/mob/user)
to_chat(user, span_notice("You eat \the [src]"))
balloon_alert(user, "you eat \the [src]")
/obj/item/reagent_containers/proc/other_feed_message_start(var/mob/user, var/mob/target)
user.visible_message(span_warning("[user] is trying to feed [target] \the [src]!"))
balloon_alert_visible(user, "[user] is trying to feed [target] \the [src]!")
/obj/item/reagent_containers/proc/other_feed_message_finish(var/mob/user, var/mob/target)
user.visible_message(span_warning("[user] has fed [target] \the [src]!"))
balloon_alert_visible(user, "[user] has fed [target] \the [src]!")
/obj/item/reagent_containers/proc/feed_sound(var/mob/user)
return
@@ -98,22 +98,22 @@
return FALSE
if(!reagents || !reagents.total_volume)
to_chat(user, span_notice("\The [src] is empty."))
balloon_alert(user, "\the [src] is empty.")
return TRUE
if(!target.consume_liquid_belly)
if(liquid_belly_check())
to_chat(user, span_infoplain("[user == target ? "You can't" : "\The [target] can't"] consume that, it contains something produced from a belly!"))
to_chat(user, span_infoplain("[user == target ? "you can't" : "\The [target] can't"] consume that, it contains something produced from a belly!"))
return FALSE
if(ishuman(target))
var/mob/living/carbon/human/H = target
if(!H.check_has_mouth())
to_chat(user, "Where do you intend to put \the [src]? [user == target ? "You don't" : "\The [H] doesn't"] have a mouth!")
balloon_alert(user, "[user == target ? "you don't" : "\the [H] doesn't"] have a mouth!")
return FALSE
var/obj/item/blocked = H.check_mouth_coverage()
if(blocked)
to_chat(user, span_warning("\The [blocked] is in the way!"))
balloon_alert(user, "\the [blocked] is in the way!")
return FALSE
user.setClickCooldown(user.get_attack_speed(src)) //puts a limit on how fast people can eat/drink things
@@ -140,15 +140,15 @@
return 0
if(!reagents || !reagents.total_volume)
to_chat(user, span_notice("[src] is empty."))
balloon_alert(usr, "[src] is empty!")
return 1
if(!target.reagents.get_free_space())
to_chat(user, span_notice("[target] is full."))
balloon_alert(usr, "[target] is full!")
return 1
var/trans = reagents.trans_to(target, amount_per_transfer_from_this)
to_chat(user, span_notice("You transfer [trans] units of the solution to [target]."))
balloon_alert(user, "transfered [trans] units to [target]")
return 1
/obj/item/reagent_containers/proc/liquid_belly_check()
@@ -67,14 +67,14 @@
return
if(!reagent_volumes[reagent_ids[mode]])
to_chat(user, span_warning("The injector is empty."))
balloon_alert(user, "the injector is empty.")
return
var/mob/living/carbon/human/H = M
if(istype(H))
var/obj/item/organ/external/affected = H.get_organ(user.zone_sel.selecting)
if(!affected)
to_chat(user, span_danger("\The [H] is missing that limb!"))
balloon_alert(user, "\the [H] is missing that limb!")
return
/* since synths have oil/coolant streams now, it only makes sense that you should be able to inject stuff. preserved for posterity.
else if(affected.robotic >= ORGAN_ROBOT)
@@ -83,8 +83,8 @@
*/
if(M.can_inject(user, 1, ignore_thickness = bypass_protection))
to_chat(user, span_notice("You inject [M] with the injector."))
to_chat(M, span_notice("You feel a tiny prick!"))
balloon_alert(user, "you inject [M] with the injector.")
balloon_alert(M, "you feel a tiny prick!")
if(M.reagents)
var/t = min(amount_per_transfer_from_this, reagent_volumes[reagent_ids[mode]])
@@ -115,7 +115,7 @@
playsound(src, 'sound/effects/pop.ogg', 50, 0)
mode = t
var/datum/reagent/R = SSchemistry.chemical_reagents[reagent_ids[mode]]
to_chat(usr, span_notice("Synthesizer is now producing '[R.name]'."))
balloon_alert(usr, "synthesizer is now producing '[R.name]'")
/obj/item/reagent_containers/borghypo/examine(mob/user)
. = ..()
@@ -191,11 +191,11 @@
return
if(!target.reagents.get_free_space())
to_chat(user, span_notice("[target] is full."))
balloon_alert(user, "[target] is full!")
return
var/t = min(amount_per_transfer_from_this, reagent_volumes[reagent_ids[mode]])
target.reagents.add_reagent(reagent_ids[mode], t)
reagent_volumes[reagent_ids[mode]] -= t
to_chat(user, span_notice("You transfer [t] units of the solution to [target]."))
balloon_alert(user, "transfered [t] units to [target].")
return
@@ -38,7 +38,7 @@
/mob/living/bot/medbot,
/obj/item/storage/secure/safe,
/obj/machinery/iv_drip,
/obj/structure/medical_stand, //VOREStation Add,
/obj/structure/medical_stand,
/obj/machinery/disposal,
/mob/living/simple_mob/animal/passive/cow,
/mob/living/simple_mob/animal/goat,
@@ -74,10 +74,10 @@
/obj/item/reagent_containers/glass/attack_self(mob/user)
..()
if(is_open_container())
to_chat(user, span_notice("You put the lid on \the [src]."))
balloon_alert(user, "lid put on \the [src]")
flags ^= OPENCONTAINER
else
to_chat(user, span_notice("You take the lid off \the [src]."))
balloon_alert(user, "lid removed off \the [src]")
flags |= OPENCONTAINER
update_icon()
@@ -100,7 +100,7 @@
return ..()
/obj/item/reagent_containers/glass/self_feed_message(var/mob/user)
to_chat(user, span_notice("You swallow a gulp from \the [src]."))
balloon_alert(user, "swallowed from \the [src]")
/obj/item/reagent_containers/glass/proc/attempt_snake_milking(mob/living/user, mob/living/target)
var/reagent
@@ -141,7 +141,7 @@
if(standard_splash_mob(user,target))
return 1
if(reagents && reagents.total_volume)
to_chat(user, span_notice("You splash the solution onto [target].")) //They are on harm intent, aka wanting to spill it.
balloon_alert(user, "splashed the solution onto [target]")
reagents.splash(target, reagents.total_volume)
return 1
..()
@@ -152,17 +152,17 @@
if(length(tmp_label) > 50)
to_chat(user, span_notice("The label can be at most 50 characters long."))
else if(length(tmp_label) > 10)
to_chat(user, span_notice("You set the label."))
balloon_alert(user, "label set")
label_text = tmp_label
update_name_label()
else
to_chat(user, span_notice("You set the label to \"[tmp_label]\"."))
balloon_alert(user, "label set to \"[tmp_label]\"")
label_text = tmp_label
update_name_label()
if(istype(W,/obj/item/storage/bag))
..()
if(W && W.w_class <= w_class && (flags & OPENCONTAINER) && user.a_intent != I_HELP)
to_chat(user, span_notice("You dip \the [W] into \the [src]."))
balloon_alert(user, "[W] dipped into \the [src].")
reagents.touch_obj(W, reagents.total_volume)
/obj/item/reagent_containers/glass/proc/update_name_label()
@@ -330,7 +330,7 @@
qdel(src)
return
else if(D.has_tool_quality(TOOL_WIRECUTTER))
to_chat(user, span_notice("You cut a big hole in \the [src] with \the [D]. It's kinda useless as a bucket now."))
balloon_alert(user, "you cut a big hole in \the [src] with \the [D]. It's kinda useless now.")
user.put_in_hands(new /obj/item/clothing/head/helmet/bucket)
user.drop_from_inventory(src)
qdel(src)
@@ -340,16 +340,16 @@
if (M.use(1))
var/obj/item/secbot_assembly/edCLN_assembly/B = new /obj/item/secbot_assembly/edCLN_assembly
B.loc = get_turf(src)
to_chat(user, span_notice("You armed the robot frame."))
balloon_alert(user, "armed the robot frame.")
if (user.get_inactive_hand()==src)
user.remove_from_mob(src)
user.put_in_inactive_hand(B)
qdel(src)
else
to_chat(user, span_warning("You need one sheet of metal to arm the robot frame."))
else if(istype(D, /obj/item/mop) || istype(D, /obj/item/soap) || istype(D, /obj/item/reagent_containers/glass/rag)) //VOREStation Edit - "Allows soap and rags to be used on buckets"
balloon_alert(user, "one sheet of metal is needed to arm the robot frame.")
else if(istype(D, /obj/item/mop) || istype(D, /obj/item/soap) || istype(D, /obj/item/reagent_containers/glass/rag))
if(reagents.total_volume < 1)
to_chat(user, span_warning("\The [src] is empty!"))
balloon_alert(user, "\the [src] is empty!")
else
reagents.trans_to_obj(D, 5)
to_chat(user, span_notice("You wet \the [D] in \the [src]."))
@@ -31,7 +31,7 @@
/obj/item/reagent_containers/hypospray/attack(mob/living/M as mob, mob/user as mob)
if(!reagents.total_volume)
to_chat(user, span_warning("[src] is empty."))
balloon_alert(user, "\the [src] is empty.")
return
if (!istype(M))
return
@@ -44,7 +44,7 @@
if(istype(H))
var/obj/item/organ/external/affected = H.get_organ(user.zone_sel.selecting)
if(!affected)
to_chat(user, span_danger("\The [H] is missing that limb!"))
balloon_alert(user, "\the [H] is missing that limb!")
return
/* since synths have oil/coolant streams now, it only makes sense that you should be able to inject stuff. preserved for posterity.
else if(affected.robotic >= ORGAN_ROBOT)
@@ -54,16 +54,16 @@
//VOREStation Add Start - Adds Prototype Hypo functionality
if(H != user && prototype)
to_chat(user, span_notice("You begin injecting [H] with \the [src]."))
to_chat(H, span_danger(" [user] is trying to inject you with \the [src]!"))
balloon_alert(user, "injecting [H] with \the [src]")
balloon_alert(H, "[user] is trying to inject you with \the [src]")
if(!do_after(user, 30, H))
return
//VOREstation Add End
else if(!H.stat && !prototype) //VOREStation Edit
else if(!H.stat && !prototype)
if(H != user)
if(H.a_intent != I_HELP)
to_chat(user, span_notice("[H] is resisting your attempt to inject them with \the [src]."))
to_chat(H, span_danger(" [user] is trying to inject you with \the [src]!"))
balloon_alert(user, "[H] resists your attempt to inject them with \the [src].")
balloon_alert(H, "[user] is trying to inject you with \the [src]")
if(!do_after(user, 30, H))
return
@@ -76,8 +76,8 @@
return FALSE
user.setClickCooldown(DEFAULT_QUICK_COOLDOWN)
to_chat(user, span_notice("You inject \the [H] with \the [src]."))
to_chat(H, span_warning("You feel a tiny prick!"))
balloon_alert(user, "injected \the [H] with \the [src]")
balloon_alert(H, "you feel a tiny prick!")
if(hyposound)
playsound(src, hyposound, 25)
@@ -113,7 +113,7 @@
loaded_vial.update_icon()
user.put_in_hands(loaded_vial)
loaded_vial = null
to_chat(user, span_notice("You remove the vial from the [src]."))
balloon_alert(user, "vial removed from \the [src]")
update_icon()
playsound(src, 'sound/weapons/flipblade.ogg', 50, 1)
return
@@ -131,7 +131,7 @@
/obj/item/reagent_containers/hypospray/vial/attackby(obj/item/W, mob/user as mob)
if(istype(W, /obj/item/reagent_containers/glass/beaker/vial))
if(!loaded_vial)
user.visible_message(span_notice("[user] begins loading [W] into \the [src]."),span_notice("You start loading [W] into \the [src]."))
balloon_alert_visible("[user] begins loading [W] into \the [src].", "loading [W] into \the [src].")
if(!do_after(user,30) || loaded_vial || !(W in user))
return 0
if(W.is_open_container())
@@ -142,11 +142,11 @@
loaded_vial = W
reagents.maximum_volume = loaded_vial.reagents.maximum_volume
loaded_vial.reagents.trans_to_holder(reagents,volume)
user.visible_message(span_notice("[user] has loaded [W] into \the [src]."),span_notice("You have loaded [W] into \the [src]."))
balloon_alert_visible("[user] has loaded [W] into \the [src].", "loaded [W] into \the [src].")
update_icon()
playsound(src, 'sound/weapons/empty.ogg', 50, 1)
else
to_chat(user, span_notice("\The [src] already has a vial."))
balloon_alert(user, "\the [src] already has a vial.")
else
..()
@@ -35,10 +35,10 @@
return
var/obj/item/blocked = H.check_mouth_coverage()
if(blocked)
to_chat(user, span_warning("\The [blocked] is in the way!"))
balloon_alert(user, "\the [blocked] is in the way!")
return
to_chat(M, span_notice("You swallow \the [src]."))
balloon_alert(user, "swallowed \the [src]")
M.drop_from_inventory(src) //icon update
if(reagents.total_volume)
reagents.trans_to_mob(M, reagents.total_volume, CHEM_INGEST)
@@ -49,21 +49,21 @@
var/mob/living/carbon/human/H = M
if(!H.check_has_mouth())
to_chat(user, "Where do you intend to put \the [src]? \The [H] doesn't have a mouth!")
balloon_alert(user, "\the [H] doesn't have a mouth.")
return
var/obj/item/blocked = H.check_mouth_coverage()
if(blocked)
to_chat(user, span_warning("\The [blocked] is in the way!"))
balloon_alert(user, "\the [blocked] is in the way!")
return
user.visible_message(span_warning("[user] attempts to force [M] to swallow \the [src]."))
balloon_alert_visible("[user] attempts to force [M] to swallow \the [src].")
user.setClickCooldown(user.get_attack_speed(src))
if(!do_mob(user, M))
return
user.drop_from_inventory(src) //icon update
user.visible_message(span_warning("[user] forces [M] to swallow \the [src]."))
balloon_alert_visible("[user] forces [M] to swallow \the [src].")
var/contained = reagentlist()
add_attack_logs(user,M,"Fed a pill containing [contained]")
@@ -81,9 +81,9 @@
if(target.is_open_container() && target.reagents)
if(!target.reagents.total_volume)
to_chat(user, span_notice("[target] is empty. Can't dissolve \the [src]."))
balloon_alert(user, "[target] is empty.")
return
to_chat(user, span_notice("You dissolve \the [src] in [target]."))
balloon_alert_visible("[user] puts something in \the [target]", "[target] dissolves in \the [src]", 2)
add_attack_logs(user,null,"Spiked [target.name] with a pill containing [reagentlist()]")
@@ -98,7 +98,7 @@
/obj/item/reagent_containers/pill/attackby(obj/item/W as obj, mob/user as mob)
if(is_sharp(W))
var/obj/item/reagent_containers/powder/J = new /obj/item/reagent_containers/powder(src.loc)
user.visible_message(span_warning("[user] gently cuts up [src] with [W]!"))
balloon_alert_visible("[user] cuts up [src] with [W]!", "cut up \the [src] with [W]")
playsound(src.loc, 'sound/effects/chop.ogg', 50, 1)
if(reagents)
@@ -108,7 +108,7 @@
if(istype(W, /obj/item/card/id))
var/obj/item/reagent_containers/powder/J = new /obj/item/reagent_containers/powder(src.loc)
user.visible_message(span_warning("[user] clumsily chops up [src] with [W]!"))
balloon_alert_visible("[user] clumsily cuts up [src] with [W]!", "You clumsily cut up \the [src] with [W]")
playsound(src.loc, 'sound/effects/chop.ogg', 50, 1)
if(reagents)
@@ -36,7 +36,7 @@
return
if(reagents.total_volume < amount_per_transfer_from_this)
to_chat(user, span_notice("\The [src] is empty!"))
balloon_alert(user, "\the [src] is empty!")
return
Spray_at(A, user, proximity)
@@ -76,7 +76,7 @@
return
amount_per_transfer_from_this = next_in_list(amount_per_transfer_from_this, possible_transfer_amounts)
spray_size = next_in_list(spray_size, spray_sizes)
to_chat(user, span_notice("You adjusted the pressure nozzle. You'll now use [amount_per_transfer_from_this] units per spray."))
balloon_alert(user, "pressure nozzle adjusted to [amount_per_transfer_from_this] units per spray.")
/obj/item/reagent_containers/spray/examine(mob/user)
. = ..()
@@ -92,7 +92,7 @@
if (tgui_alert(usr, "Are you sure you want to empty that?", "Empty Bottle:", list("Yes", "No")) != "Yes")
return
if(isturf(usr.loc))
to_chat(usr, span_notice("You empty \the [src] onto the floor."))
balloon_alert(usr, "empted \the [src] onto the floor.")
reagents.splash(usr.loc, reagents.total_volume)
//space cleaner
@@ -140,7 +140,7 @@
/obj/item/reagent_containers/spray/pepper/attack_self(var/mob/user)
safety = !safety
to_chat(user, span_notice("You switch the safety [safety ? "on" : "off"]."))
balloon_alert(user, "safety [safety ? "on" : "off"].")
/obj/item/reagent_containers/spray/pepper/Spray_at(atom/A as mob|obj, mob/user)
if(safety)
@@ -249,7 +249,7 @@
/obj/item/reagent_containers/spray/chemsprayer/hosed/AltClick(mob/living/carbon/user)
if(++spray_particles > 3) spray_particles = 1
to_chat(user, span_notice("You turn the dial on \the [src] to [spray_particles]."))
balloon_alert(user, "dial turned to [spray_particles].")
return
/obj/item/reagent_containers/spray/chemsprayer/hosed/CtrlClick(var/mob/user)
@@ -268,7 +268,7 @@
var/list/the_targets = list(T, T1, T2)
if(src.reagents.total_volume < 1)
to_chat(user, span_notice("\The [src] is empty."))
balloon_alert(user, "\the [src] is empty.")
return
if(!heavy_spray)
@@ -68,7 +68,7 @@
switch(mode)
if(SYRINGE_CAPPED)
mode = SYRINGE_DRAW
to_chat(user,span_notice("You uncap the syringe."))
balloon_alert(user, "[src] uncapped")
if(SYRINGE_DRAW)
mode = SYRINGE_INJECT
if(SYRINGE_INJECT)
@@ -275,7 +275,7 @@
var/obj/item/organ/external/affecting = H.get_organ(target_zone)
if (!affecting || affecting.is_stump())
to_chat(user, span_danger("They are missing that limb!"))
balloon_alert(user, "they are missing that limb!") // CHOMPEdit - Changed to balloon_alert
return
var/hit_area = affecting.name
@@ -293,13 +293,13 @@
return
user.visible_message(span_danger("[user] stabs [target] in \the [hit_area] with [src.name]!"))
balloon_alert_visible("stabs [target] in \the [hit_area] with [src.name]!")
if(affecting.take_damage(3))
H.UpdateDamageIcon()
else
user.visible_message(span_danger("[user] stabs [target] with [src.name]!"))
balloon_alert_visible("stabs [user] in \the [target] with [src.name]!")
target.take_organ_damage(3)// 7 is the same as crowbar punch
+16
View File
@@ -34,6 +34,7 @@
if (affected.stage == 0)
user.visible_message(span_notice("[user] starts applying medication to the damaged bones in [target]'s [affected.name] with \the [tool].") , \
span_notice("You start applying medication to the damaged bones in [target]'s [affected.name] with \the [tool]."))
user.balloon_alert_visible("applies medication to the damaged bones.", "applying medication to the damaged bones.")
target.custom_pain("Something in your [affected.name] is causing you a lot of pain!", 50)
..()
@@ -41,12 +42,14 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_notice("[user] applies some [tool] to [target]'s bone in [affected.name]"), \
span_notice("You apply some [tool] to [target]'s bone in [affected.name] with \the [tool]."))
user.balloon_alert_visible("applies [tool] to [target]'s bone.", "applying [tool] to [target]'s bone.")
affected.stage = 1
/datum/surgery_step/glue_bone/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_danger("[user]'s hand slips, smearing [tool] in the incision in [target]'s [affected.name]!") , \
span_danger("Your hand slips, smearing [tool] in the incision in [target]'s [affected.name]!"))
user.balloon_alert_visible("slips, damaging [target]'s [affected.name]", "your hand slips.")
///////////////////////////////////////////////////////////////
// Bone Setting Surgery
@@ -75,6 +78,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_notice("[user] is beginning to set the bone in [target]'s [affected.name] in place with \the [tool].") , \
span_notice("You are beginning to set the bone in [target]'s [affected.name] in place with \the [tool]."))
user.balloon_alert_visible("begins to set the bone in place.", "setting the bone in place.")
target.custom_pain("The pain in your [affected.name] is going to make you pass out!", 50)
..()
@@ -83,16 +87,19 @@
if (affected.status & ORGAN_BROKEN)
user.visible_message(span_notice("[user] sets the bone in [target]'s [affected.name] in place with \the [tool]."), \
span_notice("You set the bone in [target]'s [affected.name] in place with \the [tool]."))
user.balloon_alert_visible("sets the bone in place.", "bone set in place.")
affected.stage = 2
else
user.visible_message("[user] sets the bone in [target]'s [affected.name] " + span_danger("in the WRONG place with \the [tool]."), \
"You set the bone in [target]'s [affected.name] " + span_danger("in the WRONG place with \the [tool]."))
user.balloon_alert_visible("sets the bone in the WRONG place.", "bone set in the WRONG place.")
affected.fracture()
/datum/surgery_step/set_bone/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_danger("[user]'s hand slips, damaging the bone in [target]'s [affected.name] with \the [tool]!") , \
span_danger("Your hand slips, damaging the bone in [target]'s [affected.name] with \the [tool]!"))
user.balloon_alert_visible("slips, damaging the bone.", "your hand slips, damaging the bone")
affected.createwound(BRUISE, 5)
///////////////////////////////////////////////////////////////
@@ -121,18 +128,21 @@
/datum/surgery_step/mend_skull/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_notice("[user] is beginning to piece together [target]'s skull with \the [tool].") , \
span_notice("You are beginning to piece together [target]'s skull with \the [tool]."))
user.balloon_alert_visible("pieces the skull together", "piecing skull together.")
..()
/datum/surgery_step/mend_skull/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_notice("[user] sets [target]'s skull with \the [tool].") , \
span_notice("You set [target]'s skull with \the [tool]."))
user.balloon_alert_visible("sets the skull back.", "skull set back.")
affected.stage = 2
/datum/surgery_step/mend_skull/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_danger("[user]'s hand slips, damaging [target]'s face with \the [tool]!") , \
span_danger("Your hand slips, damaging [target]'s face with \the [tool]!"))
user.balloon_alert_visible("slips, damaging [target]'s face", "your hand slips, damaging [target]'s face")
var/obj/item/organ/external/head/h = affected
h.createwound(BRUISE, 10)
h.disfigured = 1
@@ -167,12 +177,14 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_notice("[user] starts to finish mending the damaged bones in [target]'s [affected.name] with \the [tool]."), \
span_notice("You start to finish mending the damaged bones in [target]'s [affected.name] with \the [tool]."))
user.balloon_alert_visible("begins mending damaged bones.", "mending damaged bones.")
..()
/datum/surgery_step/finish_bone/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_notice("[user] has mended the damaged bones in [target]'s [affected.name] with \the [tool].") , \
span_notice("You have mended the damaged bones in [target]'s [affected.name] with \the [tool].") )
user.balloon_alert_visible("mends damaged bones.", "mended damaged bones.")
affected.status &= ~ORGAN_BROKEN
affected.stage = 0
@@ -180,6 +192,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_danger("[user]'s hand slips, smearing [tool] in the incision in [target]'s [affected.name]!") , \
span_danger("Your hand slips, smearing [tool] in the incision in [target]'s [affected.name]!"))
user.balloon_alert_visible("slips, smearing [tool] in the incision.", "your hand slips, smearing [tool].")
///////////////////////////////////////////////////////////////
// Bone Clamp Surgery
@@ -210,6 +223,7 @@
if (affected.stage == 0)
user.visible_message(span_notice("[user] starts repairing the damaged bones in [target]'s [affected.name] with \the [tool].") , \
span_notice("You starts repairing the damaged bones in [target]'s [affected.name] with \the [tool]."))
user.balloon_alert_visible("begins repairing damaged bones.", "repairing damaged bones.")
target.custom_pain("Something in your [affected.name] is causing you a lot of pain!", 50)
..()
@@ -217,10 +231,12 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_notice("[user] sets the bone in [target]'s [affected.name] with \the [tool]."), \
span_notice("You sets [target]'s bone in [affected.name] with \the [tool]."))
user.balloon_alert_visible("sets the bone back in.", "bone set in.")
affected.status &= ~ORGAN_BROKEN
/datum/surgery_step/clamp_bone/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_danger("[user]'s hand slips, damaging the bone in [target]'s [affected.name] with \the [tool]!") , \
span_danger("Your hand slips, damaging the bone in [target]'s [affected.name] with \the [tool]!"))
user.balloon_alert_visible("slips, damaging [target]'s [affected.name]", "your hand slips, damaging the bone.")
affected.createwound(BRUISE, 5)
+16
View File
@@ -44,6 +44,7 @@
user.visible_message(span_filter_notice("[user] begins to cut through [target]'s [affected.encased] with \the [tool]."), \
span_filter_notice("You begin to cut through [target]'s [affected.encased] with \the [tool]."))
user.balloon_alert_visible("begins to cut", "cutting through the [affected.encased]'s ")
target.custom_pain("Something hurts horribly in your [affected.name]!", 60)
..()
@@ -54,6 +55,7 @@
user.visible_message(span_notice("[user] has cut [target]'s [affected.encased] open with \the [tool]."), \
span_notice("You have cut [target]'s [affected.encased] open with \the [tool]."))
user.balloon_alert_visible("cuts [target]'s [affected.encased] open.", "[affected.encased] cut open.")
affected.open = 2.5
/datum/surgery_step/open_encased/saw/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
@@ -63,6 +65,7 @@
user.visible_message(span_danger("[user]'s hand slips, cracking [target]'s [affected.encased] with \the [tool]!") , \
span_danger("Your hand slips, cracking [target]'s [affected.encased] with \the [tool]!") )
user.balloon_alert_visible("slips, crackng [target]'s [affected.encased]","your hand slips.")
affected.createwound(CUT, 20)
affected.fracture()
@@ -96,6 +99,7 @@
var/msg = span_filter_notice("[user] starts to force open the [affected.encased] in [target]'s [affected.name] with \the [tool].")
var/self_msg = span_filter_notice("You start to force open the [affected.encased] in [target]'s [affected.name] with \the [tool].")
user.visible_message(msg, self_msg)
user.balloon_alert_visible("starts to force open [target]'s [affected.encased]", "forcing open \the [affected.encased]")
target.custom_pain("Something hurts horribly in your [affected.name]!", 40)
..()
@@ -106,6 +110,7 @@
var/msg = span_notice("[user] forces open [target]'s [affected.encased] with \the [tool].")
var/self_msg = span_notice("You force open [target]'s [affected.encased] with \the [tool].")
user.visible_message(msg, self_msg)
user.balloon_alert_visible("forces open the [affected.encased]", "forced open the [affected.encased]")
affected.open = 3
@@ -117,6 +122,7 @@
var/msg = span_danger("[user]'s hand slips, cracking [target]'s [affected.encased]!")
var/self_msg = span_danger("Your hand slips, cracking [target]'s [affected.encased]!")
user.visible_message(msg, self_msg)
user.balloon_alert_visible("slips, cracking [affected.encased]", "you hand slips, cracking [affected.encased]")
affected.createwound(BRUISE, 20)
affected.fracture()
@@ -150,6 +156,7 @@
var/msg = span_filter_notice("[user] starts bending [target]'s [affected.encased] back into place with \the [tool].")
var/self_msg = span_filter_notice("You start bending [target]'s [affected.encased] back into place with \the [tool].")
user.visible_message(msg, self_msg)
user.balloon_alert_visible("starts bending [affected.encased] into place.", "bending [affected.encased] into place")
target.custom_pain("Something hurts horribly in your [affected.name]!", 100)
..()
@@ -161,6 +168,7 @@
var/msg = span_notice("[user] bends [target]'s [affected.encased] back into place with \the [tool].")
var/self_msg = span_notice("You bend [target]'s [affected.encased] back into place with \the [tool].")
user.visible_message(msg, self_msg)
user.balloon_alert_visible("bends [affected.encased] into place", "[affected.encased] bend into place.")
affected.open = 2.5
@@ -172,6 +180,7 @@
var/msg = span_danger("[user]'s hand slips, bending [target]'s [affected.encased] the wrong way!")
var/self_msg = span_danger("Your hand slips, bending [target]'s [affected.encased] the wrong way!")
user.visible_message(msg, self_msg)
user.balloon_alert_visible("slips, bending [affected.encased] the wrong way.", "your hand slips, bending [affected.encased] the wrong way.")
affected.createwound(BRUISE, 20)
affected.fracture()
@@ -209,6 +218,7 @@
var/msg = span_filter_notice("[user] starts applying \the [tool] to [target]'s [affected.encased].")
var/self_msg = span_filter_notice("You start applying \the [tool] to [target]'s [affected.encased].")
user.visible_message(msg, self_msg)
user.balloon_alert_visible("starts applying [tool] to \the [affected.encased]", "applying [tool] to \the [affected.encased]")
target.custom_pain("Something hurts horribly in your [affected.name]!", 100)
..()
@@ -220,6 +230,7 @@
var/msg = span_notice("[user] applied \the [tool] to [target]'s [affected.encased].")
var/self_msg = span_notice("You applied \the [tool] to [target]'s [affected.encased].")
user.visible_message(msg, self_msg)
user.balloon_alert_visible("applies \the [tool] to [affected.encased]", "applied \the [tool] to [affected.encased]")
affected.open = 2
@@ -251,6 +262,7 @@
user.visible_message(span_filter_notice("[user] begins to open [target]'s [affected.encased] with \the [tool]."), \
span_filter_notice("You begin to open [target]'s [affected.encased] with \the [tool]."))
user.balloon_alert_visible("begins to open \the [affected.encased]", "opening \the [affected.encased]")
target.custom_pain("Something hurts horribly in your [affected.name]!", 60)
..()
@@ -261,6 +273,7 @@
user.visible_message(span_notice("[user] has cut [target]'s [affected.encased] wide open with \the [tool]."), \
span_notice("You have cut [target]'s [affected.encased] wide open with \the [tool]."))
user.balloon_alert_visible("cuts \the [affected.encased] wide open.", "cut \the [affected.encased] wide open.")
affected.open = 3
/datum/surgery_step/open_encased/advancedsaw_open/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
@@ -270,6 +283,7 @@
user.visible_message(span_danger("[user]'s hand slips, searing [target]'s [affected.encased] with \the [tool]!") , \
span_danger("Your hand slips, searing [target]'s [affected.encased] with \the [tool]!") )
user.balloon_alert_visible("slips, searing \the [affected.encased]", "your hand slips, searing [affected.encased]")
affected.createwound(CUT, 20)
affected.createwound(BURN, 15)
@@ -302,6 +316,7 @@
var/msg = span_filter_notice("[user] starts sealing \the [target]'s [affected.encased] with \the [tool].")
var/self_msg = span_filter_notice("You start sealing \the [target]'s [affected.encased] with \the [tool].")
user.visible_message(msg, self_msg)
user.balloon_alert_visible("starts sealing \the [affected.encased]", "sealing \the [affected.encased]")
target.custom_pain("Something hurts horribly in your [affected.name]!", 100)
..()
@@ -313,5 +328,6 @@
var/msg = span_notice("[user] sealed \the [target]'s [affected.encased] with \the [tool].")
var/self_msg = span_notice("You sealed \the [target]'s [affected.encased] with \the [tool].")
user.visible_message(msg, self_msg)
user.balloon_alert_visible("seals \the [affected.encased]", "sealed \the [affected.encased]")
affected.open = 2
+13
View File
@@ -62,12 +62,14 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_notice("[user] begins scanning [target]'s [affected] with \the [tool]."), \
span_notice("You begin scanning [target]'s [affected] with \the [tool]."))
user.balloon_alert_visible("begins scanning [target]'s [affected]", "scaning \the [affected]")
..()
/datum/surgery_step/repairflesh/scan_injury/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_notice("[user] finishes scanning [target]'s [affected]."), \
span_notice("You finish scanning [target]'s [affected]."))
user.balloon_alert_visible("finishes scanning [target]'s [affected]", "finished scanning \the [affected]")
if(affected.brute_dam)
to_chat(user, span_notice("The muscle in [target]'s [affected] is notably bruised."))
if(affected.status & ORGAN_BROKEN)
@@ -81,6 +83,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_warning("[user]'s hand slips, dropping \the [tool] onto [target]'s [affected]!") , \
span_warning("Your hand slips, dropping \the [tool] onto [target]'s [affected]!") )
user.balloon_alert_visible("slips, dropping \the [tool].", "your hand slips, dropping \the [tool] onto \the [affected].")
affected.createwound(BRUISE, 10)
//////////////////////////////////////////////////////////////////
@@ -114,13 +117,16 @@
if(istype(tool, /obj/item/tape_roll) || istype(tool, /obj/item/taperoll))
user.visible_message(span_warning("[user] begins taping up [target]'s [affected] with \the [tool]."), \
span_notice("You begin taping up [target]'s [affected] with \the [tool]."))
user.balloon_alert_visible("begins taping up \the [target]", "taping up \the [affected]")
affected.jostle_bone(10)
else if(istype(tool, /obj/item/surgical/hemostat) || istype(tool, /obj/item/surgical/FixOVein))
user.visible_message(span_notice("[user] begins mending the charred blood vessels in [target]'s [affected] with \the [tool]."), \
span_notice("You begin mending the charred blood vessels in [target]'s [affected] with \the [tool]."))
user.balloon_alert_visible("begins mending the charred blood vessels in [affected].", "mends the charred blood vessels in [affected].")
else
user.visible_message(span_notice("[user] begins coating the charred tissue in [target]'s [affected] with \the [tool]."), \
span_notice("You begin coating the charred tissue in [target]'s [affected] with \the [tool]."))
user.balloon_alert_visible("begins coating the charred tissue in \the [affected]", "coating the charred tssue in \the [affected]")
..()
/datum/surgery_step/repairflesh/repair_burns/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
@@ -128,6 +134,7 @@
if(istype(tool, /obj/item/tape_roll) || istype(tool, /obj/item/taperoll))
user.visible_message(span_notice("[user] finishes taping up [target]'s [affected] with \the [tool]."), \
span_notice("You finish taping up [target]'s [affected] with \the [tool]."))
user.balloon_alert_visible("tapes up \the [affected]", "taped up \the [affected]")
affected.createwound(BRUISE, 10)
affected.heal_damage(0, 25, 0, 0)
if(!(affected.burn_dam))
@@ -141,6 +148,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_danger("[user]'s hand slips, tearing up [target]'s [affected] with \the [tool]."), \
span_danger("Your hand slips, tearing up [target]'s [affected] with \the [tool]."))
user.balloon_alert_visible("slips, tearing up \the [affected]", "you slip, tearing up \the [affected]")
affected.createwound(BRUISE, 10)
affected.createwound(CUT, 5)
if(istype(tool, /obj/item/stack) && prob(30))
@@ -179,13 +187,16 @@
if(istype(tool, /obj/item/tape_roll) || istype(tool, /obj/item/taperoll))
user.visible_message(span_warning("[user] begins taping up [target]'s [affected] with \the [tool]."), \
span_notice("You begin taping up [target]'s [affected] with \the [tool]."))
user.balloon_alert_visible("begins to tape up \the [affected].", "taping up \the [affected].")
affected.jostle_bone(10)
else if(istype(tool, /obj/item/surgical/FixOVein) || istype(tool, /obj/item/surgical/bonesetter))
user.visible_message(span_notice("[user] begins mending the torn tissue in [target]'s [affected] with \the [tool]."), \
span_notice("You begin mending the torn tissue in [target]'s [affected] with \the [tool]."))
user.balloon_alert_visible("begins mending torn tissue in \the [affected]", "mending torn issue in \the [affected]")
else
user.visible_message(span_notice("[user] begins coating the tissue in [target]'s [affected] with \the [tool]."), \
span_notice("You begin coating the tissue in [target]'s [affected] with \the [tool]."))
user.balloon_alert_visible("begins coating tissue in \the [affected]", "coating tissue in \the [affected]")
..()
/datum/surgery_step/repairflesh/repair_brute/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
@@ -193,6 +204,7 @@
if(istype(tool, /obj/item/tape_roll) || istype(tool, /obj/item/taperoll))
user.visible_message(span_notice("[user] finishes taping up [target]'s [affected] with \the [tool]."), \
span_notice("You finish taping up [target]'s [affected] with \the [tool]."))
user.balloon_alert_visible("tapes up \the [affected]", "taped up \the [affected]")
affected.createwound(BRUISE, 10)
affected.heal_damage(25, 0, 0, 0)
if(!(affected.brute_dam))
@@ -206,6 +218,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_danger("[user]'s hand slips, tearing up [target]'s [affected] with \the [tool]."), \
span_danger("Your hand slips, tearing up [target]'s [affected] with \the [tool]."))
user.balloon_alert_visible("slips, tearing up \the [affected]", "your hand slips, tearing up \the [affected]")
affected.createwound(BRUISE, 10)
affected.createwound(CUT, 5)
if(istype(tool, /obj/item/stack) && prob(30))
+14 -2
View File
@@ -40,17 +40,20 @@
/datum/surgery_step/generic/cut_face/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_filter_notice("[user] starts to cut open [target]'s face and neck with \the [tool]."), \
span_filter_notice("You start to cut open [target]'s face and neck with \the [tool]."))
user.balloon_alert_visible("begins to cut open [target]'s face and neck.", "cutting open face and neck.")
..()
/datum/surgery_step/generic/cut_face/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_notice("[user] has cut open [target]'s face and neck with \the [tool].") , \
span_notice(" You have cut open[target]'s face and neck with \the [tool]."),)
user.balloon_alert_visible("cuts up [target]'s face and neck.", "face and neck cut open.")
target.op_stage.face = 1
/datum/surgery_step/generic/cut_face/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_danger("[user]'s hand slips, slicing [target]'s throat wth \the [tool]!") , \
user.visible_message(span_danger("[user]'s hand slips, slicing [target]'s throat with \the [tool]!") , \
span_danger("Your hand slips, slicing [target]'s throat wth \the [tool]!") )
user.balloon_alert_visible("slips, slicing [target]'s throat.", "your hand slips, slicing [target]'s throat.")
affected.createwound(CUT, 60)
target.AdjustLosebreath(10)
@@ -75,16 +78,19 @@
/datum/surgery_step/face/mend_vocal/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_filter_notice("[user] starts mending [target]'s vocal cords with \the [tool]."), \
span_filter_notice("You start mending [target]'s vocal cords with \the [tool]."))
user.balloon_alert_visible("starts mending [target]'s vocal cords.", "mending vocal cords.")
..()
/datum/surgery_step/face/mend_vocal/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_notice("[user] mends [target]'s vocal cords with \the [tool]."), \
span_notice("You mend [target]'s vocal cords with \the [tool]."))
user.balloon_alert_visible("[target]'s vocal cords mended", "vocal cords mended")
target.op_stage.face = 2
/datum/surgery_step/face/mend_vocal/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_danger("[user]'s hand slips, clamping [target]'s trachea shut for a moment with \the [tool]!"), \
span_danger("Your hand slips, clamping [user]'s trachea shut for a moment with \the [tool]!"))
span_danger("Your hand slips, clamping [target]'s trachea shut for a moment with \the [tool]!"))
user.balloon_alert_visible("slips, clamping [target]'s trachea", "your hand slips, clamping [target]'s trachea.")
target.AdjustLosebreath(10)
///////////////////////////////////////////////////////////////
@@ -109,17 +115,20 @@
/datum/surgery_step/face/fix_face/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_filter_notice("[user] starts pulling the skin on [target]'s face back in place with \the [tool]."), \
span_filter_notice("You start pulling the skin on [target]'s face back in place with \the [tool]."))
user.balloon_alert_visible("starts pulling the skin on [target]'s face back in place.", "pulling the skin back in place.")
..()
/datum/surgery_step/face/fix_face/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_notice("[user] pulls the skin on [target]'s face back in place with \the [tool]."), \
span_notice("You pull the skin on [target]'s face back in place with \the [tool]."))
user.balloon_alert_visible("pulls the skin on [target]'s face back in place", "skin pulled back in place.")
target.op_stage.face = 3
/datum/surgery_step/face/fix_face/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_danger("[user]'s hand slips, tearing skin on [target]'s face with \the [tool]!"), \
span_danger("Your hand slips, tearing skin on [target]'s face with \the [tool]!"))
user.balloon_alert_visible("slips, tearing skin on [target]'s face.", "your hand slips, tearing skin on the face.")
target.apply_damage(10, BRUTE, affected, sharp = TRUE, sharp = TRUE)
///////////////////////////////////////////////////////////////
@@ -144,12 +153,14 @@
/datum/surgery_step/face/cauterize/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_notice("[user] is beginning to cauterize the incision on [target]'s face and neck with \the [tool].") , \
span_notice("You are beginning to cauterize the incision on [target]'s face and neck with \the [tool]."))
user.balloon_alert_visible("begins to cauterize the incision on [target]'s face and neck", "cauterizing the incision on face and neck.")
..()
/datum/surgery_step/face/cauterize/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_notice("[user] cauterizes the incision on [target]'s face and neck with \the [tool]."), \
span_notice("You cauterize the incision on [target]'s face and neck with \the [tool]."))
user.balloon_alert_visible("cauterizes the incision on [target]'s face and neck", "cauterized the incision on the face and neck.")
affected.open = 0
affected.status &= ~ORGAN_BLEEDING
if (target.op_stage.face == 3)
@@ -161,4 +172,5 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_danger("[user]'s hand slips, leaving a small burn on [target]'s face with \the [tool]!"), \
span_danger("Your hand slips, leaving a small burn on [target]'s face with \the [tool]!"))
user.balloon_alert_visible("slips, leaving a small burn on the face.", "your hand slips, leaving a small burn on the face.")
target.apply_damage(4, BURN, affected)
+40 -1
View File
@@ -50,12 +50,14 @@
user.visible_message(span_filter_notice("[user] starts the incision on [target]'s [affected.name] with \the [tool]."), \
span_filter_notice("You start the incision on [target]'s [affected.name] with \the [tool]."))
target.custom_pain("You feel a horrible pain as if from a sharp knife in your [affected.name]!", 40)
user.balloon_alert_visible("starts to open an incision on [target]", "opening incision on \the [affected.name]")
..()
/datum/surgery_step/generic/cut_open/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_notice("[user] has made an incision on [target]'s [affected.name] with \the [tool]."), \
span_notice("You have made an incision on [target]'s [affected.name] with \the [tool]."),)
user.balloon_alert_visible("opens an incision on [target]'s [affected.name]", "incision open on \the [affected.name]")
affected.open = 1
if(istype(target) && target.should_have_organ(O_HEART))
@@ -67,6 +69,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_danger("[user]'s hand slips, slicing open [target]'s [affected.name] in the wrong place with \the [tool]!"), \
span_danger("Your hand slips, slicing open [target]'s [affected.name] in the wrong place with \the [tool]!"))
user.balloon_alert_visible("slips, slicing open \the [affected.name]", "your hand slips, slicing open [affected.name] in the wrong place.")
affected.createwound(CUT, 10)
///////////////////////////////////////////////////////////////
@@ -96,6 +99,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_filter_notice("[user] starts the bloodless incision on [target]'s [affected.name] with \the [tool]."), \
span_filter_notice("You start the bloodless incision on [target]'s [affected.name] with \the [tool]."))
user.balloon_alert_visible("starts to open a bloodless incision on [target]", "opening a blodless incision on \the [affected.name]")
target.custom_pain("You feel a horrible, searing pain in your [affected.name]!", 50)
..()
@@ -115,9 +119,11 @@
affected.organ_clamp()
user.visible_message(span_notice("[user] has made a bloodless incision on [target]'s [affected.name] with \the [tool]."), \
span_notice("You have made a bloodless incision on [target]'s [affected.name] with \the [tool]."),)
user.balloon_alert_visible("opens a bloodless incision on [target]'s [affected.name]", "bloodless incision open on \the [affected.name]")
else
user.visible_message(span_notice("[user] has made an incision on [target]'s [affected.name] with \the [tool], but blood is still escaping from the wound."), \
span_notice("You have made an incision on [target]'s [affected.name] with \the [tool], but blood is still coming from the wound.."),)
user.balloon_alert_visible("opens an incision on [target]'s [affected.name], blood still flowing", "incision open on \the [affected.name], but blood still flows")
//Could be cleaner ...
spread_germs_to_organ(affected, user)
@@ -126,6 +132,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_danger("[user]'s hand slips as the blade sputters, searing a long gash in [target]'s [affected.name] with \the [tool]!"), \
span_danger("Your hand slips as the blade sputters, searing a long gash in [target]'s [affected.name] with \the [tool]!"))
user.balloon_alert_visible("slips, searing a long gash on \the [affected.name]", "your hand slips, searing a long gash on [affected.name].")
affected.createwound(CUT, 7.5)
affected.createwound(BURN, 12.5)
@@ -154,6 +161,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_filter_notice("[user] starts to construct a prepared incision on and within [target]'s [affected.name] with \the [tool]."), \
span_filter_notice("You start to construct a prepared incision on and within [target]'s [affected.name] with \the [tool]."))
user.balloon_alert_visible("begins constructing a prepared incsion on [target]'s [affected.name]", "contructing prepared incision on \the [affected.name]")
target.custom_pain("You feel a horrible, searing pain in your [affected.name] as it is pushed apart!", 50)
..()
@@ -161,6 +169,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_notice("[user] has constructed a prepared incision on and within [target]'s [affected.name] with \the [tool]."), \
span_notice("You have constructed a prepared incision on and within [target]'s [affected.name] with \the [tool]."),)
user.balloon_alert_visible("constructs a prepared incision", "constructed prepared incision")
affected.open = 1
if(istype(target) && target.should_have_organ(O_HEART))
@@ -174,6 +183,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_danger("[user]'s hand jolts as the system sparks, ripping a gruesome hole in [target]'s [affected.name] with \the [tool]!"), \
span_danger("Your hand jolts as the system sparks, ripping a gruesome hole in [target]'s [affected.name] with \the [tool]!"))
user.balloon_alert_visible("hand slips as the system sparks, ripping a gruesome hole in [target]'s [affected.name]", "your hand jolts as the system sparks, ripping a gruesome hole in \the [affected.name]")
affected.createwound(CUT, 20)
affected.createwound(BURN, 15)
@@ -201,6 +211,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_filter_notice("[user] starts clamping bleeders in [target]'s [affected.name] with \the [tool]."), \
span_filter_notice("You start clamping bleeders in [target]'s [affected.name] with \the [tool]."))
user.balloon_alert_visible("starts clamping bleeders", "clamping bleders")
target.custom_pain("The pain in your [affected.name] is maddening!", 40)
..()
@@ -208,13 +219,15 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_notice("[user] clamps bleeders in [target]'s [affected.name] with \the [tool]."), \
span_notice("You clamp bleeders in [target]'s [affected.name] with \the [tool]."))
user.balloon_alert_visible("clamps bleeders", "clamped bleeders")
affected.organ_clamp()
spread_germs_to_organ(affected, user)
/datum/surgery_step/generic/clamp_bleeders/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_danger("[user]'s hand slips, tearing blood vessals and causing massive bleeding in [target]'s [affected.name] with \the [tool]!"), \
user.visible_message(span_danger("[user]'s hand slips, tearing blood vessels and causing massive bleeding in [target]'s [affected.name] with \the [tool]!"), \
span_danger("Your hand slips, tearing blood vessels and causing massive bleeding in [target]'s [affected.name] with \the [tool]!"),)
user.balloon_alert_visible("slips, tearing blood vessels and causing massive bleedings in [target]'s [affected.name]", "your hand slips, tearing blood vessels and causing massive bleedings in \the [affected.name]")
affected.createwound(CUT, 10)
///////////////////////////////////////////////////////////////
@@ -242,13 +255,19 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
var/msg = "[user] starts to pry open the incision on [target]'s [affected.name] with \the [tool]."
var/self_msg = "You start to pry open the incision on [target]'s [affected.name] with \the [tool]."
var/msgBall = "Starts to pry open the incision on [target]'s [affected.name]"
var/self_msgBall = "Prying open the incision on [affected.name]"
if (target_zone == BP_TORSO)
msg = "[user] starts to separate the ribcage and rearrange the organs in [target]'s torso with \the [tool]."
self_msg = "You start to separate the ribcage and rearrange the organs in [target]'s torso with \the [tool]."
msgBall = "Starts to separate the ribcage and rearrange the organs in [target]'s torso."
self_msgBall = "Separating ribcage and rearranging organs."
if (target_zone == BP_GROIN)
msg = "[user] starts to pry open the incision and rearrange the organs in [target]'s lower abdomen with \the [tool]."
self_msg = "You start to pry open the incision and rearrange the organs in [target]'s lower abdomen with \the [tool]."
msgBall = "Starts to pry open the incison and rearrange the organs in [target]'s lower abdomen"
user.visible_message(span_filter_notice("[msg]"), span_filter_notice("[self_msg]"))
user.balloon_alert_visible(msgBall, self_msgBall)
target.custom_pain("It feels like the skin on your [affected.name] is on fire!", 40)
..()
@@ -256,26 +275,40 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
var/msg = span_notice("[user] keeps the incision open on [target]'s [affected.name] with \the [tool].")
var/self_msg = span_notice("You keep the incision open on [target]'s [affected.name] with \the [tool].")
var/msgBall = "Keeps the incision open on [target]'s [affected.name]"
var/self_msgBall = "Keeping the incision open on \the [affected.name]"
if (target_zone == BP_TORSO)
msg = span_notice("[user] keeps the ribcage open on [target]'s torso with \the [tool].")
self_msg = span_notice("You keep the ribcage open on [target]'s torso with \the [tool].")
msgBall = "Keeps the ribcage open on [target]'s torso."
self_msgBall = "Keeping the ribcage open."
if (target_zone == BP_GROIN)
msg = span_notice("[user] keeps the incision open on [target]'s lower abdomen with \the [tool].")
self_msg = span_notice("You keep the incision open on [target]'s lower abdomen with \the [tool].")
msgBall = "Keeps the incision open on [target]'s lower abdomen."
self_msgBall = "Keeping the incision open on the lower abdomen."
user.visible_message(msg, self_msg)
user.balloon_alert_visible(msgBall, self_msgBall)
affected.open = 2
/datum/surgery_step/generic/retract_skin/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
var/msg = span_danger("[user]'s hand slips, tearing the edges of the incision on [target]'s [affected.name] with \the [tool]!")
var/self_msg = span_danger("Your hand slips, tearing the edges of the incision on [target]'s [affected.name] with \the [tool]!")
var/msgBall = "Slips, tearing the edges of the incision."
var/self_msgBall = "Your hand slips, tearing the edges of the incision."
if (target_zone == BP_TORSO)
msg = span_danger("[user]'s hand slips, damaging several organs in [target]'s torso with \the [tool]!")
self_msg = span_danger("Your hand slips, damaging several organs in [target]'s torso with \the [tool]!")
msgBall = "Slips, damaging several organs in [target]'s torso."
self_msgBall = "Your hand slips, damaging several organs in the torso."
if (target_zone == BP_GROIN)
msg = span_danger("[user]'s hand slips, damaging several organs in [target]'s lower abdomen with \the [tool]!")
self_msg = span_danger("Your hand slips, damaging several organs in [target]'s lower abdomen with \the [tool]!")
msgBall = "Slips, damaging several organs in [target]'s lower abdomen."
self_msgBall = "Your hand slips, damaging several organs in the torso."
user.visible_message(msg, self_msg)
user.balloon_alert_visible(msgBall, self_msgBall)
target.apply_damage(12, BRUTE, affected, sharp = TRUE)
///////////////////////////////////////////////////////////////
@@ -303,6 +336,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_filter_notice("[user] is beginning to cauterize the incision on [target]'s [affected.name] with \the [tool].") , \
span_filter_notice("You are beginning to cauterize the incision on [target]'s [affected.name] with \the [tool]."))
user.balloon_alert_visible("begins to cauterize the incision on [target]'s [affected.name]", "cauterizing \the [affected.name]")
target.custom_pain("Your [affected.name] is being burned!", 40)
..()
@@ -310,6 +344,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_notice("[user] cauterizes the incision on [target]'s [affected.name] with \the [tool]."), \
span_notice("You cauterize the incision on [target]'s [affected.name] with \the [tool]."))
user.balloon_alert_visible("cauterizes the incision on [target]'s [affected.name]", "incison cauterized on \the [affected.name]")
affected.open = 0
affected.germ_level = 0
affected.status &= ~ORGAN_BLEEDING
@@ -318,6 +353,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_danger("[user]'s hand slips, leaving a small burn on [target]'s [affected.name] with \the [tool]!"), \
span_danger("Your hand slips, leaving a small burn on [target]'s [affected.name] with \the [tool]!"))
user.balloon_alert_visible("slips, leaving a small burn on [target]'s [affected.name]", "your hand slips, leaving a small burn on \the [affected.name]")
target.apply_damage(3, BURN, affected)
///////////////////////////////////////////////////////////////
@@ -349,6 +385,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_filter_notice("[user] is beginning to amputate [target]'s [affected.name] with \the [tool].") , \
span_filter_notice("You are beginning to cut through [target]'s [affected.amputation_point] with \the [tool]."))
user.balloon_alert_visible("begins to amputate [target]'s [affected.name]", "amputating \the [affected.name]")
target.custom_pain("Your [affected.amputation_point] is being ripped apart!", 100)
..()
@@ -356,11 +393,13 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_notice("[user] amputates [target]'s [affected.name] at the [affected.amputation_point] with \the [tool]."), \
span_notice("You amputate [target]'s [affected.name] with \the [tool]."))
user.balloon_alert_visible("amputates [target]'s [affected.name] at the [affected.amputation_point]", "amputated \the [affected.name]")
affected.droplimb(1,DROPLIMB_EDGE)
/datum/surgery_step/generic/amputate/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_danger("[user]'s hand slips, sawing through the bone in [target]'s [affected.name] with \the [tool]!"), \
span_danger("Your hand slips, sawwing through the bone in [target]'s [affected.name] with \the [tool]!"))
user.balloon_alert_visible("slips, sawing through the bone in [target]'s [affected.name]", "your hand slips, sawng through the bone in \the [affected.name]")
affected.createwound(CUT, 30)
affected.fracture()
+15 -1
View File
@@ -40,6 +40,7 @@
var/obj/item/organ/external/chest/affected = target.get_organ(target_zone)
user.visible_message(span_danger("[user]'s hand slips, scraping around inside [target]'s [affected.name] with \the [tool]!"), \
span_danger("Your hand slips, scraping around inside [target]'s [affected.name] with \the [tool]!"))
user.balloon_alert_visible("slips, scraping around inside [target]'s [affected.name]", "your hand slips, scraping around inside \the [affected.name]")
affected.createwound(CUT, 20)
///////////////////////////////////////////////////////////////
@@ -66,6 +67,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_filter_notice("[user] starts making some space inside [target]'s [get_cavity(affected)] cavity with \the [tool]."), \
span_filter_notice("You start making some space inside [target]'s [get_cavity(affected)] cavity with \the [tool].") )
user.balloon_alert_visible("starts making space inside [target]'s [get_cavity(affected)]", "making space inside [get_cavity(affected)]")
target.custom_pain("The pain in your chest is living hell!",1)
affected.cavity = 1
..()
@@ -74,6 +76,7 @@
var/obj/item/organ/external/chest/affected = target.get_organ(target_zone)
user.visible_message(span_notice("[user] makes some space inside [target]'s [get_cavity(affected)] cavity with \the [tool]."), \
span_notice("You make some space inside [target]'s [get_cavity(affected)] cavity with \the [tool].") )
user.balloon_alert_visible("makes space inside [target]'s [get_cavity(affected)]", "made space inside \the [get_cavity(affected)]")
///////////////////////////////////////////////////////////////
// Cavity Closing Surgery
@@ -101,6 +104,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_filter_notice("[user] starts mending [target]'s [get_cavity(affected)] cavity wall with \the [tool]."), \
span_filter_notice("You start mending [target]'s [get_cavity(affected)] cavity wall with \the [tool].") )
user.balloon_alert_visible("starts mending [target]'s [get_cavity(affected)] cavity wall.", "mending \the [get_cavity(affected)] cavity wall.")
target.custom_pain("The pain in your chest is living hell!",1)
affected.cavity = 0
..()
@@ -108,7 +112,8 @@
/datum/surgery_step/cavity/close_space/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/chest/affected = target.get_organ(target_zone)
user.visible_message(span_notice("[user] mends [target]'s [get_cavity(affected)] cavity walls with \the [tool]."), \
span_notice(" You mend[target]'s [get_cavity(affected)] cavity walls with \the [tool].") )
span_notice(" You mend [target]'s [get_cavity(affected)] cavity walls with \the [tool].") )
user.balloon_alert_visible("mends [target]'s [get_cavity(affected)] cavity walls", "mended [get_cavity(affected)] cavity walls.")
///////////////////////////////////////////////////////////////
// Item Implantation Surgery
@@ -151,6 +156,7 @@
tool = G.wrapped
user.visible_message(span_notice("[user] starts putting \the [tool] inside [target]'s [get_cavity(affected)] cavity."), \
span_notice("You start putting \the [tool] inside [target]'s [get_cavity(affected)] cavity.") ) //Nobody will probably ever see this, but I made these two blue. ~CK
user.balloon_alert_visible("starts putting \the [tool] inside [target]'s [get_cavity(affected)]", "putting \the [tool] inside \the [get_cavity(affected)]")
target.custom_pain("The pain in your chest is living hell!",1)
..()
@@ -164,6 +170,7 @@
user.drop_item()
user.visible_message(span_notice("[user] puts \the [tool] inside [target]'s [get_cavity(affected)] cavity."), \
span_notice("You put \the [tool] inside [target]'s [get_cavity(affected)] cavity.") )
user.balloon_alert_visible("Puts \the [tool] inside [target]'s [get_cavity(affected)]", "\the [tool] placed inside [get_cavity(affected)]")
if (tool.w_class > get_max_wclass(affected)/2 && prob(50) && (affected.robotic < ORGAN_ROBOT))
to_chat(user, span_danger(" You tear some blood vessels trying to fit such a big object in this cavity."))
var/datum/wound/internal_bleeding/I = new (10)
@@ -202,6 +209,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_notice("[user] starts poking around inside [target]'s [affected.name] with \the [tool]."), \
span_notice("You start poking around inside [target]'s [affected.name] with \the [tool].") )
user.balloon_alert_visible("pokes inside [target]'s [affected.name]", "poking around inside [affected.name]")
target.custom_pain("The pain in your [affected.name] is living hell!",1)
..()
@@ -214,11 +222,13 @@
if(isnull(obj)) //They clicked cancel.
user.visible_message(span_notice("[user] takes \the [tool] out of [target]'s [affected.name]."), \
span_notice("You take \the [tool] out of the incision on [target]'s [affected.name].") )
user.balloon_alert_visible("Takes \the [tool] out of [target]'s [affected.name]", "\the [tool] taken out of the incison on \the [affected.name]")
return
if(!do_mob(user, target, 1)) //They moved away
to_chat(user, span_warning("You must remain close to and keep focused on your patient to conduct surgery."))
user.visible_message(span_notice("[user] fails to remove anything from [target]'s [affected.name] with \the [tool]!"), \
span_notice("You fail to remove the [obj] from [target]'s [affected.name]s with \the [tool]!") )
user.balloon_alert_visible("fails to remove anything from [target]'s [affected.name]", "failed to remove \the [obj] from \the [affected.name]")
return
if(istype(obj,/obj/item/implant))
@@ -226,14 +236,17 @@
if (!imp.islegal()) //ILLEGAL IMPLANT ALERT!!!!!!!!!!
user.visible_message(span_notice("[user] seems to be intently working on something within [target]'s [affected.name] with \the [tool]!"), \
span_notice("You intently begin to take [obj] out of the incision on [target]'s [affected.name]s with \the [tool]!") )
user.balloon_alert_visible("intently works on something within [target]'s [affected.name]", "intently taking \the [obj] out of the incision in \the [affected.name]")
if(!do_after(user, min_duration, target))
user.visible_message(span_notice("[user] fails to remove anything from [target]'s [affected.name] with \the [tool]!"), \
span_notice("You fail to remove the [obj] from [target]'s [affected.name]s with \the [tool]!") )
user.balloon_alert_visible("fails to remove anything from [target]'s [affected.name]", "failed to remove \the [obj] from \the [affected.name]")
return
user.visible_message(span_notice("[user] takes something out of the incision on [target]'s [affected.name] with \the [tool]!"), \
span_notice("You take [obj] out of the incision on [target]'s [affected.name]s with \the [tool]!") )
user.balloon_alert_visible("Takes something out of the incision on [target]'s [affected.name]", "[obj] taken out of the incision on [affected.name]")
affected.implants -= obj
if(!target.has_embedded_objects())
target.clear_alert("embeddedobject")
@@ -259,6 +272,7 @@
else
user.visible_message(span_notice("[user] could not find anything inside [target]'s [affected.name], and pulls \the [tool] out."), \
span_notice("You could not find anything inside [target]'s [affected.name].") )
user.balloon_alert_visible("could not find anything inside", "nothing found inside")
/datum/surgery_step/cavity/implant_removal/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
..()
+13
View File
@@ -37,15 +37,19 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
if (affected)
to_chat(user, span_warning("Something is in the way! You can't attach [E] here!"))
user.balloon_alert(user, "something is in the way!")
return 0
if(!P)
to_chat(user, span_warning("There's nothing to attach [E] to!"))
user.balloon_alert(user, "there's nothing to attach [E] to!")
return 0
else if((P.robotic >= ORGAN_ROBOT) && (E.robotic < ORGAN_ROBOT))
to_chat(user, span_warning("Attaching [E] to [P] wouldn't work well."))
user.balloon_alert(user, "attaching [E] to [P] wouldn't work well")
return 0
else if(istype(E, /obj/item/organ/external/head) && E.robotic >= ORGAN_ROBOT && P.robotic < ORGAN_ROBOT)
to_chat(user, span_warning("Attaching [E] to [P] might break [E]."))
user.balloon_alert(user, "attaching [E] to [P] might break [E]")
return 0
else
return 1
@@ -54,11 +58,13 @@
var/obj/item/organ/external/E = tool
user.visible_message(span_filter_notice("[user] starts attaching [E.name] to [target]'s [E.amputation_point]."), \
span_filter_notice("You start attaching [E.name] to [target]'s [E.amputation_point]."))
user.balloon_alert_visible("starts attaching [E.name] to [target]'s [E.amputation_point]", "attaching [E.name] to [E.amputation_point]")
/datum/surgery_step/limb/attach/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/E = tool
user.visible_message(span_notice("[user] has attached [target]'s [E.name] to the [E.amputation_point]."), \
span_notice("You have attached [target]'s [E.name] to the [E.amputation_point]."))
user.balloon_alert_visible("attaches [target]'s [E.name] to \the [E.amputation_point]", "attached \the [E.name] to the [E.amputation_point]")
user.drop_from_inventory(E)
E.replaced(target)
@@ -76,6 +82,7 @@
var/obj/item/organ/external/E = tool
user.visible_message(span_warning(" [user]'s hand slips, damaging [target]'s [E.amputation_point]!"), \
span_warning(" Your hand slips, damaging [target]'s [E.amputation_point]!"))
user.balloon_alert_visible("slips, damaging [target]'s [E.amputation_point]", "your hand slips, damaging [E.amputation_point]")
target.apply_damage(10, BRUTE, null, sharp = TRUE)
///////////////////////////////////////////////////////////////
@@ -102,11 +109,13 @@
var/obj/item/organ/external/E = target.get_organ(target_zone)
user.visible_message(span_filter_notice("[user] starts connecting tendons and muscles in [target]'s [E.amputation_point] with [tool]."), \
span_filter_notice("You start connecting tendons and muscle in [target]'s [E.amputation_point]."))
user.balloon_alert_visible("starts connecting tendons and muscles in [target]'s [E.amputation_point]", "connecting tendons and muscle in \the [E.amputation_point]")
/datum/surgery_step/limb/connect/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/E = target.get_organ(target_zone)
user.visible_message(span_notice("[user] has connected tendons and muscles in [target]'s [E.amputation_point] with [tool]."), \
span_notice("You have connected tendons and muscles in [target]'s [E.amputation_point] with [tool]."))
user.balloon_alert_visible("connected tendons and muscles in [target]'s [E.amputation_point]", "connected tendons and muscles in \the [E.amputation_point]")
E.status &= ~ORGAN_CUT_AWAY
target.update_icons_body()
target.updatehealth()
@@ -116,6 +125,7 @@
var/obj/item/organ/external/E = tool
user.visible_message(span_warning(" [user]'s hand slips, damaging [target]'s [E.amputation_point]!"), \
span_warning(" Your hand slips, damaging [target]'s [E.amputation_point]!"))
user.balloon_alert_visible("slips, damaging [target]'s [E.amputation_point]", "your hand slips, damaging \the [E.amputation_point]")
target.apply_damage(10, BRUTE, null, sharp = TRUE)
///////////////////////////////////////////////////////////////
@@ -140,11 +150,13 @@
/datum/surgery_step/limb/mechanize/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_filter_notice("[user] starts attaching \the [tool] to [target]."), \
span_filter_notice("You start attaching \the [tool] to [target]."))
user.balloon_alert_visible("starts attaching \the [tool] to [target]", "attachng \the [tool]")
/datum/surgery_step/limb/mechanize/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/robot_parts/L = tool
user.visible_message(span_notice("[user] has attached \the [tool] to [target]."), \
span_notice("You have attached \the [tool] to [target]."))
user.balloon_alert_visible("attaches \the [tool] to [target]", "attached \the [tool]")
if(L.part)
for(var/part_name in L.part)
@@ -168,4 +180,5 @@
/datum/surgery_step/limb/mechanize/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_warning(" [user]'s hand slips, damaging [target]'s flesh!"), \
span_warning(" Your hand slips, damaging [target]'s flesh!"))
user.balloon_alert_visible("slips, damaging [target]'s flesh", "your hand slips, damaging the flesh")
target.apply_damage(10, BRUTE, null, sharp = TRUE)
+19 -1
View File
@@ -40,17 +40,20 @@
/datum/surgery_step/brainstem/mend_vessels/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_filter_notice("[user] starts to mend the blood vessels on [target]'s brainstem with \the [tool]."), \
span_filter_notice("You start to mend the blood vessels on [target]'s brainstem with \the [tool]."))
user.balloon_alert_visible("starts mending blood vessels on [target]'s brainstem", "mending blood vessels on the brainstem.")
..()
/datum/surgery_step/brainstem/mend_vessels/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_notice("[user] has mended the blood vessels on [target]'s brainstem with \the [tool].") , \
span_notice(" You have mended the blood vessels on [target]'s brainstem with \the [tool]."),)
user.balloon_alert_visible("mended the blood vessels on [target]'s brainstem", "mended the blood vessels on the brainstem.")
target.op_stage.brainstem = 1
/datum/surgery_step/brainstem/mend_vessels/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_danger("[user]'s hand slips, tearing at [target]'s brainstem with \the [tool]!") , \
span_danger("Your hand slips, tearing at [target]'s brainstem with \the [tool]!") )
user.balloon_alert_visible("slips, tearing at [target]'s brainstem", "your hand slips, tearing at the brainstem")
affected.createwound(PIERCE, 10)
target.AdjustParalysis(10)
@@ -78,12 +81,14 @@
/datum/surgery_step/brainstem/drill_vertebrae/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_filter_notice("[user] starts to drill around [target]'s brainstem with \the [tool]."), \
span_filter_notice("You start to drill around [target]'s brainstem with \the [tool]."))
user.balloon_alert_visible("starts drilling around [target]'s brainstem", "drilling around the brainstem")
..()
/datum/surgery_step/brainstem/drill_vertebrae/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_notice("[user] has drilled around [target]'s brainstem with \the [tool].") , \
span_notice(" You have drilled around [target]'s brainstem with \the [tool]."),)
user.balloon_alert_visible("drilled around [target]'s brainstem", "drilled around the brainstem")
target.AdjustParalysis(10) //We're getting Invasive here. This only ticks down when the person is alive, so it's a good side-effect for this step. Rattling the braincase with a drill is not optimal.
target.op_stage.brainstem = 2
affected.fracture() //Does not apply damage, simply breaks it if it wasn't already. Doesn't stop a defib on its own.
@@ -92,6 +97,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_danger("[user]'s hand slips, shredding [target]'s brainstem with \the [tool]!") , \
span_danger("Your hand slips, shredding [target]'s brainstem with \the [tool]!") )
user.balloon_alert_visible("slips, shredding [target]'s brainstem", "your hand slips, shredding the brainstem.")
affected.createwound(PIERCE, 10)
target.AdjustParalysis(15)
spawn()
@@ -120,11 +126,13 @@
/datum/surgery_step/brainstem/clean_chips/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_filter_notice("[user] starts to pick around [target]'s brainstem for bone chips with \the [tool]."), \
span_filter_notice("You start to pick around [target]'s brainstem for bone chips with \the [tool]."))
user.balloon_alert_visible("starts to pick around [target]'s brainstem for bone chips.", "picking around the brainstem for bone chips.")
..()
/datum/surgery_step/brainstem/clean_chips/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_notice("[user] has cleaned around [target]'s brainstem with \the [tool].") , \
span_notice(" You have cleaned around [target]'s brainstem with \the [tool]."),)
user.balloon_alert_visible("cleaned around [target]'s brainstem")
target.AdjustParalysis(10) //Still invasive.
target.op_stage.brainstem = 3
@@ -132,6 +140,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_danger("[user]'s hand slips, gouging [target]'s brainstem with \the [tool]!") , \
span_danger("Your hand slips, gouging [target]'s brainstem with \the [tool]!") )
user.balloon_alert_visible("slips, gouging [target]'s brainstem", "your hand slips, gouging the brainstem")
affected.createwound(CUT, 5)
target.AdjustParalysis(10)
spawn()
@@ -160,11 +169,13 @@
/datum/surgery_step/brainstem/mend_cord/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_filter_notice("[user] starts to fuse [target]'s spinal cord with \the [tool]."), \
span_filter_notice("You start to fuse [target]'s spinal cord with \the [tool]."))
user.balloon_alert_visible("starts fusing [target]'s spinal cord", "fusing the spinal cord")
..()
/datum/surgery_step/brainstem/mend_cord/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_notice("[user] has fused [target]'s spinal cord with \the [tool].") , \
span_notice(" You have fused [target]'s spinal cord with \the [tool]."),)
user.balloon_alert_visible("fused [target]'s spinal cord", "fused the spinal cord")
target.op_stage.brainstem = 4
target.AdjustParalysis(5)
target.add_modifier(/datum/modifier/franken_sickness, 20 MINUTES)
@@ -173,6 +184,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_danger("[user]'s hand slips, tearing at [target]'s spinal cord with \the [tool]!") , \
span_danger("Your hand slips, tearing at [target]'s spinal cord with \the [tool]!") )
user.balloon_alert_visible("slips, tearing [target]'s spinal cord", "your hand slips, tearing at the spinal cord")
affected.createwound(PIERCE, 5)
target.AdjustParalysis(20)
spawn()
@@ -200,11 +212,13 @@
/datum/surgery_step/brainstem/mend_vertebrae/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_filter_notice("[user] starts to mend [target]'s opened vertebrae with \the [tool]."), \
span_filter_notice("You start to mend [target]'s opened vertebrae with \the [tool]."))
user.balloon_alert_visible("starts mending [target]'s opened vertebrae", "mending opened vertebrae")
..()
/datum/surgery_step/brainstem/mend_vertebrae/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_notice("[user] has mended [target]'s vertebrae with \the [tool].") , \
span_notice(" You have mended [target]'s vertebrae with \the [tool]."),)
user.balloon_alert_visible("mended [target]'s vertebrae", "mended the vertebrae")
target.can_defib = 1
target.op_stage.brainstem = 5
@@ -212,6 +226,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_danger("[user]'s hand slips, tearing at [target]'s spinal cord with \the [tool]!") , \
span_danger("Your hand slips, tearing at [target]'s spinal cord with \the [tool]!") )
user.balloon_alert_visible("slips, tearing at [target]'s spinal cord", "your hand slips, tearing at the spinal cord")
affected.createwound(PIERCE, 5)
target.AdjustParalysis(15)
spawn()
@@ -240,18 +255,21 @@
/datum/surgery_step/brainstem/realign_tissue/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_filter_notice("[user] starts to realign the tissues in [target]'s skull with \the [tool]."), \
span_filter_notice("You start to realign the tissues in [target]'s skull with \the [tool]."))
user.balloon_alert_visible("starts to realign the tissues in [target]'s skull", "realigning the tissues in the skull")
..()
/datum/surgery_step/brainstem/realign_tissue/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_notice("[user] has realigned the tissues in [target]'s skull back into place with \the [tool].") , \
span_notice(" You have realigned the tissues in [target]'s skull back into place with \the [tool]."),)
user.balloon_alert_visible("realigned the tissues in [target]'s skull back in place", "realigned the tissues in the skull back into place")
target.AdjustParalysis(5) //I n v a s i v e
target.op_stage.brainstem = 0 //The cycle begins anew.
/datum/surgery_step/brainstem/realign_tissue/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_danger("[user]'s hand slips, gouging [target]'s brainstem with \the [tool]!") , \
span_danger("Your hand slips, gouging [target]'s brainstem with \the [tool]!") )
span_danger("Your hand slips, gouging [target]'s brainstem with \the [tool]!"))
user.balloon_alert_visible("slips, gounging at [target]'s brainstem", "your hand slips, gouging at the brainstem")
affected.createwound(CUT, 5)
target.AdjustParalysis(30)
spawn()
@@ -36,6 +36,7 @@
/datum/surgery_step/generic/ripper/tear_vessel/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message("[user] starts ripping into [target] with \the [tool].", \
"You start ripping into [target] with \the [tool].")
user.balloon_alert_visible("starts ripping into [target]", "ripping into [target]")
target.custom_pain("[user] is ripping into your [target.op_stage.current_organ]!", 100)
..()
@@ -43,6 +44,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_notice("[user] has ripped [target]'s [affected] \the [tool], blood and viscera spraying everywhere!"), \
span_notice("You have ripped [target]'s [target.op_stage.current_organ] out with \the [tool], spraying blood all through the room!"))
user.balloon_alert_visible("rips into [target]'s [affected], blood and viscera everywhere!", "ripped into [target]'s [affected], blood and viscera everywhere!")
var/datum/wound/internal_bleeding/I = new (30) //splurt. New severed artery.
affected.wounds += I
affected.owner.custom_pain("You feel something rip in your [affected.name]!", 1)
@@ -54,6 +56,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_warning("[user]'s hand slips, damaging [target]'s [affected.name] with \the [tool]!"), \
span_warning("Your hand slips, damaging [target]'s [affected.name] with \the [tool]!"))
user.balloon_alert_visible("slips, damaging [target]'s [affected.name]", "your hand slips, damaging \the [affected.name]")
affected.createwound(BRUISE, 20) //Only bruised...Sad.
@@ -68,6 +71,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message("[user] starts violently shifting \the [tool] in [target]'s [affected.name]!", \
"You start violently moving the [tool] in [target]'s [affected.name]!")
user.balloon_alert_visible("starts violently shifting \the [tool] in [target]'s [affected.name]!", "violently moving \the [tool] in \the [affected.name]")
target.custom_pain("[user] is ripping into your [target.op_stage.current_organ]!", 100)
..()
+24
View File
@@ -60,6 +60,7 @@
if(!(I.robotic >= ORGAN_ROBOT))
user.visible_message(span_filter_notice("[user] starts treating damage to [target]'s [I.name] with [tool_name]."), \
span_filter_notice("You start treating damage to [target]'s [I.name] with [tool_name].") )
user.balloon_alert_visible("starts treating damage to [target]'s [I.name]", "treating damage on \the [I.name]")
target.custom_pain("The pain in your [affected.name] is living hell!", 100)
..()
@@ -80,8 +81,10 @@
if(!(I.robotic >= ORGAN_ROBOT))
user.visible_message(span_notice("[user] treats damage to [target]'s [I.name] with [tool_name]."), \
span_notice("You treat damage to [target]'s [I.name] with [tool_name].") )
user.balloon_alert_visible("starts treating damage to [target]'s [I.name]", "treating damage to \the [I.name]")
if(I.organ_tag == O_BRAIN && I.status == ORGAN_DEAD && target.can_defib == 0) //Let people know they still got more work to get the brain back into working order.
to_chat(user, span_warning("You fix their [I] but the neurological structure is still heavily damaged and in need of repair."))
user.balloon_alert(user, "fixed \the [I], neurological structure still in neeed of repair.")
I.damage = 0
I.status = 0
if(I.organ_tag == O_EYES)
@@ -96,6 +99,7 @@
user.visible_message(span_warning("[user]'s hand slips, getting mess and tearing the inside of [target]'s [affected.name] with \the [tool]!"), \
span_warning("Your hand slips, getting mess and tearing the inside of [target]'s [affected.name] with \the [tool]!"))
user.balloon_alert_visible("slips, gettng mess and tearing the inside of [target]'s [affected.name]", "your hand slips, getting mess and tearng the [affected.name]'s insides")
var/dam_amt = 2
if (istype(tool, /obj/item/stack/medical/advanced/bruise_pack))
@@ -150,6 +154,7 @@
if(I.robotic >= ORGAN_ROBOT)
user.visible_message("[user] starts mending the damage to [target]'s [I.name]'s mechanisms.", \
"You start mending the damage to [target]'s [I.name]'s mechanisms." )
user.balloon_alert_visible("mends damage to [target]'s [I.name]'s mechanisms.", "mending damage to [I.name]'s mechanisms")
target.custom_pain("The pain in your [affected.name] is living hell!",1)
..()
@@ -164,6 +169,7 @@
if(I.robotic >= ORGAN_ROBOT)
user.visible_message(span_notice("[user] repairs [target]'s [I.name] with [tool]."), \
span_notice("You repair [target]'s [I.name] with [tool].") )
user.balloon_alert_visible("repairs [target]'s [I.name]", "repaired \the [I.name]")
I.damage = 0
if(I.organ_tag == O_EYES)
target.sdisabilities &= ~BLIND
@@ -175,6 +181,7 @@
user.visible_message(span_warning("[user]'s hand slips, gumming up the mechanisms inside of [target]'s [affected.name] with \the [tool]!"), \
span_warning("Your hand slips, gumming up the mechanisms inside of [target]'s [affected.name] with \the [tool]!"))
user.balloon_alert_visible("slips, gumming up the mechanisms inside of [target]'s [affected.name]", "your hand slips, gumming up the mechanisms inside \the [affected.name]")
target.adjustBruteLoss(5)
@@ -235,12 +242,14 @@
user.visible_message(span_filter_notice("[user] starts to separate [target]'s [target.op_stage.current_organ] with \the [tool]."), \
span_filter_notice("You start to separate [target]'s [target.op_stage.current_organ] with \the [tool].") )
user.balloon_alert_visible("starts to separate [target]'s [target.op_stage.current_organ]", "separating \the [target.op_stage.current_organ]")
target.custom_pain("The pain in your [affected.name] is living hell!", 100)
..()
/datum/surgery_step/internal/detatch_organ/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_notice("[user] has separated [target]'s [target.op_stage.current_organ] with \the [tool].") , \
span_notice("You have separated [target]'s [target.op_stage.current_organ] with \the [tool]."))
user.balloon_alert_visible("separates [target]'s [target.op_stage.current_organ]", "separated \the [target.op_stage.current_organ]")
var/obj/item/organ/I = target.internal_organs_by_name[target.op_stage.current_organ]
if(I && istype(I))
@@ -250,6 +259,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_warning("[user]'s hand slips, slicing an artery inside [target]'s [affected.name] with \the [tool]!"), \
span_warning("Your hand slips, slicing an artery inside [target]'s [affected.name] with \the [tool]!"))
user.balloon_alert_visible("slips, slicing an artery inside [target]'s [affected.name]", "your hand slips, slicing anrtery inside [affected.name]")
affected.createwound(CUT, rand(30,50), 1)
///////////////////////////////////////////////////////////////
@@ -300,11 +310,13 @@
to_chat(user, span_notice("You decide against preparing any organs for removal."))
user.visible_message(span_filter_notice("[user] starts pulling \the [tool] from [target]'s [affected]."), \
span_filter_notice("You start pulling \the [tool] from [target]'s [affected]."))
user.balloon_alert_visible("starts pulling \the [tool] from [target]'s [affected]", "pulling \the [tool] from \the [affected]")
target.op_stage.current_organ = organ_to_remove
user.visible_message(span_filter_notice("[user] starts removing [target]'s [target.op_stage.current_organ] with \the [tool]."), \
span_filter_notice("You start removing [target]'s [target.op_stage.current_organ] with \the [tool]."))
user.balloon_alert_visible("starts removing [target]'s [target.op_stage.current_organ]", "removing \the [target.op_stage.current_organ]")
target.custom_pain("Someone's ripping out your [target.op_stage.current_organ]!", 100)
..()
@@ -313,11 +325,13 @@
if(!target.op_stage.current_organ) //They chose to remove their tool instead.
user.visible_message(span_notice("[user] has removed \the [tool] from [target]'s [affected]."), \
span_notice("You have removed \the [tool] from [target]'s [affected]."))
user.balloon_alert_visible("removes \the [tool] from [target]'s [affected]", "removed \the [tool] from \the [affected]")
// Extract the organ!
if(target.op_stage.current_organ)
user.visible_message(span_notice("[user] has removed [target]'s [target.op_stage.current_organ] with \the [tool]."), \
span_notice("You have removed [target]'s [target.op_stage.current_organ] with \the [tool]."))
user.balloon_alert_visible("removes [target]'s [target.op_stage.current_organ]", "removed \the [target.op_stage.current_organ]")
var/obj/item/organ/O = target.internal_organs_by_name[target.op_stage.current_organ]
if(O && istype(O))
O.removed(user)
@@ -327,6 +341,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_warning("[user]'s hand slips, damaging [target]'s [affected.name] with \the [tool]!"), \
span_warning("Your hand slips, damaging [target]'s [affected.name] with \the [tool]!"))
user.balloon_alert_visible("slips, damaging [target]'s [affected.name]", "your hand slips, damaging \the [affected.name]")
affected.createwound(BRUISE, 20)
///////////////////////////////////////////////////////////////
@@ -357,6 +372,7 @@
if((affected.robotic >= ORGAN_ROBOT) && !(O.robotic >= ORGAN_ROBOT))
to_chat(user, span_danger("You cannot install a naked organ into a robotic body."))
user.balloon_alert(user, "you cannot install a naked organ into a robotic body.")
return SURGERY_FAILURE
if(!target.species)
@@ -375,6 +391,7 @@
organ_missing = 1
else
to_chat(user, span_warning("\The [target] already has [o_a][O.organ_tag]."))
user.balloon_alert(user, "there is a [o_a][O.organ_tag] already!")
return SURGERY_FAILURE
if(O && affected.organ_tag == O.parent_organ)
@@ -382,6 +399,7 @@
else
to_chat(user, span_warning("\The [O.organ_tag] [o_do] normally go in \the [affected.name]."))
user.balloon_alert(user, "\the [O.organ_tag] [o_do] normally go in \the [affected.name]")
return SURGERY_FAILURE
return ..() && organ_missing && organ_compatible
@@ -390,6 +408,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_filter_notice("[user] starts transplanting \the [tool] into [target]'s [affected.name]."), \
span_filter_notice("You start transplanting \the [tool] into [target]'s [affected.name]."))
user.balloon_alert_visible("strats transplanting \the [tool] into [target]'s [affected.name]", "transplanting \the [tool] into \the [affected.name]")
target.custom_pain("Someone's rooting around in your [affected.name]!", 100)
..()
@@ -397,6 +416,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_notice("[user] has transplanted \the [tool] into [target]'s [affected.name]."), \
span_notice("You have transplanted \the [tool] into [target]'s [affected.name]."))
user.balloon_alert_visible("transplants \the [tool] into [target]'s [affected.name]", "transplanted \the [tool] into [affected.name]")
var/obj/item/organ/O = tool
if(istype(O))
user.remove_from_mob(O)
@@ -405,6 +425,7 @@
/datum/surgery_step/internal/replace_organ/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_warning("[user]'s hand slips, damaging \the [tool]!"), \
span_warning("Your hand slips, damaging \the [tool]!"))
user.balloon_alert_visible("slips, damaging \the [tool]", "your hand slips, damaging \the [tool]")
var/obj/item/organ/I = tool
if(istype(I))
I.take_damage(rand(3,5),0)
@@ -448,12 +469,14 @@
/datum/surgery_step/internal/attach_organ/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_filter_notice("[user] begins reattaching [target]'s [target.op_stage.current_organ] with \the [tool]."), \
span_filter_notice("You start reattaching [target]'s [target.op_stage.current_organ] with \the [tool]."))
user.balloon_alert_visible("begins reattaching [target]'s [target.op_stage.current_organ]", "reattaching [target.op_stage.current_organ]")
target.custom_pain("Someone's digging needles into your [target.op_stage.current_organ]!", 100)
..()
/datum/surgery_step/internal/attach_organ/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_notice("[user] has reattached [target]'s [target.op_stage.current_organ] with \the [tool].") , \
span_notice("You have reattached [target]'s [target.op_stage.current_organ] with \the [tool]."))
user.balloon_alert_visible("reattached [target]'s [target.op_stage.current_organ]", "reattached [target.op_stage.current_organ]")
var/obj/item/organ/I = target.internal_organs_by_name[target.op_stage.current_organ]
if(I && istype(I))
@@ -463,4 +486,5 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_warning("[user]'s hand slips, damaging the flesh in [target]'s [affected.name] with \the [tool]!"), \
span_warning("Your hand slips, damaging the flesh in [target]'s [affected.name] with \the [tool]!"))
user.balloon_alert_visible("slips, damaging the flesh in [target]'s [affected.name]", "your hand slips, damaging the flesh in [affected.name]")
affected.createwound(BRUISE, 20)
+29
View File
@@ -39,6 +39,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_filter_notice("[user] starts patching the damaged vein in [target]'s [affected.name] with \the [tool].") , \
span_filter_notice("You start patching the damaged vein in [target]'s [affected.name] with \the [tool]."))
user.balloon_alert_visible("starts patching the damaged ven in [target]'s [affected.name]", "patching the damaged vein in \the [affected.name]")
target.custom_pain("The pain in [affected.name] is unbearable!", 100)
..()
@@ -46,6 +47,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_notice("[user] has patched the damaged vein in [target]'s [affected.name] with \the [tool]."), \
span_notice("You have patched the damaged vein in [target]'s [affected.name] with \the [tool]."))
user.balloon_alert_visible("patches the damaged vein in [target]'s [affected.name]", "patched the damaged vein in \the [affected.name]")
for(var/datum/wound/W in affected.wounds) if(W.internal)
affected.wounds -= W
@@ -56,6 +58,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_danger("[user]'s hand slips, smearing [tool] in the incision in [target]'s [affected.name]!") , \
span_danger("Your hand slips, smearing [tool] in the incision in [target]'s [affected.name]!"))
user.balloon_alert_visible("slips, smearing [tool] in the incision in [target]'s [affected.name]", "your hand slips, smearing [tool] in the incisiom in [affected.name]")
affected.take_damage(5, 0)
///////////////////////////////////////////////////////////////
@@ -93,6 +96,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_filter_notice("[user] starts cutting away necrotic tissue in [target]'s [affected.name] with \the [tool].") , \
span_filter_notice("You start cutting away necrotic tissue in [target]'s [affected.name] with \the [tool]."))
user.balloon_alert_visible("starts cutting away necrotic tissue in [target]'s [affected.name]", "cutting away necrotic issue in \the [affected.name]")
target.custom_pain("The pain in [affected.name] is unbearable!", 100)
..()
@@ -100,12 +104,14 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_notice("[user] has cut away necrotic tissue in [target]'s [affected.name] with \the [tool]."), \
span_notice("You have cut away necrotic tissue in [target]'s [affected.name] with \the [tool]."))
user.balloon_alert_visible("cuts away necrotic tissue in [target]'s [affected.name]", "cut away necrotic tissue in \the [affected.name]")
affected.open = 3
/datum/surgery_step/fix_dead_tissue/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_danger("[user]'s hand slips, slicing an artery inside [target]'s [affected.name] with \the [tool]!"), \
span_danger("Your hand slips, slicing an artery inside [target]'s [affected.name] with \the [tool]!"))
user.balloon_alert_visible("slips, slicing an artery inside [target]'s [affected.name]", "your hand slips, slicing an artery inside \the [affected.name]")
affected.createwound(CUT, 20, 1)
///////////////////////////////////////////////////////////////
@@ -151,6 +157,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_filter_notice("[user] starts applying medication to the affected tissue in [target]'s [affected.name] with \the [tool].") , \
span_filter_notice("You start applying medication to the affected tissue in [target]'s [affected.name] with \the [tool]."))
user.balloon_alert_visible("starts applying medication to the affected tissue in [target]'s [affected.name]", "applying medication to the affected tissue in \the [affected.name]")
target.custom_pain("Something in your [affected.name] is causing you a lot of pain!", 50)
..()
@@ -169,6 +176,7 @@
user.visible_message(span_notice("[user] applies [trans] units of the solution to affected tissue in [target]'s [affected.name]."), \
span_notice("You apply [trans] units of the solution to affected tissue in [target]'s [affected.name] with \the [tool]."))
user.balloon_alert_visible("applies [trans] units of the solution to affected tissue in [target]'s [affected.name]", "applied [trans] units of the solution to afected tissue in [affected.name]")
/datum/surgery_step/treat_necrosis/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
@@ -182,6 +190,8 @@
user.visible_message(span_danger("[user]'s hand slips, applying [trans] units of the solution to the wrong place in [target]'s [affected.name] with the [tool]!") , \
span_danger("Your hand slips, applying [trans] units of the solution to the wrong place in [target]'s [affected.name] with the [tool]!"))
user.balloon_alert_visible("slips, applying [trans] units of the solution to the wrong place in [target]'s [affected.name]",
"your hand slips, applying [trans] units of the solution to the wrong place in \the [affected.name]")
//no damage or anything, just wastes medicine
@@ -221,6 +231,7 @@
return
user.visible_message(span_filter_notice("[user] starts cutting through the support systems of \the [rig] on [target] with \the [tool].") , \
span_filter_notice("You start cutting through the support systems of \the [rig] on [target] with \the [tool]."))
user.balloon_alert_visible("starts cutting through the support systems of \the [rig] on [target]", "cutting through the support systems of \the [rig] on [target]")
..()
/datum/surgery_step/hardsuit/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
@@ -232,10 +243,12 @@
rig.cut_suit()
user.visible_message(span_notice("[user] has cut through the support systems of \the [rig] on [target] with \the [tool]."), \
span_notice("You have cut through the support systems of \the [rig] on [target] with \the [tool]."))
user.balloon_alert_visible("cuts through the support systems of \the [rig] on [target]", "cut through the support systems of \the [rig]")
/datum/surgery_step/hardsuit/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_danger("[user]'s [tool] can't quite seem to get through the metal..."), \
span_danger("\The [tool] can't quite seem to get through the metal. It's weakening, though - try again."))
user.balloon_alert_visible("[tool] can't quite seem to get through the metal", "\the [tool] can't quite seem to get through the metal.")
///////////////////////////////////////////
// De-Husking Surgery //
@@ -274,11 +287,13 @@
/datum/surgery_step/dehusk/structinitial/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_notice("[user] begins to create a fleshy but rigid looking mesh over gaps in [target]'s flesh with \the [tool]."), \
span_notice("You begin to create a fleshy but rigid looking mesh over gaps in [target]'s flesh with \the [tool]."))
user.balloon_alert_visible("begins to create a fleshy mesh over gaps in [target]'s flesh.", "creating a flesh mesh over gaps")
..()
/datum/surgery_step/dehusk/structinitial/end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_notice("[user] creates a fleshy but rigid looking mesh over gaps in [target]'s flesh with \the [tool]."), \
span_notice("You create a fleshy but rigid looking mesh over gaps in [target]'s flesh with \the [tool]."))
user.balloon_alert_visible("creates a fleshy mesh over gaps in [target]'s flesh", "created a fleshy mesh over gaps in the flesh")
target.op_stage.dehusk = 1
..()
@@ -286,6 +301,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_danger("[user]'s hand slips, and the mesh falls, with \the [tool] scraping [target]'s body."), \
span_danger("Your hand slips, and the mesh falls, with \the [tool] scraping [target]'s body."))
user.balloon_alert_visible("slips, the mesh falls and scrapes [target]'s body", "your hand slips, the mesh falls and scrapes the body")
affected.createwound(CUT, 15)
affected.createwound(BRUISE, 10)
..()
@@ -306,11 +322,13 @@
/datum/surgery_step/dehusk/relocateflesh/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_notice("[user] begins to relocate some of [target]'s flesh with \the [tool], using it to fill in gaps."), \
span_notice("You begin to relocate some of [target]'s flesh with \the [tool], using it to fill in gaps."))
user.balloon_alert_visible("begins relocating [target]'s flesh", "relocating the flesh")
..()
/datum/surgery_step/dehusk/relocateflesh/end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_notice("[user] relocates some of [target]'s flesh with \the [tool], using it to fill in gaps."), \
span_notice("You relocate some of [target]'s flesh with \the [tool], using it to fill in gaps."))
user.balloon_alert_visible("relocates [target]'s flesh", "relocated the flesh")
target.op_stage.dehusk = 2
..()
@@ -318,6 +336,8 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_danger("[user] accidentally rips a massive chunk out of [target]'s flesh with \the [tool], causing massive damage."), \
span_danger("You accidentally rip a massive chunk out of [target]'s flesh with \the [tool], causing massive damage."))
user.balloon_alert_visible("accidentally rips a massive chunk out of [target]'s flesh, causing massive damage",
"you accidentally rip a massive chunk out of the flesh, causing massive damage")
affected.createwound(CUT, 25)
affected.createwound(BRUISE, 10)
..()
@@ -338,14 +358,17 @@
if(istype(tool,/obj/item/surgical/bioregen))
user.visible_message(span_notice("[user] begins to recreate blood vessels and fill in the gaps in [target]'s flesh with \the [tool]."), \
span_notice("You begin to recreate blood vessels and fill in the gaps in [target]'s flesh with \the [tool]."))
user.balloon_alert_visible("begins recreating blood vessels and filing gaps in [target]'s flesh", "recreating blood vessels and filling gaps in the flesh")
else if(istype(tool,/obj/item/surgical/FixOVein))
user.visible_message(span_notice("[user] attempts to recreate blood vessels and fill in the gaps in [target]'s flesh with \the [tool]."), \
span_notice("You attempt to recreate blood vessels and fill in the gaps in [target]'s flesh with \the [tool]."))
user.balloon_alert_visible("attempts to recreate blood vessesl and fill the gaps in [target]'s flesh", "attempting to recreate blood vessels and fill gaps in the flesh")
..()
/datum/surgery_step/dehusk/structfinish/end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_notice("[user] finishes recreating the missing biological structures and filling in gaps in [target]'s flesh with \the [tool]."), \
span_notice("You finish recreating the missing biological structures and filling in gaps in [target]'s flesh with \the [tool]."))
user.balloon_alert_visible("recreates the missing biological structures and gaps in [target]'s flesh", "recreated the missing bological structures and gaps in the flesh")
target.op_stage.dehusk = 0
target.mutations.Remove(HUSK)
target.status_flags &= ~DISFIGURED
@@ -357,9 +380,12 @@
if(istype(tool,/obj/item/surgical/bioregen))
user.visible_message(span_danger("[user]'s hand slips, causing \the [tool] to scrape [target]'s body."), \
span_danger("Your hand slips, causing \the [tool] to scrape [target]'s body."))
user.balloon_alert_visible("slips, scraping [target]'s body", "you slip, scraping the body.")
else if(istype(tool,/obj/item/surgical/FixOVein))
user.visible_message(span_danger("[user] fails to finish the structure over the gaps in [target]'s flesh, doing more damage than good."), \
span_danger("You fail to finish the structure over the gaps in [target]'s flesh, doing more damage than good."))
user.balloon_alert_visible("fails to finish the structure in [target]'s flesh, doing more damage", "you fail to finish the structur, doing more damage")
affected.createwound(CUT, 15)
affected.createwound(BRUISE, 10)
..()
@@ -377,11 +403,13 @@
/datum/surgery_step/internal/detoxify/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_notice("[user] begins to pull toxins from, and restore oxygen to [target]'s musculature and organs with \the [tool]."), \
span_notice("You begin to pull toxins from, and restore oxygen to [target]'s musculature and organs with \the [tool]."))
user.balloon_alert_visible("begins pulling from, and restoring oxygen to [target]'s organs", "pulling toxins from and restoring oxygen to the organs")
..()
/datum/surgery_step/internal/detoxify/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_notice("[user] finishes pulling toxins from, and restoring oxygen to [target]'s musculature and organs with \the [tool]."), \
span_notice("You finish pulling toxins from, and restoring oxygen to [target]'s musculature and organs with \the [tool]."))
user.balloon_alert_visible("finishes pulling toxins and restoring oxygen to [target]'s organs", "pulled toxins from and restored oxygen to the organs")
if(target.toxloss>25)
target.adjustToxLoss(-20)
if(target.oxyloss>25)
@@ -392,6 +420,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_danger("[user]'s hand slips, failing to finish the surgery, and damaging [target] with \the [tool]."), \
span_danger("Your hand slips, failing to finish the surgery, and damaging [target] with \the [tool]."))
user.balloon_alert_visible("slips, failing to finish the surgery and damaging [target]", "your hand slips, failing to finish the surgery and damaging [target]")
affected.createwound(CUT, 15)
affected.createwound(BRUISE, 10)
..()
+44 -3
View File
@@ -52,18 +52,21 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_filter_notice("[user] starts to unscrew the maintenance hatch on [target]'s [affected.name] with \the [tool]."), \
span_filter_notice("You start to unscrew the maintenance hatch on [target]'s [affected.name] with \the [tool]."))
user.balloon_alert_visible("starts to unscrew the maintenance hatch on [target]'s [affected.name]", "unscrewing the maintenance hatch on \the [affected.name]")
..()
/datum/surgery_step/robotics/unscrew_hatch/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_notice("[user] has opened the maintenance hatch on [target]'s [affected.name] with \the [tool]."), \
span_notice("You have opened the maintenance hatch on [target]'s [affected.name] with \the [tool]."),)
user.balloon_alert_visible("opens the maintenance hatch on [target]'s [affected.name]", "maintenance hatch opened on \the [affected.name]")
affected.open = 1
/datum/surgery_step/robotics/unscrew_hatch/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_warning("[user]'s [tool.name] slips, failing to unscrew [target]'s [affected.name]."), \
span_warning("Your [tool] slips, failing to unscrew [target]'s [affected.name]."))
user.balloon_alert_visible("slips, failing to unscrew [target]'s [affected.name]", "your [tool] slips, failing to unscrew \the [affected.name]")
///////////////////////////////////////////////////////////////
// Open Hatch Surgery
@@ -124,19 +127,22 @@
/datum/surgery_step/robotics/open_hatch/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_filter_notice("[user] starts to pry open the maintenance hatch on [target]'s [affected.name] with \the [tool]."),
span_filter_notice("You start to pry open the maintenance hatch on [target]'s [affected.name] with \the [tool]."))
span_filter_notice("You start to pry open the maintenance hatch on [target]'s [affected.name] with \the [tool]."))
user.balloon_alert_visible("starts to pry open the maintenance hatch on [target]'s [affected.name]", "prying open the maintenance hatch on \the [affected.name]")
..()
/datum/surgery_step/robotics/open_hatch/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_notice("[user] opens the maintenance hatch on [target]'s [affected.name] with \the [tool]."), \
span_notice("You open the maintenance hatch on [target]'s [affected.name] with \the [tool]."))
span_notice("You open the maintenance hatch on [target]'s [affected.name] with \the [tool]."))
user.balloon_alert_visible("opens the maintenance hatch on [target]'s [affected.name]", "maintenance hatch on \the [affected.name] open")
affected.open = 3
/datum/surgery_step/robotics/open_hatch/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_warning("[user]'s [tool.name] slips, failing to open the hatch on [target]'s [affected.name]."),
span_warning("Your [tool] slips, failing to open the hatch on [target]'s [affected.name]."))
span_warning("Your [tool] slips, failing to open the hatch on [target]'s [affected.name]."))
user.balloon_alert_visible("slips, failing to open the hatch on [target]'s [affected.name]", "your [tool] slips, fialing to open the hatch on \the [affected.name]")
///////////////////////////////////////////////////////////////
// Close Hatch Surgery
@@ -163,12 +169,14 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_filter_notice("[user] begins to close and secure the hatch on [target]'s [affected.name] with \the [tool].") , \
span_filter_notice("You begin to close and secure the hatch on [target]'s [affected.name] with \the [tool]."))
user.balloon_alert_visible("begins closing and securing the hatch on [target]'s [affected.name]", "closing and securing the hatch on \the [affected.name]")
..()
/datum/surgery_step/robotics/close_hatch/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_notice("[user] closes and secures the hatch on [target]'s [affected.name] with \the [tool]."), \
span_notice("You close and secure the hatch on [target]'s [affected.name] with \the [tool]."))
user.balloon_alert_visible("closes and secures the hatch on [target]'s [affected.name]", "closed and secured the hatch on \the [affected.name]")
affected.open = 0
affected.germ_level = 0
@@ -176,6 +184,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_warning("[user]'s [tool.name] slips, failing to close the hatch on [target]'s [affected.name]."),
span_warning("Your [tool.name] slips, failing to close the hatch on [target]'s [affected.name]."))
user.balloon_alert_visible("[tool.name] slips, failing to close the htach on [target]'s [affected.name]", "[tool.name] slips, failing to close the htach on [target]'s [affected.name]")
///////////////////////////////////////////////////////////////
// Brute Repair Surgery
@@ -204,12 +213,14 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_filter_notice("[user] begins to patch damage to [target]'s [affected.name]'s support structure with \the [tool].") , \
span_filter_notice("You begin to patch damage to [target]'s [affected.name]'s support structure with \the [tool]."))
user.balloon_alert_visible("begins patching damage to [target]'s [affected.name]'s support structure", "beggining to patch damage to \the [affected.name] support structure")
..()
/datum/surgery_step/robotics/repair_brute/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_notice("[user] finishes patching damage to [target]'s [affected.name] with \the [tool]."), \
span_notice("You finish patching damage to [target]'s [affected.name] with \the [tool]."))
user.balloon_alert_visible("finishes patching damage to [target]'s [affected.name]", "patched samage to \the [affected.name]")
affected.heal_damage(rand(30,50),0,1,1)
affected.disfigured = 0
@@ -217,6 +228,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_warning("[user]'s [tool.name] slips, damaging the internal structure of [target]'s [affected.name]."),
span_warning("Your [tool.name] slips, damaging the internal structure of [target]'s [affected.name]."))
user.balloon_alert_visible("slips, damaging the internal structure of [target]'s [affected.name]", "your [tool.name] slips, damaging the internal structure of \the [affected.name]")
target.apply_damage(rand(5,10), BURN, affected)
///////////////////////////////////////////////////////////////
@@ -238,11 +250,13 @@
if(istype(tool, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/C = tool
if(affected.burn_dam == 0)
user.balloon_alert_visible("there are no burnt wires here!")
to_chat(user, span_notice("There are no burnt wires here!"))
return SURGERY_FAILURE
else
if(!C.can_use(5))
to_chat(user, span_danger("You need at least five cable pieces to repair this part.")) //usage amount made more consistent with regular cable repair
user.balloon_alert_visible("You need at least five cable pieces to repair this part.")
return SURGERY_FAILURE
else
C.use(5)
@@ -253,12 +267,14 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_filter_notice("[user] begins to splice new cabling into [target]'s [affected.name].") , \
span_filter_notice("You begin to splice new cabling into [target]'s [affected.name]."))
user.balloon_alert_visible("begins to splice new cabling into [target]'s [affected.name]", "splcing new cabling into \the [affected.name]")
..()
/datum/surgery_step/robotics/repair_burn/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_notice("[user] finishes splicing cable into [target]'s [affected.name]."), \
span_notice("You finishes splicing new cable into [target]'s [affected.name]."))
user.balloon_alert_visible("finishes splicing cable into [target]'s [affected.name]", "finished splicing new cable into [target]'s [affected.name]")
affected.heal_damage(0,rand(30,50),1,1)
affected.disfigured = 0
@@ -266,6 +282,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_warning("[user] causes a short circuit in [target]'s [affected.name]!"),
span_warning("You cause a short circuit in [target]'s [affected.name]!"))
user.balloon_alert_visible("causes a short circuit in [target]'s [affected.name]", "you cause a short circuit in \the [affected.name]")
target.apply_damage(rand(5,10), BURN, affected)
///////////////////////////////////////////////////////////////
@@ -308,6 +325,7 @@
if(I.robotic >= ORGAN_ROBOT)
user.visible_message(span_filter_notice("[user] starts mending the damage to [target]'s [I.name]'s mechanisms."), \
span_filter_notice("You start mending the damage to [target]'s [I.name]'s mechanisms.") )
user.balloon_alert_visible("starts mending the damage to [target]'s [I.name]'s mechanisms.", "mending the damage to \the [I.name]'s mechanism")
target.custom_pain("The pain in your [affected.name] is living hell!",1)
..()
@@ -322,6 +340,7 @@
if(I.robotic >= ORGAN_ROBOT)
user.visible_message(span_notice("[user] repairs [target]'s [I.name] with [tool]."), \
span_notice("You repair [target]'s [I.name] with [tool].") )
user.balloon_alert_visible("repairs [target]'s [I.name]", "repaired \the [I.name]")
I.damage = 0
if(I.organ_tag == O_EYES)
target.sdisabilities &= ~BLIND
@@ -333,6 +352,7 @@
user.visible_message(span_warning("[user]'s hand slips, gumming up the mechanisms inside of [target]'s [affected.name] with \the [tool]!"), \
span_warning("Your hand slips, gumming up the mechanisms inside of [target]'s [affected.name] with \the [tool]!"))
user.balloon_alert_visible("slips, gumming up the mechanisms inside [target]'s [affected.name]", "your hand slips, gumming up the mechanisms inside of \the [affected.name]")
target.adjustToxLoss(5)
affected.createwound(CUT, 5)
@@ -388,11 +408,13 @@
user.visible_message(span_filter_notice("[user] starts to decouple [target]'s [target.op_stage.current_organ] with \the [tool]."), \
span_filter_notice("You start to decouple [target]'s [target.op_stage.current_organ] with \the [tool].") )
user.balloon_alert_visible("starts to decouple [target]'s [target.op_stage.current_organ]", "decoupling \the [target.op_stage.current_organ]")
..()
/datum/surgery_step/robotics/detatch_organ_robotic/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_notice("[user] has decoupled [target]'s [target.op_stage.current_organ] with \the [tool].") , \
span_notice("You have decoupled [target]'s [target.op_stage.current_organ] with \the [tool]."))
user.balloon_alert_visible("decoupled [target]'s [target.op_stage.current_organ]", "decouple \the [target.op_stage.current_organ]")
var/obj/item/organ/internal/I = target.internal_organs_by_name[target.op_stage.current_organ]
if(I && istype(I))
@@ -402,6 +424,7 @@
/datum/surgery_step/robotics/detatch_organ_robotic/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_warning("[user]'s hand slips, disconnecting \the [tool]."), \
span_warning("Your hand slips, disconnecting \the [tool]."))
user.balloon_alert_visible("slips, disconnecting \the [tool]", "your hand slips, disconnecting \the [tool]")
///////////////////////////////////////////////////////////////
// Robot Organ Attaching Surgery
@@ -452,11 +475,13 @@
user.visible_message(span_filter_notice("[user] begins reattaching [target]'s [target.op_stage.current_organ] with \the [tool]."), \
span_filter_notice("You start reattaching [target]'s [target.op_stage.current_organ] with \the [tool]."))
user.balloon_alert_visible("begins reattaching [target]'s [target.op_stage.current_organ]", "reattaching \the [target.op_stage.current_organ]")
..()
/datum/surgery_step/robotics/attach_organ_robotic/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_notice("[user] has reattached [target]'s [target.op_stage.current_organ] with \the [tool].") , \
span_notice("You have reattached [target]'s [target.op_stage.current_organ] with \the [tool]."))
user.balloon_alert_visible("reattaches [target]'s [target.op_stage.current_organ]", "reattached \the [target.op_stage.current_organ]")
var/obj/item/organ/I = target.internal_organs_by_name[target.op_stage.current_organ]
if(I && istype(I))
@@ -466,6 +491,7 @@
/datum/surgery_step/robotics/attach_organ_robotic/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_warning("[user]'s hand slips, disconnecting \the [tool]."), \
span_warning("Your hand slips, disconnecting \the [tool]."))
user.balloon_alert_visible("slips, disconnecting \the [tool]", "your hand slips, disonnectng \the [tool]")
///////////////////////////////////////////////////////////////
// MMI Insertion Surgery
@@ -500,14 +526,17 @@
if(!(affected.robotic >= ORGAN_ROBOT))
to_chat(user, span_danger("You cannot install a computer brain into a meat skull."))
user.balloon_alert(user, "you cannot install a computer brain into a meat skull")
return SURGERY_FAILURE
if(!target.should_have_organ(O_BRAIN))
to_chat(user, span_danger("You're pretty sure [target.species.name_plural] don't normally have a brain."))
user.balloon_alert(user, "you're pertty sure [target.species.name_plural] don't normall have a brain")
return SURGERY_FAILURE
if(!isnull(target.internal_organs[O_BRAIN]))
to_chat(user, span_danger("Your subject already has a brain."))
user.balloon_alert(user, "your subject already has a brain")
return SURGERY_FAILURE
return 1
@@ -516,12 +545,14 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_filter_notice("[user] starts installing \the [tool] into [target]'s [affected.name]."), \
span_filter_notice("You start installing \the [tool] into [target]'s [affected.name]."))
user.balloon_alert_visible("starts installing \the [tool] into [target]'s [affected.name]", "installing \the [tool] into \the [affected.name]")
..()
/datum/surgery_step/robotics/install_mmi/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_notice("[user] has installed \the [tool] into [target]'s [affected.name]."), \
span_notice("You have installed \the [tool] into [target]'s [affected.name]."))
user.balloon_alert_visible("installed \the [tool] into [target]'s [affected.name]", "installed \the [tool] into \the [affected.name]")
var/obj/item/mmi/M = tool
// VOREstation edit begin - Select the proper mmi holder subtype based on the brain inserted
@@ -553,6 +584,7 @@
var/okay = tgui_alert(target,"New name will be '[clean_name]', ok?", "Confirmation",list("Cancel","Ok"))
if(okay == "Ok")
new_name = clean_name
break //ChompEDIT infinite rename bug
new_name = sanitizeName(new_name, allow_numbers = TRUE)
target.name = new_name
@@ -561,6 +593,7 @@
/datum/surgery_step/robotics/install_mmi/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_warning("[user]'s hand slips."), \
span_warning("Your hand slips."))
user.balloon_alert_visible("slips", "your hand slips")
/*
* Install a Diona Nymph into a Nymph Mech
@@ -590,22 +623,27 @@
if(!N.held_mob.client || N.held_mob.stat >= DEAD)
to_chat(user, span_danger("That nymph is not viable."))
user.balloon_alert(user, "that nymph is not viable")
return SURGERY_FAILURE
if(!(affected.robotic >= ORGAN_ROBOT))
to_chat(user, span_danger("You cannot install a nymph into a meat puppet."))
user.balloon_alert(user, "you cannot install a nymph into a meat puppet")
return SURGERY_FAILURE
if(!(affected.model != "Skrellian Exoskeleton"))
to_chat(user, span_danger("You're fairly certain a nymph can't pilot a normal robot."))
user.balloon_alert(user, "you're fairly certain a nymph can't pilot a normal robot")
return SURGERY_FAILURE
if(!target.should_have_organ(O_BRAIN))
to_chat(user, span_danger("You're pretty sure [target.species.name_plural] don't normally have a brain."))
user.balloon_alert(user, "you're pretty sure [target.species.name_plural] don't normall have a brain")
return SURGERY_FAILURE
if(!isnull(target.internal_organs[O_BRAIN]))
to_chat(user, span_danger("Your subject already has a cephalon."))
user.balloon_alert(user, "your subject already has a cephalon")
return SURGERY_FAILURE
return 1
@@ -614,12 +652,14 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_filter_notice("[user] starts setting \the [tool] into [target]'s [affected.name]."), \
span_filter_notice("You start setting \the [tool] into [target]'s [affected.name]."))
user.balloon_alert_visible("starts setting \the [tool] into [target]'s [affected.name]", "setting \the into \the [affected.name]")
..()
/datum/surgery_step/robotics/install_nymph/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message(span_notice("[user] has installed \the [tool] into [target]'s [affected.name]."), \
span_notice("You have installed \the [tool] into [target]'s [affected.name]."))
user.balloon_alert_visible("installed \the [tool] into [target]'s [affected.name]", "installed \the [tool] into \the [affected.name]")
var/obj/item/holder/diona/N = tool
var/obj/item/organ/internal/brain/cephalon/cephalon = new(target, 1)
@@ -655,3 +695,4 @@
/datum/surgery_step/robotics/install_nymph/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message(span_warning("[user]'s hand slips."), \
span_warning("Your hand slips."))
user.balloon_alert_visible("slips", "your hand slips")
+1
View File
@@ -218,6 +218,7 @@
if(!do_mob(user, M, calc_duration * toolspeed, zone, exclusive = TRUE))
success = FALSE
to_chat(user, span_warning("You must remain close to and keep focused on your patient to conduct surgery."))
user.balloon_alert(user, "you must stay focused on your patient!")
if(success)
selected_surgery.end_step(user, M, zone, src)