mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-13 16:13:49 +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:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user