This commit is contained in:
BlackMajor
2019-11-13 20:23:18 +13:00
parent 5bd7195d76
commit 62631b396b
11 changed files with 136 additions and 2 deletions
@@ -17,8 +17,131 @@
message = "mlems [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] tongue up over [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] nose. Mlem."
m_type = 1
if ("awoo")
message = "awoos loudly. AwoooOOOOoooo!"
var/mob/living/carbon/human/H = src
var/obj/item/organ/external/L = H.get_organ("chest")
var/obj/item/organ/external/R = H.get_organ("head")
var/torso_good = 0
var/head_good = 0
if(L && (!(L.status & ORGAN_DESTROYED)) && (!(L.splinted)) && (!(L.status & ORGAN_BROKEN)))
torso_good = 1
if(R && (!(R.status & ORGAN_DESTROYED)) && (!(R.splinted)) && (!(R.status & ORGAN_BROKEN)))
head_good = 1
if(!torso_good && !head_good)
to_chat(usr, "<span class='danger'>You need an uninjured head and chest to be obnoxious.</span>") //discourage spam by breaking one or both
return
m_type = 2
message = "lets out an awoo."
playsound(loc, 'sound/voice/awoo.ogg', 50, 1, -1)
emoteDanger = min(1+(emoteDanger*2), 100)
var/danger = emoteDanger - 5//Base chance to break something.
var/list/involved_parts = list(BP_HEAD, BP_TORSO) // why there are organ tags and organ names i will never know
for(var/organ_name in involved_parts)
var/obj/item/organ/external/E = get_organ(organ_name)
if(!E || E.is_stump() || E.splinted || (E.status & ORGAN_BROKEN))
involved_parts -= organ_name
danger += 7 //Add 7% chance for each involved part
if(prob(danger))
spawn(10) //the dreaded spawn
var/breaking = pick(involved_parts)
var/obj/item/organ/external/E = get_organ(breaking)
if(isSynthetic())
src.Weaken(5)
E.droplimb(1,DROPLIMB_EDGE)
message += " <span class='danger'>And falls apart!</span>" //might be redundant, havent seen a synth die yet in testing
log_and_message_admins("broke their [breaking] with *awoo and were kicked.", src)
to_chat(usr, "<span class='danger'>You have been automatically logged out for spamming emotes.</span>")
Logout(src)
else
src.Weaken(5)
if(E.cannot_break) //Prometheans go splat
E.droplimb(0,DROPLIMB_BLUNT)
else
E.fracture()
message += " <span class='danger'>And breaks something!</span>"
log_and_message_admins("broke their [breaking] with *awoo and were kicked.", src)
to_chat(usr, "<span class='danger'>You have been automatically logged out for spamming emotes.</span>")
Logout(src)
if ("nya")
var/mob/living/carbon/human/H = src
var/obj/item/organ/external/L = H.get_organ("chest")
var/obj/item/organ/external/R = H.get_organ("head")
var/torso_good = 0
var/head_good = 0
if(L && (!(L.status & ORGAN_DESTROYED)) && (!(L.splinted)) && (!(L.status & ORGAN_BROKEN)))
torso_good = 1
if(R && (!(R.status & ORGAN_DESTROYED)) && (!(R.splinted)) && (!(R.status & ORGAN_BROKEN)))
head_good = 1
//discourage spam by potentially breaking one or both
if(!torso_good && !head_good)
to_chat(usr, "<span class='danger'>You need an uninjured head and chest to be obnoxious.</span>")
return
message = "lets out a nya."
m_type = 2
playsound(loc, 'sound/voice/nya.ogg', 50, 1, -1)
emoteDanger = min(1+(emoteDanger*2), 100)
var/danger = emoteDanger - 5//Base chance to break something.
var/list/involved_parts = list(BP_HEAD, BP_TORSO) // why there are organ tags and organ names i will never know
for(var/organ_name in involved_parts)
var/obj/item/organ/external/E = get_organ(organ_name)
if(!E || E.is_stump() || E.splinted || (E.status & ORGAN_BROKEN))
involved_parts -= organ_name
danger += 5 //Add 5% chance for each involved part
if(prob(danger))
spawn(10) //the dreaded spawn
var/breaking = pick(involved_parts)
var/obj/item/organ/external/E = get_organ(breaking)
if(isSynthetic())
src.Weaken(5)
E.droplimb(1,DROPLIMB_EDGE)
message += " <span class='danger'>And loses their [breaking]!</span>" //redundant unless a non-lethal limb is added to the parts list
log_and_message_admins("broke their [breaking] with *nya and were kicked.", src)
to_chat(usr, "<span class='danger'>You have been automatically logged out for spamming emotes.</span>")
Logout(src)
else
src.Weaken(5)
if(E.cannot_break) //Prometheans go splat
E.droplimb(0,DROPLIMB_BLUNT)
else
E.fracture()
message += " <span class='danger'>And breaks something!</span>"
log_and_message_admins("broke their [breaking] with *nya and were kicked.", src)
to_chat(usr, "<span class='danger'>You have been automatically logged out for spamming emotes.</span>")
Logout(src)
if ("peep")
message = "peeps like a bird."
m_type = 2
playsound(loc, 'sound/voice/peep.ogg', 50, 1, -1)
if("chirp")
message = "chirps!"
playsound(src.loc, 'sound/misc/nymphchirp.ogg', 50, 0)
m_type = 2
if ("weh")
message = "lets out a weh."
m_type = 2
playsound(loc, 'sound/voice/weh.ogg', 50, 1, -1)
if ("merp")
message = "lets out a merp."
m_type = 2
playsound(loc, 'sound/voice/merp.ogg', 50, 1, -1)
if ("bark")
message = "lets out a bark."
m_type = 2
playsound(loc, 'sound/voice/bark2.ogg', 50, 1, -1)
if ("his")
message = "lets out a hiss."
m_type = 2
playsound(loc, 'sound/voice/hiss.ogg', 50, 1, -1)
if ("nsay")
nsay()
return TRUE
@@ -20,6 +20,9 @@
var/active_regen = FALSE //Used for the regenerate proc in human_powers.dm
var/active_regen_delay = 300
var/emoteDanger = 1 // What the current danger for spamming emotes is - shared between different types of emotes to keep people from just
// flip/snap/flip/snap. Decays at a rate of 1 per second to a minimum of 1.
/mob/living/carbon/human/Initialize(mapload, var/new_species = null)
if(!dna)
dna = new /datum/dna(null)
@@ -37,6 +37,8 @@
set invisibility = 0
set background = BACKGROUND_ENABLED
var/timeSinceLastTick = world.time - lastLifeProc //Used to curb emote spam
if (transforming)
return
@@ -95,6 +97,10 @@
pulse = handle_pulse()
//Used to determine if someone should get ass blasted for awoo'ing
emoteDanger = max(0, emoteDanger - (timeSinceLastTick / 10))
/mob/living/carbon/human/proc/handle_some_updates()
if(life_tick > 5 && timeofdeath && (timeofdeath < 5 || world.time - timeofdeath > 6000)) //We are long dead, or we're junk mobs spawned like the clowns on the clown shuttle
return 0
+3 -1
View File
@@ -68,4 +68,6 @@
var/looking_elsewhere = FALSE //If the mob's view has been relocated to somewhere else, like via a camera or with binocs
var/image/selected_image = null // Used for buildmode AI control stuff.
var/image/selected_image = null // Used for buildmode AI control stuff.
var/lastLifeProc = 0 // Wallclock time of the last time this mob had life() called on them (at finish), used for tying variables to wallclock rather than tickcount
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.