more changes

This commit is contained in:
Pinta
2024-03-24 06:54:57 -04:00
parent 63009681fa
commit 6dcab06780
32 changed files with 140 additions and 140 deletions
+1 -1
View File
@@ -25,7 +25,7 @@ GLOBAL_VAR_INIT(highlander, FALSE)
send_to_playing_players("<span class='userdanger'>Bagpipes begin to blare. You feel Scottish pride coming over you.</span>")
message_admins("<span class='adminnotice'>[key_name_admin(usr)] used (delayed) THERE CAN BE ONLY ONE!</span>")
log_admin("[key_name(usr)] used delayed THERE CAN BE ONLY ONE.")
addtimer(CALLBACK(src, .proc/only_one), 420)
addtimer(CALLBACK(src,PROC_REF(only_one)), 420)
/mob/living/carbon/human/proc/make_scottish()
mind.add_antag_datum(/datum/antagonist/highlander)
+3 -3
View File
@@ -1351,7 +1351,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits
if (limb.body_part == HEAD || limb.body_part == CHEST)
continue
addtimer(CALLBACK(limb, /obj/item/bodypart/.proc/dismember), timer)
addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound, carbon_target, 'sound/effects/cartoon_pop.ogg', 70), timer)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(playsound), carbon_target, 'sound/effects/cartoon_pop.ogg', 70), timer)
addtimer(CALLBACK(carbon_target, /mob/living/.proc/spin, 4, 1), timer - 0.4 SECONDS)
timer += 2 SECONDS
if(ADMIN_PUNISHMENT_BREADIFY)
@@ -1359,14 +1359,14 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits
var/mutable_appearance/bread_appearance = mutable_appearance('icons/obj/food/burgerbread.dmi', "bread")
var/mutable_appearance/transform_scanline = mutable_appearance('icons/effects/effects.dmi', "transform_effect")
target.transformation_animation(bread_appearance, time = BREADIFY_TIME, transform_overlay=transform_scanline, reset_after=TRUE)
addtimer(CALLBACK(GLOBAL_PROC, .proc/breadify, target), BREADIFY_TIME)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(breadify), target), BREADIFY_TIME)
#undef BREADIFY_TIME
if(ADMIN_PUNISHMENT_BOOKIFY)
#define BOOKIFY_TIME (2 SECONDS)
var/mutable_appearance/book_appearance = mutable_appearance('icons/obj/library.dmi', "book")
var/mutable_appearance/transform_scanline = mutable_appearance('icons/effects/effects.dmi', "transform_effect")
target.transformation_animation(book_appearance, time = BOOKIFY_TIME, transform_overlay=transform_scanline, reset_after=TRUE)
addtimer(CALLBACK(GLOBAL_PROC, .proc/bookify, target), BOOKIFY_TIME)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(bookify), target), BOOKIFY_TIME)
playsound(target, 'hyperstation/sound/misc/bookify.ogg', 60, 1)
#undef BOOKIFY_TIME
if(ADMIN_PUNISHMENT_BONK)
@@ -52,7 +52,7 @@
/obj/item/clothing/glasses/judicial_visor/dropped(mob/user)
. = ..()
addtimer(CALLBACK(src, .proc/check_on_mob, user), 1) //dropped is called before the item is out of the slot, so we need to check slightly later
addtimer(CALLBACK(src,PROC_REF(check_on_mob), user), 1) //dropped is called before the item is out of the slot, so we need to check slightly later
/obj/item/clothing/glasses/judicial_visor/proc/check_on_mob(mob/user)
if(user && src != user.get_item_by_slot(SLOT_GLASSES)) //if we happen to check and we AREN'T in the slot, we need to remove our shit from whoever we got dropped from
@@ -161,7 +161,7 @@
. = ..()
set_light(1.4, 2, "#FE9C11")
user = caster
INVOKE_ASYNC(src, .proc/judicialblast)
INVOKE_ASYNC(src,PROC_REF(judicialblast))
/obj/effect/clockwork/judicial_marker/singularity_act()
return
+3 -3
View File
@@ -290,7 +290,7 @@
B.current.client.images += C.cult_team.blood_target_image
attached_action.owner.update_action_buttons_icon()
remove_ranged_ability("<span class='cult'>The marking rite is complete! It will last for 90 seconds.</span>")
C.cult_team.blood_target_reset_timer = addtimer(CALLBACK(GLOBAL_PROC, .proc/reset_blood_target,C.cult_team), 900, TIMER_STOPPABLE)
C.cult_team.blood_target_reset_timer = addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(reset_blood_target),C.cult_team), 900, TIMER_STOPPABLE)
return TRUE
return FALSE
@@ -377,8 +377,8 @@
desc = "Remove the Blood Mark you previously set."
button_icon_state = "emp"
owner.update_action_buttons_icon()
C.cult_team.blood_target_reset_timer = addtimer(CALLBACK(GLOBAL_PROC, .proc/reset_blood_target,C.cult_team), base_cooldown, TIMER_STOPPABLE)
addtimer(CALLBACK(src, .proc/reset_button), base_cooldown)
C.cult_team.blood_target_reset_timer = addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(reset_blood_target),C.cult_team), base_cooldown, TIMER_STOPPABLE)
addtimer(CALLBACK(src, PROC_REF(reset_button)), base_cooldown)
//////// ELDRITCH PULSE /////////
+3 -3
View File
@@ -258,7 +258,7 @@
sword.spinning = TRUE
sword.block_chance = 100
sword.slowdown += 1.5
addtimer(CALLBACK(src, .proc/stop_spinning), 50)
addtimer(CALLBACK(src,PROC_REF(stop_spinning)), 50)
holder.update_action_buttons_icon()
/datum/action/innate/cult/spin2win/proc/stop_spinning()
@@ -849,10 +849,10 @@
qdel(src)
return
charging = TRUE
INVOKE_ASYNC(src, .proc/charge, user)
INVOKE_ASYNC(src,PROC_REF(charge), user)
if(do_after(user, 90, target = user))
firing = TRUE
INVOKE_ASYNC(src, .proc/pewpew, user, params)
INVOKE_ASYNC(src,PROC_REF(pewpew), user, params)
var/obj/structure/emergency_shield/invoker/N = new(user.loc)
if(do_after(user, 90, target = user))
user.Knockdown(40)
+4 -4
View File
@@ -437,7 +437,7 @@ structure_check() searches for nearby cultist structures required for the invoca
outer_portal = new(T, 600, color)
light_range = 4
update_light()
addtimer(CALLBACK(src, .proc/close_portal), 600, TIMER_UNIQUE)
addtimer(CALLBACK(src,PROC_REF(close_portal)), 600, TIMER_UNIQUE)
/obj/effect/rune/teleport/proc/close_portal()
qdel(inner_portal)
@@ -663,7 +663,7 @@ structure_check() searches for nearby cultist structures required for the invoca
W.density = TRUE
W.update_state()
W.spread_density()
density_timer = addtimer(CALLBACK(src, .proc/lose_density), 3000, TIMER_STOPPABLE)
density_timer = addtimer(CALLBACK(src,PROC_REF(lose_density)), 3000, TIMER_STOPPABLE)
/obj/effect/rune/wall/proc/lose_density()
if(density)
@@ -673,7 +673,7 @@ structure_check() searches for nearby cultist structures required for the invoca
var/oldcolor = color
add_atom_colour("#696969", FIXED_COLOUR_PRIORITY)
animate(src, color = oldcolor, time = 50, easing = EASE_IN)
addtimer(CALLBACK(src, .proc/recharge), 50)
addtimer(CALLBACK(src,PROC_REF(recharge)), 50)
/obj/effect/rune/wall/proc/recharge()
recharging = FALSE
@@ -991,7 +991,7 @@ structure_check() searches for nearby cultist structures required for the invoca
if(ishuman(M))
if(!iscultist(M))
AH.remove_hud_from(M)
addtimer(CALLBACK(GLOBAL_PROC, .proc/hudFix, M), duration)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(hudFix), M), duration)
var/image/A = image('icons/mob/mob.dmi',M,"cultist", ABOVE_MOB_LAYER)
A.override = 1
add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/noncult, "human_apoc", A, FALSE)
@@ -435,7 +435,7 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list(
minor_announce("Hostile runtime detected in door controllers. Isolation lockdown protocols are now in effect. Please remain calm.","Network Alert:", TRUE)
to_chat(owner, "<span class='danger'>Lockdown initiated. Network reset in 90 seconds.</span>")
addtimer(CALLBACK(GLOBAL_PROC, .proc/minor_announce,
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(minor_announce),
"Automatic system reboot complete. Have a secure day.",
"Network reset:"), 900)
@@ -706,7 +706,7 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list(
I.loc = T
client.images += I
I.icon_state = "[success ? "green" : "red"]Overlay" //greenOverlay and redOverlay for success and failure respectively
addtimer(CALLBACK(src, .proc/remove_transformer_image, client, I, T), 30)
addtimer(CALLBACK(src,PROC_REF(remove_transformer_image), client, I, T), 30)
if(!success)
to_chat(src, "<span class='warning'>[alert_msg]</span>")
return success
+2 -2
View File
@@ -234,7 +234,7 @@
to_chat(I.owner, "<span class='warning'>Your photon projector implant overheats and deactivates!</span>")
I.Retract()
overheat = TRUE
addtimer(CALLBACK(src, .proc/cooldown), flashcd * 2)
addtimer(CALLBACK(src,PROC_REF(cooldown)), flashcd * 2)
/obj/item/assembly/flash/armimplant/try_use_flash(mob/user = null)
if(overheat)
@@ -242,7 +242,7 @@
to_chat(I.owner, "<span class='warning'>Your photon projector is running too hot to be used again so quickly!</span>")
return FALSE
overheat = TRUE
addtimer(CALLBACK(src, .proc/cooldown), flashcd)
addtimer(CALLBACK(src,PROC_REF(cooldown)), flashcd)
playsound(src, 'sound/weapons/flash.ogg', 100, TRUE)
update_icon(1)
return TRUE
+4 -4
View File
@@ -293,7 +293,7 @@ GLOBAL_LIST_INIT(hallucination_list, list(
target.client.images |= fakerune
target.playsound_local(wall,'sound/effects/meteorimpact.ogg', 150, 1)
bubblegum = new(wall, target)
addtimer(CALLBACK(src, .proc/bubble_attack, landing), 10)
addtimer(CALLBACK(src,PROC_REF(bubble_attack), landing), 10)
/datum/hallucination/oh_yeah/proc/bubble_attack(turf/landing)
var/charged = FALSE //only get hit once
@@ -1099,7 +1099,7 @@ GLOBAL_LIST_INIT(hallucination_list, list(
return
to_chat(target, "<span class='userdanger'>You fall into the chasm!</span>")
target.Knockdown(40)
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, target, "<span class='notice'>It's surprisingly shallow.</span>"), 15)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(to_chat), target, "<span class='notice'>It's surprisingly shallow.</span>"), 15)
QDEL_IN(src, 30)
/obj/effect/hallucination/danger/anomaly
@@ -1222,13 +1222,13 @@ GLOBAL_LIST_INIT(hallucination_list, list(
if(target.client)
target.client.images |= shock_image
target.client.images |= electrocution_skeleton_anim
addtimer(CALLBACK(src, .proc/reset_shock_animation), 40)
addtimer(CALLBACK(src,PROC_REF(reset_shock_animation)), 40)
target.playsound_local(get_turf(src), "sparks", 100, 1)
target.staminaloss += 50
target.Stun(40)
target.jitteriness += 1000
target.do_jitter_animation(target.jitteriness)
addtimer(CALLBACK(src, .proc/shock_drop), 20)
addtimer(CALLBACK(src,PROC_REF(shock_drop)), 20)
/datum/hallucination/shock/proc/reset_shock_animation()
if(target.client)
+1 -1
View File
@@ -376,7 +376,7 @@
playsound(src, 'sound/effects/fuse.ogg', 100, 0)
message_admins("[ADMIN_LOOKUPFLW(user)] ignited a coconut bomb for detonation at [ADMIN_VERBOSEJMP(user)] [pretty_string_from_reagent_list(reagents.reagent_list)]")
log_game("[key_name(user)] primed a coconut grenade for detonation at [AREACOORD(user)].")
addtimer(CALLBACK(src, .proc/prime), 5 SECONDS)
addtimer(CALLBACK(src,PROC_REF(prime)), 5 SECONDS)
icon_state = "coconut_grenade_active"
desc = "RUN!"
if(!seed.get_gene(/datum/plant_gene/trait/glow))
@@ -343,7 +343,7 @@
/obj/effect/wisp/orbit(atom/thing, radius, clockwise, rotation_speed, rotation_segments, pre_rotation, lockinorbit)
. = ..()
if(ismob(thing))
RegisterSignal(thing, COMSIG_MOB_UPDATE_SIGHT, .proc/update_user_sight)
RegisterSignal(thing, COMSIG_MOB_UPDATE_SIGHT,PROC_REF(update_user_sight))
var/mob/being = thing
being.update_sight()
to_chat(thing, "<span class='notice'>The wisp enhances your vision.</span>")
@@ -527,7 +527,7 @@
can_destroy = FALSE
addtimer(CALLBACK(src, .proc/unvanish, user), 10 SECONDS)
addtimer(CALLBACK(src,PROC_REF(unvanish), user), 10 SECONDS)
/obj/effect/immortality_talisman/proc/unvanish(mob/user)
user.status_flags &= ~GODMODE
@@ -1148,11 +1148,11 @@
calculate_anger_mod(user)
timer = world.time + CLICK_CD_MELEE //by default, melee attacks only cause melee blasts, and have an accordingly short cooldown
if(proximity_flag)
INVOKE_ASYNC(src, .proc/aoe_burst, T, user)
INVOKE_ASYNC(src,PROC_REF(aoe_burst), T, user)
log_combat(user, target, "fired 3x3 blast at", src)
else
if(ismineralturf(target) && get_dist(user, target) < 6) //target is minerals, we can hit it(even if we can't see it)
INVOKE_ASYNC(src, .proc/cardinal_blasts, T, user)
INVOKE_ASYNC(src,PROC_REF(cardinal_blasts), T, user)
timer = world.time + cooldown_time
else if(target in view(5, get_turf(user))) //if the target is in view, hit it
timer = world.time + cooldown_time
@@ -1163,12 +1163,12 @@
C.monster_damage_boost = FALSE
log_combat(user, target, "fired a chaser at", src)
else
INVOKE_ASYNC(src, .proc/cardinal_blasts, T, user) //otherwise, just do cardinal blast
INVOKE_ASYNC(src,PROC_REF(cardinal_blasts), T, user) //otherwise, just do cardinal blast
log_combat(user, target, "fired cardinal blast at", src)
else
to_chat(user, "<span class='warning'>That target is out of range!</span>" )
timer = world.time
INVOKE_ASYNC(src, .proc/prepare_icon_update)
INVOKE_ASYNC(src,PROC_REF(prepare_icon_update))
/obj/item/hierophant_club/proc/calculate_anger_mod(mob/user) //we get stronger as the user loses health
chaser_cooldown = initial(chaser_cooldown)
@@ -1211,7 +1211,7 @@
user.visible_message("<span class='hierophant_warning'>[user] starts fiddling with [src]'s pommel...</span>", \
"<span class='notice'>You start detaching the hierophant beacon...</span>")
timer = world.time + 51
INVOKE_ASYNC(src, .proc/prepare_icon_update)
INVOKE_ASYNC(src,PROC_REF(prepare_icon_update))
if(do_after(user, 50, target = user) && !beacon)
var/turf/T = get_turf(user)
playsound(T,'sound/magic/blind.ogg', 200, 1, -4)
@@ -1223,7 +1223,7 @@
<span class='notice'>You can remove the beacon to place it again by striking it with the club.</span>")
else
timer = world.time
INVOKE_ASYNC(src, .proc/prepare_icon_update)
INVOKE_ASYNC(src,PROC_REF(prepare_icon_update))
else
to_chat(user, "<span class='warning'>You need to be on solid ground to detach the beacon!</span>")
return
@@ -1240,7 +1240,7 @@
user.update_action_buttons_icon()
user.visible_message("<span class='hierophant_warning'>[user] starts to glow faintly...</span>")
timer = world.time + 50
INVOKE_ASYNC(src, .proc/prepare_icon_update)
INVOKE_ASYNC(src,PROC_REF(prepare_icon_update))
beacon.icon_state = "hierophant_tele_on"
var/obj/effect/temp_visual/hierophant/telegraph/edge/TE1 = new /obj/effect/temp_visual/hierophant/telegraph/edge(user.loc)
var/obj/effect/temp_visual/hierophant/telegraph/edge/TE2 = new /obj/effect/temp_visual/hierophant/telegraph/edge(beacon.loc)
@@ -1252,7 +1252,7 @@
to_chat(user, "<span class='warning'>The beacon is blocked by something, preventing teleportation!</span>")
user.update_action_buttons_icon()
timer = world.time
INVOKE_ASYNC(src, .proc/prepare_icon_update)
INVOKE_ASYNC(src,PROC_REF(prepare_icon_update))
beacon.icon_state = "hierophant_tele_off"
return
new /obj/effect/temp_visual/hierophant/telegraph(T, user)
@@ -1264,7 +1264,7 @@
if(user)
user.update_action_buttons_icon()
timer = world.time
INVOKE_ASYNC(src, .proc/prepare_icon_update)
INVOKE_ASYNC(src,PROC_REF(prepare_icon_update))
if(beacon)
beacon.icon_state = "hierophant_tele_off"
return
@@ -1273,7 +1273,7 @@
to_chat(user, "<span class='warning'>The beacon is blocked by something, preventing teleportation!</span>")
user.update_action_buttons_icon()
timer = world.time
INVOKE_ASYNC(src, .proc/prepare_icon_update)
INVOKE_ASYNC(src,PROC_REF(prepare_icon_update))
beacon.icon_state = "hierophant_tele_off"
return
user.log_message("teleported self from [AREACOORD(source)] to [beacon]")
@@ -1286,7 +1286,7 @@
var/obj/effect/temp_visual/hierophant/blast/B = new /obj/effect/temp_visual/hierophant/blast(t, user, TRUE) //but absolutely will hurt enemies
B.damage = 30
for(var/mob/living/L in range(1, source))
INVOKE_ASYNC(src, .proc/teleport_mob, source, L, T, user) //regardless, take all mobs near us along
INVOKE_ASYNC(src,PROC_REF(teleport_mob), source, L, T, user) //regardless, take all mobs near us along
sleep(6) //at this point the blasts detonate
if(beacon)
beacon.icon_state = "hierophant_tele_off"
@@ -1294,7 +1294,7 @@
qdel(TE1)
qdel(TE2)
timer = world.time
INVOKE_ASYNC(src, .proc/prepare_icon_update)
INVOKE_ASYNC(src,PROC_REF(prepare_icon_update))
if(beacon)
beacon.icon_state = "hierophant_tele_off"
teleporting = FALSE
@@ -1333,7 +1333,7 @@
sleep(2)
new /obj/effect/temp_visual/hierophant/blast(T, user, friendly_fire_check)
for(var/d in GLOB.cardinals)
INVOKE_ASYNC(src, .proc/blast_wall, T, d, user)
INVOKE_ASYNC(src,PROC_REF(blast_wall), T, d, user)
/obj/item/hierophant_club/proc/blast_wall(turf/T, dir, mob/living/user) //make a wall of blasts blast_range tiles long
if(!T)
@@ -1480,8 +1480,8 @@
. = ..()
if(slot == ITEM_SLOT_GLOVES)
tool_behaviour = TOOL_MINING
RegisterSignal(user, COMSIG_HUMAN_EARLY_UNARMED_ATTACK, .proc/rocksmash)
RegisterSignal(user, COMSIG_MOVABLE_BUMP, .proc/rocksmash)
RegisterSignal(user, COMSIG_HUMAN_EARLY_UNARMED_ATTACK,PROC_REF(rocksmash))
RegisterSignal(user, COMSIG_MOVABLE_BUMP,PROC_REF(rocksmash))
else
stopmining(user)
@@ -476,7 +476,7 @@
var/mob/living/carbon/human/H = owner
H.visible_message("<span class='warning'>[H] starts vibrating!</span>", "<span class='danger'>You start charging your bluespace core...</span>")
playsound(get_turf(H), 'sound/weapons/flash.ogg', 25, 1)
addtimer(CALLBACK(src, .proc/teleport, H), 15)
addtimer(CALLBACK(src,PROC_REF(teleport), H), 15)
/datum/action/innate/unstable_teleport/proc/teleport(mob/living/carbon/human/H)
H.visible_message("<span class='warning'>[H] disappears in a shower of sparks!</span>", "<span class='danger'>You teleport!</span>")
@@ -517,7 +517,7 @@
..()
last_banana = world.time
last_honk = world.time
RegisterSignal(C, COMSIG_MOB_SAY, .proc/handle_speech)
RegisterSignal(C, COMSIG_MOB_SAY,PROC_REF(handle_speech))
/datum/species/golem/bananium/on_species_loss(mob/living/carbon/C)
. = ..()
@@ -648,7 +648,7 @@
/datum/species/golem/clockwork/on_species_gain(mob/living/carbon/human/H)
. = ..()
H.faction |= "ratvar"
RegisterSignal(H, COMSIG_MOB_SAY, .proc/handle_speech)
RegisterSignal(H, COMSIG_MOB_SAY,PROC_REF(handle_speech))
/datum/species/golem/clockwork/on_species_loss(mob/living/carbon/human/H)
if(!is_servant_of_ratvar(H))
@@ -756,7 +756,7 @@
H.forceMove(src)
cloth_golem = H
to_chat(cloth_golem, "<span class='notice'>You start gathering your life energy, preparing to rise again...</span>")
addtimer(CALLBACK(src, .proc/revive), revive_time)
addtimer(CALLBACK(src,PROC_REF(revive)), revive_time)
else
return INITIALIZE_HINT_QDEL
@@ -107,7 +107,7 @@
if((C.name == oldtarget_name) && (world.time < last_found + 100))
continue
threatlevel = C.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, .proc/check_for_weapons))
threatlevel = C.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src,PROC_REF(check_for_weapons)))
if(!threatlevel)
continue
@@ -122,7 +122,7 @@
icon_state = "grievous-c"
visible_message("<b>[src]</b> points at [C.name]!")
mode = BOT_HUNT
INVOKE_ASYNC(src, .proc/handle_automated_action)
INVOKE_ASYNC(src,PROC_REF(handle_automated_action))
break
else
continue
@@ -56,7 +56,7 @@
playsound(src, 'sound/machines/ping.ogg', 50, TRUE, -1) //the first sound upon creation!
spam_flag = TRUE
sensor_blink()
addtimer(CALLBACK(src, .proc/spam_flag_false), 18) // calibrates before starting the honk
addtimer(CALLBACK(src,PROC_REF(spam_flag_false)), 18) // calibrates before starting the honk
/mob/living/simple_animal/bot/honkbot/proc/react_buzz()
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, TRUE, -1)
@@ -114,7 +114,7 @@ Maintenance panel panel is [open ? "opened" : "closed"]"},
/mob/living/simple_animal/bot/honkbot/attack_hand(mob/living/carbon/human/H)
if(H.a_intent == INTENT_HARM)
retaliate(H)
addtimer(CALLBACK(src, .proc/react_buzz), 5)
addtimer(CALLBACK(src,PROC_REF(react_buzz)), 5)
return ..()
@@ -123,7 +123,7 @@ Maintenance panel panel is [open ? "opened" : "closed"]"},
return
if(!istype(W, /obj/item/screwdriver) && (W.force) && (!target) && (W.damtype != STAMINA) ) // Check for welding tool to fix #2432.
retaliate(user)
addtimer(CALLBACK(src, .proc/react_buzz), 5)
addtimer(CALLBACK(src,PROC_REF(react_buzz)), 5)
..()
/mob/living/simple_animal/bot/honkbot/emag_act(mob/user)
@@ -171,21 +171,21 @@ Maintenance panel panel is [open ? "opened" : "closed"]"},
playsound(src, honksound, 50, TRUE, -1)
spam_flag = TRUE //prevent spam
sensor_blink()
addtimer(CALLBACK(src, .proc/spam_flag_false), cooldowntimehorn)
addtimer(CALLBACK(src,PROC_REF(spam_flag_false)), cooldowntimehorn)
else if (emagged == 2) //emagged honkbots will spam short and memorable sounds.
if (!spam_flag)
playsound(src, "honkbot_e", 50, 0)
spam_flag = TRUE // prevent spam
icon_state = "honkbot-e"
addtimer(CALLBACK(src, /atom/.proc/update_icon), 30, TIMER_OVERRIDE|TIMER_UNIQUE)
addtimer(CALLBACK(src, .proc/spam_flag_false), cooldowntimehorn)
addtimer(CALLBACK(src,PROC_REF(spam_flag_false)), cooldowntimehorn)
/mob/living/simple_animal/bot/honkbot/proc/honk_attack(mob/living/carbon/C) // horn attack
if(!spam_flag)
playsound(loc, honksound, 50, TRUE, -1)
spam_flag = TRUE // prevent spam
sensor_blink()
addtimer(CALLBACK(src, .proc/spam_flag_false), cooldowntimehorn)
addtimer(CALLBACK(src,PROC_REF(spam_flag_false)), cooldowntimehorn)
/mob/living/simple_animal/bot/honkbot/proc/stun_attack(mob/living/carbon/C) // airhorn stun
if(!spam_flag)
@@ -207,7 +207,7 @@ Maintenance panel panel is [open ? "opened" : "closed"]"},
target = oldtarget_name
else // you really don't want to hit an emagged honkbot
threatlevel = 6 // will never let you go
addtimer(CALLBACK(src, .proc/spam_flag_false), cooldowntime)
addtimer(CALLBACK(src,PROC_REF(spam_flag_false)), cooldowntime)
log_combat(src,C,"honked")
@@ -216,7 +216,7 @@ Maintenance panel panel is [open ? "opened" : "closed"]"},
else
C.stuttering = 20
C.Knockdown(80)
addtimer(CALLBACK(src, .proc/spam_flag_false), cooldowntime)
addtimer(CALLBACK(src,PROC_REF(spam_flag_false)), cooldowntime)
/mob/living/simple_animal/bot/honkbot/handle_automated_action()
@@ -280,13 +280,13 @@ Maintenance panel panel is [open ? "opened" : "closed"]"},
target = null
last_found = world.time
frustration = 0
INVOKE_ASYNC(src, .proc/handle_automated_action) //responds quickly
INVOKE_ASYNC(src,PROC_REF(handle_automated_action)) //responds quickly
/mob/living/simple_animal/bot/honkbot/proc/back_to_hunt()
anchored = FALSE
frustration = 0
mode = BOT_HUNT
INVOKE_ASYNC(src, .proc/handle_automated_action) // responds quickly
INVOKE_ASYNC(src,PROC_REF(handle_automated_action)) // responds quickly
/mob/living/simple_animal/bot/honkbot/proc/look_for_perp()
anchored = FALSE
@@ -316,7 +316,7 @@ Maintenance panel panel is [open ? "opened" : "closed"]"},
speak("Honk!")
visible_message("<b>[src]</b> starts chasing [C.name]!")
mode = BOT_HUNT
INVOKE_ASYNC(src, .proc/handle_automated_action)
INVOKE_ASYNC(src,PROC_REF(handle_automated_action))
break
else
continue
@@ -154,7 +154,7 @@ Auto Patrol: []"},
/mob/living/simple_animal/bot/secbot/proc/retaliate(mob/living/carbon/human/H)
var/judgement_criteria = judgement_criteria()
threatlevel = H.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, .proc/check_for_weapons))
threatlevel = H.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src,PROC_REF(check_for_weapons)))
threatlevel += 6
if(threatlevel >= 4)
target = H
@@ -237,7 +237,7 @@ Auto Patrol: []"},
playsound(src, 'sound/weapons/cablecuff.ogg', 30, TRUE, -2)
C.visible_message("<span class='danger'>[src] is trying to put zipties on [C]!</span>",\
"<span class='userdanger'>[src] is trying to put zipties on you!</span>")
addtimer(CALLBACK(src, .proc/attempt_handcuff, C), 60)
addtimer(CALLBACK(src,PROC_REF(attempt_handcuff), C), 60)
/mob/living/simple_animal/bot/secbot/proc/attempt_handcuff(mob/living/carbon/C)
if( !on || !Adjacent(C) || !isturf(C.loc) ) //if he's in a closet or not adjacent, we cancel cuffing.
@@ -258,11 +258,11 @@ Auto Patrol: []"},
C.stuttering = 5
C.Knockdown(100)
var/mob/living/carbon/human/H = C
threat = H.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, .proc/check_for_weapons))
threat = H.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src,PROC_REF(check_for_weapons)))
else
C.Knockdown(100)
C.stuttering = 5
threat = C.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, .proc/check_for_weapons))
threat = C.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src,PROC_REF(check_for_weapons)))
log_combat(src,C,"stunned")
if(declare_arrests)
@@ -365,13 +365,13 @@ Auto Patrol: []"},
target = null
last_found = world.time
frustration = 0
INVOKE_ASYNC(src, .proc/handle_automated_action)
INVOKE_ASYNC(src,PROC_REF(handle_automated_action))
/mob/living/simple_animal/bot/secbot/proc/back_to_hunt()
anchored = FALSE
frustration = 0
mode = BOT_HUNT
INVOKE_ASYNC(src, .proc/handle_automated_action)
INVOKE_ASYNC(src,PROC_REF(handle_automated_action))
// look for a criminal in view of the bot
/mob/living/simple_animal/bot/secbot/proc/look_for_perp()
@@ -384,7 +384,7 @@ Auto Patrol: []"},
if((C.name == oldtarget_name) && (world.time < last_found + 100))
continue
threatlevel = C.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, .proc/check_for_weapons))
threatlevel = C.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src,PROC_REF(check_for_weapons)))
if(!threatlevel)
continue
@@ -396,7 +396,7 @@ Auto Patrol: []"},
playsound(loc, pick('sound/voice/beepsky/criminal.ogg', 'sound/voice/beepsky/justice.ogg', 'sound/voice/beepsky/freeze.ogg'), 50, FALSE)
visible_message("<b>[src]</b> points at [C.name]!")
mode = BOT_HUNT
INVOKE_ASYNC(src, .proc/handle_automated_action)
INVOKE_ASYNC(src,PROC_REF(handle_automated_action))
break
else
continue
+2 -2
View File
@@ -263,7 +263,7 @@
else
for(var/obj/machinery/am_shielding/AMS in linked_shielding)
AMS.update_icon()
addtimer(CALLBACK(src, .proc/reset_shield_icon_delay), 20)
addtimer(CALLBACK(src,PROC_REF(reset_shield_icon_delay)), 20)
/obj/machinery/power/am_control_unit/proc/reset_shield_icon_delay()
shield_icon_delay = 0
@@ -276,7 +276,7 @@
for(var/obj/machinery/am_shielding/AMS in linked_cores)
stored_core_stability += AMS.stability
stored_core_stability/=linked_cores.len
addtimer(CALLBACK(src, .proc/reset_stored_core_stability_delay), 40)
addtimer(CALLBACK(src,PROC_REF(reset_stored_core_stability_delay)), 40)
/obj/machinery/power/am_control_unit/proc/reset_stored_core_stability_delay()
stored_core_stability_delay = 0
+4 -4
View File
@@ -182,7 +182,7 @@
name = "[area.name] APC"
stat |= MAINT
src.update_icon()
addtimer(CALLBACK(src, .proc/update), 5)
addtimer(CALLBACK(src,PROC_REF(update)), 5)
/obj/machinery/power/apc/Destroy()
GLOB.apcs_list -= src
@@ -240,7 +240,7 @@
make_terminal()
addtimer(CALLBACK(src, .proc/update), 5)
addtimer(CALLBACK(src,PROC_REF(update)), 5)
/obj/machinery/power/apc/examine(mob/user)
. = ..()
@@ -1362,7 +1362,7 @@
environ = 0
update_icon()
update()
addtimer(CALLBACK(src, .proc/reset, APC_RESET_EMP), 600)
addtimer(CALLBACK(src,PROC_REF(reset), APC_RESET_EMP), 600)
/obj/machinery/power/apc/blob_act(obj/structure/blob/B)
set_broken()
@@ -1389,7 +1389,7 @@
return
if( cell && cell.charge>=20)
cell.use(20)
INVOKE_ASYNC(src, .proc/break_lights)
INVOKE_ASYNC(src,PROC_REF(break_lights))
/obj/machinery/power/apc/proc/break_lights()
for(var/obj/machinery/light/L in area)
+2 -2
View File
@@ -273,7 +273,7 @@
if(burst_size > 1)
firing_burst = TRUE
for(var/i = 1 to burst_size)
addtimer(CALLBACK(src, .proc/process_burst, user, target, message, params, zone_override, sprd, randomized_gun_spread, randomized_bonus_spread, rand_spr, i), fire_delay * (i - 1))
addtimer(CALLBACK(src,PROC_REF(process_burst), user, target, message, params, zone_override, sprd, randomized_gun_spread, randomized_bonus_spread, rand_spr, i), fire_delay * (i - 1))
else
if(chambered)
if(HAS_TRAIT(user, TRAIT_PACIFISM)) // If the user has the pacifist trait, then they won't be able to fire [src] if the round chambered inside of [src] is lethal.
@@ -296,7 +296,7 @@
process_chamber(user)
update_icon()
semicd = TRUE
addtimer(CALLBACK(src, .proc/reset_semicd), fire_delay)
addtimer(CALLBACK(src,PROC_REF(reset_semicd)), fire_delay)
if(user)
user.update_inv_hands()
@@ -77,7 +77,7 @@
if(com.power_station && com.power_station.teleporter_hub && com.power_station.engaged)
teletarget = com.target
addtimer(CALLBACK(src, .proc/pop, teletarget), 30)
addtimer(CALLBACK(src,PROC_REF(pop), teletarget), 30)
/obj/effect/nettingportal/proc/pop(teletarget)
if(teletarget)
@@ -100,7 +100,7 @@
layer = ABOVE_MOB_LAYER
hal_target.client.images += blood
animate(blood, pixel_x = target_pixel_x, pixel_y = target_pixel_y, alpha = 0, time = 5)
addtimer(CALLBACK(src, .proc/cleanup_blood), 5)
addtimer(CALLBACK(src,PROC_REF(cleanup_blood)), 5)
/obj/item/projectile/hallucination/proc/cleanup_blood(image/blood)
hal_target.client.images -= blood
@@ -112,11 +112,11 @@
var/obj/item/slime_extract/M = holder.my_atom
deltimer(M.qdel_timer)
..()
M.qdel_timer = addtimer(CALLBACK(src, .proc/delete_extract, holder), 55, TIMER_STOPPABLE)
M.qdel_timer = addtimer(CALLBACK(src,PROC_REF(delete_extract), holder), 55, TIMER_STOPPABLE)
/datum/chemical_reaction/slime/slimemobspawn/proc/summon_mobs(datum/reagents/holder, turf/T)
T.visible_message("<span class='danger'>The slime extract begins to vibrate violently!</span>")
addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 5, "Gold Slime", HOSTILE_SPAWN), 50)
addtimer(CALLBACK(src,PROC_REF(chemical_mob_spawn), holder, 5, "Gold Slime", HOSTILE_SPAWN), 50)
/datum/chemical_reaction/slime/slimemobspawn/lesser
name = "Slime Crit Lesser"
@@ -125,7 +125,7 @@
/datum/chemical_reaction/slime/slimemobspawn/lesser/summon_mobs(datum/reagents/holder, turf/T)
T.visible_message("<span class='danger'>The slime extract begins to vibrate violently!</span>")
addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 3, "Lesser Gold Slime", HOSTILE_SPAWN, "neutral"), 50)
addtimer(CALLBACK(src,PROC_REF(chemical_mob_spawn), holder, 3, "Lesser Gold Slime", HOSTILE_SPAWN, "neutral"), 50)
/datum/chemical_reaction/slime/slimemobspawn/friendly
name = "Slime Crit Friendly"
@@ -134,7 +134,7 @@
/datum/chemical_reaction/slime/slimemobspawn/friendly/summon_mobs(datum/reagents/holder, turf/T)
T.visible_message("<span class='danger'>The slime extract begins to vibrate adorably!</span>")
addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 1, "Friendly Gold Slime", FRIENDLY_SPAWN, "neutral"), 50)
addtimer(CALLBACK(src,PROC_REF(chemical_mob_spawn), holder, 1, "Friendly Gold Slime", FRIENDLY_SPAWN, "neutral"), 50)
//Silver
/datum/chemical_reaction/slime/slimebork
@@ -217,11 +217,11 @@
/datum/chemical_reaction/slime/slimefreeze/on_reaction(datum/reagents/holder)
var/turf/T = get_turf(holder.my_atom)
T.visible_message("<span class='danger'>The slime extract starts to feel extremely cold!</span>")
addtimer(CALLBACK(src, .proc/freeze, holder), 50)
addtimer(CALLBACK(src,PROC_REF(freeze), holder), 50)
var/obj/item/slime_extract/M = holder.my_atom
deltimer(M.qdel_timer)
..()
M.qdel_timer = addtimer(CALLBACK(src, .proc/delete_extract, holder), 55, TIMER_STOPPABLE)
M.qdel_timer = addtimer(CALLBACK(src,PROC_REF(delete_extract), holder), 55, TIMER_STOPPABLE)
/datum/chemical_reaction/slime/slimefreeze/proc/freeze(datum/reagents/holder)
if(holder && holder.my_atom)
@@ -261,11 +261,11 @@
/datum/chemical_reaction/slime/slimefire/on_reaction(datum/reagents/holder)
var/turf/T = get_turf(holder.my_atom)
T.visible_message("<span class='danger'>The slime extract begins to vibrate adorably!</span>")
addtimer(CALLBACK(src, .proc/slime_burn, holder), 50)
addtimer(CALLBACK(src,PROC_REF(slime_burn), holder), 50)
var/obj/item/slime_extract/M = holder.my_atom
deltimer(M.qdel_timer)
..()
M.qdel_timer = addtimer(CALLBACK(src, .proc/delete_extract, holder), 55, TIMER_STOPPABLE)
M.qdel_timer = addtimer(CALLBACK(src,PROC_REF(delete_extract), holder), 55, TIMER_STOPPABLE)
/datum/chemical_reaction/slime/slimefire/proc/slime_burn(datum/reagents/holder)
if(holder && holder.my_atom)
@@ -442,11 +442,11 @@
message_admins("Slime Explosion reaction started at [ADMIN_VERBOSEJMP(T)]. Last Fingerprint: [touch_msg]")
log_game("Slime Explosion reaction started at [AREACOORD(T)]. Last Fingerprint: [lastkey ? lastkey : "N/A"].")
T.visible_message("<span class='danger'>The slime extract begins to vibrate violently !</span>")
addtimer(CALLBACK(src, .proc/boom, holder), 50)
addtimer(CALLBACK(src,PROC_REF(boom), holder), 50)
var/obj/item/slime_extract/M = holder.my_atom
deltimer(M.qdel_timer)
..()
M.qdel_timer = addtimer(CALLBACK(src, .proc/delete_extract, holder), 55, TIMER_STOPPABLE)
M.qdel_timer = addtimer(CALLBACK(src,PROC_REF(delete_extract), holder), 55, TIMER_STOPPABLE)
/datum/chemical_reaction/slime/slimeexplosion/proc/boom(datum/reagents/holder)
if(holder && holder.my_atom)
@@ -463,7 +463,7 @@
return
to_chat(user, "<span class='notice'>You feel your skin harden and become more resistant.</span>")
species.armor += 25
addtimer(CALLBACK(src, .proc/reset_armor, species), 1200)
addtimer(CALLBACK(src,PROC_REF(reset_armor), species), 1200)
return 450
if(SLIME_ACTIVATE_MAJOR)
@@ -24,7 +24,7 @@
know it'll be worth it.</span>")
icon_state = "slots2"
playsound(src, 'sound/lavaland/cursed_slot_machine.ogg', 50, 0)
addtimer(CALLBACK(src, .proc/determine_victor, user), 50)
addtimer(CALLBACK(src,PROC_REF(determine_victor), user), 50)
/obj/structure/cursed_slot_machine/proc/determine_victor(mob/living/user)
icon_state = "slots1"
@@ -50,7 +50,7 @@
/obj/structure/cursed_money/Initialize()
. = ..()
addtimer(CALLBACK(src, .proc/collapse), 600)
addtimer(CALLBACK(src,PROC_REF(collapse)), 600)
/obj/structure/cursed_money/proc/collapse()
visible_message("<span class='warning'>[src] falls in on itself, \
+35 -35
View File
@@ -418,7 +418,7 @@
for(var/iter in 1 to 5 * power_multiplier)
for(var/V in listeners)
var/mob/living/L = V
addtimer(CALLBACK(GLOBAL_PROC, .proc/_step, L, direction? direction : pick(GLOB.cardinals)), 10 * (iter - 1))
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(_step), L, direction? direction : pick(GLOB.cardinals)), 10 * (iter - 1))
//WALK
else if((findtext(message, walk_words)))
@@ -562,7 +562,7 @@
//HONK
else if((findtext(message, honk_words)))
cooldown = COOLDOWN_MEME
addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound, get_turf(user), 'sound/items/bikehorn.ogg', 300, 1), 25)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(playsound), get_turf(user), 'sound/items/bikehorn.ogg', 300, 1), 25)
if(user.mind && user.mind.assigned_role == "Clown")
for(var/mob/living/carbon/C in listeners)
C.slip(140 * power_multiplier)
@@ -609,7 +609,7 @@
//BWOINK
else if((findtext(message, bwoink_words)))
cooldown = COOLDOWN_MEME
addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound, get_turf(user), 'sound/effects/adminhelp.ogg', 300, 1), 25)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(playsound), get_turf(user), 'sound/effects/adminhelp.ogg', 300, 1), 25)
//END CITADEL CHANGES
@@ -834,7 +834,7 @@
E.enthrallTally += power_multiplier*1.25 //thinking about it, I don't know how this can proc
if(L.canbearoused)
if(L.client?.prefs.lewdchem)
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "<span class='nicegreen'><i><b>[E.enthrallGender] is so nice to listen to.</b></i></span>"), 5)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(to_chat), L, "<span class='nicegreen'><i><b>[E.enthrallGender] is so nice to listen to.</b></i></span>"), 5)
E.cooldown += 1
//REWARD mixable works
@@ -846,11 +846,11 @@
if(L == user)
continue
if (L.client?.prefs.lewdchem)
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "<span class='love'>[E.enthrallGender] has praised me!!</span>"), 5)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(to_chat), L, "<span class='love'>[E.enthrallGender] has praised me!!</span>"), 5)
if(HAS_TRAIT(L, TRAIT_NYMPHO))
L.adjustArousalLoss(2*power_multiplier)
else
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "<span class='nicegreen'><b><i>I've been praised for doing a good job!</b></i></span>"), 5)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(to_chat), L, "<span class='nicegreen'><b><i>I've been praised for doing a good job!</b></i></span>"), 5)
E.resistanceTally -= power_multiplier
E.enthrallTally += power_multiplier
var/descmessage = "<span class='love'><i>[(L.client?.prefs.lewdchem?"I feel so happy! I'm a good pet who [E.enthrallGender] loves!":"I did a good job!")]</i></span>"
@@ -866,9 +866,9 @@
if(L == user)
continue
if (L.client?.prefs.lewdchem)
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "<span class='love'>I've let [E.enthrallGender] down...!</b></span>"), 5)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(to_chat), L, "<span class='love'>I've let [E.enthrallGender] down...!</b></span>"), 5)
else
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "<span class='warning'>I've let [E.enthrallGender] down...</b></span>"), 5)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(to_chat), L, "<span class='warning'>I've let [E.enthrallGender] down...</b></span>"), 5)
E.resistanceTally += power_multiplier
E.enthrallTally += power_multiplier
E.cooldown += 1
@@ -902,9 +902,9 @@
E.status = null
user.emote("snap")
if(L.client?.prefs.lewdchem)
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "<span class='big warning'>The snapping of your [E.enthrallGender]'s fingers brings you back to your enthralled state, obedient and ready to serve.</b></span>"), 5)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(to_chat), L, "<span class='big warning'>The snapping of your [E.enthrallGender]'s fingers brings you back to your enthralled state, obedient and ready to serve.</b></span>"), 5)
else
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "<span class='big warning'>The snapping of [E.master]'s fingers brings you back to being under their influence.</b></span>"), 5)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(to_chat), L, "<span class='big warning'>The snapping of [E.master]'s fingers brings you back to being under their influence.</b></span>"), 5)
to_chat(user, "<span class='notice'><i>You wake up [L]!</i></span>")
//tier 1
@@ -1047,7 +1047,7 @@
ADD_TRAIT(C, TRAIT_MUTE, "enthrall")
else
C.silent += ((10 * power_multiplier) * E.phase)
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, "<span class='notice'>You are unable to speak!</b></span>"), 5)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(to_chat), C, "<span class='notice'>You are unable to speak!</b></span>"), 5)
to_chat(user, "<span class='notice'><i>You silence [C].</i></span>")
E.cooldown += 3
@@ -1067,7 +1067,7 @@
var/mob/living/L = V
var/datum/status_effect/chem/enthrall/E = L.has_status_effect(/datum/status_effect/chem/enthrall)
E.status = "Antiresist"
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "<span class='big warning'>Your mind clouds over, as you find yourself unable to resist!</b></span>"), 5)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(to_chat), L, "<span class='big warning'>Your mind clouds over, as you find yourself unable to resist!</b></span>"), 5)
E.statusStrength = (1 * power_multiplier * E.phase)
E.cooldown += 15//Too short? yes, made 15
to_chat(user, "<span class='notice'><i>You frustrate [L]'s attempts at resisting.</i></span>")
@@ -1080,7 +1080,7 @@
E.deltaResist += (power_multiplier)
E.owner_resist()
E.cooldown += 2
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, "<span class='notice'>You are spurred into resisting from [user]'s words!'</b></span>"), 5)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(to_chat), C, "<span class='notice'>You are spurred into resisting from [user]'s words!'</b></span>"), 5)
to_chat(user, "<span class='notice'><i>You spark resistance in [C].</i></span>")
//FORGET (A way to cancel the process)
@@ -1088,9 +1088,9 @@
for(var/mob/living/carbon/C in listeners)
var/datum/status_effect/chem/enthrall/E = C.has_status_effect(/datum/status_effect/chem/enthrall)
if(E.phase == 4)
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, "<span class='warning'>You're unable to forget about [(C.client?.prefs.lewdchem?"the dominating presence of [E.enthrallGender]":"[E.master]")]!</b></span>"), 5)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(to_chat), C, "<span class='warning'>You're unable to forget about [(C.client?.prefs.lewdchem?"the dominating presence of [E.enthrallGender]":"[E.master]")]!</b></span>"), 5)
continue
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, "<span class='warning'>You wake up, forgetting everything that just happened. You must've dozed off..? How embarassing!</b></span>"), 5)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(to_chat), C, "<span class='warning'>You wake up, forgetting everything that just happened. You must've dozed off..? How embarassing!</b></span>"), 5)
C.Sleeping(50)
switch(E.phase)
if(1 to 2)
@@ -1101,9 +1101,9 @@
E.phase = 0
E.cooldown = 0
if(C.client?.prefs.lewdchem)
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, "<span class='big warning'>You revert to yourself before being enthralled by your [E.enthrallGender], with no memory of what happened.</b></span>"), 5)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(to_chat), C, "<span class='big warning'>You revert to yourself before being enthralled by your [E.enthrallGender], with no memory of what happened.</b></span>"), 5)
else
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, "<span class='big warning'>You revert to who you were before, with no memory of what happened with [E.master].</b></span>"), 5)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(to_chat), C, "<span class='big warning'>You revert to who you were before, with no memory of what happened with [E.master].</b></span>"), 5)
to_chat(user, "<span class='notice'><i>You put [C] into a sleeper state, ready to turn them back at the snap of your fingers.</i></span>")
//ATTRACT
@@ -1113,7 +1113,7 @@
var/datum/status_effect/chem/enthrall/E = L.has_status_effect(/datum/status_effect/chem/enthrall)
L.throw_at(get_step_towards(user,L), 3 * power_multiplier, 1 * power_multiplier)
E.cooldown += 3
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "<span class='notice'>You are drawn towards [user]!</b></span>"), 5)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(to_chat), L, "<span class='notice'>You are drawn towards [user]!</b></span>"), 5)
to_chat(user, "<span class='notice'><i>You draw [L] towards you!</i></span>")
@@ -1128,7 +1128,7 @@
var/datum/status_effect/chem/enthrall/E = H.has_status_effect(/datum/status_effect/chem/enthrall)
if(E.phase > 1)
if(HAS_TRAIT(H, TRAIT_NYMPHO) && H.canbearoused && H.client?.prefs.lewdchem) // probably a redundant check but for good measure
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, H, "<span class='love'>Your [E.enthrallGender] pushes you over the limit, overwhelming your body with pleasure.</b></span>"), 5)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(to_chat), H, "<span class='love'>Your [E.enthrallGender] pushes you over the limit, overwhelming your body with pleasure.</b></span>"), 5)
H.mob_climax(forced_climax=TRUE)
H.SetStun(20)
H.setArousalLoss(H.min_arousal)
@@ -1169,7 +1169,7 @@
if(2 to INFINITY)
C.Sleeping(45 * power_multiplier)
E.cooldown += 10
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, "<span class='notice'>Drowsiness suddenly overwhelms you as you fall asleep!</b></span>"), 5)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(to_chat), C, "<span class='notice'>Drowsiness suddenly overwhelms you as you fall asleep!</b></span>"), 5)
to_chat(user, "<span class='notice'><i>You send [C] to sleep.</i></span>")
//STRIP
@@ -1183,7 +1183,7 @@
for(var/obj/item/W in items)
if(W == H.wear_suit)
H.dropItemToGround(W, TRUE)
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, H, "<span class='[(H.client?.prefs.lewdchem?"love":"warning")]'>Before you can even think about it, you quickly remove your clothes in response to [(H.client?.prefs.lewdchem?"your [E.enthrallGender]'s command'":"[E.master]'s directive'")].</b></span>"), 5)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(to_chat), H, "<span class='[(H.client?.prefs.lewdchem?"love":"warning")]'>Before you can even think about it, you quickly remove your clothes in response to [(H.client?.prefs.lewdchem?"your [E.enthrallGender]'s command'":"[E.master]'s directive'")].</b></span>"), 5)
E.cooldown += 10
//WALK
@@ -1196,7 +1196,7 @@
if(L.m_intent != MOVE_INTENT_WALK)
L.toggle_move_intent()
E.cooldown += 1
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "<span class='notice'>You slow down to a walk.</b></span>"), 5)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(to_chat), L, "<span class='notice'>You slow down to a walk.</b></span>"), 5)
to_chat(user, "<span class='notice'><i>You encourage [L] to slow down.</i></span>")
//RUN
@@ -1209,7 +1209,7 @@
if(L.m_intent != MOVE_INTENT_RUN)
L.toggle_move_intent()
E.cooldown += 1
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "<span class='notice'>You speed up into a jog!</b></span>"), 5)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(to_chat), L, "<span class='notice'>You speed up into a jog!</b></span>"), 5)
to_chat(user, "<span class='notice'><i>You encourage [L] to pick up the pace!</i></span>")
//LIE DOWN
@@ -1221,7 +1221,7 @@
if(2 to INFINITY)
L.lay_down()
E.cooldown += 10
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "[(L.client?.prefs.lewdchem?"<span class='love'>You eagerly lie down!":"<span class='notice'>You suddenly lie down!")]</b></span>"), 5)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(to_chat), L, "[(L.client?.prefs.lewdchem?"<span class='love'>You eagerly lie down!":"<span class='notice'>You suddenly lie down!")]</b></span>"), 5)
to_chat(user, "<span class='notice'><i>You encourage [L] to lie down.</i></span>")
//KNOCKDOWN
@@ -1233,7 +1233,7 @@
if(2 to INFINITY)
L.Knockdown(30 * power_multiplier * E.phase)
E.cooldown += 8
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "<span class='notice'>You suddenly drop to the ground!</b></span>"), 5)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(to_chat), L, "<span class='notice'>You suddenly drop to the ground!</b></span>"), 5)
to_chat(user, "<span class='notice'><i>You encourage [L] to drop down to the ground.</i></span>")
//tier3
@@ -1252,7 +1252,7 @@
for (var/trigger in E.customTriggers)
speaktrigger += "[trigger], "
to_chat(user, "<b>[C]</b> whispers, \"<i>[speaktrigger] are my triggers.</i>\"")//So they don't trigger themselves!
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, "<span class='notice'>You whisper your triggers to [(C.client?.prefs.lewdchem?"Your [E.enthrallGender]":"[E.master]")].</span>"), 5)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(to_chat), C, "<span class='notice'>You whisper your triggers to [(C.client?.prefs.lewdchem?"Your [E.enthrallGender]":"[E.master]")].</span>"), 5)
//CUSTOM TRIGGERS
@@ -1287,7 +1287,7 @@
E.customTriggers[trigger] = trigger2
log_game("FERMICHEM: [H] has been implanted by [user] with [trigger], triggering [trigger2].")
E.mental_capacity -= 5
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, H, "<span class='notice'>[(H.client?.prefs.lewdchem?"your [E.enthrallGender]":"[E.master]")] whispers you a new trigger.</span>"), 5)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(to_chat), H, "<span class='notice'>[(H.client?.prefs.lewdchem?"your [E.enthrallGender]":"[E.master]")] whispers you a new trigger.</span>"), 5)
to_chat(user, "<span class='notice'><i>You sucessfully set the trigger word [trigger] in [H]</i></span>")
else
to_chat(user, "<span class='warning'>Your pet looks at you confused, it seems they don't understand that effect!</b></span>")
@@ -1349,7 +1349,7 @@
objective = replacetext(lowertext(objective), "suicide", "self-love")
message_admins("[H] has been implanted by [user] with the objective [objective].")
log_game("FERMICHEM: [H] has been implanted by [user] with the objective [objective] via MKUltra.")
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, H, "<span class='notice'>[(H.client?.prefs.lewdchem?"Your [E.enthrallGender]":"[E.master]")] whispers you a new objective.</span>"), 5)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(to_chat), H, "<span class='notice'>[(H.client?.prefs.lewdchem?"Your [E.enthrallGender]":"[E.master]")] whispers you a new objective.</span>"), 5)
brainwash(H, objective)
E.mental_capacity -= 200
to_chat(user, "<span class='notice'><i>You sucessfully give an objective to [H]</i></span>")
@@ -1378,7 +1378,7 @@
if(E.phase > 1)
if(user.ckey == E.enthrallID && user.real_name == E.master.real_name)
E.master = user
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, H, "<span class='nicegreen'>[(H.client?.prefs.lewdchem?"You hear the words of your [E.enthrallGender] again!! They're back!!":"You recognise the voice of [E.master].")]</b></span>"), 5)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(to_chat), H, "<span class='nicegreen'>[(H.client?.prefs.lewdchem?"You hear the words of your [E.enthrallGender] again!! They're back!!":"You recognise the voice of [E.master].")]</b></span>"), 5)
to_chat(user, "<span class='notice'><i>[H] looks at you with sparkling eyes, recognising you!</i></span>")
//I dunno how to do state objectives without them revealing they're an antag
@@ -1393,7 +1393,7 @@
E.status = "heal"
E.statusStrength = (5 * power_multiplier)
E.cooldown += 5
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "<span class='notice'>You begin to lick your wounds.</b></span>"), 5)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(to_chat), L, "<span class='notice'>You begin to lick your wounds.</b></span>"), 5)
L.Stun(15 * power_multiplier)
to_chat(user, "<span class='notice'><i>[L] begins to lick their wounds.</i></span>")
@@ -1406,7 +1406,7 @@
if(3 to INFINITY)
L.Stun(40 * power_multiplier)
E.cooldown += 8
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "<span class='notice'>Your muscles freeze up!</b></span>"), 5)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(to_chat), L, "<span class='notice'>Your muscles freeze up!</b></span>"), 5)
to_chat(user, "<span class='notice'><i>You cause [L] to freeze up!</i></span>")
//HALLUCINATE
@@ -1427,7 +1427,7 @@
switch(E.phase)
if(3 to INFINITY)
L.adjust_bodytemperature(50 * power_multiplier)//This seems nuts, reduced it, but then it didn't do anything, so I reverted it.
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "<span class='notice'>You feel your metabolism speed up!</b></span>"), 5)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(to_chat), L, "<span class='notice'>You feel your metabolism speed up!</b></span>"), 5)
to_chat(user, "<span class='notice'><i>You speed [L]'s metabolism up!</i></span>")
//COLD
@@ -1438,7 +1438,7 @@
switch(E.phase)
if(3 to INFINITY)
L.adjust_bodytemperature(-50 * power_multiplier)
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "<span class='notice'>You feel your metabolism slow down!</b></span>"), 5)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(to_chat), L, "<span class='notice'>You feel your metabolism slow down!</b></span>"), 5)
to_chat(user, "<span class='notice'><i>You slow [L]'s metabolism down!</i></span>")
//GET UP
@@ -1454,7 +1454,7 @@
L.SetKnockdown(0)
L.SetUnconscious(0) //i said get up i don't care if you're being tased
E.cooldown += 10 //This could be really strong
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "<span class='notice'>You jump to your feet from sheer willpower!</b></span>"), 5)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(to_chat), L, "<span class='notice'>You jump to your feet from sheer willpower!</b></span>"), 5)
to_chat(user, "<span class='notice'><i>You spur [L] to their feet!</i></span>")
//PACIFY
@@ -1466,7 +1466,7 @@
if(3)//Tier 3 only
E.status = "pacify"
E.cooldown += 10
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "<span class='notice'>You feel like never hurting anyone ever again.</b></span>"), 5)
addtimer(CALLBACK(GLOBAL_PROC,PROC_REF(to_chat), L, "<span class='notice'>You feel like never hurting anyone ever again.</b></span>"), 5)
to_chat(user, "<span class='notice'><i>You remove any intent to harm from [L]'s mind.</i></span>")
//CHARGE