mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
601 lines
20 KiB
Plaintext
601 lines
20 KiB
Plaintext
/obj/item/toy/plush
|
|
name = "plush"
|
|
desc = "This is the special coder plush, do not steal."
|
|
icon = 'icons/obj/plushes.dmi'
|
|
icon_state = "debug"
|
|
attack_verb = list("thumped", "whomped", "bumped")
|
|
w_class = WEIGHT_CLASS_SMALL
|
|
resistance_flags = FLAMMABLE
|
|
var/list/squeak_override //Weighted list; If you want your plush to have different squeak sounds use this
|
|
var/stuffed = TRUE //If the plushie has stuffing in it
|
|
var/obj/item/grenade/grenade //You can remove the stuffing from a plushie and add a grenade to it for *nefarious uses*
|
|
//--love ~<3--
|
|
gender = NEUTER
|
|
var/obj/item/toy/plush/lover
|
|
var/obj/item/toy/plush/partner
|
|
var/obj/item/toy/plush/plush_child
|
|
var/obj/item/toy/plush/paternal_parent //who initiated creation
|
|
var/obj/item/toy/plush/maternal_parent //who owns, see love()
|
|
var/static/list/breeding_blacklist = typecacheof(/obj/item/toy/plush/carpplushie/dehy_carp) // you cannot have sexual relations with this plush
|
|
var/list/scorned = list() //who the plush hates
|
|
var/list/scorned_by = list() //who hates the plush, to remove external references on Destroy()
|
|
var/heartbroken = FALSE
|
|
var/vowbroken = FALSE
|
|
var/young = FALSE
|
|
var/mood_message
|
|
var/list/love_message
|
|
var/list/partner_message
|
|
var/list/heartbroken_message
|
|
var/list/vowbroken_message
|
|
var/list/parent_message
|
|
var/normal_desc
|
|
//--end of love :'(--
|
|
|
|
/obj/item/toy/plush/Initialize(mapload)
|
|
. = ..()
|
|
AddComponent(/datum/component/squeak, squeak_override)
|
|
|
|
//have we decided if Pinocchio goes in the blue or pink aisle yet?
|
|
if(gender == NEUTER)
|
|
if(prob(50))
|
|
gender = FEMALE
|
|
else
|
|
gender = MALE
|
|
|
|
love_message = list("\n[src] is so happy, \he could rip a seam!")
|
|
partner_message = list("\n[src] has a ring on \his finger! It says bound to my dear [partner].")
|
|
heartbroken_message = list("\n[src] looks so sad.")
|
|
vowbroken_message = list("\n[src] lost \his ring...")
|
|
parent_message = list("\n[src] can't remember what sleep is.")
|
|
|
|
normal_desc = desc
|
|
|
|
/obj/item/toy/plush/Destroy()
|
|
QDEL_NULL(grenade)
|
|
|
|
//inform next of kin and... acquaintances
|
|
if(partner)
|
|
partner.bad_news(src)
|
|
partner = null
|
|
lover = null
|
|
else if(lover)
|
|
lover.bad_news(src)
|
|
lover = null
|
|
|
|
if(paternal_parent)
|
|
paternal_parent.bad_news(src)
|
|
paternal_parent = null
|
|
|
|
if(maternal_parent)
|
|
maternal_parent.bad_news(src)
|
|
maternal_parent = null
|
|
|
|
if(plush_child)
|
|
plush_child.bad_news(src)
|
|
plush_child = null
|
|
|
|
var/i
|
|
var/obj/item/toy/plush/P
|
|
for(i=1, i<=scorned.len, i++)
|
|
P = scorned[i]
|
|
P.bad_news(src)
|
|
scorned = null
|
|
|
|
for(i=1, i<=scorned_by.len, i++)
|
|
P = scorned_by[i]
|
|
P.bad_news(src)
|
|
scorned_by = null
|
|
|
|
//null remaining lists
|
|
squeak_override = null
|
|
|
|
love_message = null
|
|
partner_message = null
|
|
heartbroken_message = null
|
|
vowbroken_message = null
|
|
parent_message = null
|
|
|
|
return ..()
|
|
|
|
/obj/item/toy/plush/handle_atom_del(atom/A)
|
|
if(A == grenade)
|
|
grenade = null
|
|
..()
|
|
|
|
/obj/item/toy/plush/attack_self(mob/user)
|
|
. = ..()
|
|
if(stuffed || grenade)
|
|
to_chat(user, span_notice("You pet [src]. D'awww."))
|
|
if(grenade && !grenade.active)
|
|
log_game("[key_name(user)] activated a hidden grenade in [src].")
|
|
grenade.preprime(user, msg = FALSE, volume = 10)
|
|
else
|
|
to_chat(user, span_notice("You try to pet [src], but it has no stuffing. Aww..."))
|
|
|
|
/obj/item/toy/plush/attackby(obj/item/I, mob/living/user, params)
|
|
if(I.is_sharp())
|
|
if(!grenade)
|
|
if(!stuffed)
|
|
to_chat(user, span_warning("You already murdered it!"))
|
|
return
|
|
user.visible_message(span_notice("[user] tears out the stuffing from [src]!"), span_notice("You rip a bunch of the stuffing from [src]. Murderer."))
|
|
I.play_tool_sound(src)
|
|
stuffed = FALSE
|
|
else
|
|
to_chat(user, span_notice("You remove the grenade from [src]."))
|
|
user.put_in_hands(grenade)
|
|
grenade = null
|
|
return
|
|
if(istype(I, /obj/item/grenade))
|
|
if(stuffed)
|
|
to_chat(user, span_warning("You need to remove some stuffing first!"))
|
|
return
|
|
if(grenade)
|
|
to_chat(user, span_warning("[src] already has a grenade!"))
|
|
return
|
|
if(taped) //yogs - no
|
|
to_chat(user, span_warning("[src] is too sticky to add a grenade!"))
|
|
return
|
|
if(!user.transferItemToLoc(I, src))
|
|
return
|
|
user.visible_message(span_warning("[user] slides [grenade] into [src]."), \
|
|
span_danger("You slide [I] into [src]."))
|
|
grenade = I
|
|
var/turf/grenade_turf = get_turf(src)
|
|
log_game("[key_name(user)] added a grenade ([I.name]) to [src] at [AREACOORD(grenade_turf)].")
|
|
return
|
|
if(istype(I, /obj/item/toy/plush))
|
|
love(I, user)
|
|
return
|
|
return ..()
|
|
|
|
/obj/item/toy/plush/proc/love(obj/item/toy/plush/Kisser, mob/living/user) //~<3
|
|
var/chance = 100 //to steal a kiss, surely there's a 100% chance no-one would reject a plush such as I?
|
|
var/concern = 20 //perhaps something might cloud true love with doubt
|
|
var/loyalty = 30 //why should another get between us?
|
|
var/duty = 50 //conquering another's is what I live for
|
|
|
|
//we are not catholic
|
|
if(young == TRUE || Kisser.young == TRUE)
|
|
user.show_message(span_notice("[src] plays tag with [Kisser]."), MSG_VISUAL,
|
|
span_notice("They're happy."), NONE)
|
|
Kisser.cheer_up()
|
|
cheer_up()
|
|
|
|
//never again
|
|
else if(Kisser in scorned)
|
|
//message, visible, alternate message, neither visible nor audible
|
|
user.show_message(span_notice("[src] rejects the advances of [Kisser]!"), MSG_VISUAL,
|
|
span_notice("That didn't feel like it worked."), NONE)
|
|
else if(src in Kisser.scorned)
|
|
user.show_message(span_notice("[Kisser] realises who [src] is and turns away."), MSG_VISUAL,
|
|
span_notice("That didn't feel like it worked."), NONE)
|
|
|
|
//first comes love
|
|
else if(Kisser.lover != src && Kisser.partner != src) //cannot be lovers or married
|
|
if(Kisser.lover) //if the initiator has a lover
|
|
Kisser.lover.heartbreak(Kisser) //the old lover can get over the kiss-and-run whilst the kisser has some fun
|
|
chance -= concern //one heart already broken, what does another mean?
|
|
if(lover) //if the recipient has a lover
|
|
chance -= loyalty //mustn't... but those lips
|
|
if(partner) //if the recipient has a partner
|
|
chance -= duty //do we mate for life?
|
|
|
|
if(prob(chance)) //did we bag a date?
|
|
user.visible_message(span_notice("[user] makes [Kisser] kiss [src]!"),
|
|
span_notice("You make [Kisser] kiss [src]!"))
|
|
if(lover) //who cares for the past, we live in the present
|
|
lover.heartbreak(src)
|
|
new_lover(Kisser)
|
|
Kisser.new_lover(src)
|
|
else
|
|
user.show_message(span_notice("[src] rejects the advances of [Kisser], maybe next time?"), MSG_VISUAL,
|
|
span_notice("That didn't feel like it worked, this time."), NONE)
|
|
|
|
//then comes marriage
|
|
else if(Kisser.lover == src && Kisser.partner != src) //need to be lovers (assumes loving is a two way street) but not married (also assumes similar)
|
|
user.visible_message(span_notice("[user] pronounces [Kisser] and [src] married! D'aw."),
|
|
span_notice("You pronounce [Kisser] and [src] married!"))
|
|
new_partner(Kisser)
|
|
Kisser.new_partner(src)
|
|
|
|
//then comes a baby in a baby's carriage, or an adoption in an adoption's orphanage
|
|
else if(Kisser.partner == src && !plush_child) //the one advancing does not take ownership of the child and we have a one child policy in the toyshop
|
|
user.visible_message(span_notice("[user] is going to break [Kisser] and [src] by bashing them like that."),
|
|
span_notice("[Kisser] passionately embraces [src] in your hands. Look away you perv!"))
|
|
if(plop(Kisser))
|
|
user.visible_message(span_notice("Something drops at the feet of [user]."),
|
|
span_notice("The miracle of oh god did that just come out of [src]?!"))
|
|
|
|
//then comes protection, or abstinence if we are catholic
|
|
else if(Kisser.partner == src && plush_child)
|
|
user.visible_message(span_notice("[user] makes [Kisser] nuzzle [src]!"),
|
|
span_notice("You make [Kisser] nuzzle [src]!"))
|
|
|
|
//then oh fuck something unexpected happened
|
|
else
|
|
user.show_message(span_warning("[Kisser] and [src] don't know what to do with one another."), NONE)
|
|
|
|
/obj/item/toy/plush/proc/heartbreak(obj/item/toy/plush/Brutus)
|
|
if(lover != Brutus)
|
|
debug_admins("lover != Brutus")
|
|
return //why are we considering someone we don't love?
|
|
|
|
scorned.Add(Brutus)
|
|
Brutus.scorned_by(src)
|
|
|
|
lover = null
|
|
Brutus.lover = null //feeling's mutual
|
|
|
|
heartbroken = TRUE
|
|
mood_message = pick(heartbroken_message)
|
|
|
|
if(partner == Brutus) //oh dear...
|
|
partner = null
|
|
Brutus.partner = null //it'd be weird otherwise
|
|
vowbroken = TRUE
|
|
mood_message = pick(vowbroken_message)
|
|
|
|
update_desc()
|
|
|
|
/obj/item/toy/plush/proc/scorned_by(obj/item/toy/plush/Outmoded)
|
|
scorned_by.Add(Outmoded)
|
|
|
|
/obj/item/toy/plush/proc/new_lover(obj/item/toy/plush/Juliet)
|
|
if(lover == Juliet)
|
|
return //nice try
|
|
lover = Juliet
|
|
|
|
cheer_up()
|
|
lover.cheer_up()
|
|
|
|
mood_message = pick(love_message)
|
|
update_desc()
|
|
|
|
if(partner) //who?
|
|
partner = null //more like who cares
|
|
|
|
/obj/item/toy/plush/proc/new_partner(obj/item/toy/plush/Apple_of_my_eye)
|
|
if(partner == Apple_of_my_eye)
|
|
return //double marriage is just insecurity
|
|
if(lover != Apple_of_my_eye)
|
|
return //union not born out of love will falter
|
|
|
|
partner = Apple_of_my_eye
|
|
|
|
heal_memories()
|
|
partner.heal_memories()
|
|
|
|
mood_message = pick(partner_message)
|
|
update_desc()
|
|
|
|
/obj/item/toy/plush/proc/plop(obj/item/toy/plush/Daddy)
|
|
if(partner != Daddy)
|
|
return FALSE //we do not have bastards in our toyshop
|
|
|
|
if(is_type_in_typecache(Daddy, breeding_blacklist))
|
|
return FALSE // some love is forbidden
|
|
|
|
if(prob(50)) //it has my eyes
|
|
plush_child = new type(get_turf(loc))
|
|
else //it has your eyes
|
|
plush_child = new Daddy.type(get_turf(loc))
|
|
|
|
plush_child.make_young(src, Daddy)
|
|
|
|
/obj/item/toy/plush/proc/make_young(obj/item/toy/plush/Mama, obj/item/toy/plush/Dada)
|
|
if(Mama == Dada)
|
|
return //cloning is reserved for plants and spacemen
|
|
|
|
maternal_parent = Mama
|
|
paternal_parent = Dada
|
|
young = TRUE
|
|
name = "[Mama] Jr" //Icelandic naming convention pending
|
|
normal_desc = "[src] is a little baby of [maternal_parent] and [paternal_parent]!" //original desc won't be used so the child can have moods
|
|
update_desc()
|
|
|
|
Mama.mood_message = pick(Mama.parent_message)
|
|
Mama.update_desc()
|
|
Dada.mood_message = pick(Dada.parent_message)
|
|
Dada.update_desc()
|
|
|
|
/obj/item/toy/plush/proc/bad_news(obj/item/toy/plush/Deceased) //cotton to cotton, sawdust to sawdust
|
|
var/is_that_letter_for_me = FALSE
|
|
if(partner == Deceased) //covers marriage
|
|
is_that_letter_for_me = TRUE
|
|
partner = null
|
|
lover = null
|
|
else if(lover == Deceased) //covers lovers
|
|
is_that_letter_for_me = TRUE
|
|
lover = null
|
|
|
|
//covers children
|
|
if(maternal_parent == Deceased)
|
|
is_that_letter_for_me = TRUE
|
|
maternal_parent = null
|
|
|
|
if(paternal_parent == Deceased)
|
|
is_that_letter_for_me = TRUE
|
|
paternal_parent = null
|
|
|
|
//covers parents
|
|
if(plush_child == Deceased)
|
|
is_that_letter_for_me = TRUE
|
|
plush_child = null
|
|
|
|
//covers bad memories
|
|
if(Deceased in scorned)
|
|
scorned.Remove(Deceased)
|
|
cheer_up() //what cold button eyes you have
|
|
|
|
if(Deceased in scorned_by)
|
|
scorned_by.Remove(Deceased)
|
|
|
|
//all references to the departed should be cleaned up by now
|
|
|
|
if(is_that_letter_for_me)
|
|
heartbroken = TRUE
|
|
mood_message = pick(heartbroken_message)
|
|
update_desc()
|
|
|
|
/obj/item/toy/plush/proc/cheer_up() //it'll be all right
|
|
if(!heartbroken)
|
|
return //you cannot make smile what is already
|
|
if(vowbroken)
|
|
return //it's a pretty big deal
|
|
|
|
heartbroken = !heartbroken
|
|
|
|
if(mood_message in heartbroken_message)
|
|
mood_message = null
|
|
update_desc()
|
|
|
|
/obj/item/toy/plush/proc/heal_memories() //time fixes all wounds
|
|
if(!vowbroken)
|
|
vowbroken = !vowbroken
|
|
if(mood_message in vowbroken_message)
|
|
mood_message = null
|
|
cheer_up()
|
|
|
|
/obj/item/toy/plush/proc/update_desc()
|
|
desc = normal_desc
|
|
if(mood_message)
|
|
desc += mood_message
|
|
|
|
/obj/item/toy/plush/carpplushie
|
|
name = "space carp plushie"
|
|
desc = "An adorable stuffed toy that resembles a space carp."
|
|
icon_state = "carpplush"
|
|
item_state = "carp_plushie"
|
|
attack_verb = list("bitten", "eaten", "fin slapped")
|
|
squeak_override = list('sound/weapons/bite.ogg'=1)
|
|
|
|
/obj/item/toy/plush/bubbleplush
|
|
name = "\improper Bubblegum plushie"
|
|
desc = "The friendly red demon that gives good miners gifts."
|
|
icon_state = "bubbleplush"
|
|
attack_verb = list("rent")
|
|
squeak_override = list('sound/magic/demon_attack1.ogg'=1)
|
|
|
|
/obj/item/toy/plush/plushvar
|
|
name = "\improper Ratvar plushie"
|
|
desc = "An adorable plushie of the clockwork justiciar himself with new and improved spring arm action."
|
|
icon_state = "plushvar"
|
|
var/obj/item/toy/plush/narplush/clash_target
|
|
gender = MALE //he's a boy, right?
|
|
|
|
/obj/item/toy/plush/plushvar/Moved()
|
|
. = ..()
|
|
if(clash_target)
|
|
return
|
|
var/obj/item/toy/plush/narplush/P = locate() in range(1, src)
|
|
if(P && istype(P.loc, /turf/open) && !P.clashing)
|
|
clash_of_the_plushies(P)
|
|
|
|
/obj/item/toy/plush/plushvar/proc/clash_of_the_plushies(obj/item/toy/plush/narplush/P)
|
|
clash_target = P
|
|
P.clashing = TRUE
|
|
say("YOU.")
|
|
P.say("Ratvar?!")
|
|
var/obj/item/toy/plush/a_winnar_is
|
|
var/victory_chance = 10
|
|
for(var/i in 1 to 10) //We only fight ten times max
|
|
if(QDELETED(src))
|
|
P.clashing = FALSE
|
|
return
|
|
if(QDELETED(P))
|
|
clash_target = null
|
|
return
|
|
if(!Adjacent(P))
|
|
visible_message(span_warning("The two plushies angrily flail at each other before giving up."))
|
|
clash_target = null
|
|
P.clashing = FALSE
|
|
return
|
|
playsound(src, 'sound/magic/clockwork/ratvar_attack.ogg', 50, TRUE, frequency = 2)
|
|
sleep(0.24 SECONDS)
|
|
if(QDELETED(src))
|
|
P.clashing = FALSE
|
|
return
|
|
if(QDELETED(P))
|
|
clash_target = null
|
|
return
|
|
if(prob(victory_chance))
|
|
a_winnar_is = src
|
|
break
|
|
P.SpinAnimation(5, 0)
|
|
sleep(0.5 SECONDS)
|
|
if(QDELETED(src))
|
|
P.clashing = FALSE
|
|
return
|
|
if(QDELETED(P))
|
|
clash_target = null
|
|
return
|
|
playsound(P, 'sound/magic/clockwork/narsie_attack.ogg', 50, TRUE, frequency = 2)
|
|
sleep(0.33 SECONDS)
|
|
if(QDELETED(src))
|
|
P.clashing = FALSE
|
|
return
|
|
if(QDELETED(P))
|
|
clash_target = null
|
|
return
|
|
if(prob(victory_chance))
|
|
a_winnar_is = P
|
|
break
|
|
SpinAnimation(5, 0)
|
|
victory_chance += 10
|
|
sleep(0.5 SECONDS)
|
|
if(!a_winnar_is)
|
|
a_winnar_is = pick(src, P)
|
|
if(a_winnar_is == src)
|
|
say(pick("DIE.", "ROT."))
|
|
P.say(pick("Nooooo...", "Not die. To y-", "Die. Ratv-", "Sas tyen re-"))
|
|
playsound(src, 'sound/magic/clockwork/anima_fragment_attack.ogg', 50, TRUE, frequency = 2)
|
|
playsound(P, 'sound/magic/demon_dies.ogg', 50, TRUE, frequency = 2)
|
|
explosion(P, 0, 0, 1)
|
|
qdel(P)
|
|
clash_target = null
|
|
else
|
|
say("NO! I will not be banished again...")
|
|
P.say(pick("Ha.", "Ra'sha fonn dest.", "You fool. To come here."))
|
|
playsound(src, 'sound/magic/clockwork/anima_fragment_death.ogg', 62, TRUE, frequency = 2)
|
|
playsound(P, 'sound/magic/demon_attack1.ogg', 50, TRUE, frequency = 2)
|
|
explosion(src, 0, 0, 1)
|
|
qdel(src)
|
|
P.clashing = FALSE
|
|
|
|
/obj/item/toy/plush/narplush
|
|
name = "\improper Nar'sie plushie"
|
|
desc = "A small stuffed doll of the elder goddess Nar'sie. Who thought this was a good children's toy?"
|
|
icon_state = "narplush"
|
|
var/clashing
|
|
gender = FEMALE //it's canon if the toy is
|
|
|
|
/obj/item/toy/plush/narplush/Moved()
|
|
. = ..()
|
|
var/obj/item/toy/plush/plushvar/P = locate() in range(1, src)
|
|
if(P && istype(P.loc, /turf/open) && !P.clash_target && !clashing)
|
|
P.clash_of_the_plushies(src)
|
|
|
|
/obj/item/toy/plush/lizardplushie
|
|
name = "lizard plushie"
|
|
desc = "An adorable stuffed toy that resembles a lizardperson."
|
|
icon_state = "plushie_lizard"
|
|
item_state = "plushie_lizard"
|
|
attack_verb = list("clawed", "hissed", "tail slapped")
|
|
squeak_override = list('sound/weapons/slash.ogg' = 1)
|
|
|
|
/obj/item/toy/plush/snakeplushie
|
|
name = "snake plushie"
|
|
desc = "An adorable stuffed toy that resembles a snake. Not to be mistaken for the real thing."
|
|
icon_state = "plushie_snake"
|
|
item_state = "plushie_snake"
|
|
attack_verb = list("bitten", "hissed", "tail slapped")
|
|
squeak_override = list('sound/weapons/bite.ogg' = 1)
|
|
|
|
/obj/item/toy/plush/nukeplushie
|
|
name = "operative plushie"
|
|
desc = "A stuffed toy that resembles a syndicate nuclear operative. The tag claims operatives to be purely fictitious."
|
|
icon_state = "plushie_nuke"
|
|
item_state = "plushie_nuke"
|
|
attack_verb = list("shot", "nuked", "detonated")
|
|
squeak_override = list('sound/effects/hit_punch.ogg' = 1)
|
|
|
|
/obj/item/toy/plush/slimeplushie
|
|
name = "slime plushie"
|
|
desc = "An adorable stuffed toy that resembles a slime. It is practically just a hacky sack."
|
|
icon_state = "plushie_slime"
|
|
item_state = "plushie_slime"
|
|
attack_verb = list("blorbled", "slimed", "absorbed")
|
|
squeak_override = list('sound/effects/blobattack.ogg' = 1)
|
|
gender = FEMALE //given all the jokes and drawings, I'm not sure the xenobiologists would make a slimeboy
|
|
squeak_override = list('sound/effects/blobattack.ogg' = 1)
|
|
|
|
/obj/item/toy/plush/awakenedplushie
|
|
name = "awakened plushie"
|
|
desc = "An ancient plushie that has grown enlightened to the true nature of reality."
|
|
icon_state = "plushie_awake"
|
|
item_state = "plushie_awake"
|
|
|
|
/obj/item/toy/plush/awakenedplushie/Initialize(mapload)
|
|
. = ..()
|
|
AddComponent(/datum/component/edit_complainer)
|
|
|
|
/obj/item/toy/plush/beeplushie
|
|
name = "bee plushie"
|
|
desc = "A cute toy that resembles an even cuter bee."
|
|
icon_state = "plushie_h"
|
|
item_state = "plushie_h"
|
|
attack_verb = list("stung", "buzzed", "pollinated")
|
|
gender = FEMALE
|
|
squeak_override = list('sound/voice/moth/scream_moth.ogg'= 1)
|
|
|
|
/obj/item/toy/plush/mothplushie
|
|
name = "moth plushie"
|
|
desc = "An adorable mothperson plushy. It's a huggable bug!"
|
|
icon_state = "moffplush"
|
|
item_state = "moffplush"
|
|
attack_verb = list("fluttered", "flapped")
|
|
squeak_override = list('sound/voice/moth/scream_moth.ogg'= 1)
|
|
///Used to track how many people killed themselves with item/toy/plush/moth
|
|
var/suicide_count = 0
|
|
|
|
/obj/item/toy/plush/mothplushie/suicide_act(mob/living/user)
|
|
user.visible_message(span_suicide("[user] stares deeply into the eyes of [src]. The plush begins to consume [user.p_their()] soul! It looks like [user.p_theyre()] trying to commit suicide!"))
|
|
suicide_count++
|
|
if(suicide_count < 3)
|
|
desc = "An unsettling mothperson plushy. After killing [suicide_count] [suicide_count == 1 ? "person" : "people"] it's not looking so huggable now..."
|
|
else
|
|
desc = "A creepy mothperson plushy. It has killed [suicide_count] people! I don't think I want to hug it any more!"
|
|
resistance_flags = INDESTRUCTIBLE | FIRE_PROOF | ACID_PROOF | LAVA_PROOF
|
|
playsound(src, 'sound/hallucinations/wail.ogg', 50, TRUE, -1)
|
|
var/list/available_spots = get_adjacent_open_turfs(loc)
|
|
if(available_spots.len) //If the user is in a confined space the plushie will drop normally as the user dies, but in the open the plush is placed one tile away from the user to prevent squeak spam
|
|
var/turf/open/random_open_spot = pick(available_spots)
|
|
forceMove(random_open_spot)
|
|
user.dust(just_ash = FALSE, drop_items = TRUE)
|
|
return MANUAL_SUICIDE
|
|
|
|
/obj/item/toy/plush/pkplushie
|
|
name = "peacekeeper plushie"
|
|
desc = "A plushie depicting a peacekeeper cyborg. Only you can prevent human harm!"
|
|
icon_state = "pkplush"
|
|
item_state = "pkplush"
|
|
attack_verb = list("hugged", "squeezed", "protected", "pacified")
|
|
squeak_override = list('sound/ai/default/harmalarm.ogg'= 1)
|
|
|
|
/obj/item/toy/plush/foxplushie
|
|
name = "fox plushie"
|
|
desc = "An adorable stuffed toy resembling a cute fox."
|
|
icon_state = "fox"
|
|
item_state = "fox"
|
|
|
|
/obj/item/toy/plush/lizard/azeel
|
|
name = "medical lizard plushie"
|
|
desc = "An adorable plushie resembling an adorable lizard. He seems to be held together by stitches and pure stress."
|
|
gender = MALE
|
|
young = TRUE //no erp
|
|
attack_verb = list("clawed", "hissed", "tail slapped", "malpracticed")
|
|
icon_state = "plush_utatul"
|
|
item_state = "plush_utatul"
|
|
|
|
/obj/item/toy/plush/lizard/azeel/snowflake
|
|
desc = "An adorable plushie resembling an adorable lizard. He seems to be held together by stitches and pure stress. This one seems to have \"U-A\" embroidered on it."
|
|
|
|
/obj/item/toy/plush/blahaj
|
|
name = "shark plushie"
|
|
desc = "A smaller, friendlier, and fluffier version of the real thing."
|
|
gender = MALE
|
|
lefthand_file = 'icons/mob/inhands/plushes_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/plushes_righthand.dmi'
|
|
icon_state = "blahaj"
|
|
item_state = "blahaj"
|
|
attack_verb = list("chomped", "gnawed", "bit")
|
|
squeak_override = list('sound/weapons/bite.ogg'= 1)
|
|
|
|
/obj/item/toy/plush/cdragon
|
|
name = "crystal dragon plushie"
|
|
desc = "The hero we needed but never deserved. Now in plush form!"
|
|
gender = FEMALE
|
|
icon_state = "plush_cdragon"
|
|
item_state = "plush_cdragon"
|