mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-19 11:17:19 +01:00
converts our spans (#9185)
This commit is contained in:
@@ -12,4 +12,4 @@ GLOBAL_VAR_INIT(global_vantag_hud, 0)
|
||||
L.vantag_hud = TRUE
|
||||
L.recalculate_vis()
|
||||
|
||||
to_chat(src, "<span class='warning'>Global Event HUD has been turned [GLOB.global_vantag_hud ? "on" : "off"].</span>")
|
||||
to_chat(src, span_warning("Global Event HUD has been turned [GLOB.global_vantag_hud ? "on" : "off"]."))
|
||||
|
||||
@@ -14,9 +14,9 @@
|
||||
continue
|
||||
full++
|
||||
if(full >= 2)
|
||||
to_chat(user, "<span class='warning'>It doesn't seem like there is room in \the [src]!</span>")
|
||||
to_chat(user, span_warning("It doesn't seem like there is room in \the [src]!"))
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You crawl into \the [src]!</span>")
|
||||
to_chat(user, span_warning("You crawl into \the [src]!"))
|
||||
user.forceMove(src)
|
||||
|
||||
return ..()
|
||||
@@ -56,7 +56,7 @@
|
||||
"The wearer of \the [name] walks, and their feet press down on you heavily with each step.",
|
||||
"With each step of their unhurried walk, you're tightly sandwiched between [pred]'s feet and the insole of their boots.",
|
||||
"As [pred] walks, their foot presses you tightly against the insole of their boots with each step.")
|
||||
to_chat(prey, span_emote_subtle("<I>[message_prey]</I>"))
|
||||
to_chat(prey, span_emote_subtle(span_italics("[message_prey]")))
|
||||
|
||||
return //No message for pred if I_HELP
|
||||
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
if(H && H.gloves == src)
|
||||
wearer = H
|
||||
if(wearer.can_feel_pain())
|
||||
to_chat(H, "<span class='danger'>You feel strange as hunger vanishes!</span>")
|
||||
to_chat(H, span_danger("You feel strange as hunger vanishes!"))
|
||||
wearer.custom_pain("Your hands feel strange!",1)
|
||||
..()
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
..()
|
||||
if(wearer)
|
||||
if(wearer.can_feel_pain())
|
||||
to_chat(wearer, "<span class='danger'>You feel hungry!</span>")
|
||||
to_chat(wearer, span_danger("You feel hungry!"))
|
||||
wearer.custom_pain("Your hands feel strange",1)
|
||||
wearer = null
|
||||
|
||||
@@ -123,7 +123,7 @@
|
||||
/obj/item/clothing/suit/armor/buffvest/proc/activate_ability(var/mob/living/wearer)
|
||||
cooldown = world.time + cooldown_duration
|
||||
to_chat(wearer, flavor_activate)
|
||||
to_chat(wearer, "<span class='danger'>The inside of your head hurts...</span>")
|
||||
to_chat(wearer, span_danger("The inside of your head hurts..."))
|
||||
wearer.adjustBrainLoss(brainloss_cost)
|
||||
wearer.add_modifier(/datum/modifier/aura/candy_blue, 30 SECONDS)
|
||||
|
||||
|
||||
@@ -72,36 +72,36 @@
|
||||
var/message = phrase_list[key]
|
||||
|
||||
if (!safety)
|
||||
to_chat(usr, "<span class='notice'>You set the restrictor to: FUCK YOUR CUNT YOU SHIT EATING COCKSUCKER MAN EAT A DONG FUCKING ASS RAMMING SHIT FUCK EAT PENISES IN YOUR FUCK FACE AND SHIT OUT ABORTIONS OF FUCK AND DO SHIT IN YOUR ASS YOU COCK FUCK SHIT MONKEY FUCK ASS WANKER FROM THE DEPTHS OF SHIT.</span>")
|
||||
to_chat(usr, span_notice("You set the restrictor to: FUCK YOUR CUNT YOU SHIT EATING COCKSUCKER MAN EAT A DONG FUCKING ASS RAMMING SHIT FUCK EAT PENISES IN YOUR FUCK FACE AND SHIT OUT ABORTIONS OF FUCK AND DO SHIT IN YOUR ASS YOU COCK FUCK SHIT MONKEY FUCK ASS WANKER FROM THE DEPTHS OF SHIT."))
|
||||
return
|
||||
switch(aggressiveness)
|
||||
if(1)
|
||||
phrase = (phrase < 6) ? (phrase + 1) : 1
|
||||
key = phrase_list[phrase]
|
||||
message = phrase_list[key]
|
||||
to_chat(usr,"<span class='notice'>You set the restrictor to: [message]</span>")
|
||||
to_chat(usr,span_notice("You set the restrictor to: [message]"))
|
||||
if(2)
|
||||
phrase = (phrase < 11 && phrase >= 7) ? (phrase + 1) : 7
|
||||
key = phrase_list[phrase]
|
||||
message = phrase_list[key]
|
||||
to_chat(usr,"<span class='notice'>You set the restrictor to: [message]</span>")
|
||||
to_chat(usr,span_notice("You set the restrictor to: [message]"))
|
||||
if(3)
|
||||
phrase = (phrase < 18 && phrase >= 12 ) ? (phrase + 1) : 12
|
||||
key = phrase_list[phrase]
|
||||
message = phrase_list[key]
|
||||
to_chat(usr,"<span class='notice'>You set the restrictor to: [message]</span>")
|
||||
to_chat(usr,span_notice("You set the restrictor to: [message]"))
|
||||
if(4)
|
||||
phrase = (phrase < 18 && phrase >= 1 ) ? (phrase + 1) : 1
|
||||
key = phrase_list[phrase]
|
||||
message = phrase_list[key]
|
||||
to_chat(usr,"<span class='notice'>You set the restrictor to: [message]</span>")
|
||||
to_chat(usr,span_notice("You set the restrictor to: [message]"))
|
||||
else
|
||||
to_chat(usr, "<span class='notice'>It's broken.</span>")
|
||||
to_chat(usr, span_notice("It's broken."))
|
||||
|
||||
/obj/item/clothing/mask/gas/sechailer/emag_act(mob/user)
|
||||
if(safety)
|
||||
safety = 0
|
||||
to_chat(user, "<span class='warning'>You silently fry [src]'s vocal circuit with the cryptographic sequencer.</span>")
|
||||
to_chat(user, span_warning("You silently fry [src]'s vocal circuit with the cryptographic sequencer."))
|
||||
else
|
||||
return
|
||||
|
||||
@@ -109,30 +109,30 @@
|
||||
if(I.is_screwdriver())
|
||||
switch(aggressiveness)
|
||||
if(1)
|
||||
to_chat(user, "<span class='notice'>You set the aggressiveness restrictor to the second position.</span>")
|
||||
to_chat(user, span_notice("You set the aggressiveness restrictor to the second position."))
|
||||
aggressiveness = 2
|
||||
phrase = 7
|
||||
if(2)
|
||||
to_chat(user, "<span class='notice'>You set the aggressiveness restrictor to the third position.</span>")
|
||||
to_chat(user, span_notice("You set the aggressiveness restrictor to the third position."))
|
||||
aggressiveness = 3
|
||||
phrase = 13
|
||||
if(3)
|
||||
to_chat(user, "<span class='notice'>You set the aggressiveness restrictor to the fourth position.</span>")
|
||||
to_chat(user, span_notice("You set the aggressiveness restrictor to the fourth position."))
|
||||
aggressiveness = 4
|
||||
phrase = 1
|
||||
if(4)
|
||||
to_chat(user, "<span class='notice'>You set the aggressiveness restrictor to the first position.</span>")
|
||||
to_chat(user, span_notice("You set the aggressiveness restrictor to the first position."))
|
||||
aggressiveness = 1
|
||||
phrase = 1
|
||||
if(5)
|
||||
to_chat(user, "<span class='warning'>You adjust the restrictor but nothing happens, probably because its broken.</span>")
|
||||
to_chat(user, span_warning("You adjust the restrictor but nothing happens, probably because its broken."))
|
||||
if(I.is_wirecutter())
|
||||
if(aggressiveness != 5)
|
||||
to_chat(user, "<span class='warning'>You broke it!</span>")
|
||||
to_chat(user, span_warning("You broke it!"))
|
||||
aggressiveness = 5
|
||||
if(I.is_crowbar())
|
||||
if(!hailer)
|
||||
to_chat(user, "<span class='warning'>This mask has an integrated hailer, you can't remove it!</span>")
|
||||
to_chat(user, span_warning("This mask has an integrated hailer, you can't remove it!"))
|
||||
else
|
||||
var/obj/N = new /obj/item/clothing/mask/gas/half(src.loc)
|
||||
playsound(src, 'sound/items/Screwdriver.ogg', 50, 1)
|
||||
@@ -159,11 +159,11 @@
|
||||
if(cooldown < world.time - 35) // A cooldown, to stop people being jerks
|
||||
if(!safety)
|
||||
message = "FUCK YOUR CUNT YOU SHIT EATING COCKSUCKER MAN EAT A DONG FUCKING ASS RAMMING SHIT FUCK EAT PENISES IN YOUR FUCK FACE AND SHIT OUT ABORTIONS OF FUCK AND DO SHIT IN YOUR ASS YOU COCK FUCK SHIT MONKEY FUCK ASS WANKER FROM THE DEPTHS OF SHIT."
|
||||
usr.visible_message("[usr]'s Compli-o-Nator: <font color='red' size='4'><b>[message]</b></font>")
|
||||
usr.visible_message(span_infoplain("[usr]'s Compli-o-Nator: " + span_red(span_huge(span_bold("[message]")))))
|
||||
playsound(src, 'sound/voice/binsult.ogg', 50, 0, 4) //Future sound channel = something like SFX
|
||||
cooldown = world.time
|
||||
return
|
||||
|
||||
usr.visible_message("[usr]'s Compli-o-Nator: <font color='red' size='4'><b>[message]</b></font>")
|
||||
usr.visible_message(span_infoplain("[usr]'s Compli-o-Nator: " + span_red(span_huge(span_bold("[message]")))))
|
||||
playsound(src, "sound/voice/complionator/[key].ogg", 50, 0, 4) //future sound channel = something like SFX
|
||||
cooldown = world.time
|
||||
cooldown = world.time
|
||||
|
||||
@@ -37,8 +37,8 @@
|
||||
/obj/item/rig/ch/aegis/bullet_act(var/obj/item/projectile/P)
|
||||
var/reflectchance = 70 - round(P.damage)
|
||||
if(prob(reflectchance))
|
||||
visible_message("<span class='danger'>The [P.name] gets reflected by [src]'s shell!</span>", \
|
||||
"<span class='userdanger'>The [P.name] gets reflected by [src]'s shell!</span>")
|
||||
visible_message(span_danger("The [P.name] gets reflected by [src]'s shell!"), \
|
||||
span_userdanger("The [P.name] gets reflected by [src]'s shell!"))
|
||||
|
||||
// Find a turf near or on the original location to bounce to
|
||||
if(P.starting)
|
||||
@@ -57,8 +57,8 @@
|
||||
/obj/item/clothing/suit/space/rig/ch/aegis/bullet_act(var/obj/item/projectile/P)
|
||||
var/reflectchance = 70 - round(P.damage)
|
||||
if(prob(reflectchance))
|
||||
visible_message("<span class='danger'>The [P.name] gets reflected by [src]'s shell!</span>", \
|
||||
"<span class='userdanger'>The [P.name] gets reflected by [src]'s shell!</span>")
|
||||
visible_message(span_danger("The [P.name] gets reflected by [src]'s shell!"), \
|
||||
span_userdanger("The [P.name] gets reflected by [src]'s shell!"))
|
||||
|
||||
// Find a turf near or on the original location to bounce to
|
||||
if(P.starting)
|
||||
@@ -77,8 +77,8 @@
|
||||
/obj/item/clothing/head/helmet/space/rig/ch/aegis/bullet_act(var/obj/item/projectile/P)
|
||||
var/reflectchance = 70 - round(P.damage)
|
||||
if(prob(reflectchance))
|
||||
visible_message("<span class='danger'>The [P.name] gets reflected by [src]'s shell!</span>", \
|
||||
"<span class='userdanger'>The [P.name] gets reflected by [src]'s shell!</span>")
|
||||
visible_message(span_danger("The [P.name] gets reflected by [src]'s shell!"), \
|
||||
span_userdanger("The [P.name] gets reflected by [src]'s shell!"))
|
||||
|
||||
// Find a turf near or on the original location to bounce to
|
||||
if(P.starting)
|
||||
@@ -98,8 +98,8 @@
|
||||
/obj/item/clothing/gloves/gauntlets/rig/ch/aegis/bullet_act(var/obj/item/projectile/P)
|
||||
var/reflectchance = 70 - round(P.damage)
|
||||
if(prob(reflectchance))
|
||||
visible_message("<span class='danger'>The [P.name] gets reflected by [src]'s shell!</span>", \
|
||||
"<span class='userdanger'>The [P.name] gets reflected by [src]'s shell!</span>")
|
||||
visible_message(span_danger("The [P.name] gets reflected by [src]'s shell!"), \
|
||||
span_userdanger("The [P.name] gets reflected by [src]'s shell!"))
|
||||
|
||||
// Find a turf near or on the original location to bounce to
|
||||
if(P.starting)
|
||||
@@ -119,8 +119,8 @@
|
||||
/obj/item/clothing/shoes/magboots/rig/ch/aegis/bullet_act(var/obj/item/projectile/P)
|
||||
var/reflectchance = 70 - round(P.damage)
|
||||
if(prob(reflectchance))
|
||||
visible_message("<span class='danger'>The [P.name] gets reflected by [src]'s shell!</span>", \
|
||||
"<span class='userdanger'>The [P.name] gets reflected by [src]'s shell!</span>")
|
||||
visible_message(span_danger("The [P.name] gets reflected by [src]'s shell!"), \
|
||||
span_userdanger("The [P.name] gets reflected by [src]'s shell!"))
|
||||
|
||||
// Find a turf near or on the original location to bounce to
|
||||
if(P.starting)
|
||||
@@ -134,4 +134,4 @@
|
||||
|
||||
return -1 // complete projectile permutation
|
||||
|
||||
return (..(P))
|
||||
return (..(P))
|
||||
|
||||
@@ -21,4 +21,4 @@
|
||||
|
||||
/obj/item/shockpaddles/standalone/rig/attack_self()
|
||||
use_on_synthetic = !use_on_synthetic
|
||||
to_chat(usr, "<span class='notice'>You switch the [src] to [use_on_synthetic ? "FBP" : "organic"] compatibility.</span>")
|
||||
to_chat(usr, span_notice("You switch the [src] to [use_on_synthetic ? "FBP" : "organic"] compatibility."))
|
||||
|
||||
@@ -25,8 +25,8 @@ These should come standard with the Protean rigsuit, unless you want them to wor
|
||||
|
||||
var/mob/living/carbon/human/H = holder.wearer
|
||||
if(H)
|
||||
to_chat(usr, span_blue("<b>You activate the suit's energy syphon.</b>"))
|
||||
to_chat(H, "<span class='warning'>Your suit begins to sap at your own energy stores.</span>")
|
||||
to_chat(usr, span_boldnotice("You activate the suit's energy syphon."))
|
||||
to_chat(H, span_warning("Your suit begins to sap at your own energy stores."))
|
||||
active = 1
|
||||
else
|
||||
return 0
|
||||
@@ -39,8 +39,8 @@ These should come standard with the Protean rigsuit, unless you want them to wor
|
||||
return
|
||||
var/mob/living/carbon/human/H = holder.wearer
|
||||
if(H)
|
||||
to_chat(usr, span_blue("<b>You deactivate the suit's energy syphon.</b>"))
|
||||
to_chat(H, "<span class='warning'>Your suit ceases from sapping your own energy.</span>")
|
||||
to_chat(usr, span_boldnotice("You deactivate the suit's energy syphon."))
|
||||
to_chat(H, span_warning("Your suit ceases from sapping your own energy."))
|
||||
active = 0
|
||||
else
|
||||
return 0
|
||||
@@ -50,7 +50,7 @@ These should come standard with the Protean rigsuit, unless you want them to wor
|
||||
var/mob/living/carbon/human/H = holder.wearer
|
||||
var/mob/living/P = holder?:myprotean
|
||||
if(istype(H.species, /datum/species/protean))
|
||||
to_chat(H, "<span class='warning'>Your Protean modules do not function on yourself.</span>")
|
||||
to_chat(H, span_warning("Your Protean modules do not function on yourself."))
|
||||
deactivate(1)
|
||||
else
|
||||
P = P?:humanform
|
||||
@@ -87,7 +87,7 @@ These should come standard with the Protean rigsuit, unless you want them to wor
|
||||
|
||||
/obj/item/rig_module/protean/armor/activate()
|
||||
if(holder?:assimilated_rig)
|
||||
to_chat(usr, span_red("<b>Armor module non-functional while a RIG is assimilated.</b>"))
|
||||
to_chat(usr, span_bolddanger("Armor module non-functional while a RIG is assimilated."))
|
||||
return
|
||||
if(!..(1))
|
||||
return 0
|
||||
@@ -96,8 +96,8 @@ These should come standard with the Protean rigsuit, unless you want them to wor
|
||||
if(H)
|
||||
var/list/temparmor = list("bio" = 100, "rad" = 100)
|
||||
temparmor = armor_settings + temparmor
|
||||
to_chat(usr, span_blue("<b>You signal the suit to harden.</b>"))
|
||||
to_chat(H, "<span class='notice'>Your suit hardens in response to physical trauma.</span>")
|
||||
to_chat(usr, span_boldnotice("You signal the suit to harden."))
|
||||
to_chat(H, span_notice("Your suit hardens in response to physical trauma."))
|
||||
holder.armor = temparmor.Copy()
|
||||
for(var/obj/item/piece in list(holder.gloves,holder.helmet,holder.boots,holder.chest))
|
||||
piece.armor = temparmor.Copy()
|
||||
@@ -118,8 +118,8 @@ These should come standard with the Protean rigsuit, unless you want them to wor
|
||||
return
|
||||
var/mob/living/carbon/human/H = holder.wearer
|
||||
if(H)
|
||||
to_chat(usr, span_blue("<b>You signal the suit to relax.</b>"))
|
||||
to_chat(H, "<span class='warning'>Your suit softens.</span>")
|
||||
to_chat(usr, span_boldnotice("You signal the suit to relax."))
|
||||
to_chat(H, span_warning("Your suit softens."))
|
||||
holder.armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 100)
|
||||
for(var/obj/item/piece in list(holder.gloves,holder.helmet,holder.boots,holder.chest))
|
||||
piece.armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 100)
|
||||
@@ -132,7 +132,7 @@ These should come standard with the Protean rigsuit, unless you want them to wor
|
||||
if(active)
|
||||
var/mob/living/carbon/human/H = holder.wearer
|
||||
if(istype(H.species, /datum/species/protean))
|
||||
to_chat(H, "<span class='warning'>Your Protean modules do not function on yourself.</span>")
|
||||
to_chat(H, span_warning("Your Protean modules do not function on yourself."))
|
||||
deactivate(1)
|
||||
|
||||
|
||||
@@ -155,13 +155,13 @@ These should come standard with the Protean rigsuit, unless you want them to wor
|
||||
var/mob/living/P = holder?:myprotean
|
||||
if(H && P)
|
||||
if(istype(H.species, /datum/species/protean))
|
||||
to_chat(H, "<span class='warning'>Your Protean modules do not function on yourself.</span>")
|
||||
to_chat(H, span_warning("Your Protean modules do not function on yourself."))
|
||||
return 0
|
||||
var/obj/item/organ/internal/nano/refactory/R = P.nano_get_refactory()
|
||||
if(R.get_stored_material(MAT_STEEL) >= 100)
|
||||
healing = holder.wearer.add_modifier(/datum/modifier/protean/steel, origin = R)
|
||||
to_chat(usr, span_blue("<b>You activate the suit's restorative nanites.</b>"))
|
||||
to_chat(H, "<span class='warning'>Your suit begins mending your injuries.</span>")
|
||||
to_chat(usr, span_boldnotice("You activate the suit's restorative nanites."))
|
||||
to_chat(H, span_warning("Your suit begins mending your injuries."))
|
||||
active = 1
|
||||
return 1
|
||||
return 0
|
||||
@@ -171,8 +171,8 @@ These should come standard with the Protean rigsuit, unless you want them to wor
|
||||
return 0
|
||||
var/mob/living/carbon/human/H = holder.wearer
|
||||
if(H)
|
||||
to_chat(usr, span_blue("<b>You deactivate the suit's restorative nanites.</b>"))
|
||||
to_chat(H, "<span class='warning'>Your suit is no longer mending your injuries.</span>")
|
||||
to_chat(usr, span_boldnotice("You deactivate the suit's restorative nanites."))
|
||||
to_chat(H, span_warning("Your suit is no longer mending your injuries."))
|
||||
active = 0
|
||||
if(healing)
|
||||
healing.expire()
|
||||
@@ -186,12 +186,12 @@ These should come standard with the Protean rigsuit, unless you want them to wor
|
||||
var/mob/living/carbon/human/H = holder.wearer
|
||||
var/mob/living/P = holder?:myprotean
|
||||
if((istype(H.species, /datum/species/protean)) || !H || !P)
|
||||
to_chat(H, "<span class='warning'>Your Protean modules do not function on yourself.</span>")
|
||||
to_chat(H, span_warning("Your Protean modules do not function on yourself."))
|
||||
deactivate()
|
||||
return
|
||||
var/obj/item/organ/internal/nano/refactory/R = P.nano_get_refactory()
|
||||
if((!R.get_stored_material(MAT_STEEL)))
|
||||
to_chat(H, "<span class='warning'>Your [holder] is out of steel.</span>")
|
||||
to_chat(H, span_warning("Your [holder] is out of steel."))
|
||||
deactivate()
|
||||
return
|
||||
|
||||
@@ -204,6 +204,6 @@ These should come standard with the Protean rigsuit, unless you want them to wor
|
||||
var/obj/item/organ/internal/nano/refactory/R = P?.nano_get_refactory()
|
||||
|
||||
if(R?.add_stored_material(S.material.name,1*S.perunit) && S.use(1))
|
||||
to_chat(user, span_blue("<b>You directly feed some steel to the [holder].</b>"))
|
||||
to_chat(user, span_boldnotice("You directly feed some steel to the [holder]."))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
@@ -43,30 +43,30 @@
|
||||
|
||||
/obj/item/rig/ch/precursor/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
|
||||
if(prob(block_chance))
|
||||
user.visible_message("<span class='danger'>\The [src] completely absorbs [attack_text]!</span>")
|
||||
user.visible_message(span_danger("\The [src] completely absorbs [attack_text]!"))
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/obj/item/clothing/suit/space/rig/ch/precursor/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
|
||||
if(prob(block_chance))
|
||||
user.visible_message("<span class='danger'>\The [src] completely absorbs [attack_text]!</span>")
|
||||
user.visible_message(span_danger("\The [src] completely absorbs [attack_text]!"))
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/ch/precursor/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
|
||||
if(prob(block_chance))
|
||||
user.visible_message("<span class='danger'>\The [src] completely absorbs [attack_text]!</span>")
|
||||
user.visible_message(span_danger("\The [src] completely absorbs [attack_text]!"))
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/obj/item/clothing/gloves/gauntlets/rig/ch/precursor/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
|
||||
if(prob(block_chance))
|
||||
user.visible_message("<span class='danger'>\The [src] completely absorbs [attack_text]!</span>")
|
||||
user.visible_message(span_danger("\The [src] completely absorbs [attack_text]!"))
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/obj/item/clothing/shoes/magboots/rig/ch/precursor/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
|
||||
if(prob(block_chance))
|
||||
user.visible_message("<span class='danger'>\The [src] completely absorbs [attack_text]!</span>")
|
||||
user.visible_message(span_danger("\The [src] completely absorbs [attack_text]!"))
|
||||
return TRUE
|
||||
return FALSE
|
||||
return FALSE
|
||||
|
||||
@@ -12,16 +12,16 @@
|
||||
/obj/structure/closet/crate/secure/lootsafe/emag_act(var/remaining_charges, var/mob/user)
|
||||
if (locked)
|
||||
if(prob(60 - hackguard))
|
||||
to_chat(user, "<span class='notice'>The safe unlocks!</span>")
|
||||
to_chat(user, span_notice("The safe unlocks!"))
|
||||
locked = 0
|
||||
return 1
|
||||
if(prob(15 + hackguard))
|
||||
to_chat(user, "<span class='notice'>The safe buzzes as a security drone is teleported in!</span>")
|
||||
to_chat(user, span_notice("The safe buzzes as a security drone is teleported in!"))
|
||||
new /mob/living/simple_mob/mechanical/combat_drone (src.loc) //if I ever make security stun drones remind me to replace this with those
|
||||
//new /effect/system/spark_spread (src.loc) I am to tired to make this work right now
|
||||
return 1
|
||||
else
|
||||
to_chat(user, "<span class='notice'>The safe buzzes but the security systems don't trigger.</span>")
|
||||
to_chat(user, span_notice("The safe buzzes but the security systems don't trigger."))
|
||||
return 1
|
||||
|
||||
//Loot for lootsafes
|
||||
@@ -117,7 +117,7 @@
|
||||
if(!locked)
|
||||
return
|
||||
|
||||
to_chat(user, "<span class='notice'>The crate is locked with a Deca-code lock.</span>")
|
||||
to_chat(user, span_notice("The crate is locked with a Deca-code lock."))
|
||||
var/input = tgui_input_text(usr, "Enter [codelen] digits. All digits must be unique.", "Deca-Code Lock", "")
|
||||
if(!Adjacent(user))
|
||||
return
|
||||
@@ -131,16 +131,16 @@
|
||||
sanitycheck = null //if a digit is repeated, reject the input
|
||||
|
||||
if(input == null || sanitycheck == null || length(input) != codelen)
|
||||
to_chat(user, "<span class='notice'>You leave the crate alone.</span>")
|
||||
to_chat(user, span_notice("You leave the crate alone."))
|
||||
else if(check_input(input))
|
||||
to_chat(user, "<span class='notice'>The crate unlocks!</span>")
|
||||
to_chat(user, span_notice("The crate unlocks!"))
|
||||
playsound(src, 'sound/machines/lockreset.ogg', 50, 1)
|
||||
set_locked(0)
|
||||
else
|
||||
visible_message("<span class='warning'>A red light on \the [src]'s control panel flashes briefly.</span>")
|
||||
visible_message(span_warning("A red light on \the [src]'s control panel flashes briefly."))
|
||||
attempts--
|
||||
if (attempts == 0)
|
||||
to_chat(user, "<span class='danger'>The crate's anti-tamper system activates!</span>")
|
||||
to_chat(user, span_danger("The crate's anti-tamper system activates!"))
|
||||
var/turf/T = get_turf(src.loc)
|
||||
explosion(T, 0, 0, 1, 2)
|
||||
qdel(src)
|
||||
@@ -160,11 +160,11 @@
|
||||
/obj/structure/closet/crate/secure/lootsafe/numberlock/attackby(obj/item/W as obj, mob/user as mob)
|
||||
if(locked)
|
||||
if (istype(W, /obj/item/multitool)) // Greetings Urist McProfessor, how about a nice game of cows and bulls?
|
||||
to_chat(user, "<span class='notice'>DECA-CODE LOCK ANALYSIS:</span>")
|
||||
to_chat(user, span_notice("DECA-CODE LOCK ANALYSIS:"))
|
||||
if (attempts == 1)
|
||||
to_chat(user, "<span class='warning'>* Anti-Tamper system will activate on the next failed access attempt.</span>")
|
||||
to_chat(user, span_warning("* Anti-Tamper system will activate on the next failed access attempt."))
|
||||
else
|
||||
to_chat(user, "<span class='notice'>* Anti-Tamper system will activate after [src.attempts] failed access attempts.</span>")
|
||||
to_chat(user, span_notice("* Anti-Tamper system will activate after [src.attempts] failed access attempts."))
|
||||
if(lastattempt.len)
|
||||
var/bulls = 0
|
||||
var/cows = 0
|
||||
@@ -179,7 +179,7 @@
|
||||
var/previousattempt = null //convert back to string for readback
|
||||
for(var/i in 1 to codelen)
|
||||
previousattempt = addtext(previousattempt, lastattempt[i])
|
||||
to_chat(user, "<span class='notice'>Last code attempt, [previousattempt], had [bulls] correct digits at correct positions and [cows] correct digits at incorrect positions.</span>")
|
||||
to_chat(user, span_notice("Last code attempt, [previousattempt], had [bulls] correct digits at correct positions and [cows] correct digits at incorrect positions."))
|
||||
return
|
||||
..()
|
||||
|
||||
@@ -219,7 +219,7 @@
|
||||
if(!locked)
|
||||
return
|
||||
|
||||
to_chat(user, "<span class='notice'>The crate is locked with a Deca-code lock.</span>")
|
||||
to_chat(user, span_notice("The crate is locked with a Deca-code lock."))
|
||||
var/input = tgui_input_text(usr, "Enter [codelen] digits. All digits must be unique.", "Deca-Code Lock", "")
|
||||
if(!Adjacent(user))
|
||||
return
|
||||
@@ -233,16 +233,16 @@
|
||||
sanitycheck = null //if a digit is repeated, reject the input
|
||||
|
||||
if(input == null || sanitycheck == null || length(input) != codelen)
|
||||
to_chat(user, "<span class='notice'>You leave the crate alone.</span>")
|
||||
to_chat(user, span_notice("You leave the crate alone."))
|
||||
else if(check_input(input))
|
||||
to_chat(user, "<span class='notice'>The crate unlocks!</span>")
|
||||
to_chat(user, span_notice("The crate unlocks!"))
|
||||
playsound(src, 'sound/machines/lockreset.ogg', 50, 1)
|
||||
set_locked(0)
|
||||
else
|
||||
visible_message("<span class='warning'>A red light on \the [src]'s control panel flashes briefly.</span>")
|
||||
visible_message(span_warning("A red light on \the [src]'s control panel flashes briefly."))
|
||||
attempts--
|
||||
if (attempts == 0)
|
||||
to_chat(user, "<span class='danger'>The crate's anti-tamper system activates!</span>")
|
||||
to_chat(user, span_danger("The crate's anti-tamper system activates!"))
|
||||
var/turf/T = get_turf(src.loc)
|
||||
explosion(T, 0, 0, 1, 2)
|
||||
qdel(src)
|
||||
@@ -262,11 +262,11 @@
|
||||
/obj/structure/closet/crate/secure/lootsafe/devillock/attackby(obj/item/W as obj, mob/user as mob)
|
||||
if(locked)
|
||||
if (istype(W, /obj/item/multitool)) // Greetings Urist McProfessor, how about a nice game of cows and bulls?
|
||||
to_chat(user, "<span class='notice'>DECA-CODE LOCK ANALYSIS:</span>")
|
||||
to_chat(user, span_notice("DECA-CODE LOCK ANALYSIS:"))
|
||||
if (attempts == 1)
|
||||
to_chat(user, "<span class='warning'>* Anti-Tamper system will activate on the next failed access attempt.</span>")
|
||||
to_chat(user, span_warning("* Anti-Tamper system will activate on the next failed access attempt."))
|
||||
else
|
||||
to_chat(user, "<span class='notice'>* Anti-Tamper system will activate after [src.attempts] failed access attempts.</span>")
|
||||
to_chat(user, span_notice("* Anti-Tamper system will activate after [src.attempts] failed access attempts."))
|
||||
if(lastattempt.len)
|
||||
var/bulls = 0
|
||||
var/cows = 0
|
||||
@@ -281,6 +281,6 @@
|
||||
var/previousattempt = null //convert back to string for readback
|
||||
for(var/i in 1 to codelen)
|
||||
previousattempt = addtext(previousattempt, lastattempt[i])
|
||||
to_chat(user, "<span class='notice'>Last code attempt, [previousattempt], had [bulls] correct digits at correct positions and [cows] correct digits at incorrect positions.</span>")
|
||||
to_chat(user, span_notice("Last code attempt, [previousattempt], had [bulls] correct digits at correct positions and [cows] correct digits at incorrect positions."))
|
||||
return
|
||||
..()
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
var/datum/callback/something_happens = next_message
|
||||
next_message = something_happens.InvokeAsync(src)
|
||||
|
||||
to_chat(src, span_notice("<i>... [next_message] ...</i>"))
|
||||
to_chat(src, span_notice(span_italics("... [next_message] ...")))
|
||||
|
||||
if(LAZYLEN(dream_fragments))
|
||||
var/next_wait = rand(10, 30)
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
var/datum/lore/codex/checked = current_page["[user]"]
|
||||
if(istype(checked))
|
||||
var/output = ""
|
||||
output = "<b>[checked.name]</b>"
|
||||
output = span_bold("[checked.name]")
|
||||
while(checked.parent)
|
||||
output = "<a href='?src=\ref[src];target=\ref[checked.parent]'>[checked.parent.name]</a> \> [output]"
|
||||
checked = checked.parent
|
||||
|
||||
@@ -7,25 +7,25 @@
|
||||
each component spell. Hark, reader beware! To peruse beyond permission of the mighty Wizard Federation is to \
|
||||
be struck with a 10,000 year imprisonment curse of cuboidal containment sphere!\
|
||||
<br><br>\
|
||||
<hr><b>Heat Applicator</b>: A device, commonly of metal, into which component spells are inserted and transmogrified \
|
||||
<hr>" + span_bold("Heat Applicator") + ": A device, commonly of metal, into which component spells are inserted and transmogrified \
|
||||
into the Gustomancic Product. Applicators convert Electromancy into heat, and may require heating to an ideal \
|
||||
temperature before spellcrafting. Overapplication will result in failure of the spell, and respiratory distress! \
|
||||
<br>\
|
||||
<hr><b>Pure Fluids</b>: A purified substance, typically of liquid form, added to the Applicator from a fluid vessel. \
|
||||
<hr>" + span_bold("Pure Fluids") + ": A purified substance, typically of liquid form, added to the Applicator from a fluid vessel. \
|
||||
Fluids are typically extracted from a bearing object, ground from bulk form, or produced by Chemomancy. \
|
||||
<br>\
|
||||
<hr><b>Material Objects</b>: Any component spell object not created by Botanomancy. Most are created by lesser \
|
||||
<hr>" + span_bold("Material Objects") + ": Any component spell object not created by Botanomancy. Most are created by lesser \
|
||||
Gustomancy tools or Gustomancy spells. Others may require creative acquistion methods! \
|
||||
<br>\
|
||||
<hr><b>Grown Produce</b>: A product of the soils and vessels of Botanomancy, typically fruit or vegetable. The \
|
||||
<hr>" + span_bold("Grown Produce") + ": A product of the soils and vessels of Botanomancy, typically fruit or vegetable. The \
|
||||
methods of Botanomancy lie beyond the scope of this Gustomancy tome! \
|
||||
<br>\
|
||||
<hr><b>Cooked Shell</b>: A coating of specified pure fluid, typically batter, applied to all component spell \
|
||||
<hr>" + span_bold("Cooked Shell") + ": A coating of specified pure fluid, typically batter, applied to all component spell \
|
||||
objects. Traditionally, specified fluid is placed in a glass vessel and each component spell dipped within. \
|
||||
<br>\
|
||||
<hr><b>Temporal Shift</b>: Length of passage through the temporial medium, unaffected by Chronomancy. \
|
||||
<hr>" + span_bold("Temporal Shift") + ": Length of passage through the temporial medium, unaffected by Chronomancy. \
|
||||
<br>\
|
||||
<hr><b>Meal Quantity</b>: Number of uses of the completed spell. \
|
||||
<hr>" + span_bold("Meal Quantity") + ": Number of uses of the completed spell. \
|
||||
<hr><br><br>\
|
||||
The segmented fusion of Gustomancy and Chemomancy is currently beyond the scope of this tome, as is the \
|
||||
usage of simple Gustomantic techniques such as rolling flat and slicing dough. The Gustomancer is reminded \
|
||||
@@ -76,7 +76,7 @@
|
||||
text = "Cereal maker"
|
||||
else
|
||||
text = ""
|
||||
D.data = "<b>Heat Applicator</b>: [text ? text : "none"]<br>"
|
||||
D.data = span_bold("Heat Applicator") + ": [text ? text : "none"]<br>"
|
||||
text = ""
|
||||
|
||||
if(LAZYLEN(R.reagents))
|
||||
@@ -86,7 +86,7 @@
|
||||
text += ", "
|
||||
text += "[capitalize(thing)]: [R.reagents[thing]] units"
|
||||
i++
|
||||
D.data += "<b>Pure Fluids</b>: [text ? text : "none"]<br>"
|
||||
D.data += span_bold("Pure Fluids") + ": [text ? text : "none"]<br>"
|
||||
text = ""
|
||||
|
||||
if(LAZYLEN(R.items))
|
||||
@@ -96,7 +96,7 @@
|
||||
text += ", "
|
||||
text += "[capitalize(initial(AM.name))]"
|
||||
i++
|
||||
D.data += "<b>Material Objects</b>: [text ? text : "none"]<br>"
|
||||
D.data += span_bold("Material Objects") + ": [text ? text : "none"]<br>"
|
||||
text = ""
|
||||
|
||||
if(LAZYLEN(R.fruit)) // Inelegant copypasta time
|
||||
@@ -106,23 +106,23 @@
|
||||
text += ", "
|
||||
text += "[capitalize(thing)]: [R.fruit[thing]] quantity"
|
||||
i++
|
||||
D.data += "<b>Grown Produce</b>: [text ? text : "none"]<br>"
|
||||
D.data += span_bold("Grown Produce") + ": [text ? text : "none"]<br>"
|
||||
text = ""
|
||||
|
||||
if(R.coating)
|
||||
var/datum/reagent/ooze = initial(R.coating) // Datum typepath
|
||||
text = capitalize(initial(ooze.name))
|
||||
D.data += "<b>Cooked Shell</b>: [text ? text : "none"]<br>"
|
||||
D.data += span_bold("Cooked Shell") + ": [text ? text : "none"]<br>"
|
||||
text = 0
|
||||
|
||||
if(R.time) // Deciseconds
|
||||
text = R.time
|
||||
D.data += "<b>Temporal Shift</b>: [text ? text/10 : 0] second\s<br>"
|
||||
D.data += span_bold("Temporal Shift") + ": [text ? text/10 : 0] second\s<br>"
|
||||
text = 0
|
||||
|
||||
if(R.result_quantity) // Should never be null.
|
||||
text = R.result_quantity
|
||||
D.data += "<b>Meal Quantity</b>: [text ? text : 0] plate\s<br>"
|
||||
D.data += span_bold("Meal Quantity") + ": [text ? text : 0] plate\s<br>"
|
||||
|
||||
new_children_list[D.name] = D // We make this an associative list so we can alphabetize later
|
||||
qdel(R) // Delete recipe datum after we're done with it
|
||||
|
||||
@@ -18,10 +18,10 @@
|
||||
/* Temp removal while I figure out how to reduce the respawn time to 1 minute
|
||||
var/time_till_respawn = time_till_respawn()
|
||||
if(time_till_respawn == -1) // Special case, never allowed to respawn
|
||||
to_chat(usr, "<span class='warning'>Respawning is not allowed!</span>")
|
||||
to_chat(usr, span_warning("Respawning is not allowed!"))
|
||||
return
|
||||
if(time_till_respawn) // Nonzero time to respawn
|
||||
to_chat(usr, "<span class='warning'>You can't do that yet! You died too recently. You need to wait another [round(time_till_respawn/10/60, 0.1)] minutes.</span>")
|
||||
to_chat(usr, span_warning("You can't do that yet! You died too recently. You need to wait another [round(time_till_respawn/10/60, 0.1)] minutes."))
|
||||
return
|
||||
*/
|
||||
var/datum/data/record/record_found
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
set category = "IC.Settings"
|
||||
|
||||
if(stat)
|
||||
to_chat(src, "<span class='warning'>You must be awake and standing to perform this action!</span>")
|
||||
to_chat(src, span_warning("You must be awake and standing to perform this action!"))
|
||||
return
|
||||
|
||||
speech_sound_enabled = !speech_sound_enabled
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
set category = "IC.Game"
|
||||
|
||||
if(stat || world.time < last_special)
|
||||
to_chat(usr, "<span class='warning'>You recently tried to create an area. Wait a while before using it again.</span>")
|
||||
to_chat(usr, span_warning("You recently tried to create an area. Wait a while before using it again."))
|
||||
return
|
||||
|
||||
last_special = world.time + 2 SECONDS // Antispam.
|
||||
|
||||
+17
-19
@@ -8,10 +8,10 @@
|
||||
var/darkness = 1
|
||||
var/turf/T = get_turf(src)
|
||||
if(!T)
|
||||
to_chat(src,"<span class='warning'>You can't use that here!</span>")
|
||||
to_chat(src,span_warning("You can't use that here!"))
|
||||
return FALSE
|
||||
if((get_area(src).flags & PHASE_SHIELDED)) //CHOMPAdd - Mapping tools to control phasing
|
||||
to_chat(src,"<span class='warning'>This area is preventing you from phasing!</span>")
|
||||
to_chat(src,span_warning("This area is preventing you from phasing!"))
|
||||
return FALSE
|
||||
|
||||
if(ability_flags & AB_PHASE_SHIFTING)
|
||||
@@ -48,23 +48,23 @@
|
||||
log_debug("[src] attempted to shift with [watcher] observers with a cost of [ability_cost] in a darkness level of [darkness]")
|
||||
//CHOMPEdit start - inform about the observers affecting phasing
|
||||
if(darkness<=0.4 && watcher>=2)
|
||||
to_chat(src, "<span class='warning'>You have a few observers in a well-lit area! This may prevent phasing. (Working cameras count towards observers)</span>")
|
||||
to_chat(src, span_warning("You have a few observers in a well-lit area! This may prevent phasing. (Working cameras count towards observers)"))
|
||||
else if(watcher>=3)
|
||||
to_chat(src, "<span class='warning'>You have a large number of observers! This may prevent phasing. (Working cameras count towards observers)</span>")
|
||||
to_chat(src, span_warning("You have a large number of observers! This may prevent phasing. (Working cameras count towards observers)"))
|
||||
//CHOMPEdit end
|
||||
|
||||
|
||||
var/datum/species/shadekin/SK = species
|
||||
/* CHOMPEdit start - general shadekin ability check
|
||||
if(!istype(SK))
|
||||
to_chat(src, "<span class='warning'>Only a shadekin can use that!</span>")
|
||||
to_chat(src, span_warning("Only a shadekin can use that!"))
|
||||
return FALSE
|
||||
else if(stat)
|
||||
to_chat(src, "<span class='warning'>Can't use that ability in your state!</span>")
|
||||
to_chat(src, span_warning("Can't use that ability in your state!"))
|
||||
return FALSE
|
||||
//CHOMPEdit Start - Dark Respite
|
||||
else if((ability_flags & AB_DARK_RESPITE || has_modifier_of_type(/datum/modifier/dark_respite)) && !(ability_flags & AB_PHASE_SHIFTED))
|
||||
to_chat(src, "<span class='warning'>You can't use that so soon after an emergency warp!</span>")
|
||||
to_chat(src, span_warning("You can't use that so soon after an emergency warp!"))
|
||||
return FALSE
|
||||
*/
|
||||
if(!shadekin_ability_check())
|
||||
@@ -72,12 +72,12 @@
|
||||
//CHOMPEdit End
|
||||
//CHOMPEdit Start - Prevent bugs when spamming phase button
|
||||
else if(SK.doing_phase)
|
||||
to_chat(src, "<span class='warning'>You are already trying to phase!</span>")
|
||||
to_chat(src, span_warning("You are already trying to phase!"))
|
||||
return FALSE
|
||||
//CHOMPEdit End
|
||||
|
||||
else if(shadekin_get_energy() < ability_cost && !(ability_flags & AB_PHASE_SHIFTED))
|
||||
to_chat(src, "<span class='warning'>Not enough energy for that ability!</span>")
|
||||
to_chat(src, span_warning("Not enough energy for that ability!"))
|
||||
return FALSE
|
||||
|
||||
if(!(ability_flags & AB_PHASE_SHIFTED))
|
||||
@@ -85,7 +85,7 @@
|
||||
playsound(src, 'sound/effects/stealthoff.ogg', 75, 1)
|
||||
|
||||
if(!T.CanPass(src,T) || loc != T)
|
||||
to_chat(src,"<span class='warning'>You can't use that here!</span>")
|
||||
to_chat(src,span_warning("You can't use that here!"))
|
||||
return FALSE
|
||||
|
||||
|
||||
@@ -119,7 +119,6 @@
|
||||
// change
|
||||
ability_flags &= ~AB_PHASE_SHIFTED
|
||||
ability_flags |= AB_PHASE_SHIFTING
|
||||
mouse_opacity = 1
|
||||
name = get_visible_name()
|
||||
for(var/obj/belly/B as anything in vore_organs)
|
||||
B.escapable = initial(B.escapable)
|
||||
@@ -158,12 +157,12 @@
|
||||
var/mob/living/target = pick(potentials)
|
||||
if(can_be_drop_pred && istype(target) && target.devourable && target.can_be_drop_prey && target.phase_vore && vore_selected && phase_vore)
|
||||
target.forceMove(vore_selected)
|
||||
to_chat(target, "<span class='vwarning'>\The [src] phases in around you, [vore_selected.vore_verb]ing you into their [vore_selected.name]!</span>")
|
||||
to_chat(src, "<span class='vwarning'>You phase around [target], [vore_selected.vore_verb]ing them into your [vore_selected.name]!</span>")
|
||||
to_chat(target, span_vwarning("\The [src] phases in around you, [vore_selected.vore_verb]ing you into their [vore_selected.name]!"))
|
||||
to_chat(src, span_vwarning("You phase around [target], [vore_selected.vore_verb]ing them into your [vore_selected.name]!"))
|
||||
else if(can_be_drop_prey && istype(target) && devourable && target.can_be_drop_pred && target.phase_vore && target.vore_selected && phase_vore)
|
||||
forceMove(target.vore_selected)
|
||||
to_chat(target, "<span class='vwarning'>\The [src] phases into you, [target.vore_selected.vore_verb]ing them into your [target.vore_selected.name]!</span>")
|
||||
to_chat(src, "<span class='vwarning'>You phase into [target], having them [target.vore_selected.vore_verb] you into their [target.vore_selected.name]!</span>")
|
||||
to_chat(target, span_vwarning("\The [src] phases into you, [target.vore_selected.vore_verb]ing them into your [target.vore_selected.name]!"))
|
||||
to_chat(src, span_vwarning("You phase into [target], having them [target.vore_selected.vore_verb] you into their [target.vore_selected.name]!"))
|
||||
|
||||
ability_flags &= ~AB_PHASE_SHIFTING
|
||||
|
||||
@@ -230,7 +229,6 @@
|
||||
// change
|
||||
ability_flags |= AB_PHASE_SHIFTED
|
||||
ability_flags |= AB_PHASE_SHIFTING
|
||||
mouse_opacity = 0
|
||||
custom_emote(1,"phases out!")
|
||||
name = get_visible_name()
|
||||
|
||||
@@ -301,13 +299,13 @@
|
||||
|
||||
var/datum/species/shadekin/SK = species
|
||||
if(!istype(SK))
|
||||
to_chat(src, "<span class='warning'>Only a shadekin can use that!</span>")
|
||||
to_chat(src, span_warning("Only a shadekin can use that!"))
|
||||
return FALSE
|
||||
|
||||
if(SK.phase_gentle)
|
||||
to_chat(src, "<span class='notice'>Phasing toggled to Normal. You may damage lights.</span>")
|
||||
to_chat(src, span_notice("Phasing toggled to Normal. You may damage lights."))
|
||||
SK.phase_gentle = 0
|
||||
else
|
||||
to_chat(src, "<span class='notice'>Phasing toggled to Gentle. You won't damage lights, but concentrating on that incurs a short stun.</span>")
|
||||
to_chat(src, span_notice("Phasing toggled to Gentle. You won't damage lights, but concentrating on that incurs a short stun."))
|
||||
SK.phase_gentle = 1
|
||||
//CHOMPEdit End
|
||||
|
||||
@@ -23,9 +23,9 @@
|
||||
var/oocnotes = 0
|
||||
if(input == "Yes")
|
||||
oocnotes = 1
|
||||
to_chat(src, "<span class='notify'>You begin to reform. You will need to remain still.</span>")
|
||||
visible_message("<span class='notify'>[src] rapidly contorts and shifts!</span>", "<span class='danger'>You begin to reform.</span>")
|
||||
to_chat(src, span_notify("You begin to reform. You will need to remain still."))
|
||||
visible_message(span_notify("[src] rapidly contorts and shifts!"), span_danger("You begin to reform."))
|
||||
if (do_after(src, 40,exclusive = TASK_ALL_EXCLUSIVE))
|
||||
if (client?.prefs)
|
||||
client.prefs.vanity_copy_to(src, FALSE, flavour, oocnotes, FALSE)
|
||||
visible_message("<span class='notify'>[src] adopts a new form!</span>", "<span class='danger'>You have reformed.</span>")
|
||||
visible_message(span_notify("[src] adopts a new form!"), span_danger("You have reformed."))
|
||||
|
||||
+15
-15
@@ -370,7 +370,7 @@
|
||||
if(target.buckled)
|
||||
target.buckled.unbuckle_mob(target, force = TRUE)
|
||||
target.forceMove(vore_selected)
|
||||
to_chat(target,"<span class='warning'>\The [src] quickly engulfs you, [vore_selected.vore_verb]ing you into their [vore_selected.name]!</span>")
|
||||
to_chat(target,span_warning("\The [src] quickly engulfs you, [vore_selected.vore_verb]ing you into their [vore_selected.name]!"))
|
||||
update_canmove()
|
||||
|
||||
/mob/living/simple_mob/protean_blob/update_canmove()
|
||||
@@ -392,22 +392,22 @@
|
||||
if(!allowed)
|
||||
return
|
||||
if(refactory.add_stored_material(S.material.name,1*S.perunit) && S.use(1))
|
||||
visible_message("<b>[name]</b> gloms over some of \the [S], absorbing it.")
|
||||
visible_message(span_infoplain(span_bold("[name]") + " gloms over some of \the [S], absorbing it."))
|
||||
else if(isitem(A) && a_intent == "grab") //CHOMP Add all this block, down to I.forceMove.
|
||||
var/obj/item/I = A
|
||||
if(!vore_selected)
|
||||
to_chat(src,"<span class='warning'>You either don't have a belly selected, or don't have a belly!</span>")
|
||||
to_chat(src,span_warning("You either don't have a belly selected, or don't have a belly!"))
|
||||
return FALSE
|
||||
if(is_type_in_list(I,item_vore_blacklist) || I.anchored)
|
||||
to_chat(src, "<span class='warning'>You can't eat this.</span>")
|
||||
to_chat(src, span_warning("You can't eat this."))
|
||||
return
|
||||
|
||||
if(is_type_in_list(I,edible_trash) | adminbus_trash)
|
||||
if(I.hidden_uplink)
|
||||
to_chat(src, "<span class='warning'>You really should not be eating this.</span>")
|
||||
to_chat(src, span_warning("You really should not be eating this."))
|
||||
message_admins("[key_name(src)] has attempted to ingest an uplink item. ([src ? "<a href='?_src_=holder;adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>" : "null"])")
|
||||
return
|
||||
visible_message("<b>[name]</b> stretches itself over the [I], engulfing it whole!")
|
||||
visible_message(span_infoplain(span_bold("[name]") + " stretches itself over the [I], engulfing it whole!"))
|
||||
I.forceMove(vore_selected)
|
||||
else
|
||||
return ..()
|
||||
@@ -423,7 +423,7 @@
|
||||
if(!allowed)
|
||||
return
|
||||
if(refactory.add_stored_material(S.material.name,1*S.perunit) && S.use(1))
|
||||
visible_message("<b>[name]</b> gloms over some of \the [S], absorbing it.")
|
||||
visible_message(span_infoplain(span_bold("[name]") + " gloms over some of \the [S], absorbing it."))
|
||||
else
|
||||
return ..()
|
||||
|
||||
@@ -453,9 +453,9 @@
|
||||
// Helpers - Unsafe, WILL perform change.
|
||||
/mob/living/carbon/human/proc/nano_intoblob(force)
|
||||
if(!force && !isturf(loc) && !loc == /obj/item/rig/protean)
|
||||
to_chat(src,"<span class='warning'>You can't change forms while inside something.</span>")
|
||||
to_chat(src,span_warning("You can't change forms while inside something."))
|
||||
return
|
||||
to_chat(src, "<span class='notice'>You rapidly disassociate your form.</span>")
|
||||
to_chat(src, span_notice("You rapidly disassociate your form."))
|
||||
if(force || do_after(src,20,exclusive = TASK_ALL_EXCLUSIVE))
|
||||
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.
|
||||
@@ -506,7 +506,7 @@
|
||||
moveToNullspace()
|
||||
|
||||
//Message
|
||||
blob.visible_message("<b>[src.name]</b> collapses into a gooey blob!")
|
||||
blob.visible_message(span_infoplain(span_bold("[src.name]") + " collapses into a gooey blob!"))
|
||||
|
||||
//Duration of the to_puddle iconstate that the blob starts with
|
||||
sleep(13)
|
||||
@@ -536,7 +536,7 @@
|
||||
//Return our blob in case someone wants it
|
||||
return blob
|
||||
else
|
||||
to_chat(src, "<span class='warning'>You must remain still to blobform!</span>")
|
||||
to_chat(src, span_warning("You must remain still to blobform!"))
|
||||
|
||||
//For some reason, there's no way to force drop all the mobs grabbed. This ought to fix that. And be moved elsewhere. Call with caution, doesn't handle cycles.
|
||||
/proc/remove_micros(var/src, var/mob/root)
|
||||
@@ -563,9 +563,9 @@
|
||||
if(blob.loc == /obj/item/rig/protean)
|
||||
return
|
||||
if(!force && !isturf(blob.loc))
|
||||
to_chat(blob,"<span class='warning'>You can't change forms while inside something.</span>")
|
||||
to_chat(blob,span_warning("You can't change forms while inside something."))
|
||||
return
|
||||
to_chat(src, "<span class='notice'>You rapidly reassemble your form.</span>")
|
||||
to_chat(src, span_notice("You rapidly reassemble your form."))
|
||||
if(force || do_after(blob,20,exclusive = TASK_ALL_EXCLUSIVE))
|
||||
if(buckled)
|
||||
buckled.unbuckle_mob()
|
||||
@@ -593,7 +593,7 @@
|
||||
blob.icon_state = "from_puddle"
|
||||
|
||||
//Message
|
||||
blob.visible_message("<b>[src.name]</b> reshapes into a humanoid appearance!")
|
||||
blob.visible_message(span_infoplain(span_bold("[src.name]") + " reshapes into a humanoid appearance!"))
|
||||
|
||||
//Size update
|
||||
resize(blob.size_multiplier, FALSE, TRUE, ignore_prefs = TRUE)
|
||||
@@ -639,7 +639,7 @@
|
||||
//Return ourselves in case someone wants it
|
||||
return src
|
||||
else
|
||||
to_chat(src, "<span class='warning'>You must remain still to reshape yourself!</span>")
|
||||
to_chat(src, span_warning("You must remain still to reshape yourself!"))
|
||||
|
||||
/mob/living/carbon/human/proc/nano_set_panel(var/client/C)
|
||||
if(C)
|
||||
|
||||
+52
-52
@@ -13,20 +13,20 @@
|
||||
if(temporary_form)
|
||||
caller = temporary_form
|
||||
if(nano_dead_check(caller))
|
||||
to_chat(caller, "<span class='warning'>You need to be repaired first before you can act!</span>")
|
||||
to_chat(caller, span_warning("You need to be repaired first before you can act!"))
|
||||
return
|
||||
if(stat)
|
||||
to_chat(caller,"<span class='warning'>You must be awake and standing to perform this action!</span>")
|
||||
to_chat(caller,span_warning("You must be awake and standing to perform this action!"))
|
||||
return
|
||||
|
||||
if(!isturf(caller.loc))
|
||||
to_chat(caller,"<span class='warning'>You need more space to perform this action!</span>")
|
||||
to_chat(caller,span_warning("You need more space to perform this action!"))
|
||||
return
|
||||
|
||||
var/obj/item/organ/internal/nano/refactory/refactory = nano_get_refactory()
|
||||
//Missing the organ that does this
|
||||
if(!istype(refactory))
|
||||
to_chat(caller,"<span class='warning'>You don't have a working refactory module!</span>")
|
||||
to_chat(caller,span_warning("You don't have a working refactory module!"))
|
||||
return
|
||||
|
||||
var/choice = tgui_input_list(caller,"Pick the bodypart to change:", "Refactor - One Bodypart", species.has_limbs)
|
||||
@@ -36,7 +36,7 @@
|
||||
//Organ is missing, needs restoring
|
||||
if(!organs_by_name[choice] || istype(organs_by_name[choice], /obj/item/organ/external/stump)) //allows limb stumps to regenerate like removed limbs.
|
||||
if(refactory.get_stored_material(MAT_STEEL) < PER_LIMB_STEEL_COST)
|
||||
to_chat(caller,"<span class='warning'>You're missing that limb, and need to store at least [PER_LIMB_STEEL_COST] steel to regenerate it.</span>")
|
||||
to_chat(caller,span_warning("You're missing that limb, and need to store at least [PER_LIMB_STEEL_COST] steel to regenerate it."))
|
||||
return
|
||||
var/regen = tgui_alert(caller,"That limb is missing, do you want to regenerate it in exchange for [PER_LIMB_STEEL_COST] steel?","Regenerate limb?",list("Yes","No"))
|
||||
if(regen != "Yes")
|
||||
@@ -105,15 +105,15 @@
|
||||
if(input == "Rebuild")
|
||||
var/obj/item/organ/internal/nano/refactory/refactory = nano_get_refactory()
|
||||
if(refactory.get_stored_material(MAT_STEEL) >= 10000)
|
||||
to_chat(caller, "<span class='notify'>You begin to rebuild. You will need to remain still.</span>")
|
||||
to_chat(caller, span_notify("You begin to rebuild. You will need to remain still."))
|
||||
if(do_after(caller, 400,exclusive = TASK_ALL_EXCLUSIVE))
|
||||
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
|
||||
else
|
||||
to_chat(caller, "<span class='usrdanger'>Somehow, you are missing your protean rig. You are unable to rebuild without one.</span>")
|
||||
to_chat(caller, span_userdanger("Somehow, you are missing your protean rig. You are unable to rebuild without one."))
|
||||
else
|
||||
to_chat(caller, "<span class='warning'>You do not have enough steel stored for this operation.</span>")
|
||||
to_chat(caller, span_warning("You do not have enough steel stored for this operation."))
|
||||
else
|
||||
input = tgui_alert(caller,{"Include Flavourtext?"},"Reassembly",list("Yes","No","Cancel"))
|
||||
if(input == "Cancel" || !input)
|
||||
@@ -127,14 +127,14 @@
|
||||
var/oocnotes = 0
|
||||
if(input == "Yes")
|
||||
oocnotes = 1
|
||||
to_chat(caller, "<span class='notify'>You begin to reassemble. You will need to remain still.</span>")
|
||||
caller.visible_message("<span class='notify'>[caller] rapidly contorts and shifts!</span>", "<span class='danger'>You begin to reassemble.</span>")
|
||||
to_chat(caller, span_notify("You begin to reassemble. You will need to remain still."))
|
||||
caller.visible_message(span_notify("[caller] rapidly contorts and shifts!"), span_danger("You begin to reassemble."))
|
||||
if(do_after(caller, 40,exclusive = TASK_ALL_EXCLUSIVE))
|
||||
if(caller.client.prefs) //Make sure we didn't d/c
|
||||
var/obj/item/rig/protean/Rig = species?:OurRig
|
||||
caller.client.prefs.vanity_copy_to(src, FALSE, flavour, oocnotes, TRUE)
|
||||
species?:OurRig = Rig //Get a reference to our Rig and put it back after reassembling
|
||||
caller.visible_message("<span class='notify'>[caller] adopts a new form!</span>", "<span class='danger'>You have reassembled.</span>")
|
||||
caller.visible_message(span_notify("[caller] adopts a new form!"), span_danger("You have reassembled."))
|
||||
|
||||
|
||||
/mob/living/carbon/human/proc/nano_copy_body()
|
||||
@@ -156,22 +156,22 @@
|
||||
victim = G.affecting
|
||||
if (!victim)
|
||||
if (grabbing_but_not_enough)
|
||||
to_chat(caller, "<span class='warning'>You need a better grip to do that!</span>")
|
||||
to_chat(caller, span_warning("You need a better grip to do that!"))
|
||||
else
|
||||
to_chat(caller, "<span class='notice'>You need to be aggressively grabbing someone before you can copy their form.</span>")
|
||||
to_chat(caller, span_notice("You need to be aggressively grabbing someone before you can copy their form."))
|
||||
return
|
||||
if (!istype(victim))
|
||||
to_chat(caller, "<span class='warning'>You can only perform this on human mobs!</span>")
|
||||
to_chat(caller, span_warning("You can only perform this on human mobs!"))
|
||||
return
|
||||
if (!victim.client)
|
||||
to_chat(caller, "<span class='notice'>The person you try this on must have a client!</span>")
|
||||
to_chat(caller, span_notice("The person you try this on must have a client!"))
|
||||
return
|
||||
|
||||
|
||||
to_chat(caller, "<span class='notice'>Waiting for other person's consent.</span>")
|
||||
to_chat(caller, span_notice("Waiting for other person's consent."))
|
||||
var/consent = tgui_alert(victim, "Allow [src] to copy what you look like?", "Consent", list("Yes", "No"))
|
||||
if (consent != "Yes")
|
||||
to_chat(caller, "<span class='notice'>They declined your request.</span>")
|
||||
to_chat(caller, span_notice("They declined your request."))
|
||||
return
|
||||
|
||||
var/input = tgui_alert(caller,{"Copy [victim]'s flavourtext?"},"Copy Form",list("Yes","No","Cancel"))
|
||||
@@ -186,24 +186,24 @@
|
||||
if(G.affecting == victim && G.state >= GRAB_AGGRESSIVE)
|
||||
checking = TRUE
|
||||
if (!checking)
|
||||
to_chat(caller, "<span class='warning'>You lost your grip on [victim]!</span>")
|
||||
to_chat(caller, span_warning("You lost your grip on [victim]!"))
|
||||
return
|
||||
|
||||
to_chat(caller, "<span class='notify'>You begin to reassemble into [victim]. You will need to remain still.</span>")
|
||||
caller.visible_message("<span class='notify'>[caller] rapidly contorts and shifts!</span>", "<span class='danger'>You begin to reassemble into [victim].</span>")
|
||||
to_chat(caller, span_notify("You begin to reassemble into [victim]. You will need to remain still."))
|
||||
caller.visible_message(span_notify("[caller] rapidly contorts and shifts!"), span_danger("You begin to reassemble into [victim]."))
|
||||
if(do_after(caller, 40,exclusive = TASK_ALL_EXCLUSIVE))
|
||||
checking = FALSE
|
||||
for(var/obj/item/grab/G in caller)
|
||||
if(G.affecting == victim && G.state >= GRAB_AGGRESSIVE)
|
||||
checking = TRUE
|
||||
if (!checking)
|
||||
to_chat(caller, "<span class='warning'>You lost your grip on [victim]!</span>")
|
||||
to_chat(caller, span_warning("You lost your grip on [victim]!"))
|
||||
return
|
||||
if(caller.client) //Make sure we didn't d/c
|
||||
var/obj/item/rig/protean/Rig = species?:OurRig
|
||||
transform_into_other_human(victim, FALSE, flavour, TRUE)
|
||||
species?:OurRig = Rig //Get a reference to our Rig and put it back after reassembling
|
||||
caller.visible_message("<span class='notify'>[caller] adopts the form of [victim]!</span>", "<span class='danger'>You have reassembled into [victim].</span>")
|
||||
caller.visible_message(span_notify("[caller] adopts the form of [victim]!"), span_danger("You have reassembled into [victim]."))
|
||||
|
||||
////
|
||||
// Storing metal
|
||||
@@ -218,18 +218,18 @@
|
||||
if(temporary_form)
|
||||
caller = temporary_form
|
||||
if(nano_dead_check(caller))
|
||||
to_chat(caller, "<span class='warning'>You need to be repaired first before you can act!</span>")
|
||||
to_chat(caller, span_warning("You need to be repaired first before you can act!"))
|
||||
return
|
||||
|
||||
var/obj/item/organ/internal/nano/refactory/refactory = nano_get_refactory()
|
||||
//Missing the organ that does this
|
||||
if(!istype(refactory))
|
||||
to_chat(caller,"<span class='warning'>You don't have a working refactory module!</span>")
|
||||
to_chat(caller,span_warning("You don't have a working refactory module!"))
|
||||
return
|
||||
|
||||
var/held = caller.get_active_hand()
|
||||
if(!istype(held,/obj/item/stack/material))
|
||||
to_chat(caller,"<span class='warning'>You aren't holding a stack of materials in your active hand!</span>")
|
||||
to_chat(caller,span_warning("You aren't holding a stack of materials in your active hand!"))
|
||||
return
|
||||
|
||||
var/obj/item/stack/material/matstack = held
|
||||
@@ -238,7 +238,7 @@
|
||||
for(var/material in PROTEAN_EDIBLE_MATERIALS)
|
||||
if(material == substance) allowed = 1
|
||||
if(!allowed)
|
||||
to_chat(caller,"<span class='warning'>You can't process [substance]!</span>")
|
||||
to_chat(caller,span_warning("You can't process [substance]!"))
|
||||
return
|
||||
|
||||
var/howmuch = tgui_input_number(caller,"How much do you want to store? (0-[matstack.get_amount()])","Select amount",null,matstack.get_amount())
|
||||
@@ -248,13 +248,13 @@
|
||||
var/actually_added = refactory.add_stored_material(substance,howmuch*matstack.perunit)
|
||||
matstack.use(CEILING((actually_added/matstack.perunit), 1))
|
||||
if(actually_added && actually_added < howmuch)
|
||||
to_chat(caller,"<span class='warning'>Your refactory module is now full, so only [actually_added] units were stored.</span>")
|
||||
visible_message("<span class='notice'>[caller] nibbles some of the [substance] right off the stack!</span>")
|
||||
to_chat(caller,span_warning("Your refactory module is now full, so only [actually_added] units were stored."))
|
||||
visible_message(span_notice("[caller] nibbles some of the [substance] right off the stack!"))
|
||||
else if(actually_added)
|
||||
to_chat(caller,"<span class='notice'>You store [actually_added] units of [substance].</span>")
|
||||
visible_message("<span class='notice'>[caller] devours some of the [substance] right off the stack!</span>")
|
||||
to_chat(caller,span_notice("You store [actually_added] units of [substance]."))
|
||||
visible_message(span_notice("[caller] devours some of the [substance] right off the stack!"))
|
||||
else
|
||||
to_chat(caller,"<span class='notice'>You're completely capped out on [substance]!</span>")
|
||||
to_chat(caller,span_notice("You're completely capped out on [substance]!"))
|
||||
|
||||
////
|
||||
// Blob Form
|
||||
@@ -275,21 +275,21 @@
|
||||
return
|
||||
var/atom/movable/to_locate = temporary_form || src
|
||||
if(!isturf(to_locate.loc) && !forced)
|
||||
to_chat(to_locate,"<span class='warning'>You need more space to perform this action!</span>")
|
||||
to_chat(to_locate,span_warning("You need more space to perform this action!"))
|
||||
return
|
||||
//Blob form
|
||||
if(temporary_form)
|
||||
if(temporary_form.stat)
|
||||
to_chat(temporary_form,"<span class='warning'>You can only do this while not stunned.</span>")
|
||||
to_chat(temporary_form,span_warning("You can only do this while not stunned."))
|
||||
else
|
||||
nano_outofblob(temporary_form)
|
||||
|
||||
//Human form
|
||||
else if(stat)
|
||||
to_chat(src,"<span class='warning'>You can only do this while not stunned.</span>")
|
||||
to_chat(src,span_warning("You can only do this while not stunned."))
|
||||
return
|
||||
else if(handcuffed)
|
||||
to_chat(src, "<span class='warning'>You can't do this while handcuffed!</span>")
|
||||
to_chat(src, span_warning("You can't do this while handcuffed!"))
|
||||
return
|
||||
else
|
||||
nano_intoblob()
|
||||
@@ -303,7 +303,7 @@
|
||||
set category = "Abilities.Protean"
|
||||
|
||||
if(stat)
|
||||
to_chat(src,"<span class='warning'>You must be awake and standing to perform this action!</span>")
|
||||
to_chat(src,span_warning("You must be awake and standing to perform this action!"))
|
||||
return
|
||||
|
||||
var/new_species = tgui_input_list(usr, "Please select a species to emulate.", "Shapeshifter Body", list(species?.vanity_base_fit)|species?.get_valid_shapeshifter_forms())
|
||||
@@ -324,9 +324,9 @@
|
||||
if(temporary_form)
|
||||
caller = temporary_form
|
||||
if(nano_dead_check(src))
|
||||
to_chat(caller, "<span class='warning'>You need to be repaired first before you can act!</span>")
|
||||
to_chat(caller, span_warning("You need to be repaired first before you can act!"))
|
||||
return
|
||||
to_chat(caller, "<span class='notice'>You rapidly condense into your module.</span>")
|
||||
to_chat(caller, span_notice("You rapidly condense into your module."))
|
||||
if(forced || do_after(caller,20,exclusive = TASK_ALL_EXCLUSIVE))
|
||||
if(!temporary_form) //If you're human, force you into blob form before rig'ing
|
||||
nano_blobform(forced)
|
||||
@@ -353,7 +353,7 @@
|
||||
P.has_hands = 1
|
||||
else //We're not in our own RIG
|
||||
if(P.stat || P.resting && !forced)
|
||||
to_chat(P,"<span class='warning'>You can only do this while not stunned.</span>")
|
||||
to_chat(P,span_warning("You can only do this while not stunned."))
|
||||
else
|
||||
if(P.l_hand)
|
||||
P.drop_l_hand()
|
||||
@@ -366,10 +366,10 @@
|
||||
S.OurRig.canremove = 1
|
||||
P.reset_view()
|
||||
else //Make one if not
|
||||
to_chat(temporary_form, "<span class='warning'>Somehow, your RIG got disconnected from your species. This may have been caused by an admin heal. A new one has been created for you, contact a coder.</span>")
|
||||
to_chat(temporary_form, span_warning("Somehow, your RIG got disconnected from your species. This may have been caused by an admin heal. A new one has been created for you, contact a coder."))
|
||||
new /obj/item/rig/protean(src,src)
|
||||
else
|
||||
to_chat(caller, "<span class='warning'>You must remain still to condense!</span>")
|
||||
to_chat(caller, span_warning("You must remain still to condense!"))
|
||||
|
||||
/mob/living/carbon/human/proc/appearance_switch()
|
||||
set name = "Switch Blob Appearance"
|
||||
@@ -556,9 +556,9 @@
|
||||
target = S.OurRig.wearer
|
||||
if(target)
|
||||
target.drop_from_inventory(S.OurRig)
|
||||
to_chat(caller, "<span class='notice'>You detach from your host.</span>")
|
||||
to_chat(caller, span_notice("You detach from your host."))
|
||||
else
|
||||
to_chat(caller, "<span class='warning'>You aren't being worn, dummy.</span>")
|
||||
to_chat(caller, span_warning("You aren't being worn, dummy."))
|
||||
return
|
||||
var/obj/held_item = caller.get_active_hand()
|
||||
if(istype(held_item,/obj/item/grab))
|
||||
@@ -566,14 +566,14 @@
|
||||
if(istype(G.affecting, /mob/living/carbon/human))
|
||||
target = G.affecting
|
||||
if(istype(target.species, /datum/species/protean))
|
||||
to_chat(caller, "<span class='danger'>You can't latch onto a fellow Protean!</span>")
|
||||
to_chat(caller, span_danger("You can't latch onto a fellow Protean!"))
|
||||
return
|
||||
if(G.loc == caller && G.state >= GRAB_AGGRESSIVE)
|
||||
caller.visible_message("<span class='warning'>[caller] is attempting to latch onto [target]!</span>", "<span class='danger'>You attempt to latch onto [target]!</span>")
|
||||
caller.visible_message(span_warning("[caller] is attempting to latch onto [target]!"), span_danger("You attempt to latch onto [target]!"))
|
||||
if(do_after(caller, 50, target,exclusive = TASK_ALL_EXCLUSIVE))
|
||||
if(G.loc == caller && G.state >= GRAB_AGGRESSIVE)
|
||||
target.drop_from_inventory(target.back)
|
||||
caller.visible_message("<span class='danger'>[caller] latched onto [target]!</span>", "<span class='danger'>You latch yourself onto [target]!</span>")
|
||||
caller.visible_message(span_danger("[caller] latched onto [target]!"), span_danger("You latch yourself onto [target]!"))
|
||||
target.Weaken(3)
|
||||
nano_rig_transform(1)
|
||||
spawn(5) //Have to give time for the above proc to resolve
|
||||
@@ -583,11 +583,11 @@
|
||||
spawn(1) //Same here :(
|
||||
S.OurRig.wearer = target
|
||||
else
|
||||
to_chat(caller, "<span class='warning'>You need a more aggressive grab to do this!</span>")
|
||||
to_chat(caller, span_warning("You need a more aggressive grab to do this!"))
|
||||
else
|
||||
to_chat(caller, "<span class='warning'>You can only latch onto humanoid mobs!</span>")
|
||||
to_chat(caller, span_warning("You can only latch onto humanoid mobs!"))
|
||||
else
|
||||
to_chat(caller, "<span class='warning'>You need to be grabbing a humanoid mob aggressively to latch onto them.</span>")
|
||||
to_chat(caller, span_warning("You need to be grabbing a humanoid mob aggressively to latch onto them."))
|
||||
|
||||
/// /// /// A helper to reuse
|
||||
/mob/living/proc/nano_get_refactory(obj/item/organ/internal/nano/refactory/R)
|
||||
@@ -634,7 +634,7 @@
|
||||
var/opts = clickprops["shift"]
|
||||
|
||||
if(opts)
|
||||
to_chat(usr,"<span class='notice'><b>[ability_name]</b> - [desc]</span>")
|
||||
to_chat(usr,span_notice(span_bold("[ability_name]") + " - [desc]"))
|
||||
else
|
||||
//Humanform using it
|
||||
if(ishuman(usr))
|
||||
@@ -716,7 +716,7 @@
|
||||
if(proteanlimbs.organ_tag == BP_HEAD)
|
||||
continue
|
||||
proteanlimbs.transparent = !proteanlimbs.transparent
|
||||
visible_message("<span class='notice'>\The [src]'s internal composition seems to change.</span>")
|
||||
visible_message(span_notice("\The [src]'s internal composition seems to change."))
|
||||
update_icons_body()
|
||||
update_hair()
|
||||
|
||||
@@ -736,7 +736,7 @@
|
||||
for(var/obj/item/organ/external/proteanlimbs as anything in src.organs)
|
||||
proteanlimbs.transparent = !proteanlimbs.transparent
|
||||
|
||||
visible_message("<span class='notice'>\The [src]'s internal composition seems to change.</span>")
|
||||
visible_message(span_notice("\The [src]'s internal composition seems to change."))
|
||||
update_icons_body()
|
||||
update_hair()
|
||||
|
||||
|
||||
+13
-13
@@ -53,7 +53,7 @@
|
||||
addtimer(CALLBACK(src, PROC_REF(AssimilateBag), P, 1, P.back), 3)
|
||||
myprotean = P
|
||||
else
|
||||
to_chat(P, "<span class='notice'>You should have spawned with a backpack to assimilate into your RIG. Try clicking it with a backpack.</span>")
|
||||
to_chat(P, span_notice("You should have spawned with a backpack to assimilate into your RIG. Try clicking it with a backpack."))
|
||||
..(newloc)
|
||||
|
||||
/obj/item/rig/protean/Destroy()
|
||||
@@ -75,12 +75,12 @@
|
||||
B.forceMove(src)
|
||||
rig_storage = B
|
||||
P.drop_item(B)
|
||||
to_chat(P, "<span class='notice'>[B] has been integrated into the [src].</span>")
|
||||
to_chat(P, span_notice("[B] has been integrated into the [src]."))
|
||||
if(spawned) //This feels very dumb to have a second if but I'm lazy
|
||||
P.equip_to_slot_if_possible(src, slot_back)
|
||||
src.Moved()
|
||||
else
|
||||
to_chat(P,"<span class ='warning'>Your rigsuit can only assimilate a backpack into itself. If you are seeing this message, and you do not have a rigsuit, tell a coder.</span>")
|
||||
to_chat(P,span_warning("Your rigsuit can only assimilate a backpack into itself. If you are seeing this message, and you do not have a rigsuit, tell a coder."))
|
||||
|
||||
/obj/item/rig/protean/verb/RemoveBag()
|
||||
set name = "Remove Stored Bag"
|
||||
@@ -243,14 +243,14 @@
|
||||
if(W.is_screwdriver())
|
||||
playsound(src, W.usesound, 50, 1)
|
||||
if(do_after(user,50,src,exclusive = TASK_ALL_EXCLUSIVE))
|
||||
to_chat(user, "<span class='notice'>You unscrew the maintenace panel on the [src].</span>")
|
||||
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,exclusive = TASK_ALL_EXCLUSIVE))
|
||||
playsound(src, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
to_chat(user, "<span class='notice'>You carefully slot [W] in the [src].</span>")
|
||||
to_chat(user, span_notice("You carefully slot [W] in the [src]."))
|
||||
dead +=1
|
||||
qdel(W)
|
||||
return
|
||||
@@ -258,14 +258,14 @@
|
||||
if(istype(W, /obj/item/stack/nanopaste))
|
||||
if(do_after(user,50,src,exclusive = TASK_ALL_EXCLUSIVE))
|
||||
playsound(src, 'sound/effects/ointment.ogg', 50, 1)
|
||||
to_chat(user, "<span class='notice'>You slather the interior confines of the [src] with the [W].</span>")
|
||||
to_chat(user, span_notice("You slather the interior confines of the [src] with the [W]."))
|
||||
dead +=1
|
||||
W?:use(1)
|
||||
return
|
||||
if(4)
|
||||
if(istype(W, /obj/item/shockpaddles))
|
||||
if(W?:can_use(user))
|
||||
to_chat(user, "<span class='notice'>You hook up the [W] to the contact points in the maintenance assembly</span>")
|
||||
to_chat(user, span_notice("You hook up the [W] to the contact points in the maintenance assembly"))
|
||||
if(do_after(user,50,src,exclusive = TASK_ALL_EXCLUSIVE))
|
||||
playsound(src, 'sound/machines/defib_charge.ogg', 50, 0)
|
||||
if(do_after(user,10,src))
|
||||
@@ -398,7 +398,7 @@
|
||||
var/datum/species/protean/S
|
||||
S = H.species
|
||||
S.pseudodead = 0
|
||||
to_chat(myprotean, "<span class='notice'>You have finished reconstituting.</span>")
|
||||
to_chat(myprotean, span_notice("You have finished reconstituting."))
|
||||
playsound(src.loc, 'sound/machines/ding.ogg', 50, 1)
|
||||
dead = 0
|
||||
|
||||
@@ -413,7 +413,7 @@
|
||||
|
||||
/obj/item/rig/protean/force_rest(var/mob/user)
|
||||
wearer.lay_down()
|
||||
to_chat(user, "<span class='notice'>\The [wearer] is now [wearer.resting ? "resting" : "getting up"].</span>")
|
||||
to_chat(user, span_notice("\The [wearer] is now [wearer.resting ? "resting" : "getting up"]."))
|
||||
|
||||
/obj/item/cell/protean
|
||||
name = "Protean power cell"
|
||||
@@ -456,11 +456,11 @@
|
||||
return 0 //We don't do that here.
|
||||
if(offline || !cell || !cell.charge || locked_down)
|
||||
if(user)
|
||||
to_chat(user, "<span class='warning'>Your host rig is unpowered and unresponsive.</span>")
|
||||
to_chat(user, span_warning("Your host rig is unpowered and unresponsive."))
|
||||
return 0
|
||||
if(!wearer || (wearer.back != src && wearer.belt != src))
|
||||
if(user)
|
||||
to_chat(user, "<span class='warning'>Your host rig is not being worn.</span>")
|
||||
to_chat(user, span_warning("Your host rig is not being worn."))
|
||||
return 0
|
||||
return 1
|
||||
|
||||
@@ -495,9 +495,9 @@
|
||||
if(!R || assimilated_rig)
|
||||
return
|
||||
if(istype(R, /obj/item/rig/protean))
|
||||
to_chat(user, "<span class='warning'>The world is not ready for such a technological singularity.</span>")
|
||||
to_chat(user, span_warning("The world is not ready for such a technological singularity."))
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You assimilate the [R] into the [src]. Mimicking its stats and appearance.</span>")
|
||||
to_chat(user, span_notice("You assimilate the [R] into the [src]. Mimicking its stats and appearance."))
|
||||
for(var/obj/item/piece in list(gloves,helmet,boots,chest))
|
||||
piece.armor = R.armor.Copy()
|
||||
piece.max_pressure_protection = R.max_pressure_protection
|
||||
|
||||
+2
-2
@@ -96,7 +96,7 @@ So here it sits, snowflake code for a single item.
|
||||
toggle_cooling(wearer)
|
||||
. = TRUE
|
||||
if("toggle_ai_control")
|
||||
to_chat(usr, "<span class='notice'>Proteans cannot be AI controlled.</span>")
|
||||
to_chat(usr, span_notice("Proteans cannot be AI controlled."))
|
||||
. = TRUE
|
||||
if("toggle_suit_lock")
|
||||
locked = !locked
|
||||
@@ -125,4 +125,4 @@ So here it sits, snowflake code for a single item.
|
||||
if("select_charge_type")
|
||||
module.charge_selected = params["charge_type"]
|
||||
. = TRUE
|
||||
*/
|
||||
*/
|
||||
|
||||
+13
-13
@@ -3,7 +3,7 @@
|
||||
name = SPECIES_PROTEAN
|
||||
name_plural = "Proteans"
|
||||
blurb = "Sometimes very advanced civilizations will produce the ability to swap into manufactured, robotic bodies. And sometimes \
|
||||
<i>VERY</i> advanced civilizations have the option of 'nanoswarm' bodies. Effectively a single robot body comprised \
|
||||
" + span_italics("VERY") + " advanced civilizations have the option of 'nanoswarm' bodies. Effectively a single robot body comprised \
|
||||
of millions of tiny nanites working in concert to maintain cohesion."
|
||||
show_ssd = "totally quiescent"
|
||||
death_message = "rapidly loses cohesion, retreating into their hardened control module..."
|
||||
@@ -246,8 +246,8 @@
|
||||
if(H.temporary_form)
|
||||
temp = H.temporary_form
|
||||
playsound(temp, 'modular_chomp/sound/voice/borg_deathsound.ogg', 50, 1)
|
||||
temp.visible_message("<b>[temp.name]</b> shudders and retreats inwards, coalescing into a single core componant!")
|
||||
to_chat(temp, "<span class='warning'>You've died as a Protean! While dead, you will be locked to your core RIG control module until you can be repaired. Instructions to your revival can be found in the Examine tab when examining your module.</span>")
|
||||
temp.visible_message(span_bold("[temp.name]") + " shudders and retreats inwards, coalescing into a single core componant!")
|
||||
to_chat(temp, span_warning("You've died as a Protean! While dead, you will be locked to your core RIG control module until you can be repaired. Instructions to your revival can be found in the Examine tab when examining your module."))
|
||||
if(H.temporary_form)
|
||||
if(!istype(H.temporary_form.loc, /obj/item/rig/protean))
|
||||
H.nano_rig_transform(1)
|
||||
@@ -347,8 +347,8 @@ CHOMP Station removal end*/
|
||||
name = "Protean Effect - M.Hydrogen"
|
||||
desc = "You're affected by the presence of metallic hydrogen."
|
||||
|
||||
on_created_text = "<span class='notice'>You feel yourself accelerate, the metallic hydrogen increasing your speed temporarily.</span>"
|
||||
on_expired_text = "<span class='notice'>Your refactory finishes consuming the metallic hydrogen, and you return to normal speed.</span>"
|
||||
on_created_text = span_notice("You feel yourself accelerate, the metallic hydrogen increasing your speed temporarily.")
|
||||
on_expired_text = span_notice("Your refactory finishes consuming the metallic hydrogen, and you return to normal speed.")
|
||||
|
||||
material_name = MAT_METALHYDROGEN
|
||||
|
||||
@@ -358,8 +358,8 @@ CHOMP Station removal end*/
|
||||
name = "Protean Effect - Uranium"
|
||||
desc = "You're affected by the presence of uranium."
|
||||
|
||||
on_created_text = "<span class='notice'>You feel yourself become nearly impervious to physical attacks as uranium is incorporated in your nanites.</span>"
|
||||
on_expired_text = "<span class='notice'>Your refactory finishes consuming the uranium, and you return to your normal nanites.</span>"
|
||||
on_created_text = span_notice("You feel yourself become nearly impervious to physical attacks as uranium is incorporated in your nanites.")
|
||||
on_expired_text = span_notice("Your refactory finishes consuming the uranium, and you return to your normal nanites.")
|
||||
|
||||
material_name = MAT_URANIUM
|
||||
|
||||
@@ -369,8 +369,8 @@ CHOMP Station removal end*/
|
||||
name = "Protean Effect - Gold"
|
||||
desc = "You're affected by the presence of gold."
|
||||
|
||||
on_created_text = "<span class='notice'>You feel yourself become more reflective, able to resist heat and fire better for a time.</span>"
|
||||
on_expired_text = "<span class='notice'>Your refactory finishes consuming the gold, and you return to your normal nanites.</span>"
|
||||
on_created_text = span_notice("You feel yourself become more reflective, able to resist heat and fire better for a time.")
|
||||
on_expired_text = span_notice("Your refactory finishes consuming the gold, and you return to your normal nanites.")
|
||||
|
||||
material_name = MAT_GOLD
|
||||
|
||||
@@ -380,8 +380,8 @@ CHOMP Station removal end*/
|
||||
name = "Protean Effect - Silver"
|
||||
desc = "You're affected by the presence of silver."
|
||||
|
||||
on_created_text = "<span class='notice'>Your physical control is improved for a time, making it easier to hit targets, and avoid being hit.</span>"
|
||||
on_expired_text = "<span class='notice'>Your refactory finishes consuming the silver, and your motor control returns to normal.</span>"
|
||||
on_created_text = span_notice("Your physical control is improved for a time, making it easier to hit targets, and avoid being hit.")
|
||||
on_expired_text = span_notice("Your refactory finishes consuming the silver, and your motor control returns to normal.")
|
||||
|
||||
material_name = MAT_SILVER
|
||||
|
||||
@@ -393,8 +393,8 @@ CHOMP Removal end*/
|
||||
name = "Protean Effect - Steel"
|
||||
desc = "You're affected by the presence of steel."
|
||||
|
||||
on_created_text = "<span class='notice'>You feel new nanites being produced from your stockpile of steel, healing you slowly.</span>"
|
||||
on_expired_text = "<span class='notice'>Your steel supply has either run out, or is no longer needed, and your healing stops.</span>"
|
||||
on_created_text = span_notice("You feel new nanites being produced from your stockpile of steel, healing you slowly.")
|
||||
on_expired_text = span_notice("Your steel supply has either run out, or is no longer needed, and your healing stops.")
|
||||
|
||||
material_name = MAT_STEEL
|
||||
|
||||
|
||||
@@ -179,7 +179,7 @@
|
||||
if(I.damage > 0)
|
||||
I.damage = max(I.damage - heal_rate, 0)
|
||||
if (prob(5))
|
||||
to_chat(H, "<span class='alien'>We feel a soothing sensation within our [I.parent_organ]...</span>")
|
||||
to_chat(H, span_alien("We feel a soothing sensation within our [I.parent_organ]..."))
|
||||
return 1
|
||||
|
||||
// Next, heal external damage.
|
||||
@@ -189,7 +189,7 @@
|
||||
H.adjustOxyLoss(-heal_rate)
|
||||
H.adjustToxLoss(-heal_rate)
|
||||
if (prob(5))
|
||||
to_chat(H, "<span class='alien'>A soothing sensation falls over us...</span>")
|
||||
to_chat(H, span_alien("A soothing sensation falls over us..."))
|
||||
return 1
|
||||
|
||||
// Lastly, mend broken bones. May remove this if it's abused.
|
||||
@@ -197,7 +197,7 @@
|
||||
if (E.status & ORGAN_BROKEN)
|
||||
if (prob(mend_prob))
|
||||
if (E.mend_fracture())
|
||||
to_chat(H, "<span class='alien'>We feel something mend within our [E.name].</span>")
|
||||
to_chat(H, span_alien("We feel something mend within our [E.name]."))
|
||||
return 1
|
||||
|
||||
return 0
|
||||
@@ -212,7 +212,7 @@
|
||||
set category = "Abilities.Alien"
|
||||
|
||||
if(check_alien_ability(150,1,O_RESIN))
|
||||
visible_message("<span class='alium'><B>[src] has planted some alien weeds!</B></span>")
|
||||
visible_message(span_alium(span_bold("[src] has planted some alien weeds!")))
|
||||
new /obj/effect/alien/weeds/node/weak(get_turf(src), null, "#321D37") // Aliens.dm for weed node origin.
|
||||
playsound(src, 'sound/effects/blobattack.ogg', 40, 1)
|
||||
return
|
||||
@@ -223,7 +223,7 @@
|
||||
|
||||
var/obj/item/organ/internal/xenos/plasmavessel/I = M.internal_organs_by_name[O_PLASMA]
|
||||
if(!istype(I))
|
||||
to_chat(src, "<span class='alium'>Our plasma vessel is missing!</span>")
|
||||
to_chat(src, span_alium("Our plasma vessel is missing!"))
|
||||
return
|
||||
|
||||
to_chat(src, "Our plasma reserves are at [I.stored_plasma]/[I.max_plasma].")
|
||||
@@ -273,7 +273,7 @@
|
||||
else O = new /obj/item/stack/material/resin(targetLoc)
|
||||
|
||||
if(O)
|
||||
visible_message("<span class='warning'><B>[src] vomits up a thick purple substance and begins to shape it!</B></span>", "<span class='alium'>You shape a [choice].</span>")
|
||||
visible_message(span_warning(span_bold("[src] vomits up a thick purple substance and begins to shape it!")), span_alium("You shape a [choice]."))
|
||||
// O.color = "#321D37" // Adding predefined colour icons.
|
||||
playsound(src, 'sound/effects/blobattack.ogg', 40, 1)
|
||||
|
||||
|
||||
@@ -116,7 +116,7 @@ Maybe later, gotta figure out a way to click yourself when in a locker etc.
|
||||
add_verb(new_mob,/mob/living/proc/shapeshift_form) //CHOMPEdit TGPanel
|
||||
new_mob.tf_form = src
|
||||
new_mob.forceMove(src.loc)
|
||||
visible_message("<span class='warning'>[src] twists and contorts, shapeshifting into a different form!</span>")
|
||||
visible_message(span_warning("[src] twists and contorts, shapeshifting into a different form!"))
|
||||
if(new_mob.ckey)
|
||||
new_mob.tf_form_ckey = new_mob.ckey
|
||||
else
|
||||
@@ -184,7 +184,7 @@ Maybe later, gotta figure out a way to click yourself when in a locker etc.
|
||||
set category = "Abilities.Shapeshift"
|
||||
set desc = "Shape shift between set mob forms. (Requires a spawned mob to be varedited into the user's tf_form var as mob reference.)"
|
||||
if(!istype(tf_form))
|
||||
to_chat(src, "<span class='notice'>No shapeshift form set. (Requires a spawned mob to be varedited into the user's tf_form var as mob reference.)</span>")
|
||||
to_chat(src, span_notice("No shapeshift form set. (Requires a spawned mob to be varedited into the user's tf_form var as mob reference.)"))
|
||||
return
|
||||
else
|
||||
transform_into_mob(tf_form, TRUE, TRUE, TRUE)
|
||||
@@ -204,7 +204,7 @@ Maybe later, gotta figure out a way to click yourself when in a locker etc.
|
||||
new_metadata = ""
|
||||
ooc_notes_favs = new_metadata
|
||||
client.prefs.metadata_favs = new_metadata
|
||||
to_chat(user, "<span class='filter_notice'>OOC note favs have been updated. Don't forget to save!</span>")
|
||||
to_chat(user, span_filter_notice("OOC note favs have been updated. Don't forget to save!"))
|
||||
log_admin("[key_name(user)] updated their OOC note favs mid-round.")
|
||||
if(reopen)
|
||||
ooc_notes_window(user)
|
||||
@@ -218,7 +218,7 @@ Maybe later, gotta figure out a way to click yourself when in a locker etc.
|
||||
new_metadata = ""
|
||||
ooc_notes_maybes = new_metadata
|
||||
client.prefs.metadata_maybes = new_metadata
|
||||
to_chat(user, "<span class='filter_notice'>OOC note maybes have been updated. Don't forget to save!</span>")
|
||||
to_chat(user, span_filter_notice("OOC note maybes have been updated. Don't forget to save!"))
|
||||
log_admin("[key_name(user)] updated their OOC note maybes mid-round.")
|
||||
if(reopen)
|
||||
ooc_notes_window(user)
|
||||
|
||||
@@ -112,7 +112,7 @@
|
||||
if(style)
|
||||
dat += {"<div class='row'><div class='column'>"}
|
||||
if(favs || user == src)
|
||||
dat += {"<div class="collapsible"><b><center>Favourites</center></b></div>"}
|
||||
dat += "<div class=\"collapsible\">" + span_bold("<center>Favourites</center>") + "</div>"
|
||||
if(user == src)
|
||||
dat += {"
|
||||
<table>
|
||||
@@ -132,7 +132,7 @@
|
||||
dat += {"</div>"}
|
||||
dat += {"<div class='column'>"}
|
||||
if(likes || user == src)
|
||||
dat += {"<div class="collapsible_a"><b><center>Likes</center></b></div>"}
|
||||
dat += "<div class=\"collapsible_a\">" + span_bold("<center>Likes</center>") + "</div>"
|
||||
if(user == src)
|
||||
dat += {"
|
||||
<table>
|
||||
@@ -152,7 +152,7 @@
|
||||
dat += {"</div>"}
|
||||
dat += {"<div class='column'>"}
|
||||
if(maybes || user == src)
|
||||
dat += {"<div class="collapsible_b"><b><center>Maybes</center></b></div>"}
|
||||
dat += "<div class=\"collapsible_b\">" + span_bold("<center>Maybes</center>") + "</div>"
|
||||
if(user == src)
|
||||
dat += {"
|
||||
<table>
|
||||
@@ -174,7 +174,7 @@
|
||||
dat += {"</div>"}
|
||||
dat += {"<div class='column'>"}
|
||||
if(dislikes || user == src)
|
||||
dat += {"<div class="collapsible_c"><b><center>Dislikes</center></b></div>"}
|
||||
dat += "<div class=\"collapsible_c\">" + span_bold("<center>Dislikes</center>") + "</div>"
|
||||
if(user == src)
|
||||
dat += {"
|
||||
<table>
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
. = ..()
|
||||
if(Adjacent(user))
|
||||
if(water.energy)
|
||||
. += "<span class='notice'>[src] is wet. Just like it should be.</span>"
|
||||
. += span_notice("[src] is wet. Just like it should be.")
|
||||
if(water.energy < 5)
|
||||
. += "<span class='notice'>[src] is dry.</span>"
|
||||
. += span_notice("[src] is dry.")
|
||||
|
||||
/obj/item/gun/energy/taser/mounted/cyborg/flare
|
||||
name = "flare gun"
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
if (stat != CONSCIOUS || nutrition <= 1000)
|
||||
return
|
||||
nutrition = 1000
|
||||
to_chat(src, "<span class='warning'>You have purged most of the nutrition lingering in your systems.</span>")
|
||||
to_chat(src, span_warning("You have purged most of the nutrition lingering in your systems."))
|
||||
return TRUE
|
||||
|
||||
/mob/living/silicon/robot/proc/ex_reserve_refill()
|
||||
@@ -30,9 +30,9 @@
|
||||
amount = water.energy
|
||||
water.use_charge(amount)
|
||||
E.reagents.add_reagent("water", amount)
|
||||
to_chat(src, "<span class='filter_notice'>You refill the extinguisher using your water reserves.</span>")
|
||||
to_chat(src, span_filter_notice("You refill the extinguisher using your water reserves."))
|
||||
else
|
||||
to_chat(src, "<span class='filter_notice'>Insufficient water reserves.</span>")
|
||||
to_chat(src, span_filter_notice("Insufficient water reserves."))
|
||||
|
||||
/mob/living/silicon/robot/proc/reset_belly_lights(var/b_class)
|
||||
if(sprite_datum.belly_light_list.len && sprite_datum.belly_light_list.Find(b_class))
|
||||
|
||||
@@ -379,7 +379,7 @@
|
||||
L.adjustFireLoss(damage_done)
|
||||
return
|
||||
else
|
||||
to_chat(src,"<span class='notice'>Your stomach bounces off of the victim's armor!</span>")
|
||||
to_chat(src,span_notice("Your stomach bounces off of the victim's armor!"))
|
||||
return
|
||||
return //If stomach is distended, return here to perform no forcefeeding or poison injecton.
|
||||
|
||||
@@ -398,7 +398,7 @@
|
||||
var/target_zone = pick(BP_TORSO,BP_TORSO,BP_TORSO,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_HEAD)
|
||||
if(L.can_inject(src, null, target_zone))
|
||||
if(prob(poison_chance))
|
||||
to_chat(L, "<span class='warning'>You feel a strange substance on you.</span>")
|
||||
to_chat(L, span_warning("You feel a strange substance on you."))
|
||||
L.reagents.add_reagent(poison_type, poison_per_bite)
|
||||
|
||||
|
||||
@@ -435,7 +435,7 @@
|
||||
|
||||
/mob/living/simple_mob/animal/synx/perform_the_nom(mob/living/user, mob/living/prey, mob/living/pred, obj/belly/belly, delay) //Synx can only eat people if their organs are on the inside.
|
||||
if(stomach_distended)
|
||||
to_chat(src,"<span class='notice'>You can't eat people without your stomach inside of you!</span>")
|
||||
to_chat(src,span_notice("You can't eat people without your stomach inside of you!"))
|
||||
return
|
||||
else
|
||||
..()
|
||||
@@ -455,12 +455,12 @@
|
||||
if(status_flags & HIDING)
|
||||
status_flags &= ~HIDING
|
||||
reset_plane_and_layer()
|
||||
to_chat(src,"<span class='notice'>You have stopped hiding.</span>")
|
||||
to_chat(src,span_notice("You have stopped hiding."))
|
||||
else
|
||||
status_flags |= HIDING
|
||||
layer = HIDING_LAYER //Just above cables with their 2.44
|
||||
plane = OBJ_PLANE
|
||||
to_chat(src,"<span class='notice'>You are now hiding.</span>")
|
||||
to_chat(src,span_notice("You are now hiding."))
|
||||
|
||||
|
||||
update_icons()
|
||||
@@ -475,14 +475,14 @@
|
||||
|
||||
// If transform isn't true
|
||||
if(stomach_distended)
|
||||
to_chat(src,"<span class='warning'>You can't disguise with your stomach outside of your body!</span>")
|
||||
to_chat(src,span_warning("You can't disguise with your stomach outside of your body!"))
|
||||
return
|
||||
if(!transformed)
|
||||
to_chat(src,"<span class='warning'>Now they see your true form.</span>")
|
||||
to_chat(src,span_warning("Now they see your true form."))
|
||||
icon_living = transformed_state //Switch state to transformed state
|
||||
movement_cooldown = 3
|
||||
else // If transformed is true.
|
||||
to_chat(src,"<span class='warning'>You changed back into your disguise.</span>")
|
||||
to_chat(src,span_warning("You changed back into your disguise."))
|
||||
icon_living = initial(icon_living) //Switch state to what it was originally defined.
|
||||
movement_cooldown = 6
|
||||
|
||||
@@ -497,7 +497,7 @@
|
||||
if(speak && voices)
|
||||
handle_mimic()
|
||||
else
|
||||
usr << "<span class='warning'>YOU NEED TO HEAR THINGS FIRST, try using Ventcrawl to eevesdrop on nerds.</span>"
|
||||
usr << span_warning("YOU NEED TO HEAR THINGS FIRST, try using Ventcrawl to eevesdrop on nerds.")
|
||||
|
||||
/mob/living/simple_mob/animal/synx/proc/handle_mimic()
|
||||
name = pick(voices)
|
||||
@@ -517,24 +517,24 @@
|
||||
set category = "Abilities.Synx"
|
||||
|
||||
if(incapacitated())
|
||||
to_chat(src, "<span class='warning'>You need to recover before you can use this ability.</span>")
|
||||
to_chat(src, span_warning("You need to recover before you can use this ability."))
|
||||
return
|
||||
if(world.time < next_sonar_ping)
|
||||
to_chat(src, "<span class='warning'>You need another moment to focus.</span>")
|
||||
to_chat(src, span_warning("You need another moment to focus."))
|
||||
return
|
||||
if(is_deaf() || is_below_sound_pressure(get_turf(src)))
|
||||
to_chat(src, "<span class='warning'>You are for all intents and purposes currently deaf!</span>")
|
||||
to_chat(src, span_warning("You are for all intents and purposes currently deaf!"))
|
||||
return
|
||||
next_sonar_ping += 10 SECONDS
|
||||
var/heard_something = FALSE
|
||||
to_chat(src, "<span class='notice'>You take a moment to listen in to your environment...</span>")
|
||||
to_chat(src, span_notice("You take a moment to listen in to your environment..."))
|
||||
for(var/mob/living/L in range(client.view, src))
|
||||
var/turf/T = get_turf(L)
|
||||
if(!T || L == src || L.stat == DEAD || is_below_sound_pressure(T))
|
||||
continue
|
||||
heard_something = TRUE
|
||||
var/feedback = list()
|
||||
feedback += "<span class='notice'>There are noises of movement "
|
||||
feedback += "There are noises of movement "
|
||||
var/direction = get_dir(src, L)
|
||||
if(direction)
|
||||
feedback += "towards the [dir2text(direction)], "
|
||||
@@ -551,10 +551,9 @@
|
||||
feedback += "far away."
|
||||
else // No need to check distance if they're standing right on-top of us
|
||||
feedback += "right on top of you."
|
||||
feedback += "</span>"
|
||||
to_chat(src,jointext(feedback,null))
|
||||
to_chat(src,span_notice(jointext(feedback,null)))
|
||||
if(!heard_something)
|
||||
to_chat(src, "<span class='notice'>You hear no movement but your own.</span>")
|
||||
to_chat(src, span_notice("You hear no movement but your own."))
|
||||
|
||||
|
||||
|
||||
@@ -566,12 +565,12 @@
|
||||
set category = "Abilities.Synx"
|
||||
|
||||
if(transformed)
|
||||
to_chat(src,"<span class='warning'>Your limbs are in the way!</span>") //Kind of a weak excuse but since you already can't transform when your stomach is out, this avoids situations calling a sprite that doesn't exist and lightens my workload on making and implementing them
|
||||
to_chat(src,span_warning("Your limbs are in the way!")) //Kind of a weak excuse but since you already can't transform when your stomach is out, this avoids situations calling a sprite that doesn't exist and lightens my workload on making and implementing them
|
||||
return
|
||||
|
||||
if(!stomach_distended && !transformed) //true if stomach distended is null, 0, or ""
|
||||
stomach_distended = !stomach_distended //switch statement
|
||||
to_chat (src, "<span class='notice'>You disgorge your stomach, spilling its contents!</span>")
|
||||
to_chat (src, span_notice("You disgorge your stomach, spilling its contents!"))
|
||||
melee_damage_lower = 1 //Hopefully this will make all brute damage not apply while stomach is distended. I don't see a better way to do this.
|
||||
melee_damage_upper = 1
|
||||
icon_living = stomach_distended_state
|
||||
@@ -589,7 +588,7 @@
|
||||
|
||||
if(stomach_distended) //If our stomach has been vomitted
|
||||
stomach_distended = !stomach_distended
|
||||
to_chat (src, "<span class='notice'>You swallow your insides!</span>")
|
||||
to_chat (src, span_notice("You swallow your insides!"))
|
||||
melee_damage_lower = SYNX_LOWER_DAMAGE //This is why I'm using a define
|
||||
melee_damage_upper = SYNX_UPPER_DAMAGE
|
||||
icon_living = initial(icon_living)
|
||||
@@ -781,13 +780,13 @@
|
||||
//HOLOSEEDSPAWNCODE
|
||||
/mob/living/simple_mob/animal/synx/ai/pet/holo/death()
|
||||
..()
|
||||
visible_message("<span class='notice'>\The [src] fades away!</span>")
|
||||
visible_message(span_notice("\The [src] fades away!"))
|
||||
var/location = get_turf(src)
|
||||
new /obj/item/seeds/hardlightseed/typesx(location)
|
||||
qdel(src)
|
||||
|
||||
/mob/living/simple_mob/animal/synx/ai/pet/holo/gib()
|
||||
visible_message("<span class='notice'>\The [src] fades away!</span>")
|
||||
visible_message(span_notice("\The [src] fades away!"))
|
||||
var/location = get_turf(src)
|
||||
new /obj/item/seeds/hardlightseed/typesx(location)
|
||||
qdel(src)
|
||||
|
||||
@@ -26,15 +26,15 @@
|
||||
set category = "Abilities.Vore"
|
||||
|
||||
if(!vore_icons && !vore_icons_cache)
|
||||
to_chat(src,"<span class='warning'>This simplemob has no vore sprite.</span>")
|
||||
to_chat(src,span_warning("This simplemob has no vore sprite."))
|
||||
else if(isnull(vore_icons_cache))
|
||||
vore_icons_cache = vore_icons
|
||||
vore_icons = 0
|
||||
to_chat(src,"<span class='warning'>Vore sprite disabled.</span>")
|
||||
to_chat(src,span_warning("Vore sprite disabled."))
|
||||
else
|
||||
vore_icons = vore_icons_cache
|
||||
vore_icons_cache = null
|
||||
to_chat(src,"<span class='warning'>Vore sprite enabled.</span>")
|
||||
to_chat(src,span_warning("Vore sprite enabled."))
|
||||
|
||||
update_icon()
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
set category = "IC.Mob"
|
||||
|
||||
if(stat)
|
||||
to_chat(src, "<span class='warning'>You must be awake and standing to perform this action!</span>")
|
||||
to_chat(src, span_warning("You must be awake and standing to perform this action!"))
|
||||
return
|
||||
|
||||
speech_sound_enabled = !speech_sound_enabled
|
||||
@@ -109,7 +109,7 @@
|
||||
if(istype(mob_radio, /obj/item/radio/headset))
|
||||
mob_radio.tgui_interact(src)
|
||||
else
|
||||
to_chat(src, "<span class='warning'>Your mob does not have a radio in its radio slot.</span>")
|
||||
to_chat(src, span_warning("Your mob does not have a radio in its radio slot."))
|
||||
|
||||
/mob/living/simple_mob/proc/use_pda()
|
||||
set name = "Use PDA"
|
||||
@@ -119,7 +119,7 @@
|
||||
if(istype(myid, /obj/item/pda))
|
||||
myid.tgui_interact(src)
|
||||
else
|
||||
to_chat(src, "<span class='warning'>Your mob does not have a PDA in its ID slot.</span>")
|
||||
to_chat(src, span_warning("Your mob does not have a PDA in its ID slot."))
|
||||
|
||||
/mob/living/simple_mob/New(var/newloc)
|
||||
..()
|
||||
|
||||
@@ -111,10 +111,10 @@
|
||||
set category = "Abilities.Mob"
|
||||
|
||||
if(pouncing)
|
||||
to_chat(src, "<span class='notice'>Pouncing toggled off.</span>")
|
||||
to_chat(src, span_notice("Pouncing toggled off."))
|
||||
pouncing = 0
|
||||
else
|
||||
to_chat(src, "<span class='notice'>Pouncing toggled on! DoubleClick somewhere to pounce there.</span>")
|
||||
to_chat(src, span_notice("Pouncing toggled on! DoubleClick somewhere to pounce there."))
|
||||
pouncing = 1
|
||||
update_icon()
|
||||
|
||||
@@ -162,9 +162,9 @@
|
||||
if(!foundpm)
|
||||
pass_flags &= ~PASSMOB
|
||||
else
|
||||
to_chat(src, "<span class='warning'>Pouncing blind isn't wise!</span>")
|
||||
to_chat(src, span_warning("Pouncing blind isn't wise!"))
|
||||
else
|
||||
to_chat(src, "<span class='warning'>You can't do that right now!</span>")
|
||||
to_chat(src, span_warning("You can't do that right now!"))
|
||||
// some sanity incase the callback didn't fire for some reason
|
||||
if(status_flags & LEAPING)
|
||||
status_flags &= ~LEAPING
|
||||
@@ -227,7 +227,7 @@
|
||||
return
|
||||
|
||||
if((spit_last + spit_delay) > world.time) //To prevent YATATATATATAT spitting.
|
||||
to_chat(src, "<span class='warning'>You have not yet prepared your chemical glands. You must wait before spitting again.</span>")
|
||||
to_chat(src, span_warning("You have not yet prepared your chemical glands. You must wait before spitting again."))
|
||||
return
|
||||
else
|
||||
spit_last = world.time
|
||||
@@ -238,7 +238,7 @@
|
||||
update_icon()
|
||||
return
|
||||
else if(spitting)
|
||||
//visible_message("<span class='warning'>[src] spits [spit_name] at \the [A]!</span>", "<span class='alium'>You spit [spit_name] at \the [A].</span>")
|
||||
//visible_message(span_warning("[src] spits [spit_name] at \the [A]!"), span_alium("You spit [spit_name] at \the [A]."))
|
||||
var/obj/item/projectile/P = new spit_projectile(get_turf(src))
|
||||
P.firer = src
|
||||
P.old_style_target(A)
|
||||
@@ -251,12 +251,12 @@
|
||||
set category = "Abilities.Mob"
|
||||
|
||||
if(spitting)
|
||||
to_chat(src, "<span class='notice'>You stop preparing to spit.</span>")
|
||||
to_chat(src, span_notice("You stop preparing to spit."))
|
||||
spitting = 0
|
||||
else
|
||||
spitting = 1
|
||||
spit_projectile = /obj/item/projectile/energy/neurotoxin
|
||||
to_chat(src, "<span class='notice'>You prepare to spit neurotoxin.</span>")
|
||||
to_chat(src, span_notice("You prepare to spit neurotoxin."))
|
||||
update_icon()
|
||||
|
||||
/mob/living/simple_mob/proc/acidspit()
|
||||
@@ -265,12 +265,12 @@
|
||||
set category = "Abilities.Mob"
|
||||
|
||||
if(spitting)
|
||||
to_chat(src, "<span class='notice'>You stop preparing to spit.</span>")
|
||||
to_chat(src, span_notice("You stop preparing to spit."))
|
||||
spitting = 0
|
||||
else
|
||||
spitting = 1
|
||||
spit_projectile = /obj/item/projectile/energy/acid
|
||||
to_chat(src, "<span class='notice'>You prepare to spit acid.</span>")
|
||||
to_chat(src, span_notice("You prepare to spit acid."))
|
||||
update_icon()
|
||||
|
||||
/mob/living/simple_mob/proc/corrosive_acid(O as obj|turf in oview(1)) //If they right click to corrode, an error will flash if its an invalid target./N
|
||||
@@ -279,7 +279,7 @@
|
||||
set category = "Abilities.Mob"
|
||||
|
||||
if(!(O in oview(1)))
|
||||
to_chat(src, "<span class='notice'>[O] is too far away.</span>")
|
||||
to_chat(src, span_notice("[O] is too far away."))
|
||||
return
|
||||
|
||||
// OBJ CHECK
|
||||
@@ -301,11 +301,11 @@
|
||||
cannot_melt = 1 //Gurgs : Everything that isn't a object, simulated wall, or simulated floor is assumed to be acid immune. Includes weird things like unsimulated floors and space.
|
||||
|
||||
if(cannot_melt)
|
||||
to_chat(src, "<span class='notice'>You cannot dissolve this object.</span>")
|
||||
to_chat(src, span_notice("You cannot dissolve this object."))
|
||||
return
|
||||
|
||||
new /obj/effect/alien/acid(get_turf(O), O)
|
||||
visible_message("<span class='alium'><B>[src] vomits globs of vile stuff all over [O]. It begins to sizzle and melt under the bubbling mess of acid!</B></span>")
|
||||
visible_message(span_alium(span_bold("[src] vomits globs of vile stuff all over [O]. It begins to sizzle and melt under the bubbling mess of acid!")))
|
||||
|
||||
return
|
||||
|
||||
@@ -316,7 +316,7 @@
|
||||
set category = "Abilities.Mob"
|
||||
|
||||
if(world.time < speen_last)
|
||||
to_chat(src, "<span class='warning'>You cannot spin again so soon.</span>")
|
||||
to_chat(src, span_warning("You cannot spin again so soon."))
|
||||
return
|
||||
|
||||
speen_last = world.time + speen_delay
|
||||
@@ -344,6 +344,6 @@
|
||||
M.Weaken(1.5)
|
||||
if(!gentle)
|
||||
M.adjustBruteLoss(damage)
|
||||
to_chat(M, "<span class='userdanger'>You're thrown back by [src]!</span>")
|
||||
to_chat(M, span_userdanger("You're thrown back by [src]!"))
|
||||
playsound(src, get_sfx("punch"), 50, 1)
|
||||
AM.throw_at(throwtarget, maxthrow, 3, src)
|
||||
|
||||
@@ -254,7 +254,7 @@ ANT STRUCTURES
|
||||
L.visible_message(
|
||||
span_danger("[L] steps in \the [src]."),
|
||||
span_danger("You step in \the [src]!"),
|
||||
"<b>You hear a strange rustling!</b>"
|
||||
span_hear(span_bold("You hear a strange rustling!"))
|
||||
)
|
||||
attack_mob(L)
|
||||
update_icon()
|
||||
|
||||
@@ -87,8 +87,8 @@
|
||||
desc = "Can you even see this in game?"
|
||||
mob_overlay_state = "cult_aura"
|
||||
|
||||
on_created_text = "<span class='warning'>You feel incrediably vulnerable.</span>"
|
||||
on_expired_text = "<span class='notice'>You feel better.</span>"
|
||||
on_created_text = span_warning("You feel incrediably vulnerable.")
|
||||
on_expired_text = span_notice("You feel better.")
|
||||
stacks = MODIFIER_STACK_ALLOWED // Multiple instances will hurt a lot.
|
||||
incoming_damage_percent = 2 // Adjusts all incoming damage.
|
||||
incoming_brute_damage_percent = 2 // Only affects bruteloss.
|
||||
|
||||
@@ -571,8 +571,8 @@
|
||||
/datum/modifier/bossbuff
|
||||
name = "boss_buff"
|
||||
|
||||
on_created_text = "<span class='critical'>You feel an intense and overwhelming rage overtake you as you go berserk!</span>"
|
||||
on_expired_text = "<span class='notice'>The blaze of rage inside you has ran out.</span>"
|
||||
on_created_text = span_critical("You feel an intense and overwhelming rage overtake you as you go berserk!")
|
||||
on_expired_text = span_notice("The blaze of rage inside you has ran out.")
|
||||
stacks = MODIFIER_STACK_EXTEND
|
||||
|
||||
disable_duration_percent = 0
|
||||
@@ -587,8 +587,8 @@
|
||||
|
||||
aura_max_distance = 28
|
||||
|
||||
on_created_text = "<span class='critical'>You feel like you're falling into ruin!</span>"
|
||||
on_expired_text = "<span class='notice'>The ruin feeling is gone.</span>"
|
||||
on_created_text = span_critical("You feel like you're falling into ruin!")
|
||||
on_expired_text = span_notice("The ruin feeling is gone.")
|
||||
stacks = MODIFIER_STACK_EXTEND
|
||||
|
||||
/datum/modifier/aura/despair/tick()
|
||||
|
||||
@@ -26,8 +26,8 @@
|
||||
var/armorcheck = run_armor_check(null, P.check_armour)
|
||||
var/soakedcheck = get_armor_soak(null, P.check_armour)
|
||||
if(!(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam)))
|
||||
visible_message("<span class='danger'>The [P.name] bounces off of [src]'s shield!</span>", \
|
||||
"<span class='userdanger'>The [P.name] bounces off of [src]'s shield!</span>")
|
||||
visible_message(span_danger("The [P.name] bounces off of [src]'s shield!"), \
|
||||
span_userdanger("The [P.name] bounces off of [src]'s shield!"))
|
||||
new /obj/item/material/shard/shrapnel(src.loc)
|
||||
if(!(P.damage_type == BRUTE || P.damage_type == BURN))
|
||||
projectile_dam_type = BRUTE
|
||||
@@ -35,8 +35,8 @@
|
||||
apply_damage(incoming_damage, projectile_dam_type, null, armorcheck, soakedcheck, is_sharp(P), has_edge(P), P)
|
||||
return -1 //Doesn't reflect non-beams or non-energy projectiles. They just smack and drop with little to no effect.
|
||||
else
|
||||
visible_message("<span class='danger'>The [P.name] gets reflected by [src]'s shield!</span>", \
|
||||
"<span class='userdanger'>The [P.name] gets reflected by [src]'s shield!</span>")
|
||||
visible_message(span_danger("The [P.name] gets reflected by [src]'s shield!"), \
|
||||
span_userdanger("The [P.name] gets reflected by [src]'s shield!"))
|
||||
damage_mod = rand(3,5)
|
||||
incoming_damage = (round(P.damage / damage_mod) - (round((P.damage / damage_mod) * 0.3)))
|
||||
if(!(P.damage_type == BRUTE || P.damage_type == BURN))
|
||||
|
||||
@@ -139,8 +139,8 @@
|
||||
desc = "Can you even see this in game?"
|
||||
mob_overlay_state = "on_fire"
|
||||
|
||||
on_created_text = "<span class='warning'>You are on digital fire.</span>"
|
||||
on_expired_text = "<span class='notice'>You feel better.</span>"
|
||||
on_created_text = span_warning("You are on digital fire.")
|
||||
on_expired_text = span_notice("You feel better.")
|
||||
stacks = MODIFIER_STACK_ALLOWED // Multiple instances will hurt a lot.
|
||||
var/damage_per_tick = 1.5
|
||||
bleeding_rate_percent = 0.7
|
||||
@@ -153,8 +153,8 @@
|
||||
desc = "Can you even see this in game?."
|
||||
mob_overlay_state = "blue_electricity_constant"
|
||||
|
||||
on_created_text = "<span class='warning'>You are filled with digital lighting.</span>"
|
||||
on_expired_text = "<span class='notice'>You feel better.</span>"
|
||||
on_created_text = span_warning("You are filled with digital lighting.")
|
||||
on_expired_text = span_notice("You feel better.")
|
||||
stacks = MODIFIER_STACK_ALLOWED // Multiple instances will hurt a lot.
|
||||
damage_per_tick = 1.0
|
||||
incoming_fire_damage_percent = 1.1
|
||||
@@ -164,8 +164,8 @@
|
||||
desc = "Can you even see this in game?."
|
||||
mob_overlay_state = "poisoned"
|
||||
|
||||
on_created_text = "<span class='warning'>You are on digital poisoned.</span>"
|
||||
on_expired_text = "<span class='notice'>You feel better.</span>"
|
||||
on_created_text = span_warning("You are on digital poisoned.")
|
||||
on_expired_text = span_notice("You feel better.")
|
||||
stacks = MODIFIER_STACK_ALLOWED // Multiple instances will hurt a lot.
|
||||
var/damage_per_tick = 3
|
||||
|
||||
@@ -179,8 +179,8 @@
|
||||
desc = "Can you even see this in game?."
|
||||
mob_overlay_state = "chilled"
|
||||
|
||||
on_created_text = "<span class='warning'>You are on freezing, digitally.</span>"
|
||||
on_expired_text = "<span class='notice'>You feel better.</span>"
|
||||
on_created_text = span_warning("You are on freezing, digitally.")
|
||||
on_expired_text = span_notice("You feel better.")
|
||||
stacks = MODIFIER_STACK_ALLOWED // Multiple instances will hurt a lot.
|
||||
damage_per_tick = 1
|
||||
slowdown = 0.5
|
||||
@@ -190,8 +190,8 @@
|
||||
desc = "Can you even see this in game?."
|
||||
mob_overlay_state = "corana"
|
||||
|
||||
on_created_text = "<span class='warning'>You feel less real.</span>"
|
||||
on_expired_text = "<span class='notice'>You feel real again.</span>"
|
||||
on_created_text = span_warning("You feel less real.")
|
||||
on_expired_text = span_notice("You feel real again.")
|
||||
stacks = MODIFIER_STACK_ALLOWED //How does this stack?
|
||||
max_health_percent = 0.7
|
||||
|
||||
@@ -200,8 +200,8 @@
|
||||
desc = "Can you even see this in game?."
|
||||
mob_overlay_state = "cult_aura"
|
||||
|
||||
on_created_text = "<span class='warning'>You feel like the end is nigh.</span>"
|
||||
on_expired_text = "<span class='notice'>You feel safe for now.</span>"
|
||||
on_created_text = span_warning("You feel like the end is nigh.")
|
||||
on_expired_text = span_notice("You feel safe for now.")
|
||||
aura_max_distance = 4
|
||||
max_health_percent = 0.9
|
||||
disable_duration_percent = 1.2
|
||||
|
||||
+5
-5
@@ -113,7 +113,7 @@
|
||||
|
||||
/mob/living/simple_mob/humanoid/eclipse/solar/bullet_act(obj/item/projectile/P)
|
||||
if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam))
|
||||
visible_message(span_orange("<B>[P] seems ineffective!.</B>"))
|
||||
visible_message(span_boldwarning(span_orange("[P] seems ineffective!.")))
|
||||
..()
|
||||
else
|
||||
..()
|
||||
@@ -231,7 +231,7 @@
|
||||
try_reload()
|
||||
return FALSE
|
||||
|
||||
visible_message(span_danger("<b>\The [src]</b> fires at \the [orig_targ]!"))
|
||||
visible_message(span_danger(span_bold("\The [src]") + " fires at \the [orig_targ]!"))
|
||||
shoot(A)
|
||||
if(casingtype)
|
||||
new casingtype(loc)
|
||||
@@ -284,7 +284,7 @@
|
||||
|
||||
/mob/living/simple_mob/humanoid/eclipse/lunar/bullet_act(obj/item/projectile/P)
|
||||
if(istype(P, /obj/item/projectile/bullet))
|
||||
visible_message(span_orange("<B>[P] seems ineffective!.</B>"))
|
||||
visible_message(span_boldwarning(span_orange("[P] seems ineffective!.")))
|
||||
..()
|
||||
else
|
||||
..()
|
||||
@@ -333,7 +333,7 @@
|
||||
try_reload()
|
||||
return FALSE
|
||||
|
||||
visible_message(span_danger("<b>\The [src]</b> fires at \the [orig_targ]!"))
|
||||
visible_message(span_danger(span_bold("\The [src]") + " fires at \the [orig_targ]!"))
|
||||
shoot(A)
|
||||
if(casingtype)
|
||||
new casingtype(loc)
|
||||
@@ -646,7 +646,7 @@
|
||||
try_reload()
|
||||
return FALSE
|
||||
|
||||
visible_message(span_danger("<b>\The [src]</b> fires at \the [orig_targ]!"))
|
||||
visible_message(span_danger(span_bold("\The [src]") + " fires at \the [orig_targ]!"))
|
||||
shoot(A)
|
||||
if(casingtype)
|
||||
new casingtype(loc)
|
||||
|
||||
@@ -384,16 +384,16 @@
|
||||
if(fullshield > 0)
|
||||
fullshield--
|
||||
if(fullshield > 0)
|
||||
visible_message(span_warning(span_orange("<B>[P] is absorbed by the shield!.</B>")))
|
||||
visible_message(span_boldwarning(span_orange("[P] is absorbed by the shield!.")))
|
||||
else
|
||||
visible_message(span_warning(span_orange("<B>[P] breaks the shield!!.</B>")))
|
||||
visible_message(span_boldwarning(span_orange("[P] breaks the shield!!.")))
|
||||
else
|
||||
..()
|
||||
shieldrage--
|
||||
if(shieldrage == 0)
|
||||
shieldrage = 6
|
||||
fullshield = 6
|
||||
visible_message(span_warning(span_orange("<B>The shield reactivates!!.</B>")))
|
||||
visible_message(span_boldwarning(span_orange("The shield reactivates!!.")))
|
||||
|
||||
/mob/living/simple_mob/humanoid/eclipse/head/tyrlead/do_special_attack(atom/A)
|
||||
if(vore_fullness > 2) //If they nompf someone already
|
||||
|
||||
+1
-1
@@ -128,7 +128,7 @@
|
||||
|
||||
if(L.can_be_drop_prey && L.devourable)
|
||||
L.forceMove(belly_dest)
|
||||
to_chat(target, "<span class='danger'>[src] materializes around you, as you end up in their [belly_dest]!</span>")
|
||||
to_chat(target, span_danger("[src] materializes around you, as you end up in their [belly_dest]!"))
|
||||
|
||||
|
||||
/mob/living/simple_mob/humanoid/starhunter/hunter/proc/smokebomb(atom/target)
|
||||
|
||||
+3
-3
@@ -18,7 +18,7 @@
|
||||
|
||||
/mob/living/simple_mob/humanoid/starhunter/hunter/bullet_act(obj/item/projectile/P)
|
||||
if(istype(P, /obj/item/projectile/energy/lightpillar))
|
||||
visible_message(span_orange("<B>[P] seems ineffective!.</B>")) //immune to their own attack
|
||||
visible_message(span_bolddanger(span_orange("[P] seems ineffective!."))) //immune to their own attack
|
||||
else
|
||||
..()
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
*/
|
||||
if(ranged_cooldown_time) //If you have a non-zero number in a mob's variables, this pattern begins.
|
||||
if(ranged_cooldown <= world.time) //Further down, a timer keeps adding to the ranged_cooldown variable automatically.
|
||||
visible_message("<span class='danger'><b>\The [src]</b> fires at \the [A]!</span>") //Leave notice of shooting.
|
||||
visible_message(span_danger(span_bold("\The [src]") + " fires at \the [A]!")) //Leave notice of shooting.
|
||||
shoot(A) //Perform the shoot action
|
||||
if(casingtype) //If the mob is designated to leave casings...
|
||||
new casingtype(loc) //... leave the casing.
|
||||
@@ -98,7 +98,7 @@
|
||||
return TRUE //End these commands here.
|
||||
// CHOMPAddition End
|
||||
|
||||
visible_message("<span class='danger'><b>\The [src]</b> fires at \the [orig_targ]!</span>")
|
||||
visible_message(span_danger(span_bold("\The [src]") + " fires at \the [orig_targ]!"))
|
||||
shoot(A)
|
||||
if(casingtype)
|
||||
new casingtype(loc)
|
||||
|
||||
+21
-21
@@ -75,7 +75,7 @@
|
||||
W.forceMove(src)
|
||||
coin = W
|
||||
categories |= CAT_COIN
|
||||
to_chat(user, "<span class='notice'>You insert \the [W] into \the [src].</span>")
|
||||
to_chat(user, span_notice("You insert \the [W] into \the [src]."))
|
||||
SStgui.update_uis(src)
|
||||
return
|
||||
else
|
||||
@@ -92,12 +92,12 @@
|
||||
|
||||
// This is not a status display message, since it's something the character
|
||||
// themselves is meant to see BEFORE putting the money in
|
||||
to_chat(usr, "[icon2html(cashmoney,user.client)] <span class='warning'>That is not enough money.</span>")
|
||||
to_chat(usr, "[icon2html(cashmoney,user.client)] " + span_warning("That is not enough money."))
|
||||
return 0
|
||||
|
||||
if(istype(cashmoney, /obj/item/spacecash))
|
||||
|
||||
visible_message("<span class='info'>\The [usr] inserts some cash into \the [src].</span>")
|
||||
visible_message(span_info("\The [usr] inserts some cash into \the [src]."))
|
||||
cashmoney.worth -= currently_vending.price
|
||||
|
||||
if(cashmoney.worth <= 0)
|
||||
@@ -186,20 +186,20 @@
|
||||
return FALSE
|
||||
|
||||
if(!coin)
|
||||
to_chat(usr, "<span class='filter_notice'>There is no coin in this machine.</span>")
|
||||
to_chat(usr, span_filter_notice("There is no coin in this machine."))
|
||||
return
|
||||
|
||||
coin.forceMove(src.loc)
|
||||
if(!usr.get_active_hand())
|
||||
usr.put_in_hands(coin)
|
||||
|
||||
to_chat(usr, "<span class='notice'>You remove \the [coin] from \the [src].</span>")
|
||||
to_chat(usr, span_notice("You remove \the [coin] from \the [src]."))
|
||||
coin = null
|
||||
categories &= ~CAT_COIN
|
||||
return TRUE
|
||||
if("vend")
|
||||
if(!vend_ready)
|
||||
to_chat(usr, "<span class='warning'>[src] is busy!</span>")
|
||||
to_chat(usr, span_warning("[src] is busy!"))
|
||||
return
|
||||
|
||||
var/key = text2num(params["vend"])
|
||||
@@ -218,7 +218,7 @@
|
||||
return TRUE
|
||||
|
||||
if(issilicon(usr)) //If the item is not free, provide feedback if a synth is trying to buy something.
|
||||
to_chat(usr, "<span class='danger'>Lawed unit recognized. Lawed units cannot complete this transaction. Purchase canceled.</span>")
|
||||
to_chat(usr, span_danger("Lawed unit recognized. Lawed units cannot complete this transaction. Purchase canceled."))
|
||||
return
|
||||
if(!ishuman(usr))
|
||||
return
|
||||
@@ -229,7 +229,7 @@
|
||||
var/obj/item/card/id/C = H.GetIdCard()
|
||||
|
||||
if(!vendor_account || vendor_account.suspended)
|
||||
to_chat(usr, "<span class='filter_notice'>Vendor account offline. Unable to process transaction.</span>")
|
||||
to_chat(usr, span_filter_notice("Vendor account offline. Unable to process transaction."))
|
||||
flick("[icon_state]-deny",src)
|
||||
vend_ready = TRUE
|
||||
return
|
||||
@@ -247,10 +247,10 @@
|
||||
else if(istype(C, /obj/item/card))
|
||||
paid = pay_with_card(C, usr)
|
||||
/*else if(usr.can_advanced_admin_interact())
|
||||
to_chat(usr, "<span class='notice'>Vending object due to admin interaction.</span>")
|
||||
to_chat(usr, span_notice("Vending object due to admin interaction."))
|
||||
paid = TRUE*/
|
||||
else
|
||||
to_chat(usr, "<span class='warning'>Payment failure: you have no ID or other method of payment.</span>")
|
||||
to_chat(usr, span_warning("Payment failure: you have no ID or other method of payment."))
|
||||
vend_ready = TRUE
|
||||
flick("[icon_state]-deny",src)
|
||||
return TRUE // we set this because they shouldn't even be able to get this far, and we want the UI to update.
|
||||
@@ -258,7 +258,7 @@
|
||||
vend(currently_vending, usr) // vend will handle vend_ready
|
||||
. = TRUE
|
||||
else
|
||||
to_chat(usr, "<span class='warning'>Payment failure: unable to process payment.</span>")
|
||||
to_chat(usr, span_warning("Payment failure: unable to process payment."))
|
||||
vend_ready = TRUE
|
||||
|
||||
/mob/living/simple_mob/humanoid/starhunter/trader/proc/vend(datum/stored_item/vending_product/R, mob/user)
|
||||
@@ -266,7 +266,7 @@
|
||||
return
|
||||
|
||||
if(!R.amount)
|
||||
to_chat(user, "<span class='warning'>[src] has ran out of that product.</span>")
|
||||
to_chat(user, span_warning("[src] has ran out of that product."))
|
||||
vend_ready = TRUE
|
||||
return
|
||||
|
||||
@@ -275,7 +275,7 @@
|
||||
|
||||
if(R.category & CAT_COIN)
|
||||
if(!coin)
|
||||
to_chat(user, "<span class='notice'>You need to insert a coin to get this item.</span>")
|
||||
to_chat(user, span_notice("You need to insert a coin to get this item."))
|
||||
return
|
||||
else
|
||||
qdel(coin)
|
||||
@@ -300,7 +300,7 @@
|
||||
if(!user.unEquip(W))
|
||||
return
|
||||
|
||||
to_chat(user, "<span class='notice'>You insert \the [W] in the product receptor.</span>")
|
||||
to_chat(user, span_notice("You insert \the [W] in the product receptor."))
|
||||
R.add_product(W)
|
||||
if(has_logs)
|
||||
do_logging(R, user)
|
||||
@@ -308,10 +308,10 @@
|
||||
SStgui.update_uis(src)
|
||||
|
||||
/mob/living/simple_mob/humanoid/starhunter/trader/proc/pay_with_ewallet(var/obj/item/spacecash/ewallet/wallet)
|
||||
visible_message("<span class='info'>\The [usr] swipes \the [wallet] through \the [src].</span>")
|
||||
visible_message(span_info("\The [usr] swipes \the [wallet] through \the [src]."))
|
||||
playsound(src, 'sound/machines/id_swipe.ogg', 50, 1)
|
||||
if(currently_vending.price > wallet.worth)
|
||||
to_chat(usr, "<span class='warning'>Insufficient funds on chargecard.</span>")
|
||||
to_chat(usr, span_warning("Insufficient funds on chargecard."))
|
||||
return 0
|
||||
else
|
||||
wallet.worth -= currently_vending.price
|
||||
@@ -325,16 +325,16 @@
|
||||
* successful, 0 if failed
|
||||
*/
|
||||
/mob/living/simple_mob/humanoid/starhunter/trader/proc/pay_with_card(obj/item/card/id/I, mob/M)
|
||||
visible_message("<span class='info'>[M] swipes a card through [src].</span>")
|
||||
visible_message(span_info("[M] swipes a card through [src]."))
|
||||
playsound(src, 'sound/machines/id_swipe.ogg', 50, 1)
|
||||
|
||||
var/datum/money_account/customer_account = get_account(I.associated_account_number)
|
||||
if(!customer_account)
|
||||
to_chat(M, "<span class='warning'>Error: Unable to access account. Please contact technical support if problem persists.</span>")
|
||||
to_chat(M, span_warning("Error: Unable to access account. Please contact technical support if problem persists."))
|
||||
return FALSE
|
||||
|
||||
if(customer_account.suspended)
|
||||
to_chat(M, "<span class='warning'>Unable to access account: account suspended.</span>")
|
||||
to_chat(M, span_warning("Unable to access account: account suspended."))
|
||||
return FALSE
|
||||
|
||||
// Have the customer punch in the PIN before checking if there's enough money. Prevents people from figuring out acct is
|
||||
@@ -344,11 +344,11 @@
|
||||
customer_account = attempt_account_access(I.associated_account_number, attempt_pin, 2)
|
||||
|
||||
if(!customer_account)
|
||||
to_chat(M, "<span class='warning'>Unable to access account: incorrect credentials.</span>")
|
||||
to_chat(M, span_warning("Unable to access account: incorrect credentials."))
|
||||
return FALSE
|
||||
|
||||
if(currently_vending.price > customer_account.money)
|
||||
to_chat(M, "<span class='warning'>Insufficient funds in account.</span>")
|
||||
to_chat(M, span_warning("Insufficient funds in account."))
|
||||
return FALSE
|
||||
|
||||
// Okay to move the money at this point
|
||||
|
||||
+2
-2
@@ -25,8 +25,8 @@
|
||||
/mob/living/simple_mob/construct/juggernaut/behemoth/unstoppable/bullet_act(var/obj/item/projectile/P)
|
||||
var/reflectchance = 100 - round(P.damage*2)
|
||||
if(prob(reflectchance))
|
||||
visible_message("<span class='danger'>The [P.name] gets reflected by [src]'s shell!</span>", \
|
||||
"<span class='userdanger'>The [P.name] gets reflected by [src]'s shell!</span>")
|
||||
visible_message(span_danger("The [P.name] gets reflected by [src]'s shell!"), \
|
||||
span_userdanger("The [P.name] gets reflected by [src]'s shell!"))
|
||||
|
||||
// Find a turf near or on the original location to bounce to
|
||||
if(P.starting)
|
||||
|
||||
+4
-4
@@ -236,8 +236,8 @@
|
||||
var/armorcheck = run_armor_check(null, P.check_armour)
|
||||
var/soakedcheck = get_armor_soak(null, P.check_armour)
|
||||
if(!(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam)))
|
||||
visible_message("<span class='danger'>The [P.name] bounces off of [src]'s shell!</span>", \
|
||||
"<span class='userdanger'>The [P.name] bounces off of [src]'s shell!</span>")
|
||||
visible_message(span_danger("The [P.name] bounces off of [src]'s shell!"), \
|
||||
span_userdanger("The [P.name] bounces off of [src]'s shell!"))
|
||||
new /obj/item/material/shard/shrapnel(src.loc)
|
||||
if(!(P.damage_type == BRUTE || P.damage_type == BURN))
|
||||
projectile_dam_type = BRUTE
|
||||
@@ -245,8 +245,8 @@
|
||||
apply_damage(incoming_damage, projectile_dam_type, null, armorcheck, soakedcheck, is_sharp(P), has_edge(P), P)
|
||||
return -1 //Doesn't reflect non-beams or non-energy projectiles. They just smack and drop with little to no effect.
|
||||
else
|
||||
visible_message("<span class='danger'>The [P.name] gets reflected by [src]'s shell!</span>", \
|
||||
"<span class='userdanger'>The [P.name] gets reflected by [src]'s shell!</span>")
|
||||
visible_message(span_danger("The [P.name] gets reflected by [src]'s shell!"), \
|
||||
span_userdanger("The [P.name] gets reflected by [src]'s shell!"))
|
||||
damage_mod = rand(3,5)
|
||||
incoming_damage = (round(P.damage / damage_mod) - (round((P.damage / damage_mod) * 0.3)))
|
||||
if(!(P.damage_type == BRUTE || P.damage_type == BURN))
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
required = /obj/item/slime_extract/sepia
|
||||
|
||||
/decl/chemical_reaction/instant/slime/secertslime/on_reaction(var/datum/reagents/holder)
|
||||
holder.my_atom.visible_message("<span class='warning'>Infused with the mixture, the core begins to quiver and grow, and soon a new baby slime emerges from it!</span>")
|
||||
holder.my_atom.visible_message(span_warning("Infused with the mixture, the core begins to quiver and grow, and soon a new baby slime emerges from it!"))
|
||||
new /mob/living/simple_mob/slime/xenobio/redspace(get_turf(holder.my_atom))
|
||||
..()
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
required = /obj/item/slime_extract/sepia
|
||||
|
||||
/decl/chemical_reaction/instant/slime/sepia_new_slime/on_reaction(var/datum/reagents/holder)
|
||||
holder.my_atom.visible_message("<span class='warning'>Infused with slime jelly, the core begins to quiver and grow, and soon a new baby slime emerges from it!</span>")
|
||||
holder.my_atom.visible_message(span_warning("Infused with slime jelly, the core begins to quiver and grow, and soon a new baby slime emerges from it!"))
|
||||
new /mob/living/simple_mob/slime/xenobio/sepia(get_turf(holder.my_atom))
|
||||
..()
|
||||
|
||||
@@ -203,7 +203,7 @@
|
||||
required = /obj/item/slime_extract/dark
|
||||
|
||||
/decl/chemical_reaction/instant/slime/dark_carpotoxin/on_reaction(var/datum/reagents/holder)
|
||||
holder.my_atom.visible_message("<span class='warning'>Infused with slime jelly, the core begins to quiver and grow, and soon a new baby slime emerges from it!</span>")
|
||||
holder.my_atom.visible_message(span_warning("Infused with slime jelly, the core begins to quiver and grow, and soon a new baby slime emerges from it!"))
|
||||
new /mob/living/simple_mob/slime/xenobio/oceanic(get_turf(holder.my_atom))
|
||||
..()
|
||||
|
||||
@@ -313,8 +313,8 @@
|
||||
name = "Aura Healing Tide"
|
||||
desc = "You are filled with an overwhelming energy."
|
||||
|
||||
on_created_text = "<span class='critical'>Your body begins to focus on recovering!</span>"
|
||||
on_expired_text = "<span class='notice'>The healing subsides.</span>"
|
||||
on_created_text = span_critical("Your body begins to focus on recovering!")
|
||||
on_expired_text = span_notice("The healing subsides.")
|
||||
stacks = MODIFIER_STACK_FORBID
|
||||
aura_max_distance = 4
|
||||
|
||||
@@ -374,7 +374,7 @@
|
||||
required = /obj/item/slime_extract/plague
|
||||
|
||||
/decl/chemical_reaction/instant/slime/warplague/on_reaction(var/datum/reagents/holder)
|
||||
holder.my_atom.visible_message("<span class='warning'>Infused with slime jelly, the core begins to quiver and grow, and soon a new baby slime emerges from it!</span>")
|
||||
holder.my_atom.visible_message(span_warning("Infused with slime jelly, the core begins to quiver and grow, and soon a new baby slime emerges from it!"))
|
||||
new /mob/living/simple_mob/slime/xenobio/nuclear(get_turf(holder.my_atom))
|
||||
..()
|
||||
|
||||
@@ -408,8 +408,8 @@
|
||||
name = "Radiation Hide"
|
||||
desc = "Your body defensivly warps."
|
||||
|
||||
on_created_text = "<span class='critical'>Your body strangly mutates!</span>"
|
||||
on_expired_text = "<span class='notice'>Your body returns to normal.</span>"
|
||||
on_created_text = span_critical("Your body strangly mutates!")
|
||||
on_expired_text = span_notice("Your body returns to normal.")
|
||||
stacks = MODIFIER_STACK_FORBID
|
||||
aura_max_distance = 4
|
||||
|
||||
@@ -435,7 +435,7 @@
|
||||
/decl/chemical_reaction/instant/slime/nuclear_radpulse/on_reaction(var/datum/reagents/holder)
|
||||
log_and_message_admins("Green extract reaction (radiation pulse) has been activated in [get_area(holder.my_atom)]. Last fingerprints: [holder.my_atom.fingerprintslast]")
|
||||
playsound(holder.my_atom, 'sound/effects/phasein.ogg', 75, 1)
|
||||
holder.my_atom.visible_message("<span class='danger'>\The [holder.my_atom] begins to vibrate violently!</span>")
|
||||
holder.my_atom.visible_message(span_danger("\The [holder.my_atom] begins to vibrate violently!"))
|
||||
spawn(5 SECONDS)
|
||||
SSradiation.flat_radiate(src, 30, 7, TRUE)
|
||||
..()
|
||||
@@ -513,7 +513,7 @@
|
||||
required = /obj/item/slime_extract/dream
|
||||
|
||||
/decl/chemical_reaction/instant/slime/nightmareslime/on_reaction(var/datum/reagents/holder)
|
||||
holder.my_atom.visible_message("<span class='warning'>Infused with slime jelly, the core begins to quiver and grow, and soon a new baby slime emerges from it!</span>")
|
||||
holder.my_atom.visible_message(span_warning("Infused with slime jelly, the core begins to quiver and grow, and soon a new baby slime emerges from it!"))
|
||||
new /mob/living/simple_mob/slime/xenobio/nightmare(get_turf(holder.my_atom))
|
||||
..()
|
||||
|
||||
@@ -630,7 +630,7 @@
|
||||
required = /obj/item/slime_extract/redspace
|
||||
|
||||
/decl/chemical_reaction/instant/slime/redspace_sound/on_reaction(var/datum/reagents/holder)
|
||||
holder.my_atom.visible_message("<span class='warning'>Infused with the mixture, the core begins to quiver and grow, and soon a new baby slime emerges from it!</span>")
|
||||
holder.my_atom.visible_message(span_warning("Infused with the mixture, the core begins to quiver and grow, and soon a new baby slime emerges from it!"))
|
||||
new /mob/living/simple_mob/slime/xenobio/sound(get_turf(holder.my_atom))
|
||||
..()
|
||||
|
||||
@@ -664,8 +664,8 @@
|
||||
name = "Soothing Song"
|
||||
desc = "Your body is soothed."
|
||||
|
||||
on_created_text = "<span class='critical'>Your mind is put to rest!</span>"
|
||||
on_expired_text = "<span class='notice'>Your mind functions normally.</span>"
|
||||
on_created_text = span_critical("Your mind is put to rest!")
|
||||
on_expired_text = span_notice("Your mind functions normally.")
|
||||
stacks = MODIFIER_STACK_FORBID
|
||||
aura_max_distance = 4
|
||||
|
||||
@@ -709,7 +709,7 @@
|
||||
required = /obj/item/slime_extract/sound
|
||||
|
||||
/decl/chemical_reaction/instant/slime/soundwater/on_reaction(var/datum/reagents/holder)
|
||||
holder.my_atom.visible_message("<span class='warning'>Infused with the mixture, the core begins to quiver and grow, and soon a new baby slime emerges from it!</span>")
|
||||
holder.my_atom.visible_message(span_warning("Infused with the mixture, the core begins to quiver and grow, and soon a new baby slime emerges from it!"))
|
||||
new /mob/living/simple_mob/slime/xenobio/sound(get_turf(holder.my_atom))
|
||||
..()
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
horns,
|
||||
overlay_colors["Eyes"],
|
||||
eyes), ";")
|
||||
to_chat(src, "<span class='notice'>Exported style string is \" [output_style] \". Use this to get the same style in the future with import style</span>")
|
||||
to_chat(src, span_notice("Exported style string is \" [output_style] \". Use this to get the same style in the future with import style"))
|
||||
|
||||
/mob/living/simple_mob/vore/bigdragon/proc/import_style()
|
||||
set name = "Import style string"
|
||||
|
||||
@@ -647,15 +647,15 @@
|
||||
/mob/living/simple_mob/vore/candy/peppermint/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
if(O.force)
|
||||
if(prob(80))
|
||||
visible_message("<span class='danger'>\The [src] deflects \the [O] with its shell!</span>")
|
||||
visible_message(span_danger("\The [src] deflects \the [O] with its shell!"))
|
||||
if(user)
|
||||
ai_holder.react_to_attack(user)
|
||||
return
|
||||
else
|
||||
..()
|
||||
else
|
||||
to_chat(user, "<span class='warning'>This weapon is ineffective, it does no damage.</span>")
|
||||
visible_message("<span class='warning'>\The [user] gently taps [src] with \the [O].</span>")
|
||||
to_chat(user, span_warning("This weapon is ineffective, it does no damage."))
|
||||
visible_message(span_warning("\The [user] gently taps [src] with \the [O]."))
|
||||
|
||||
/*
|
||||
/mob/living/simple_mob/vore/candy/worm
|
||||
|
||||
@@ -42,8 +42,8 @@
|
||||
set category = "Abilities.Shadekin"
|
||||
|
||||
if(phase_gentle)
|
||||
to_chat(src, "<span class='notice'>Phasing toggled to Normal. You may damage lights.</span>")
|
||||
to_chat(src, span_notice("Phasing toggled to Normal. You may damage lights."))
|
||||
phase_gentle = 0
|
||||
else
|
||||
to_chat(src, "<span class='notice'>Phasing toggled to Gentle. You won't damage lights, but concentrating on that incurs a short stun.</span>")
|
||||
to_chat(src, span_notice("Phasing toggled to Gentle. You won't damage lights, but concentrating on that incurs a short stun."))
|
||||
phase_gentle = 1
|
||||
|
||||
@@ -57,11 +57,11 @@
|
||||
L = new evolve(get_turf(src))
|
||||
if(mind)
|
||||
src.mind.transfer_to(L)
|
||||
visible_message("<span class='warning'>\The [src] suddenly evolves!</span>")
|
||||
visible_message(span_warning("\The [src] suddenly evolves!"))
|
||||
qdel(src)
|
||||
|
||||
/mob/living/simple_mob/vore/spacecritter/proc/duplicate()
|
||||
visible_message("<span class='warning'>\The [src] splits into two!</span>")
|
||||
visible_message(span_warning("\The [src] splits into two!"))
|
||||
new copy (src.loc)
|
||||
|
||||
|
||||
|
||||
@@ -253,15 +253,15 @@
|
||||
if(istype(AM, /mob/living))
|
||||
var/mob/living/M = AM
|
||||
if(!M.devourable || !M.can_be_drop_prey)
|
||||
to_chat(M, "<span class='warning'>[src] plunges their head into \the [D], while you narrowly avoid being sucked up!</span>")
|
||||
to_chat(M, span_warning("[src] plunges their head into \the [D], while you narrowly avoid being sucked up!"))
|
||||
continue
|
||||
to_chat(M, "<span class='warning'>[src] plunges their head into \the [D], sucking up everything inside- Including you!</span>")
|
||||
to_chat(M, span_warning("[src] plunges their head into \the [D], sucking up everything inside- Including you!"))
|
||||
foundstuff = 1
|
||||
AM.forceMove(src)
|
||||
if(foundstuff)
|
||||
src.visible_message("<span class='warning'>[src] plunges their head into \the [D], greedily sucking up everything inside!</span>")
|
||||
src.visible_message(span_warning("[src] plunges their head into \the [D], greedily sucking up everything inside!"))
|
||||
else //Oh, Nothing was inside...
|
||||
to_chat(src, "You poke your head into \the [D], but there doesnt seem to be anything of interest...")
|
||||
to_chat(src, span_infoplain("You poke your head into \the [D], but there doesnt seem to be anything of interest..."))
|
||||
return
|
||||
var/resolved = Vac.resolve_attackby(A, src, click_parameters = params)
|
||||
if(!resolved && A && Vac)
|
||||
@@ -278,7 +278,7 @@
|
||||
if(L.a_intent == I_GRAB && Vac && Vac.loc == src)
|
||||
if(L.zone_sel.selecting == BP_HEAD)
|
||||
if(L.put_in_active_hand(Vac))
|
||||
L.visible_message("<span class='warning'>[L] grabs [src] by the neck, brandishing the thing like a regular vacuum cleaner!</span>")
|
||||
L.visible_message(span_warning("[L] grabs [src] by the neck, brandishing the thing like a regular vacuum cleaner!"))
|
||||
L.start_pulling(src)
|
||||
return
|
||||
. = ..()
|
||||
@@ -303,9 +303,9 @@
|
||||
set category = "IC"
|
||||
set src in oview(1)
|
||||
if(!has_AI() || !IIsAlly(usr))
|
||||
to_chat(usr, "<span class=danger></span>")
|
||||
to_chat(usr, span_danger(""))
|
||||
if(!ai_holder == /datum/ai_holder/simple_mob/retaliate/swoopie || !ai_holder)
|
||||
to_chat(usr, "<span class=warning>This [src] doesnt seem to have changable settings!</span>")
|
||||
to_chat(usr, span_warning("This [src] doesnt seem to have changable settings!"))
|
||||
return
|
||||
var/datum/ai_holder/simple_mob/retaliate/swoopie/ai = ai_holder
|
||||
var/list/swooping_options = list(
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
var/leap_warmup = 0.5 SECOND // How long the leap telegraphing is.
|
||||
var/leap_sound = 'sound/weapons/spiderlunge.ogg'
|
||||
|
||||
player_msg = "You are very fast, and <b>can perform a leaping attack</b> by clicking on someone from a short distance away.<br>\
|
||||
player_msg = "You are very fast, and " + span_bold("can perform a leaping attack") + " by clicking on someone from a short distance away.<br>\
|
||||
If the leap succeeds, the target will be knocked down briefly and you will be on top of them.<br>\
|
||||
Note that there is a short delay before you leap!<br>\
|
||||
In addition, you will do more damage to incapacitated opponents."
|
||||
|
||||
@@ -11,10 +11,10 @@
|
||||
set category = "Abilities.Settings"
|
||||
|
||||
if(picked_size)
|
||||
to_chat(src, "<span class='notice'>You have already picked a size! If you picked the wrong size, ask an admin to change your picked_size variable to 0.</span>")
|
||||
to_chat(src, span_notice("You have already picked a size! If you picked the wrong size, ask an admin to change your picked_size variable to 0."))
|
||||
return
|
||||
if(!resizable)
|
||||
to_chat(src, "<span class='warning'>You are immune to resizing!</span>")
|
||||
to_chat(src, span_warning("You are immune to resizing!"))
|
||||
return
|
||||
|
||||
var/nagmessage = "Pick a size between 25 to 200%. (Only usable once!)"
|
||||
@@ -31,7 +31,7 @@
|
||||
set category = "Abilities.Settings"
|
||||
set desc = "You can set your color!"
|
||||
if(picked_color)
|
||||
to_chat(src, "<span class='notice'>You have already picked a color! If you picked the wrong color, ask an admin to change your picked_color variable to 0.</span>")
|
||||
to_chat(src, span_notice("You have already picked a color! If you picked the wrong color, ask an admin to change your picked_color variable to 0."))
|
||||
return
|
||||
var/newcolor = input(usr, "Choose a color.", "", color) as color|null
|
||||
if(newcolor)
|
||||
|
||||
@@ -167,7 +167,7 @@
|
||||
|
||||
/mob/living/simple_mob/vore/weatherbeast/sandstorm/do_special_attack(atom/A)
|
||||
if(health < maxHealth*0.25)
|
||||
visible_message(span_orange("<B>The fossil tank begins self repairs!.</B>"))
|
||||
visible_message(span_bolddanger(span_orange("The fossil tank begins self repairs!.")))
|
||||
sleep(30)
|
||||
for(var/i =1 to 10)
|
||||
adjustBruteLoss(-100)
|
||||
@@ -215,7 +215,7 @@
|
||||
|
||||
/mob/living/simple_mob/vore/weatherbeast/acidrain/do_special_attack(atom/A)
|
||||
if(nutrition > 1100)
|
||||
visible_message(span_orange("<B>The giant jellyfish begins to regenerate!.</B>"))
|
||||
visible_message(span_bolddanger(span_orange("The giant jellyfish begins to regenerate!.")))
|
||||
adjustBruteLoss(-300)
|
||||
adjustFireLoss(-300)
|
||||
adjust_nutrition(-500)
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
O = new /obj/effect/alien/weeds/node(targetLoc)
|
||||
|
||||
if(O)
|
||||
visible_message("<span class='warning'><B>[src] vomits up a thick purple substance and begins to shape it!</B></span>", "<span class='alium'>You shape a [choice].</span>")
|
||||
visible_message(span_boldwarning("[src] vomits up a thick purple substance and begins to shape it!"), span_alium("You shape a [choice]."))
|
||||
O.color = "#321D37"
|
||||
playsound(src, 'sound/effects/blobattack.ogg', 40, 1)
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
|
||||
/obj/structure/filingcabinet/attackby(obj/item/P as obj, mob/user as mob)
|
||||
if(istype(P, /obj/item/paper) || istype(P, /obj/item/folder) || istype(P, /obj/item/photo) || istype(P, /obj/item/paper_bundle))
|
||||
to_chat(user, "<span class='notice'>You put [P] in [src].</span>")
|
||||
to_chat(user, span_notice("You put [P] in [src]."))
|
||||
user.drop_item()
|
||||
P.loc = src
|
||||
open_animation()
|
||||
@@ -41,20 +41,20 @@
|
||||
else if(P.has_tool_quality(TOOL_WRENCH))
|
||||
playsound(src, P.usesound, 50, 1)
|
||||
anchored = !anchored
|
||||
to_chat(user, "<span class='notice'>You [anchored ? "wrench" : "unwrench"] \the [src].</span>")
|
||||
to_chat(user, span_notice("You [anchored ? "wrench" : "unwrench"] \the [src]."))
|
||||
else if(P.has_tool_quality(TOOL_SCREWDRIVER))
|
||||
to_chat(user, "<span class='notice'>You begin taking the [name] apart.</span>")
|
||||
to_chat(user, span_notice("You begin taking the [name] apart."))
|
||||
playsound(src, P.usesound, 50, 1)
|
||||
if(do_after(user, 10 * P.toolspeed))
|
||||
playsound(src, P.usesound, 50, 1)
|
||||
to_chat(user, "<span class='notice'>You take the [name] apart.</span>")
|
||||
to_chat(user, span_notice("You take the [name] apart."))
|
||||
new /obj/item/stack/material/steel( src.loc, 4 )
|
||||
for(var/obj/item/I in contents)
|
||||
I.forceMove(loc)
|
||||
qdel(src)
|
||||
return
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You can't put [P] in [src]!</span>")
|
||||
to_chat(user, span_notice("You can't put [P] in [src]!"))
|
||||
|
||||
/obj/structure/filingcabinet/attack_hand(mob/user as mob)
|
||||
tgui_interact(user)
|
||||
@@ -71,9 +71,9 @@
|
||||
I.loc = loc
|
||||
if(prob(25))
|
||||
step_rand(I)
|
||||
to_chat(user, "<span class='notice'>You pull \a [I] out of [src] at random.</span>")
|
||||
to_chat(user, span_notice("You pull \a [I] out of [src] at random."))
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You find nothing in [src].</span>")
|
||||
to_chat(user, span_notice("You find nothing in [src]."))
|
||||
|
||||
/obj/structure/filingcabinet/tgui_state(mob/user)
|
||||
return GLOB.tgui_physical_state
|
||||
@@ -132,9 +132,9 @@
|
||||
S = R
|
||||
break
|
||||
var/obj/item/paper/P = new /obj/item/paper(src)
|
||||
P.info = "<CENTER><B>Security Record</B></CENTER><BR>"
|
||||
P.info = "<CENTER>" + span_bold("Security Record") + "</CENTER><BR>"
|
||||
P.info += "Name: [G.fields["name"]] ID: [G.fields["id"]]<BR>\nSex: [G.fields["sex"]]<BR>\nAge: [G.fields["age"]]<BR>\nFingerprint: [G.fields["fingerprint"]]<BR>\nPhysical Status: [G.fields["p_stat"]]<BR>\nMental Status: [G.fields["m_stat"]]<BR>"
|
||||
P.info += "<BR>\n<CENTER><B>Security Data</B></CENTER><BR>\nCriminal Status: [S.fields["criminal"]]<BR>\n<BR>\nMinor Crimes: [S.fields["mi_crim"]]<BR>\nDetails: [S.fields["mi_crim_d"]]<BR>\n<BR>\nMajor Crimes: [S.fields["ma_crim"]]<BR>\nDetails: [S.fields["ma_crim_d"]]<BR>\n<BR>\nImportant Notes:<BR>\n\t[S.fields["notes"]]<BR>\n<BR>\n<CENTER><B>Comments/Log</B></CENTER><BR>"
|
||||
P.info += "<BR>\n<CENTER>" + span_bold("Security Data") + "</CENTER><BR>\nCriminal Status: [S.fields["criminal"]]<BR>\n<BR>\nMinor Crimes: [S.fields["mi_crim"]]<BR>\nDetails: [S.fields["mi_crim_d"]]<BR>\n<BR>\nMajor Crimes: [S.fields["ma_crim"]]<BR>\nDetails: [S.fields["ma_crim_d"]]<BR>\n<BR>\nImportant Notes:<BR>\n\t[S.fields["notes"]]<BR>\n<BR>\n<CENTER>" + span_bold("Comments/Log") + "</CENTER><BR>"
|
||||
var/counter = 1
|
||||
while(S.fields["com_[counter]"])
|
||||
P.info += "[S.fields["com_[counter]"]]<BR>"
|
||||
@@ -168,10 +168,10 @@
|
||||
break
|
||||
if(M)
|
||||
var/obj/item/paper/P = new /obj/item/paper(src)
|
||||
P.info = "<CENTER><B>Medical Record</B></CENTER><BR>"
|
||||
P.info = "<CENTER>" + span_bold("Medical Record") + "</CENTER><BR>"
|
||||
P.info += "Name: [G.fields["name"]] ID: [G.fields["id"]]<BR>\nSex: [G.fields["sex"]]<BR>\nAge: [G.fields["age"]]<BR>\nFingerprint: [G.fields["fingerprint"]]<BR>\nPhysical Status: [G.fields["p_stat"]]<BR>\nMental Status: [G.fields["m_stat"]]<BR>"
|
||||
|
||||
P.info += "<BR>\n<CENTER><B>Medical Data</B></CENTER><BR>\nBlood Type: [M.fields["b_type"]]<BR>\nDNA: [M.fields["b_dna"]]<BR>\n<BR>\nMinor Disabilities: [M.fields["mi_dis"]]<BR>\nDetails: [M.fields["mi_dis_d"]]<BR>\n<BR>\nMajor Disabilities: [M.fields["ma_dis"]]<BR>\nDetails: [M.fields["ma_dis_d"]]<BR>\n<BR>\nAllergies: [M.fields["alg"]]<BR>\nDetails: [M.fields["alg_d"]]<BR>\n<BR>\nCurrent Diseases: [M.fields["cdi"]] (per disease info placed in log/comment section)<BR>\nDetails: [M.fields["cdi_d"]]<BR>\n<BR>\nImportant Notes:<BR>\n\t[M.fields["notes"]]<BR>\n<BR>\n<CENTER><B>Comments/Log</B></CENTER><BR>"
|
||||
P.info += "<BR>\n<CENTER>" + span_bold("Medical Data") + "</CENTER><BR>\nBlood Type: [M.fields["b_type"]]<BR>\nDNA: [M.fields["b_dna"]]<BR>\n<BR>\nMinor Disabilities: [M.fields["mi_dis"]]<BR>\nDetails: [M.fields["mi_dis_d"]]<BR>\n<BR>\nMajor Disabilities: [M.fields["ma_dis"]]<BR>\nDetails: [M.fields["ma_dis_d"]]<BR>\n<BR>\nAllergies: [M.fields["alg"]]<BR>\nDetails: [M.fields["alg_d"]]<BR>\n<BR>\nCurrent Diseases: [M.fields["cdi"]] (per disease info placed in log/comment section)<BR>\nDetails: [M.fields["cdi_d"]]<BR>\n<BR>\nImportant Notes:<BR>\n\t[M.fields["notes"]]<BR>\n<BR>\n<CENTER>" + span_bold("Comments/Log") + "</CENTER><BR>"
|
||||
var/counter = 1
|
||||
while(M.fields["com_[counter]"])
|
||||
P.info += "[M.fields["com_[counter]"]]<BR>"
|
||||
|
||||
@@ -178,7 +178,7 @@
|
||||
|
||||
/obj/item/cell/device/weapon/recharge/alien/attack_self(var/mob/user)
|
||||
user.remove_from_mob(src)
|
||||
to_chat(user, "<span class='notice'>You swap [src] to 'machinery cell' mode.</span>")
|
||||
to_chat(user, span_notice("You swap [src] to 'machinery cell' mode."))
|
||||
var/obj/item/cell/newcell = new swaps_to(null)
|
||||
user.put_in_active_hand(newcell)
|
||||
var/percentage = charge/maxcharge
|
||||
@@ -192,7 +192,7 @@
|
||||
origin_tech = list(TECH_POWER = 8, TECH_ENGINEERING = 6)
|
||||
icon = 'icons/obj/abductor.dmi'
|
||||
icon_state = "cell"
|
||||
maxcharge = 10000
|
||||
maxcharge = 10000
|
||||
charge_amount = 500
|
||||
self_recharge = TRUE
|
||||
charge_delay = 50
|
||||
@@ -202,7 +202,7 @@
|
||||
|
||||
/obj/item/cell/void/attack_self(var/mob/user)
|
||||
user.remove_from_mob(src)
|
||||
to_chat(user, "<span class='notice'>You swap [src] to 'device cell' mode.</span>")
|
||||
to_chat(user, span_notice("You swap [src] to 'device cell' mode."))
|
||||
var/obj/item/cell/newcell = new swaps_to(null)
|
||||
user.put_in_active_hand(newcell)
|
||||
var/percentage = charge/maxcharge
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
var/obj/item/plastique/C4 = locate() in get_turf(src)
|
||||
|
||||
if(C4)
|
||||
C4.visible_message("<span class='danger'>The current fries \the [C4]!</span>")
|
||||
C4.visible_message(span_danger("The current fries \the [C4]!"))
|
||||
|
||||
if(prob(10))
|
||||
C4.explode(get_turf(src))
|
||||
|
||||
@@ -225,11 +225,11 @@
|
||||
if(H.nutrition <= amount)
|
||||
use(user,H)
|
||||
else
|
||||
to_chat(user,"<span class='warning'>The difference in potential is too great. [user == M ? "You have" : "[H] has"] too much charge to use such a small battery.</span>")
|
||||
to_chat(user,span_warning("The difference in potential is too great. [user == M ? "You have" : "[H] has"] too much charge to use such a small battery."))
|
||||
else if(M == user)
|
||||
to_chat(user,"<span class='warning'>You lick the cell, and your tongue tingles slightly.</span>")
|
||||
to_chat(user,span_warning("You lick the cell, and your tongue tingles slightly."))
|
||||
else
|
||||
to_chat(user,"<span class='warning'>This cell is meant for use on humanoid synthetics only.</span>")
|
||||
to_chat(user,span_warning("This cell is meant for use on humanoid synthetics only."))
|
||||
|
||||
. = ..()
|
||||
|
||||
|
||||
@@ -12,10 +12,10 @@
|
||||
if(istype(W, /obj/item/ammo_casing))
|
||||
var/obj/item/ammo_casing/C = W
|
||||
if(C.caliber != caliber)
|
||||
to_chat(user, "<span class='warning'>[C] does not fit into [src].</span>")
|
||||
to_chat(user, span_warning("[C] does not fit into [src]."))
|
||||
return
|
||||
if(stored_ammo.len >= max_ammo)
|
||||
to_chat(user, "<span class='warning'>[src] is full!</span>")
|
||||
to_chat(user, span_warning("[src] is full!"))
|
||||
return
|
||||
user.remove_from_mob(C)
|
||||
C.forceMove(src)
|
||||
@@ -24,13 +24,13 @@
|
||||
if(istype(W, /obj/item/ammo_magazine))
|
||||
var/obj/item/ammo_magazine/L = W
|
||||
if(L.caliber != caliber)
|
||||
to_chat(user, "<span class='warning'>The ammo in [L] does not fit into [src].</span>")
|
||||
to_chat(user, span_warning("The ammo in [L] does not fit into [src]."))
|
||||
return
|
||||
if(!L.stored_ammo.len)
|
||||
to_chat(user, "<span class='warning'>There's no more ammo [L]!</span>")
|
||||
to_chat(user, span_warning("There's no more ammo [L]!"))
|
||||
return
|
||||
if(stored_ammo.len >= max_ammo)
|
||||
to_chat(user, "<span class='warning'>[src] is full!</span>")
|
||||
to_chat(user, span_warning("[src] is full!"))
|
||||
return
|
||||
while(L.stored_ammo.len && stored_ammo.len < max_ammo)
|
||||
var/obj/item/ammo_casing/AC = L.stored_ammo[1] //select the next casing.
|
||||
|
||||
@@ -33,8 +33,8 @@
|
||||
recharging = 1
|
||||
update_icon()
|
||||
playsound(src,'modular_chomp/sound/weapons/clockwork/clockwork_cock.ogg',25,1)
|
||||
user.visible_message("<span class='notice'>[user] pulls the charging handle on \the [src] and it whirrs to life!</span>", \
|
||||
"<span class='notice'>You pull the charging handle on \the [src] and begin the reloading sequence.</span>")
|
||||
user.visible_message(span_notice("[user] pulls the charging handle on \the [src] and it whirrs to life!"), \
|
||||
span_notice("You pull the charging handle on \the [src] and begin the reloading sequence."))
|
||||
playsound(src,'modular_chomp/sound/weapons/clockwork/cwc_rifle_fabricate.ogg',25,5)
|
||||
while(recharging)
|
||||
if(!do_after(user, 50, src))
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
var/mob/living/L = user
|
||||
if(istype(L))
|
||||
if(L.has_modifier_of_type(/datum/modifier/underwater_stealth))
|
||||
to_chat(user,"<span class='warning'>You cannot use guns whilst hiding underwater!</span>")
|
||||
to_chat(user,span_warning("You cannot use guns whilst hiding underwater!"))
|
||||
return 0
|
||||
else if(L.has_modifier_of_type(/datum/modifier/rednet))
|
||||
to_chat(user,"<span class='warning'>Your gun refuses to fire!</span>")
|
||||
to_chat(user,span_warning("Your gun refuses to fire!"))
|
||||
return 0
|
||||
else if(L.has_modifier_of_type(/datum/modifier/trait/thickdigits))
|
||||
to_chat(user,"<span class='warning'>Your hands can't pull the trigger!!</span>")
|
||||
to_chat(user,span_warning("Your hands can't pull the trigger!!"))
|
||||
return 0
|
||||
return ..()
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
|
||||
/obj/item/projectile/bullet/magnetic/supercannon/on_hit(var/atom/target, var/blocked = 0, var/def_zone = null)
|
||||
if(istype(target,/turf/simulated/wall) || istype(target,/mob/living))
|
||||
target.visible_message("<span class='danger'>The [src] burns a perfect hole through \the [target] with a blinding flash!</span>")
|
||||
target.visible_message(span_danger("The [src] burns a perfect hole through \the [target] with a blinding flash!"))
|
||||
playsound(target, 'sound/effects/teleport.ogg', 40, 0)
|
||||
return ..(target, blocked, def_zone)
|
||||
|
||||
|
||||
@@ -92,7 +92,7 @@
|
||||
|
||||
/obj/item/gun/energy/elementalray/emag_act(var/remaining_charges, var/mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>You short circuit the internal locking mechanisms of \the [src]!</span>")
|
||||
to_chat(user, span_notice("You short circuit the internal locking mechanisms of \the [src]!"))
|
||||
firemodes = list(
|
||||
list(mode_name="fire", burst=1, fire_delay=15, projectile_type=/obj/item/projectile/bullet/flamegun, charge_cost = 160),
|
||||
list(mode_name="lighting", burst=1, fire_delay=20, projectile_type=/obj/item/projectile/beam/lightingsurge, charge_cost = 480),
|
||||
@@ -132,8 +132,8 @@
|
||||
desc = "You are covered in acid"
|
||||
mob_overlay_state = "poisoned"
|
||||
|
||||
on_created_text = "<span class='warning'>You are covered in muck...</span>"
|
||||
on_expired_text = "<span class='notice'>You are no longer covered in muck.</span>"
|
||||
on_created_text = span_warning("You are covered in muck...")
|
||||
on_expired_text = span_notice("You are no longer covered in muck.")
|
||||
stacks = MODIFIER_STACK_ALLOWED
|
||||
|
||||
slowdown = 0.2
|
||||
@@ -187,4 +187,4 @@
|
||||
submunition_spread_max = 1200
|
||||
submunition_spread_min = 200
|
||||
submunitions = list(/obj/item/projectile/energy/redlighting = 3)
|
||||
hud_state = "laser_sniper"
|
||||
hud_state = "laser_sniper"
|
||||
|
||||
@@ -151,32 +151,32 @@
|
||||
/obj/machinery/chemical_synthesizer/proc/add_cartridge(obj/item/reagent_containers/chem_disp_cartridge/C, mob/user)
|
||||
if(!panel_open)
|
||||
if(user)
|
||||
to_chat(user, "<span class='warning'>\The panel is locked!</span>")
|
||||
to_chat(user, span_warning("\The panel is locked!"))
|
||||
return
|
||||
|
||||
if(!istype(C))
|
||||
if(user)
|
||||
to_chat(user, "<span class='warning'>\The [C] will not fit in \the [src]!</span>")
|
||||
to_chat(user, span_warning("\The [C] will not fit in \the [src]!"))
|
||||
return
|
||||
|
||||
if(cartridges.len >= SYNTHESIZER_MAX_CARTRIDGES)
|
||||
if(user)
|
||||
to_chat(user, "<span class='warning'>\The [src] does not have any slots open for \the [C] to fit into!</span>")
|
||||
to_chat(user, span_warning("\The [src] does not have any slots open for \the [C] to fit into!"))
|
||||
return
|
||||
|
||||
if(!C.label)
|
||||
if(user)
|
||||
to_chat(user, "<span class='warning'>\The [C] does not have a label!</span>")
|
||||
to_chat(user, span_warning("\The [C] does not have a label!"))
|
||||
return
|
||||
|
||||
if(cartridges[C.label])
|
||||
if(user)
|
||||
to_chat(user, "<span class='warning'>\The [src] already contains a cartridge with that label!</span>")
|
||||
to_chat(user, span_warning("\The [src] already contains a cartridge with that label!"))
|
||||
return
|
||||
|
||||
if(user)
|
||||
user.drop_from_inventory(C)
|
||||
to_chat(user, "<span class='notice'>You add \the [C] to \the [src].</span>")
|
||||
to_chat(user, span_notice("You add \the [C] to \the [src]."))
|
||||
|
||||
C.loc = src
|
||||
cartridges[C.label] = C
|
||||
@@ -204,7 +204,7 @@
|
||||
return
|
||||
var/obj/item/reagent_containers/chem_disp_cartridge/C = remove_cartridge(label)
|
||||
if(C)
|
||||
to_chat(user, "<span class='notice'>You remove \the [C] from \the [src].</span>")
|
||||
to_chat(user, span_notice("You remove \the [C] from \the [src]."))
|
||||
C.loc = loc
|
||||
playsound(src, W.usesound, 50, 1)
|
||||
return
|
||||
@@ -212,22 +212,22 @@
|
||||
// We don't need a busy check here as the catalyst slot must be occupied for the machine to function.
|
||||
if(istype(W, /obj/item/reagent_containers/glass))
|
||||
if(catalyst)
|
||||
to_chat(user, "<span class='warning'>There is already \a [catalyst] in \the [src] catalyst slot!</span>")
|
||||
to_chat(user, span_warning("There is already \a [catalyst] in \the [src] catalyst slot!"))
|
||||
return
|
||||
if(stat & (BROKEN|NOPOWER))
|
||||
to_chat(user, "<span class='warning'>The clamp will not secure the catalyst while the machine is down!</span>")
|
||||
to_chat(user, span_warning("The clamp will not secure the catalyst while the machine is down!"))
|
||||
return
|
||||
|
||||
var/obj/item/reagent_containers/RC = W
|
||||
|
||||
if(!RC.is_open_container())
|
||||
to_chat(user, "<span class='warning'>You don't see how \the [src] could extract reagents from \the [RC].</span>")
|
||||
to_chat(user, span_warning("You don't see how \the [src] could extract reagents from \the [RC]."))
|
||||
return
|
||||
|
||||
catalyst = RC
|
||||
user.drop_from_inventory(RC)
|
||||
RC.loc = src
|
||||
to_chat(user, "<span class='notice'>You set \the [RC] on \the [src].</span>")
|
||||
to_chat(user, span_notice("You set \the [RC] on \the [src]."))
|
||||
update_icon()
|
||||
return
|
||||
|
||||
@@ -379,7 +379,7 @@
|
||||
if("add_recipe")
|
||||
// Allows the user to add a recipe. Kinda vital for this machine to do anything useful.
|
||||
if(recipes.len >= SYNTHESIZER_MAX_RECIPES)
|
||||
to_chat(usr, "<span class='warning'>Maximum recipes exceeded!</span>")
|
||||
to_chat(usr, span_warning("Maximum recipes exceeded!"))
|
||||
return
|
||||
if(!production_mode)
|
||||
babystep_recipe(usr)
|
||||
@@ -394,7 +394,7 @@
|
||||
if(index in recipes)
|
||||
recipes.Remove(list(index)) // Fuck off Byond.
|
||||
else
|
||||
to_chat(usr, "<span class='warning'>You cannot remove recipes while the machine is running!</span>")
|
||||
to_chat(usr, span_warning("You cannot remove recipes while the machine is running!"))
|
||||
if("exp_recipe")
|
||||
// Allows the user to export recipes to chat formatted for easy importing.
|
||||
var/index = params["exp_index"]
|
||||
@@ -402,7 +402,7 @@
|
||||
if("add_queue")
|
||||
// Adds recipes to the queue.
|
||||
if(queue.len >= SYNTHESIZER_MAX_QUEUE)
|
||||
to_chat(usr, "<span class='warning'>Synthesizer queue full!</span>")
|
||||
to_chat(usr, span_warning("Synthesizer queue full!"))
|
||||
return
|
||||
var/index = params["qa_index"]
|
||||
// If you forgot, this is a string returned by the user pressing the "add to queue" button on a recipe.
|
||||
@@ -623,13 +623,13 @@
|
||||
|
||||
// If we're missing a cartridge somehow or lack space for the next step, stall. It's now up to the chemist to fix this.
|
||||
if(!cartridges[label])
|
||||
visible_message("<span class='warning'>The [src] beeps loudly, flashing a 'cartridge missing' error!</span>", "You hear loud beeping!")
|
||||
visible_message(span_warning("The [src] beeps loudly, flashing a 'cartridge missing' error!"), "You hear loud beeping!")
|
||||
playsound(src, 'sound/weapons/smg_empty_alarm.ogg', 40)
|
||||
stall()
|
||||
return
|
||||
|
||||
if(quantity > reagents.get_free_space())
|
||||
visible_message("<span class='warning'>The [src] beeps loudly, flashing a 'maximum volume exceeded' error!</span>", "You hear loud beeping!")
|
||||
visible_message(span_warning("The [src] beeps loudly, flashing a 'maximum volume exceeded' error!"), "You hear loud beeping!")
|
||||
playsound(src, 'sound/weapons/smg_empty_alarm.ogg', 40)
|
||||
stall()
|
||||
return
|
||||
@@ -637,7 +637,7 @@
|
||||
// If there isn't enough reagent left for this step, try again in a minute.
|
||||
var/obj/item/reagent_containers/chem_disp_cartridge/C = cartridges[label]
|
||||
if(quantity > C.reagents.total_volume)
|
||||
visible_message("<span class='notice'>The [src] flashes an 'insufficient reagents' warning.</span>")
|
||||
visible_message(span_notice("The [src] flashes an 'insufficient reagents' warning."))
|
||||
addtimer(CALLBACK(src, PROC_REF(perform_reaction), r_id, step), 1 MINUTE)
|
||||
return
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
name = "Eletrical Surge"
|
||||
desc = "You are filled with an overwhelming energy."
|
||||
|
||||
on_created_text = "<span class='critical'>You feel an overwhelimg energy surge through your body!</span>"
|
||||
on_expired_text = "<span class='notice'>The surge subsides.</span>"
|
||||
on_created_text = span_critical("You feel an overwhelimg energy surge through your body!")
|
||||
on_expired_text = span_notice("The surge subsides.")
|
||||
stacks = MODIFIER_STACK_EXTEND
|
||||
evasion = 20
|
||||
accuracy = -30
|
||||
@@ -14,8 +14,8 @@
|
||||
name = "Healing Tide"
|
||||
desc = "You are filled with an overwhelming energy."
|
||||
|
||||
on_created_text = "<span class='critical'>Your body begins to focus on recovering!</span>"
|
||||
on_expired_text = "<span class='notice'>The healing subsides.</span>"
|
||||
on_created_text = span_critical("Your body begins to focus on recovering!")
|
||||
on_expired_text = span_notice("The healing subsides.")
|
||||
stacks = MODIFIER_STACK_EXTEND
|
||||
|
||||
metabolism_percent = 0.5
|
||||
@@ -25,8 +25,8 @@
|
||||
name = "Radiation Hide"
|
||||
desc = "Your body defensivly warps."
|
||||
|
||||
on_created_text = "<span class='critical'>Your body strangly mutates!</span>"
|
||||
on_expired_text = "<span class='notice'>Your body returns to normal.</span>"
|
||||
on_created_text = span_critical("Your body strangly mutates!")
|
||||
on_expired_text = span_notice("Your body returns to normal.")
|
||||
stacks = MODIFIER_STACK_EXTEND
|
||||
|
||||
icon_scale_x_percent = 1.2
|
||||
@@ -42,8 +42,8 @@
|
||||
|
||||
client_color = "#808080" //Za worldo
|
||||
|
||||
on_created_text = "<span class='critical'>The world arounds you slows down!</span>"
|
||||
on_expired_text = "<span class='notice'>The world returns to normal.</span>"
|
||||
on_created_text = span_critical("The world arounds you slows down!")
|
||||
on_expired_text = span_notice("The world returns to normal.")
|
||||
stacks = MODIFIER_STACK_EXTEND
|
||||
|
||||
slowdown = -3
|
||||
@@ -57,10 +57,10 @@
|
||||
name = "Protective Numbing"
|
||||
desc = "Your senses feel everything."
|
||||
|
||||
on_created_text = "<span class='critical'>Your body becomes numb!</span>"
|
||||
on_expired_text = "<span class='notice'>Sensation returns to your body.</span>"
|
||||
on_created_text = span_critical("Your body becomes numb!")
|
||||
on_expired_text = span_notice("Sensation returns to your body.")
|
||||
stacks = MODIFIER_STACK_EXTEND
|
||||
|
||||
heat_protection = 1
|
||||
cold_protection = 1
|
||||
attack_speed_percent = 1.25
|
||||
attack_speed_percent = 1.25
|
||||
|
||||
@@ -50,8 +50,8 @@
|
||||
//set not to bug them because the chem is activating
|
||||
M.gender_change_cooldown = 1
|
||||
M.visible_message(
|
||||
"<span class='notice'>[M] suddenly twitches as some of their features seem to contort and reshape.</span>",
|
||||
"<span class='notice'>You lose focus as warmth spreads throughout your chest and abdomen.</span>"
|
||||
span_notice("[M] suddenly twitches as some of their features seem to contort and reshape."),
|
||||
span_notice("You lose focus as warmth spreads throughout your chest and abdomen.")
|
||||
)
|
||||
//wait 30 seconds, growth takes time yo
|
||||
spawn(300)
|
||||
@@ -61,7 +61,7 @@
|
||||
if (alert(M,"This chemical will change your gender, proceed?", "Warning", "Yes", "No") == "Yes")
|
||||
M.change_gender_identity(gender_change)
|
||||
M.change_gender(gender_change)
|
||||
M << "<span class='warning'>You feel like a new person.</span>" //success
|
||||
M << span_warning("You feel like a new person.") //success
|
||||
|
||||
//Chemist expansion
|
||||
//deathblood
|
||||
@@ -345,8 +345,8 @@
|
||||
name = "liquidhealer"
|
||||
desc = "You are filled with an overwhelming healing."
|
||||
|
||||
on_created_text = "<span class='critical'>You feel your body's natural healing quick into overdrive!</span>"
|
||||
on_expired_text = "<span class='notice'>Your body returns to normal.</span>"
|
||||
on_created_text = span_critical("You feel your body's natural healing quick into overdrive!")
|
||||
on_expired_text = span_notice("Your body returns to normal.")
|
||||
|
||||
incoming_healing_percent = 1.2
|
||||
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
var/mob/living/L = A
|
||||
if(!emagged && ishuman(L) && L.mind)
|
||||
playsound(src, 'sound/machines/warning-buzzer.ogg', 50, 0, 0)
|
||||
visible_message("<span class='warning'>POSSIBLE CREW MEMBER DETECTED! EMERGENCY STOP ENGAGED!</span>")
|
||||
visible_message(span_warning("POSSIBLE CREW MEMBER DETECTED! EMERGENCY STOP ENGAGED!"))
|
||||
global_announcer.autosay("Possible crew member detected in grinder feed. Emergency Stop Protocols engaged!", "Recycling Grinder Alert", "Supply")
|
||||
operating = FALSE
|
||||
update()
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.get_species() == SPECIES_SHADEKIN && (H.ability_flags & AB_PHASE_SHIFTED))
|
||||
var/turf/T = get_turf(src)
|
||||
visible_message("<span class='notice'>[src] fizzles and disappears as something interacts with it!</span>")
|
||||
visible_message(span_notice("[src] fizzles and disappears as something interacts with it!"))
|
||||
playsound(src, pick('sound/effects/Glassbr1.ogg', 'sound/effects/Glassbr2.ogg', 'sound/effects/Glassbr3.ogg'), 50, 1)
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread()
|
||||
s.set_up(5, 1, T)
|
||||
|
||||
@@ -7,12 +7,12 @@
|
||||
set name = "Mentorhelp"
|
||||
|
||||
if(say_disabled) //This is here to try to identify lag problems
|
||||
to_chat(usr, "<span class='danger'>Speech is currently admin-disabled.</span>")
|
||||
to_chat(usr, span_danger("Speech is currently admin-disabled."))
|
||||
return
|
||||
|
||||
//handle muting and automuting
|
||||
if(prefs.muted & MUTE_ADMINHELP)
|
||||
to_chat(src, "<span class='danger'>Error: Mentor-PM: You cannot send adminhelps (Muted).</span>")
|
||||
to_chat(src, span_danger("Error: Mentor-PM: You cannot send adminhelps (Muted)."))
|
||||
return
|
||||
if(handle_spam_prevention(msg,MUTE_ADMINHELP))
|
||||
return
|
||||
@@ -34,10 +34,10 @@
|
||||
if(current_ticket)
|
||||
log_admin("Mentorhelp: [key_name(src)]: [msg]")
|
||||
current_ticket.MessageNoRecipient(msg)
|
||||
to_chat(usr, "<span class='adminnotice'><span class='mentor'>Mentor-PM to-<b>Mentors</b>: [msg]</span></span>")
|
||||
to_chat(usr, span_adminnotice(span_mentor("Mentor-PM to-" + span_bold("Mentors") + ": [msg]")))
|
||||
return
|
||||
else
|
||||
to_chat(usr, "<span class='warning'>Ticket not found, creating new one...</span>")
|
||||
to_chat(usr, span_warning("Ticket not found, creating new one..."))
|
||||
else
|
||||
current_ticket.AddInteraction("[usr.ckey] opened a new ticket.")
|
||||
current_ticket.Resolve()
|
||||
@@ -62,7 +62,7 @@
|
||||
GLOB.tickets.BrowseTickets(browse_to)
|
||||
|
||||
/proc/message_mentors(var/msg)
|
||||
msg = "<span class='mentor_channel'><span class='prefix'>Mentor:</span> <span class=\"message\">[msg]</span></span>"
|
||||
msg = span_mentor_channel(span_prefix("Mentor:") + span_message("[msg]"))
|
||||
|
||||
for(var/client/C in GLOB.mentors)
|
||||
to_chat(C, msg)
|
||||
@@ -78,12 +78,12 @@
|
||||
set name = "Adminhelp"
|
||||
|
||||
if(say_disabled) //This is here to try to identify lag problems
|
||||
to_chat(usr, "<span class='danger'>Speech is currently admin-disabled.</span>")
|
||||
to_chat(usr, span_danger("Speech is currently admin-disabled."))
|
||||
return
|
||||
|
||||
//handle muting and automuting
|
||||
if(prefs.muted & MUTE_ADMINHELP)
|
||||
to_chat(src, "<span class='danger'>Error: Admin-PM: You cannot send adminhelps (Muted).</span>")
|
||||
to_chat(src, span_danger("Error: Admin-PM: You cannot send adminhelps (Muted)."))
|
||||
return
|
||||
if(handle_spam_prevention(msg,MUTE_ADMINHELP))
|
||||
return
|
||||
@@ -104,10 +104,10 @@
|
||||
if(input == "Yes")
|
||||
if(current_ticket)
|
||||
current_ticket.MessageNoRecipient(msg)
|
||||
to_chat(usr, "<span class='adminnotice'>PM to-<b>Admins</b>: [msg]</span>")
|
||||
to_chat(usr, span_adminnotice("PM to-" + span_bold("Admins") + ": [msg]"))
|
||||
return
|
||||
else
|
||||
to_chat(usr, "<span class='warning'>Ticket not found, creating new one...</span>")
|
||||
to_chat(usr, span_warning("Ticket not found, creating new one..."))
|
||||
else
|
||||
current_ticket.AddInteraction("[key_name_admin(usr)] opened a new ticket.")
|
||||
current_ticket.Close()
|
||||
@@ -162,14 +162,14 @@
|
||||
|
||||
//handle muting and automuting
|
||||
if(prefs.muted & MUTE_ADMINHELP)
|
||||
to_chat(usr, "<span class='danger'>Error: You cannot request spice (muted from adminhelps).</span>")
|
||||
to_chat(usr, span_danger("Error: You cannot request spice (muted from adminhelps)."))
|
||||
return
|
||||
|
||||
if(tgui_alert(usr, "Are you sure you want to request the admins spice things up for you? You accept the consequences if you do.","Spicy!",list("Yes","No")) == "Yes")
|
||||
message_admins("[ADMIN_FULLMONTY(usr)] has requested the round be spiced up a little.")
|
||||
to_chat(usr, "<span class='notice'>You have requested some more spice in your round.</span>")
|
||||
to_chat(usr, span_notice("You have requested some more spice in your round."))
|
||||
else
|
||||
to_chat(usr, "<span class='notice'>Spice request cancelled.</span>")
|
||||
to_chat(usr, span_notice("Spice request cancelled."))
|
||||
return
|
||||
|
||||
//if they requested spice, then remove spice verb temporarily to prevent spamming
|
||||
|
||||
@@ -96,7 +96,7 @@ GLOBAL_DATUM_INIT(tickets, /datum/tickets, new)
|
||||
var/list/dat = list("<html><head><title>[title]</title></head>")
|
||||
dat += "<A HREF='?_src_=holder;[HrefToken()];ahelp_tickets=[state]'>Refresh</A><br><br>"
|
||||
for(var/datum/ticket/T as anything in l2b)
|
||||
dat += "<span class='adminnotice'><span class='adminhelp'>Ticket #[T.id]</span>: <A HREF='?_src_=holder;ahelp=\ref[T];[HrefToken()];ahelp_action=ticket'>[T.initiator_key_name]: [T.name]</A></span><br>"
|
||||
dat += span_adminnotice(span_adminhelp("Ticket #[T.id]") + ": <A HREF='?_src_=holder;ahelp=\ref[T];[HrefToken()];ahelp_action=ticket'>[T.initiator_key_name]: [T.name]</A>") + "<br>"
|
||||
|
||||
usr << browse(dat.Join(), "window=ahelp_list[state];size=600x480")
|
||||
|
||||
@@ -223,7 +223,7 @@ GLOBAL_DATUM_INIT(tickets, /datum/tickets, new)
|
||||
log_admin("Mentorhelp: [key_name(C)]: [msg]")
|
||||
MessageNoRecipient(msg)
|
||||
//show it to the person adminhelping too
|
||||
to_chat(C, "<i><span class='mentor'>Mentor-PM to-<b>Mentors</b>: [name]</span></i>")
|
||||
to_chat(C, span_mentor(span_italics("Mentor-PM to-" + span_bold("Mentors") + ": [name]"))
|
||||
GLOB.mhelp_tickets.active_tickets += src */
|
||||
|
||||
/**
|
||||
@@ -266,19 +266,19 @@ GLOBAL_DATUM_INIT(tickets, /datum/tickets, new)
|
||||
_interactions = list()
|
||||
|
||||
if(is_bwoink)
|
||||
AddInteraction("<font color='blue'>[key_name_admin(usr)] PM'd [LinkedReplyName()]</font>")
|
||||
AddInteraction(span_blue("[key_name_admin(usr)] PM'd [LinkedReplyName()]"))
|
||||
message_admins(span_blue("Ticket [TicketHref("#[id]")] created"))
|
||||
else
|
||||
MessageNoRecipient(parsed_message)
|
||||
send2adminchat() //VOREStation Add
|
||||
//show it to the person adminhelping too
|
||||
to_chat(C, "<span class='adminnotice'>PM to-<b>Admins</b>: [name]</span>")
|
||||
to_chat(C, span_adminnotice("PM to-" + span_bold("Admins") + ": [name]"))
|
||||
|
||||
//send it to irc if nobody is on and tell us how many were on
|
||||
var/admin_number_present = send2irc_adminless_only(initiator_ckey, name)
|
||||
log_admin("Ticket #[id]: [key_name(initiator)]: [name] - heard by [admin_number_present] non-AFK admins who have +BAN.")
|
||||
if(admin_number_present <= 0)
|
||||
to_chat(C, "<span class='notice'>No active admins are online, your adminhelp was sent to the admin discord.</span>") //VOREStation Edit
|
||||
to_chat(C, span_notice("No active admins are online, your adminhelp was sent to the admin discord.")) //VOREStation Edit
|
||||
send2adminchat() //VOREStation Add
|
||||
//YW EDIT START
|
||||
var/list/adm = get_admin_counts()
|
||||
@@ -362,16 +362,16 @@ GLOBAL_DATUM_INIT(tickets, /datum/tickets, new)
|
||||
return "<A HREF='?_src_=holder;ticket=[ref_src];[HrefToken()];ticket_action=[action]'>[msg]</A>"
|
||||
|
||||
/*
|
||||
var/chat_msg = "<span class='notice'>(<A HREF='?_src_=mentorholder;mhelp=[ref_src];[HrefToken()];mhelp_action=escalate'>ESCALATE</A>) Ticket [TicketHref("#[id]", ref_src)]<b>: [LinkedReplyName(ref_src)]:</b> [msg]</span>"
|
||||
var/chat_msg = span_notice("(<A HREF='?_src_=mentorholder;mhelp=[ref_src];[HrefToken()];mhelp_action=escalate'>ESCALATE</A>) Ticket [TicketHref("#[id]", ref_src)]" + span_bold(": [LinkedReplyName(ref_src)]:") + " [msg]")
|
||||
*/
|
||||
|
||||
//message from the initiator without a target, all admins will see this
|
||||
//won't bug irc
|
||||
/datum/ticket/proc/MessageNoRecipient(msg)
|
||||
var/ref_src = "\ref[src]"
|
||||
var/chat_msg = "<span class='adminnotice'><span class='adminhelp'>Ticket [TicketHref("#[id]", ref_src)]</span><b>: [LinkedReplyName(ref_src)] [FullMonty(ref_src)]:</b> [msg]</span>"
|
||||
var/chat_msg = span_admin_pm_notice(span_adminhelp("Ticket [TicketHref("#[id]", ref_src)]") + span_bold(": [LinkedReplyName(ref_src)] [FullMonty(ref_src)]:") + msg)
|
||||
|
||||
AddInteraction("<font color='red'>[LinkedReplyName(ref_src)]: [msg]</font>")
|
||||
AddInteraction(span_red("[LinkedReplyName(ref_src)]: [msg]"))
|
||||
//send this msg to all admins
|
||||
|
||||
if(level == 1)
|
||||
@@ -395,10 +395,10 @@ GLOBAL_DATUM_INIT(tickets, /datum/tickets, new)
|
||||
switch(state)
|
||||
if(AHELP_RESOLVED)
|
||||
feedback_dec("mhelp_resolve")
|
||||
AddInteraction("<font color='purple'>Reopened by [usr.ckey]</font>")
|
||||
AddInteraction(span_purple("Reopened by [usr.ckey]"))
|
||||
if(initiator)
|
||||
to_chat(initiator, "<span class='filter_adminlog'><font color='purple'>Ticket [TicketHref("#[id]")] was reopened by [usr.ckey].</font></span>")
|
||||
var/msg = "<span class='adminhelp'>Ticket [TicketHref("#[id]")] reopened by [usr.ckey].</span>"
|
||||
to_chat(initiator, span_filter_adminlog(span_purple("Ticket [TicketHref("#[id]")] was reopened by [usr.ckey].")))
|
||||
var/msg = span_adminhelp("Ticket [TicketHref("#[id]")] reopened by [usr.ckey].")
|
||||
message_mentors(msg)
|
||||
log_admin(msg)
|
||||
*/
|
||||
@@ -406,11 +406,11 @@ GLOBAL_DATUM_INIT(tickets, /datum/tickets, new)
|
||||
//Reopen a closed ticket
|
||||
/datum/ticket/proc/Reopen()
|
||||
if(state == AHELP_ACTIVE)
|
||||
to_chat(usr, "<span class='warning'>This ticket is already open.</span>")
|
||||
to_chat(usr, span_warning("This ticket is already open."))
|
||||
return
|
||||
|
||||
if(GLOB.tickets.CKey2ActiveTicket(initiator_ckey))
|
||||
to_chat(usr, "<span class='warning'>This user already has an active ticket, cannot reopen this one.</span>")
|
||||
to_chat(usr, span_warning("This user already has an active ticket, cannot reopen this one."))
|
||||
return
|
||||
|
||||
statclick = new(null, src)
|
||||
@@ -427,10 +427,10 @@ GLOBAL_DATUM_INIT(tickets, /datum/tickets, new)
|
||||
if(initiator)
|
||||
initiator.current_ticket = src
|
||||
|
||||
AddInteraction("<font color='purple'>Reopened by [key_name_admin(usr)]</font>")
|
||||
AddInteraction(span_purple("Reopened by [key_name_admin(usr)]"))
|
||||
if(initiator)
|
||||
to_chat(initiator, "<span class='filter_adminlog'>[span_purple("Ticket [TicketHref("#[id]")] was reopened by [key_name(usr,FALSE,FALSE)].")]</span>")
|
||||
var/msg = "<span class='adminhelp'>Ticket [TicketHref("#[id]")] reopened by [key_name_admin(usr)].</span>"
|
||||
to_chat(initiator, span_filter_adminlog("[span_purple("Ticket [TicketHref("#[id]")] was reopened by [key_name(usr,FALSE,FALSE)].")]"))
|
||||
var/msg = span_adminhelp("Ticket [TicketHref("#[id]")] reopened by [key_name_admin(usr)].")
|
||||
message_admins(msg)
|
||||
log_admin(msg)
|
||||
feedback_inc("ticket_reopen")
|
||||
@@ -461,9 +461,9 @@ GLOBAL_DATUM_INIT(tickets, /datum/tickets, new)
|
||||
RemoveActive()
|
||||
state = AHELP_CLOSED
|
||||
GLOB.tickets.ListInsert(src)
|
||||
AddInteraction("<span class='filter_adminlog'><font color='red'>Closed by [key_name_admin(usr)].</font></span>")
|
||||
AddInteraction(span_filter_adminlog(span_red("Closed by [key_name_admin(usr)].")))
|
||||
if(initiator)
|
||||
to_chat(initiator, "<span class='filter_adminlog'>[span_red("Ticket [TicketHref("#[id]")] was closed by [key_name(usr,FALSE,FALSE)].")]</span>")
|
||||
to_chat(initiator, span_filter_adminlog("[span_red("Ticket [TicketHref("#[id]")] was closed by [key_name(usr,FALSE,FALSE)].")]"))
|
||||
if(!silent)
|
||||
feedback_inc("ahelp_close")
|
||||
var/msg = "Ticket [TicketHref("#[id]")] closed by [key_name_admin(usr)]."
|
||||
@@ -487,9 +487,9 @@ GLOBAL_DATUM_INIT(tickets, /datum/tickets, new)
|
||||
state = AHELP_RESOLVED
|
||||
GLOB.tickets.ListInsert(src)
|
||||
|
||||
AddInteraction("<span class='filter_adminlog'><font color='green'>Resolved by [key_name_admin(usr)].</font></span>")
|
||||
AddInteraction(span_filter_adminlog(span_green("Resolved by [key_name_admin(usr)].")))
|
||||
if(initiator)
|
||||
to_chat(initiator, "<span class='filter_adminlog'>[span_green("Ticket [TicketHref("#[id]")] was marked resolved by [key_name(usr,FALSE,FALSE)].")]</span>")
|
||||
to_chat(initiator, span_filter_adminlog("[span_green("Ticket [TicketHref("#[id]")] was marked resolved by [key_name(usr,FALSE,FALSE)].")]"))
|
||||
if(!silent)
|
||||
feedback_inc("ticket_resolve")
|
||||
var/msg = "Ticket [TicketHref("#[id]")] resolved by [key_name_admin(usr)]"
|
||||
@@ -519,9 +519,9 @@ GLOBAL_DATUM_INIT(tickets, /datum/tickets, new)
|
||||
if(initiator.prefs?.read_preference(/datum/preference/toggle/holder/play_adminhelp_ping))
|
||||
initiator << 'sound/effects/adminhelp.ogg'
|
||||
|
||||
to_chat(initiator, "<span class='filter_pm'>[span_red("<font size='4'><b>- AdminHelp Rejected! -</b></font>")]<br>\
|
||||
[span_red("<b>Your admin help was rejected.</b>")]<br>\
|
||||
Please try to be calm, clear, and descriptive in admin helps, do not assume the admin has seen any related events, and clearly state the names of anybody you are reporting.</span>")
|
||||
to_chat(initiator, span_filter_pm("[span_red(span_huge(span_bold("- AdminHelp Rejected! -")))]<br>\
|
||||
[span_red(span_bold("Your admin help was rejected."))]<br>\
|
||||
Please try to be calm, clear, and descriptive in admin helps, do not assume the admin has seen any related events, and clearly state the names of anybody you are reporting."))
|
||||
|
||||
feedback_inc("ahelp_reject")
|
||||
var/msg = "Ticket [TicketHref("#[id]")] rejected by [key_name_admin(usr)]"
|
||||
@@ -543,12 +543,12 @@ GLOBAL_DATUM_INIT(tickets, /datum/tickets, new)
|
||||
if(state != AHELP_ACTIVE)
|
||||
return
|
||||
|
||||
var/msg = "<span class='filter_pm'>[span_red("<font size='4'><b>- AdminHelp marked as IC issue! -</b></font>")]<br>"
|
||||
msg += "[span_red("<b>This is something that can be solved ICly, and does not currently require staff intervention.</b>")]<br>"
|
||||
msg += "[span_red("Your AdminHelp may also be unanswerable due to ongoing events.")]</span>"
|
||||
var/msg = "[span_red(span_huge(span_bold("- AdminHelp marked as IC issue! -")))]<br>"
|
||||
msg += "[span_red(span_bold("This is something that can be solved ICly, and does not currently require staff intervention."))]<br>"
|
||||
msg += "[span_red("Your AdminHelp may also be unanswerable due to ongoing events.")]"
|
||||
|
||||
if(initiator)
|
||||
to_chat(initiator, msg)
|
||||
to_chat(initiator, span_filter_pm(msg))
|
||||
|
||||
feedback_inc("ahelp_icissue")
|
||||
msg = "Ticket [TicketHref("#[id]")] marked as IC by [key_name_admin(usr)]"
|
||||
@@ -608,14 +608,14 @@ GLOBAL_DATUM_INIT(tickets, /datum/tickets, new)
|
||||
if(tgui_alert(usr, "Really escalate this ticket to admins? No mentors will ever be able to interact with it again if you do.","Escalate",list("Yes","No")) != "Yes")
|
||||
return
|
||||
if (src.initiator == null) // You can't escalate a mentorhelp of someone who's logged out because it won't create the adminhelp properly
|
||||
to_chat(usr, "<span class='pm warning'>Error: client not found, unable to escalate.</span>")
|
||||
to_chat(usr, span_mentor_pm_warning("Error: client not found, unable to escalate."))
|
||||
return
|
||||
|
||||
level = level - 1
|
||||
|
||||
message_mentors("[usr.ckey] escalated Ticket [TicketHref("#[id]")]")
|
||||
log_admin("[key_name(usr)] escalated ticket [src.name]")
|
||||
to_chat(src.initiator, "<span class='mentor'>[usr.ckey] escalated your ticket to admins.</span>")
|
||||
to_chat(src.initiator, span_mentor("[usr.ckey] escalated your ticket to admins."))
|
||||
|
||||
/datum/ticket/proc/Context(ref_src)
|
||||
if(!ref_src)
|
||||
@@ -800,7 +800,8 @@ GLOBAL_DATUM_INIT(tickets, /datum/tickets, new)
|
||||
if(found.mind && found.mind.special_role)
|
||||
is_antag = 1
|
||||
founds += "Name: [found.name]([found.real_name]) Ckey: [found.ckey] [is_antag ? "(Antag)" : null] "
|
||||
msg += "[original_word]<font size='1' color='[is_antag ? "red" : "black"]'>(<A HREF='?_src_=holder;[HrefToken()];adminmoreinfo=\ref[found]'>?</A>|<A HREF='?_src_=holder;[HrefToken()];adminplayerobservefollow=\ref[found]'>F</A>)</font> "
|
||||
var/textentry = "(<A HREF='?_src_=holder;[HrefToken()];adminmoreinfo=\ref[found]'>?</A>|<A HREF='?_src_=holder;[HrefToken()];adminplayerobservefollow=\ref[found]'>F</A> "
|
||||
msg += "[original_word]" + span_small((is_antag ? span_red(textentry) : span_black(textentry)))
|
||||
continue
|
||||
msg += "[original_word] "
|
||||
if(irc)
|
||||
|
||||
@@ -118,12 +118,12 @@
|
||||
player = C
|
||||
|
||||
if(!player)
|
||||
to_chat(usr, "<span class='warning'>Ckey ([ckey]) not online.</span>")
|
||||
to_chat(usr, span_warning("Ckey ([ckey]) not online."))
|
||||
return
|
||||
|
||||
var/ticket_text = tgui_input_text(usr, "What should the initial text be?", "New Ticket")
|
||||
if(!ticket_text)
|
||||
to_chat(usr, "<span class='warning'>Ticket message cannot be empty.</span>")
|
||||
to_chat(usr, span_warning("Ticket message cannot be empty."))
|
||||
return
|
||||
|
||||
var/level = tgui_alert(usr, "Is this ticket Admin-Level or Mentor-Level?", "Ticket Level", list("Admin", "Mentor"))
|
||||
@@ -138,10 +138,10 @@
|
||||
if(input == "Yes")
|
||||
if(player.current_ticket)
|
||||
player.current_ticket.MessageNoRecipient(ticket_text)
|
||||
to_chat(usr, "<span class='adminnotice'>PM to-<b>Admins</b>: [ticket_text]</span>")
|
||||
to_chat(usr, span_adminnotice("PM to-" + span_bold("Admins") + ": [ticket_text]"))
|
||||
return
|
||||
else
|
||||
to_chat(usr, "<span class='warning'>Ticket not found, creating new one...</span>")
|
||||
to_chat(usr, span_warning("Ticket not found, creating new one..."))
|
||||
else
|
||||
player.current_ticket.AddInteraction("[key_name_admin(usr)] opened a new ticket.")
|
||||
player.current_ticket.Close()
|
||||
@@ -268,9 +268,9 @@
|
||||
dat += "<b>State: "
|
||||
switch(state)
|
||||
if(AHELP_ACTIVE)
|
||||
dat += "<font color='red'>OPEN</font>"
|
||||
dat += span_red("OPEN")
|
||||
if(AHELP_RESOLVED)
|
||||
dat += "<font color='green'>RESOLVED</font>"
|
||||
dat += span_green("RESOLVED")
|
||||
else
|
||||
dat += "UNKNOWN"
|
||||
dat += "</b>[GLOB.TAB][TicketHref("Refresh", ref_src)]"
|
||||
@@ -281,9 +281,9 @@
|
||||
dat += "<br>Closed at: [gameTimestamp(wtime = closed_at)] (Approx [(world.time - closed_at) / 600] minutes ago)"
|
||||
dat += "<br><br>"
|
||||
if(initiator)
|
||||
dat += "<b>Actions:</b> [Context(ref_src)]<br>"
|
||||
dat += span_bold("Actions:") + " [Context(ref_src)]<br>"
|
||||
else
|
||||
dat += "<b>DISCONNECTED</b>[GLOB.TAB][ClosureLinks(ref_src)]<br>"
|
||||
dat += span_bold("DISCONNECTED") + "[GLOB.TAB][ClosureLinks(ref_src)]<br>"
|
||||
dat += "<br><b>Log:</b><br><br>"
|
||||
for(var/I in _interactions)
|
||||
dat += "[I]<br>"
|
||||
@@ -296,9 +296,9 @@
|
||||
dat += "<b>State: "
|
||||
switch(state)
|
||||
if(AHELP_ACTIVE)
|
||||
dat += "<font color='red'>OPEN</font>"
|
||||
dat += span_red("OPEN")
|
||||
if(AHELP_RESOLVED)
|
||||
dat += "<font color='green'>RESOLVED</font>"
|
||||
dat += span_green("RESOLVED")
|
||||
if(AHELP_CLOSED)
|
||||
dat += "CLOSED"
|
||||
else
|
||||
@@ -311,9 +311,9 @@
|
||||
dat += "<br>Closed at: [gameTimestamp(wtime = closed_at)] (Approx [(world.time - closed_at) / 600] minutes ago)"
|
||||
dat += "<br><br>"
|
||||
if(initiator)
|
||||
dat += "<b>Actions:</b> [FullMonty(ref_src)]<br>"
|
||||
dat += span_bold("Actions:") + " [FullMonty(ref_src)]<br>"
|
||||
else
|
||||
dat += "<b>DISCONNECTED</b>[GLOB.TAB][ClosureLinks(ref_src)]<br>"
|
||||
dat += span_bold("DISCONNECTED") + "[GLOB.TAB][ClosureLinks(ref_src)]<br>"
|
||||
dat += "<br><b>Log:</b><br><br>"
|
||||
for(var/I in _interactions)
|
||||
dat += "[I]<br>"
|
||||
|
||||
@@ -18,17 +18,17 @@
|
||||
/datum/disease2/effect/choreomania/activate(mob/living/carbon/mob, multiplier)
|
||||
|
||||
if(prob(25))
|
||||
to_chat(mob, "<span class='notice'>You feel [pick("like dancing like a maniac, maniac...", "the need to chick chicky boom...")]</span>")
|
||||
to_chat(mob, span_notice("You feel [pick("like dancing like a maniac, maniac...", "the need to chick chicky boom...")]"))
|
||||
|
||||
if(prob(60))
|
||||
if(mob.buckled())
|
||||
mob.emote("whistle")
|
||||
to_chat(viewers(mob), "<span class='warning'>[mob.name] taps their foot rhythmically!</span>")
|
||||
to_chat(viewers(mob), span_warning("[mob.name] taps their foot rhythmically!"))
|
||||
else
|
||||
to_chat(viewers(mob),"<span class='warning'>[mob.name] dances uncontrollably!</span>")
|
||||
to_chat(viewers(mob),span_warning("[mob.name] dances uncontrollably!"))
|
||||
|
||||
if(prob(30))
|
||||
to_chat(mob, "<span class='warning'>You feel like starting a conga line!</span>")
|
||||
to_chat(mob, span_warning("You feel like starting a conga line!"))
|
||||
for(var/mob/living/carbon/M in oview(2,mob))
|
||||
mob.spread_disease_to(M)
|
||||
|
||||
@@ -48,10 +48,10 @@
|
||||
/datum/disease2/effect/pica/activate(mob/living/carbon/mob, multiplier)
|
||||
if(prob(20))
|
||||
var/list/nearby = oview(5, mob)
|
||||
to_chat(mob, "<span class='warning'>You could go for a bite of [pick(nearby)]...</span>")
|
||||
to_chat(mob, span_warning("You could go for a bite of [pick(nearby)]..."))
|
||||
else if (prob(20))
|
||||
var/list/item = mob.get_equipped_items()
|
||||
to_chat(mob, "<span class='warning'>[pick(item)] looks oddly [pick("delicious", "tasty", "scrumptious", "inviting")]...</span>")
|
||||
to_chat(mob, span_warning("[pick(item)] looks oddly [pick("delicious", "tasty", "scrumptious", "inviting")]..."))
|
||||
|
||||
///////////////////////////////////////////////
|
||||
/////////////////// Stage 2 ///////////////////
|
||||
@@ -62,7 +62,7 @@
|
||||
chance_maxm = 5
|
||||
|
||||
/datum/disease2/effect/jellylegs/activate(var/mob/living/carbon/mob,var/multiplier)
|
||||
to_chat(mob, "<span class='notice'>Your body seems to lose balance!</span>")
|
||||
to_chat(mob, span_notice("Your body seems to lose balance!"))
|
||||
mob.slip("yourself.")
|
||||
|
||||
/datum/disease2/effect/morgellon
|
||||
@@ -73,9 +73,9 @@
|
||||
/datum/disease2/effect/morgellon/activate(var/mob/living/carbon/mob,var/multiplier)
|
||||
if(prob(65))
|
||||
var/obj/item/organ/external/O = pick(mob.organs)
|
||||
to_chat(mob, "<span class='warning'>Your [O.name] [pick(" itches slightly...", " stings!")]</span>")
|
||||
to_chat(mob, span_warning("Your [O.name] [pick(" itches slightly...", " stings!")]"))
|
||||
else if(prob(30))
|
||||
to_chat(mob, "<span class='notice'>You feel [pick("something crawling under your skin.","little legs on you.")]</span>")
|
||||
to_chat(mob, span_notice("You feel [pick("something crawling under your skin.","little legs on you.")]"))
|
||||
else
|
||||
var/obj/effect/spider/spiderling/S = new(get_turf(mob))
|
||||
S.amount_grown = -1
|
||||
|
||||
@@ -67,10 +67,10 @@
|
||||
|
||||
// Sends messages to the owner of the soulcatcher
|
||||
/obj/soulgem/proc/notify_holder(var/message)
|
||||
to_chat(owner, span_nif("<b>[name]</b> displays, \"<span class='notice nif'>[message]</span>\""))
|
||||
to_chat(owner, span_nif(span_bold("[name]") + " displays, \"" + span_notice("[message]") + "\""))
|
||||
|
||||
for(var/mob/living/carbon/brain/caught_soul/CS as anything in brainmobs)
|
||||
to_chat(CS, span_nif("<b>[name]</b> displays, \"<span class='notice nif'>[message]</span>\""))
|
||||
to_chat(CS, span_nif(span_bold("[name]") + " displays, \"" + span_notice("[message]") + "\""))
|
||||
|
||||
// Forwards the speech of captured souls
|
||||
/obj/soulgem/proc/use_speech(var/message, var/mob/living/sender, var/mob/eyeobj)
|
||||
@@ -78,13 +78,13 @@
|
||||
|
||||
//AR Projecting
|
||||
if(eyeobj)
|
||||
sender.eyeobj.visible_message("<span class='game say'><b>[sender_name]</b> says, \"[message]\"</span>")
|
||||
sender.eyeobj.visible_message(span_game(span_say(span_bold("[sender_name]") + " says, \"[message]\"")))
|
||||
|
||||
//Not AR Projecting
|
||||
else
|
||||
to_chat(owner, span_nif("<b>\[SC\] [sender_name]</b> speaks, \"[message]\""))
|
||||
to_chat(owner, span_nif(span_bold("\[SC\] [sender_name]") + " speaks, \"[message]\""))
|
||||
for(var/mob/living/carbon/brain/caught_soul/CS as anything in brainmobs)
|
||||
to_chat(CS, span_nif("<b>\[SC\] [sender_name]</b> speaks, \"[message]\""))
|
||||
to_chat(CS, span_nif(span_bold("\[SC\] [sender_name]") + " speaks, \"[message]\""))
|
||||
|
||||
log_nsay(message, owner.real_name, sender)
|
||||
|
||||
@@ -94,13 +94,13 @@
|
||||
|
||||
//AR Projecting
|
||||
if(eyeobj)
|
||||
sender.eyeobj.visible_message("<span class='emote'>[sender_name] [message]</span>")
|
||||
sender.eyeobj.visible_message(span_emote("[sender_name] [message]"))
|
||||
|
||||
//Not AR Projecting
|
||||
else
|
||||
to_chat(owner, span_nif("<b>[sender_name]</b> [message]"))
|
||||
to_chat(owner, span_nif(span_bold("[sender_name]") + " [message]"))
|
||||
for(var/mob/living/carbon/brain/caught_soul/CS as anything in brainmobs)
|
||||
to_chat(CS, span_nif("<b>[sender_name]</b> [message]"))
|
||||
to_chat(CS, span_nif(span_bold("[sender_name]") + " [message]"))
|
||||
|
||||
log_nme(message, owner.real_name,sender)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user