mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
Yeet
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
BIN
sound/voice/awoo.ogg
Normal file
BIN
sound/voice/awoo.ogg
Normal file
Binary file not shown.
BIN
sound/voice/bark2.ogg
Normal file
BIN
sound/voice/bark2.ogg
Normal file
Binary file not shown.
BIN
sound/voice/hiss.ogg
Normal file
BIN
sound/voice/hiss.ogg
Normal file
Binary file not shown.
BIN
sound/voice/merp.ogg
Normal file
BIN
sound/voice/merp.ogg
Normal file
Binary file not shown.
BIN
sound/voice/nya.ogg
Normal file
BIN
sound/voice/nya.ogg
Normal file
Binary file not shown.
BIN
sound/voice/peep.ogg
Normal file
BIN
sound/voice/peep.ogg
Normal file
Binary file not shown.
BIN
sound/voice/weh.ogg
Normal file
BIN
sound/voice/weh.ogg
Normal file
Binary file not shown.
Reference in New Issue
Block a user