/* 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, "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' /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' /obj/item/toy/crossbow/examine(mob/user) . = ..() if(bullets && get_dist(user, src) <= 2) . += "It is loaded with [bullets] foam darts!" /obj/item/toy/crossbow/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.") /obj/item/toy/crossbow/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("\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) /obj/item/toy/crossbow/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(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("\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") /obj/item/toy/sword/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(src, '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(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, "You can't do that right now!") return if(tgui_alert(usr, "Are you sure you want to recolor your blade?", "Confirm Recolor", list("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 /obj/item/toy/snappop/throw_impact(atom/hit_atom) ..() var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) s.start() new /obj/effect/decal/cleanable/ash(src.loc) src.visible_message("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(src, 'sound/misc/boatswain.ogg', 20, 1) cooldown = world.time /* * Action figures */ /obj/item/toy/figure name = "Non-Specific Action Figure action figure" desc = "A \"Space Life\" brand... wait, what the hell is this thing?" icon = 'icons/obj/toy.dmi' icon_state = "nuketoy" w_class = ITEMSIZE_TINY var/cooldown = 0 var/toysay = "What the fuck did you do?" drop_sound = 'sound/items/drop/accessory.ogg' /obj/item/toy/figure/New() ..() desc = "A \"Space Life\" brand [name]" /obj/item/toy/figure/attack_self(mob/user as mob) if(cooldown < world.time) cooldown = (world.time + 30) //3 second cooldown user.visible_message("The [src] says \"[toysay]\".") 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 = "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!" // Eris /obj/item/toy/figure/excelsior name = "\"Excelsior\" figurine" desc = "A curiously unbranded figurine of a Space Soviet, adorned in their iconic armor. There is still a price tag on the back of the base, six-hundred credits, people collect these things? \ \"Ever Upward!\"" icon_state = "excelsior" /obj/item/toy/figure/serbian name = "mercenary figurine" desc = "A curiously unbranded figurine, the olive drab a popular pick for many independent Serbian mercenary outfits. Rocket launcher not included." icon_state = "serbian" /obj/item/toy/figure/acolyte name = "acolyte figurine" desc = "Church of NeoTheology \"New Faith Life\" brand figurine of an acolyte, hooded both physically and spiritually from that which would lead them astray." icon_state = "acolyte" /obj/item/toy/figure/carrion name = "carrion figurine" desc = "A curiously unbranded figurine depicting a grotesque head of flesh, the Human features seem almost underdeveloped, its skull bulging outwards, mouth agape with torn flesh. \ Whoever made this certainly knew how to thin their paints." icon_state = "carrion" /obj/item/toy/figure/roach name = "roach figurine" desc = "Upon the base is an erected \"Roachman\", its arms outstretched, with more additional roach hands besides them. This is likely the one thing most universally recognized in popular media. \ The plaque is covered in hundreds of scratch marks, eliminating any further knowledge of it or its brand." icon_state = "roach" /obj/item/toy/figure/vagabond name = "vagabond figurine" desc = "An Aster's \"Space Life\" brand figurine showcasing the form of a random deplorable, wearing one of the ship's uniforms, and an orange bandana. \ Must of been custom-made to commemorate the Eris' doomed voyage." icon_state = "vagabond" /obj/item/toy/figure/rooster name = "rooster figurine" desc = "\"Space Vice\" brand figurine, there is no further manufacturer information. It's a man wearing a rooster mask, and a varsity jacket with the letter \"B\" emblazoned on the front. \ \"Do you like hurting other people?\"" icon_state = "rooster" /obj/item/toy/figure/barking_dog name = "barking dog figurine" desc = "A metal soldier with the mask of a hound stands upon the base, the plaque seems smeared with caked grime, but despite this you make out a rare double-quote. \ \"A dog barks on its master's orders, lest its pack runs astray.\" \"Whatever the task, the grim dog mask would tell you that your life was done.\"" icon_state = "barking_dog" /obj/item/toy/figure/red_soldier name = "red soldier figurine" desc = "A curiously unbranded figurine of a red soldier fighting in the tides of war, their humanity hidden by a gas mask. \"Why do we fight? To win the war, of course.\"" icon_state = "red_soldier" /obj/item/toy/figure/metacat name = "meta-cat figurine" desc = "A curiously unbranded figurine depicting an anthropomorphic cat in a voidsuit, the small plaque claims this to be one of two. \"Always in silent pair, through distance or unlikelihood.\"" icon_state = "metacat" /obj/item/toy/figure/shitcurity name = "shitcurity officer figurine" desc = "An Aster's \"Space Life\" brand figurine of a classic redshirt of \"Nanotrasen's finest\". Their belly distends out into an obvious beer gut, revealing no form of manufacturer bias what-so-ever. \ \"I joined just to kill people.\"" icon_state = "shitcurity" /obj/item/toy/figure/metro_patrolman name = "metro patrolman figurine" desc = "The plaque seems flaked with rust residue, \"London Metro\" brand it reads. The man wears some kind of enforcer's uniform, with the acronym \"VPP\" on their left shoulder and cap. \ \"Abandoned for Escalation, the patrolman grumbles.\"" icon_state = "metro_patrolman" /* * Plushies */ /* * Carp plushie */ /obj/item/toy/plushie/carp name = "space carp plushie" desc = "An adorable stuffed toy that resembles a space carp." icon = 'icons/obj/toy.dmi' icon_state = "basecarp" attack_verb = list("bitten", "eaten", "fin slapped") var/bitesound = 'sound/weapons/bite.ogg' // Attack mob /obj/item/toy/plushie/carp/attack(mob/M as mob, mob/user as mob) playsound(src, bitesound, 20, 1) // Play bite sound in local area return ..() // Attack self /obj/item/toy/plushie/carp/attack_self(mob/user as mob) playsound(src, bitesound, 20, 1) return ..() /obj/random/carp_plushie name = "Random Carp Plushie" desc = "This is a random plushie" icon = 'icons/obj/toy.dmi' icon_state = "basecarp" /obj/random/carp_plushie/item_to_spawn() return pick(typesof(/obj/item/toy/plushie/carp)) //can pick any carp plushie, even the original. /obj/item/toy/plushie/carp/ice name = "ice carp plushie" icon_state = "icecarp" /obj/item/toy/plushie/carp/silent name = "monochrome carp plushie" icon_state = "silentcarp" /obj/item/toy/plushie/carp/electric name = "electric carp plushie" icon_state = "electriccarp" /obj/item/toy/plushie/carp/gold name = "golden carp plushie" icon_state = "goldcarp" /obj/item/toy/plushie/carp/toxin name = "toxic carp plushie" icon_state = "toxincarp" /obj/item/toy/plushie/carp/dragon name = "dragon carp plushie" icon_state = "dragoncarp" /obj/item/toy/plushie/carp/pink name = "pink carp plushie" icon_state = "pinkcarp" /obj/item/toy/plushie/carp/candy name = "candy carp plushie" icon_state = "candycarp" /obj/item/toy/plushie/carp/nebula name = "nebula carp plushie" icon_state = "nebulacarp" /obj/item/toy/plushie/carp/void name = "void carp plushie" icon_state = "voidcarp" // Eris /obj/structure/plushie/fumo name = "Fumo" desc = "A plushie of a....?." icon_state = "fumoplushie" phrase = "I just don't think about losing." //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(usr, "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" 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 ) /* 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, "You press the button on [src].") playsound(src, '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(src, '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(src, '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/inventory/belt/item.dmi' slot_flags = SLOT_BELT drop_sound = 'sound/items/drop/rubber.ogg' /obj/item/toy/xmastree name = "Miniature Christmas tree" desc = "Tiny cute Christmas tree." icon = 'icons/obj/toy.dmi' icon_state = "tinyxmastree" w_class = ITEMSIZE_TINY force = 1 throwforce = 1 drop_sound = 'sound/items/drop/box.ogg' ////////////////////////////////////////////////////// // Chess Pieces // ////////////////////////////////////////////////////// /obj/item/toy/chess name = "chess piece" desc = "This should never display." icon = 'icons/obj/chess.dmi' w_class = ITEMSIZE_SMALL force = 1 throwforce = 1 drop_sound = 'sound/items/drop/glass.ogg' /obj/item/toy/chess/pawn_white name = "white pawn" desc = "A white pawn chess piece. Get accused of cheating when executing a sick En Passant." description_info = "Pawns can move forward one square, if that square is unoccupied. If the pawn has not yet moved, it has the option of moving two squares forward provided both squares in front of the pawn are unoccupied. A pawn cannot move backward. They can only capture an enemy piece on either of the two tiles diagonally in front of them, but not the tile directly in front of them." icon_state = "white_pawn" /obj/item/toy/chess/pawn_black name = "black pawn" desc = "A black pawn chess piece. Get accused of cheating when executing a sick En Passant." description_info = "Pawns can move forward one square, if that square is unoccupied. If the pawn has not yet moved, it has the option of moving two squares forward provided both squares in front of the pawn are unoccupied. A pawn cannot move backward. They can only capture an enemy piece on either of the two tiles diagonally in front of them, but not the tile directly in front of them." icon_state = "black_pawn" /obj/item/toy/chess/rook_white name = "white rook" desc = "A white rook chess piece. Also known as a castle." description_info = "The Rook can move any number of vacant squares vertically or horizontally." icon_state = "white_rook" /obj/item/toy/chess/rook_black name = "black rook" desc = "A black rook chess piece. Also known as a castle." description_info = "The Rook can move any number of vacant squares vertically or horizontally." icon_state = "black_rook" /obj/item/toy/chess/knight_white name = "white knight" desc = "A white knight chess piece. Sadly, you can't ride it." description_info = "The Knight can either move two squares horizontally and one square vertically or two squares vertically and one square horizontally. The knight's movement can also be viewed as an 'L' laid out at any horizontal or vertical angle." icon_state = "white_knight" /obj/item/toy/chess/knight_black name = "black knight" desc = "A black knight chess piece. 'Just a flesh wound.'" description_info = "The Knight can either move two squares horizontally and one square vertically or two squares vertically and one square horizontally. The knight's movement can also be viewed as an 'L' laid out at any horizontal or vertical angle." icon_state = "black_knight" /obj/item/toy/chess/bishop_white name = "white bishop" desc = "A white bishop chess piece." description_info = "The Bishop can move any number of vacant squares in any diagonal direction." icon_state = "white_bishop" /obj/item/toy/chess/bishop_black name = "black bishop" desc = "A black bishop chess piece." description_info = "The Bishop can move any number of vacant squares in any diagonal direction." icon_state = "black_bishop" /obj/item/toy/chess/queen_white name = "white queen" desc = "A white queen chess piece." description_info = "The Queen can move any number of vacant squares diagonally, horizontally, or vertically." icon_state = "white_queen" /obj/item/toy/chess/queen_black name = "black queen" desc = "A black queen chess piece." description_info = "The Queen can move any number of vacant squares diagonally, horizontally, or vertically." icon_state = "black_queen" /obj/item/toy/chess/king_white name = "white king" desc = "A white king chess piece." description_info = "The King can move exactly one square horizontally, vertically, or diagonally. If your opponent captures this piece, you lose." icon_state = "white_king" /obj/item/toy/chess/king_black name = "black king" desc = "A black king chess piece." description_info = "The King can move exactly one square horizontally, vertically, or diagonally. If your opponent captures this piece, you lose." icon_state = "black_king" /// Balloon structures /obj/structure/balloon name = "generic balloon" desc = "A generic balloon. How boring." icon = 'icons/obj/toy.dmi' icon_state = "ghostballoon" anchored = 0 density = 0 /obj/structure/balloon/attack_hand(mob/user) user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN) if(user.a_intent == I_HELP) user.visible_message("\The [user] pokes [src]!","You poke [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 pop [src]!","You attempt to pop [src]!") else user.visible_message("\The [user] lightly bats the [src].","You lightly bat the [src].") /obj/structure/balloon/bat name = "giant bat balloon" desc = "A large balloon in the shape of a spooky bat with orange eyes." icon_state = "batballoon" /obj/structure/balloon/ghost name = "giant ghost balloon" desc = "Oh no, it's a ghost! Oh wait, it's just a balloon. Phew!" icon_state = "ghostballoon"