/* 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 * 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, "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/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, "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("\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' /* * 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) . += "It is loaded with [bullets] foam darts!" 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, "You load the foam dart into the crossbow.") else to_chat(usr, "It's already fully loaded.") 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("\The [] was hit by the foam dart!", 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("\The [] realized they were out of ammo and starting scrounging for some!", 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("\The [] casually lines up a shot with []'s head and pulls the trigger!", user, M), 1, "You hear the sound of foam against skull", 2) O.show_message(text("\The [] was hit in the head by the foam dart!", 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("\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!", user, M), 1, "You hear someone fall", 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, "You extend the plastic blade with a quick flick of your wrist.") playsound(user, 'sound/weapons/saberon.ogg', 50, 1) src.item_state = "[icon_state]_blade" src.w_class = ITEMSIZE_LARGE else to_chat(user, "You push the plastic blade back down into the handle.") playsound(user, '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, "You can't do that right now!") 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) . = ..() . += "Alt-click to recolor it." /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, "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 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("The [src.name] explodes!","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 == "run") to_chat(M, "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("The [src.name] explodes!","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, "You blow on [src], creating an ear-splitting noise!") playsound(user, 'sound/misc/boatswain.ogg', 20, 1) cooldown = world.time /* * Mech prizes */ /obj/item/toy/prize icon = 'icons/obj/toy.dmi' icon_state = "ripleytoy" var/cooldown = 0 drop_sound = 'sound/mecha/mechstep.ogg' //all credit to skasi for toy mech fun ideas /obj/item/toy/prize/attack_self(mob/user as mob) if(cooldown < world.time - 8) to_chat(user, "You play with [src].") playsound(user, 'sound/mecha/mechstep.ogg', 20, 1) cooldown = world.time /obj/item/toy/prize/attack_hand(mob/user as mob) if(loc == user) if(cooldown < world.time - 8) to_chat(user, "You play with [src].") playsound(user, 'sound/mecha/mechturn.ogg', 20, 1) cooldown = world.time return ..() /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 = "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" 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("The [src] says \"[toysay]\".") playsound(user, '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 = "Colony Director action figure" desc = "A \"Space Life\" brand Colony Director 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 = "Honk!" /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(loc, 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.loc, 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) . += "You notice an incision has been made on [src]." if(in_range(user, src) && stored_item) . += "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 \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("\The [user] hugs [src]!","You hug [src]!") else if (user.a_intent == I_HURT) user.visible_message("\The [user] punches [src]!","You punch [src]!") else if (user.a_intent == I_GRAB) user.visible_message("\The [user] attempts to strangle [src]!","You attempt to strangle [src]!") else user.visible_message("\The [user] pokes the [src].","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/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) . += "You notice an incision has been made on [src]." if(in_range(user, src) && stored_item) . += "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 \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("\The [user] hugs [src]!","You hug [src]!") else if (user.a_intent == I_HURT) user.visible_message("\The [user] punches [src]!","You punch [src]!") else if (user.a_intent == I_GRAB) user.visible_message("\The [user] attempts to strangle [src]!","You attempt to strangle [src]!") else user.visible_message("\The [user] pokes [src].","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(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("[user] makes \the [I] kiss \the [src]!.", \ "You make \the [I] kiss \the [src]!.") 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" //TFF 12/11/19 - updated icon to show a sprite that doesn't replicate a dead mouse. Heck you for that! >:C 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("[user] focuses on their question and [use_action]...") user.visible_message("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/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 ) /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, "You press the button on [src].") playsound(user, 'sound/machines/click.ogg', 20, 1) visible_message("[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, "You pull the string on the [src].") //playsound(user, 'sound/misc/hoot.ogg', 25, 1) visible_message("[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, "You pull the string on the [src].") //playsound(user, 'sound/misc/caw.ogg', 25, 1) visible_message("[message]") 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'