mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-09 16:12:17 +00:00
1442 lines
47 KiB
Plaintext
1442 lines
47 KiB
Plaintext
/* Toys!
|
|
* Contains:
|
|
* Balloons
|
|
* Fake telebeacon
|
|
* Fake singularity
|
|
* Toy swords
|
|
* Toy bosun's whistle
|
|
* Snap pops
|
|
* Water flower
|
|
* Therapy dolls
|
|
* Toddler doll
|
|
* Inflatable duck
|
|
* Action figures
|
|
* Plushies
|
|
* Toy cult sword
|
|
* Bouquets
|
|
Stick Horse
|
|
*/
|
|
|
|
|
|
/obj/item/toy
|
|
throwforce = 0
|
|
throw_speed = 4
|
|
throw_range = 20
|
|
force = 0
|
|
drop_sound = 'sound/items/drop/gloves.ogg'
|
|
|
|
|
|
/*
|
|
* Balloons
|
|
*/
|
|
/obj/item/toy/balloon
|
|
name = "water balloon"
|
|
desc = "A translucent balloon. There's nothing in it."
|
|
icon = 'icons/obj/toy.dmi'
|
|
icon_state = "waterballoon-e"
|
|
drop_sound = 'sound/items/drop/rubber.ogg'
|
|
|
|
/obj/item/toy/balloon/New()
|
|
var/datum/reagents/R = new/datum/reagents(10)
|
|
reagents = R
|
|
R.my_atom = src
|
|
|
|
/obj/item/toy/balloon/attack(mob/living/carbon/human/M as mob, mob/user as mob)
|
|
return
|
|
|
|
/obj/item/toy/balloon/afterattack(atom/A as mob|obj, mob/user as mob, proximity)
|
|
if(!proximity) return
|
|
if (istype(A, /obj/structure/reagent_dispensers/watertank) && get_dist(src,A) <= 1)
|
|
A.reagents.trans_to_obj(src, 10)
|
|
to_chat(user, span_notice("You fill the balloon with the contents of [A]."))
|
|
src.desc = "A translucent balloon with some form of liquid sloshing around in it."
|
|
src.update_icon()
|
|
return
|
|
|
|
/obj/item/toy/balloon/attackby(obj/O as obj, mob/user as mob)
|
|
if(istype(O, /obj/item/reagent_containers/glass))
|
|
if(O.reagents)
|
|
if(O.reagents.total_volume < 1)
|
|
to_chat(user, "The [O] is empty.")
|
|
else if(O.reagents.total_volume >= 1)
|
|
if(O.reagents.has_reagent(REAGENT_ID_PACID, 1))
|
|
to_chat(user, "The acid chews through the balloon!")
|
|
O.reagents.splash(user, reagents.total_volume)
|
|
qdel(src)
|
|
else
|
|
src.desc = "A translucent balloon with some form of liquid sloshing around in it."
|
|
to_chat(user, span_notice("You fill the balloon with the contents of [O]."))
|
|
O.reagents.trans_to_obj(src, 10)
|
|
src.update_icon()
|
|
return
|
|
|
|
/obj/item/toy/balloon/throw_impact(atom/hit_atom)
|
|
if(src.reagents.total_volume >= 1)
|
|
src.visible_message(span_warning("\The [src] bursts!"),"You hear a pop and a splash.")
|
|
src.reagents.touch_turf(get_turf(hit_atom))
|
|
for(var/atom/A in get_turf(hit_atom))
|
|
src.reagents.touch(A)
|
|
src.icon_state = "burst"
|
|
spawn(5)
|
|
if(src)
|
|
qdel(src)
|
|
return
|
|
|
|
/obj/item/toy/balloon/update_icon()
|
|
if(src.reagents.total_volume >= 1)
|
|
icon_state = "waterballoon"
|
|
else
|
|
icon_state = "waterballoon-e"
|
|
|
|
/obj/item/toy/syndicateballoon
|
|
name = "criminal balloon"
|
|
desc = "There is a tag on the back that reads \"FUK NT!11!\"."
|
|
throwforce = 0
|
|
throw_speed = 4
|
|
throw_range = 20
|
|
force = 0
|
|
icon = 'icons/obj/weapons.dmi'
|
|
icon_state = "syndballoon"
|
|
w_class = ITEMSIZE_LARGE
|
|
drop_sound = 'sound/items/drop/rubber.ogg'
|
|
|
|
/obj/item/toy/nanotrasenballoon
|
|
name = "criminal balloon"
|
|
desc = "Across the balloon the following is printed: \"Man, I love NanoTrasen soooo much. I use only NT products. You have NO idea.\""
|
|
throwforce = 0
|
|
throw_speed = 4
|
|
throw_range = 20
|
|
force = 0
|
|
icon = 'icons/obj/weapons.dmi'
|
|
icon_state = "ntballoon"
|
|
w_class = ITEMSIZE_LARGE
|
|
drop_sound = 'sound/items/drop/rubber.ogg'
|
|
|
|
/obj/item/toy/colorballoon /// To color it, VV the 'color' var with a hex color code with the # included.
|
|
name = "balloon"
|
|
desc = "It's a plain little balloon. Comes in many colors!"
|
|
throwforce = 0
|
|
throw_speed = 4
|
|
throw_range = 20
|
|
force = 0
|
|
icon = 'icons/obj/weapons.dmi'
|
|
icon_state = "colorballoon"
|
|
w_class = ITEMSIZE_LARGE
|
|
drop_sound = 'sound/items/drop/rubber.ogg'
|
|
|
|
/*
|
|
* Fake telebeacon
|
|
*/
|
|
/obj/item/toy/blink
|
|
name = "electronic blink toy game"
|
|
desc = "Blink. Blink. Blink. Ages 8 and up."
|
|
icon = 'icons/obj/radio.dmi'
|
|
icon_state = "beacon"
|
|
item_state = "signaler"
|
|
|
|
/*
|
|
* Fake singularity
|
|
*/
|
|
/obj/item/toy/spinningtoy
|
|
name = "gravitational singularity"
|
|
desc = "\"Singulo\" brand spinning toy."
|
|
icon = 'icons/obj/singularity.dmi'
|
|
icon_state = "singularity_s1"
|
|
|
|
/*
|
|
* Toy swords
|
|
*/
|
|
/obj/item/toy/sword
|
|
name = "toy sword"
|
|
desc = "A cheap, plastic replica of an energy sword. Realistic sounds! Ages 8 and up."
|
|
icon = 'icons/obj/weapons.dmi'
|
|
icon_state = "esword"
|
|
drop_sound = 'sound/items/drop/gun.ogg'
|
|
var/lcolor
|
|
var/rainbow = FALSE
|
|
item_icons = list(
|
|
slot_l_hand_str = 'icons/mob/items/lefthand_melee.dmi',
|
|
slot_r_hand_str = 'icons/mob/items/righthand_melee.dmi',
|
|
)
|
|
var/active = 0
|
|
w_class = ITEMSIZE_SMALL
|
|
attack_verb = list("attacked", "struck", "hit")
|
|
|
|
/obj/item/toy/sword/attack_self(mob/user as mob)
|
|
src.active = !( src.active )
|
|
if (src.active)
|
|
to_chat(user, span_notice("You extend the plastic blade with a quick flick of your wrist."))
|
|
playsound(src, 'sound/weapons/saberon.ogg', 50, 1)
|
|
src.item_state = "[icon_state]_blade"
|
|
src.w_class = ITEMSIZE_LARGE
|
|
else
|
|
to_chat(user, span_notice("You push the plastic blade back down into the handle."))
|
|
playsound(src, 'sound/weapons/saberoff.ogg', 50, 1)
|
|
src.item_state = "[icon_state]"
|
|
src.w_class = ITEMSIZE_SMALL
|
|
update_icon()
|
|
src.add_fingerprint(user)
|
|
return
|
|
|
|
/obj/item/toy/sword/update_icon()
|
|
. = ..()
|
|
var/mutable_appearance/blade_overlay = mutable_appearance(icon, "[icon_state]_blade")
|
|
blade_overlay.color = lcolor
|
|
cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other
|
|
if(active)
|
|
add_overlay(blade_overlay)
|
|
if(istype(usr,/mob/living/carbon/human))
|
|
var/mob/living/carbon/human/H = usr
|
|
H.update_inv_l_hand()
|
|
H.update_inv_r_hand()
|
|
|
|
/obj/item/toy/sword/AltClick(mob/living/user)
|
|
if(!in_range(src, user)) //Basic checks to prevent abuse
|
|
return
|
|
if(user.incapacitated() || !istype(user))
|
|
to_chat(user, span_warning("You can't do that right now!"))
|
|
return
|
|
|
|
if(tgui_alert(user, "Are you sure you want to recolor your blade?", "Confirm Recolor", list("Yes", "No")) == "Yes")
|
|
var/energy_color_input = input(user,"","Choose Energy Color",lcolor) as color|null
|
|
if(energy_color_input)
|
|
lcolor = sanitize_hexcolor(energy_color_input)
|
|
update_icon()
|
|
|
|
/obj/item/toy/sword/examine(mob/user)
|
|
. = ..()
|
|
. += span_notice("Alt-click to recolor it.")
|
|
|
|
/obj/item/toy/sword/attackby(obj/item/W, mob/user)
|
|
if(istype(W, /obj/item/multitool) && !active)
|
|
if(!rainbow)
|
|
rainbow = TRUE
|
|
else
|
|
rainbow = FALSE
|
|
to_chat(user, span_notice("You manipulate the color controller in [src]."))
|
|
update_icon()
|
|
/obj/item/toy/katana
|
|
name = "replica katana"
|
|
desc = "Woefully underpowered in D20."
|
|
icon = 'icons/obj/weapons.dmi'
|
|
icon_state = "katana"
|
|
item_state = "katana"
|
|
item_icons = list(
|
|
slot_l_hand_str = 'icons/mob/items/lefthand_material.dmi',
|
|
slot_r_hand_str = 'icons/mob/items/righthand_material.dmi',
|
|
)
|
|
slot_flags = SLOT_BELT | SLOT_BACK
|
|
force = 5
|
|
throwforce = 5
|
|
w_class = ITEMSIZE_NORMAL
|
|
attack_verb = list("attacked", "slashed", "stabbed", "sliced")
|
|
|
|
/*
|
|
* Snap pops
|
|
*/
|
|
/obj/item/toy/snappop
|
|
name = "snap pop"
|
|
desc = "Wow!"
|
|
icon = 'icons/obj/toy.dmi'
|
|
icon_state = "snappop"
|
|
w_class = ITEMSIZE_TINY
|
|
drop_sound = null
|
|
|
|
/obj/item/toy/snappop/throw_impact(atom/hit_atom)
|
|
..()
|
|
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
|
s.set_up(3, 1, src)
|
|
s.start()
|
|
new /obj/effect/decal/cleanable/ash(src.loc)
|
|
src.visible_message(span_warning("The [src.name] explodes!"),span_warning("You hear a snap!"))
|
|
playsound(src, 'sound/effects/snap.ogg', 50, 1)
|
|
qdel(src)
|
|
|
|
/obj/item/toy/snappop/Crossed(atom/movable/H as mob|obj)
|
|
if(H.is_incorporeal())
|
|
return
|
|
if((ishuman(H))) //i guess carp and shit shouldn't set them off
|
|
var/mob/living/carbon/M = H
|
|
if(M.m_intent == I_RUN)
|
|
to_chat(M, span_warning("You step on the snap pop!"))
|
|
|
|
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
|
s.set_up(2, 0, src)
|
|
s.start()
|
|
new /obj/effect/decal/cleanable/ash(src.loc)
|
|
src.visible_message(span_warning("The [src.name] explodes!"),span_warning("You hear a snap!"))
|
|
playsound(src, 'sound/effects/snap.ogg', 50, 1)
|
|
qdel(src)
|
|
|
|
/*
|
|
* Bosun's whistle
|
|
*/
|
|
/obj/item/toy/bosunwhistle
|
|
name = "bosun's whistle"
|
|
desc = "A genuine Admiral Krush Bosun's Whistle, for the aspiring ship's captain! Suitable for ages 8 and up, do not swallow."
|
|
icon = 'icons/obj/toy.dmi'
|
|
icon_state = "bosunwhistle"
|
|
drop_sound = 'sound/items/drop/card.ogg'
|
|
var/cooldown = 0
|
|
w_class = ITEMSIZE_TINY
|
|
slot_flags = SLOT_EARS | SLOT_HOLSTER
|
|
|
|
/obj/item/toy/bosunwhistle/attack_self(mob/user as mob)
|
|
if(cooldown < world.time - 35)
|
|
to_chat(user, span_notice("You blow on [src], creating an ear-splitting noise!"))
|
|
playsound(src, 'sound/misc/boatswain.ogg', 20, 1)
|
|
cooldown = world.time
|
|
|
|
/*
|
|
* Action figures
|
|
*/
|
|
/obj/item/toy/figure
|
|
name = "Non-Specific Action Figure action figure"
|
|
desc = "A \"Space Life\" brand... wait, what the hell is this thing?"
|
|
icon = 'icons/obj/toy.dmi'
|
|
icon_state = "nuketoy"
|
|
w_class = ITEMSIZE_TINY
|
|
var/cooldown = 0
|
|
var/toysay = "What the fuck did you do?"
|
|
drop_sound = 'sound/items/drop/accessory.ogg'
|
|
|
|
/obj/item/toy/figure/New()
|
|
..()
|
|
desc = "A \"Space Life\" brand [name]"
|
|
|
|
/obj/item/toy/figure/attack_self(mob/user as mob)
|
|
if(cooldown < world.time)
|
|
cooldown = (world.time + 30) //3 second cooldown
|
|
user.visible_message(span_notice("The [src] says \"[toysay]\"."))
|
|
playsound(src, 'sound/machines/click.ogg', 20, 1)
|
|
|
|
/obj/item/toy/figure/cmo
|
|
name = JOB_CHIEF_MEDICAL_OFFICER + " action figure"
|
|
desc = "A \"Space Life\" brand " + JOB_CHIEF_MEDICAL_OFFICER + " action figure."
|
|
icon_state = "cmo"
|
|
toysay = "Suit sensors!"
|
|
|
|
/obj/item/toy/figure/assistant
|
|
name = "Assistant action figure"
|
|
desc = "A \"Space Life\" brand Assistant action figure."
|
|
icon_state = "assistant"
|
|
toysay = "Grey tide station wide!"
|
|
|
|
/obj/item/toy/figure/atmos
|
|
name = JOB_ATMOSPHERIC_TECHNICIAN + " action figure"
|
|
desc = "A \"Space Life\" brand " + JOB_ATMOSPHERIC_TECHNICIAN + " action figure."
|
|
icon_state = "atmos"
|
|
toysay = "Glory to Atmosia!"
|
|
|
|
/obj/item/toy/figure/bartender
|
|
name = JOB_BARTENDER + " action figure"
|
|
desc = "A \"Space Life\" brand " + JOB_BARTENDER + " action figure."
|
|
icon_state = "bartender"
|
|
toysay = "Where's my monkey?"
|
|
|
|
/obj/item/toy/figure/borg
|
|
name = "Drone action figure"
|
|
desc = "A \"Space Life\" brand Drone action figure."
|
|
icon_state = "borg"
|
|
toysay = "I. LIVE. AGAIN."
|
|
|
|
/obj/item/toy/figure/gardener
|
|
name = JOB_ALT_GARDENER + " action figure"
|
|
desc = "A \"Space Life\" brand " + JOB_ALT_GARDENER + " action figure."
|
|
icon_state = "botanist"
|
|
toysay = "Dude, I see colors..."
|
|
|
|
/obj/item/toy/figure/captain
|
|
name = JOB_SITE_MANAGER + " action figure"
|
|
desc = "A \"Space Life\" brand " + JOB_SITE_MANAGER + " action figure."
|
|
icon_state = "captain"
|
|
toysay = "How do I open this display case?"
|
|
|
|
/obj/item/toy/figure/cargotech
|
|
name = JOB_CARGO_TECHNICIAN + " action figure"
|
|
desc = "A \"Space Life\" brand " + JOB_CARGO_TECHNICIAN + " action figure."
|
|
icon_state = "cargotech"
|
|
toysay = "For Cargonia!"
|
|
|
|
/obj/item/toy/figure/ce
|
|
name = JOB_CHIEF_ENGINEER + " action figure"
|
|
desc = "A \"Space Life\" brand " + JOB_CHIEF_ENGINEER + " action figure."
|
|
icon_state = "ce"
|
|
toysay = "Wire the solars!"
|
|
|
|
/obj/item/toy/figure/chaplain
|
|
name = JOB_CHAPLAIN + " action figure"
|
|
desc = "A \"Space Life\" brand " + JOB_CHAPLAIN + " action figure."
|
|
icon_state = "chaplain"
|
|
toysay = "Gods make me a killing machine please!"
|
|
|
|
/obj/item/toy/figure/chef
|
|
name = JOB_CHEF + " action figure"
|
|
desc = "A \"Space Life\" brand " + JOB_CHEF + " action figure."
|
|
icon_state = "chef"
|
|
toysay = "I swear it's not human meat."
|
|
|
|
/obj/item/toy/figure/chemist
|
|
name = JOB_CHEMIST + " action figure"
|
|
desc = "A \"Space Life\" brand " + JOB_CHEMIST + " action figure."
|
|
icon_state = "chemist"
|
|
toysay = "Get your pills!"
|
|
|
|
/obj/item/toy/figure/clown
|
|
name = JOB_CLOWN + " action figure"
|
|
desc = "A \"Space Life\" brand " + JOB_CLOWN + " action figure."
|
|
icon_state = "clown"
|
|
toysay = "<font face='comic sans ms'><b>Honk!</b></font>"
|
|
|
|
/obj/item/toy/figure/corgi
|
|
name = "Corgi action figure"
|
|
desc = "A \"Space Life\" brand Corgi action figure."
|
|
icon_state = "ian"
|
|
toysay = "Arf!"
|
|
|
|
/obj/item/toy/figure/detective
|
|
name = JOB_DETECTIVE + " action figure"
|
|
desc = "A \"Space Life\" brand " + JOB_DETECTIVE + " action figure."
|
|
icon_state = "detective"
|
|
toysay = "This airlock has grey jumpsuit and insulated glove fibers on it."
|
|
|
|
/obj/item/toy/figure/dsquad
|
|
name = "Space Commando action figure"
|
|
desc = "A \"Space Life\" brand Space Commando action figure."
|
|
icon_state = "dsquad"
|
|
toysay = "Eliminate all threats!"
|
|
|
|
/obj/item/toy/figure/engineer
|
|
name = JOB_ENGINEER + " action figure"
|
|
desc = "A \"Space Life\" brand " + JOB_ENGINEER + " action figure."
|
|
icon_state = "engineer"
|
|
toysay = "Oh god, the engine is gonna go!"
|
|
|
|
/obj/item/toy/figure/geneticist
|
|
name = JOB_GENETICIST + " action figure"
|
|
desc = "A \"Space Life\" brand " + JOB_GENETICIST + " action figure, which was recently dicontinued."
|
|
icon_state = "geneticist"
|
|
toysay = "I'm not qualified for this job."
|
|
|
|
/obj/item/toy/figure/hop
|
|
name = JOB_HEAD_OF_PERSONNEL + " action figure"
|
|
desc = "A \"Space Life\" brand " + JOB_HEAD_OF_PERSONNEL + " action figure."
|
|
icon_state = "hop"
|
|
toysay = "Giving out all access!"
|
|
|
|
/obj/item/toy/figure/hos
|
|
name = JOB_HEAD_OF_SECURITY + " action figure"
|
|
desc = "A \"Space Life\" brand " + JOB_HEAD_OF_SECURITY + " action figure."
|
|
icon_state = "hos"
|
|
toysay = "I'm here to win, anything else is secondary."
|
|
|
|
/obj/item/toy/figure/qm
|
|
name = JOB_QUARTERMASTER + " action figure"
|
|
desc = "A \"Space Life\" brand " + JOB_QUARTERMASTER + " action figure."
|
|
icon_state = "qm"
|
|
toysay = "Hail Cargonia!"
|
|
|
|
/obj/item/toy/figure/janitor
|
|
name = JOB_JANITOR + " action figure"
|
|
desc = "A \"Space Life\" brand " + JOB_JANITOR + " action figure."
|
|
icon_state = "janitor"
|
|
toysay = "Look at the signs, you idiot."
|
|
|
|
/obj/item/toy/figure/agent
|
|
name = JOB_INTERNAL_AFFAIRS_AGENT + " action figure"
|
|
desc = "A \"Space Life\" brand " + JOB_INTERNAL_AFFAIRS_AGENT + " action figure."
|
|
icon_state = "agent"
|
|
toysay = "Standard Operating Procedure says they're guilty! Hacking is proof they're an Enemy of the Corporation!"
|
|
|
|
/obj/item/toy/figure/librarian
|
|
name = JOB_LIBRARIAN + " action figure"
|
|
desc = "A \"Space Life\" brand " + JOB_LIBRARIAN + " action figure."
|
|
icon_state = "librarian"
|
|
toysay = "One day while..."
|
|
|
|
/obj/item/toy/figure/md
|
|
name = JOB_MEDICAL_DOCTOR + " action figure"
|
|
desc = "A \"Space Life\" brand " + JOB_MEDICAL_DOCTOR + " action figure."
|
|
icon_state = "md"
|
|
toysay = "The patient is already dead!"
|
|
|
|
/obj/item/toy/figure/mime
|
|
name = JOB_MIME + " action figure"
|
|
desc = "A \"Space Life\" brand " + JOB_MIME + " action figure."
|
|
icon_state = "mime"
|
|
toysay = "..."
|
|
|
|
/obj/item/toy/figure/miner
|
|
name = JOB_SHAFT_MINER + " action figure"
|
|
desc = "A \"Space Life\" brand " + JOB_SHAFT_MINER + " action figure."
|
|
icon_state = "miner"
|
|
toysay = "Oh god, it's eating my intestines!"
|
|
|
|
/obj/item/toy/figure/ninja
|
|
name = "Space Ninja action figure"
|
|
desc = "A \"Space Life\" brand Space Ninja action figure."
|
|
icon_state = "ninja"
|
|
toysay = "Oh god! Stop shooting, I'm friendly!"
|
|
|
|
/obj/item/toy/figure/wizard
|
|
name = JOB_WIZARD + " action figure"
|
|
desc = "A \"Space Life\" brand " + JOB_WIZARD + " action figure."
|
|
icon_state = "wizard"
|
|
toysay = "Ei Nath!"
|
|
|
|
/obj/item/toy/figure/rd
|
|
name = JOB_RESEARCH_DIRECTOR + " action figure"
|
|
desc = "A \"Space Life\" brand " + JOB_RESEARCH_DIRECTOR + " action figure."
|
|
icon_state = "rd"
|
|
toysay = "Blowing all of the borgs!"
|
|
|
|
/obj/item/toy/figure/roboticist
|
|
name = JOB_ROBOTICIST + " action figure"
|
|
desc = "A \"Space Life\" brand " + JOB_ROBOTICIST + " action figure."
|
|
icon_state = "roboticist"
|
|
toysay = "He asked to be borged!"
|
|
|
|
/obj/item/toy/figure/scientist
|
|
name = JOB_SCIENTIST + " action figure"
|
|
desc = "A \"Space Life\" brand " + JOB_SCIENTIST + " action figure."
|
|
icon_state = "scientist"
|
|
toysay = "Someone else must have made those bombs!"
|
|
|
|
/obj/item/toy/figure/syndie
|
|
name = "Doom Operative action figure"
|
|
desc = "A \"Space Life\" brand Doom Operative action figure."
|
|
icon_state = "syndie"
|
|
toysay = "Get that fucking disk!"
|
|
|
|
/obj/item/toy/figure/secofficer
|
|
name = JOB_SECURITY_OFFICER + " action figure"
|
|
desc = "A \"Space Life\" brand " + JOB_SECURITY_OFFICER + " action figure."
|
|
icon_state = "secofficer"
|
|
toysay = "I am the law!"
|
|
|
|
/obj/item/toy/figure/virologist
|
|
name = JOB_ALT_VIROLOGIST + " action figure"
|
|
desc = "A \"Space Life\" brand " + JOB_ALT_VIROLOGIST + " action figure."
|
|
icon_state = "virologist"
|
|
toysay = "The cure is potassium!"
|
|
|
|
/obj/item/toy/figure/warden
|
|
name = JOB_WARDEN + " action figure"
|
|
desc = "A \"Space Life\" brand " + JOB_WARDEN + " action figure."
|
|
icon_state = "warden"
|
|
toysay = "Execute him for breaking in!"
|
|
|
|
/obj/item/toy/figure/psychologist
|
|
name = JOB_ALT_PSYCHOLOGIST + " action figure"
|
|
desc = "A \"Space Life\" brand " + JOB_ALT_PSYCHOLOGIST + " action figure."
|
|
icon_state = "psychologist"
|
|
toysay = "The analyzer says you're fine!"
|
|
|
|
/obj/item/toy/figure/paramedic
|
|
name = JOB_PARAMEDIC + " action figure"
|
|
desc = "A \"Space Life\" brand " + JOB_PARAMEDIC + " action figure."
|
|
icon_state = "paramedic"
|
|
toysay = "WHERE ARE YOU??"
|
|
|
|
/obj/item/toy/figure/ert
|
|
name = JOB_EMERGENCY_RESPONSE_TEAM + " Commander action figure"
|
|
desc = "A \"Space Life\" brand " + JOB_EMERGENCY_RESPONSE_TEAM + " Commander action figure."
|
|
icon_state = "ert"
|
|
toysay = "We're probably the good guys!"
|
|
|
|
// Eris
|
|
/obj/item/toy/figure/excelsior
|
|
name = "\"Excelsior\" figurine"
|
|
desc = "A curiously unbranded figurine of a Space Soviet, adorned in their iconic armor. There is still a price tag on the back of the base, six-hundred credits, people collect these things? \
|
|
\"Ever Upward!\""
|
|
icon_state = "excelsior"
|
|
|
|
/obj/item/toy/figure/serbian
|
|
name = "mercenary figurine"
|
|
desc = "A curiously unbranded figurine, the olive drab a popular pick for many independent Serbian mercenary outfits. Rocket launcher not included."
|
|
icon_state = "serbian"
|
|
|
|
/obj/item/toy/figure/acolyte
|
|
name = "acolyte figurine"
|
|
desc = "Church of NeoTheology \"New Faith Life\" brand figurine of an acolyte, hooded both physically and spiritually from that which would lead them astray."
|
|
icon_state = "acolyte"
|
|
|
|
/obj/item/toy/figure/carrion
|
|
name = "carrion figurine"
|
|
desc = "A curiously unbranded figurine depicting a grotesque head of flesh, the Human features seem almost underdeveloped, its skull bulging outwards, mouth agape with torn flesh. \
|
|
Whoever made this certainly knew how to thin their paints."
|
|
icon_state = "carrion"
|
|
|
|
/obj/item/toy/figure/roach
|
|
name = "roach figurine"
|
|
desc = "Upon the base is an erected \"Roachman\", its arms outstretched, with more additional roach hands besides them. This is likely the one thing most universally recognized in popular media. \
|
|
The plaque is covered in hundreds of scratch marks, eliminating any further knowledge of it or its brand."
|
|
icon_state = "roach"
|
|
|
|
/obj/item/toy/figure/vagabond
|
|
name = "vagabond figurine"
|
|
desc = "An Aster's \"Space Life\" brand figurine showcasing the form of a random deplorable, wearing one of the ship's uniforms, and an orange bandana. \
|
|
Must of been custom-made to commemorate the Eris' doomed voyage."
|
|
icon_state = "vagabond"
|
|
|
|
/obj/item/toy/figure/rooster
|
|
name = "rooster figurine"
|
|
desc = "\"Space Vice\" brand figurine, there is no further manufacturer information. It's a man wearing a rooster mask, and a varsity jacket with the letter \"B\" emblazoned on the front. \
|
|
\"Do you like hurting other people?\""
|
|
icon_state = "rooster"
|
|
|
|
/obj/item/toy/figure/barking_dog
|
|
name = "barking dog figurine"
|
|
desc = "A metal soldier with the mask of a hound stands upon the base, the plaque seems smeared with caked grime, but despite this you make out a rare double-quote. \
|
|
\"A dog barks on its master's orders, lest its pack runs astray.\" \"Whatever the task, the grim dog mask would tell you that your life was done.\""
|
|
icon_state = "barking_dog"
|
|
|
|
/obj/item/toy/figure/red_soldier
|
|
name = "red soldier figurine"
|
|
desc = "A curiously unbranded figurine of a red soldier fighting in the tides of war, their humanity hidden by a gas mask. \"Why do we fight? To win the war, of course.\""
|
|
icon_state = "red_soldier"
|
|
|
|
/obj/item/toy/figure/metacat
|
|
name = "meta-cat figurine"
|
|
desc = "A curiously unbranded figurine depicting an anthropomorphic cat in a voidsuit, the small plaque claims this to be one of two. \"Always in silent pair, through distance or unlikelihood.\""
|
|
icon_state = "metacat"
|
|
|
|
/obj/item/toy/figure/shitcurity
|
|
name = "shitcurity officer figurine"
|
|
desc = "An Aster's \"Space Life\" brand figurine of a classic redshirt of \"Nanotrasen's finest\". Their belly distends out into an obvious beer gut, revealing no form of manufacturer bias what-so-ever. \
|
|
\"I joined just to kill people.\""
|
|
icon_state = "shitcurity"
|
|
|
|
/obj/item/toy/figure/metro_patrolman
|
|
name = "metro patrolman figurine"
|
|
desc = "The plaque seems flaked with rust residue, \"London Metro\" brand it reads. The man wears some kind of enforcer's uniform, with the acronym \"VPP\" on their left shoulder and cap. \
|
|
\"Abandoned for Escalation, the patrolman grumbles.\""
|
|
icon_state = "metro_patrolman"
|
|
|
|
|
|
/*
|
|
* Plushies
|
|
*/
|
|
|
|
/*
|
|
* Carp plushie
|
|
*/
|
|
|
|
/obj/item/toy/plushie/carp
|
|
name = "space carp plushie"
|
|
desc = "An adorable stuffed toy that resembles a space carp."
|
|
icon = 'icons/obj/toy.dmi'
|
|
icon_state = "basecarp"
|
|
attack_verb = list("bitten", "eaten", "fin slapped")
|
|
var/bitesound = 'sound/weapons/bite.ogg'
|
|
|
|
// Attack mob
|
|
/obj/item/toy/plushie/carp/attack(mob/M as mob, mob/user as mob)
|
|
playsound(src, bitesound, 20, 1) // Play bite sound in local area
|
|
return ..()
|
|
|
|
// Attack self
|
|
/obj/item/toy/plushie/carp/attack_self(mob/user as mob)
|
|
playsound(src, bitesound, 20, 1)
|
|
return ..()
|
|
|
|
|
|
/obj/random/carp_plushie
|
|
name = "Random Carp Plushie"
|
|
desc = "This is a random plushie"
|
|
icon = 'icons/obj/toy.dmi'
|
|
icon_state = "basecarp"
|
|
|
|
/obj/random/carp_plushie/item_to_spawn()
|
|
return pick(typesof(/obj/item/toy/plushie/carp)) //can pick any carp plushie, even the original.
|
|
|
|
/obj/item/toy/plushie/carp/ice
|
|
name = "ice carp plushie"
|
|
icon_state = "icecarp"
|
|
|
|
/obj/item/toy/plushie/carp/silent
|
|
name = "monochrome carp plushie"
|
|
icon_state = "silentcarp"
|
|
|
|
/obj/item/toy/plushie/carp/electric
|
|
name = "electric carp plushie"
|
|
icon_state = "electriccarp"
|
|
|
|
/obj/item/toy/plushie/carp/gold
|
|
name = "golden carp plushie"
|
|
icon_state = "goldcarp"
|
|
|
|
/obj/item/toy/plushie/carp/toxin
|
|
name = "toxic carp plushie"
|
|
icon_state = "toxincarp"
|
|
|
|
/obj/item/toy/plushie/carp/dragon
|
|
name = "dragon carp plushie"
|
|
icon_state = "dragoncarp"
|
|
|
|
/obj/item/toy/plushie/carp/pink
|
|
name = "pink carp plushie"
|
|
icon_state = "pinkcarp"
|
|
|
|
/obj/item/toy/plushie/carp/candy
|
|
name = "candy carp plushie"
|
|
icon_state = "candycarp"
|
|
|
|
/obj/item/toy/plushie/carp/nebula
|
|
name = "nebula carp plushie"
|
|
icon_state = "nebulacarp"
|
|
|
|
/obj/item/toy/plushie/carp/void
|
|
name = "void carp plushie"
|
|
icon_state = "voidcarp"
|
|
|
|
//Large plushies.
|
|
/obj/structure/plushie
|
|
name = "generic plush"
|
|
desc = "A very generic plushie. It seems to not want to exist."
|
|
icon = 'icons/obj/toy.dmi'
|
|
icon_state = "ianplushie"
|
|
anchored = FALSE
|
|
density = TRUE
|
|
var/phrase = "I don't want to exist anymore!"
|
|
var/searching = FALSE
|
|
var/opened = FALSE // has this been slit open? this will allow you to store an object in a plushie.
|
|
var/obj/item/stored_item // Note: Stored items can't be bigger than the plushie itself.
|
|
|
|
/obj/structure/plushie/examine(mob/user)
|
|
. = ..()
|
|
if(opened)
|
|
. += span_italics("You notice an incision has been made on [src].")
|
|
if(in_range(user, src) && stored_item)
|
|
. += span_italics("You can see something in there...")
|
|
|
|
/obj/structure/plushie/attack_hand(mob/user)
|
|
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
|
|
|
|
if(stored_item && opened && !searching)
|
|
searching = TRUE
|
|
if(do_after(user, 10))
|
|
to_chat(user, "You find [icon2html(stored_item, user.client)] [stored_item] in [src]!")
|
|
stored_item.forceMove(get_turf(src))
|
|
stored_item = null
|
|
searching = FALSE
|
|
return
|
|
else
|
|
searching = FALSE
|
|
|
|
if(user.a_intent == I_HELP)
|
|
user.visible_message(span_notice(span_bold("\The [user]") + " hugs [src]!"),span_notice("You hug [src]!"))
|
|
else if (user.a_intent == I_HURT)
|
|
user.visible_message(span_warning(span_bold("\The [user]") + " punches [src]!"),span_warning("You punch [src]!"))
|
|
else if (user.a_intent == I_GRAB)
|
|
user.visible_message(span_warning(span_bold("\The [user]") + " attempts to strangle [src]!"),span_warning("You attempt to strangle [src]!"))
|
|
else
|
|
user.visible_message(span_notice(span_bold("\The [user]") + " pokes the [src]."),span_notice("You poke the [src]."))
|
|
visible_message("[src] says, \"[phrase]\"")
|
|
|
|
|
|
/obj/structure/plushie/attackby(obj/item/I as obj, mob/user as mob)
|
|
if(istype(I, /obj/item/threadneedle) && opened)
|
|
to_chat(user, "You sew the hole in [src].")
|
|
opened = FALSE
|
|
return
|
|
|
|
if(is_sharp(I) && !opened)
|
|
to_chat(user, "You open a small incision in [src]. You can place tiny items inside.")
|
|
opened = TRUE
|
|
return
|
|
|
|
if(opened)
|
|
if(stored_item)
|
|
to_chat(user, "There is already something in here.")
|
|
return
|
|
|
|
if(!(I.w_class > w_class))
|
|
to_chat(user, "You place [I] inside [src].")
|
|
user.drop_from_inventory(I, src)
|
|
I.forceMove(src)
|
|
stored_item = I
|
|
return
|
|
else
|
|
to_chat(user, "You open a small incision in [src]. You can place tiny items inside.")
|
|
|
|
|
|
..()
|
|
|
|
/obj/structure/plushie/ian
|
|
name = "plush corgi"
|
|
desc = "A plushie of an adorable corgi! Don't you just want to hug it and squeeze it and call it \"Ian\"?"
|
|
icon_state = "ianplushie"
|
|
phrase = "Arf!"
|
|
|
|
/obj/structure/plushie/drone
|
|
name = "plush drone"
|
|
desc = "A plushie of a happy drone! It appears to be smiling."
|
|
icon_state = "droneplushie"
|
|
phrase = "Beep boop!"
|
|
|
|
/obj/structure/plushie/carp
|
|
name = "plush carp"
|
|
desc = "A plushie of an elated carp! Straight from the wilds of the Vir frontier, now right here in your hands."
|
|
icon_state = "carpplushie"
|
|
phrase = "Glorf!"
|
|
|
|
/obj/structure/plushie/beepsky
|
|
name = "plush Officer Sweepsky"
|
|
desc = "A plushie of a popular industrious cleaning robot! If it could feel emotions, it would love you."
|
|
icon_state = "beepskyplushie"
|
|
phrase = "Ping!"
|
|
|
|
//Small plushies.
|
|
/obj/item/toy/plushie
|
|
name = "generic small plush"
|
|
desc = "A small toy plushie. It's very cute."
|
|
icon = 'icons/obj/toy.dmi'
|
|
icon_state = "nymphplushie"
|
|
drop_sound = 'sound/items/drop/plushie.ogg'
|
|
w_class = ITEMSIZE_TINY
|
|
var/last_message = 0
|
|
var/pokephrase = "Uww!"
|
|
var/searching = FALSE
|
|
var/opened = FALSE // has this been slit open? this will allow you to store an object in a plushie.
|
|
var/obj/item/stored_item // Note: Stored items can't be bigger than the plushie itself.
|
|
|
|
|
|
/obj/item/toy/plushie/examine(mob/user)
|
|
. = ..()
|
|
if(opened)
|
|
. += span_italics("You notice an incision has been made on [src].")
|
|
if(in_range(user, src) && stored_item)
|
|
. += span_italics("You can see something in there...")
|
|
|
|
/obj/item/toy/plushie/attack_self(mob/user as mob)
|
|
if(stored_item && opened && !searching)
|
|
searching = TRUE
|
|
if(do_after(user, 10))
|
|
to_chat(user, "You find [icon2html(stored_item, user.client)] [stored_item] in [src]!")
|
|
stored_item.forceMove(get_turf(src))
|
|
stored_item = null
|
|
searching = FALSE
|
|
return
|
|
else
|
|
searching = FALSE
|
|
|
|
if(world.time - last_message <= 1 SECOND)
|
|
return
|
|
if(user.a_intent == I_HELP)
|
|
user.visible_message(span_notice(span_bold("\The [user]") + " hugs [src]!"),span_notice("You hug [src]!"))
|
|
else if (user.a_intent == I_HURT)
|
|
user.visible_message(span_warning(span_bold("\The [user]") + " punches [src]!"),span_warning("You punch [src]!"))
|
|
else if (user.a_intent == I_GRAB)
|
|
user.visible_message(span_warning(span_bold("\The [user]") + " attempts to strangle [src]!"),span_warning("You attempt to strangle [src]!"))
|
|
else
|
|
user.visible_message(span_notice(span_bold("\The [user]") + " pokes [src]."),span_notice("You poke [src]."))
|
|
playsound(src, 'sound/items/drop/plushie.ogg', 25, 0)
|
|
visible_message("[src] says, \"[pokephrase]\"")
|
|
last_message = world.time
|
|
|
|
/obj/item/toy/plushie/verb/rename_plushie()
|
|
set name = "Name Plushie"
|
|
set category = "Object"
|
|
set desc = "Give your plushie a cute name!"
|
|
var/mob/M = usr
|
|
if(!M.mind)
|
|
return 0
|
|
|
|
var/input = sanitizeSafe(tgui_input_text(usr, "What do you want to name the plushie?", ,""), MAX_NAME_LEN)
|
|
|
|
if(src && input && !M.stat && in_range(M,src))
|
|
name = input
|
|
//CHOMPAdd Start - Rename possessed voices too
|
|
for(var/mob/living/voice/V in possessed_voice)
|
|
V.name = input
|
|
//CHOMPAdd End
|
|
to_chat(M, "You name the plushie [input], giving it a hug for good luck.")
|
|
return 1
|
|
|
|
/obj/item/toy/plushie/attackby(obj/item/I as obj, mob/user as mob)
|
|
if(istype(I, /obj/item/toy/plushie) || istype(I, /obj/item/organ/external/head))
|
|
user.visible_message(span_notice("[user] makes \the [I] kiss \the [src]!."), \
|
|
span_notice("You make \the [I] kiss \the [src]!."))
|
|
return
|
|
|
|
|
|
if(istype(I, /obj/item/threadneedle) && opened)
|
|
to_chat(user, "You sew the hole underneath [src].")
|
|
opened = FALSE
|
|
return
|
|
|
|
if(is_sharp(I) && !opened)
|
|
to_chat(user, "You open a small incision in [src]. You can place tiny items inside.")
|
|
opened = TRUE
|
|
return
|
|
|
|
if( (!(I.w_class > w_class)) && opened)
|
|
if(stored_item)
|
|
to_chat(user, "There is already something in here.")
|
|
return
|
|
|
|
to_chat(user, "You place [I] inside [src].")
|
|
user.drop_from_inventory(I, src)
|
|
I.forceMove(src)
|
|
stored_item = I
|
|
to_chat(user, "You placed [I] into [src].")
|
|
return
|
|
|
|
return ..()
|
|
|
|
/obj/item/toy/plushie/nymph
|
|
name = "diona nymph plush"
|
|
desc = "A plushie of an adorable diona nymph! While its level of self-awareness is still being debated, its level of cuteness is not."
|
|
icon_state = "nymphplushie"
|
|
pokephrase = "Chirp!"
|
|
|
|
/obj/item/toy/plushie/teshari
|
|
name = "teshari plush"
|
|
desc = "This is a plush teshari. Very soft, with a pompom on the tail. The toy is made well, as if alive. Looks like she is sleeping. Shhh!"
|
|
icon_state = "teshariplushie"
|
|
pokephrase = "Rya!"
|
|
|
|
/obj/item/toy/plushie/mouse
|
|
name = "mouse plush"
|
|
desc = "A plushie of a delightful mouse! What was once considered a vile rodent is now your very best friend."
|
|
icon_state = "mouseplushie"
|
|
pokephrase = "Squeak!"
|
|
|
|
/obj/item/toy/plushie/kitten
|
|
name = "kitten plush"
|
|
desc = "A plushie of a cute kitten! Watch as it purrs its way right into your heart."
|
|
icon_state = "kittenplushie"
|
|
pokephrase = "Mrow!"
|
|
|
|
/obj/item/toy/plushie/lizard
|
|
name = "lizard plush"
|
|
desc = "A plushie of a scaly lizard! Very controversial, after being accused as \"racist\" by some Unathi."
|
|
icon_state = "lizardplushie"
|
|
pokephrase = "Hiss!"
|
|
|
|
/obj/item/toy/plushie/spider
|
|
name = "spider plush"
|
|
desc = "A plushie of a fuzzy spider! It has eight legs - all the better to hug you with."
|
|
icon_state = "spiderplushie"
|
|
pokephrase = "Sksksk!"
|
|
|
|
/obj/item/toy/plushie/farwa
|
|
name = "farwa plush"
|
|
desc = "A farwa plush doll. It's soft and comforting!"
|
|
icon_state = "farwaplushie"
|
|
pokephrase = "Squaw!"
|
|
|
|
/obj/item/toy/plushie/corgi
|
|
name = "corgi plushie"
|
|
icon_state = "corgi"
|
|
pokephrase = "Woof!"
|
|
|
|
/obj/item/toy/plushie/girly_corgi
|
|
name = "corgi plushie"
|
|
icon_state = "girlycorgi"
|
|
pokephrase = "Arf!"
|
|
|
|
/obj/item/toy/plushie/robo_corgi
|
|
name = "borgi plushie"
|
|
icon_state = "robotcorgi"
|
|
pokephrase = "Bark."
|
|
|
|
/obj/item/toy/plushie/octopus
|
|
name = "octopus plushie"
|
|
icon_state = "loveable"
|
|
pokephrase = "Squish!"
|
|
|
|
/obj/item/toy/plushie/face_hugger
|
|
name = "facehugger plushie"
|
|
icon_state = "huggable"
|
|
pokephrase = "Hug!"
|
|
|
|
//foxes are basically the best
|
|
|
|
/obj/item/toy/plushie/red_fox
|
|
name = "red fox plushie"
|
|
icon_state = "redfox"
|
|
pokephrase = "Gecker!"
|
|
|
|
/obj/item/toy/plushie/black_fox
|
|
name = "black fox plushie"
|
|
icon_state = "blackfox"
|
|
pokephrase = "Ack!"
|
|
|
|
/obj/item/toy/plushie/marble_fox
|
|
name = "marble fox plushie"
|
|
icon_state = "marblefox"
|
|
pokephrase = "Awoo!"
|
|
|
|
/obj/item/toy/plushie/blue_fox
|
|
name = "blue fox plushie"
|
|
icon_state = "bluefox"
|
|
pokephrase = "Yoww!"
|
|
|
|
/obj/item/toy/plushie/orange_fox
|
|
name = "orange fox plushie"
|
|
icon_state = "orangefox"
|
|
pokephrase = "Yagh!"
|
|
|
|
/obj/item/toy/plushie/coffee_fox
|
|
name = "coffee fox plushie"
|
|
icon_state = "coffeefox"
|
|
pokephrase = "Gerr!"
|
|
|
|
/obj/item/toy/plushie/pink_fox
|
|
name = "pink fox plushie"
|
|
icon_state = "pinkfox"
|
|
pokephrase = "Yack!"
|
|
|
|
/obj/item/toy/plushie/purple_fox
|
|
name = "purple fox plushie"
|
|
icon_state = "purplefox"
|
|
pokephrase = "Whine!"
|
|
|
|
/obj/item/toy/plushie/crimson_fox
|
|
name = "crimson fox plushie"
|
|
icon_state = "crimsonfox"
|
|
pokephrase = "Auuu!"
|
|
|
|
/obj/item/toy/plushie/deer
|
|
name = "deer plushie"
|
|
icon_state = "deer"
|
|
pokephrase = "Bleat!"
|
|
|
|
/obj/item/toy/plushie/black_cat
|
|
name = "black cat plushie"
|
|
icon_state = "blackcat"
|
|
pokephrase = "Mlem!"
|
|
|
|
/obj/item/toy/plushie/grey_cat
|
|
name = "grey cat plushie"
|
|
icon_state = "greycat"
|
|
pokephrase = "Mraw!"
|
|
|
|
/obj/item/toy/plushie/white_cat
|
|
name = "white cat plushie"
|
|
icon_state = "whitecat"
|
|
pokephrase = "Mew!"
|
|
|
|
/obj/item/toy/plushie/orange_cat
|
|
name = "orange cat plushie"
|
|
icon_state = "orangecat"
|
|
pokephrase = "Meow!"
|
|
|
|
/obj/item/toy/plushie/siamese_cat
|
|
name = "siamese cat plushie"
|
|
icon_state = "siamesecat"
|
|
pokephrase = "Mrew?"
|
|
|
|
/obj/item/toy/plushie/tabby_cat
|
|
name = "tabby cat plushie"
|
|
icon_state = "tabbycat"
|
|
pokephrase = "Purr!"
|
|
|
|
/obj/item/toy/plushie/tuxedo_cat
|
|
name = "tuxedo cat plushie"
|
|
icon_state = "tuxedocat"
|
|
pokephrase = "Mrowww!!"
|
|
|
|
// nah, squids are better than foxes :>
|
|
|
|
/obj/item/toy/plushie/squid/green
|
|
name = "green squid plushie"
|
|
desc = "A small, cute and loveable squid friend. This one is green."
|
|
icon = 'icons/obj/toy.dmi'
|
|
icon_state = "greensquid"
|
|
slot_flags = SLOT_HEAD
|
|
pokephrase = "Squrr!"
|
|
|
|
/obj/item/toy/plushie/squid/mint
|
|
name = "mint squid plushie"
|
|
desc = "A small, cute and loveable squid friend. This one is mint coloured."
|
|
icon = 'icons/obj/toy.dmi'
|
|
icon_state = "mintsquid"
|
|
slot_flags = SLOT_HEAD
|
|
pokephrase = "Blurble!"
|
|
|
|
/obj/item/toy/plushie/squid/blue
|
|
name = "blue squid plushie"
|
|
desc = "A small, cute and loveable squid friend. This one is blue."
|
|
icon = 'icons/obj/toy.dmi'
|
|
icon_state = "bluesquid"
|
|
slot_flags = SLOT_HEAD
|
|
pokephrase = "Blob!"
|
|
|
|
/obj/item/toy/plushie/squid/orange
|
|
name = "orange squid plushie"
|
|
desc = "A small, cute and loveable squid friend. This one is orange."
|
|
icon = 'icons/obj/toy.dmi'
|
|
icon_state = "orangesquid"
|
|
slot_flags = SLOT_HEAD
|
|
pokephrase = "Squash!"
|
|
|
|
/obj/item/toy/plushie/squid/yellow
|
|
name = "yellow squid plushie"
|
|
desc = "A small, cute and loveable squid friend. This one is yellow."
|
|
icon = 'icons/obj/toy.dmi'
|
|
icon_state = "yellowsquid"
|
|
slot_flags = SLOT_HEAD
|
|
pokephrase = "Glorble!"
|
|
|
|
/obj/item/toy/plushie/squid/pink
|
|
name = "pink squid plushie"
|
|
desc = "A small, cute and loveable squid friend. This one is pink."
|
|
icon = 'icons/obj/toy.dmi'
|
|
icon_state = "pinksquid"
|
|
slot_flags = SLOT_HEAD
|
|
pokephrase = "Wobble!"
|
|
|
|
/obj/item/toy/plushie/therapy/red
|
|
name = "red therapy doll"
|
|
desc = "A toy for therapeutic and recreational purposes. This one is red."
|
|
icon = 'icons/obj/toy.dmi'
|
|
icon_state = "therapyred"
|
|
item_state = "egg4" // It's the red egg in items_left/righthand
|
|
|
|
/obj/item/toy/plushie/therapy/purple
|
|
name = "purple therapy doll"
|
|
desc = "A toy for therapeutic and recreational purposes. This one is purple."
|
|
icon = 'icons/obj/toy.dmi'
|
|
icon_state = "therapypurple"
|
|
item_state = "egg1" // It's the magenta egg in items_left/righthand
|
|
|
|
/obj/item/toy/plushie/therapy/blue
|
|
name = "blue therapy doll"
|
|
desc = "A toy for therapeutic and recreational purposes. This one is blue."
|
|
icon = 'icons/obj/toy.dmi'
|
|
icon_state = "therapyblue"
|
|
item_state = "egg2" // It's the blue egg in items_left/righthand
|
|
|
|
/obj/item/toy/plushie/therapy/yellow
|
|
name = "yellow therapy doll"
|
|
desc = "A toy for therapeutic and recreational purposes. This one is yellow."
|
|
icon = 'icons/obj/toy.dmi'
|
|
icon_state = "therapyyellow"
|
|
item_state = "egg5" // It's the yellow egg in items_left/righthand
|
|
|
|
/obj/item/toy/plushie/therapy/orange
|
|
name = "orange therapy doll"
|
|
desc = "A toy for therapeutic and recreational purposes. This one is orange."
|
|
icon = 'icons/obj/toy.dmi'
|
|
icon_state = "therapyorange"
|
|
item_state = "egg4" // It's the red one again, lacking an orange item_state and making a new one is pointless
|
|
|
|
/obj/item/toy/plushie/therapy/green
|
|
name = "green therapy doll"
|
|
desc = "A toy for therapeutic and recreational purposes. This one is green."
|
|
icon = 'icons/obj/toy.dmi'
|
|
icon_state = "therapygreen"
|
|
item_state = "egg3" // It's the green egg in items_left/righthand
|
|
|
|
/obj/item/toy/plushie/fumo
|
|
name = "Fumo"
|
|
desc = "A plushie of a....?"
|
|
icon_state = "fumoplushie"
|
|
pokephrase = "I just don't think about losing."
|
|
|
|
//Toy cult sword
|
|
/obj/item/toy/cultsword
|
|
name = "foam sword"
|
|
desc = "An arcane weapon (made of foam) wielded by the followers of the hit Saturday morning cartoon \"King Nursee and the Acolytes of Heroism\"."
|
|
icon = 'icons/obj/weapons.dmi'
|
|
icon_state = "cultblade"
|
|
item_icons = list(
|
|
slot_l_hand_str = 'icons/mob/items/lefthand_melee.dmi',
|
|
slot_r_hand_str = 'icons/mob/items/righthand_melee.dmi',
|
|
)
|
|
w_class = ITEMSIZE_LARGE
|
|
attack_verb = list("attacked", "slashed", "stabbed", "poked")
|
|
|
|
//Flowers fake & real
|
|
|
|
/obj/item/toy/bouquet
|
|
name = "bouquet"
|
|
desc = "A lovely bouquet of flowers. Smells nice!"
|
|
icon = 'icons/obj/items.dmi'
|
|
icon_state = "bouquet"
|
|
w_class = ITEMSIZE_SMALL
|
|
|
|
/obj/item/toy/bouquet/fake
|
|
name = "plastic bouquet"
|
|
desc = "A cheap plastic bouquet of flowers. Smells like cheap, toxic plastic."
|
|
|
|
/obj/item/toy/stickhorse
|
|
name = "stick horse"
|
|
desc = "A pretend horse on a stick for any aspiring little cowboy to ride."
|
|
icon = 'icons/obj/toy.dmi'
|
|
icon_state = "stickhorse"
|
|
w_class = ITEMSIZE_LARGE
|
|
|
|
//////////////////////////////////////////////////////
|
|
// Magic 8-Ball / Conch //
|
|
//////////////////////////////////////////////////////
|
|
|
|
/obj/item/toy/eight_ball
|
|
name = "\improper Magic 8-Ball"
|
|
desc = "Mystical! Magical! Ages 8+!"
|
|
icon = 'icons/obj/toy.dmi'
|
|
icon_state = "eight-ball"
|
|
var/use_action = "shakes the ball"
|
|
var/cooldown = 0
|
|
var/list/possible_answers = list("Definitely.", "All signs point to yes.", "Most likely.", "Yes.", "Ask again later.", "Better not tell you now.", "Future unclear.", "Maybe.", "Doubtful.", "No.", "Don't count on it.", "Never.")
|
|
|
|
/obj/item/toy/eight_ball/attack_self(mob/user as mob)
|
|
if(!cooldown)
|
|
var/answer = pick(possible_answers)
|
|
user.visible_message(span_notice("[user] focuses on their question and [use_action]..."))
|
|
user.visible_message(span_notice("The [src] says \"[answer]\""))
|
|
spawn(30)
|
|
cooldown = 0
|
|
return
|
|
|
|
/obj/item/toy/eight_ball/conch
|
|
name = "Magic Conch shell"
|
|
desc = "All hail the Magic Conch!"
|
|
icon_state = "conch"
|
|
use_action = "pulls the string"
|
|
possible_answers = list("Yes.", "No.", "Try asking again.", "Nothing.", "I don't think so.", "Neither.", "Maybe someday.")
|
|
|
|
// DND Character minis. Use the naming convention (type)character for the icon states.
|
|
/obj/item/toy/character
|
|
icon = 'icons/obj/toy.dmi'
|
|
w_class = ITEMSIZE_SMALL
|
|
pixel_z = 5
|
|
|
|
/obj/item/toy/character/alien
|
|
name = "xenomorph xiniature"
|
|
desc = "A miniature xenomorph. Scary!"
|
|
icon_state = "aliencharacter"
|
|
/obj/item/toy/character/cleric
|
|
name = "cleric miniature"
|
|
desc = "A wee little cleric, with his wee little staff."
|
|
icon_state = "clericcharacter"
|
|
/obj/item/toy/character/warrior
|
|
name = "warrior miniature"
|
|
desc = "That sword would make a decent toothpick."
|
|
icon_state = "warriorcharacter"
|
|
/obj/item/toy/character/thief
|
|
name = "thief miniature"
|
|
desc = "Hey, where did my wallet go!?"
|
|
icon_state = "thiefcharacter"
|
|
/obj/item/toy/character/wizard
|
|
name = "wizard miniature"
|
|
desc = "MAGIC!"
|
|
icon_state = "wizardcharacter"
|
|
/obj/item/toy/character/voidone
|
|
name = "void one miniature"
|
|
desc = "The dark lord has risen!"
|
|
icon_state = "darkmastercharacter"
|
|
/obj/item/toy/character/lich
|
|
name = "lich miniature"
|
|
desc = "Murderboner extraordinaire."
|
|
icon_state = "lichcharacter"
|
|
/obj/item/storage/box/characters
|
|
name = "box of miniatures"
|
|
desc = "The nerd's best friends."
|
|
icon_state = "box"
|
|
/obj/item/storage/box/characters/starts_with = list(
|
|
// /obj/item/toy/character/alien,
|
|
/obj/item/toy/character/cleric,
|
|
/obj/item/toy/character/warrior,
|
|
/obj/item/toy/character/thief,
|
|
/obj/item/toy/character/wizard,
|
|
/obj/item/toy/character/voidone,
|
|
/obj/item/toy/character/lich
|
|
)
|
|
/* VOREStation edit. Moved to toys_vr.dm
|
|
/obj/item/toy/AI
|
|
name = "toy AI"
|
|
desc = "A little toy model AI core!"// with real law announcing action!" //Alas, requires a rewrite of how ion laws work.
|
|
icon = 'icons/obj/toy.dmi'
|
|
icon_state = "AI"
|
|
w_class = ITEMSIZE_SMALL
|
|
var/cooldown = 0
|
|
|
|
/obj/item/toy/AI/attack_self(mob/user)
|
|
if(!cooldown) //for the sanity of everyone
|
|
var/message = generate_ion_law()
|
|
to_chat(user, span_notice("You press the button on [src]."))
|
|
playsound(src, 'sound/machines/click.ogg', 20, 1)
|
|
visible_message(span_danger("[message]"))
|
|
cooldown = 1
|
|
spawn(30) cooldown = 0
|
|
return
|
|
..()
|
|
*/
|
|
/obj/item/toy/owl
|
|
name = "owl action figure"
|
|
desc = "An action figure modeled after 'The Owl', defender of justice."
|
|
icon = 'icons/obj/toy.dmi'
|
|
icon_state = "owlprize"
|
|
w_class = ITEMSIZE_SMALL
|
|
var/cooldown = 0
|
|
|
|
/obj/item/toy/owl/attack_self(mob/user)
|
|
if(!cooldown) //for the sanity of everyone
|
|
var/message = pick("You won't get away this time, Griffin!", "Stop right there, criminal!", "Hoot! Hoot!", "I am the night!")
|
|
to_chat(user, span_notice("You pull the string on the [src]."))
|
|
//playsound(src, 'sound/misc/hoot.ogg', 25, 1)
|
|
visible_message(span_danger("[message]"))
|
|
cooldown = 1
|
|
spawn(30) cooldown = 0
|
|
return
|
|
..()
|
|
|
|
/obj/item/toy/griffin
|
|
name = "griffin action figure"
|
|
desc = "An action figure modeled after 'The Griffin', criminal mastermind."
|
|
icon = 'icons/obj/toy.dmi'
|
|
icon_state = "griffinprize"
|
|
w_class = ITEMSIZE_SMALL
|
|
var/cooldown = 0
|
|
|
|
/obj/item/toy/griffin/attack_self(mob/user)
|
|
if(!cooldown) //for the sanity of everyone
|
|
var/message = pick("You can't stop me, Owl!", "My plan is flawless! The vault is mine!", "Caaaawwww!", "You will never catch me!")
|
|
to_chat(user, span_notice("You pull the string on the [src]."))
|
|
//playsound(src, 'sound/misc/caw.ogg', 25, 1)
|
|
visible_message(span_danger("[message]"))
|
|
cooldown = 1
|
|
spawn(30) cooldown = 0
|
|
return
|
|
..()
|
|
|
|
/* NYET.
|
|
/obj/item/toddler
|
|
icon_state = "toddler"
|
|
name = "toddler"
|
|
desc = "This baby looks almost real. Wait, did it just burp?"
|
|
force = 5
|
|
w_class = ITEMSIZE_LARGE
|
|
slot_flags = SLOT_BACK
|
|
*/
|
|
|
|
//This should really be somewhere else but I don't know where. w/e
|
|
|
|
/obj/item/inflatable_duck
|
|
name = "inflatable duck"
|
|
desc = "No bother to sink or swim when you can just float!"
|
|
icon_state = "inflatable"
|
|
icon = 'icons/inventory/belt/item.dmi'
|
|
slot_flags = SLOT_BELT
|
|
drop_sound = 'sound/items/drop/rubber.ogg'
|
|
|
|
/obj/item/toy/xmastree
|
|
name = "Miniature Christmas tree"
|
|
desc = "Tiny cute Christmas tree."
|
|
icon = 'icons/obj/toy.dmi'
|
|
icon_state = "tinyxmastree"
|
|
w_class = ITEMSIZE_TINY
|
|
force = 1
|
|
throwforce = 1
|
|
drop_sound = 'sound/items/drop/box.ogg'
|
|
|
|
//////////////////////////////////////////////////////
|
|
// Chess Pieces //
|
|
//////////////////////////////////////////////////////
|
|
|
|
/obj/item/toy/chess
|
|
name = "chess piece"
|
|
desc = "This should never display."
|
|
icon = 'icons/obj/chess.dmi'
|
|
w_class = ITEMSIZE_SMALL
|
|
force = 1
|
|
throwforce = 1
|
|
drop_sound = 'sound/items/drop/glass.ogg'
|
|
|
|
/obj/item/toy/chess/pawn_white
|
|
name = "white pawn"
|
|
desc = "A white pawn chess piece. Get accused of cheating when executing a sick En Passant."
|
|
description_info = "Pawns can move forward one square, if that square is unoccupied. If the pawn has not yet moved, it has the option of moving two squares forward provided both squares in front of the pawn are unoccupied. A pawn cannot move backward. They can only capture an enemy piece on either of the two tiles diagonally in front of them, but not the tile directly in front of them."
|
|
icon_state = "white_pawn"
|
|
/obj/item/toy/chess/pawn_black
|
|
name = "black pawn"
|
|
desc = "A black pawn chess piece. Get accused of cheating when executing a sick En Passant."
|
|
description_info = "Pawns can move forward one square, if that square is unoccupied. If the pawn has not yet moved, it has the option of moving two squares forward provided both squares in front of the pawn are unoccupied. A pawn cannot move backward. They can only capture an enemy piece on either of the two tiles diagonally in front of them, but not the tile directly in front of them."
|
|
icon_state = "black_pawn"
|
|
/obj/item/toy/chess/rook_white
|
|
name = "white rook"
|
|
desc = "A white rook chess piece. Also known as a castle."
|
|
description_info = "The Rook can move any number of vacant squares vertically or horizontally."
|
|
icon_state = "white_rook"
|
|
/obj/item/toy/chess/rook_black
|
|
name = "black rook"
|
|
desc = "A black rook chess piece. Also known as a castle."
|
|
description_info = "The Rook can move any number of vacant squares vertically or horizontally."
|
|
icon_state = "black_rook"
|
|
/obj/item/toy/chess/knight_white
|
|
name = "white knight"
|
|
desc = "A white knight chess piece. Sadly, you can't ride it."
|
|
description_info = "The Knight can either move two squares horizontally and one square vertically or two squares vertically and one square horizontally. The knight's movement can also be viewed as an 'L' laid out at any horizontal or vertical angle."
|
|
icon_state = "white_knight"
|
|
/obj/item/toy/chess/knight_black
|
|
name = "black knight"
|
|
desc = "A black knight chess piece. 'Just a flesh wound.'"
|
|
description_info = "The Knight can either move two squares horizontally and one square vertically or two squares vertically and one square horizontally. The knight's movement can also be viewed as an 'L' laid out at any horizontal or vertical angle."
|
|
icon_state = "black_knight"
|
|
/obj/item/toy/chess/bishop_white
|
|
name = "white bishop"
|
|
desc = "A white bishop chess piece."
|
|
description_info = "The Bishop can move any number of vacant squares in any diagonal direction."
|
|
icon_state = "white_bishop"
|
|
/obj/item/toy/chess/bishop_black
|
|
name = "black bishop"
|
|
desc = "A black bishop chess piece."
|
|
description_info = "The Bishop can move any number of vacant squares in any diagonal direction."
|
|
icon_state = "black_bishop"
|
|
/obj/item/toy/chess/queen_white
|
|
name = "white queen"
|
|
desc = "A white queen chess piece."
|
|
description_info = "The Queen can move any number of vacant squares diagonally, horizontally, or vertically."
|
|
icon_state = "white_queen"
|
|
/obj/item/toy/chess/queen_black
|
|
name = "black queen"
|
|
desc = "A black queen chess piece."
|
|
description_info = "The Queen can move any number of vacant squares diagonally, horizontally, or vertically."
|
|
icon_state = "black_queen"
|
|
/obj/item/toy/chess/king_white
|
|
name = "white king"
|
|
desc = "A white king chess piece."
|
|
description_info = "The King can move exactly one square horizontally, vertically, or diagonally. If your opponent captures this piece, you lose."
|
|
icon_state = "white_king"
|
|
/obj/item/toy/chess/king_black
|
|
name = "black king"
|
|
desc = "A black king chess piece."
|
|
description_info = "The King can move exactly one square horizontally, vertically, or diagonally. If your opponent captures this piece, you lose."
|
|
icon_state = "black_king"
|
|
|
|
/// Balloon structures
|
|
|
|
/obj/structure/balloon
|
|
name = "generic balloon"
|
|
desc = "A generic balloon. How boring."
|
|
icon = 'icons/obj/toy.dmi'
|
|
icon_state = "ghostballoon"
|
|
anchored = FALSE
|
|
density = FALSE
|
|
|
|
/obj/structure/balloon/attack_hand(mob/user)
|
|
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
|
|
|
|
if(user.a_intent == I_HELP)
|
|
user.visible_message(span_notice(span_bold("\The [user]") + " pokes [src]!"),span_notice("You poke [src]!"))
|
|
else if (user.a_intent == I_HURT)
|
|
user.visible_message(span_warning(span_bold("\The [user]") + " punches [src]!"),span_warning("You punch [src]!"))
|
|
else if (user.a_intent == I_GRAB)
|
|
user.visible_message(span_warning(span_bold("\The [user]") + " attempts to pop [src]!"),span_warning("You attempt to pop [src]!"))
|
|
else
|
|
user.visible_message(span_notice(span_bold("\The [user]") + " lightly bats the [src]."),span_notice("You lightly bat the [src]."))
|
|
|
|
/obj/structure/balloon/bat
|
|
name = "giant bat balloon"
|
|
desc = "A large balloon in the shape of a spooky bat with orange eyes."
|
|
icon_state = "batballoon"
|
|
|
|
/obj/structure/balloon/ghost
|
|
name = "giant ghost balloon"
|
|
desc = "Oh no, it's a ghost! Oh wait, it's just a balloon. Phew!"
|
|
icon_state = "ghostballoon"
|