mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-23 03:57:48 +01:00
Merge branch 'master' into protRig
This commit is contained in:
@@ -187,6 +187,27 @@ Works together with spawning an observer, noted above.
|
||||
|
||||
handle_regular_hud_updates()
|
||||
handle_vision()
|
||||
check_area() //RS Port #658
|
||||
|
||||
//RS Port #658 Start
|
||||
/mob/observer/dead/proc/check_area()
|
||||
if(client?.holder)
|
||||
return
|
||||
if(!isturf(loc))
|
||||
return
|
||||
var/area/A = get_area(src)
|
||||
if(A.block_ghosts)
|
||||
to_chat(src, span_warning("Ghosts can't enter this location."))
|
||||
return_to_spawn()
|
||||
|
||||
/mob/observer/dead/proc/return_to_spawn()
|
||||
if(following)
|
||||
stop_following()
|
||||
var/obj/O = locate("landmark*Observer-Start")
|
||||
if(istype(O))
|
||||
to_chat(src, span_notice("Now teleporting."))
|
||||
forceMove(O.loc)
|
||||
//RS Port #658 End
|
||||
|
||||
/mob/proc/ghostize(var/can_reenter_corpse = 1)
|
||||
if(key)
|
||||
@@ -429,6 +450,14 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
stop_following()
|
||||
return
|
||||
|
||||
//RS Port #658 Start
|
||||
var/area/A = get_area(destination)
|
||||
if(A.block_ghosts)
|
||||
to_chat(src,span_warning("Sorry, that area does not allow ghosts."))
|
||||
if(following)
|
||||
stop_following()
|
||||
return
|
||||
//RS Port #658 End
|
||||
return ..()
|
||||
|
||||
/mob/observer/dead/Move(atom/newloc, direct = 0, movetime)
|
||||
|
||||
@@ -302,7 +302,7 @@
|
||||
else
|
||||
var/datum/language/L = locate(href_list["default_lang"])
|
||||
if(L && (L in languages))
|
||||
set_default_language(L)
|
||||
apply_default_language(L)
|
||||
check_languages()
|
||||
return 1
|
||||
else if(href_list["set_lang_key"])
|
||||
|
||||
@@ -201,8 +201,8 @@
|
||||
/mob/living/bot/cleanbot/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state)
|
||||
if(..())
|
||||
return TRUE
|
||||
usr.set_machine(src)
|
||||
add_fingerprint(usr)
|
||||
ui.user.set_machine(src)
|
||||
add_fingerprint(ui.user)
|
||||
switch(action)
|
||||
if("start")
|
||||
if(on)
|
||||
@@ -222,11 +222,11 @@
|
||||
. = TRUE
|
||||
if("wet_floors")
|
||||
wet_floors = !wet_floors
|
||||
to_chat(usr, span_notice("You twiddle the screw."))
|
||||
to_chat(ui.user, span_notice("You twiddle the screw."))
|
||||
. = TRUE
|
||||
if("spray_blood")
|
||||
spray_blood = !spray_blood
|
||||
to_chat(usr, span_notice("You press the weird button."))
|
||||
to_chat(ui.user, span_notice("You press the weird button."))
|
||||
. = TRUE
|
||||
|
||||
/mob/living/bot/cleanbot/emag_act(var/remaining_uses, var/mob/user)
|
||||
@@ -272,6 +272,6 @@
|
||||
var/t = sanitizeSafe(tgui_input_text(user, "Enter new robot name", name, created_name, MAX_NAME_LEN), MAX_NAME_LEN)
|
||||
if(!t)
|
||||
return
|
||||
if(!in_range(src, usr) && src.loc != usr)
|
||||
if(!in_range(src, user) && src.loc != user)
|
||||
return
|
||||
created_name = t
|
||||
|
||||
@@ -87,15 +87,15 @@
|
||||
switch(action)
|
||||
if("red_switch")
|
||||
red_switch = !red_switch
|
||||
to_chat(usr, span_notice("You flip the red switch [red_switch ? "on" : "off"]."))
|
||||
to_chat(ui.user, span_notice("You flip the red switch [red_switch ? "on" : "off"]."))
|
||||
. = TRUE
|
||||
if("green_switch")
|
||||
green_switch = !green_switch
|
||||
to_chat(usr, span_notice("You flip the green switch [green_switch ? "on" : "off"]."))
|
||||
to_chat(ui.user, span_notice("You flip the green switch [green_switch ? "on" : "off"]."))
|
||||
. = TRUE
|
||||
if("blue_switch")
|
||||
blue_switch = !blue_switch
|
||||
to_chat(usr, span_notice("You flip the blue switch [blue_switch ? "on" : "off"]."))
|
||||
to_chat(ui.user, span_notice("You flip the blue switch [blue_switch ? "on" : "off"]."))
|
||||
. = TRUE
|
||||
|
||||
/mob/living/bot/cleanbot/edCLN/emag_act(var/remaining_uses, var/mob/user)
|
||||
@@ -124,7 +124,7 @@
|
||||
var/t = sanitizeSafe(tgui_input_text(user, "Enter new robot name", name, created_name, MAX_NAME_LEN), MAX_NAME_LEN)
|
||||
if(!t)
|
||||
return
|
||||
if(!in_range(src, usr) && src.loc != usr)
|
||||
if(!in_range(src, user) && src.loc != user)
|
||||
return
|
||||
created_name = t
|
||||
return
|
||||
|
||||
@@ -84,11 +84,11 @@
|
||||
if(..())
|
||||
return TRUE
|
||||
|
||||
add_fingerprint(usr)
|
||||
add_fingerprint(ui.user)
|
||||
|
||||
switch(action)
|
||||
if("power")
|
||||
if(!access_scanner.allowed(usr))
|
||||
if(!access_scanner.allowed(ui.user))
|
||||
return FALSE
|
||||
if(on)
|
||||
turn_off()
|
||||
@@ -413,7 +413,7 @@
|
||||
t = sanitize(t, MAX_NAME_LEN)
|
||||
if(!t)
|
||||
return
|
||||
if(!in_range(src, usr) && loc != usr)
|
||||
if(!in_range(src, user) && loc != user)
|
||||
return
|
||||
|
||||
created_name = t
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
turn_on()
|
||||
. = TRUE
|
||||
|
||||
if(locked && !issilicon(usr))
|
||||
if(locked && !issilicon(ui.user))
|
||||
return
|
||||
|
||||
switch(action)
|
||||
|
||||
@@ -269,20 +269,20 @@
|
||||
if(..())
|
||||
return TRUE
|
||||
|
||||
usr.set_machine(src)
|
||||
add_fingerprint(usr)
|
||||
ui.user.set_machine(src)
|
||||
add_fingerprint(ui.user)
|
||||
|
||||
. = TRUE
|
||||
switch(action)
|
||||
if("power")
|
||||
if(!access_scanner.allowed(usr))
|
||||
if(!access_scanner.allowed(ui.user))
|
||||
return FALSE
|
||||
if(on)
|
||||
turn_off()
|
||||
else
|
||||
turn_on()
|
||||
|
||||
if(locked && !issilicon(usr))
|
||||
if(locked && !issilicon(ui.user))
|
||||
return TRUE
|
||||
|
||||
switch(action)
|
||||
@@ -538,7 +538,7 @@
|
||||
var/t = sanitizeSafe(tgui_input_text(user, "Enter new robot name", name, created_name, MAX_NAME_LEN), MAX_NAME_LEN)
|
||||
if(!t)
|
||||
return
|
||||
if(!in_range(src, usr) && loc != usr)
|
||||
if(!in_range(src, user) && loc != user)
|
||||
return
|
||||
created_name = t
|
||||
else
|
||||
|
||||
@@ -82,43 +82,43 @@
|
||||
data["safety"] = safety
|
||||
return data
|
||||
|
||||
/mob/living/bot/mulebot/tgui_act(action, params)
|
||||
/mob/living/bot/mulebot/tgui_act(action, params, datum/tgui/ui)
|
||||
if(..())
|
||||
return TRUE
|
||||
|
||||
add_fingerprint(usr)
|
||||
add_fingerprint(ui.user)
|
||||
switch(action)
|
||||
if("power")
|
||||
if(on)
|
||||
turn_off()
|
||||
else
|
||||
turn_on()
|
||||
visible_message("[usr] switches [on ? "on" : "off"] [src].")
|
||||
visible_message("[ui.user] switches [on ? "on" : "off"] [src].")
|
||||
. = TRUE
|
||||
|
||||
if("stop")
|
||||
obeyCommand("Stop")
|
||||
obeyCommand(ui.user, "Stop")
|
||||
. = TRUE
|
||||
|
||||
if("go")
|
||||
obeyCommand("GoTD")
|
||||
obeyCommand(ui.user, "GoTD")
|
||||
. = TRUE
|
||||
|
||||
if("home")
|
||||
obeyCommand("Home")
|
||||
obeyCommand(ui.user, "Home")
|
||||
. = TRUE
|
||||
|
||||
if("destination")
|
||||
obeyCommand("SetD")
|
||||
obeyCommand(ui.user, "SetD")
|
||||
. = TRUE
|
||||
|
||||
if("sethome")
|
||||
var/new_dest
|
||||
var/list/beaconlist = GetBeaconList()
|
||||
if(beaconlist.len)
|
||||
new_dest = tgui_input_list(usr, "Select new home tag", "Mulebot [suffix ? "([suffix])" : ""]", beaconlist)
|
||||
new_dest = tgui_input_list(ui.user, "Select new home tag", "Mulebot [suffix ? "([suffix])" : ""]", beaconlist)
|
||||
else
|
||||
tgui_alert_async(usr, "No destination beacons available.")
|
||||
tgui_alert_async(ui.user, "No destination beacons available.")
|
||||
if(new_dest)
|
||||
home = get_turf(beaconlist[new_dest])
|
||||
homeName = new_dest
|
||||
@@ -144,7 +144,7 @@
|
||||
..()
|
||||
update_icons()
|
||||
|
||||
/mob/living/bot/mulebot/proc/obeyCommand(var/command)
|
||||
/mob/living/bot/mulebot/proc/obeyCommand(mob/user, var/command)
|
||||
switch(command)
|
||||
if("Home")
|
||||
resetTarget()
|
||||
@@ -154,9 +154,9 @@
|
||||
var/new_dest
|
||||
var/list/beaconlist = GetBeaconList()
|
||||
if(beaconlist.len)
|
||||
new_dest = tgui_input_list(usr, "Select new destination tag", "Mulebot [suffix ? "([suffix])" : ""]", beaconlist)
|
||||
new_dest = tgui_input_list(user, "Select new destination tag", "Mulebot [suffix ? "([suffix])" : ""]", beaconlist)
|
||||
else
|
||||
tgui_alert_async(usr, "No destination beacons available.")
|
||||
tgui_alert_async(user, "No destination beacons available.")
|
||||
if(new_dest)
|
||||
resetTarget()
|
||||
target = get_turf(beaconlist[new_dest])
|
||||
|
||||
@@ -129,11 +129,11 @@
|
||||
if(..())
|
||||
return
|
||||
|
||||
add_fingerprint(usr)
|
||||
add_fingerprint(ui.user)
|
||||
|
||||
switch(action)
|
||||
if("power")
|
||||
if(!access_scanner.allowed(usr))
|
||||
if(!access_scanner.allowed(ui.user))
|
||||
return FALSE
|
||||
if(on)
|
||||
turn_off()
|
||||
@@ -141,7 +141,7 @@
|
||||
turn_on()
|
||||
. = TRUE
|
||||
|
||||
if(locked && !issilicon(usr))
|
||||
if(locked && !issilicon(ui.user))
|
||||
return TRUE
|
||||
|
||||
switch(action)
|
||||
|
||||
@@ -31,6 +31,13 @@
|
||||
set desc = "Shift yourself out of alignment with realspace to travel quickly to different areas."
|
||||
set category = "Abilities.Shadekin"
|
||||
|
||||
//RS Port #658 Start
|
||||
var/area/A = get_area(src)
|
||||
if(!client?.holder && A.block_phase_shift)
|
||||
to_chat(src, span_warning("You can't do that here!"))
|
||||
return
|
||||
//RS Port #658 End
|
||||
|
||||
var/ability_cost = 100
|
||||
|
||||
var/darkness = 1
|
||||
@@ -76,19 +83,30 @@
|
||||
to_chat(src,span_warning("You can't use that here!"))
|
||||
return FALSE
|
||||
|
||||
forceMove(T)
|
||||
var/original_canmove = canmove
|
||||
SetStunned(0)
|
||||
SetWeakened(0)
|
||||
if(buckled)
|
||||
buckled.unbuckle_mob()
|
||||
if(pulledby)
|
||||
pulledby.stop_pulling()
|
||||
stop_pulling()
|
||||
canmove = FALSE
|
||||
|
||||
//Shifting in
|
||||
if(ability_flags & AB_PHASE_SHIFTED)
|
||||
phase_in(T)
|
||||
//Shifting out
|
||||
else
|
||||
phase_out(T)
|
||||
|
||||
|
||||
/mob/living/carbon/human/proc/phase_in(var/turf/T)
|
||||
if(ability_flags & AB_PHASE_SHIFTED)
|
||||
|
||||
// pre-change
|
||||
forceMove(T)
|
||||
var/original_canmove = canmove
|
||||
SetStunned(0)
|
||||
SetWeakened(0)
|
||||
if(buckled)
|
||||
buckled.unbuckle_mob()
|
||||
if(pulledby)
|
||||
pulledby.stop_pulling()
|
||||
stop_pulling()
|
||||
|
||||
// change
|
||||
canmove = FALSE
|
||||
ability_flags &= ~AB_PHASE_SHIFTED
|
||||
ability_flags |= AB_PHASE_SHIFTING
|
||||
mouse_opacity = 1
|
||||
@@ -137,8 +155,22 @@
|
||||
L.broken()
|
||||
else
|
||||
L.flicker(10)
|
||||
//Shifting out
|
||||
else
|
||||
|
||||
/mob/living/carbon/human/proc/phase_out(var/turf/T)
|
||||
if(!(ability_flags & AB_PHASE_SHIFTED))
|
||||
// pre-change
|
||||
forceMove(T)
|
||||
var/original_canmove = canmove
|
||||
SetStunned(0)
|
||||
SetWeakened(0)
|
||||
if(buckled)
|
||||
buckled.unbuckle_mob()
|
||||
if(pulledby)
|
||||
pulledby.stop_pulling()
|
||||
stop_pulling()
|
||||
canmove = FALSE
|
||||
|
||||
// change
|
||||
ability_flags |= AB_PHASE_SHIFTED
|
||||
ability_flags |= AB_PHASE_SHIFTING
|
||||
mouse_opacity = 0
|
||||
|
||||
@@ -309,7 +309,7 @@
|
||||
|
||||
last_special = world.time + 25
|
||||
|
||||
var/new_skin = input(usr, "Please select a new body color.", "Shapeshifter Colour", color) as null|color
|
||||
var/new_skin = input(src, "Please select a new body color.", "Shapeshifter Colour", color) as null|color
|
||||
if(!new_skin)
|
||||
return
|
||||
color = new_skin
|
||||
|
||||
@@ -306,7 +306,7 @@
|
||||
to_chat(src,span_warning("You must be awake and standing to perform this action!"))
|
||||
return
|
||||
|
||||
var/new_species = tgui_input_list(usr, "Please select a species to emulate.", "Shapeshifter Body", list(species?.vanity_base_fit)|species?.get_valid_shapeshifter_forms())
|
||||
var/new_species = tgui_input_list(src, "Please select a species to emulate.", "Shapeshifter Body", list(species?.vanity_base_fit)|species?.get_valid_shapeshifter_forms())
|
||||
if(new_species)
|
||||
species?.base_species = new_species // Really though you better have a species
|
||||
regenerate_icons() //Expensive, but we need to recrunch all the icons we're wearing
|
||||
|
||||
+14
-14
@@ -4,15 +4,15 @@
|
||||
|
||||
// Sanity is mostly handled in chimera_regenerate()
|
||||
if(stat == DEAD)
|
||||
var/confirm = tgui_alert(usr, "Are you sure you want to regenerate your corpse? This process can take up to thirty minutes.", "Confirm Regeneration", list("Yes", "No"))
|
||||
var/confirm = tgui_alert(src, "Are you sure you want to regenerate your corpse? This process can take up to thirty minutes.", "Confirm Regeneration", list("Yes", "No"))
|
||||
if(confirm == "Yes")
|
||||
chimera_regenerate()
|
||||
else if (quickcheckuninjured())
|
||||
var/confirm = tgui_alert(usr, "Are you sure you want to regenerate? As you are uninjured this will only take 30 seconds and match your appearance to your character slot.", "Confirm Regeneration", list("Yes", "No"))
|
||||
var/confirm = tgui_alert(src, "Are you sure you want to regenerate? As you are uninjured this will only take 30 seconds and match your appearance to your character slot.", "Confirm Regeneration", list("Yes", "No"))
|
||||
if(confirm == "Yes")
|
||||
chimera_regenerate()
|
||||
else
|
||||
var/confirm = tgui_alert(usr, "Are you sure you want to completely reconstruct your form? This process can take up to fifteen minutes, depending on how hungry you are, and you will be unable to move.", "Confirm Regeneration", list("Yes", "No"))
|
||||
var/confirm = tgui_alert(src, "Are you sure you want to completely reconstruct your form? This process can take up to fifteen minutes, depending on how hungry you are, and you will be unable to move.", "Confirm Regeneration", list("Yes", "No"))
|
||||
if(confirm == "Yes")
|
||||
chimera_regenerate()
|
||||
|
||||
@@ -113,7 +113,7 @@
|
||||
remove_verb(src, /mob/living/carbon/human/proc/hatch)
|
||||
return
|
||||
|
||||
var/confirm = tgui_alert(usr, "Are you sure you want to hatch right now? This will be very obvious to anyone in view.", "Confirm Regeneration", list("Yes", "No"))
|
||||
var/confirm = tgui_alert(src, "Are you sure you want to hatch right now? This will be very obvious to anyone in view.", "Confirm Regeneration", list("Yes", "No"))
|
||||
if(confirm == "Yes")
|
||||
|
||||
//Dead when hatching
|
||||
@@ -830,13 +830,13 @@
|
||||
if(!T_ext) //Picking something here is critical.
|
||||
return
|
||||
if(T_ext.vital)
|
||||
if(tgui_alert(usr, "Are you sure you wish to severely damage their [T_ext]? It will likely kill [T]...","Shred Limb",list("Yes", "No")) != "Yes")
|
||||
if(tgui_alert(src, "Are you sure you wish to severely damage their [T_ext]? It will likely kill [T]...","Shred Limb",list("Yes", "No")) != "Yes")
|
||||
return //If they reconsider, don't continue.
|
||||
|
||||
//Any internal organ, if there are any
|
||||
var/obj/item/organ/internal/T_int = tgui_input_list(src,"Do you wish to severely damage an internal organ, as well? If not, click 'cancel'", "Organ Choice", T_ext.internal_organs)
|
||||
if(T_int && T_int.vital)
|
||||
if(tgui_alert(usr, "Are you sure you wish to severely damage their [T_int]? It will likely kill [T]...","Shred Limb",list("Yes", "No")) != "Yes")
|
||||
if(tgui_alert(src, "Are you sure you wish to severely damage their [T_int]? It will likely kill [T]...","Shred Limb",list("Yes", "No")) != "Yes")
|
||||
return //If they reconsider, don't continue.
|
||||
|
||||
//And a belly, if they want
|
||||
@@ -1112,7 +1112,7 @@
|
||||
to_chat(src, span_warning("You are not a weaver! How are you doing this? Tell a developer!"))
|
||||
return
|
||||
|
||||
var/new_silk_color = input(usr, "Pick a color for your woven products:","Silk Color", species.silk_color) as null|color
|
||||
var/new_silk_color = input(src, "Pick a color for your woven products:","Silk Color", species.silk_color) as null|color
|
||||
if(new_silk_color)
|
||||
species.silk_color = new_silk_color
|
||||
|
||||
@@ -1274,11 +1274,11 @@
|
||||
return
|
||||
|
||||
if(choice == "Color") //Easy way to set color so we don't bloat up the menu with even more buttons.
|
||||
var/new_color = input(usr, "Choose a color to set your appendage to!", "", appendage_color) as color|null
|
||||
var/new_color = input(src, "Choose a color to set your appendage to!", "", appendage_color) as color|null
|
||||
if(new_color)
|
||||
appendage_color = new_color
|
||||
if(choice == "Functionality") //Easy way to set color so we don't bloat up the menu with even more buttons.
|
||||
var/choice2 = tgui_alert(usr, "Choose if you want to be pulled to the target or pull them to you!", "Functionality Setting", list("Pull target to self", "Pull self to target"))
|
||||
var/choice2 = tgui_alert(src, "Choose if you want to be pulled to the target or pull them to you!", "Functionality Setting", list("Pull target to self", "Pull self to target"))
|
||||
if(!choice2)
|
||||
return
|
||||
if(choice2 == "Pull target to self")
|
||||
@@ -1564,19 +1564,19 @@
|
||||
return
|
||||
|
||||
if(choice == "Change reagent")
|
||||
var/reagent_choice = tgui_input_list(usr, "Choose which reagent to inject!", "Select reagent", trait_injection_reagents)
|
||||
var/reagent_choice = tgui_input_list(src, "Choose which reagent to inject!", "Select reagent", trait_injection_reagents)
|
||||
if(reagent_choice)
|
||||
trait_injection_selected = reagent_choice
|
||||
to_chat(src, span_notice("You prepare to inject [trait_injection_amount] units of [trait_injection_selected ? "[trait_injection_selected]" : "...nothing. Select a reagent before trying to inject anything."]"))
|
||||
return
|
||||
if(choice == "Change amount")
|
||||
var/amount_choice = tgui_input_number(usr, "How much of the reagent do you want to inject? (Up to 5 units) (Can select 0 for a bite that doesn't inject venom!)", "How much?", trait_injection_amount, 5, 0, round_value = FALSE)
|
||||
var/amount_choice = tgui_input_number(src, "How much of the reagent do you want to inject? (Up to 5 units) (Can select 0 for a bite that doesn't inject venom!)", "How much?", trait_injection_amount, 5, 0, round_value = FALSE)
|
||||
if(amount_choice >= 0)
|
||||
trait_injection_amount = amount_choice
|
||||
to_chat(src, span_notice("You prepare to inject [trait_injection_amount] units of [trait_injection_selected ? "[trait_injection_selected]" : "...nothing. Select a reagent before trying to inject anything."]"))
|
||||
return
|
||||
if(choice == "Change verb")
|
||||
var/verb_choice = tgui_input_text(usr, "Choose the percieved manner of injection, such as 'bites' or 'stings', don't be misleading or abusive. This will show up in game as ('X' 'Verb' 'Y'. Example: X bites Y.)", "How are you injecting?", trait_injection_verb, max_length = 60) //Whoaa there cowboy don't put a novel in there.
|
||||
var/verb_choice = tgui_input_text(src, "Choose the percieved manner of injection, such as 'bites' or 'stings', don't be misleading or abusive. This will show up in game as ('X' 'Verb' 'Y'. Example: X bites Y.)", "How are you injecting?", trait_injection_verb, max_length = 60) //Whoaa there cowboy don't put a novel in there.
|
||||
if(verb_choice)
|
||||
trait_injection_verb = verb_choice
|
||||
to_chat(src, span_notice("You will [trait_injection_verb] your targets."))
|
||||
@@ -1611,7 +1611,7 @@
|
||||
You can also bite synthetics, but due to how synths work, they won't have anything injected into them.
|
||||
<br>
|
||||
"}
|
||||
usr << browse(output,"window=chemicalrefresher")
|
||||
src << browse(output,"window=chemicalrefresher")
|
||||
return
|
||||
else
|
||||
var/list/targets = list() //IF IT IS NOT BROKEN. DO NOT FIX IT. AND KEEP COPYPASTING IT (Pointing Rick Dalton: "That's my code!" ~CL)
|
||||
@@ -1657,7 +1657,7 @@
|
||||
add_attack_logs(src,target,"Injection trait ([trait_injection_selected], [trait_injection_amount])")
|
||||
if(target.reagents && (trait_injection_amount > 0) && !synth)
|
||||
target.reagents.add_reagent(trait_injection_selected, trait_injection_amount)
|
||||
var/ourmsg = "[usr] [trait_injection_verb] [target] "
|
||||
var/ourmsg = "[src] [trait_injection_verb] [target] "
|
||||
switch(zone_sel.selecting)
|
||||
if(BP_HEAD)
|
||||
ourmsg += "on the head!"
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
toggle_sensors(user)
|
||||
return
|
||||
if("internals")
|
||||
visible_message(span_danger("\The [usr] is trying to set \the [src]'s internals!"))
|
||||
visible_message(span_danger("\The [user] is trying to set \the [src]'s internals!"))
|
||||
if(do_after(user,HUMAN_STRIP_DELAY,src))
|
||||
toggle_internals(user)
|
||||
return
|
||||
@@ -38,7 +38,7 @@
|
||||
var/obj/item/clothing/accessory/A = suit.accessories[1]
|
||||
if(!istype(A))
|
||||
return
|
||||
visible_message(span_danger("\The [usr] is trying to remove \the [src]'s [A.name]!"))
|
||||
visible_message(span_danger("\The [user] is trying to remove \the [src]'s [A.name]!"))
|
||||
|
||||
if(!do_after(user,HUMAN_STRIP_DELAY,src))
|
||||
return
|
||||
|
||||
@@ -305,7 +305,7 @@
|
||||
|
||||
switch(action)
|
||||
if("targetSlot")
|
||||
H.handle_strip(params["slot"], usr)
|
||||
H.handle_strip(params["slot"], ui.user)
|
||||
return TRUE
|
||||
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
return data
|
||||
|
||||
/datum/pai_software/directives/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state)
|
||||
var/mob/living/silicon/pai/P = usr
|
||||
var/mob/living/silicon/pai/P = ui.user
|
||||
if(!istype(P))
|
||||
return TRUE
|
||||
if(..())
|
||||
@@ -160,7 +160,7 @@
|
||||
|
||||
/datum/pai_software/med_records/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state)
|
||||
. = ..()
|
||||
var/mob/living/silicon/pai/P = usr
|
||||
var/mob/living/silicon/pai/P = ui.user
|
||||
if(!istype(P))
|
||||
return
|
||||
|
||||
@@ -216,7 +216,7 @@
|
||||
|
||||
/datum/pai_software/sec_records/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state)
|
||||
. = ..()
|
||||
var/mob/living/silicon/pai/P = usr
|
||||
var/mob/living/silicon/pai/P = ui.user
|
||||
if(!istype(P))
|
||||
return
|
||||
|
||||
@@ -267,7 +267,7 @@
|
||||
return data
|
||||
|
||||
/datum/pai_software/door_jack/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state)
|
||||
var/mob/living/silicon/pai/P = usr
|
||||
var/mob/living/silicon/pai/P = ui.user
|
||||
if(!istype(P) || ..())
|
||||
return TRUE
|
||||
|
||||
@@ -482,7 +482,7 @@
|
||||
if(..())
|
||||
return TRUE
|
||||
|
||||
var/mob/living/silicon/pai/user = usr
|
||||
var/mob/living/silicon/pai/user = ui.user
|
||||
if(istype(user))
|
||||
var/obj/item/radio/integrated/signal/R = user.sradio
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
|
||||
return data
|
||||
|
||||
/obj/machinery/computer/drone_control/tgui_act(action, params)
|
||||
/obj/machinery/computer/drone_control/tgui_act(action, params, datum/tgui/ui)
|
||||
if(..())
|
||||
return TRUE
|
||||
|
||||
@@ -75,10 +75,10 @@
|
||||
return
|
||||
|
||||
drone_call_area = t_area
|
||||
to_chat(usr, span_notice("You set the area selector to [drone_call_area]."))
|
||||
to_chat(ui.user, span_notice("You set the area selector to [drone_call_area]."))
|
||||
|
||||
if("ping")
|
||||
to_chat(usr, span_notice("You issue a maintenance request for all active drones, highlighting [drone_call_area]."))
|
||||
to_chat(ui.user, span_notice("You issue a maintenance request for all active drones, highlighting [drone_call_area]."))
|
||||
for(var/mob/living/silicon/robot/drone/D in player_list)
|
||||
if(D.stat == 0)
|
||||
to_chat(D, "-- Maintenance drone presence requested in: [drone_call_area].")
|
||||
@@ -87,16 +87,16 @@
|
||||
var/mob/living/silicon/robot/drone/D = locate(params["ref"])
|
||||
|
||||
if(D.stat != 2)
|
||||
to_chat(usr, span_danger("You issue a law synchronization directive for the drone."))
|
||||
to_chat(ui.user, span_danger("You issue a law synchronization directive for the drone."))
|
||||
D.law_resync()
|
||||
|
||||
if("shutdown")
|
||||
var/mob/living/silicon/robot/drone/D = locate(params["ref"])
|
||||
|
||||
if(D.stat != 2)
|
||||
to_chat(usr, span_danger("You issue a kill command for the unfortunate drone."))
|
||||
message_admins("[key_name_admin(usr)] issued kill order for drone [key_name_admin(D)] from control console.")
|
||||
log_game("[key_name(usr)] issued kill order for [key_name(src)] from control console.")
|
||||
to_chat(ui.user, span_danger("You issue a kill command for the unfortunate drone."))
|
||||
message_admins("[key_name_admin(ui.user)] issued kill order for drone [key_name_admin(D)] from control console.")
|
||||
log_game("[key_name(ui.user)] issued kill order for [key_name(src)] from control console.")
|
||||
D.shut_down()
|
||||
|
||||
if("search_fab")
|
||||
@@ -108,10 +108,10 @@
|
||||
continue
|
||||
|
||||
dronefab = fab
|
||||
to_chat(usr, span_notice("Drone fabricator located."))
|
||||
to_chat(ui.user, span_notice("Drone fabricator located."))
|
||||
return
|
||||
|
||||
to_chat(usr, span_danger("Unable to locate drone fabricator."))
|
||||
to_chat(ui.user, span_danger("Unable to locate drone fabricator."))
|
||||
|
||||
if("toggle_fab")
|
||||
if(!dronefab)
|
||||
@@ -119,8 +119,8 @@
|
||||
|
||||
if(get_dist(src,dronefab) > 3)
|
||||
dronefab = null
|
||||
to_chat(usr, span_danger("Unable to locate drone fabricator."))
|
||||
to_chat(ui.user, span_danger("Unable to locate drone fabricator."))
|
||||
return
|
||||
|
||||
dronefab.produce_drones = !dronefab.produce_drones
|
||||
to_chat(usr, span_notice("You [dronefab.produce_drones ? "enable" : "disable"] drone production in the nearby fabricator."))
|
||||
to_chat(ui.user, span_notice("You [dronefab.produce_drones ? "enable" : "disable"] drone production in the nearby fabricator."))
|
||||
|
||||
@@ -108,7 +108,7 @@
|
||||
|
||||
return data
|
||||
|
||||
/datum/tgui_module/robot_ui/tgui_act(action, params)
|
||||
/datum/tgui_module/robot_ui/tgui_act(action, params, datum/tgui/ui)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
@@ -130,13 +130,13 @@
|
||||
if(istype(C))
|
||||
C.toggled = !C.toggled
|
||||
if(C.toggled)
|
||||
to_chat(usr, span_notice("You enable [C]."))
|
||||
to_chat(ui.user, span_notice("You enable [C]."))
|
||||
else
|
||||
to_chat(usr, span_warning("You disable [C]."))
|
||||
to_chat(ui.user, span_warning("You disable [C]."))
|
||||
. = TRUE
|
||||
if("toggle_module")
|
||||
if(R.weapon_lock)
|
||||
to_chat(usr, span_danger("Error: Modules locked."))
|
||||
to_chat(ui.user, span_danger("Error: Modules locked."))
|
||||
return
|
||||
var/obj/item/module = locate(params["ref"])
|
||||
if(istype(module))
|
||||
|
||||
@@ -1,23 +1,39 @@
|
||||
// Phase shifting procs (and related procs)
|
||||
/mob/living/simple_mob/shadekin/proc/phase_shift()
|
||||
var/turf/T = get_turf(src)
|
||||
var/area/A = T.loc //RS Port #658
|
||||
if(!T.CanPass(src,T) || loc != T)
|
||||
to_chat(src,span_warning("You can't use that here!"))
|
||||
return FALSE
|
||||
|
||||
forceMove(T)
|
||||
var/original_canmove = canmove
|
||||
SetStunned(0)
|
||||
SetWeakened(0)
|
||||
if(buckled)
|
||||
buckled.unbuckle_mob()
|
||||
if(pulledby)
|
||||
pulledby.stop_pulling()
|
||||
stop_pulling()
|
||||
canmove = FALSE
|
||||
//RS Port #658 Start
|
||||
if(!client?.holder && A.block_phase_shift)
|
||||
to_chat(src,span_warning("You can't use that here!"))
|
||||
return FALSE
|
||||
//RS Port #658 End
|
||||
|
||||
//Shifting in
|
||||
if(ability_flags & AB_PHASE_SHIFTED)
|
||||
phase_in(T)
|
||||
//Shifting out
|
||||
else
|
||||
phase_out(T)
|
||||
|
||||
/mob/living/simple_mob/shadekin/proc/phase_in(var/turf/T)
|
||||
if(ability_flags & AB_PHASE_SHIFTED)
|
||||
|
||||
// pre-change
|
||||
forceMove(T)
|
||||
var/original_canmove = canmove
|
||||
SetStunned(0)
|
||||
SetWeakened(0)
|
||||
if(buckled)
|
||||
buckled.unbuckle_mob()
|
||||
if(pulledby)
|
||||
pulledby.stop_pulling()
|
||||
stop_pulling()
|
||||
canmove = FALSE
|
||||
|
||||
// change
|
||||
ability_flags &= ~AB_PHASE_SHIFTED
|
||||
mouse_opacity = 1
|
||||
name = real_name
|
||||
@@ -67,8 +83,22 @@
|
||||
else
|
||||
L.flicker(10)
|
||||
|
||||
//Shifting out
|
||||
else
|
||||
/mob/living/simple_mob/shadekin/proc/phase_out(var/turf/T)
|
||||
if(!(ability_flags & AB_PHASE_SHIFTED))
|
||||
|
||||
// pre-change
|
||||
forceMove(T)
|
||||
var/original_canmove = canmove
|
||||
SetStunned(0)
|
||||
SetWeakened(0)
|
||||
if(buckled)
|
||||
buckled.unbuckle_mob()
|
||||
if(pulledby)
|
||||
pulledby.stop_pulling()
|
||||
stop_pulling()
|
||||
canmove = FALSE
|
||||
|
||||
// change
|
||||
ability_flags |= AB_PHASE_SHIFTED
|
||||
mouse_opacity = 0
|
||||
custom_emote(1,"phases out!")
|
||||
|
||||
@@ -350,14 +350,27 @@
|
||||
switch(mob.incorporeal_move)
|
||||
if(1)
|
||||
var/turf/T = get_step(mob, direct)
|
||||
var/area/A = T.loc //RS Port #658
|
||||
if(!T)
|
||||
return
|
||||
if(mob.check_holy(T))
|
||||
to_chat(mob, span_warning("You cannot get past holy grounds while you are in this plane of existence!"))
|
||||
return
|
||||
else
|
||||
mob.forceMove(get_step(mob, direct))
|
||||
mob.dir = direct
|
||||
//RS Port #658 Start
|
||||
if(!holder)
|
||||
if(isliving(mob) && A.block_phase_shift)
|
||||
to_chat(mob, span_warning("Something blocks you from entering this location while phased out."))
|
||||
return
|
||||
if(isobserver(mob) && A.block_ghosts)
|
||||
to_chat(mob, span_warning("Ghosts can't enter this location."))
|
||||
var/area/our_area = mobloc.loc
|
||||
if(our_area.block_ghosts)
|
||||
var/mob/observer/dead/D = mob
|
||||
D.return_to_spawn()
|
||||
return
|
||||
mob.forceMove(get_step(mob, direct))
|
||||
mob.dir = direct
|
||||
//RS Port #658 End
|
||||
if(2)
|
||||
if(prob(50))
|
||||
var/locx
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
set name = "Say"
|
||||
set category = "IC.Chat"
|
||||
set hidden = 1
|
||||
set instant = TRUE
|
||||
|
||||
//VOREStation Addition Start
|
||||
if(forced_psay)
|
||||
psay(message)
|
||||
@@ -24,7 +26,10 @@
|
||||
//VOREStation Addition End
|
||||
|
||||
client?.stop_thinking()
|
||||
usr.say(message)
|
||||
//queue this message because verbs are scheduled to process after SendMaps in the tick and speech is pretty expensive when it happens.
|
||||
//by queuing this for next tick the mc can compensate for its cost instead of having speech delay the start of the next tick
|
||||
if(message)
|
||||
QUEUE_OR_CALL_VERB_FOR(VERB_CALLBACK(src, TYPE_PROC_REF(/mob, say), message), SSspeech_controller)
|
||||
|
||||
/mob/verb/me_verb(message as message)
|
||||
set name = "Me"
|
||||
|
||||
Reference in New Issue
Block a user