mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-24 12:37:50 +01: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
|
||||
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.
Reference in New Issue
Block a user