mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-01-05 06:53:30 +00:00
1109 lines
35 KiB
Plaintext
1109 lines
35 KiB
Plaintext
/* Toys!
|
|
* Contains:
|
|
* Balloons
|
|
* Fake telebeacon
|
|
* Fake singularity
|
|
* Toy gun
|
|
* Toy crossbow
|
|
* Toy swords
|
|
* Toy bosun's whistle
|
|
* Toy mechs
|
|
* Snap pops
|
|
* Water flower
|
|
* Therapy dolls
|
|
* Toddler doll
|
|
* Inflatable duck
|
|
* Action figures
|
|
* Plushies
|
|
* Toy cult sword
|
|
*/
|
|
|
|
|
|
/obj/item/toy
|
|
icon = 'icons/obj/toy.dmi'
|
|
item_icons = list(
|
|
slot_l_hand_str = 'icons/mob/items/lefthand_toy.dmi',
|
|
slot_r_hand_str = 'icons/mob/items/righthand_toy.dmi',
|
|
)
|
|
throwforce = 0
|
|
throw_speed = 4
|
|
throw_range = 20
|
|
force = 0
|
|
drop_sound = 'sound/items/drop/gloves.ogg'
|
|
pickup_sound = 'sound/items/pickup/gloves.ogg'
|
|
|
|
/*
|
|
* Water Balloons
|
|
*/
|
|
/obj/item/toy/waterballoon
|
|
name = "water balloon"
|
|
desc = "A translucent balloon. There's nothing in it."
|
|
icon_state = "waterballoon-e"
|
|
item_state = "waterballoon-e"
|
|
drop_sound = 'sound/items/drop/rubber.ogg'
|
|
pickup_sound = 'sound/items/pickup/rubber.ogg'
|
|
|
|
/obj/item/toy/waterballoon/New()
|
|
var/datum/reagents/R = new/datum/reagents(10)
|
|
reagents = R
|
|
R.my_atom = src
|
|
|
|
/obj/item/toy/waterballoon/attack(mob/living/carbon/human/M as mob, mob/user as mob)
|
|
return
|
|
|
|
/obj/item/toy/waterballoon/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/waterballoon/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(/decl/reagent/acid/polyacid, 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/waterballoon/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"
|
|
QDEL_IN(src, 5)
|
|
return
|
|
|
|
/obj/item/toy/waterballoon/update_icon()
|
|
if(src.reagents.total_volume >= 1)
|
|
icon_state = "waterballoon"
|
|
else
|
|
icon_state = "waterballoon-e"
|
|
item_state = icon_state
|
|
|
|
/*
|
|
* Balloons
|
|
*/
|
|
|
|
#define BALLOON_NORMAL 0
|
|
#define BALLOON_BLOW 1
|
|
#define BALLOON_BURST 2
|
|
|
|
/obj/item/toy/balloon
|
|
name = "balloon"
|
|
desc_info = "You can fill it up with gas using a tank."
|
|
desc_fluff = "Thanks to the joint effort of the Research and Atmospherics teams, station enviroments have been set to allow balloons to float without helium. Look, it was the end of the month and we went under budget."
|
|
drop_sound = 'sound/items/drop/rubber.ogg'
|
|
pickup_sound = 'sound/items/pickup/rubber.ogg'
|
|
w_class = ITEMSIZE_HUGE
|
|
var/datum/gas_mixture/air_contents = null
|
|
var/status = 0 // 0 = normal, 1 = blow, 2 = burst
|
|
|
|
/obj/item/toy/balloon/attack_self(mob/user as mob)
|
|
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)
|
|
if(prob(66))
|
|
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='warning'><b>\The [user]</b> pops [src]!</span>","<span class='warning'>You pop [src]!</span>")
|
|
burst()
|
|
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/item/toy/balloon/update_icon()
|
|
switch(status)
|
|
if(BALLOON_BURST)
|
|
if(("[initial(icon_state)]_burst") in icon_states(icon))
|
|
icon_state = "[initial(icon_state)]_burst"
|
|
item_state = icon_state
|
|
else
|
|
qdel(src) // Just qdel it if it doesn't have a burst state.
|
|
if(BALLOON_BLOW)
|
|
if(("[initial(icon_state)]_blow") in icon_states(icon)) //Only give blow icon_state if it has one. For those who can't be bothered to sprite. (Also a catch to prevent invisible sprites.)
|
|
icon_state = "[initial(icon_state)]_blow"
|
|
update_held_icon()
|
|
|
|
/obj/item/toy/balloon/proc/blow(obj/item/tank/T)
|
|
if(status == BALLOON_BURST)
|
|
return
|
|
else
|
|
src.air_contents = T.remove_air_volume(3)
|
|
status = BALLOON_BLOW
|
|
update_icon()
|
|
|
|
/obj/item/toy/balloon/proc/burst()
|
|
playsound(src, 'sound/weapons/gunshot/gunshot1.ogg', 100, 1)
|
|
status = BALLOON_BURST
|
|
update_icon()
|
|
if(air_contents)
|
|
loc.assume_air(air_contents)
|
|
|
|
/obj/item/toy/balloon/ex_act(severity)
|
|
burst()
|
|
switch(severity)
|
|
if(1)
|
|
qdel(src)
|
|
if(2)
|
|
if(prob(50))
|
|
qdel(src)
|
|
|
|
/obj/item/toy/balloon/bullet_act()
|
|
burst()
|
|
|
|
/obj/item/toy/balloon/fire_act(datum/gas_mixture/air, temperature, volume)
|
|
if(temperature > T0C+100)
|
|
burst()
|
|
return
|
|
|
|
/obj/item/toy/balloon/attackby(obj/item/W as obj, mob/user as mob)
|
|
if(can_puncture(W))
|
|
burst()
|
|
|
|
/obj/item/toy/balloon/latex
|
|
desc = "Leaves a starchy taste in your mouth after blowing into it."
|
|
icon_state = "latexballoon"
|
|
item_state = "latexballoon"
|
|
|
|
/obj/item/toy/balloon/latex/nitrile
|
|
desc = "I hope you aren't going to re-use these for medical purposes."
|
|
icon_state = "nitrileballoon"
|
|
item_state = "nitrileballoon"
|
|
|
|
/obj/item/toy/balloon/syndicate
|
|
name = "'criminal' balloon"
|
|
desc = "Across the balloon is printed: \"FUK CAPITALISM!11!\""
|
|
icon_state = "syndballoon"
|
|
item_state = "syndballoon"
|
|
|
|
/obj/item/toy/balloon/nanotrasen
|
|
name = "'motivational' balloon"
|
|
desc = "Across the balloon is printed: \"Man, I love corporate soooo much. I use only brand name products. You have NO idea.\""
|
|
icon_state = "ntballoon"
|
|
item_state = "ntballoon"
|
|
|
|
/obj/item/toy/balloon/fellowship
|
|
name = "fellowship balloon"
|
|
desc = "Across the balloon is printed: \"Fellowship R Friends!\""
|
|
icon_state = "fellowshipballoon"
|
|
item_state = "fellowshipballoon"
|
|
|
|
/obj/item/toy/balloon/fellowshiphead
|
|
name = "fellowship head balloon"
|
|
desc = "Across the balloon is printed: \"Follow Fellows Forwards With The Fellowship!\""
|
|
icon_state = "fellowshipheadballoon"
|
|
item_state = "fellowshipheadballoon"
|
|
|
|
/obj/item/toy/balloon/contender
|
|
name = "contender balloon"
|
|
desc = "Across the balloon is printed: \"Contenders R Cool!\""
|
|
icon_state = "contenderballoon"
|
|
item_state = "contenderballoon"
|
|
|
|
/obj/item/toy/balloon/contenderhead
|
|
name = "contender head balloon"
|
|
desc = "Across the balloon is printed: \"Converge With Comrades in the Contenders!\""
|
|
icon_state = "contenderheadballoon"
|
|
item_state = "contenderheadballoon"
|
|
|
|
/obj/item/toy/balloon/bat
|
|
name = "giant bat balloon"
|
|
desc = "A large, kitschy balloon in the shape of a spooky bat with orange eyes."
|
|
desc_fluff = "There's a tag that reads: \"Apparition Halloween LLC.\""
|
|
icon_state = "batballoon"
|
|
|
|
/obj/item/toy/balloon/ghost
|
|
name = "giant ghost balloon"
|
|
desc = "Oh no, it's a ghost! Oh wait, it's just a kitschy balloon. Phew!"
|
|
desc_fluff = "There's a tag that reads: \"Apparition Halloween LLC.\""
|
|
icon_state = "ghostballoon"
|
|
|
|
/obj/item/toy/balloon/xmastree
|
|
name = "giant christmas tree balloon"
|
|
desc = "Mandatory at inter-generational christmas gatherings and office parties."
|
|
desc_fluff = "There's a tag that reads: \"On behalf of employee relations, the CCIA Department wishes you a happy non-denominational holiday season.\""
|
|
icon_state = "xmastreeballoon"
|
|
|
|
/obj/item/toy/balloon/candycane
|
|
name = "giant candy cane balloon"
|
|
desc = "Kris Kringle ain't got nothing on this candied confection."
|
|
desc_fluff = "There's a tag that reads: \"On behalf of employee relations, the CCIA Department wishes you a happy non-denominational holiday season.\""
|
|
icon_state = "candycaneballoon"
|
|
|
|
/obj/item/toy/balloon/color /// To color it, VV the 'color' var with a hex color code with the # included.
|
|
desc = "It's a plain little balloon. Comes in many colors!"
|
|
icon_state = "colorballoon"
|
|
item_state = "colorballoon"
|
|
build_from_parts = TRUE
|
|
worn_overlay = "string"
|
|
randpixel = 5
|
|
|
|
/obj/item/toy/balloon/color/Initialize()
|
|
. = ..()
|
|
if(build_from_parts)
|
|
color = pick(COLOR_BLUE, COLOR_RED, COLOR_PURPLE, COLOR_BROWN, COLOR_GREEN, COLOR_CYAN, COLOR_YELLOW)
|
|
update_icon()
|
|
randpixel_xy()
|
|
|
|
/obj/item/toy/balloon/color/update_icon() // Only color the balloon, not the string.
|
|
..()
|
|
if(status == BALLOON_BURST)
|
|
worn_overlay = null
|
|
cut_overlay()
|
|
if(worn_overlay)
|
|
add_overlay(overlay_image(icon, "[initial(icon_state)]_[worn_overlay]", flags=RESET_COLOR))
|
|
|
|
#undef BALLOON_NORMAL
|
|
#undef BALLOON_BLOW
|
|
#undef BALLOON_BURST
|
|
|
|
/*
|
|
* 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/guns/crossbow.dmi'
|
|
icon_state = "crossbow"
|
|
item_state = "crossbow"
|
|
drop_sound = 'sound/items/drop/gun.ogg'
|
|
pickup_sound = 'sound/items/pickup/gun.ogg'
|
|
contained_sprite = TRUE
|
|
w_class = ITEMSIZE_SMALL
|
|
attack_verb = list("attacked", "struck", "hit")
|
|
var/bullets = 5
|
|
|
|
examine(mob/user)
|
|
if(..(user, 2) && bullets)
|
|
to_chat(user, "<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_from_inventory(I,src)
|
|
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(user.loc, '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(user.loc, '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'
|
|
pickup_sound = 'sound/items/pickup/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 a blue energy sword. Realistic sounds and colors! Ages 8 and up."
|
|
icon = 'icons/obj/weapons.dmi'
|
|
icon_state = "sword0"
|
|
item_state = "sword0"
|
|
item_icons = list(
|
|
slot_l_hand_str = 'icons/mob/items/weapons/lefthand_energy.dmi',
|
|
slot_r_hand_str = 'icons/mob/items/weapons/righthand_energy.dmi',
|
|
)
|
|
drop_sound = 'sound/items/drop/gun.ogg'
|
|
pickup_sound = 'sound/items/pickup/gun.ogg'
|
|
var/active = 0.0
|
|
var/colorvar = "blue"
|
|
var/last_active = 0
|
|
w_class = ITEMSIZE_SMALL
|
|
attack_verb = list("attacked", "struck", "hit")
|
|
|
|
/obj/item/toy/sword/attack_self(mob/user as mob)
|
|
if(last_active <= world.time - 20)
|
|
last_active = world.time
|
|
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(user, 'sound/weapons/saberon.ogg', 50, 1)
|
|
src.icon_state = "sword[colorvar]"
|
|
src.item_state = "sword[colorvar]"
|
|
src.w_class = ITEMSIZE_LARGE
|
|
else
|
|
to_chat(user, "<span class='notice'>You push the plastic blade back down into the handle.</span>")
|
|
playsound(user, 'sound/weapons/saberoff.ogg', 50, 1)
|
|
src.icon_state = "sword0"
|
|
src.item_state = "sword0"
|
|
src.w_class = ITEMSIZE_SMALL
|
|
|
|
if(istype(user,/mob/living/carbon/human))
|
|
var/mob/living/carbon/human/H = user
|
|
H.update_inv_l_hand()
|
|
H.update_inv_r_hand()
|
|
|
|
src.add_fingerprint(user)
|
|
return
|
|
|
|
/obj/item/toy/sword/Initialize()
|
|
. = ..()
|
|
colorvar = pick("red","blue","green","purple")
|
|
desc = "A cheap, plastic replica of a [colorvar] energy sword. Realistic sounds and colors! Ages 8 and up."
|
|
|
|
/obj/item/toy/katana
|
|
name = "replica katana"
|
|
desc = "A cheap plastic katana that luckily isn't sharp enough to accidentally cut your floor length braid. Woefully underpowered in D20."
|
|
contained_sprite = TRUE
|
|
icon = 'icons/obj/sword.dmi'
|
|
icon_state = "katana"
|
|
item_state = "katana"
|
|
drop_sound = 'sound/items/drop/gun.ogg'
|
|
pickup_sound = /decl/sound_category/sword_pickup_sound
|
|
equip_sound = /decl/sound_category/sword_equip_sound
|
|
flags = CONDUCT
|
|
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 = 'sound/items/drop/food.ogg'
|
|
pickup_sound = 'sound/items/pickup/food.ogg'
|
|
|
|
/obj/item/toy/snappop/attack_self(mob/user)
|
|
user.drop_from_inventory(src)
|
|
user.visible_message(SPAN_WARNING("\The [user] throws \the [src] at their feet!"), SPAN_NOTICE("You throw \the [src] at your feet."))
|
|
do_pop()
|
|
|
|
/obj/item/toy/snappop/throw_impact(atom/hit_atom)
|
|
..()
|
|
do_pop()
|
|
|
|
/obj/item/toy/snappop/Crossed(H as mob|obj)
|
|
if((ishuman(H))) //i guess carp and shit shouldn't set them off
|
|
var/mob/living/carbon/human/M = H
|
|
if(M.shoes?.item_flags & LIGHTSTEP)
|
|
return
|
|
if(M.m_intent == M_RUN)
|
|
to_chat(M, SPAN_WARNING("You step on the snap pop!"))
|
|
do_pop()
|
|
|
|
/obj/item/toy/snappop/proc/do_pop()
|
|
spark(src, 3, alldirs)
|
|
new /obj/effect/decal/cleanable/ash(get_turf(src))
|
|
visible_message(SPAN_WARNING("\The [src] explodes!"), SPAN_WARNING("You hear a snap!"))
|
|
playsound(get_turf(src), 'sound/effects/snap.ogg', 50, TRUE)
|
|
qdel(src)
|
|
|
|
/obj/item/toy/snappop/syndi
|
|
desc_antag = "These snap pops have an extra compound added that will deploy a tiny smokescreen when snapped."
|
|
|
|
/obj/item/toy/snappop/syndi/do_pop()
|
|
var/datum/effect/effect/system/smoke_spread/smoke = new /datum/effect/effect/system/smoke_spread
|
|
smoke.set_up(2, 0, get_turf(src))
|
|
smoke.attach(get_turf(src))
|
|
smoke.start()
|
|
..()
|
|
|
|
/*
|
|
* Water flower
|
|
*/
|
|
|
|
//moved to spray.dm
|
|
|
|
/*
|
|
* 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_state = "bosunwhistle"
|
|
drop_sound = 'sound/items/drop/card.ogg'
|
|
pickup_sound = 'sound/items/pickup/card.ogg'
|
|
var/cooldown = 0
|
|
w_class = ITEMSIZE_TINY
|
|
slot_flags = SLOT_EARS
|
|
|
|
/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(user, 'sound/misc/boatswain.ogg', 20, 1)
|
|
cooldown = world.time
|
|
|
|
/*
|
|
* Mech prizes
|
|
*/
|
|
/obj/item/toy/prize
|
|
icon_state = "ripleytoy"
|
|
var/cooldown = 0
|
|
w_class = ITEMSIZE_SMALL
|
|
drop_sound = 'sound/mecha/mechstep.ogg'
|
|
|
|
//all credit to skasi for toy mech fun ideas
|
|
/obj/item/toy/prize/attack_self(mob/user)
|
|
if(cooldown < world.time - 8)
|
|
to_chat(user, "<span class='notice'>You play with [src].</span>")
|
|
playsound(user, 'sound/mecha/mechstep.ogg', 20, 1)
|
|
cooldown = world.time
|
|
|
|
/obj/item/toy/prize/ripley
|
|
name = "toy ripley"
|
|
desc = "Mini-Mecha action figure! Collect them all! 1/11."
|
|
|
|
/obj/item/toy/prize/fireripley
|
|
name = "toy firefighting ripley"
|
|
desc = "Mini-Mecha action figure! Collect them all! 2/11."
|
|
icon_state = "fireripleytoy"
|
|
|
|
/obj/item/toy/prize/deathripley
|
|
name = "toy deathsquad ripley"
|
|
desc = "Mini-Mecha action figure! Collect them all! 3/11."
|
|
icon_state = "deathripleytoy"
|
|
|
|
/obj/item/toy/prize/gygax
|
|
name = "toy gygax"
|
|
desc = "Mini-Mecha action figure! Collect them all! 4/11."
|
|
icon_state = "gygaxtoy"
|
|
|
|
/obj/item/toy/prize/durand
|
|
name = "toy durand"
|
|
desc = "Mini-Mecha action figure! Collect them all! 5/11."
|
|
icon_state = "durandprize"
|
|
|
|
/obj/item/toy/prize/honk
|
|
name = "toy H.O.N.K."
|
|
desc = "Mini-Mecha action figure! Collect them all! 6/11."
|
|
icon_state = "honkprize"
|
|
|
|
/obj/item/toy/prize/marauder
|
|
name = "toy marauder"
|
|
desc = "Mini-Mecha action figure! Collect them all! 7/11."
|
|
icon_state = "marauderprize"
|
|
|
|
/obj/item/toy/prize/seraph
|
|
name = "toy seraph"
|
|
desc = "Mini-Mecha action figure! Collect them all! 8/11."
|
|
icon_state = "seraphprize"
|
|
|
|
/obj/item/toy/prize/mauler
|
|
name = "toy mauler"
|
|
desc = "Mini-Mecha action figure! Collect them all! 9/11."
|
|
icon_state = "maulerprize"
|
|
|
|
/obj/item/toy/prize/odysseus
|
|
name = "toy odysseus"
|
|
desc = "Mini-Mecha action figure! Collect them all! 10/11."
|
|
icon_state = "odysseusprize"
|
|
|
|
/obj/item/toy/prize/phazon
|
|
name = "toy phazon"
|
|
desc = "Mini-Mecha action figure! Collect them all! 11/11."
|
|
icon_state = "phazonprize"
|
|
|
|
/*
|
|
* Action figures
|
|
*/
|
|
|
|
/obj/item/toy/figure
|
|
name = "completely glitched action figure"
|
|
desc = "A \"Space Life\" brand... wait, what the hell is this thing? It seems to be requesting the sweet release of death."
|
|
icon_state = "glitched"
|
|
w_class = ITEMSIZE_TINY
|
|
drop_sound = 'sound/items/drop/accessory.ogg'
|
|
pickup_sound = 'sound/items/pickup/accessory.ogg'
|
|
|
|
/obj/item/toy/figure/cmo
|
|
name = "chief medical officer action figure"
|
|
desc = "A \"Space Life\" brand chief medical officer action figure."
|
|
icon_state = "cmo"
|
|
|
|
/obj/item/toy/figure/assistant
|
|
name = "assistant action figure"
|
|
desc = "A \"Space Life\" brand assistant action figure."
|
|
icon_state = "assistant"
|
|
|
|
/obj/item/toy/figure/atmos
|
|
name = "atmospheric technician action figure"
|
|
desc = "A \"Space Life\" brand atmospheric technician action figure."
|
|
icon_state = "atmos"
|
|
|
|
/obj/item/toy/figure/bartender
|
|
name = "bartender action figure"
|
|
desc = "A \"Space Life\" brand bartender action figure."
|
|
icon_state = "bartender"
|
|
|
|
/obj/item/toy/figure/borg
|
|
name = "cyborg action figure"
|
|
desc = "A \"Space Life\" brand cyborg action figure."
|
|
icon_state = "borg"
|
|
|
|
/obj/item/toy/figure/gardener
|
|
name = "gardener action figure"
|
|
desc = "A \"Space Life\" brand gardener action figure."
|
|
icon_state = "botanist"
|
|
|
|
/obj/item/toy/figure/captain
|
|
name = "captain action figure"
|
|
desc = "A \"Space Life\" brand captain action figure."
|
|
icon_state = "captain"
|
|
|
|
/obj/item/toy/figure/cargotech
|
|
name = "cargo technician action figure"
|
|
desc = "A \"Space Life\" brand cargo technician action figure."
|
|
icon_state = "cargotech"
|
|
|
|
/obj/item/toy/figure/ce
|
|
name = "chief engineer action figure"
|
|
desc = "A \"Space Life\" brand chief engineer action figure."
|
|
icon_state = "ce"
|
|
|
|
/obj/item/toy/figure/chaplain
|
|
name = "chaplain action figure"
|
|
desc = "A \"Space Life\" brand chaplain action figure."
|
|
icon_state = "chaplain"
|
|
|
|
/obj/item/toy/figure/chef
|
|
name = "chef action figure"
|
|
desc = "A \"Space Life\" brand chef action figure."
|
|
icon_state = "chef"
|
|
|
|
/obj/item/toy/figure/chemist
|
|
name = "Chemist action figure"
|
|
desc = "A \"Space Life\" brand chemist action figure."
|
|
icon_state = "chemist"
|
|
|
|
/obj/item/toy/figure/clown
|
|
name = "clown action figure"
|
|
desc = "A \"Space Life\" brand clown action figure."
|
|
icon_state = "clown"
|
|
|
|
/obj/item/toy/figure/corgi
|
|
name = "corgi action figure"
|
|
desc = "A \"Space Life\" brand corgi action figure."
|
|
icon_state = "ian"
|
|
|
|
/obj/item/toy/figure/detective
|
|
name = "detective action figure"
|
|
desc = "A \"Space Life\" brand detective action figure."
|
|
icon_state = "detective"
|
|
|
|
/obj/item/toy/figure/dsquad
|
|
name = "space commando action figure"
|
|
desc = "A \"Space Life\" brand space commando action figure."
|
|
icon_state = "dsquad"
|
|
|
|
/obj/item/toy/figure/engineer
|
|
name = "engineer action figure"
|
|
desc = "A \"Space Life\" brand engineer action figure."
|
|
icon_state = "engineer"
|
|
|
|
/obj/item/toy/figure/geneticist
|
|
name = "geneticist action figure"
|
|
desc = "A \"Space Life\" brand geneticist action figure, which was recently dicontinued."
|
|
icon_state = "geneticist"
|
|
|
|
/obj/item/toy/figure/hop
|
|
name = "head of personel action figure"
|
|
desc = "A \"Space Life\" brand head of personel action figure."
|
|
icon_state = "hop"
|
|
|
|
/obj/item/toy/figure/hos
|
|
name = "head of security action figure"
|
|
desc = "A \"Space Life\" brand head of security action figure."
|
|
icon_state = "hos"
|
|
|
|
/obj/item/toy/figure/qm
|
|
name = "quartermaster action figure"
|
|
desc = "A \"Space Life\" brand quartermaster action figure."
|
|
icon_state = "qm"
|
|
|
|
/obj/item/toy/figure/janitor
|
|
name = "janitor action figure"
|
|
desc = "A \"Space Life\" brand janitor action figure."
|
|
icon_state = "janitor"
|
|
|
|
/obj/item/toy/figure/agent
|
|
name = "internal affairs agent action figure"
|
|
desc = "A \"Space Life\" brand internal affairs agent action figure."
|
|
icon_state = "agent"
|
|
|
|
/obj/item/toy/figure/librarian
|
|
name = "librarian action figure"
|
|
desc = "A \"Space Life\" brand librarian action figure."
|
|
icon_state = "librarian"
|
|
|
|
/obj/item/toy/figure/journalist
|
|
name = "journalist action figure"
|
|
desc = "A \"Space Life\" brand librarian action figure. The word 'librarian' on the tag is scratched out with marker, and 'journalist' is written in its place."
|
|
icon_state = "librarian"
|
|
|
|
/obj/item/toy/figure/md
|
|
name = "physician action figure"
|
|
desc = "A \"Space Life\" brand physician action figure."
|
|
icon_state = "md"
|
|
|
|
/obj/item/toy/figure/mime
|
|
name = "mime action figure"
|
|
desc = "A \"Space Life\" brand mime action figure."
|
|
icon_state = "mime"
|
|
|
|
/obj/item/toy/figure/miner
|
|
name = "shaft miner action figure"
|
|
desc = "A \"Space Life\" brand shaft miner action figure."
|
|
icon_state = "miner"
|
|
|
|
/obj/item/toy/figure/ninja
|
|
name = "space ninja action figure"
|
|
desc = "A \"Space Life\" brand space ninja action figure."
|
|
icon_state = "ninja"
|
|
|
|
/obj/item/toy/figure/wizard
|
|
name = "wizard action figure"
|
|
desc = "A \"Space Life\" brand wizard action figure."
|
|
icon_state = "wizard"
|
|
|
|
/obj/item/toy/figure/rd
|
|
name = "research director action figure"
|
|
desc = "A \"Space Life\" brand research director action figure."
|
|
icon_state = "rd"
|
|
|
|
/obj/item/toy/figure/roboticist
|
|
name = "roboticist action figure"
|
|
desc = "A \"Space Life\" brand roboticist action figure."
|
|
icon_state = "roboticist"
|
|
|
|
/obj/item/toy/figure/scientist
|
|
name = "scientist action figure"
|
|
desc = "A \"Space Life\" brand scientist action figure."
|
|
icon_state = "scientist"
|
|
|
|
/obj/item/toy/figure/syndie
|
|
name = "doom operative action figure"
|
|
desc = "A \"Space Life\" brand doom operative action figure."
|
|
icon_state = "syndie"
|
|
|
|
/obj/item/toy/figure/secofficer
|
|
name = "security officer action figure"
|
|
desc = "A \"Space Life\" brand security officer action figure."
|
|
icon_state = "secofficer"
|
|
|
|
/obj/item/toy/figure/warden
|
|
name = "warden action figure"
|
|
desc = "A \"Space Life\" brand warden action figure."
|
|
icon_state = "warden"
|
|
|
|
/obj/item/toy/figure/psychologist
|
|
name = "psychologist action figure"
|
|
desc = "A \"Space Life\" brand psychologist action figure."
|
|
icon_state = "psychologist"
|
|
|
|
/obj/item/toy/figure/paramedic
|
|
name = "paramedic action figure"
|
|
desc = "A \"Space Life\" brand paramedic action figure."
|
|
icon_state = "paramedic"
|
|
|
|
/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"
|
|
/*
|
|
* Therapy Dolls
|
|
*/
|
|
/obj/item/toy/plushie/therapy
|
|
name = "therapy doll"
|
|
desc = "A toy for therapeutic and recreational purposes. This one is in red."
|
|
icon = 'icons/obj/toy.dmi'
|
|
icon_state = "therapyred"
|
|
item_state = "therapyred"
|
|
var/active = 0.0
|
|
var/colorvar = "red"
|
|
w_class = ITEMSIZE_TINY
|
|
|
|
/obj/item/toy/plushie/therapy/Initialize()
|
|
. = ..()
|
|
colorvar = pick("red","orange","yellow","green","blue","purple")
|
|
icon_state = "therapy[colorvar]"
|
|
item_state = "egg_[colorvar]"
|
|
desc = "A toy for therapeutic and recreational purposes. This one is in [colorvar]."
|
|
|
|
/*
|
|
* Plushies
|
|
*/
|
|
|
|
/obj/item/toy/plushie
|
|
name = "generic small plush"
|
|
desc = "A very generic small plushie. It seems to not want to exist."
|
|
icon_state = "nymphplushie"
|
|
drop_sound = 'sound/items/drop/plushie.ogg'
|
|
pickup_sound = 'sound/items/pickup/plushie.ogg'
|
|
var/phrase = "Hewwo!"
|
|
|
|
/obj/item/toy/plushie/attack_self(mob/user as mob)
|
|
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>")
|
|
playsound(src, 'sound/items/drop/plushie.ogg', 25, 0)
|
|
visible_message("[src] says, \"[phrase]\"")
|
|
|
|
//Large plushies.
|
|
|
|
|
|
/obj/item/toy/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/item/toy/plushie/drone
|
|
name = "plush drone"
|
|
desc = "A plushie of a happy drone! It appears to be smiling, and has a small tag which reads \"N.D.V. Icarus Gift Shop\"."
|
|
icon_state = "droneplushie"
|
|
phrase = "Beep boop!"
|
|
|
|
/obj/item/toy/plushie/carp
|
|
name = "plush carp"
|
|
desc = "A plushie of an elated carp! Straight from the wilds of the Tau Ceti frontier, now right here in your hands."
|
|
icon_state = "carpplushie"
|
|
phrase = "Glorf!"
|
|
|
|
/obj/item/toy/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!"
|
|
|
|
/obj/item/toy/plushie/ivancarp
|
|
name = "plush Ivan the carp"
|
|
desc = "A plushie in the spitting image of a russian raised carp."
|
|
icon_state = "carpplushie_russian"
|
|
phrase = "Blyat!"
|
|
|
|
//Small plushies.
|
|
|
|
/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"
|
|
slot_flags = SLOT_HEAD
|
|
|
|
/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"
|
|
|
|
/obj/item/toy/plushie/kitten
|
|
name = "kitten plush"
|
|
desc = "A plushie of a cute kitten! Watch as it purrs it's way right into your heart."
|
|
icon_state = "kittenplushie"
|
|
slot_flags = SLOT_HEAD
|
|
|
|
/obj/item/toy/plushie/pennyplush
|
|
name = "Penny plush"
|
|
desc = "It's a plush of the beloved company mascot cat, Penny! For the price Nanotrasen sells these things at, you probably could have bought an actual cat."
|
|
icon_state = "pennyplushie"
|
|
slot_flags = SLOT_HEAD
|
|
|
|
|
|
/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"
|
|
|
|
/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"
|
|
|
|
/obj/item/toy/plushie/farwa
|
|
name = "farwa plush"
|
|
desc = "A farwa plush doll. It's soft and comforting, with extra grip!"
|
|
icon_state = "farwaplushie"
|
|
slot_flags = SLOT_HEAD
|
|
|
|
/obj/item/toy/plushie/bear
|
|
name = "bear plush"
|
|
desc = "A bear plushie. You should hug it, quickly!"
|
|
icon_state = "bearplushie"
|
|
|
|
/obj/item/toy/plushie/bearfire
|
|
name = "firefighter bear plush"
|
|
desc = "A bear plushie. Only you can stop phoron fires!"
|
|
icon_state = "bearplushie_fire"
|
|
|
|
/obj/item/toy/plushie/schlorrgo
|
|
name = "schlorrgo plush"
|
|
desc = "A schlorrgo plushie, ready to roll his way into your heart!"
|
|
icon_state = "schlorrgoplushie"
|
|
phrase = "Eough!"
|
|
|
|
/obj/item/toy/plushie/coolschlorrgo
|
|
name = "Cool Schlorrgo plush"
|
|
desc = "A plushie of the popular cartoon character, Cool Schlorrgo. Hadii's grace!"
|
|
icon_state = "coolerschlorrgoplushie"
|
|
phrase = "Eough!"
|
|
|
|
/obj/item/toy/plushie/slime
|
|
name = "slime plush"
|
|
desc = "A beanbag-filled slime plushie. Relaxing!"
|
|
icon_state = "slimeplushie"
|
|
|
|
/obj/item/toy/plushie/bee
|
|
name = "bee plush"
|
|
desc = "A chunky plushie bee. Your new buzz-t friend!"
|
|
icon_state = "beeplushie"
|
|
|
|
//Squid Plushies
|
|
|
|
/obj/item/toy/plushie/squid
|
|
name = "squid plushie"
|
|
desc = "A small, cute and loveable squid friend. This one is pink coloured."
|
|
icon = 'icons/obj/toy.dmi'
|
|
icon_state = "pinksquid"
|
|
item_state = "pinksquid"
|
|
var/active = 0.0
|
|
var/colorvar = "pink"
|
|
slot_flags = SLOT_HEAD
|
|
|
|
/obj/item/toy/plushie/squid/Initialize()
|
|
. = ..()
|
|
colorvar = pick("pink","blue","mint","green","yellow","orange")
|
|
icon_state = "[colorvar]squid"
|
|
item_state = "[colorvar]squid"
|
|
desc = "A small, cute and loveable squid friend. This one is in [colorvar]."
|
|
|
|
/obj/item/toy/plushie/squidcolour
|
|
name = "squid plushie"
|
|
desc = "A small, cute, and loveable squid friend. This one comes in a wide variety of colours."
|
|
icon_state = "squidplushie_colour"
|
|
// slot_flags = SLOT_HEAD - head sprite may come someday, but not today.
|
|
phrase = "Blub!"
|
|
|
|
//Toy cult sword
|
|
/obj/item/toy/cultsword
|
|
name = "foam sword"
|
|
desc = "An arcane weapon wielded by the followers of the hit Saturday morning cartoon \"King Nursee and the Acolytes of Heroism\"."
|
|
icon = 'icons/obj/sword.dmi'
|
|
icon_state = "cultblade"
|
|
item_state = "cultblade"
|
|
w_class = ITEMSIZE_LARGE
|
|
attack_verb = list("attacked", "slashed", "stabbed", "poked")
|
|
contained_sprite = TRUE
|
|
|
|
/obj/item/inflatable_duck
|
|
name = "inflatable duck"
|
|
desc = "No bother to sink or swim when you can just float!"
|
|
icon_state = "inflatable"
|
|
item_state = "inflatable"
|
|
icon = 'icons/obj/clothing/belts.dmi'
|
|
slot_flags = SLOT_BELT
|
|
drop_sound = 'sound/items/drop/rubber.ogg'
|
|
pickup_sound = 'sound/items/pickup/rubber.ogg'
|
|
|
|
/obj/item/toy/xmastree
|
|
name = "miniature Christmas tree"
|
|
desc = "Now with 99% less pine needles."
|
|
icon_state = "tinyxmastree"
|
|
w_class = ITEMSIZE_TINY
|
|
force = 1
|
|
throwforce = 1
|
|
drop_sound = 'sound/items/drop/cardboardbox.ogg'
|
|
pickup_sound = 'sound/items/pickup/cardboardbox.ogg'
|
|
|
|
|
|
//baystation desk toys
|
|
|
|
/obj/item/toy/desk
|
|
var/on = FALSE
|
|
var/activation_sound = /decl/sound_category/switch_sound
|
|
|
|
/obj/item/toy/desk/update_icon()
|
|
if(on)
|
|
icon_state = "[initial(icon_state)]-on"
|
|
else
|
|
icon_state = initial(icon_state)
|
|
|
|
/obj/item/toy/desk/attack_self(mob/user)
|
|
activate(user)
|
|
|
|
/obj/item/toy/desk/AltClick(mob/user)
|
|
activate(user)
|
|
|
|
/obj/item/toy/desk/proc/activate(mob/user)
|
|
on = !on
|
|
playsound(src.loc, activation_sound, 75, 1)
|
|
update_icon()
|
|
return 1
|
|
|
|
/obj/item/toy/desk/newtoncradle
|
|
name = "\improper Newton's cradle"
|
|
desc = "A ancient 21th century super-weapon model demonstrating that Sir Isaac Newton is the deadliest sonuvabitch in space."
|
|
desc_fluff = "Aside from car radios, Eridanian Dregs are reportedly notorious for stealing these things. It is often theorized that the very same ball bearings are used in black-market cybernetics."
|
|
icon_state = "newtoncradle"
|
|
|
|
/obj/item/toy/desk/fan
|
|
name = "office fan"
|
|
desc = "Your greatest fan."
|
|
desc_fluff = "For weeks, the atmospherics department faced a conundrum on how to lower temperatures in a localized area through complicated pipe channels and ventilation systems. The problem was promptly solved by ordering several desk fans."
|
|
icon_state = "fan"
|
|
|
|
/obj/item/toy/desk/officetoy
|
|
name = "office toy"
|
|
desc = "A generic microfusion powered office desk toy. Only generates magnetism and ennui."
|
|
desc_fluff = "The mechanism inside is a Hephasteus trade secret. No peeking!"
|
|
icon_state = "desktoy"
|
|
|
|
/obj/item/toy/desk/dippingbird
|
|
name = "dipping bird toy"
|
|
desc = "Engineers marvel at this scale model of a primitive thermal engine. It's highly debated why the majority of owners were in low-level bureaucratic jobs."
|
|
desc_fluff = "One of the key essentials for every Eridanian suit - it's practically a rite of passage to own one of these things."
|
|
icon_state = "dippybird"
|
|
|
|
/obj/item/toy/partypopper
|
|
name = "party popper"
|
|
desc = "Instructions : Aim away from face. Wait for appropriate timing. Pull cord, enjoy confetti."
|
|
icon_state = "partypopper"
|
|
w_class = ITEMSIZE_TINY
|
|
drop_sound = 'sound/items/drop/cardboardbox.ogg'
|
|
pickup_sound = 'sound/items/pickup/cardboardbox.ogg'
|
|
|
|
/obj/item/toy/partypopper/attack_self(mob/user)
|
|
if(icon_state == "partypopper")
|
|
spark(src, 1, user.dir)
|
|
user.visible_message(SPAN_NOTICE("[user] pulls on the string, releasing a burst of confetti!"), SPAN_NOTICE("You pull on the string, releasing a burst of confetti!"))
|
|
playsound(src, 'sound/effects/snap.ogg', 50, TRUE)
|
|
icon_state = "partypopper_e"
|
|
var/turf/T = get_step(src, user.dir)
|
|
if(!turf_clear(T))
|
|
T = get_turf(src)
|
|
new /obj/effect/decal/cleanable/confetti(T)
|
|
else
|
|
to_chat(user, SPAN_NOTICE("The [src] is already spent!"))
|