mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-20 19:44:46 +01:00
Makes uses of do_after sane (#18334)
* Prevents insta-actions * Do_after sanity NOTE: NUKE do_after_action * Update bonfire.dm * The rest of them Also fixes a tpyo * no minitest :) * . * . * Gets rid of the slowdown for now --------- Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
@@ -20,7 +20,7 @@
|
||||
user.visible_message("<span class='[class]'>[user] holds \the [P] up to \the [src], it looks like [TU.hes] trying to burn it!</span>", \
|
||||
"<span class='[class]'>You hold \the [P] up to \the [src], burning it slowly.</span>")
|
||||
|
||||
if(do_after(user, 2 SECONDS, src) && P.lit)
|
||||
if(do_after(user, 2 SECONDS, target = src) && P.lit)
|
||||
user.visible_message("<span class='[class]'>[user] burns right through \the [src], turning it to ash. It flutters through the air before settling on the floor in a heap.</span>", \
|
||||
"<span class='[class]'>You burn right through \the [src], turning it to ash. It flutters through the air before settling on the floor in a heap.</span>")
|
||||
|
||||
|
||||
@@ -1543,7 +1543,7 @@
|
||||
//set the verb based on matching (or mismatching) outfits, and teleport the flag back to base if it was touched by the owning team
|
||||
if(grabbing_team == laser_team)
|
||||
user.visible_message(span_warning("[user] is returning \the [src]!"))
|
||||
if(do_after(user,flag_return_delay)) //channel return, rather than instant
|
||||
if(do_after(user, flag_return_delay, target = src)) //channel return, rather than instant
|
||||
user.drop_from_inventory(src)
|
||||
src.loc = src.start_pos
|
||||
GLOB.global_announcer.autosay("[capitalize(laser_team)] flag returned by [user]!","Laserdome Announcer","Entertainment")
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
else
|
||||
user.visible_message("[user] begins securing \the [src] to the floor.", "You start securing \the [src] to the floor.")
|
||||
|
||||
if(do_after(user, 20 * W.toolspeed))
|
||||
if(do_after(user, 2 SECONDS * W.toolspeed, target = src))
|
||||
if(!src) return
|
||||
to_chat(user, span_notice("You [anchored? "un" : ""]secured \the [src]!"))
|
||||
anchored = !anchored
|
||||
@@ -298,7 +298,7 @@
|
||||
else
|
||||
user.visible_message("[user] begins securing \the [src] to the floor.", "You start securing \the [src] to the floor.")
|
||||
|
||||
if(do_after(user, 20 * W.toolspeed))
|
||||
if(do_after(user, 2 SECONDS * W.toolspeed, target = src))
|
||||
if(!src) return
|
||||
to_chat(user, span_notice("You [anchored? "un" : ""]secured \the [src]!"))
|
||||
anchored = !anchored
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
busy_bank = FALSE
|
||||
icon_state = "item_bank"
|
||||
return
|
||||
else if(!do_after(user, 10 SECONDS, src) || inoperable())
|
||||
else if(!do_after(user, 10 SECONDS, target = src) || inoperable())
|
||||
busy_bank = FALSE
|
||||
icon_state = "item_bank"
|
||||
return
|
||||
@@ -145,7 +145,7 @@
|
||||
return
|
||||
user.visible_message(span_notice("\The [user] begins storing \the [O] in \the [src]."),span_notice("You begin storing \the [O] in \the [src]."))
|
||||
icon_state = "item_bank_o"
|
||||
if(!do_after(user, 10 SECONDS, src) || inoperable())
|
||||
if(!do_after(user, 10 SECONDS, target = src) || inoperable())
|
||||
busy_bank = FALSE
|
||||
icon_state = "item_bank"
|
||||
return
|
||||
|
||||
@@ -870,7 +870,7 @@
|
||||
return
|
||||
if(!istype(macro))
|
||||
to_chat(micro, span_notice("You start to climb out of [src]!"))
|
||||
if(do_after(micro, 50, src))
|
||||
if(do_after(micro, 5 SECONDS, target = src))
|
||||
to_chat(micro, span_notice("You climb out of [src]!"))
|
||||
micro.forceMove(loc)
|
||||
return
|
||||
@@ -885,7 +885,7 @@
|
||||
|
||||
to_chat(micro, span_notice("[escape_message_micro]"))
|
||||
to_chat(macro, span_danger("[escape_message_macro]"))
|
||||
if(!do_after(micro, escape_time, macro))
|
||||
if(!do_after(micro, escape_time, target = macro))
|
||||
to_chat(micro, span_danger("You're pinned underfoot!"))
|
||||
to_chat(macro, span_danger("You pin the escapee underfoot!"))
|
||||
return
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
to_chat(user, span_warning("You need to build a prescription from someone first! Use the kit on someone."))
|
||||
return
|
||||
|
||||
if(do_after(user,5 SECONDS))
|
||||
if(do_after(user, 5 SECONDS, target = target))
|
||||
G.prescribe(user)
|
||||
scrip_loaded = 0
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
return
|
||||
|
||||
T.visible_message("[user] begins making measurements for prescription lenses for [target].","[user] begins measuring your eyes. Hold still!")
|
||||
if(do_after(user,5 SECONDS,T))
|
||||
if(do_after(user, 5 SECONDS, target = T))
|
||||
T.flash_eyes()
|
||||
scrip_loaded = 1
|
||||
T.visible_message("[user] finishes making prescription lenses for [target].",span_warning("Gah, that's bright!"))
|
||||
|
||||
@@ -85,6 +85,6 @@
|
||||
return 1
|
||||
|
||||
/obj/item/clothing/gloves/sterile/thieves/Touch(var/atom/A, var/proximity)
|
||||
if(proximity && ishuman(usr) && do_after(usr, 1 SECOND, A))
|
||||
if(proximity && ishuman(usr) && do_after(usr, 1 SECOND, target = A))
|
||||
return pickpocket(usr, A, proximity)
|
||||
return 0
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
|
||||
to_chat(user, "You start mending the damaged portions of \the [src]...")
|
||||
|
||||
if(!do_after(user,30) || !W || !src)
|
||||
if(!do_after(user, 3 SECONDS, target = src) || !W || !src)
|
||||
return
|
||||
|
||||
var/obj/item/stack/nanopaste/paste = W
|
||||
@@ -100,7 +100,7 @@
|
||||
return
|
||||
|
||||
to_chat(user, "You start mending the damaged portions of \the [src]...")
|
||||
if(!do_after(user,30) || !W || !src)
|
||||
if(!do_after(user, 3 SECONDS, target = src) || !W || !src)
|
||||
return
|
||||
|
||||
damage = 1
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
return 0
|
||||
|
||||
H.visible_message(span_warning("[H] begins overriding the airlock!"),span_notice("You begin overriding the airlock!"))
|
||||
if(do_after(H,6 SECONDS,A) && A.density)
|
||||
if(do_after(H, 6 SECONDS, target = A) && A.density)
|
||||
A.open()
|
||||
|
||||
var/username = FindNameFromID(H) || "Unknown"
|
||||
|
||||
@@ -319,7 +319,7 @@
|
||||
|
||||
if(!instant)
|
||||
M.visible_message(span_notice("[M]'s suit emits a quiet hum as it begins to adjust its seals."),span_notice("With a quiet hum, the suit begins running checks and adjusting components."))
|
||||
if(seal_delay && !do_after(M,seal_delay))
|
||||
if(seal_delay && !do_after(M, seal_delay, target = src))
|
||||
if(M)
|
||||
to_chat(M, span_warning("You must remain still while the suit is adjusting the components."))
|
||||
playsound(src, 'sound/machines/rig/rigerror.ogg', 20, FALSE)
|
||||
@@ -345,7 +345,7 @@
|
||||
|
||||
if(!failed_to_seal && (M.back == src || M.belt == src) && piece == compare_piece)
|
||||
|
||||
if(seal_delay && !instant && !do_after(M,seal_delay,timed_action_flags = IGNORE_SLOWDOWNS))
|
||||
if(seal_delay && !instant && !do_after(M, seal_delay, target = src))
|
||||
failed_to_seal = 1
|
||||
|
||||
piece.icon_state = "[suit_state][!seal_target ? "_sealed" : ""]"
|
||||
@@ -681,7 +681,7 @@
|
||||
|
||||
if(seal_delay > 0 && istype(M) && (M.back == src || M.belt == src))
|
||||
M.visible_message(span_notice("[M] starts putting on \the [src]..."), span_notice("You start putting on \the [src]..."))
|
||||
if(!do_after(M,seal_delay))
|
||||
if(!do_after(M, seal_delay, target = src))
|
||||
if(M && (M.back == src || M.belt == src))
|
||||
if(!M.unEquip(src))
|
||||
return
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
|
||||
var/obj/item/rig_module/mod = W
|
||||
to_chat(user, "You begin installing \the [mod] into \the [src].")
|
||||
if(!do_after(user,40))
|
||||
if(!do_after(user, 4 SECONDS, target = src))
|
||||
return
|
||||
if(!user || !W)
|
||||
return
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
|
||||
to_chat(user, span_notice("The microscope whirrs as you examine \the [sample]."))
|
||||
|
||||
if(!do_after(user, 2 SECONDS) || !sample)
|
||||
if(!do_after(user, 2 SECONDS, target = sample) || !sample)
|
||||
to_chat(user, span_notice("You stop examining \the [sample]."))
|
||||
return
|
||||
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
var/target_text = trans_dest? "\the [trans_dest]" : "\the [user.loc]"
|
||||
user.visible_message(span_danger("\The [user] begins to wring out [src] over [target_text]."), span_notice("You begin to wring out [src] over [target_text]."))
|
||||
|
||||
if(do_after(user, reagents.total_volume*5)) //50 for a fully soaked rag
|
||||
if(do_after(user, reagents.total_volume*5, target = src)) //50 for a fully soaked rag
|
||||
if(trans_dest)
|
||||
reagents.trans_to(trans_dest, reagents.total_volume)
|
||||
else
|
||||
@@ -98,7 +98,7 @@
|
||||
else
|
||||
user.visible_message("[user] starts to wipe [A] with [src].")
|
||||
update_name()
|
||||
if(do_after(user,30))
|
||||
if(do_after(user, 3 SECONDS, target = src))
|
||||
user.visible_message("[user] finishes wiping [A]!")
|
||||
A.on_rag_wipe(src)
|
||||
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
|
||||
add_fingerprint(user)
|
||||
|
||||
if(!(do_after(user, 1 SECOND)))
|
||||
if(!(do_after(user, 1 SECOND, target = src)))
|
||||
to_chat(user, span_warning("You must remain still for the device to complete its work."))
|
||||
return 0
|
||||
|
||||
@@ -112,7 +112,7 @@
|
||||
if(A.forensic_data?.has_fibres())
|
||||
to_chat(user,span_notice("Fibers/Materials detected.[reveal_fibers ? " Analysing..." : " Acquisition of fibers for H.R.F.S. analysis advised."]"))
|
||||
flick("[icon_state]1",src)
|
||||
if(reveal_fibers && do_after(user, 5 SECONDS))
|
||||
if(reveal_fibers && do_after(user, 5 SECONDS, target = src))
|
||||
to_chat(user, span_notice("Apparel samples scanned:"))
|
||||
for(var/sample in A.forensic_data.get_fibres())
|
||||
to_chat(user, " - " + span_notice("[sample]"))
|
||||
@@ -120,7 +120,7 @@
|
||||
//Blood
|
||||
if (A.forensic_data?.has_blooddna())
|
||||
to_chat(user, span_notice("Blood detected.[reveal_blood ? " Analysing..." : " Acquisition of swab for H.R.F.S. analysis advised."]"))
|
||||
if(reveal_blood && do_after(user, 5 SECONDS))
|
||||
if(reveal_blood && do_after(user, 5 SECONDS, target = src))
|
||||
flick("[icon_state]1",src)
|
||||
var/list/blood_data = A.forensic_data.get_blooddna()
|
||||
for(var/blood in blood_data)
|
||||
@@ -152,7 +152,7 @@
|
||||
/obj/item/detective_scanner/proc/display_data(var/mob/user)
|
||||
if(user && stored && stored.len)
|
||||
for(var/objref in stored)
|
||||
if(!do_after(user, 1 SECOND)) // So people can move and stop the spam, if they refuse to wipe data.
|
||||
if(!do_after(user, 1 SECOND, target = src)) // So people can move and stop the spam, if they refuse to wipe data.
|
||||
break
|
||||
|
||||
var/datum/data/record/forensic/F = stored[objref]
|
||||
|
||||
@@ -497,7 +497,7 @@
|
||||
user.visible_message(span_warning("\The [user] begins unsecuring \the [src] from the floor."),
|
||||
"You begin unsecuring \the [src] from the floor.")
|
||||
playsound(src, W.usesound, 50, 1)
|
||||
if(!do_after(user, 20 * W.toolspeed))
|
||||
if(!do_after(user, 2 SECONDS * W.toolspeed, target = src))
|
||||
manipulating = 0
|
||||
return
|
||||
if(!anchored)
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
user.visible_message("[user] starts to feed a sheet of [M.default_type] into \the [src].")
|
||||
while(M.amount > 0)
|
||||
icon_state = "coinpress1"
|
||||
if(do_after(user, 2 SECONDS, src))
|
||||
if(do_after(user, 2 SECONDS, target = src))
|
||||
M.amount--
|
||||
while(coinsToProduce-- > 0)
|
||||
new M.coin_type(user.loc)
|
||||
|
||||
@@ -249,7 +249,7 @@ GLOBAL_LIST_EMPTY(vending_products)
|
||||
else
|
||||
user.visible_message(span_filter_notice("[user] begins securing \the [src] to the floor."), span_filter_notice("You start securing \the [src] to the floor."))
|
||||
|
||||
if(do_after(user, 20 * W.toolspeed))
|
||||
if(do_after(user, 2 SECONDS * W.toolspeed, target = src))
|
||||
if(!src) return
|
||||
to_chat(user, span_notice("You [anchored? "un" : ""]secured \the [src]!"))
|
||||
anchored = !anchored
|
||||
|
||||
@@ -294,7 +294,7 @@
|
||||
if(M.nutrition <= 100)
|
||||
to_chat(user, span_notice("You are too hungry to exercise right now."))
|
||||
return 0
|
||||
if(!do_after(user, 3 SECONDS, src))
|
||||
if(!do_after(user, 3 SECONDS, target = src))
|
||||
return 0
|
||||
M.adjust_nutrition(-10)
|
||||
to_chat(user, span_notice("You successfully perform a [src] exercise!"))
|
||||
@@ -362,7 +362,7 @@
|
||||
to_chat(user, span_notice("You need some sort of glass, bottle or cup to contact the spirit world."))
|
||||
return 0
|
||||
var/result = 0
|
||||
if(!do_after(user, 3 SECONDS, src))
|
||||
if(!do_after(user, 3 SECONDS, target = src))
|
||||
return 0
|
||||
if(next_result)
|
||||
result = next_result
|
||||
|
||||
@@ -116,7 +116,7 @@
|
||||
if(active_repair_steps.len >= 1)
|
||||
if(O.has_tool_quality(active_repair_steps[active_repair_steps.len]))
|
||||
if(!pre_repair_handling(O,active_repair_steps[active_repair_steps.len],user)) return
|
||||
if(do_after(user, 2 SECONDS))
|
||||
if(do_after(user, 2 SECONDS, target = src))
|
||||
post_repair_handling(O,active_repair_steps[active_repair_steps.len],user)
|
||||
to_chat(usr,span_notice(fix_descs[active_repair_steps[active_repair_steps.len]]))
|
||||
active_repair_steps.len = active_repair_steps.len - 1
|
||||
|
||||
@@ -220,7 +220,7 @@ GLOBAL_LIST_INIT(event_collector_blockers,list()) //ditto
|
||||
|
||||
//put it in
|
||||
user.visible_message("[user] begins to [pick(step_initiation_verbs)] \The [O] into \The [src]")
|
||||
if(do_after(user, step_insertion_time, src)) //wait a second or two
|
||||
if(do_after(user, step_insertion_time, target = src)) //wait a second or two
|
||||
user.visible_message("[user] [pick(step_insertion_verbs)] \The [O] into \The [src]!")
|
||||
if(ishuman(user)) //should always be?
|
||||
var/mob/living/carbon/human/h = user
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
if(activatable_hand)
|
||||
if(!on)
|
||||
if(delay_time)
|
||||
if(!do_after(user, delay_time, src))
|
||||
if(!do_after(user, delay_time, target = src))
|
||||
return 0
|
||||
on = 1
|
||||
if(icon_on)
|
||||
@@ -76,7 +76,7 @@
|
||||
playsound(src, sound_activated, 50, 1)
|
||||
else if(togglable)
|
||||
if(delay_time)
|
||||
if(!do_after(user, delay_time, src))
|
||||
if(!do_after(user, delay_time, target = src))
|
||||
return 0
|
||||
on = 0
|
||||
icon_state = icon_state_off
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
if(activatable_hand)
|
||||
if(!on)
|
||||
if(delay_time)
|
||||
if(!do_after(user, delay_time, src))
|
||||
if(!do_after(user, delay_time, target = src))
|
||||
return 0
|
||||
on = 1
|
||||
icon_state = icon_state_on
|
||||
@@ -88,7 +88,7 @@
|
||||
playsound(src, sound_activated, 50, 1)
|
||||
else if(togglable)
|
||||
if(delay_time)
|
||||
if(!do_after(user, delay_time, src))
|
||||
if(!do_after(user, delay_time, target = src))
|
||||
return 0
|
||||
on = 0
|
||||
icon_state = icon_state_off
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
var/obj/item/pickaxe/P = I
|
||||
M.visible_message(span_warning("[M] starts [P.drill_verb] \the [src]."), span_warning("You start [P.drill_verb] \the [src]."))
|
||||
|
||||
if(!do_after(M, P.digspeed*3))
|
||||
if(!do_after(M, P.digspeed*3, target = src))
|
||||
return
|
||||
|
||||
M.visible_message(span_warning("[M] breaks apart \the [src]."), span_warning("You break apart \the [src]."))
|
||||
|
||||
@@ -134,7 +134,7 @@ GLOBAL_LIST_INIT(generic_fishing_chance_list, list(FISHING_RARE = 5, FISHING_UNC
|
||||
being_fished = TRUE
|
||||
R.cast = TRUE
|
||||
var/fishing_time = rand(min_fishing_time SECONDS,max_fishing_time SECONDS) * R.toolspeed
|
||||
if(do_after(user,fishing_time,user))
|
||||
if(do_after(user, fishing_time, target = user))
|
||||
playsound(src, 'sound/effects/slosh.ogg', 5, 1, 5)
|
||||
to_chat(user,span_notice("You feel a tug and begin pulling!"))
|
||||
if(world.time >= last_fished + fishing_cooldown)
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
if(C.get_amount() < 5)
|
||||
to_chat(user, span_warning("You do not have enough length in \the [C] to string this!"))
|
||||
return
|
||||
if(do_after(user, rand(10 SECONDS, 20 SECONDS)))
|
||||
if(do_after(user, rand(10 SECONDS, 20 SECONDS), target = src))
|
||||
C.use(5)
|
||||
strung = TRUE
|
||||
to_chat(user, span_notice("You string \the [src]!"))
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
return
|
||||
|
||||
user.visible_message(span_infoplain(span_bold("[user]") + " starts sipping on [victim] with [src]!"), span_info("You start sipping on [victim] with [src]."))
|
||||
if(!do_after(user, 3 SECONDS, victim))
|
||||
if(!do_after(user, 3 SECONDS, target = victim))
|
||||
return
|
||||
|
||||
user.visible_message(span_infoplain(span_bold("[user]") + " sips some of [victim] with [src]!"), span_info("You take a sip of [victim] with [src]. Yum!"))
|
||||
|
||||
@@ -310,7 +310,7 @@
|
||||
/obj/structure/theonepizza/attackby(var/obj/item/W, var/mob/living/user)
|
||||
if(istype(W,/obj/item/material/knife))
|
||||
user.visible_message(span_infoplain(span_bold("\The [user]") + " starts to slowly cut through The One Pizza."), span_notice("You start to slowly cut through The One Pizza."))
|
||||
if(do_after(user, slicetime))
|
||||
if(do_after(user, slicetime, target = src))
|
||||
if(!src)
|
||||
return // We got disappeared already
|
||||
user.visible_message(span_infoplain(span_bold("\The [user]") + " successfully cuts The One Pizza."), span_notice("You successfully cut The One Pizza."))
|
||||
|
||||
@@ -142,7 +142,7 @@
|
||||
|
||||
user.visible_message(span_danger("[user] starts to put [victim] into the gibber!"))
|
||||
src.add_fingerprint(user)
|
||||
if(do_after(user, 30) && victim.Adjacent(src) && user.Adjacent(src) && victim.Adjacent(user) && !occupant)
|
||||
if(do_after(user, 3 SECONDS, target = src) && victim.Adjacent(src) && user.Adjacent(src) && victim.Adjacent(user) && !occupant)
|
||||
user.visible_message(span_danger("[user] stuffs [victim] into the gibber!"))
|
||||
if(victim.client)
|
||||
victim.client.perspective = EYE_PERSPECTIVE
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
span_notice("You start to fix part of the microwave.") \
|
||||
)
|
||||
playsound(src, O.usesound, 50, 1)
|
||||
if (do_after(user,20 * O.toolspeed))
|
||||
if (do_after(user, 2 SECONDS * O.toolspeed, target = src))
|
||||
user.visible_message( \
|
||||
span_infoplain(span_bold("\The [user]") + " fixes part of the microwave."), \
|
||||
span_notice("You have fixed part of the microwave.") \
|
||||
@@ -88,7 +88,7 @@
|
||||
span_infoplain(span_bold("\The [user]") + " starts to fix part of the microwave."), \
|
||||
span_notice("You start to fix part of the microwave.") \
|
||||
)
|
||||
if (do_after(user,20 * O.toolspeed))
|
||||
if (do_after(user, 2 SECONDS * O.toolspeed, target = src))
|
||||
user.visible_message( \
|
||||
span_infoplain(span_bold("\The [user]") + " fixes the microwave."), \
|
||||
span_notice("You have fixed the microwave.") \
|
||||
@@ -107,7 +107,7 @@
|
||||
span_infoplain(span_bold("\The [user]") + " starts to clean the microwave."), \
|
||||
span_notice("You start to clean the microwave.") \
|
||||
)
|
||||
if (do_after(user,20))
|
||||
if (do_after(user, 2 SECONDS, target = src))
|
||||
user.visible_message( \
|
||||
span_notice("\The [user] has cleaned the microwave."), \
|
||||
span_notice("You have cleaned the microwave.") \
|
||||
@@ -199,7 +199,7 @@
|
||||
span_notice("\The [user] begins [src.anchored ? "unsecuring" : "securing"] the microwave."), \
|
||||
span_notice("You attempt to [src.anchored ? "unsecure" : "secure"] the microwave.")
|
||||
)
|
||||
if (do_after(user,20/O.toolspeed))
|
||||
if (do_after(user, (2 SECONDS)/O.toolspeed, target = src))
|
||||
user.visible_message( \
|
||||
span_notice("\The [user] [src.anchored ? "unsecures" : "secures"] the microwave."), \
|
||||
span_notice("You [src.anchored ? "unsecure" : "secure"] the microwave.")
|
||||
@@ -560,7 +560,7 @@
|
||||
span_notice("You try to open [src] and remove its contents.")
|
||||
)
|
||||
|
||||
if(!do_after(usr, 1 SECONDS, target = src))
|
||||
if(!do_after(usr, 1 SECOND, target = src))
|
||||
return
|
||||
|
||||
if(operating)
|
||||
|
||||
@@ -120,7 +120,7 @@
|
||||
return
|
||||
to_chat(user, span_notice("You start dismantling \the [src]..."))
|
||||
playsound(src, I.usesound, 50, 1)
|
||||
if(do_after(user, 30))
|
||||
if(do_after(user, 3 SECONDS, target = src))
|
||||
user.visible_message(span_notice("[user] dismantles \the [src]."), span_notice("You dismantle \the [src]."))
|
||||
new /obj/item/beehive_assembly(loc)
|
||||
qdel(src)
|
||||
@@ -135,7 +135,7 @@
|
||||
to_chat(user, span_notice("The bees won't let you take the honeycombs out like this, smoke them first."))
|
||||
return
|
||||
user.visible_message(span_notice("[user] starts taking the honeycombs out of \the [src]."), span_notice("You start taking the honeycombs out of \the [src]..."))
|
||||
while(honeycombs >= 100 && length(frames) && do_after(user, 30))
|
||||
while(honeycombs >= 100 && length(frames) && do_after(user, 3 SECONDS, target = src))
|
||||
var/obj/item/honey_frame/H = pop(frames)
|
||||
H.honey = 20
|
||||
honeycombs -= 100
|
||||
@@ -292,7 +292,7 @@
|
||||
|
||||
/obj/item/beehive_assembly/attack_self(var/mob/user)
|
||||
to_chat(user, span_notice("You start assembling \the [src]..."))
|
||||
if(do_after(user, 30))
|
||||
if(do_after(user, 3 SECONDS, target = src))
|
||||
user.visible_message(span_notice("[user] constructs a beehive."), span_notice("You construct a beehive."))
|
||||
new /obj/machinery/beehive(get_turf(user))
|
||||
user.drop_from_inventory(src)
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
if(!choice||choice=="No")
|
||||
return
|
||||
user.visible_message("[user] starts dispersing the [src]...", runemessage = "disperses the [src]")
|
||||
if(do_after(user, 5 SECONDS))
|
||||
if(do_after(user, 5 SECONDS, target = src))
|
||||
qdel(src)
|
||||
else
|
||||
to_chat(user, span_notice("There is something growing here."))
|
||||
@@ -35,7 +35,7 @@
|
||||
/obj/machinery/portable_atmospherics/hydroponics/soil/attackby(obj/item/O, mob/user)
|
||||
if(istype(O, /obj/item/shovel) && user.a_intent == I_HURT)
|
||||
user.visible_message(span_notice("\The [user] begins filling in \the [src]."))
|
||||
if(do_after(user, 3 SECONDS) && !QDELETED(src))
|
||||
if(do_after(user, 3 SECONDS, target = src) && !QDELETED(src))
|
||||
user.visible_message(span_notice("\The [user] fills in \the [src]."))
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
else if(O.has_tool_quality(TOOL_SCREWDRIVER))
|
||||
playsound(src, O.usesound, 75, 1)
|
||||
to_chat(user, span_notice("You begin dismantling \the [src]."))
|
||||
if(do_after(user,25 * O.toolspeed))
|
||||
if(do_after(user, 25 * O.toolspeed, target = src))
|
||||
to_chat(user, span_notice("You dismantle \the [src]."))
|
||||
new /obj/item/stack/material/wood(get_turf(src), 3)
|
||||
for(var/obj/item/book/b in contents)
|
||||
@@ -286,7 +286,7 @@ Book Cart End
|
||||
else if(istype(W, /obj/item/material/knife) || W.has_tool_quality(TOOL_WIRECUTTER))
|
||||
if(carved) return
|
||||
to_chat(user, span_notice("You begin to carve out [title]."))
|
||||
if(do_after(user, 30))
|
||||
if(do_after(user, 3 SECONDS, target = src))
|
||||
to_chat(user, span_notice("You carve out the pages from [title]! You didn't want to read it anyway."))
|
||||
playsound(src, 'sound/bureaucracy/papercrumple.ogg', 50, 1)
|
||||
new /obj/item/shreddedp(get_turf(src))
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
if(istype(M) && locate(/obj/item/organ/internal/xenos/hivenode) in M.internal_organs)
|
||||
to_chat(M, "\The [W] shudders under your touch, starting to become porous.")
|
||||
playsound(W, 'sound/effects/attackblob.ogg', 50, 1)
|
||||
if(!do_after(L, 5 SECONDS))
|
||||
if(!do_after(L, 5 SECONDS, target = W))
|
||||
return FALSE
|
||||
playsound(W, 'sound/effects/attackblob.ogg', 100, 1)
|
||||
W.dismantle_wall()
|
||||
@@ -36,7 +36,7 @@
|
||||
if(istype(M) && locate(/obj/item/organ/internal/xenos/resinspinner/replicant) in M.internal_organs)
|
||||
to_chat(M, "\The [W] shudders under your touch, starting to become porous.")
|
||||
playsound(W, 'sound/effects/attackblob.ogg', 50, 1)
|
||||
if(!do_after(L, 5 SECONDS))
|
||||
if(!do_after(L, 5 SECONDS, target = W))
|
||||
return FALSE
|
||||
playsound(W, 'sound/effects/attackblob.ogg', 100, 1)
|
||||
W.dismantle_wall()
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
return
|
||||
to_chat(user, span_notice("Assembling grille..."))
|
||||
in_use = 1
|
||||
if (!do_after(user, 10))
|
||||
if (!do_after(user, 1 SECOND, target = src))
|
||||
in_use = 0
|
||||
return
|
||||
var/obj/structure/grille/F = new /obj/structure/grille/ ( user.loc )
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
if(W.sharp && W.edge)
|
||||
var/time = (3 SECONDS / max(W.force / 10, 1)) * W.toolspeed
|
||||
user.setClickCooldown(time)
|
||||
if(do_after(user, time, src) && use(1))
|
||||
if(do_after(user, time, target = src) && use(1))
|
||||
to_chat(user, span_notice("You cut up a log into planks."))
|
||||
playsound(src, 'sound/effects/woodcutting.ogg', 50, 1)
|
||||
var/obj/item/stack/material/wood/existing_wood = null
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
to_chat(user, span_notice("You begin sweeping \the [src] about, scanning for metal deposits."))
|
||||
playsound(src, 'sound/items/goggles_charge.ogg', 50, 1, -6)
|
||||
|
||||
if(!do_after(user, scan_time))
|
||||
if(!do_after(user, scan_time, target = src))
|
||||
return
|
||||
|
||||
ScanTurf(get_turf(user), user)
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
if(A.anchored)
|
||||
return
|
||||
to_chat(user, span_notice("You start attaching the pack to [A]..."))
|
||||
if(do_after(user,50,target=A))
|
||||
if(do_after(user, 5 SECONDS, target = A))
|
||||
to_chat(user, span_notice("You attach the pack to [A] and activate it."))
|
||||
/* No components, sorry. No convienence for you!
|
||||
if(loc == user && istype(user.back, /obj/item/storage/backpack))
|
||||
@@ -144,7 +144,7 @@
|
||||
/obj/item/fulton_core/attack_self(mob/user)
|
||||
var/turf/T = get_turf(user)
|
||||
var/outdoors = T.is_outdoors()
|
||||
if(do_after(user,15,target = user) && !QDELETED(src) && outdoors)
|
||||
if(do_after(user, 15, target = user) && !QDELETED(src) && outdoors)
|
||||
new /obj/structure/extraction_point(get_turf(user))
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
/obj/structure/outcrop/attackby(obj/item/W as obj, mob/user as mob)
|
||||
if (istype(W, /obj/item/pickaxe))
|
||||
to_chat(user, span_notice("[user] begins to hack away at \the [src]."))
|
||||
if(do_after(user,40))
|
||||
if(do_after(user, 4 SECONDS, target = src))
|
||||
to_chat(user, span_notice("You have finished digging!"))
|
||||
for(var/i=0;i<(rand(mindrop,upperdrop));i++)
|
||||
new outcropdrop(get_turf(src))
|
||||
|
||||
@@ -394,7 +394,7 @@ var/list/mining_overlay_cache = list()
|
||||
to_chat(user, span_notice("You start digging."))
|
||||
playsound(user, 'sound/effects/rustle1.ogg', 50, 1)
|
||||
|
||||
if(!do_after(user,digspeed)) return
|
||||
if(!do_after(user, digspeed, target = src)) return
|
||||
|
||||
to_chat(user, span_notice("You dug a hole."))
|
||||
GetDrilled()
|
||||
@@ -439,7 +439,7 @@ var/list/mining_overlay_cache = list()
|
||||
if (istype(W, /obj/item/measuring_tape))
|
||||
var/obj/item/measuring_tape/P = W
|
||||
user.visible_message(span_infoplain(span_bold("\The [user]") + " extends \a [P] towards \the [src]."),span_notice("You extend \the [P] towards \the [src]."))
|
||||
if(do_after(user, 15))
|
||||
if(do_after(user, 15, target = src))
|
||||
to_chat(user, span_notice("\The [src] has been excavated to a depth of [excavation_level]cm."))
|
||||
return
|
||||
|
||||
@@ -449,7 +449,7 @@ var/list/mining_overlay_cache = list()
|
||||
C.depth_scanner.scan_atom(user, src)
|
||||
else
|
||||
user.visible_message(span_infoplain(span_bold("\The [user]") + " extends \the [C] over \the [src], a flurry of red beams scanning \the [src]'s surface!"), span_notice("You extend \the [C] over \the [src], a flurry of red beams scanning \the [src]'s surface!"))
|
||||
if(do_after(user, 15))
|
||||
if(do_after(user, 15, target = src))
|
||||
to_chat(user, span_notice("\The [src] has been excavated to a depth of [excavation_level]cm."))
|
||||
return
|
||||
|
||||
@@ -519,7 +519,7 @@ var/list/mining_overlay_cache = list()
|
||||
wreckfinds(P.destroy_artefacts)
|
||||
to_chat(user, span_notice("You start [P.drill_verb][fail_message]."))
|
||||
|
||||
if(do_after(user,P.digspeed))
|
||||
if(do_after(user, P.digspeed, target = src))
|
||||
|
||||
if(finds && finds.len)
|
||||
var/datum/find/F = finds[1]
|
||||
|
||||
@@ -291,7 +291,7 @@ GLOBAL_LIST_EMPTY(unique_deployable)
|
||||
if(I.has_tool_quality(TOOL_WRENCH))
|
||||
user.visible_message(span_warning("[user] disassembles [src]."),
|
||||
span_notice("You start to disassemble [src]..."), "You hear clanking and banging noises.")
|
||||
if(do_after(user,4 SECONDS,src))
|
||||
if(do_after(user, 4 SECONDS, target = src))
|
||||
new /obj/item/gps(loc)
|
||||
qdel(src)
|
||||
return TRUE
|
||||
@@ -357,7 +357,7 @@ GLOBAL_LIST_EMPTY(unique_deployable)
|
||||
if(I.has_tool_quality(TOOL_WRENCH))
|
||||
user.visible_message(span_warning("[user] disassembles [src]."),
|
||||
span_notice("You start to disassemble [src]..."), "You hear clanking and banging noises.")
|
||||
if(do_after(user,4 SECONDS,src))
|
||||
if(do_after(user, 4 SECONDS, target = src))
|
||||
deconstruct()
|
||||
return TRUE
|
||||
|
||||
|
||||
@@ -132,7 +132,7 @@
|
||||
to_chat(user, span_warning("You need one coil of wire to wire [src]."))
|
||||
return
|
||||
to_chat(user, span_notice("You start to wire [src]."))
|
||||
if(do_after(user, 40) && build_step == 6)
|
||||
if(do_after(user, 4 SECONDS, target = src) && build_step == 6)
|
||||
if(C.use(1))
|
||||
build_step++
|
||||
to_chat(user, span_notice("You wire the ED-209 assembly."))
|
||||
|
||||
@@ -168,7 +168,7 @@
|
||||
else if(O.has_tool_quality(TOOL_CROWBAR))
|
||||
if(open && paicard)
|
||||
to_chat(user, span_notice("You are attempting to remove the pAI.."))
|
||||
if(do_after(user,10 * O.toolspeed))
|
||||
if(do_after(user, 1 SECOND * O.toolspeed, target = src))
|
||||
ejectpai(user)
|
||||
else
|
||||
..()
|
||||
|
||||
@@ -119,7 +119,7 @@
|
||||
cleantime = istype(D, /obj/effect/decal/cleanable/dirt) ? 10 : 50
|
||||
if(prob(20))
|
||||
automatic_custom_emote(AUDIBLE_MESSAGE, "begins to clean up \the [D]")
|
||||
if(do_after(src, cleantime * cTimeMult))
|
||||
if(do_after(src, cleantime * cTimeMult, target = D))
|
||||
if(istype(loc, /turf/simulated))
|
||||
var/turf/simulated/f = loc
|
||||
f.dirt = 0
|
||||
@@ -138,7 +138,7 @@
|
||||
if(cleantime != 0)
|
||||
if(prob(20))
|
||||
automatic_custom_emote(AUDIBLE_MESSAGE, "begins to clean up \the [loc]")
|
||||
if(do_after(src, cleantime * cTimeMult))
|
||||
if(do_after(src, cleantime * cTimeMult, target = loc))
|
||||
if(blood)
|
||||
wash(CLEAN_TYPE_BLOOD)
|
||||
if(istype(loc, /turf/simulated))
|
||||
|
||||
@@ -152,7 +152,7 @@
|
||||
to_chat(user, span_warning("You need one coil of wire to wire [src]."))
|
||||
return
|
||||
to_chat(user, span_notice("You start to wire [src]."))
|
||||
if(do_after(user, 40) && build_step == 6)
|
||||
if(do_after(user, 4 SECONDS, target = src) && build_step == 6)
|
||||
if(C.use(1))
|
||||
build_step++
|
||||
to_chat(user, span_notice("You wire the ED-209 assembly."))
|
||||
|
||||
@@ -176,7 +176,7 @@
|
||||
to_chat(user, span_warning("You need one coil of wire to wire \the [src]."))
|
||||
return
|
||||
to_chat(user, span_notice("You start to wire \the [src]."))
|
||||
if(do_after(user, 40))
|
||||
if(do_after(user, 4 SECONDS, target = src))
|
||||
if(C.use(1))
|
||||
build_step++
|
||||
to_chat(user, span_notice("You wire the ED-CLN assembly."))
|
||||
@@ -198,7 +198,7 @@
|
||||
playsound(src, W.usesound, 100, 1)
|
||||
var/turf/T = get_turf(user)
|
||||
to_chat(user, span_notice("Attatching the mop to the frame..."))
|
||||
if(do_after(user, 40) && get_turf(user) == T)
|
||||
if(do_after(user, 4 SECONDS, target = src) && get_turf(user) == T)
|
||||
build_step++
|
||||
name = "mopped ED-CLN assembly"
|
||||
to_chat(user, span_notice("Mop attached."))
|
||||
|
||||
@@ -192,7 +192,7 @@
|
||||
visible_message(span_notice("[src] starts [T.dead? "removing the plant from" : "harvesting"] \the [A]."))
|
||||
|
||||
busy = 1
|
||||
if(do_after(src, 30, A))
|
||||
if(do_after(src, 3 SECONDS, target = A))
|
||||
visible_message(span_notice("[src] [T.dead? "removes the plant from" : "harvests"] \the [A]."))
|
||||
T.attack_hand(src)
|
||||
if(FARMBOT_WATER)
|
||||
@@ -201,7 +201,7 @@
|
||||
visible_message(span_notice("[src] starts watering \the [A]."))
|
||||
|
||||
busy = 1
|
||||
if(do_after(src, 30, A))
|
||||
if(do_after(src, 3 SECONDS, target = A))
|
||||
playsound(src, 'sound/effects/slosh.ogg', 25, 1)
|
||||
visible_message(span_notice("[src] waters \the [A]."))
|
||||
tank.reagents.trans_to(T, 100 - T.waterlevel)
|
||||
@@ -211,7 +211,7 @@
|
||||
visible_message(span_notice("[src] starts uprooting the weeds in \the [A]."))
|
||||
|
||||
busy = 1
|
||||
if(do_after(src, 30))
|
||||
if(do_after(src, 3 SECONDS, target = A))
|
||||
visible_message(span_notice("[src] uproots the weeds in \the [A]."))
|
||||
T.weedlevel = 0
|
||||
if(FARMBOT_NUTRIMENT)
|
||||
@@ -220,7 +220,7 @@
|
||||
visible_message(span_notice("[src] starts fertilizing \the [A]."))
|
||||
|
||||
busy = 1
|
||||
if(do_after(src, 30, A))
|
||||
if(do_after(src, 3 SECONDS, target = A))
|
||||
|
||||
visible_message(span_notice("[src] fertilizes \the [A]."))
|
||||
T.reagents.add_reagent(REAGENT_ID_AMMONIA, 10)
|
||||
@@ -237,7 +237,7 @@
|
||||
visible_message(span_notice("[src] starts refilling its tank from \the [A]."))
|
||||
|
||||
busy = 1
|
||||
while(do_after(src, 10) && tank.reagents.total_volume < tank.reagents.maximum_volume)
|
||||
while(do_after(src, 1 SECOND, target = A) && tank.reagents.total_volume < tank.reagents.maximum_volume)
|
||||
tank.reagents.add_reagent("water", 100) //VOREStation Edit
|
||||
if(prob(5))
|
||||
playsound(src, 'sound/effects/slosh.ogg', 25, 1)
|
||||
|
||||
@@ -209,12 +209,12 @@
|
||||
update_icons()
|
||||
if(F.flooring)
|
||||
visible_message(span_warning("\The [src] begins to tear the floor tile from the floor!"))
|
||||
if(do_after(src, 50))
|
||||
if(do_after(src, 5 SECONDS, target = A))
|
||||
F.break_tile_to_plating()
|
||||
addTiles(1)
|
||||
else
|
||||
visible_message(span_danger("\The [src] begins to tear through the floor!"))
|
||||
if(do_after(src, 150)) // Extra time because this can and will kill.
|
||||
if(do_after(src, 15 SECONDS, target = A)) // Extra time because this can and will kill.
|
||||
F.ReplaceWithLattice()
|
||||
addTiles(1)
|
||||
target = null
|
||||
@@ -229,7 +229,7 @@
|
||||
busy = 1
|
||||
update_icons()
|
||||
visible_message(span_infoplain(span_bold("\The [src]") + " begins to repair the hole."))
|
||||
if(do_after(src, 50))
|
||||
if(do_after(src, 5 SECONDS, target = A))
|
||||
if(A && (locate(/obj/structure/lattice, A) && building == 1 || !locate(/obj/structure/lattice, A) && building == 2)) // Make sure that it still needs repairs
|
||||
var/obj/item/I
|
||||
if(building == 1)
|
||||
@@ -246,7 +246,7 @@
|
||||
busy = 1
|
||||
update_icons()
|
||||
visible_message(span_infoplain(span_bold("\The [src]") + " begins to remove the broken floor."))
|
||||
if(do_after(src, 50, F))
|
||||
if(do_after(src, 5 SECONDS, target = F))
|
||||
if(F.broken || F.burnt)
|
||||
F.make_plating()
|
||||
target = null
|
||||
@@ -256,7 +256,7 @@
|
||||
busy = 1
|
||||
update_icons()
|
||||
visible_message(span_infoplain(span_bold("\The [src]") + " begins to improve the floor."))
|
||||
if(do_after(src, 50))
|
||||
if(do_after(src, 5 SECONDS, target = F))
|
||||
if(!F.flooring)
|
||||
F.set_flooring(get_flooring_data(floor_build_type))
|
||||
addTiles(-1)
|
||||
@@ -268,7 +268,7 @@
|
||||
visible_message(span_infoplain(span_bold("\The [src]") + " begins to collect tiles."))
|
||||
busy = 1
|
||||
update_icons()
|
||||
if(do_after(src, 20))
|
||||
if(do_after(src, 2 SECONDS, target = T))
|
||||
if(T)
|
||||
var/eaten = min(maxAmount - amount, T.get_amount())
|
||||
T.use(eaten)
|
||||
@@ -282,7 +282,7 @@
|
||||
visible_message(span_infoplain(span_bold("\The [src]") + " begins to make tiles."))
|
||||
busy = 1
|
||||
update_icons()
|
||||
if(do_after(50))
|
||||
if(do_after(src, 5 SECONDS, target = A))
|
||||
if(M)
|
||||
M.use(1)
|
||||
addTiles(4)
|
||||
|
||||
@@ -206,12 +206,12 @@
|
||||
say(message)
|
||||
playsound(src, messagevoice[message], 70, FALSE)
|
||||
|
||||
if(do_after(H, 3 SECONDS, target=src))
|
||||
if(do_after(H, 3 SECONDS, target = src))
|
||||
tip_over(H)
|
||||
|
||||
else if(istype(H) && H.a_intent == I_HELP && is_tipped)
|
||||
H.visible_message(span_notice("[H] begins righting [src]."), span_notice("You begin righting [src]..."))
|
||||
if(do_after(H, 3 SECONDS, target=src))
|
||||
if(do_after(H, 3 SECONDS, target = src))
|
||||
set_right(H)
|
||||
else
|
||||
tgui_interact(H)
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
/mob/living/proc/harvest(var/mob/user, var/obj/item/I)
|
||||
if(meat_type && meat_amount>0 && (stat == DEAD) && !being_butchered)
|
||||
being_butchered = TRUE
|
||||
while(meat_amount > 0 && do_after(user, 0.5 SECONDS * (mob_size / 10), src))
|
||||
while(meat_amount > 0 && do_after(user, 0.5 SECONDS * (mob_size / 10), target = src))
|
||||
var/obj/item/meat = new meat_type(get_turf(src))
|
||||
if(name_the_meat)
|
||||
meat.name = "[src.name] [meat.name]"
|
||||
@@ -36,7 +36,7 @@
|
||||
return FALSE
|
||||
|
||||
/mob/living/proc/handle_butcher(var/mob/user, var/obj/item/I)
|
||||
if(!user || do_after(user, 2 SECONDS * mob_size / 10, src))
|
||||
if(!user || do_after(user, 2 SECONDS * mob_size / 10, target = src))
|
||||
if(LAZYLEN(butchery_loot))
|
||||
if(LAZYLEN(butchery_loot))
|
||||
for(var/path in butchery_loot)
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
user.visible_message(span_danger("\The [user] begins to slit [src]'s throat with \the [W]!"))
|
||||
|
||||
user.next_move = world.time + 20 //also should prevent user from triggering this repeatedly
|
||||
if(!do_after(user, 20))
|
||||
if(!do_after(user, 2 SECONDS, target = src))
|
||||
return 0
|
||||
if(!(G && G.assailant == user && G.affecting == src)) //check that we still have a grab
|
||||
return 0
|
||||
|
||||
@@ -1546,7 +1546,7 @@
|
||||
else
|
||||
to_chat(U, span_warning("You begin to relocate [S]'s [current_limb.joint]..."))
|
||||
|
||||
if(!do_after(U, 30))
|
||||
if(!do_after(U, 3 SECONDS, target = src))
|
||||
return
|
||||
if(!current_limb || !S || !U)
|
||||
return
|
||||
|
||||
@@ -138,7 +138,7 @@
|
||||
|
||||
H.visible_message(span_danger("\The [H] is trying to perform CPR on \the [src]!"))
|
||||
|
||||
if(!do_after(H, 30))
|
||||
if(!do_after(H, 3 SECONDS, target = src))
|
||||
return FALSE
|
||||
|
||||
H.visible_message(span_danger("\The [H] performs CPR on \the [src]!"))
|
||||
@@ -461,7 +461,7 @@
|
||||
return FALSE
|
||||
|
||||
user.visible_message(span_warning("[user] begins to dislocate [src]'s [organ.joint]!"))
|
||||
if(do_after(user, 100))
|
||||
if(do_after(user, 10 SECONDS, target = src))
|
||||
organ.dislocate(1)
|
||||
src.visible_message(span_danger("[src]'s [organ.joint] [pick("gives way","caves in","crumbles","collapses")]!"))
|
||||
return TRUE
|
||||
|
||||
@@ -672,7 +672,7 @@ emp_act
|
||||
organ_chance = 75
|
||||
user.next_move = world.time + 20
|
||||
user.visible_message(span_danger("\The [user] begins to twist \the [W] around inside [src]'s [chest]!"))
|
||||
if(!do_after(user, 20))
|
||||
if(!do_after(user, 2 SECONDS, target = src))
|
||||
return 0
|
||||
if(!(G && G.assailant == user && G.affecting == src)) //check that we still have a grab
|
||||
return 0
|
||||
|
||||
@@ -153,7 +153,7 @@
|
||||
var/obj/item/organ/external/E = get_active_hand()
|
||||
if(!check_can_attach_modular_limb(E))
|
||||
return FALSE
|
||||
if(!do_after(src, 2 SECONDS, src))
|
||||
if(!do_after(src, 2 SECONDS, target = src))
|
||||
return FALSE
|
||||
if(!check_can_attach_modular_limb(E))
|
||||
return FALSE
|
||||
@@ -186,7 +186,7 @@
|
||||
var/obj/item/organ/external/E = tgui_input_list(src, "Which limb do you wish to detach?", "Limb Removal", detachable_limbs)
|
||||
if(!check_can_detach_modular_limb(E))
|
||||
return FALSE
|
||||
if(!do_after(src, 2 SECONDS, src))
|
||||
if(!do_after(src, 2 SECONDS, target = src))
|
||||
return FALSE
|
||||
if(!check_can_detach_modular_limb(E))
|
||||
return FALSE
|
||||
|
||||
@@ -290,7 +290,7 @@
|
||||
src.visible_message(span_filter_notice(span_bold("[src]") + "'s flesh begins to mend..."))
|
||||
|
||||
var/delay_length = round(active_regen_delay * species.active_regen_mult)
|
||||
if(do_after(src,delay_length))
|
||||
if(do_after(src, delay_length, target = src))
|
||||
adjust_nutrition(-200)
|
||||
|
||||
for(var/obj/item/organ/I in internal_organs)
|
||||
|
||||
@@ -176,7 +176,7 @@
|
||||
var/score2 = (scale2 * strength2)
|
||||
|
||||
var/competition = pick(score1;player1, score2;player2)
|
||||
if(!do_after(player1, 50, player2))
|
||||
if(!do_after(player1, 5 SECONDS, target = player2))
|
||||
player2.visible_message(span_notice("The players cancelled their competition!"))
|
||||
return 0
|
||||
if(!hand_games_check(player1,player2))
|
||||
@@ -223,7 +223,7 @@
|
||||
var/score2 = (scale2 * strength2)
|
||||
|
||||
var/competition = pick(score1;player1, score2;player2)
|
||||
if(!do_after(player1, 10, player2))
|
||||
if(!do_after(player1, 1 SECOND, target = player2))
|
||||
player2.visible_message(span_notice("The players cancelled their competition!"))
|
||||
return 0
|
||||
if(!hand_games_check(player1,player2))
|
||||
@@ -248,7 +248,7 @@
|
||||
if(!hand_games_check(player1,player2))
|
||||
return
|
||||
player1.visible_message(span_notice("[player1] challenges [player2] to a thumb war!"))
|
||||
if(!do_after(player1, 50, player2))
|
||||
if(!do_after(player1, 5 SECONDS, target = player2))
|
||||
player2.visible_message(span_notice("The players cancelled their thumb war!"))
|
||||
return 0
|
||||
if(!hand_games_check(player1,player2))
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
span_warning("You gnaw on \the [SJ]. (This will take around [round(breakouttime / 600)] minutes and you need to stand still.)")
|
||||
)
|
||||
|
||||
if(do_after(src, breakouttime, timed_action_flags = IGNORE_INCAPACITATED))
|
||||
if(do_after(src, breakouttime, target = src, timed_action_flags = IGNORE_INCAPACITATED))
|
||||
if(!wear_suit)
|
||||
return
|
||||
visible_message(
|
||||
@@ -74,7 +74,7 @@
|
||||
span_warning("You attempt to rip your [wear_suit.name] apart. (This will take around 5 seconds and you need to stand still)")
|
||||
)
|
||||
|
||||
if(do_after(src, 20 SECONDS, timed_action_flags = IGNORE_INCAPACITATED)) // Same scaling as breaking cuffs, 5 seconds to 120 seconds, 20 seconds to 480 seconds.
|
||||
if(do_after(src, 20 SECONDS, target = src, timed_action_flags = IGNORE_INCAPACITATED)) // Same scaling as breaking cuffs, 5 seconds to 120 seconds, 20 seconds to 480 seconds.
|
||||
if(!wear_suit || buckled)
|
||||
return
|
||||
|
||||
|
||||
@@ -145,7 +145,7 @@
|
||||
return
|
||||
else
|
||||
visible_message(span_infoplain(span_bold("\The [src]") + " begins to change the form of \the [I]."))
|
||||
if(!do_after(src, 10 SECONDS, I))
|
||||
if(!do_after(src, 10 SECONDS, target = I))
|
||||
visible_message(span_infoplain(span_bold("\The [src]") + " leaves \the [I] in its original form."))
|
||||
return 0
|
||||
visible_message(span_infoplain(span_bold("\The [src]") + " transmutes \the [I] into \the [transmute_product.name]."))
|
||||
@@ -185,7 +185,7 @@
|
||||
if(species.lleill_energy < energy_cost_spawn)
|
||||
to_chat(src, span_warning("You do not have enough energy to do that!"))
|
||||
return
|
||||
if(!do_after(src, 10 SECONDS, src))
|
||||
if(!do_after(src, 10 SECONDS, target = src))
|
||||
src.visible_message(span_infoplain(span_bold("\The [src]") + " begins to form white rings on the ground."))
|
||||
return 0
|
||||
to_chat(src, span_warning("You place a new glamour ring at your feet."))
|
||||
@@ -315,7 +315,7 @@
|
||||
src.visible_message(span_infoplain(span_bold("\The [src]") + " boops [chosen_target] on the nose."))
|
||||
if(contact_type == "Custom")
|
||||
src.visible_message(span_infoplain("[custom_text]"))
|
||||
if(!do_after(src, 10 SECONDS, chosen_target))
|
||||
if(!do_after(src, 10 SECONDS, target = chosen_target))
|
||||
src.visible_message(span_infoplain(span_bold("\The [src]") + " and \the [chosen_target] break contact before energy has been transferred."))
|
||||
return
|
||||
src.visible_message(span_infoplain(span_bold("\The [src]") + " and \the [chosen_target] complete their contact."))
|
||||
@@ -366,7 +366,7 @@
|
||||
return
|
||||
else
|
||||
visible_message(span_infoplain(span_bold("\The [src]") + " begins to change the form of \the [I]."))
|
||||
if(!do_after(src, 10 SECONDS, I))
|
||||
if(!do_after(src, 10 SECONDS, target = I))
|
||||
visible_message(span_infoplain(span_bold("\The [src]") + " leaves \the [I] in its original form."))
|
||||
return 0
|
||||
visible_message(span_infoplain(span_bold("\The [src]") + " transmutes \the [I] into \the [transmute_product.name]."))
|
||||
@@ -457,7 +457,7 @@
|
||||
return
|
||||
|
||||
visible_message(span_infoplain(span_bold("\The [src]") + " begins significantly shifting their form."))
|
||||
if(!do_after(src, 10 SECONDS, src))
|
||||
if(!do_after(src, 10 SECONDS, target = src))
|
||||
visible_message(span_infoplain(span_bold("\The [src]") + " ceases shifting their form."))
|
||||
return 0
|
||||
|
||||
@@ -548,7 +548,7 @@
|
||||
return
|
||||
|
||||
visible_message(span_infoplain(span_bold("\The [src]") + " begins significantly shifting their form."))
|
||||
if(!do_after(src, 10 SECONDS, src))
|
||||
if(!do_after(src, 10 SECONDS, target = src))
|
||||
visible_message(span_infoplain(span_bold("\The [src]") + " ceases shifting their form."))
|
||||
return 0
|
||||
visible_message(span_infoplain(span_bold("\The [src]") + " has reverted to their original form."))
|
||||
@@ -666,7 +666,7 @@
|
||||
return
|
||||
|
||||
visible_message(span_infoplain(span_bold("\The [src]") + " begins significantly shifting their form."))
|
||||
if(!do_after(src, 10 SECONDS, src))
|
||||
if(!do_after(src, 10 SECONDS, target = src))
|
||||
visible_message(span_infoplain(span_bold("\The [src]") + " ceases shifting their form."))
|
||||
return 0
|
||||
|
||||
|
||||
@@ -255,7 +255,7 @@
|
||||
|
||||
if(m_action == "Yes")
|
||||
to_chat(M, span_warning("You begin to break the lines of the glamour ring."))
|
||||
if(!do_after(M, 10 SECONDS, src))
|
||||
if(!do_after(M, 10 SECONDS, target = src))
|
||||
to_chat(M, span_warning("You leave the glamour ring alone."))
|
||||
return
|
||||
to_chat(M, span_warning("You have destroyed \the [src]."))
|
||||
@@ -270,7 +270,7 @@
|
||||
if(LL.ring_cooldown + 10 MINUTES > world.time)
|
||||
to_chat(M, span_warning("You must wait a while before drawing energy from the glamour again."))
|
||||
return
|
||||
if(!do_after(M, 10 SECONDS, src))
|
||||
if(!do_after(M, 10 SECONDS, target = src))
|
||||
to_chat(M, span_warning("You stop drawing energy."))
|
||||
return
|
||||
LL.lleill_energy = min((LL.lleill_energy + 75),LL.lleill_energy_max)
|
||||
|
||||
@@ -595,7 +595,7 @@ var/list/wrapped_species_by_ref = list()
|
||||
oocnotes = 1
|
||||
to_chat(character, span_notify("You begin to reform. You will need to remain still."))
|
||||
character.visible_message(span_notify("[character] rapidly contorts and shifts!"), span_danger("You begin to reform."))
|
||||
if(do_after(character, 40))
|
||||
if(do_after(character, 4 SECONDS, target = src))
|
||||
if(character.client.prefs) //Make sure we didn't d/c
|
||||
character.client.prefs.vanity_copy_to(src, FALSE, flavour, oocnotes, FALSE, FALSE)
|
||||
character.visible_message(span_notify("[character] adopts a new form!"), span_danger("You have reformed."))
|
||||
@@ -653,7 +653,7 @@ var/list/wrapped_species_by_ref = list()
|
||||
|
||||
to_chat(character, span_notify("You begin to reassemble into [victim]. You will need to remain still."))
|
||||
character.visible_message(span_notify("[character] rapidly contorts and shifts!"), span_danger("You begin to reassemble into [victim]."))
|
||||
if(do_after(character, 40))
|
||||
if(do_after(character, 4 SECONDS, target = victim))
|
||||
checking = FALSE
|
||||
for(var/obj/item/grab/G in character)
|
||||
if(G.affecting == victim && G.state >= GRAB_AGGRESSIVE)
|
||||
|
||||
@@ -440,7 +440,7 @@
|
||||
to_chat(src,span_warning("You can't change forms while inside something."))
|
||||
return
|
||||
to_chat(src, span_notice("You rapidly disassociate your form."))
|
||||
if(force || do_after(src,20))
|
||||
if(force || do_after(src, 2 SECONDS, target = src))
|
||||
handle_grasp() //It's possible to blob out before some key parts of the life loop. This results in things getting dropped at null. TODO: Fix the code so this can be done better.
|
||||
remove_micros(src, src) //Living things don't fare well in roblobs.
|
||||
if(buckled)
|
||||
@@ -554,7 +554,7 @@
|
||||
to_chat(blob,span_warning("You can't change forms while inside something."))
|
||||
return
|
||||
to_chat(src, span_notice("You rapidly reassemble your form."))
|
||||
if(force || do_after(blob,20))
|
||||
if(force || do_after(blob, 2 SECONDS, target = src))
|
||||
if(buckled)
|
||||
buckled.unbuckle_mob()
|
||||
if(LAZYLEN(buckled_mobs))
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
else
|
||||
blob = temporary_form
|
||||
active_regen = 1
|
||||
if(do_after(blob,50))
|
||||
if(do_after(blob, 5 SECONDS, target = src))
|
||||
var/list/limblist = species.has_limbs[choice]
|
||||
var/limbpath = limblist["path"]
|
||||
var/obj/item/organ/external/new_eo = new limbpath(src)
|
||||
@@ -106,7 +106,7 @@
|
||||
var/obj/item/organ/internal/nano/refactory/refactory = nano_get_refactory()
|
||||
if(refactory.get_stored_material(MAT_STEEL) >= 10000)
|
||||
to_chat(protie, span_notify("You begin to rebuild. You will need to remain still."))
|
||||
if(do_after(protie, 400))
|
||||
if(do_after(protie, 40 SECONDS, target = src))
|
||||
if(species?:OurRig) //Unsafe, but we should only ever be using this with a Protean
|
||||
species?:OurRig?:make_alive(src,1) //Re-using this proc
|
||||
refactory.use_stored_material(MAT_STEEL,refactory.get_stored_material(MAT_STEEL)) //Use all of our steel
|
||||
@@ -129,7 +129,7 @@
|
||||
oocnotes = 1
|
||||
to_chat(protie, span_notify("You begin to reassemble. You will need to remain still."))
|
||||
protie.visible_message(span_notify("[protie] rapidly contorts and shifts!"), span_danger("You begin to reassemble."))
|
||||
if(do_after(protie, 40))
|
||||
if(do_after(protie, 4 SECONDS, target = src))
|
||||
if(protie.client.prefs) //Make sure we didn't d/c
|
||||
var/obj/item/rig/protean/Rig = species?:OurRig
|
||||
protie.client.prefs.vanity_copy_to(src, FALSE, flavour, oocnotes, TRUE, FALSE)
|
||||
@@ -191,7 +191,7 @@
|
||||
|
||||
to_chat(protie, span_notify("You begin to reassemble into [victim]. You will need to remain still."))
|
||||
protie.visible_message(span_notify("[protie] rapidly contorts and shifts!"), span_danger("You begin to reassemble into [victim]."))
|
||||
if(do_after(protie, 40))
|
||||
if(do_after(protie, 4 SECONDS, target = src))
|
||||
checking = FALSE
|
||||
for(var/obj/item/grab/G in protie)
|
||||
if(G.affecting == victim && G.state >= GRAB_AGGRESSIVE)
|
||||
@@ -327,7 +327,7 @@
|
||||
to_chat(protie, span_warning("You need to be repaired first before you can act!"))
|
||||
return
|
||||
to_chat(protie, span_notice("You rapidly condense into your module."))
|
||||
if(forced || do_after(protie,20))
|
||||
if(forced || do_after(protie, 2 SECONDS, target = src))
|
||||
if(!temporary_form) //If you're human, force you into blob form before rig'ing
|
||||
nano_blobform(forced)
|
||||
spawn(2)
|
||||
@@ -700,7 +700,7 @@
|
||||
return
|
||||
if(G.loc == protie && G.state >= GRAB_AGGRESSIVE)
|
||||
protie.visible_message(span_warning("[protie] is attempting to latch onto [target]!"), span_danger("You attempt to latch onto [target]!"))
|
||||
if(do_after(protie, 50, target))
|
||||
if(do_after(protie, 5 SECONDS, target))
|
||||
if(G.loc == protie && G.state >= GRAB_AGGRESSIVE)
|
||||
target.drop_from_inventory(target.back)
|
||||
protie.visible_message(span_danger("[protie] latched onto [target]!"), span_danger("You latch yourself onto [target]!"))
|
||||
|
||||
@@ -250,13 +250,13 @@
|
||||
if(1)
|
||||
if(W.has_tool_quality(TOOL_SCREWDRIVER))
|
||||
playsound(src, W.usesound, 50, 1)
|
||||
if(do_after(user,50,src))
|
||||
if(do_after(user, 5 SECONDS, target = src))
|
||||
to_chat(user, span_notice("You unscrew the maintenace panel on the [src]."))
|
||||
dead +=1
|
||||
return
|
||||
if(2)
|
||||
if(istype(W, /obj/item/protean_reboot))//placeholder
|
||||
if(do_after(user,50,src))
|
||||
if(do_after(user, 5 SECONDS, target = src))
|
||||
playsound(src, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
to_chat(user, span_notice("You carefully slot [W] in the [src]."))
|
||||
dead +=1
|
||||
@@ -264,7 +264,7 @@
|
||||
return
|
||||
if(3)
|
||||
if(istype(W, /obj/item/stack/nanopaste))
|
||||
if(do_after(user,50,src))
|
||||
if(do_after(user, 5 SECONDS, target = src))
|
||||
playsound(src, 'sound/effects/ointment.ogg', 50, 1)
|
||||
to_chat(user, span_notice("You slather the interior confines of the [src] with the [W]."))
|
||||
dead +=1
|
||||
@@ -274,9 +274,9 @@
|
||||
if(istype(W, /obj/item/shockpaddles))
|
||||
if(W?:can_use(user))
|
||||
to_chat(user, span_notice("You hook up the [W] to the contact points in the maintenance assembly"))
|
||||
if(do_after(user,50,src))
|
||||
if(do_after(user, 5 SECONDS, target = src))
|
||||
playsound(src, 'sound/machines/defib_charge.ogg', 50, 0)
|
||||
if(do_after(user,10,src))
|
||||
if(do_after(user, 1 SECOND, target = src))
|
||||
playsound(src, 'sound/machines/defib_zap.ogg', 50, 1, -1)
|
||||
playsound(src, 'sound/machines/defib_success.ogg', 50, 0)
|
||||
new /obj/effect/gibspawner/robot(src.loc)
|
||||
@@ -311,7 +311,7 @@
|
||||
|
||||
var/obj/item/rig_module/mod = W
|
||||
to_chat(user, "You begin installing \the [mod] into \the [src].")
|
||||
if(!do_after(user,40))
|
||||
if(!do_after(user, 4 SECONDS, target = src))
|
||||
return
|
||||
if(!user || !W)
|
||||
return
|
||||
|
||||
@@ -117,7 +117,7 @@
|
||||
to_chat(src, span_warning("This is going to cause [B] to keep bleeding!"))
|
||||
to_chat(B, span_danger("You are going to keep bleeding from this bite!"))
|
||||
|
||||
if(do_after(src, 300, B)) //Thrirty seconds.
|
||||
if(do_after(src, 30 SECONDS, target = B))
|
||||
if(!Adjacent(B)) return
|
||||
if(noise)
|
||||
src.visible_message(span_infoplain(span_red(span_bold("[src] suddenly extends their fangs and plunges them down into [B]'s neck!"))))
|
||||
@@ -493,7 +493,7 @@
|
||||
last_special = world.time + vore_shred_time
|
||||
visible_message(span_danger("[src] appears to be preparing to do something to [T]!")) //Let everyone know that bad times are ahead
|
||||
|
||||
if(do_after(src, vore_shred_time, T)) //Ten seconds. You have to be in a neckgrab for this, so you're already in a bad position.
|
||||
if(do_after(src, vore_shred_time, target = T)) //Ten seconds. You have to be in a neckgrab for this, so you're already in a bad position.
|
||||
if(can_shred(T) != T)
|
||||
to_chat(src,span_warning("Looks like you lost your chance..."))
|
||||
return
|
||||
@@ -634,7 +634,7 @@
|
||||
to_chat(src, span_warning("You can't do that in your current state."))
|
||||
return
|
||||
|
||||
if(do_after(src, 25))
|
||||
if(do_after(src, 25, target = src))
|
||||
var/obj/item/storage/vore_egg/bugcocoon/C = new(loc)
|
||||
forceMove(C)
|
||||
|
||||
@@ -726,7 +726,7 @@
|
||||
to_chat(target, span_critical("Something begins to circle around you in the water!")) //Dun dun...
|
||||
var/starting_loc = target.loc
|
||||
|
||||
if(do_after(src, 50))
|
||||
if(do_after(src, 5 SECONDS, target))
|
||||
if(target.loc != starting_loc)
|
||||
to_chat(target, span_warning("You got away from whatever that was..."))
|
||||
to_chat(src, span_notice("They got away."))
|
||||
@@ -1158,7 +1158,7 @@
|
||||
|
||||
|
||||
visible_message(span_warning("[src] is preparing to [trait_injection_verb] [target]!"))
|
||||
if(do_after(src, 50, target)) //A decent enough timer.
|
||||
if(do_after(src, 5 SECONDS, target)) //A decent enough timer.
|
||||
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)
|
||||
@@ -1223,7 +1223,7 @@
|
||||
|
||||
src.visible_message(span_bolddanger("[src] moves their head next to [T]'s neck, seemingly looking for something!"))
|
||||
|
||||
if(do_after(src, 300, T)) //Thrirty seconds.
|
||||
if(do_after(src, 30 SECONDS, target = T)) //Thrirty seconds.
|
||||
if(choice == REAGENT_APHRODISIAC)
|
||||
src.show_message(span_warning("You sink your fangs into [T] and inject your aphrodisiac!"))
|
||||
src.visible_message(span_red("[src] sinks their fangs into [T]!"))
|
||||
@@ -1317,7 +1317,7 @@ var/eggs = 0
|
||||
if(!choice)
|
||||
return
|
||||
|
||||
if(do_after(src, 300)) //Thrirty seconds.
|
||||
if(do_after(src, 30 SECONDS, target = src)) //Thrirty seconds.
|
||||
if(choice == "Make a Egg")
|
||||
src.show_message(span_warning("You feel your belly bulging a bit, you made an egg!"))
|
||||
C.nutrition -=150
|
||||
|
||||
@@ -13,22 +13,22 @@
|
||||
// Handle things that are part of this interface but not removing/replacing a given item.
|
||||
if("pockets")
|
||||
visible_message(span_danger("\The [user] is trying to empty \the [src]'s pockets!"))
|
||||
if(do_after(user,HUMAN_STRIP_DELAY,src))
|
||||
if(do_after(user, HUMAN_STRIP_DELAY, target = src))
|
||||
empty_pockets(user)
|
||||
return
|
||||
if("splints")
|
||||
visible_message(span_danger("\The [user] is trying to remove \the [src]'s splints!"))
|
||||
if(do_after(user,HUMAN_STRIP_DELAY,src))
|
||||
if(do_after(user, HUMAN_STRIP_DELAY, target = src))
|
||||
remove_splints(user)
|
||||
return
|
||||
if("sensors")
|
||||
visible_message(span_danger("\The [user] is trying to set \the [src]'s sensors!"))
|
||||
if(do_after(user,HUMAN_STRIP_DELAY,src))
|
||||
if(do_after(user, HUMAN_STRIP_DELAY, target = src))
|
||||
toggle_sensors(user)
|
||||
return
|
||||
if("internals")
|
||||
visible_message(span_danger("\The [user] is trying to set \the [src]'s internals!"))
|
||||
if(do_after(user,HUMAN_STRIP_DELAY,src))
|
||||
if(do_after(user, HUMAN_STRIP_DELAY, target = src))
|
||||
toggle_internals(user)
|
||||
return
|
||||
if("tie")
|
||||
@@ -40,7 +40,7 @@
|
||||
return
|
||||
visible_message(span_danger("\The [user] is trying to remove \the [src]'s [A.name]!"))
|
||||
|
||||
if(!do_after(user,HUMAN_STRIP_DELAY,src))
|
||||
if(!do_after(user, HUMAN_STRIP_DELAY, target = src))
|
||||
return
|
||||
|
||||
if(!A || suit.loc != src || !(A in suit.accessories))
|
||||
@@ -104,7 +104,7 @@
|
||||
else
|
||||
visible_message(span_danger("\The [user] is trying to put \a [wrapped] on \the [src]!"))
|
||||
|
||||
if(!do_after(user,HUMAN_STRIP_DELAY,src))
|
||||
if(!do_after(user, HUMAN_STRIP_DELAY, target = src))
|
||||
return
|
||||
|
||||
if(!stripping)
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
span_warning("You attempt to unbuckle yourself. (This will take around 2 minutes and you need to stand still)")
|
||||
)
|
||||
|
||||
if(do_after(src, 2 MINUTES, timed_action_flags = IGNORE_INCAPACITATED))
|
||||
if(do_after(src, 2 MINUTES, target = src, timed_action_flags = IGNORE_INCAPACITATED))
|
||||
if(!buckled)
|
||||
return
|
||||
visible_message(span_danger("[src] manages to unbuckle themself!"),
|
||||
|
||||
@@ -117,7 +117,7 @@
|
||||
return
|
||||
|
||||
visible_message(span_warning("[src] begins chargin' their lazor!"))
|
||||
if(!do_after(src, 5 SECONDS, chosen_target))
|
||||
if(!do_after(src, 5 SECONDS, target = chosen_target))
|
||||
return
|
||||
if(chosen_target.z != src.z || get_dist(src,chosen_target) > 7)
|
||||
return
|
||||
|
||||
@@ -790,7 +790,7 @@ var/list/ai_verbs_default = list(
|
||||
if(anchored)
|
||||
playsound(src, W.usesound, 50, 1)
|
||||
user.visible_message(span_notice("\The [user] starts to unbolt \the [src] from the plating..."))
|
||||
if(!do_after(user,40 * W.toolspeed))
|
||||
if(!do_after(user, 4 SECONDS * W.toolspeed, target = src))
|
||||
user.visible_message(span_notice("\The [user] decides not to unbolt \the [src]."))
|
||||
return
|
||||
user.visible_message(span_notice("\The [user] finishes unfastening \the [src]!"))
|
||||
@@ -799,7 +799,7 @@ var/list/ai_verbs_default = list(
|
||||
else
|
||||
playsound(src, W.usesound, 50, 1)
|
||||
user.visible_message(span_notice("\The [user] starts to bolt \the [src] to the plating..."))
|
||||
if(!do_after(user,40 * W.toolspeed))
|
||||
if(!do_after(user, 4 SECONDS * W.toolspeed, target = src))
|
||||
user.visible_message(span_notice("\The [user] decides not to bolt \the [src]."))
|
||||
return
|
||||
user.visible_message(span_notice("\The [user] finishes fastening down \the [src]!"))
|
||||
|
||||
@@ -38,13 +38,13 @@
|
||||
if(stat == DEAD)
|
||||
healths.icon_state = "health7"
|
||||
|
||||
/mob/living/silicon/pai/proc/full_restore()
|
||||
/mob/living/silicon/pai/proc/full_restore() //This is using do_after all kinds of weird...
|
||||
adjustBruteLoss(- bruteloss)
|
||||
adjustFireLoss(- fireloss)
|
||||
do_after(src, 1 SECONDS)
|
||||
do_after(src, 1 SECONDS, target = src)
|
||||
card.setEmotion(16)
|
||||
stat = CONSCIOUS
|
||||
do_after(src, 5 SECONDS)
|
||||
do_after(src, 5 SECONDS, target = src)
|
||||
var/mob/observer/dead/ghost = src.get_ghost()
|
||||
if(ghost)
|
||||
ghost.notify_revive("Someone is trying to revive you. Re-enter your body if you want to be revived!", 'sound/effects/pai-restore.ogg', source = card)
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
if(!R.use_direct_power(power_tick, 500)) //We don't want to drain ourselves too far down during exploration
|
||||
to_chat(R, span_warning("Not enough power to initialize the repair system."))
|
||||
return
|
||||
if(do_after(R, tick_delay))
|
||||
if(do_after(R, tick_delay, target = R))
|
||||
if(!C)
|
||||
return
|
||||
C.brute_damage -= min(C.brute_damage, heal_per_tick)
|
||||
|
||||
@@ -249,7 +249,7 @@
|
||||
return
|
||||
to_chat(user, span_filter_notice("It has [uses] lights remaining. Attempting to fabricate a replacement. Please stand still."))
|
||||
cooldown = 1
|
||||
if(do_after(user, 50))
|
||||
if(do_after(user, 5 SECONDS, target = src))
|
||||
glass.use_charge(125)
|
||||
add_uses(1)
|
||||
cooldown = 0
|
||||
@@ -282,7 +282,7 @@
|
||||
return
|
||||
busy = TRUE
|
||||
to_chat(user, span_notice("You begin to attach \the [C] to \the [A]..."))
|
||||
if(do_after(user, 30))
|
||||
if(do_after(user, 3 SECONDS, target = src))
|
||||
to_chat(user, span_notice("You have attached \the [src] to \the [A]."))
|
||||
var/obj/machinery/clamp/clamp = new/obj/machinery/clamp(A.loc, A)
|
||||
clamps.Add(clamp)
|
||||
@@ -292,7 +292,7 @@
|
||||
else
|
||||
busy = TRUE
|
||||
to_chat(user, span_notice("You begin to remove \the [C] from \the [A]..."))
|
||||
if(do_after(user, 30))
|
||||
if(do_after(user, 3 SECONDS, target = src))
|
||||
to_chat(user, span_notice("You have removed \the [src] from \the [A]."))
|
||||
clamps.Remove(C)
|
||||
qdel(C)
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
to_chat(user, span_warning("\The [target] is too large to fit into your [src.name]"))
|
||||
return
|
||||
user.visible_message(span_warning("[hound.name] is ingesting [target.name] into their [src.name]."), span_notice("You start ingesting [target] into your [src.name]..."))
|
||||
if(do_after(user, 30, target) && length(contents) < max_item_count)
|
||||
if(do_after(user, 3 SECONDS, target) && length(contents) < max_item_count)
|
||||
target.forceMove(src)
|
||||
user.visible_message(span_warning("[hound.name]'s [src.name] groans lightly as [target.name] slips inside."), span_notice("Your [src.name] groans lightly as [target] slips inside."))
|
||||
playsound(src, gulpsound, vol = 60, vary = 1, falloff = 0.1, preference = /datum/preference/toggle/eating_noises)
|
||||
@@ -103,7 +103,7 @@
|
||||
if(istype(target, /mob/living/simple_mob/animal/passive/mouse)) //Edible mice, dead or alive whatever. Mostly for carcass picking you cruel bastard :v
|
||||
var/mob/living/simple_mob/trashmouse = target
|
||||
user.visible_message(span_warning("[hound.name] is ingesting [trashmouse] into their [src.name]."), span_notice("You start ingesting [trashmouse] into your [src.name]..."))
|
||||
if(do_after(user, 30, trashmouse) && length(contents) < max_item_count)
|
||||
if(do_after(user, 3 SECONDS, target = trashmouse) && length(contents) < max_item_count)
|
||||
trashmouse.forceMove(src)
|
||||
trashmouse.reset_view(src)
|
||||
user.visible_message(span_warning("[hound.name]'s [src.name] groans lightly as [trashmouse] slips inside."), span_notice("Your [src.name] groans lightly as [trashmouse] slips inside."))
|
||||
@@ -123,7 +123,7 @@
|
||||
to_chat(user, span_warning("[trashman] is buckled and can not be put into your [src.name]."))
|
||||
return
|
||||
user.visible_message(span_warning("[hound.name] is ingesting [trashman] into their [src.name]."), span_notice("You start ingesting [trashman] into your [src.name]..."))
|
||||
if(do_after(user, 30, trashman) && !patient && !trashman.buckled && length(contents) < max_item_count)
|
||||
if(do_after(user, 3 SECONDS, target = trashman) && !patient && !trashman.buckled && length(contents) < max_item_count)
|
||||
trashman.forceMove(src)
|
||||
trashman.reset_view(src)
|
||||
START_PROCESSING(SSobj, src)
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
|
||||
to_chat(D, span_danger("You begin decompiling [M]."))
|
||||
|
||||
if(!do_after(D,50))
|
||||
if(!do_after(D, 5 SECONDS, target = src))
|
||||
to_chat(D, span_danger("You need to remain still while decompiling such a large object."))
|
||||
return
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
|
||||
to_chat(D, span_danger("You begin decompiling [M]."))
|
||||
|
||||
if(!do_after(D,50))
|
||||
if(!do_after(D, 5 SECONDS, target = src))
|
||||
to_chat(D, span_danger("You need to remain still while decompiling such a large object."))
|
||||
return
|
||||
|
||||
|
||||
@@ -773,7 +773,7 @@
|
||||
if(bolt)
|
||||
to_chat(user,span_filter_notice("You begin removing \the [bolt]."))
|
||||
|
||||
if(do_after(user, 2 SECONDS, src))
|
||||
if(do_after(user, 2 SECONDS, target = src))
|
||||
bolt.forceMove(get_turf(src))
|
||||
bolt = null
|
||||
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
LAZYREMOVE(stored_atoms, remove_ref)
|
||||
else
|
||||
user.visible_message(span_infoplain(span_bold("\The [user]") + " begins unloading \the [removing] from \the [src]'s cargo compartment."))
|
||||
if(do_after(user, 3 SECONDS, src) && !QDELETED(removing) && removing.loc == src)
|
||||
if(do_after(user, 3 SECONDS, target = src) && !QDELETED(removing) && removing.loc == src)
|
||||
drop_stored_atom(removing, user)
|
||||
return TRUE
|
||||
|
||||
@@ -127,7 +127,7 @@
|
||||
visible_message(span_infoplain(span_bold("\The [src]") + " begins loading \the [dropping] into its cargo compartment."))
|
||||
else
|
||||
user.visible_message(span_infoplain(span_bold("\The [user]") + " begins loading \the [dropping] into \the [src]'s cargo compartment."))
|
||||
if(do_after(user, 3 SECONDS, src) && can_mouse_drop(dropping, user) && can_store_atom(dropping, user))
|
||||
if(do_after(user, 3 SECONDS, target = src) && can_mouse_drop(dropping, user) && can_store_atom(dropping, user))
|
||||
store_atom(dropping, user)
|
||||
return FALSE
|
||||
|
||||
|
||||
@@ -163,7 +163,7 @@
|
||||
set waitfor = FALSE
|
||||
set_AI_busy(TRUE)
|
||||
|
||||
if(do_after(src, reload_time))
|
||||
if(do_after(src, reload_time, target = src))
|
||||
if(reload_sound)
|
||||
playsound(src, reload_sound, 70, 1)
|
||||
reload_count = 0
|
||||
|
||||
@@ -92,7 +92,7 @@
|
||||
if(!that_one)
|
||||
return ..()
|
||||
to_chat(that_one, span_danger("\The [user]'s hand reaches toward you!!!"))
|
||||
if(!do_after(user, 3 SECONDS, src))
|
||||
if(!do_after(user, 3 SECONDS, target = src))
|
||||
return ..()
|
||||
if(!istype(that_one.loc,/turf/simulated/floor/outdoors/fur))
|
||||
to_chat(user, span_warning("\The [that_one] got away..."))
|
||||
@@ -266,7 +266,7 @@
|
||||
|
||||
to_chat(src, span_notice("You begin to eat \the [E]..."))
|
||||
|
||||
if(!do_after(src, 20 SECONDS, E))
|
||||
if(!do_after(src, 20 SECONDS, target = E))
|
||||
return
|
||||
to_chat(src, span_notice("[msg]"))
|
||||
if(nut || aff)
|
||||
@@ -332,7 +332,7 @@
|
||||
to_chat(src, span_warning("You decide not to transition."))
|
||||
return
|
||||
to_chat(src, span_notice("You begin to transition down to \the [our_dest], stay still..."))
|
||||
if(!do_after(src, 15 SECONDS))
|
||||
if(!do_after(src, 15 SECONDS, target = src))
|
||||
to_chat(src, span_warning("You were interrupted."))
|
||||
return
|
||||
visible_message(span_warning("\The [src] disappears!!!"))
|
||||
@@ -343,7 +343,7 @@
|
||||
|
||||
else
|
||||
to_chat(src, span_notice("You begin to transition back to space, stay still..."))
|
||||
if(!do_after(src, 15 SECONDS))
|
||||
if(!do_after(src, 15 SECONDS, target = src))
|
||||
to_chat(src, span_warning("You were interrupted."))
|
||||
return
|
||||
|
||||
@@ -1059,7 +1059,7 @@
|
||||
to_chat(user, span_warning("You can see \the [controller] inside! Tendrils of nerves seem to have attached themselves to \the [controller]! There's no room for you right now!"))
|
||||
return
|
||||
user.visible_message(span_notice("\The [user] reaches out to touch \the [src]..."),span_notice("You reach out to touch \the [src]..."))
|
||||
if(!do_after(user, 10 SECONDS, src))
|
||||
if(!do_after(user, 10 SECONDS, target = src))
|
||||
user.visible_message(span_warning("\The [user] pulls back from \the [src]."),span_warning("You pull back from \the [src]."))
|
||||
return
|
||||
if(controller) //got busy while you were waiting, get rekt
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
to_chat(M, "Something slimy begins probing at the opening of your ear canal...")
|
||||
to_chat(src, span_warning("You slither up [M] and begin probing at their ear canal..."))
|
||||
|
||||
if(!do_after(src,30))
|
||||
if(!do_after(src, 3 SECONDS, target = M))
|
||||
to_chat(src, span_warning("As [M] moves away, you are dislodged and fall to the ground."))
|
||||
return
|
||||
|
||||
|
||||
@@ -470,7 +470,7 @@ GLOBAL_LIST_EMPTY(wounds_being_tended_by_drakes)
|
||||
global.wounds_being_tended_by_drakes[friend_ref] = world.time + (8 SECONDS)
|
||||
set_AI_busy(TRUE)
|
||||
|
||||
if(!do_after(src, 8 SECONDS, friend) || QDELETED(friend) || friend.has_modifier_of_type(/datum/modifier/sifsap_salve) || incapacitated() || !spend_sap(10))
|
||||
if(!do_after(src, 8 SECONDS, target = friend) || QDELETED(friend) || friend.has_modifier_of_type(/datum/modifier/sifsap_salve) || incapacitated() || !spend_sap(10))
|
||||
global.wounds_being_tended_by_drakes -= friend_ref
|
||||
set_AI_busy(FALSE)
|
||||
return TRUE
|
||||
|
||||
@@ -304,7 +304,7 @@
|
||||
M.take_damage(damage_to_apply)
|
||||
if(prob(3))
|
||||
visible_message(span_critical("\The [src] begins digging its claws into \the [M]'s hatch!"))
|
||||
if(do_after(src, 1 SECOND))
|
||||
if(do_after(src, 1 SECOND, target = M))
|
||||
visible_message(span_critical("\The [src] rips \the [M]'s access hatch open, dragging [M.occupant] out!"))
|
||||
M.go_out()
|
||||
|
||||
|
||||
@@ -279,7 +279,7 @@
|
||||
to_chat(user, span_notice("We cannot get through that host's protective gear."))
|
||||
return
|
||||
|
||||
if(!do_after(src,2))
|
||||
if(!do_after(src, 2, target))
|
||||
to_chat(user, span_notice("As [M] moves away, we are dislodged and fall to the ground."))
|
||||
return
|
||||
|
||||
|
||||
@@ -244,12 +244,12 @@
|
||||
/mob/living/simple_mob/animal/space/space_worm/proc/AttemptToEat(var/atom/target)
|
||||
if(istype(target,/turf/simulated/wall))
|
||||
var/turf/simulated/wall/W = target
|
||||
if((!W.reinf_material && do_after(src, 5 SECONDS)) || do_after(src, 10 SECONDS)) // 10 seconds for an R-wall, 5 seconds for a normal one.
|
||||
if((!W.reinf_material && do_after(src, 5 SECONDS, target)) || do_after(src, 10 SECONDS, target)) // 10 seconds for an R-wall, 5 seconds for a normal one.
|
||||
if(target)
|
||||
W.dismantle_wall()
|
||||
return 1
|
||||
else if(istype(target,/atom/movable))
|
||||
if(istype(target,/mob) || do_after(src, 5)) // 5 ticks to eat stuff like tables.
|
||||
if(istype(target,/mob) || do_after(src, 5, target)) // 5 ticks to eat stuff like tables.
|
||||
var/atom/movable/objectOrMob = target
|
||||
if(istype(objectOrMob, /obj/machinery/door)) // Doors and airlocks take time based on their durability and our damageo.
|
||||
var/obj/machinery/door/D = objectOrMob
|
||||
@@ -261,7 +261,7 @@
|
||||
objectOrMob = null
|
||||
break
|
||||
|
||||
if(do_after(src, 5))
|
||||
if(do_after(src, 5, target))
|
||||
D.visible_message(span_danger("Something crashes against \the [D]!"))
|
||||
D.take_damage(2 * melee_damage_upper)
|
||||
else
|
||||
@@ -279,7 +279,7 @@
|
||||
EF.visible_message(span_danger("Something begins forcing itself through \the [EF]!"))
|
||||
else
|
||||
EF.visible_message(span_danger("\The [src] begins forcing itself through \the [EF]!"))
|
||||
if(do_after(src, EF.strength * 5))
|
||||
if(do_after(src, EF.strength * 5, target))
|
||||
EF.adjust_strength(rand(-8, -10))
|
||||
EF.visible_message(span_danger("\The [src] crashes through \the [EF]!"))
|
||||
else
|
||||
|
||||
@@ -464,7 +464,7 @@
|
||||
return
|
||||
|
||||
visible_message("<b>\The [src]</b> begins significantly shifting their form.")
|
||||
if(!do_after(src, 10 SECONDS, src))
|
||||
if(!do_after(src, 10 SECONDS, target = src))
|
||||
visible_message("<b>\The [src]</b> ceases shifting their form.")
|
||||
return 0
|
||||
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
to_chat(src, span_danger("You begin to resist \the [prey_name]'s control!!!"))
|
||||
to_chat(pred_body, span_danger("You feel the captive mind of [src] begin to resist your control."))
|
||||
|
||||
if(do_after(src, 10 SECONDS))
|
||||
if(do_after(src, 10 SECONDS, target = prey_name))
|
||||
restore_control()
|
||||
else
|
||||
to_chat(src, span_notice("Your attempt to regain control has been interrupted..."))
|
||||
@@ -243,7 +243,7 @@
|
||||
|
||||
to_chat(pred, span_warning("You can feel the will of another overwriting your own, control of your body being sapped away from you..."))
|
||||
to_chat(prey, span_warning("You can feel the will of your host diminishing as you exert your will over them!"))
|
||||
if(!do_after(prey, 10 SECONDS))
|
||||
if(!do_after(prey, 10 SECONDS, target = pred))
|
||||
to_chat(prey, span_notice("Your attempt to regain control has been interrupted..."))
|
||||
to_chat(pred, span_notice("The dominant sensation fades away..."))
|
||||
return
|
||||
@@ -338,7 +338,7 @@
|
||||
to_chat(src, span_danger("You begin to resist \the [prey_name]'s control!!!"))
|
||||
to_chat(pred_body, span_danger("You feel the captive mind of [src] begin to resist your control."))
|
||||
|
||||
if(do_after(src, 10 SECONDS))
|
||||
if(do_after(src, 10 SECONDS, target = prey_name))
|
||||
restore_control()
|
||||
else
|
||||
to_chat(src, span_notice("Your attempt to regain control has been interrupted..."))
|
||||
@@ -394,7 +394,7 @@
|
||||
|
||||
if(istype(G) && M == G.affecting)
|
||||
src.visible_message(span_danger("[src] seems to be doing something to [M], resulting in [M]'s body looking increasingly drowsy with every passing moment!"))
|
||||
if(!do_after(src, 10 SECONDS))
|
||||
if(!do_after(src, 10 SECONDS, target = M))
|
||||
to_chat(M, span_notice("The alien presence fades, and you are left along in your body..."))
|
||||
to_chat(src, span_notice("Your attempt to gather [M]'s mind has been interrupted."))
|
||||
return
|
||||
@@ -443,9 +443,9 @@
|
||||
set desc = "If your body is inside of your predator still, attempts to re-insert yourself into it."
|
||||
|
||||
if(prey_body && prey_body.loc.loc == pred_body)
|
||||
to_chat(src, span_notice("You exert your will and attempt to return to yout body!!!"))
|
||||
to_chat(src, span_notice("You exert your will and attempt to return to your body!!!"))
|
||||
to_chat(pred_body, span_warning("\The [src] resists your hold and attempts to return to their body!"))
|
||||
if(do_after(src, 10 SECONDS))
|
||||
if(do_after(src, 10 SECONDS, target = pred_body))
|
||||
if(prey_body && prey_body.loc.loc == pred_body)
|
||||
|
||||
prey_body.ckey = prey_ckey
|
||||
@@ -512,7 +512,7 @@
|
||||
return
|
||||
to_chat(pred, span_warning("You diminish your will, reducing it and allowing will of your prey to take over..."))
|
||||
to_chat(prey, span_warning("You can feel the will of your host diminishing as you are given control over them!"))
|
||||
if(!do_after(pred, 10 SECONDS))
|
||||
if(!do_after(pred, 10 SECONDS, target = prey))
|
||||
to_chat(pred, span_notice("Your attempt to share control has been interrupted..."))
|
||||
to_chat(prey, span_notice("The dominant sensation fades away..."))
|
||||
return
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
EXTRAPOLATOR_ACT_ADD_DISEASES(., base_disease)
|
||||
// Still no idea why extrapolator == src, but I'll leave this for later if I find out.
|
||||
// if(!dry_run && !EXTRAPOLATOR_ACT_CHECK(., EXTRAPOLATOR_ACT_PRIORITY_SPECIAL) && extrapolator.create_culture(user, base_disease))
|
||||
if(do_after(user, 2 SECONDS))
|
||||
if(do_after(user, 2 SECONDS, target = src))
|
||||
user.visible_message(span_danger("[user] stabs [src] with [extrapolator], sucking it up!"), \
|
||||
span_danger("You stab [src] with [extrapolator]'s probe, destroying it!"))
|
||||
death()
|
||||
|
||||
@@ -211,7 +211,7 @@ GLOBAL_LIST_INIT(pitcher_plant_lure_messages, list(
|
||||
var/N = 0
|
||||
for(H in vore_selected.contents) //Only works for carbons, RIP mice. Should pick the first human the code finds.
|
||||
user.visible_message(span_infoplain("[user] uses a loop of wire to try fishing someone out of \the [src]."), span_infoplain("You use a loop of wire to try snagging someone trapped in \the [src]..."))
|
||||
if(do_after(user, rand(3 SECONDS, 7 SECONDS))) //You can just spam click to stack attempts if you feel like abusing it.
|
||||
if(do_after(user, rand(3 SECONDS, 7 SECONDS), target = src)) //You can just spam click to stack attempts if you feel like abusing it.
|
||||
if(prob(15))
|
||||
user.visible_message(span_notice("[user] pulls a sticky [H] free from \the [src]."), span_infoplain("You heft [H] free from \the [src]."))
|
||||
LAZYSET(prey_excludes, H, world.time)
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
span_notice("[user] begins freeing [victim] from \the [src]."),
|
||||
span_notice("You carefully begin to free [victim] from \the [src]."),
|
||||
)
|
||||
if(do_after(user, 5))
|
||||
if(do_after(user, 5, target = src))
|
||||
user.visible_message(span_notice("[victim] has been freed from \the [src] by [user]."))
|
||||
for(var/A in buckled_mobs)
|
||||
unbuckle_mob(A)
|
||||
|
||||
@@ -242,7 +242,7 @@
|
||||
escape_time = 0.5 * base_escape_time
|
||||
else
|
||||
escape_time = base_escape_time //Admeme size scale
|
||||
if(do_after(user, escape_time, src, timed_action_flags = IGNORE_INCAPACITATED))
|
||||
if(do_after(user, escape_time, target = src, timed_action_flags = IGNORE_INCAPACITATED))
|
||||
if(!has_buckled_mobs())
|
||||
return
|
||||
to_chat(user, "You tug free of the tacky, rubbery strands!")
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
return FALSE
|
||||
|
||||
/mob/living/simple_mob/proc/unique_tame_check(var/obj/O, var/mob/user)
|
||||
if(do_after(user, 0.5 SECONDS, src))
|
||||
if(do_after(user, 0.5 SECONDS, target = src))
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
|
||||
@@ -939,7 +939,7 @@
|
||||
else
|
||||
to_chat(U, span_warning("You attempt to get a good grip on [selection] in [S]'s body."))
|
||||
|
||||
if(!do_after(U, 30))
|
||||
if(!do_after(U, 3 SECONDS, target = src))
|
||||
return
|
||||
if(!selection || !S || !U)
|
||||
return
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
return
|
||||
|
||||
attacker.visible_message(span_danger("[attacker] starts forcing [target] to the ground!"))
|
||||
if(do_after(attacker, 20) && target)
|
||||
if(do_after(attacker, 2 SECONDS, target) && target)
|
||||
last_action = world.time
|
||||
attacker.visible_message(span_danger("[attacker] forces [target] to the ground!"))
|
||||
apply_pinning(target, attacker)
|
||||
|
||||
@@ -166,7 +166,7 @@
|
||||
return
|
||||
|
||||
to_chat(user, "You begin repairing damage to \the [src]...")
|
||||
if(WT.remove_fuel(round(damage/75)) && do_after(user, damage/10))
|
||||
if(WT.remove_fuel(round(damage/75)) && do_after(user, damage/10, target = src))
|
||||
damage = 0
|
||||
to_chat(user, "You repair \the [src].")
|
||||
return
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
user.visible_message("\The [user] starts to weld \the [src] to the floor.", \
|
||||
"You start to weld \the [src] to the floor.", \
|
||||
"You hear welding")
|
||||
if(do_after(user, 2 SECONDS))
|
||||
if(do_after(user, 2 SECONDS, target = src))
|
||||
if(QDELETED(src) || !WT.isOn()) return
|
||||
state = LADDER_CONSTRUCTION_WELDED
|
||||
to_chat(user, "You weld \the [src] to the floor.")
|
||||
@@ -64,7 +64,7 @@
|
||||
user.visible_message("\The [user] starts to cut \the [src] free from the floor.", \
|
||||
"You start to cut \the [src] free from the floor.", \
|
||||
"You hear welding")
|
||||
if(do_after(user, 2 SECONDS))
|
||||
if(do_after(user, 2 SECONDS, target = src))
|
||||
if(QDELETED(src) || !WT.isOn()) return
|
||||
state = LADDER_CONSTRUCTION_WRENCHED
|
||||
to_chat(user, "You cut \the [src] free from the floor.")
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
user.visible_message("\The [user] starts to deconstruct \the [src].", \
|
||||
"You start to deconstruct \the [src].", \
|
||||
"You hear welding")
|
||||
if(do_after(user, 2 SECONDS))
|
||||
if(do_after(user, 2 SECONDS, target = src))
|
||||
if(QDELETED(src) || !WT.isOn()) return
|
||||
var/obj/structure/ladder_assembly/A
|
||||
to_chat(user, "You deconstruct \the [src].")
|
||||
@@ -143,7 +143,7 @@
|
||||
var/mob/living/carbon/human/MS = M
|
||||
climb_modifier = MS.species.climb_mult
|
||||
|
||||
if(do_after(M, (climb_time * climb_modifier), src))
|
||||
if(do_after(M, (climb_time * climb_modifier), target = src))
|
||||
var/turf/T = get_turf(target_ladder)
|
||||
for(var/atom/A in T)
|
||||
if(!A.CanPass(M, M.loc, 1.5, 0))
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
var/pull_up_time = max((3 SECONDS + (src.movement_delay() * 10) * swim_modifier), 1)
|
||||
to_chat(src, span_notice("You start diving underwater..."))
|
||||
src.audible_message(span_notice("[src] begins to dive under the water."), runemessage = "splish splosh")
|
||||
if(do_after(src, pull_up_time))
|
||||
if(do_after(src, pull_up_time, target = src))
|
||||
to_chat(src, span_notice("You reach the sea floor."))
|
||||
else
|
||||
to_chat(src, span_warning("You stopped swimming downwards."))
|
||||
@@ -84,7 +84,7 @@
|
||||
var/pull_up_time = max((5 SECONDS + (src.movement_delay() * 10) * climb_modifier), 1)
|
||||
to_chat(src, span_notice("You grab \the [lattice] and start pulling yourself upward..."))
|
||||
src.audible_message(span_notice("[src] begins climbing up \the [lattice]."), runemessage = "clank clang")
|
||||
if(do_after(src, pull_up_time))
|
||||
if(do_after(src, pull_up_time, target = src))
|
||||
to_chat(src, span_notice("You pull yourself up."))
|
||||
else
|
||||
to_chat(src, span_warning("You gave up on pulling yourself up."))
|
||||
@@ -94,7 +94,7 @@
|
||||
var/pull_up_time = max((5 SECONDS + (src.movement_delay() * 10) * swim_modifier), 1)
|
||||
to_chat(src, span_notice("You start swimming upwards..."))
|
||||
src.audible_message(span_notice("[src] begins to swim towards the surface."), runemessage = "splish splosh")
|
||||
if(do_after(src, pull_up_time))
|
||||
if(do_after(src, pull_up_time, target = src))
|
||||
to_chat(src, span_notice("You reach the surface."))
|
||||
else
|
||||
to_chat(src, span_warning("You stopped swimming upwards."))
|
||||
@@ -109,7 +109,7 @@
|
||||
to_chat(src, span_notice("There's something in the way up above in that direction, try another."))
|
||||
return 0
|
||||
src.audible_message(span_notice("[src] begins climbing up \the [lattice]."), runemessage = "clank clang")
|
||||
if(do_after(src, pull_up_time))
|
||||
if(do_after(src, pull_up_time, target = src))
|
||||
to_chat(src, span_notice("You pull yourself up."))
|
||||
else
|
||||
to_chat(src, span_warning("You gave up on pulling yourself up."))
|
||||
@@ -130,7 +130,7 @@
|
||||
var/fly_time = max(7 SECONDS + (H.movement_delay() * 10), 1) //So it's not too useful for combat. Could make this variable somehow, but that's down the road.
|
||||
to_chat(src, span_notice("You begin to fly upwards..."))
|
||||
H.audible_message(span_notice("[H] begins to flap \his wings, preparing to move upwards!"), runemessage = "flap flap")
|
||||
if(do_after(H, fly_time) && H.flying)
|
||||
if(do_after(H, fly_time, target = src) && H.flying)
|
||||
to_chat(src, span_notice("You fly upwards."))
|
||||
else
|
||||
to_chat(src, span_warning("You stopped flying upwards."))
|
||||
|
||||
@@ -192,7 +192,7 @@
|
||||
var/oops_time = world.time
|
||||
var/grace_time = 4 SECONDS
|
||||
to_chat(L, span_warning("If you get interrupted after [(grace_time / (1 SECOND))] seconds of climbing, you will fall and hurt yourself, beware!"))
|
||||
if(do_after(L,climb_time))
|
||||
if(do_after(L, climb_time, target = src))
|
||||
if(prob(fall_chance))
|
||||
L.forceMove(above_mob)
|
||||
L.visible_message(message = span_infoplain(span_bold("[L]") + " falls off " + span_bold("\The [src]")), self_message = span_danger("You slipped off " + span_bold("\The [src]")), \
|
||||
@@ -315,7 +315,7 @@
|
||||
var/oops_time = world.time
|
||||
var/grace_time = 3 SECONDS
|
||||
to_chat(src, span_warning("If you get interrupted after [(grace_time / (1 SECOND))] seconds of climbing, you will fall and hurt yourself, beware!"))
|
||||
if(do_after(src,climb_time))
|
||||
if(do_after(src, climb_time, target = src))
|
||||
if(prob(fall_chance))
|
||||
src.forceMove(front_of_us)
|
||||
src.visible_message(message = span_infoplain(span_bold("[src]") + " falls off " + span_bold("\The [below_wall]")), \
|
||||
|
||||
@@ -228,7 +228,7 @@ You can also set the stat of a NIF to NIF_TEMPFAIL without any issues to disable
|
||||
//Attackby proc, for maintenance
|
||||
/obj/item/nif/attackby(obj/item/W, mob/user as mob)
|
||||
if(open == 0 && W.has_tool_quality(TOOL_SCREWDRIVER))
|
||||
if(do_after(user, 4 SECONDS, src) && open == 0)
|
||||
if(do_after(user, 4 SECONDS, target = src) && open == 0)
|
||||
user.visible_message("[user] unscrews and pries open \the [src].",span_notice("You unscrew and pry open \the [src]."))
|
||||
playsound(src, 'sound/items/Screwdriver.ogg', 50, 1)
|
||||
open = 1
|
||||
@@ -243,18 +243,18 @@ You can also set the stat of a NIF to NIF_TEMPFAIL without any issues to disable
|
||||
open = 3
|
||||
update_icon()
|
||||
return
|
||||
if(do_after(user, 6 SECONDS, src) && open == 1 && C.use(3))
|
||||
if(do_after(user, 6 SECONDS, target = src) && open == 1 && C.use(3))
|
||||
user.visible_message("[user] replaces some wiring in \the [src].",span_notice("You replace any burned out wiring in \the [src]."))
|
||||
playsound(src, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
open = 2
|
||||
update_icon()
|
||||
else if(open == 2 && istype(W,/obj/item/multitool))
|
||||
if(do_after(user, 8 SECONDS, src) && open == 2)
|
||||
if(do_after(user, 8 SECONDS, target = src) && open == 2)
|
||||
user.visible_message("[user] resets several circuits in \the [src].",span_notice("You find and repair any faulty circuits in \the [src]."))
|
||||
open = 3
|
||||
update_icon()
|
||||
else if(open == 3 && W.has_tool_quality(TOOL_SCREWDRIVER))
|
||||
if(do_after(user, 3 SECONDS, src) && open == 3)
|
||||
if(do_after(user, 3 SECONDS, target = src) && open == 3)
|
||||
user.visible_message("[user] closes up \the [src].",span_notice("You re-seal \the [src] for use once more."))
|
||||
playsound(src, 'sound/items/Screwdriver.ogg', 50, 1)
|
||||
open = FALSE
|
||||
|
||||
@@ -221,14 +221,14 @@
|
||||
icon_state = "[initial(icon_state)]-animate" //makes it play the item animation upon using on a valid target
|
||||
update_icon()
|
||||
|
||||
if(A == user && do_after(Hu,1 SECONDS,Ht))
|
||||
if(A == user && do_after(Hu, 1 SECONDS, target = Ht))
|
||||
if(Ht.isSynthetic())
|
||||
new stored_synthetic(Ht.nif,extra)
|
||||
qdel(src)
|
||||
else
|
||||
new stored_organic(Ht.nif,extra)
|
||||
qdel(src)
|
||||
else if(A != user && do_after(Hu,10 SECONDS,Ht))
|
||||
else if(A != user && do_after(Hu, 10 SECONDS, target = Ht))
|
||||
if(Ht.isSynthetic())
|
||||
new stored_synthetic(Ht.nif,extra)
|
||||
qdel(src)
|
||||
|
||||
@@ -155,7 +155,7 @@
|
||||
if(WT.remove_fuel(0,user))
|
||||
to_chat(user, span_notice("You start repairing the damage to [src]."))
|
||||
playsound(src, 'sound/items/Welder.ogg', 100, 1)
|
||||
if(do_after(user, max(5, damage / 5), src) && WT && WT.isOn())
|
||||
if(do_after(user, max(5, damage / 5), target = src) && WT && WT.isOn())
|
||||
to_chat(user, span_notice("You finish repairing the damage to [src]."))
|
||||
take_damage(-damage)
|
||||
else
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user