mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-09 16:12:17 +00:00
1491 lines
47 KiB
Plaintext
1491 lines
47 KiB
Plaintext
/* Toys!
|
|
* Contains:
|
|
* Balloons
|
|
* Fake telebeacon
|
|
* Fake singularity
|
|
* Toy gun
|
|
* Toy crossbow
|
|
* 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 class='notice'>You fill the balloon with the contents of [A].</span>")
|
|
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/weapon/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("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 class='notice'>You fill the balloon with the contents of [O].</span>")
|
|
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 class='warning'>\The [src] bursts!</span>","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 crossbow
|
|
*/
|
|
|
|
/obj/item/toy/crossbow
|
|
name = "foam dart crossbow"
|
|
desc = "A weapon favored by many overactive children. Ages 8 and up."
|
|
icon = 'icons/obj/gun.dmi'
|
|
icon_state = "crossbow"
|
|
item_icons = list(
|
|
icon_l_hand = 'icons/mob/items/lefthand_guns.dmi',
|
|
icon_r_hand = 'icons/mob/items/righthand_guns.dmi',
|
|
)
|
|
slot_flags = SLOT_HOLSTER
|
|
w_class = ITEMSIZE_SMALL
|
|
attack_verb = list("attacked", "struck", "hit")
|
|
var/bullets = 5
|
|
drop_sound = 'sound/items/drop/gun.ogg'
|
|
|
|
examine(mob/user)
|
|
. = ..()
|
|
if(bullets && get_dist(user, src) <= 2)
|
|
. += "<span class='notice'>It is loaded with [bullets] foam darts!</span>"
|
|
|
|
attackby(obj/item/I as obj, mob/user as mob)
|
|
if(istype(I, /obj/item/toy/ammo/crossbow))
|
|
if(bullets <= 4)
|
|
user.drop_item()
|
|
qdel(I)
|
|
bullets++
|
|
to_chat(user, "<span class='notice'>You load the foam dart into the crossbow.</span>")
|
|
else
|
|
to_chat(usr, "<span class='warning'>It's already fully loaded.</span>")
|
|
|
|
|
|
afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag)
|
|
if(!isturf(target.loc) || target == user) return
|
|
if(flag) return
|
|
|
|
if (locate (/obj/structure/table, src.loc))
|
|
return
|
|
else if (bullets)
|
|
var/turf/trg = get_turf(target)
|
|
var/obj/effect/foam_dart_dummy/D = new/obj/effect/foam_dart_dummy(get_turf(src))
|
|
bullets--
|
|
D.icon_state = "foamdart"
|
|
D.name = "foam dart"
|
|
playsound(src, 'sound/items/syringeproj.ogg', 50, 1)
|
|
|
|
for(var/i=0, i<6, i++)
|
|
if (D)
|
|
if(D.loc == trg) break
|
|
step_towards(D,trg)
|
|
|
|
for(var/mob/living/M in D.loc)
|
|
if(!istype(M,/mob/living)) continue
|
|
if(M == user) continue
|
|
for(var/mob/O in viewers(world.view, D))
|
|
O.show_message(text("<span class='warning'>\The [] was hit by the foam dart!</span>", M), 1)
|
|
new /obj/item/toy/ammo/crossbow(M.loc)
|
|
qdel(D)
|
|
return
|
|
|
|
for(var/atom/A in D.loc)
|
|
if(A == user) continue
|
|
if(A.density)
|
|
new /obj/item/toy/ammo/crossbow(A.loc)
|
|
qdel(D)
|
|
|
|
sleep(1)
|
|
|
|
spawn(10)
|
|
if(D)
|
|
new /obj/item/toy/ammo/crossbow(D.loc)
|
|
qdel(D)
|
|
|
|
return
|
|
else if (bullets == 0)
|
|
user.Weaken(5)
|
|
for(var/mob/O in viewers(world.view, user))
|
|
O.show_message(text("<span class='warning'>\The [] realized they were out of ammo and starting scrounging for some!</span>", user), 1)
|
|
|
|
|
|
attack(mob/M as mob, mob/user as mob)
|
|
src.add_fingerprint(user)
|
|
|
|
// ******* Check
|
|
|
|
if (src.bullets > 0 && M.lying)
|
|
|
|
for(var/mob/O in viewers(M, null))
|
|
if(O.client)
|
|
O.show_message(text("<span class='danger'>\The [] casually lines up a shot with []'s head and pulls the trigger!</span>", user, M), 1, "<span class='warning'>You hear the sound of foam against skull</span>", 2)
|
|
O.show_message(text("<span class='warning'>\The [] was hit in the head by the foam dart!</span>", M), 1)
|
|
|
|
playsound(src, 'sound/items/syringeproj.ogg', 50, 1)
|
|
new /obj/item/toy/ammo/crossbow(M.loc)
|
|
src.bullets--
|
|
else if (M.lying && src.bullets == 0)
|
|
for(var/mob/O in viewers(M, null))
|
|
if (O.client) O.show_message(text("<span class='danger'>\The [] casually lines up a shot with []'s head, pulls the trigger, then realizes they are out of ammo and drops to the floor in search of some!</span>", user, M), 1, "<span class='warning'>You hear someone fall</span>", 2)
|
|
user.Weaken(5)
|
|
return
|
|
|
|
/obj/item/toy/ammo/crossbow
|
|
name = "foam dart"
|
|
desc = "It's nerf or nothing! Ages 8 and up."
|
|
icon = 'icons/obj/toy.dmi'
|
|
icon_state = "foamdart"
|
|
w_class = ITEMSIZE_TINY
|
|
slot_flags = SLOT_EARS
|
|
drop_sound = 'sound/items/drop/food.ogg'
|
|
|
|
/obj/effect/foam_dart_dummy
|
|
name = ""
|
|
desc = ""
|
|
icon = 'icons/obj/toy.dmi'
|
|
icon_state = "null"
|
|
anchored = 1
|
|
density = 0
|
|
|
|
/*
|
|
* 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")
|
|
|
|
attack_self(mob/user as mob)
|
|
src.active = !( src.active )
|
|
if (src.active)
|
|
to_chat(user, "<span class='notice'>You extend the plastic blade with a quick flick of your wrist.</span>")
|
|
playsound(src, 'sound/weapons/saberon.ogg', 50, 1)
|
|
src.item_state = "[icon_state]_blade"
|
|
src.w_class = ITEMSIZE_LARGE
|
|
else
|
|
to_chat(user, "<span class='notice'>You push the plastic blade back down into the handle.</span>")
|
|
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 class='warning'>You can't do that right now!</span>")
|
|
return
|
|
|
|
if(alert("Are you sure you want to recolor your blade?", "Confirm Recolor", "Yes", "No") == "Yes")
|
|
var/energy_color_input = input(usr,"","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 class='notice'>Alt-click to recolor it.</span>"
|
|
|
|
/obj/item/toy/sword/attackby(obj/item/weapon/W, mob/user)
|
|
if(istype(W, /obj/item/device/multitool) && !active)
|
|
if(!rainbow)
|
|
rainbow = TRUE
|
|
else
|
|
rainbow = FALSE
|
|
to_chat(user, "<span class='notice'>You manipulate the color controller in [src].</span>")
|
|
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
|
|
|
|
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 class='warning'>The [src.name] explodes!</span>","<span class='warning'>You hear a snap!</span>")
|
|
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 == "run")
|
|
to_chat(M, "<span class='warning'>You step on the snap pop!</span>")
|
|
|
|
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 class='warning'>The [src.name] explodes!</span>","<span class='warning'>You hear a snap!</span>")
|
|
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 class='notice'>You blow on [src], creating an ear-splitting noise!</span>")
|
|
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"
|
|
<<<<<<< HEAD
|
|
w_class = ITEMSIZE_SMALL //chompstation add because WHY ARE THEY SO BIG
|
|
||||||| parent of 32a632bb92... Merge pull request #10488 from VOREStation/upstream-merge-8108
|
|
=======
|
|
w_class = ITEMSIZE_TINY
|
|
>>>>>>> 32a632bb92... Merge pull request #10488 from VOREStation/upstream-merge-8108
|
|
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 class='notice'>The [src] says \"[toysay]\".</span>")
|
|
playsound(src, 'sound/machines/click.ogg', 20, 1)
|
|
|
|
/obj/item/toy/figure/cmo
|
|
name = "Chief Medical Officer action figure"
|
|
desc = "A \"Space Life\" brand 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 = "Atmospheric Technician action figure"
|
|
desc = "A \"Space Life\" brand Atmospheric Technician action figure."
|
|
icon_state = "atmos"
|
|
toysay = "Glory to Atmosia!"
|
|
|
|
/obj/item/toy/figure/bartender
|
|
name = "Bartender action figure"
|
|
desc = "A \"Space Life\" brand 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 = "Gardener action figure"
|
|
desc = "A \"Space Life\" brand Gardener action figure."
|
|
icon_state = "botanist"
|
|
toysay = "Dude, I see colors..."
|
|
|
|
/obj/item/toy/figure/captain
|
|
name = "Site Manager action figure"
|
|
desc = "A \"Space Life\" brand Site Manager action figure."
|
|
icon_state = "captain"
|
|
toysay = "How do I open this display case?"
|
|
|
|
/obj/item/toy/figure/cargotech
|
|
name = "Cargo Technician action figure"
|
|
desc = "A \"Space Life\" brand Cargo Technician action figure."
|
|
icon_state = "cargotech"
|
|
toysay = "For Cargonia!"
|
|
|
|
/obj/item/toy/figure/ce
|
|
name = "Chief Engineer action figure"
|
|
desc = "A \"Space Life\" brand Chief Engineer action figure."
|
|
icon_state = "ce"
|
|
toysay = "Wire the solars!"
|
|
|
|
/obj/item/toy/figure/chaplain
|
|
name = "Chaplain action figure"
|
|
desc = "A \"Space Life\" brand Chaplain action figure."
|
|
icon_state = "chaplain"
|
|
toysay = "Gods make me a killing machine please!"
|
|
|
|
/obj/item/toy/figure/chef
|
|
name = "Chef action figure"
|
|
desc = "A \"Space Life\" brand Chef action figure."
|
|
icon_state = "chef"
|
|
toysay = "I swear it's not human meat."
|
|
|
|
/obj/item/toy/figure/chemist
|
|
name = "Chemist action figure"
|
|
desc = "A \"Space Life\" brand Chemist action figure."
|
|
icon_state = "chemist"
|
|
toysay = "Get your pills!"
|
|
|
|
/obj/item/toy/figure/clown
|
|
name = "Clown action figure"
|
|
desc = "A \"Space Life\" brand 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 = "Detective action figure"
|
|
desc = "A \"Space Life\" brand 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 = "Engineer action figure"
|
|
desc = "A \"Space Life\" brand Engineer action figure."
|
|
icon_state = "engineer"
|
|
toysay = "Oh god, the engine is gonna go!"
|
|
|
|
/obj/item/toy/figure/geneticist
|
|
name = "Geneticist action figure"
|
|
desc = "A \"Space Life\" brand Geneticist action figure, which was recently dicontinued."
|
|
icon_state = "geneticist"
|
|
toysay = "I'm not qualified for this job."
|
|
|
|
/obj/item/toy/figure/hop
|
|
name = "Head of Personnel action figure"
|
|
desc = "A \"Space Life\" brand Head of Personnel action figure."
|
|
icon_state = "hop"
|
|
toysay = "Giving out all access!"
|
|
|
|
/obj/item/toy/figure/hos
|
|
name = "Head of Security action figure"
|
|
desc = "A \"Space Life\" brand Head of Security action figure."
|
|
icon_state = "hos"
|
|
toysay = "I'm here to win, anything else is secondary."
|
|
|
|
/obj/item/toy/figure/qm
|
|
name = "Quartermaster action figure"
|
|
desc = "A \"Space Life\" brand Quartermaster action figure."
|
|
icon_state = "qm"
|
|
toysay = "Hail Cargonia!"
|
|
|
|
/obj/item/toy/figure/janitor
|
|
name = "Janitor action figure"
|
|
desc = "A \"Space Life\" brand Janitor action figure."
|
|
icon_state = "janitor"
|
|
toysay = "Look at the signs, you idiot."
|
|
|
|
/obj/item/toy/figure/agent
|
|
name = "Internal Affairs Agent action figure"
|
|
desc = "A \"Space Life\" brand 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 = "Librarian action figure"
|
|
desc = "A \"Space Life\" brand Librarian action figure."
|
|
icon_state = "librarian"
|
|
toysay = "One day while..."
|
|
|
|
/obj/item/toy/figure/md
|
|
name = "Medical Doctor action figure"
|
|
desc = "A \"Space Life\" brand Medical Doctor action figure."
|
|
icon_state = "md"
|
|
toysay = "The patient is already dead!"
|
|
|
|
/obj/item/toy/figure/mime
|
|
name = "Mime action figure"
|
|
desc = "A \"Space Life\" brand Mime action figure."
|
|
icon_state = "mime"
|
|
toysay = "..."
|
|
|
|
/obj/item/toy/figure/miner
|
|
name = "Shaft Miner action figure"
|
|
desc = "A \"Space Life\" brand 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 = "Wizard action figure"
|
|
desc = "A \"Space Life\" brand Wizard action figure."
|
|
icon_state = "wizard"
|
|
toysay = "Ei Nath!"
|
|
|
|
/obj/item/toy/figure/rd
|
|
name = "Research Director action figure"
|
|
desc = "A \"Space Life\" brand Research Director action figure."
|
|
icon_state = "rd"
|
|
toysay = "Blowing all of the borgs!"
|
|
|
|
/obj/item/toy/figure/roboticist
|
|
name = "Roboticist action figure"
|
|
desc = "A \"Space Life\" brand Roboticist action figure."
|
|
icon_state = "roboticist"
|
|
toysay = "He asked to be borged!"
|
|
|
|
/obj/item/toy/figure/scientist
|
|
name = "Scientist action figure"
|
|
desc = "A \"Space Life\" brand 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 = "Security Officer action figure"
|
|
desc = "A \"Space Life\" brand Security Officer action figure."
|
|
icon_state = "secofficer"
|
|
toysay = "I am the law!"
|
|
|
|
/obj/item/toy/figure/virologist
|
|
name = "Virologist action figure"
|
|
desc = "A \"Space Life\" brand Virologist action figure."
|
|
icon_state = "virologist"
|
|
toysay = "The cure is potassium!"
|
|
|
|
/obj/item/toy/figure/warden
|
|
name = "Warden action figure"
|
|
desc = "A \"Space Life\" brand Warden action figure."
|
|
icon_state = "warden"
|
|
toysay = "Execute him for breaking in!"
|
|
|
|
/obj/item/toy/figure/psychologist
|
|
name = "Psychologist action figure"
|
|
desc = "A \"Space Life\" brand Psychologist action figure."
|
|
icon_state = "psychologist"
|
|
toysay = "The analyzer says you're fine!"
|
|
|
|
/obj/item/toy/figure/paramedic
|
|
name = "Paramedic action figure"
|
|
desc = "A \"Space Life\" brand Paramedic action figure."
|
|
icon_state = "paramedic"
|
|
toysay = "WHERE ARE YOU??"
|
|
|
|
/obj/item/toy/figure/ert
|
|
name = "Emergency Response Team Commander action figure"
|
|
desc = "A \"Space Life\" brand Emergency Response Team Commander action figure."
|
|
icon_state = "ert"
|
|
toysay = "We're probably the good guys!"
|
|
|
|
/*
|
|
* 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 = 0
|
|
density = 1
|
|
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)
|
|
. += "<i>You notice an incision has been made on [src].</i>"
|
|
if(in_range(user, src) && stored_item)
|
|
. += "<i>You can see something in there...</i>"
|
|
|
|
/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 \icon[stored_item] [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 class='notice'><b>\The [user]</b> hugs [src]!</span>","<span class='notice'>You hug [src]!</span>")
|
|
else if (user.a_intent == I_HURT)
|
|
user.visible_message("<span class='warning'><b>\The [user]</b> punches [src]!</span>","<span class='warning'>You punch [src]!</span>")
|
|
else if (user.a_intent == I_GRAB)
|
|
user.visible_message("<span class='warning'><b>\The [user]</b> attempts to strangle [src]!</span>","<span class='warning'>You attempt to strangle [src]!</span>")
|
|
else
|
|
user.visible_message("<span class='notice'><b>\The [user]</b> pokes the [src].</span>","<span class='notice'>You poke the [src].</span>")
|
|
visible_message("[src] says, \"[phrase]\"")
|
|
|
|
|
|
/obj/structure/plushie/attackby(obj/item/I as obj, mob/user as mob)
|
|
if(istype(I, /obj/item/device/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)
|
|
. += "<i>You notice an incision has been made on [src].</i>"
|
|
if(in_range(user, src) && stored_item)
|
|
. += "<i>You can see something in there...</i>"
|
|
|
|
/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 \icon[stored_item] [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 class='notice'><b>\The [user]</b> hugs [src]!</span>","<span class='notice'>You hug [src]!</span>")
|
|
else if (user.a_intent == I_HURT)
|
|
user.visible_message("<span class='warning'><b>\The [user]</b> punches [src]!</span>","<span class='warning'>You punch [src]!</span>")
|
|
else if (user.a_intent == I_GRAB)
|
|
user.visible_message("<span class='warning'><b>\The [user]</b> attempts to strangle [src]!</span>","<span class='warning'>You attempt to strangle [src]!</span>")
|
|
else
|
|
user.visible_message("<span class='notice'><b>\The [user]</b> pokes [src].</span>","<span class='notice'>You poke [src].</span>")
|
|
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(input("What do you want to name the plushie?", ,""), MAX_NAME_LEN)
|
|
|
|
if(src && input && !M.stat && in_range(M,src))
|
|
name = input
|
|
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 class='notice'>[user] makes \the [I] kiss \the [src]!.</span>", \
|
|
"<span class='notice'>You make \the [I] kiss \the [src]!.</span>")
|
|
return
|
|
|
|
|
|
if(istype(I, /obj/item/device/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
|
|
|
|
|
|
//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 class='notice'>[user] focuses on their question and [use_action]...</span>")
|
|
user.visible_message("<span class='notice'>The [src] says \"[answer]\"</span>")
|
|
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/weapon/storage/box/characters
|
|
name = "box of miniatures"
|
|
desc = "The nerd's best friends."
|
|
icon_state = "box"
|
|
/obj/item/weapon/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 class='notice'>You press the button on [src].</span>")
|
|
playsound(src, 'sound/machines/click.ogg', 20, 1)
|
|
visible_message("<span class='danger'>[message]</span>")
|
|
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 class='notice'>You pull the string on the [src].</span>")
|
|
//playsound(src, 'sound/misc/hoot.ogg', 25, 1)
|
|
visible_message("<span class='danger'>[message]</span>")
|
|
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 class='notice'>You pull the string on the [src].</span>")
|
|
//playsound(src, 'sound/misc/caw.ogg', 25, 1)
|
|
visible_message("<span class='danger'>[message]</span>")
|
|
cooldown = 1
|
|
spawn(30) cooldown = 0
|
|
return
|
|
..()
|
|
|
|
/* NYET.
|
|
/obj/item/weapon/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/weapon/inflatable_duck
|
|
name = "inflatable duck"
|
|
desc = "No bother to sink or swim when you can just float!"
|
|
icon_state = "inflatable"
|
|
icon = 'icons/obj/clothing/belts.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 = "blue pawn"
|
|
desc = "A large pawn piece for playing chess. It's made of a blue-colored glass."
|
|
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 = "w-pawn"
|
|
/obj/item/toy/chess/pawn_black
|
|
name = "purple pawn"
|
|
desc = "A large pawn piece for playing chess. It's made of a purple-colored glass."
|
|
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 = "b-pawn"
|
|
/obj/item/toy/chess/rook_white
|
|
name = "blue rook"
|
|
desc = "A large rook piece for playing chess. It's made of a blue-colored glass."
|
|
description_info = "The Rook can move any number of vacant squares vertically or horizontally."
|
|
icon_state = "w-rook"
|
|
/obj/item/toy/chess/rook_black
|
|
name = "purple rook"
|
|
desc = "A large rook piece for playing chess. It's made of a purple-colored glass."
|
|
description_info = "The Rook can move any number of vacant squares vertically or horizontally."
|
|
icon_state = "b-rook"
|
|
/obj/item/toy/chess/knight_white
|
|
name = "blue knight"
|
|
desc = "A large knight piece for playing chess. It's made of a blue-colored glass. 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 = "w-knight"
|
|
/obj/item/toy/chess/knight_black
|
|
name = "purple knight"
|
|
desc = "A large knight piece for playing chess. It's made of a purple-colored glass. '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 = "b-knight"
|
|
/obj/item/toy/chess/bishop_white
|
|
name = "blue bishop"
|
|
desc = "A large bishop piece for playing chess. It's made of a blue-colored glass."
|
|
description_info = "The Bishop can move any number of vacant squares in any diagonal direction."
|
|
icon_state = "w-bishop"
|
|
/obj/item/toy/chess/bishop_black
|
|
name = "purple bishop"
|
|
desc = "A large bishop piece for playing chess. It's made of a purple-colored glass."
|
|
description_info = "The Bishop can move any number of vacant squares in any diagonal direction."
|
|
icon_state = "b-bishop"
|
|
/obj/item/toy/chess/queen_white
|
|
name = "blue queen"
|
|
desc = "A large queen piece for playing chess. It's made of a blue-colored glass."
|
|
description_info = "The Queen can move any number of vacant squares diagonally, horizontally, or vertically."
|
|
icon_state = "w-queen"
|
|
/obj/item/toy/chess/queen_black
|
|
name = "purple queen"
|
|
desc = "A large queen piece for playing chess. It's made of a purple-colored glass."
|
|
description_info = "The Queen can move any number of vacant squares diagonally, horizontally, or vertically."
|
|
icon_state = "b-queen"
|
|
/obj/item/toy/chess/king_white
|
|
name = "blue king"
|
|
desc = "A large king piece for playing chess. It's made of a blue-colored glass."
|
|
description_info = "The King can move exactly one square horizontally, vertically, or diagonally. If your opponent captures this piece, you lose."
|
|
icon_state = "w-king"
|
|
/obj/item/toy/chess/king_black
|
|
name = "purple king"
|
|
desc = "A large king piece for playing chess. It's made of a purple-colored glass."
|
|
description_info = "The King can move exactly one square horizontally, vertically, or diagonally. If your opponent captures this piece, you lose."
|
|
icon_state = "b-king"
|
|
|
|
/// Balloon structures
|
|
|
|
/obj/structure/balloon
|
|
name = "generic balloon"
|
|
desc = "A generic balloon. How boring."
|
|
icon = 'icons/obj/toy.dmi'
|
|
icon_state = "ghostballoon"
|
|
anchored = 0
|
|
density = 0
|
|
|
|
/obj/structure/balloon/attack_hand(mob/user)
|
|
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
|
|
|
|
if(user.a_intent == I_HELP)
|
|
user.visible_message("<span class='notice'><b>\The [user]</b> pokes [src]!</span>","<span class='notice'>You poke [src]!</span>")
|
|
else if (user.a_intent == I_HURT)
|
|
user.visible_message("<span class='warning'><b>\The [user]</b> punches [src]!</span>","<span class='warning'>You punch [src]!</span>")
|
|
else if (user.a_intent == I_GRAB)
|
|
user.visible_message("<span class='warning'><b>\The [user]</b> attempts to pop [src]!</span>","<span class='warning'>You attempt to pop [src]!</span>")
|
|
else
|
|
user.visible_message("<span class='notice'><b>\The [user]</b> lightly bats the [src].</span>","<span class='notice'>You lightly bat the [src].</span>")
|
|
|
|
/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" |