mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-23 12:08:28 +01:00
Replaces most of the gender macros. (#4681)
* Fixes #4632. * 1:27 am coding best coding * fixes a warning * Removes the last of the gender macros. Gender is dead. * gender II: the travis-ing * linebreaks are dead too. * oops i accidentally the gender, also ambiguous gender is now taken into account for get_visible_gender
This commit is contained in:
@@ -887,13 +887,13 @@ var/list/admin_verbs_event_manager = list(
|
||||
if(!H.client)
|
||||
usr << "Only mobs with clients can alter their own appearance."
|
||||
return
|
||||
|
||||
var/datum/gender/T = gender_datums[H.get_visible_gender()]
|
||||
switch(alert("Do you wish for [H] to be allowed to select non-whitelisted races?","Alter Mob Appearance","Yes","No","Cancel"))
|
||||
if("Yes")
|
||||
log_and_message_admins("has allowed [H] to change \his appearance, without whitelisting of races.")
|
||||
log_and_message_admins("has allowed [H] to change [T.his] appearance, without whitelisting of races.")
|
||||
H.change_appearance(APPEARANCE_ALL, H.loc, check_species_whitelist = 0)
|
||||
if("No")
|
||||
log_and_message_admins("has allowed [H] to change \his appearance, with whitelisting of races.")
|
||||
log_and_message_admins("has allowed [H] to change [T.his] appearance, with whitelisting of races.")
|
||||
H.change_appearance(APPEARANCE_ALL, H.loc, check_species_whitelist = 1)
|
||||
feedback_add_details("admin_verb","CMAS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
|
||||
@@ -173,7 +173,8 @@
|
||||
H.concealed = 1
|
||||
H.update_icon()
|
||||
if(user==target)
|
||||
user.visible_message("<span class = 'notice'>\The [user] deals [dcard] card(s) to \himself.</span>")
|
||||
var/datum/gender/TU = gender_datums[user.get_visible_gender()]
|
||||
user.visible_message("<span class = 'notice'>\The [user] deals [dcard] card(s) to [TU.himself].</span>")
|
||||
else
|
||||
user.visible_message("<span class = 'notice'>\The [user] deals [dcard] card(s) to \the [target].</span>")
|
||||
H.throw_at(get_step(target,target.dir),10,1,H)
|
||||
|
||||
@@ -68,7 +68,8 @@
|
||||
duration = 10*30
|
||||
|
||||
start(mob/living/carbon/human/H)
|
||||
H.emote("me", 1, "has drool running down from [H.gender == MALE ? "his" : H.gender == FEMALE ? "her" : "their"] mouth.")
|
||||
var/datum/gender/T = gender_datums[H.get_visible_gender()]
|
||||
H.emote("me", 1, "has drool running down from [T.his] mouth.")
|
||||
|
||||
finish(mob/living/carbon/human/H)
|
||||
if(!H.reagents.has_reagent("anti_toxin"))
|
||||
|
||||
@@ -149,8 +149,9 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f
|
||||
dat += "<A href='?src=\ref[src];switchscreen=7'>7. Access the Forbidden Lore Vault</A><BR>"
|
||||
if(src.arcanecheckout)
|
||||
new /obj/item/weapon/book/tome(src.loc)
|
||||
var/datum/gender/T = gender_datums[user.get_visible_gender()]
|
||||
user << "<span class='warning'>Your sanity barely endures the seconds spent in the vault's browsing window. The only thing to remind you of this when you stop browsing is a dusty old tome sitting on the desk. You don't really remember printing it.</span>"
|
||||
user.visible_message("<span class='notice'>\The [user] stares at the blank screen for a few moments, \his expression frozen in fear. When \he finally awakens from it, \he looks a lot older.</span>", 2)
|
||||
user.visible_message("<span class='notice'>\The [user] stares at the blank screen for a few moments, [T.his] expression frozen in fear. When [T.he] finally awakens from it, [T.he] looks a lot older.</span>", 2)
|
||||
src.arcanecheckout = 0
|
||||
if(1)
|
||||
// Inventory
|
||||
|
||||
@@ -621,8 +621,9 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
)
|
||||
toggle_visibility(TRUE)
|
||||
else
|
||||
var/datum/gender/T = gender_datums[user.get_visible_gender()]
|
||||
user.visible_message ( \
|
||||
"<span class='warning'>\The [user] just tried to smash \his book into that ghost! It's not very effective.</span>", \
|
||||
"<span class='warning'>\The [user] just tried to smash [T.his] book into that ghost! It's not very effective.</span>", \
|
||||
"<span class='warning'>You get the feeling that the ghost can't become any more visible.</span>" \
|
||||
)
|
||||
|
||||
|
||||
@@ -18,6 +18,9 @@
|
||||
var/has = "have"
|
||||
var/is = "are"
|
||||
var/does = "do"
|
||||
var/himself = "themselves"
|
||||
var/s = ""
|
||||
var/hes = "they're"
|
||||
|
||||
/datum/gender/male
|
||||
key = "male"
|
||||
@@ -30,6 +33,9 @@
|
||||
has = "has"
|
||||
is = "is"
|
||||
does = "does"
|
||||
himself = "himself"
|
||||
s = "s"
|
||||
hes = "he's"
|
||||
|
||||
/datum/gender/female
|
||||
key = "female"
|
||||
@@ -42,6 +48,9 @@
|
||||
has = "has"
|
||||
is = "is"
|
||||
does = "does"
|
||||
himself = "herself"
|
||||
s = "s"
|
||||
hes = "she's"
|
||||
|
||||
/datum/gender/neuter
|
||||
key = "neuter"
|
||||
@@ -54,3 +63,6 @@
|
||||
has = "has"
|
||||
is = "is"
|
||||
does = "does"
|
||||
himself = "itself"
|
||||
s = "s"
|
||||
hes = "it's"
|
||||
|
||||
@@ -168,8 +168,9 @@
|
||||
if (src.health >= config.health_threshold_crit)
|
||||
if(src == M && istype(src, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = src
|
||||
var/datum/gender/T = gender_datums[H.get_visible_gender()]
|
||||
src.visible_message( \
|
||||
text("<font color='blue'>[src] examines [].</font>",src.gender==MALE?"himself":"herself"), \
|
||||
"<font color='blue'>[src] examines [T.himself].</font>", \
|
||||
"<font color='blue'>You check yourself for injuries.</font>" \
|
||||
)
|
||||
|
||||
@@ -243,32 +244,29 @@
|
||||
src.ExtinguishMob()
|
||||
src.fire_stacks = 0
|
||||
else
|
||||
var/t_him = "it"
|
||||
if (src.gender == MALE)
|
||||
t_him = "him"
|
||||
else if (src.gender == FEMALE)
|
||||
t_him = "her"
|
||||
if (istype(src,/mob/living/carbon/human) && src:w_uniform)
|
||||
var/mob/living/carbon/human/H = src
|
||||
H.w_uniform.add_fingerprint(M)
|
||||
|
||||
var/show_ssd
|
||||
var/mob/living/carbon/human/H = src
|
||||
var/datum/gender/T = gender_datums[H.get_visible_gender()] // make sure to cast to human before using get_gender() or get_visible_gender()!
|
||||
if(istype(H)) show_ssd = H.species.show_ssd
|
||||
if(show_ssd && !client && !teleop)
|
||||
M.visible_message("<span class='notice'>[M] shakes [src] trying to wake [t_him] up!</span>", \
|
||||
"<span class='notice'>You shake [src], but they do not respond... Maybe they have S.S.D?</span>")
|
||||
M.visible_message("<span class='notice'>[M] shakes [src] trying to wake [T.him] up!</span>", \
|
||||
"<span class='notice'>You shake [src], but [T.he] [T.does] not respond... Maybe [T.he] [T.has] S.S.D?</span>")
|
||||
else if(lying || src.sleeping)
|
||||
src.sleeping = max(0,src.sleeping-5)
|
||||
if(src.sleeping == 0)
|
||||
src.resting = 0
|
||||
M.visible_message("<span class='notice'>[M] shakes [src] trying to wake [t_him] up!</span>", \
|
||||
"<span class='notice'>You shake [src] trying to wake [t_him] up!</span>")
|
||||
M.visible_message("<span class='notice'>[M] shakes [src] trying to wake [T.him] up!</span>", \
|
||||
"<span class='notice'>You shake [src] trying to wake [T.him] up!</span>")
|
||||
else
|
||||
var/mob/living/carbon/human/hugger = M
|
||||
var/datum/gender/TM = gender_datums[M.get_visible_gender()]
|
||||
if(M.resting == 1) //Are they resting on the ground?
|
||||
M.visible_message("<span class='notice'>[M] grabs onto [src] and pulls \himself up</span>", \
|
||||
"<span class='notice'>You grip onto [src] and pull yourself up off the ground!</span>") //AHHH gender checks are hard, but this should work
|
||||
M.visible_message("<span class='notice'>[M] grabs onto [src] and pulls [TM.himself] up</span>", \
|
||||
"<span class='notice'>You grip onto [src] and pull yourself up off the ground!</span>")
|
||||
if(M.fire_stacks >= (src.fire_stacks + 3)) //Fire checks.
|
||||
src.adjust_fire_stacks(1)
|
||||
M.adjust_fire_stacks(-1)
|
||||
@@ -279,8 +277,8 @@
|
||||
else if(istype(hugger))
|
||||
hugger.species.hug(hugger,src)
|
||||
else
|
||||
M.visible_message("<span class='notice'>[M] hugs [src] to make [t_him] feel better!</span>", \
|
||||
"<span class='notice'>You hug [src] to make [t_him] feel better!</span>")
|
||||
M.visible_message("<span class='notice'>[M] hugs [src] to make [T.him] feel better!</span>", \
|
||||
"<span class='notice'>You hug [src] to make [T.him] feel better!</span>")
|
||||
if(M.fire_stacks >= (src.fire_stacks + 3))
|
||||
src.adjust_fire_stacks(1)
|
||||
M.adjust_fire_stacks(-1)
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
/mob/living/carbon/human/emote(var/act,var/m_type=1,var/message = null)
|
||||
var/param = null
|
||||
|
||||
var/datum/gender/T = gender_datums[get_visible_gender()]
|
||||
|
||||
if (findtext(act, "-", 1, null))
|
||||
var/t1 = findtext(act, "-", 1, null)
|
||||
@@ -57,13 +59,13 @@
|
||||
use_sound = 'sound/machines/synth_no.ogg'
|
||||
else if(act == "rcough")
|
||||
display_msg = "emits a robotic cough"
|
||||
if(gender == FEMALE)
|
||||
if(get_gender() == FEMALE)
|
||||
use_sound = pick('sound/effects/mob_effects/f_machine_cougha.ogg','sound/effects/mob_effects/f_machine_coughb.ogg')
|
||||
else
|
||||
use_sound = pick('sound/effects/mob_effects/m_machine_cougha.ogg','sound/effects/mob_effects/m_machine_coughb.ogg', 'sound/effects/mob_effects/m_machine_coughc.ogg')
|
||||
else if(act == "rsneeze")
|
||||
display_msg = "emits a robotic sneeze"
|
||||
if(gender == FEMALE)
|
||||
if(get_gender() == FEMALE)
|
||||
use_sound = 'sound/effects/mob_effects/machine_sneeze.ogg'
|
||||
else
|
||||
use_sound = 'sound/effects/mob_effects/f_machine_sneeze.ogg'
|
||||
@@ -161,7 +163,7 @@
|
||||
|
||||
if ("choke")
|
||||
if(miming)
|
||||
message = "clutches [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] throat desperately!"
|
||||
message = "clutches [T.his] throat desperately!"
|
||||
m_type = 1
|
||||
else
|
||||
if (!muzzled)
|
||||
@@ -181,14 +183,14 @@
|
||||
|
||||
if ("flap")
|
||||
if (!src.restrained())
|
||||
message = "flaps [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] wings."
|
||||
message = "flaps [T.his] wings."
|
||||
m_type = 2
|
||||
if(miming)
|
||||
m_type = 1
|
||||
|
||||
if ("aflap")
|
||||
if (!src.restrained())
|
||||
message = "flaps [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] wings ANGRILY!"
|
||||
message = "flaps [T.his] wings ANGRILY!"
|
||||
m_type = 2
|
||||
if(miming)
|
||||
m_type = 1
|
||||
@@ -242,7 +244,7 @@
|
||||
robotic = 1
|
||||
if(!robotic)
|
||||
message = "coughs!"
|
||||
if(gender == FEMALE)
|
||||
if(get_gender() == FEMALE)
|
||||
if(species.female_cough_sounds)
|
||||
playsound(src, pick(species.female_cough_sounds), 120)
|
||||
else
|
||||
@@ -251,7 +253,7 @@
|
||||
else
|
||||
message = "emits a robotic cough"
|
||||
var/use_sound
|
||||
if(gender == FEMALE)
|
||||
if(get_gender() == FEMALE)
|
||||
use_sound = pick('sound/effects/mob_effects/f_machine_cougha.ogg','sound/effects/mob_effects/f_machine_coughb.ogg')
|
||||
else
|
||||
use_sound = pick('sound/effects/mob_effects/m_machine_cougha.ogg','sound/effects/mob_effects/m_machine_coughb.ogg', 'sound/effects/mob_effects/m_machine_coughc.ogg')
|
||||
@@ -364,7 +366,7 @@
|
||||
message = "cries."
|
||||
m_type = 2
|
||||
else
|
||||
message = "makes a weak noise. [get_visible_gender() == MALE ? "He" : get_visible_gender() == FEMALE ? "She" : "They"] [get_visible_gender() == NEUTER ? "frown" : "frowns"]."
|
||||
message = "makes a weak noise. [T.he] [get_visible_gender() == NEUTER ? "frown" : "frowns"]." // no good, non-unwieldy alternative to this ternary at the moment
|
||||
m_type = 2
|
||||
|
||||
if ("sigh")
|
||||
@@ -467,7 +469,7 @@
|
||||
m_type = 1
|
||||
|
||||
if("shake")
|
||||
message = "shakes [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] head."
|
||||
message = "shakes [T.his] head."
|
||||
m_type = 1
|
||||
|
||||
if ("shrug")
|
||||
@@ -516,7 +518,7 @@
|
||||
robotic = 1
|
||||
if(!robotic)
|
||||
message = "sneezes."
|
||||
if(gender == FEMALE)
|
||||
if(get_gender() == FEMALE)
|
||||
playsound(src, species.female_sneeze_sound, 70)
|
||||
else
|
||||
playsound(src, species.male_sneeze_sound, 70)
|
||||
@@ -524,7 +526,7 @@
|
||||
else
|
||||
message = "emits a robotic sneeze"
|
||||
var/use_sound
|
||||
if(gender == FEMALE)
|
||||
if(get_gender() == FEMALE)
|
||||
use_sound = 'sound/effects/mob_effects/machine_sneeze.ogg'
|
||||
else
|
||||
use_sound = 'sound/effects/mob_effects/f_machine_sneeze.ogg'
|
||||
@@ -596,7 +598,7 @@
|
||||
if (M)
|
||||
message = "hugs [M]."
|
||||
else
|
||||
message = "hugs [get_visible_gender() == MALE ? "himself" : get_visible_gender() == FEMALE ? "herself" : "themselves"]."
|
||||
message = "hugs [T.himself]."
|
||||
|
||||
if ("handshake")
|
||||
m_type = 1
|
||||
@@ -614,7 +616,7 @@
|
||||
if (M.canmove && !M.r_hand && !M.restrained())
|
||||
message = "shakes hands with [M]."
|
||||
else
|
||||
message = "holds out [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] hand to [M]."
|
||||
message = "holds out [T.his] hand to [M]."
|
||||
|
||||
if("dap")
|
||||
m_type = 1
|
||||
@@ -628,7 +630,7 @@
|
||||
if (M)
|
||||
message = "gives daps to [M]."
|
||||
else
|
||||
message = "sadly can't find anybody to give daps to, and daps [get_visible_gender() == MALE ? "himself" : get_visible_gender() == FEMALE ? "herself" : "themselves"]. Shameful."
|
||||
message = "sadly can't find anybody to give daps to, and daps [T.himself]. Shameful."
|
||||
|
||||
if("slap", "slaps")
|
||||
m_type = 1
|
||||
@@ -643,7 +645,7 @@
|
||||
message = "<span class='danger'>slaps [M] across the face. Ouch!</span>"
|
||||
playsound(loc, 'sound/effects/snap.ogg', 50, 1)
|
||||
else
|
||||
message = "<span class='danger'>slaps [get_visible_gender() == MALE ? "himself" : get_visible_gender() == FEMALE ? "herself" : "themselves"]!</span>"
|
||||
message = "<span class='danger'>slaps [T.himself]!</span>"
|
||||
playsound(loc, 'sound/effects/snap.ogg', 50, 1)
|
||||
|
||||
if("scream", "screams")
|
||||
@@ -655,7 +657,7 @@
|
||||
message = "[species.scream_verb]!"
|
||||
m_type = 2
|
||||
/* Removed, pending the location of some actually good, properly licensed sounds.
|
||||
if(gender == FEMALE)
|
||||
if(get_gender() == FEMALE)
|
||||
playsound(loc, "[species.female_scream_sound]", 80, 1)
|
||||
else
|
||||
playsound(loc, "[species.male_scream_sound]", 80, 1) //default to male screams if no gender is present.
|
||||
@@ -680,7 +682,7 @@
|
||||
to_chat(usr, "You need at least one hand in good working order to snap your fingers.")
|
||||
return
|
||||
|
||||
message = "snaps [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] fingers."
|
||||
message = "snaps [T.his] fingers."
|
||||
playsound(loc, 'sound/effects/fingersnap.ogg', 50, 1, -3)
|
||||
|
||||
if("swish")
|
||||
@@ -734,8 +736,10 @@
|
||||
set name = "Set Pose"
|
||||
set desc = "Sets a description which will be shown when someone examines you."
|
||||
set category = "IC"
|
||||
|
||||
var/datum/gender/T = gender_datums[get_visible_gender()]
|
||||
|
||||
pose = sanitize(input(usr, "This is [src]. [get_visible_gender() == MALE ? "He" : get_visible_gender() == FEMALE ? "She" : "They"]...", "Pose", null) as text)
|
||||
pose = sanitize(input(usr, "This is [src]. [T.he]...", "Pose", null) as text)
|
||||
|
||||
/mob/living/carbon/human/verb/set_flavor()
|
||||
set name = "Set Flavour Text"
|
||||
|
||||
@@ -85,7 +85,7 @@
|
||||
var/list/msg = list("<span class='info'>*---------*\nThis is ")
|
||||
|
||||
|
||||
var/datum/gender/T = gender_datums[get_gender()]
|
||||
var/datum/gender/T = gender_datums[get_visible_gender()]
|
||||
|
||||
if(skipjumpsuit && skipface) //big suits/masks/helmets make it hard to tell their gender
|
||||
T = gender_datums[PLURAL]
|
||||
|
||||
@@ -763,7 +763,8 @@
|
||||
|
||||
/mob/living/carbon/human/proc/play_xylophone()
|
||||
if(!src.xylophone)
|
||||
visible_message("<font color='red'>\The [src] begins playing \his ribcage like a xylophone. It's quite spooky.</font>","<font color='blue'>You begin to play a spooky refrain on your ribcage.</font>","<font color='red'>You hear a spooky xylophone melody.</font>")
|
||||
var/datum/gender/T = gender_datums[get_visible_gender()]
|
||||
visible_message("<font color='red'>\The [src] begins playing [T.his] ribcage like a xylophone. It's quite spooky.</font>","<font color='blue'>You begin to play a spooky refrain on your ribcage.</font>","<font color='red'>You hear a spooky xylophone melody.</font>")
|
||||
var/song = pick('sound/effects/xylophone1.ogg','sound/effects/xylophone2.ogg','sound/effects/xylophone3.ogg')
|
||||
playsound(loc, song, 50, 1, -1)
|
||||
xylophone = 1
|
||||
@@ -853,8 +854,8 @@
|
||||
gender = NEUTER
|
||||
regenerate_icons()
|
||||
check_dna()
|
||||
|
||||
visible_message("<font color='blue'>\The [src] morphs and changes [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] appearance!</font>", "<font color='blue'>You change your appearance!</font>", "<font color='red'>Oh, god! What the hell was that? It sounded like flesh getting squished and bone ground into a different shape!</font>")
|
||||
var/datum/gender/T = gender_datums[get_visible_gender()]
|
||||
visible_message("<font color='blue'>\The [src] morphs and changes [T.his] appearance!</font>", "<font color='blue'>You change your appearance!</font>", "<font color='red'>Oh, god! What the hell was that? It sounded like flesh getting squished and bone ground into a different shape!</font>")
|
||||
|
||||
/mob/living/carbon/human/proc/remotesay()
|
||||
set name = "Project mind"
|
||||
@@ -922,10 +923,13 @@
|
||||
remoteview_target = null
|
||||
reset_view(0)
|
||||
|
||||
/mob/living/carbon/human/proc/get_visible_gender()
|
||||
/mob/living/carbon/human/get_visible_gender()
|
||||
if(wear_suit && wear_suit.flags_inv & HIDEJUMPSUIT && ((head && head.flags_inv & HIDEMASK) || wear_mask))
|
||||
return NEUTER
|
||||
return gender
|
||||
return PLURAL //plural is the gender-neutral default
|
||||
if(species)
|
||||
if(species.ambiguous_genders)
|
||||
return PLURAL // regardless of what you're wearing, your gender can't be figured out
|
||||
return get_gender()
|
||||
|
||||
/mob/living/carbon/human/proc/increase_germ_level(n)
|
||||
if(gloves)
|
||||
@@ -1073,14 +1077,17 @@
|
||||
var/self = 0
|
||||
|
||||
if(usr.stat || usr.restrained() || !isliving(usr)) return
|
||||
|
||||
var/datum/gender/TU = gender_datums[usr.get_visible_gender()]
|
||||
var/datum/gender/T = gender_datums[get_visible_gender()]
|
||||
|
||||
if(usr == src)
|
||||
self = 1
|
||||
if(!self)
|
||||
usr.visible_message("<span class='notice'>[usr] kneels down, puts \his hand on [src]'s wrist and begins counting their pulse.</span>",\
|
||||
usr.visible_message("<span class='notice'>[usr] kneels down, puts [TU.his] hand on [src]'s wrist and begins counting [T.his] pulse.</span>",\
|
||||
"You begin counting [src]'s pulse")
|
||||
else
|
||||
usr.visible_message("<span class='notice'>[usr] begins counting their pulse.</span>",\
|
||||
usr.visible_message("<span class='notice'>[usr] begins counting [T.his] pulse.</span>",\
|
||||
"You begin counting your pulse.")
|
||||
|
||||
if(src.pulse)
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
return null
|
||||
|
||||
/mob/living/carbon/human/attack_hand(mob/living/carbon/M as mob)
|
||||
var/datum/gender/TT = gender_datums[M.get_visible_gender()]
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(istype(H))
|
||||
var/obj/item/organ/external/temp = H.organs_by_name["r_hand"]
|
||||
@@ -117,7 +118,7 @@
|
||||
|
||||
var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(M, src)
|
||||
if(buckled)
|
||||
M << "<span class='notice'>You cannot grab [src], \he is buckled in!</span>"
|
||||
M << "<span class='notice'>You cannot grab [src], [TT.he] is buckled in!</span>"
|
||||
if(!G) //the grab will delete itself in New if affecting is anchored
|
||||
return
|
||||
M.put_in_active_hand(G)
|
||||
@@ -212,7 +213,7 @@
|
||||
if(!src.lying)
|
||||
attack_message = "[H] attempted to strike [src], but missed!"
|
||||
else
|
||||
attack_message = "[H] attempted to strike [src], but \he rolled out of the way!"
|
||||
attack_message = "[H] attempted to strike [src], but [TT.he] rolled out of the way!"
|
||||
src.set_dir(pick(cardinal))
|
||||
miss_type = 1
|
||||
|
||||
@@ -401,8 +402,10 @@
|
||||
user << "<span class='warning'>Someone is already applying pressure to [user == src? "your [organ.name]" : "[src]'s [organ.name]"].</span>"
|
||||
return 0
|
||||
|
||||
var/datum/gender/TU = gender_datums[user.get_visible_gender()]
|
||||
|
||||
if(user == src)
|
||||
user.visible_message("\The [user] starts applying pressure to \his [organ.name]!", "You start applying pressure to your [organ.name]!")
|
||||
user.visible_message("\The [user] starts applying pressure to [TU.his] [organ.name]!", "You start applying pressure to your [organ.name]!")
|
||||
else
|
||||
user.visible_message("\The [user] starts applying pressure to [src]'s [organ.name]!", "You start applying pressure to [src]'s [organ.name]!")
|
||||
spawn(0)
|
||||
@@ -414,7 +417,7 @@
|
||||
organ.applied_pressure = null
|
||||
|
||||
if(user == src)
|
||||
user.visible_message("\The [user] stops applying pressure to \his [organ.name]!", "You stop applying pressure to your [organ]!")
|
||||
user.visible_message("\The [user] stops applying pressure to [TU.his] [organ.name]!", "You stop applying pressure to your [organ]!")
|
||||
else
|
||||
user.visible_message("\The [user] stops applying pressure to [src]'s [organ.name]!", "You stop applying pressure to [src]'s [organ.name]!")
|
||||
|
||||
|
||||
@@ -24,12 +24,13 @@
|
||||
/datum/unarmed_attack/claws/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage)
|
||||
var/skill = user.skills["combat"]
|
||||
var/obj/item/organ/external/affecting = target.get_organ(zone)
|
||||
|
||||
var/datum/gender/T = gender_datums[user.get_visible_gender()]
|
||||
var/datum/gender/TT = gender_datums[target.get_visible_gender()]
|
||||
if(!skill) skill = 1
|
||||
attack_damage = Clamp(attack_damage, 1, 5)
|
||||
|
||||
if(target == user)
|
||||
user.visible_message("<span class='danger'>[user] [pick(attack_verb)] \himself in the [affecting.name]!</span>")
|
||||
user.visible_message("<span class='danger'>[user] [pick(attack_verb)] [T.himself] in the [affecting.name]!</span>")
|
||||
return 0
|
||||
|
||||
switch(zone)
|
||||
@@ -37,20 +38,20 @@
|
||||
// ----- HEAD ----- //
|
||||
switch(attack_damage)
|
||||
if(1 to 2)
|
||||
user.visible_message("<span class='danger'>[user] scratched [target] across \his cheek!</span>")
|
||||
user.visible_message("<span class='danger'>[user] scratched [target] across [TT.his] cheek!</span>")
|
||||
if(3 to 4)
|
||||
user.visible_message("<span class='danger'>[user] [pick(attack_verb)] [target]'s [pick("head", "neck")]!</span>") //'with spread claws' sounds a little bit odd, just enough that conciseness is better here I think
|
||||
if(5)
|
||||
user.visible_message(pick(
|
||||
"<span class='danger'>[user] rakes \his [pick(attack_noun)] across [target]'s face!</span>",
|
||||
"<span class='danger'>[user] tears \his [pick(attack_noun)] into [target]'s face!</span>",
|
||||
"<span class='danger'>[user] rakes [T.his] [pick(attack_noun)] across [target]'s face!</span>",
|
||||
"<span class='danger'>[user] tears [T.his] [pick(attack_noun)] into [target]'s face!</span>",
|
||||
))
|
||||
else
|
||||
// ----- BODY ----- //
|
||||
switch(attack_damage)
|
||||
if(1 to 2) user.visible_message("<span class='danger'>[user] scratched [target]'s [affecting.name]!</span>")
|
||||
if(3 to 4) user.visible_message("<span class='danger'>[user] [pick(attack_verb)] [pick("", "", "the side of")] [target]'s [affecting.name]!</span>")
|
||||
if(5) user.visible_message("<span class='danger'>[user] tears \his [pick(attack_noun)] [pick("deep into", "into", "across")] [target]'s [affecting.name]!</span>")
|
||||
if(5) user.visible_message("<span class='danger'>[user] tears [T.his] [pick(attack_noun)] [pick("deep into", "into", "across")] [target]'s [affecting.name]!</span>")
|
||||
|
||||
/datum/unarmed_attack/claws/strong
|
||||
attack_verb = list("slashed")
|
||||
|
||||
@@ -44,6 +44,7 @@ var/global/list/sparring_attack_cache = list()
|
||||
/datum/unarmed_attack/proc/apply_effects(var/mob/living/carbon/human/user,var/mob/living/carbon/human/target,var/armour,var/attack_damage,var/zone)
|
||||
|
||||
var/stun_chance = rand(0, 100)
|
||||
var/datum/gender/TT = gender_datums[target.get_visible_gender()]
|
||||
|
||||
if(attack_damage >= 5 && armour < 2 && !(target == user) && stun_chance <= attack_damage * 5) // 25% standard chance
|
||||
switch(zone) // strong punches can have effects depending on where they hit
|
||||
@@ -74,7 +75,7 @@ var/global/list/sparring_attack_cache = list()
|
||||
target.set_dir(reverse_dir[target.dir])
|
||||
target.apply_effect(attack_damage * 0.4, WEAKEN, armour)
|
||||
if(BP_GROIN)
|
||||
target.visible_message("<span class='warning'>[target] looks like \he is in pain!</span>", "<span class='warning'>[(target.gender=="female") ? "Oh god that hurt!" : "Oh no, not your[pick("testicles", "crown jewels", "clockweights", "family jewels", "marbles", "bean bags", "teabags", "sweetmeats", "goolies")]!"]</span>")
|
||||
target.visible_message("<span class='warning'>[target] looks like [TT.he] [TT.is] in pain!</span>", "<span class='warning'>[(target.gender=="female") ? "Oh god that hurt!" : "Oh no, not your[pick("testicles", "crown jewels", "clockweights", "family jewels", "marbles", "bean bags", "teabags", "sweetmeats", "goolies")]!"]</span>") // I see no easy way to fix this for non-organic or neuter characters.
|
||||
target.apply_effects(stutter = attack_damage * 2, agony = attack_damage* 3, blocked = armour)
|
||||
if("l_leg", "l_foot", "r_leg", "r_foot")
|
||||
if(!target.lying)
|
||||
@@ -94,13 +95,15 @@ var/global/list/sparring_attack_cache = list()
|
||||
|
||||
/datum/unarmed_attack/proc/handle_eye_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target)
|
||||
var/obj/item/organ/internal/eyes/eyes = target.internal_organs_by_name[O_EYES]
|
||||
var/datum/gender/TU = gender_datums[user.get_visible_gender()]
|
||||
var/datum/gender/TT = gender_datums[target.get_visible_gender()]
|
||||
if(eyes)
|
||||
eyes.take_damage(rand(3,4), 1)
|
||||
user.visible_message("<span class='danger'>[user] presses \his [eye_attack_text] into [target]'s [eyes.name]!</span>")
|
||||
user.visible_message("<span class='danger'>[user] presses [TU.his] [eye_attack_text] into [target]'s [eyes.name]!</span>")
|
||||
var/eye_pain = eyes.organ_can_feel_pain()
|
||||
target << "<span class='danger'>You experience[(eye_pain) ? "" : " immense pain as you feel" ] [eye_attack_text_victim] being pressed into your [eyes.name][(eye_pain)? "." : "!"]</span>"
|
||||
return
|
||||
user.visible_message("<span class='danger'>[user] attempts to press \his [eye_attack_text] into [target]'s eyes, but they don't have any!</span>")
|
||||
user.visible_message("<span class='danger'>[user] attempts to press [TU.his] [eye_attack_text] into [target]'s eyes, but [TT.he] [TT.does]n't have any!</span>")
|
||||
|
||||
/datum/unarmed_attack/bite
|
||||
attack_verb = list("bit")
|
||||
@@ -128,11 +131,14 @@ var/global/list/sparring_attack_cache = list()
|
||||
/datum/unarmed_attack/punch/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage)
|
||||
var/obj/item/organ/external/affecting = target.get_organ(zone)
|
||||
var/organ = affecting.name
|
||||
|
||||
var/datum/gender/TU = gender_datums[user.get_visible_gender()]
|
||||
var/datum/gender/TT = gender_datums[target.get_visible_gender()]
|
||||
|
||||
attack_damage = Clamp(attack_damage, 1, 5) // We expect damage input of 1 to 5 for this proc. But we leave this check juuust in case.
|
||||
|
||||
if(target == user)
|
||||
user.visible_message("<span class='danger'>[user] [pick(attack_verb)] \himself in the [organ]!</span>")
|
||||
user.visible_message("<span class='danger'>[user] [pick(attack_verb)] [TU.himself] in the [organ]!</span>")
|
||||
return 0
|
||||
|
||||
if(!target.lying)
|
||||
@@ -141,7 +147,7 @@ var/global/list/sparring_attack_cache = list()
|
||||
// ----- HEAD ----- //
|
||||
switch(attack_damage)
|
||||
if(1 to 2)
|
||||
user.visible_message("<span class='danger'>[user] slapped [target] across \his cheek!</span>")
|
||||
user.visible_message("<span class='danger'>[user] slapped [target] across [TT.his] cheek!</span>")
|
||||
if(3 to 4)
|
||||
user.visible_message(pick(
|
||||
40; "<span class='danger'>[user] [pick(attack_verb)] [target] in the head!</span>",
|
||||
@@ -151,21 +157,21 @@ var/global/list/sparring_attack_cache = list()
|
||||
if(5)
|
||||
user.visible_message(pick(
|
||||
30; "<span class='danger'>[user] gave [target] a resounding [pick("slap", "punch")] to the face!</span>",
|
||||
40; "<span class='danger'>[user] smashed \his [pick(attack_noun)] into [target]'s face!</span>",
|
||||
40; "<span class='danger'>[user] smashed [TU.his] [pick(attack_noun)] into [target]'s face!</span>",
|
||||
30; "<span class='danger'>[user] gave a strong blow against [target]'s jaw!</span>"
|
||||
))
|
||||
else
|
||||
// ----- BODY ----- //
|
||||
switch(attack_damage)
|
||||
if(1 to 2) user.visible_message("<span class='danger'>[user] threw a glancing punch at [target]'s [organ]!</span>")
|
||||
if(1 to 4) user.visible_message("<span class='danger'>[user] [pick(attack_verb)] [target] in \his [organ]!</span>")
|
||||
if(1 to 4) user.visible_message("<span class='danger'>[user] [pick(attack_verb)] [target] in [TT.his] [organ]!</span>")
|
||||
if(5)
|
||||
user.visible_message(pick(
|
||||
50; "<span class='danger'>[user] smashed \his [pick(attack_noun)] into [target]'s [organ]!</span>",
|
||||
50; "<span class='danger'>[user] smashed [TU.his] [pick(attack_noun)] into [target]'s [organ]!</span>",
|
||||
50; "<span class='danger'>[user] landed a striking [pick(attack_noun)] on [target]'s [organ]!</span>"
|
||||
))
|
||||
else
|
||||
user.visible_message("<span class='danger'>[user] [pick("punched", "threw a punch against", "struck", "slammed their [pick(attack_noun)] into")] [target]'s [organ]!</span>") //why do we have a separate set of verbs for lying targets?
|
||||
user.visible_message("<span class='danger'>[user] [pick("punched", "threw a punch against", "struck", "slammed [TU.his] [pick(attack_noun)] into")] [target]'s [organ]!</span>") //why do we have a separate set of verbs for lying targets?
|
||||
|
||||
/datum/unarmed_attack/kick
|
||||
attack_verb = list("kicked", "kicked", "kicked", "kneed")
|
||||
@@ -198,13 +204,14 @@ var/global/list/sparring_attack_cache = list()
|
||||
|
||||
/datum/unarmed_attack/kick/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage)
|
||||
var/obj/item/organ/external/affecting = target.get_organ(zone)
|
||||
var/datum/gender/TT = gender_datums[target.get_visible_gender()]
|
||||
var/organ = affecting.name
|
||||
|
||||
attack_damage = Clamp(attack_damage, 1, 5)
|
||||
|
||||
switch(attack_damage)
|
||||
if(1 to 2) user.visible_message("<span class='danger'>[user] threw [target] a glancing [pick(attack_noun)] to the [organ]!</span>") //it's not that they're kicking lightly, it's that the kick didn't quite connect
|
||||
if(3 to 4) user.visible_message("<span class='danger'>[user] [pick(attack_verb)] [target] in \his [organ]!</span>")
|
||||
if(3 to 4) user.visible_message("<span class='danger'>[user] [pick(attack_verb)] [target] in [TT.his] [organ]!</span>")
|
||||
if(5) user.visible_message("<span class='danger'>[user] landed a strong [pick(attack_noun)] against [target]'s [organ]!</span>")
|
||||
|
||||
/datum/unarmed_attack/stomp
|
||||
@@ -242,12 +249,13 @@ var/global/list/sparring_attack_cache = list()
|
||||
var/obj/item/organ/external/affecting = target.get_organ(zone)
|
||||
var/organ = affecting.name
|
||||
var/obj/item/clothing/shoes = user.shoes
|
||||
var/datum/gender/TU = gender_datums[user.get_visible_gender()]
|
||||
|
||||
attack_damage = Clamp(attack_damage, 1, 5)
|
||||
|
||||
switch(attack_damage)
|
||||
if(1 to 4) user.visible_message("<span class='danger'>[pick("[user] stomped on", "[user] slammed \his [shoes ? copytext(shoes.name, 1, -1) : "foot"] down onto")] [target]'s [organ]!</span>")
|
||||
if(5) user.visible_message("<span class='danger'>[pick("[user] landed a powerful stomp on", "[user] stomped down hard on", "[user] slammed \his [shoes ? copytext(shoes.name, 1, -1) : "foot"] down hard onto")] [target]'s [organ]!</span>") //Devastated lol. No. We want to say that the stomp was powerful or forceful, not that it /wrought devastation/
|
||||
if(1 to 4) user.visible_message("<span class='danger'>[pick("[user] stomped on", "[user] slammed [TU.his] [shoes ? copytext(shoes.name, 1, -1) : "foot"] down onto")] [target]'s [organ]!</span>")
|
||||
if(5) user.visible_message("<span class='danger'>[pick("[user] landed a powerful stomp on", "[user] stomped down hard on", "[user] slammed [TU.his] [shoes ? copytext(shoes.name, 1, -1) : "foot"] down hard onto")] [target]'s [organ]!</span>") //Devastated lol. No. We want to say that the stomp was powerful or forceful, not that it /wrought devastation/
|
||||
|
||||
/datum/unarmed_attack/light_strike
|
||||
deal_halloss = 3
|
||||
|
||||
@@ -62,11 +62,12 @@
|
||||
count++
|
||||
|
||||
// Check the carrier
|
||||
var/datum/gender/TM = gender_datums[M.get_visible_gender()]
|
||||
var/answer = input(M, "[P] is requesting a DNA sample from you. Will you allow it to confirm your identity?", "[P] Check DNA", "No") in list("Yes", "No")
|
||||
if(answer == "Yes")
|
||||
var/turf/T = get_turf_or_move(P.loc)
|
||||
for (var/mob/v in viewers(T))
|
||||
v.show_message("<span class='notice'>[M] presses \his thumb against [P].</span>", 3, "<span class='notice'>[P] makes a sharp clicking sound as it extracts DNA material from [M].</span>", 2)
|
||||
v.show_message("<span class='notice'>[M] presses [TM.his] thumb against [P].</span>", 3, "<span class='notice'>[P] makes a sharp clicking sound as it extracts DNA material from [M].</span>", 2)
|
||||
var/datum/dna/dna = M.dna
|
||||
P << "<font color = red><h3>[M]'s UE string : [dna.unique_enzymes]</h3></font>"
|
||||
if(dna.unique_enzymes == P.master_dna)
|
||||
@@ -74,7 +75,7 @@
|
||||
else
|
||||
P << "<b>DNA does not match stored Master DNA.</b>"
|
||||
else
|
||||
P << "[M] does not seem like \he is going to provide a DNA sample willingly."
|
||||
P << "[M] does not seem like [TM.he] is going to provide a DNA sample willingly."
|
||||
return 1
|
||||
|
||||
/datum/pai_software/radio_config
|
||||
|
||||
@@ -174,7 +174,7 @@ var/list/mob_hat_cache = list()
|
||||
return
|
||||
|
||||
else if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda))
|
||||
|
||||
var/datum/gender/TU = gender_datums[user.get_visible_gender()]
|
||||
if(stat == 2)
|
||||
|
||||
if(!config.allow_drone_spawn || emagged || health < -35) //It's dead, Dave.
|
||||
@@ -185,7 +185,7 @@ var/list/mob_hat_cache = list()
|
||||
to_chat(user, "<span class='danger'>Access denied.</span>")
|
||||
return
|
||||
|
||||
user.visible_message("<span class='danger'>\The [user] swipes \his ID card through \the [src], attempting to reboot it.</span>", "<span class='danger'>>You swipe your ID card through \the [src], attempting to reboot it.</span>")
|
||||
user.visible_message("<span class='danger'>\The [user] swipes [TU.his] ID card through \the [src], attempting to reboot it.</span>", "<span class='danger'>>You swipe your ID card through \the [src], attempting to reboot it.</span>")
|
||||
var/drones = 0
|
||||
for(var/mob/living/silicon/robot/drone/D in world)
|
||||
if(D.key && D.client)
|
||||
@@ -195,7 +195,7 @@ var/list/mob_hat_cache = list()
|
||||
return
|
||||
|
||||
else
|
||||
user.visible_message("<span class='danger'>\The [user] swipes \his ID card through \the [src], attempting to shut it down.</span>", "<span class='danger'>You swipe your ID card through \the [src], attempting to shut it down.</span>")
|
||||
user.visible_message("<span class='danger'>\The [user] swipes [TU.his] ID card through \the [src], attempting to shut it down.</span>", "<span class='danger'>You swipe your ID card through \the [src], attempting to shut it down.</span>")
|
||||
|
||||
if(emagged)
|
||||
return
|
||||
@@ -233,11 +233,12 @@ var/list/mob_hat_cache = list()
|
||||
clear_supplied_laws()
|
||||
clear_inherent_laws()
|
||||
laws = new /datum/ai_laws/syndicate_override
|
||||
set_zeroth_law("Only [user.real_name] and people \he designates as being such are operatives.")
|
||||
var/datum/gender/TU = gender_datums[user.get_visible_gender()]
|
||||
set_zeroth_law("Only [user.real_name] and people [TU.he] designate[TU.s] as being such are operatives.")
|
||||
|
||||
src << "<b>Obey these laws:</b>"
|
||||
laws.show_laws(src)
|
||||
src << "<span class='danger'>ALERT: [user.real_name] is your new master. Obey your new laws and \his commands.</span>"
|
||||
src << "<span class='danger'>ALERT: [user.real_name] [TU.is] your new master. Obey your new laws and [TU.his] commands.</span>"
|
||||
return 1
|
||||
|
||||
//DRONE LIFE/DEATH
|
||||
|
||||
@@ -1064,7 +1064,8 @@
|
||||
laws = new /datum/ai_laws/syndicate_override
|
||||
var/time = time2text(world.realtime,"hh:mm:ss")
|
||||
lawchanges.Add("[time] <B>:</B> [user.name]([user.key]) emagged [name]([key])")
|
||||
set_zeroth_law("Only [user.real_name] and people \he designates as being such are operatives.")
|
||||
var/datum/gender/TU = gender_datums[user.get_visible_gender()]
|
||||
set_zeroth_law("Only [user.real_name] and people [TU.he] designate[TU.s] as being such are operatives.")
|
||||
. = 1
|
||||
spawn()
|
||||
src << "<span class='danger'>ALERT: Foreign software detected.</span>"
|
||||
@@ -1082,7 +1083,7 @@
|
||||
src << "<span class='danger'>ERRORERRORERROR</span>"
|
||||
src << "<b>Obey these laws:</b>"
|
||||
laws.show_laws(src)
|
||||
src << "<span class='danger'>ALERT: [user.real_name] is your new master. Obey your new laws and his commands.</span>"
|
||||
src << "<span class='danger'>ALERT: [user.real_name] is your new master. Obey your new laws and [TU.his] commands.</span>"
|
||||
updateicon()
|
||||
else
|
||||
user << "You fail to hack [src]'s interface."
|
||||
|
||||
@@ -577,7 +577,8 @@
|
||||
if ((M.client && !( M.blinded )))
|
||||
M.show_message("<span class='notice'>[user] applies the [MED] on [src].</span>")
|
||||
else
|
||||
user << "<span class='notice'>\The [src] is dead, medical items won't bring \him back to life.</span>"
|
||||
var/datum/gender/T = gender_datums[src.get_visible_gender()]
|
||||
user << "<span class='notice'>\The [src] is dead, medical items won't bring [T.him] back to life.</span>" // the gender lookup is somewhat overkill, but it functions identically to the obsolete gender macros and future-proofs this code
|
||||
if(meat_type && (stat == DEAD)) //if the animal has a meat, and if it is dead.
|
||||
if(istype(O, /obj/item/weapon/material/knife) || istype(O, /obj/item/weapon/material/knife/butch))
|
||||
harvest(user)
|
||||
|
||||
@@ -647,6 +647,9 @@
|
||||
/mob/proc/get_gender()
|
||||
return gender
|
||||
|
||||
/mob/proc/get_visible_gender()
|
||||
return gender
|
||||
|
||||
/mob/proc/see(message)
|
||||
if(!is_active())
|
||||
return 0
|
||||
|
||||
@@ -236,6 +236,8 @@
|
||||
if(!assailant.canmove || assailant.lying)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
var/datum/gender/TU = gender_datums[assailant.get_visible_gender()]
|
||||
|
||||
last_action = world.time
|
||||
|
||||
@@ -256,7 +258,7 @@
|
||||
assailant << "<span class='notice'>You squeeze [affecting], but nothing interesting happens.</span>"
|
||||
return
|
||||
|
||||
assailant.visible_message("<span class='warning'>[assailant] has reinforced \his grip on [affecting] (now neck)!</span>")
|
||||
assailant.visible_message("<span class='warning'>[assailant] has reinforced [TU.his] grip on [affecting] (now neck)!</span>")
|
||||
state = GRAB_NECK
|
||||
icon_state = "grabbed+1"
|
||||
assailant.set_dir(get_dir(assailant, affecting))
|
||||
@@ -267,11 +269,11 @@
|
||||
hud.name = "kill"
|
||||
affecting.Stun(10) //10 ticks of ensured grab
|
||||
else if(state < GRAB_UPGRADING)
|
||||
assailant.visible_message("<span class='danger'>[assailant] starts to tighten \his grip on [affecting]'s neck!</span>")
|
||||
assailant.visible_message("<span class='danger'>[assailant] starts to tighten [TU.his] grip on [affecting]'s neck!</span>")
|
||||
hud.icon_state = "kill1"
|
||||
|
||||
state = GRAB_KILL
|
||||
assailant.visible_message("<span class='danger'>[assailant] has tightened \his grip on [affecting]'s neck!</span>")
|
||||
assailant.visible_message("<span class='danger'>[assailant] has tightened [TU.his] grip on [affecting]'s neck!</span>")
|
||||
affecting.attack_log += "\[[time_stamp()]\] <font color='orange'>Has been strangled (kill intent) by [assailant.name] ([assailant.ckey])</font>"
|
||||
assailant.attack_log += "\[[time_stamp()]\] <font color='red'>Strangled (kill intent) [affecting.name] ([affecting.ckey])</font>"
|
||||
msg_admin_attack("[key_name(assailant)] strangled (kill intent) [key_name(affecting)]")
|
||||
@@ -347,7 +349,8 @@
|
||||
|
||||
/obj/item/weapon/grab/proc/reset_kill_state()
|
||||
if(state == GRAB_KILL)
|
||||
assailant.visible_message("<span class='warning'>[assailant] lost \his tight grip on [affecting]'s neck!</span>")
|
||||
var/datum/gender/T = gender_datums[assailant.get_visible_gender()]
|
||||
assailant.visible_message("<span class='warning'>[assailant] lost [T.his] tight grip on [affecting]'s neck!</span>")
|
||||
hud.icon_state = "kill"
|
||||
state = GRAB_NECK
|
||||
|
||||
|
||||
@@ -93,7 +93,8 @@
|
||||
return
|
||||
if(target.lying)
|
||||
return
|
||||
attacker.visible_message("<span class='danger'>[attacker] thrusts \his head into [target]'s skull!</span>")
|
||||
var/datum/gender/T = gender_datums[attacker.get_visible_gender()]
|
||||
attacker.visible_message("<span class='danger'>[attacker] thrusts [T.his] head into [target]'s skull!</span>")
|
||||
|
||||
var/damage = 20
|
||||
var/obj/item/clothing/hat = attacker.head
|
||||
|
||||
@@ -424,7 +424,8 @@
|
||||
|
||||
if(damage_desc)
|
||||
if(user == src.owner)
|
||||
user.visible_message("<span class='notice'>\The [user] patches [damage_desc] on \his [src.name] with [tool].</span>")
|
||||
var/datum/gender/T = gender_datums[user.get_visible_gender()]
|
||||
user.visible_message("<span class='notice'>\The [user] patches [damage_desc] on [T.his] [src.name] with [tool].</span>")
|
||||
else
|
||||
user.visible_message("<span class='notice'>\The [user] patches [damage_desc] on [owner]'s [src.name] with [tool].</span>")
|
||||
|
||||
|
||||
@@ -314,12 +314,13 @@
|
||||
|
||||
/obj/item/weapon/paper/proc/burnpaper(obj/item/weapon/flame/P, mob/user)
|
||||
var/class = "warning"
|
||||
var/datum/gender/TU = gender_datums[user.get_visible_gender()]
|
||||
|
||||
if(P.lit && !user.restrained())
|
||||
if(istype(P, /obj/item/weapon/flame/lighter/zippo))
|
||||
class = "rose"
|
||||
|
||||
user.visible_message("<span class='[class]'>[user] holds \the [P] up to \the [src], it looks like \he's trying to burn it!</span>", \
|
||||
|
||||
user.visible_message("<span class='[class]'>[user] holds \the [P] up to \the [src], it looks like [TU.hes] trying to burn it!</span>", \
|
||||
"<span class='[class]'>You hold \the [P] up to \the [src], burning it slowly.</span>")
|
||||
|
||||
spawn(20)
|
||||
|
||||
@@ -75,8 +75,8 @@
|
||||
if(P.lit && !user.restrained())
|
||||
if(istype(P, /obj/item/weapon/flame/lighter/zippo))
|
||||
class = "rose>"
|
||||
|
||||
user.visible_message("<span class='[class]'>[user] holds \the [P] up to \the [src], it looks like \he's trying to burn it!</span>", \
|
||||
var/datum/gender/TU = gender_datums[user.get_visible_gender()]
|
||||
user.visible_message("<span class='[class]'>[user] holds \the [P] up to \the [src], it looks like [TU.he] [TU.is] trying to burn it!</span>", \
|
||||
"<span class='[class]'>You hold \the [P] up to \the [src], burning it slowly.</span>")
|
||||
|
||||
spawn(20)
|
||||
|
||||
@@ -167,12 +167,13 @@
|
||||
..()
|
||||
|
||||
/obj/item/weapon/shreddedp/proc/burnpaper(var/obj/item/weapon/flame/lighter/P, var/mob/user)
|
||||
var/datum/gender/TU = gender_datums[user.get_visible_gender()]
|
||||
if(user.restrained())
|
||||
return
|
||||
if(!P.lit)
|
||||
user << "<span class='warning'>\The [P] is not lit.</span>"
|
||||
return
|
||||
user.visible_message("<span class='warning'>\The [user] holds \the [P] up to \the [src]. It looks like \he's trying to burn it!</span>", \
|
||||
user.visible_message("<span class='warning'>\The [user] holds \the [P] up to \the [src]. It looks like [TU.he] [TU.is] trying to burn it!</span>", \
|
||||
"<span class='warning'>You hold \the [P] up to \the [src], burning it slowly.</span>")
|
||||
if(!do_after(user,20))
|
||||
user << "<span class='warning'>You must hold \the [P] steady to burn \the [src].</span>"
|
||||
|
||||
@@ -196,7 +196,8 @@
|
||||
var/colourName = "red" //for updateIcon purposes
|
||||
|
||||
suicide_act(mob/user)
|
||||
viewers(user) << "<font color='red'><b>[user] is jamming the [src.name] up \his nose and into \his brain. It looks like \he's trying to commit suicide.</b></font>"
|
||||
var/datum/gender/TU = gender_datums[user.get_visible_gender()]
|
||||
viewers(user) << "<font color='red'><b>[user] is jamming the [src.name] up [TU.his] nose and into [TU.his] brain. It looks like [TU.he] [TU.is] trying to commit suicide.</b></font>"
|
||||
return (BRUTELOSS|OXYLOSS)
|
||||
|
||||
New()
|
||||
|
||||
@@ -497,10 +497,11 @@ obj/structure/cable/proc/cableColor(var/colorC)
|
||||
charge_costs = list(1)
|
||||
|
||||
/obj/item/stack/cable_coil/suicide_act(mob/user)
|
||||
var/datum/gender/TU = gender_datums[user.get_visible_gender()]
|
||||
if(locate(/obj/item/weapon/stool) in user.loc)
|
||||
user.visible_message("<span class='suicide'>[user] is making a noose with the [src.name]! It looks like \he's trying to commit suicide.</span>")
|
||||
user.visible_message("<span class='suicide'>[user] is making a noose with the [src.name]! It looks like [TU.he] [TU.is] trying to commit suicide.</span>")
|
||||
else
|
||||
user.visible_message("<span class='suicide'>[user] is strangling \himself with the [src.name]! It looks like \he's trying to commit suicide.</span>")
|
||||
user.visible_message("<span class='suicide'>[user] is strangling [TU.himself] with the [src.name]! It looks like [TU.he] [TU.is] trying to commit suicide.</span>")
|
||||
return(OXYLOSS)
|
||||
|
||||
/obj/item/stack/cable_coil/New(loc, length = MAXCOIL, var/param_color = null)
|
||||
|
||||
@@ -234,5 +234,6 @@
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/cell/suicide_act(mob/user)
|
||||
viewers(user) << "<span class='danger'>\The [user] is licking the electrodes of \the [src]! It looks like \he's trying to commit suicide.</span>"
|
||||
var/datum/gender/TU = gender_datums[user.get_visible_gender()]
|
||||
viewers(user) << "<span class='danger'>\The [user] is licking the electrodes of \the [src]! It looks like [TU.he] [TU.is] trying to commit suicide.</span>"
|
||||
return (FIRELOSS)
|
||||
@@ -296,7 +296,8 @@
|
||||
ui_interact(user)
|
||||
|
||||
/obj/machinery/power/supermatter/attack_hand(mob/user as mob)
|
||||
user.visible_message("<span class=\"warning\">\The [user] reaches out and touches \the [src], inducing a resonance... \his body starts to glow and bursts into flames before flashing into ash.</span>",\
|
||||
var/datum/gender/TU = gender_datums[user.get_visible_gender()]
|
||||
user.visible_message("<span class=\"warning\">\The [user] reaches out and touches \the [src], inducing a resonance... [TU.his] body starts to glow and bursts into flames before flashing into ash.</span>",\
|
||||
"<span class=\"danger\">You reach out and touch \the [src]. Everything starts burning and all you can hear is ringing. Your last thought is \"That was not a wise decision.\"</span>",\
|
||||
"<span class=\"warning\">You hear an uneartly ringing, then what sounds like a shrilling kettle as you are washed with a wave of heat.</span>")
|
||||
|
||||
@@ -342,7 +343,9 @@
|
||||
if(istype(AM, /obj/effect))
|
||||
return
|
||||
if(istype(AM, /mob/living))
|
||||
AM.visible_message("<span class=\"warning\">\The [AM] slams into \the [src] inducing a resonance... \his body starts to glow and catch flame before flashing into ash.</span>",\
|
||||
var/mob/living/M = AM
|
||||
var/datum/gender/T = gender_datums[M.get_visible_gender()]
|
||||
AM.visible_message("<span class=\"warning\">\The [AM] slams into \the [src] inducing a resonance... [T.his] body starts to glow and catch flame before flashing into ash.</span>",\
|
||||
"<span class=\"danger\">You slam into \the [src] as your ears are filled with unearthly ringing. Your last thought is \"Oh, fuck.\"</span>",\
|
||||
"<span class=\"warning\">You hear an uneartly ringing, then what sounds like a shrilling kettle as you are washed with a wave of heat.</span>")
|
||||
else if(!grav_pulling) //To prevent spam, detonating supermatter does not indicate non-mobs being destroyed
|
||||
|
||||
@@ -150,8 +150,9 @@
|
||||
if(P)
|
||||
if(process_projectile(P, user, user, pick("l_foot", "r_foot")))
|
||||
handle_post_fire(user, user)
|
||||
var/datum/gender/TU = gender_datums[user.get_visible_gender()]
|
||||
user.visible_message(
|
||||
"<span class='danger'>\The [user] shoots \himself in the foot with \the [src]!</span>",
|
||||
"<span class='danger'>\The [user] shoots [TU.himself] in the foot with \the [src]!</span>",
|
||||
"<span class='danger'>You shoot yourself in the foot with \the [src]!</span>"
|
||||
)
|
||||
M.drop_item()
|
||||
|
||||
@@ -121,8 +121,9 @@
|
||||
if(prob(15))
|
||||
M.apply_effect((rand(30,80)),IRRADIATE)
|
||||
M.Weaken(5)
|
||||
var/datum/gender/TM = gender_datums[M.get_visible_gender()]
|
||||
for (var/mob/V in viewers(src))
|
||||
V.show_message("<font color='red'>[M] writhes in pain as \his vacuoles boil.</font>", 3, "<font color='red'>You hear the crunching of leaves.</font>", 2)
|
||||
V.show_message("<font color='red'>[M] writhes in pain as [TM.his] vacuoles boil.</font>", 3, "<font color='red'>You hear the crunching of leaves.</font>", 2)
|
||||
if(prob(35))
|
||||
// for (var/mob/V in viewers(src)) //Public messages commented out to prevent possible metaish genetics experimentation and stuff. - Cheridan
|
||||
// V.show_message("<font color='red'>[M] is mutated by the radiation beam.</font>", 3, "<font color='red'> You hear the snapping of twigs.</font>", 2)
|
||||
|
||||
@@ -95,5 +95,6 @@
|
||||
|
||||
|
||||
/datum/surgery_step/slime/saw_core/fail_step(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<font color='red'>[user]'s hand slips, causing \him to miss the core!</font>", \
|
||||
var/datum/gender/T = gender_datums[user.get_visible_gender()]
|
||||
user.visible_message("<font color='red'>[user]'s hand slips, causing [T.him] to miss the core!</font>", \
|
||||
"<font color='red'>Your hand slips, causing you to miss the core!</font>")
|
||||
@@ -121,9 +121,10 @@
|
||||
stage = 4
|
||||
badness = 3
|
||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||
var/datum/gender/TM = gender_datums[mob.get_visible_gender()]
|
||||
mob.suiciding = 30
|
||||
//instead of killing them instantly, just put them at -175 health and let 'em gasp for a while
|
||||
viewers(mob) << "<font color='red'><b>[mob.name] is holding \his breath. It looks like \he's trying to commit suicide.</b></font>"
|
||||
viewers(mob) << "<font color='red'><b>[mob.name] is holding [TM.his] breath. It looks like [TM.he] [TM.is] trying to commit suicide.</b></font>"
|
||||
mob.adjustOxyLoss(175 - mob.getToxLoss() - mob.getFireLoss() - mob.getBruteLoss() - mob.getOxyLoss())
|
||||
mob.updatehealth()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user