/* Toys! * Contains: * Balloons * Fake telebeacon * Fake singularity * Toy swords * Toy mechs * Snap pops * Water flower * Toy Nuke * Card Deck * Therapy dolls * Toddler doll * Inflatable duck * Foam armblade * Mini Gibber * Toy xeno * Toy chainsaws * Action Figures */ /obj/item/toy throwforce = 0 throw_speed = 4 throw_range = 20 force = 0 /* * 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" item_state = "balloon-empty" /obj/item/toy/balloon/New() create_reagents(10) /obj/item/toy/balloon/attack(mob/living/carbon/human/M as mob, mob/user as mob) return /obj/item/toy/balloon/afterattack(atom/A, mob/user, proximity) if(!proximity) return if(istype(A, /obj/structure/reagent_dispensers)) var/obj/structure/reagent_dispensers/RD = A if(RD.reagents.total_volume <= 0) to_chat(user, "[RD] is empty.") else if(reagents.total_volume >= 10) to_chat(user, "[src] is full.") else A.reagents.trans_to(src, 10) to_chat(user, "You fill the balloon with the contents of [A].") desc = "A translucent balloon with some form of liquid sloshing around in it." update_icon() /obj/item/toy/balloon/wash(mob/user, atom/source) if(reagents.total_volume < 10) reagents.add_reagent("water", min(10-reagents.total_volume, 10)) to_chat(user, "You fill the balloon from the [source].") desc = "A translucent balloon with some form of liquid sloshing around in it." update_icon() return /obj/item/toy/balloon/attackby(obj/O as obj, mob/user as mob, params) if(istype(O, /obj/item/weapon/reagent_containers/glass) || istype(O, /obj/item/weapon/reagent_containers/food/drinks/drinkingglass)) 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("facid", 1)) to_chat(user, "The acid chews through the balloon!") O.reagents.reaction(user) qdel(src) else 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(src, 10) update_icon() return /obj/item/toy/balloon/throw_impact(atom/hit_atom) if(reagents.total_volume >= 1) visible_message("The [src] bursts!","You hear a pop and a splash.") reagents.reaction(get_turf(hit_atom)) for(var/atom/A in get_turf(hit_atom)) reagents.reaction(A) 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" item_state = "balloon" else icon_state = "waterballoon-e" item_state = "balloon-empty" /obj/item/toy/syndicateballoon name = "syndicate 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" item_state = "syndballoon" w_class = 4 /* * Fake telebeacon */ /obj/item/toy/blink name = "electronic blink toy game" desc = "Blink. Blink. Blink. Ages 8 and up." icon = 'icons/obj/radio.dmi' icon_state = "beacon" item_state = "signaler" /* * Fake singularity */ /obj/item/toy/spinningtoy name = "Gravitational Singularity" desc = "\"Singulo\" brand spinning toy." icon = 'icons/obj/singularity.dmi' icon_state = "singularity_s1" /* * Toy swords */ /obj/item/toy/sword name = "toy sword" desc = "A cheap, plastic replica of an energy sword. Realistic sounds! Ages 8 and up." icon = 'icons/obj/weapons.dmi' icon_state = "sword0" item_state = "sword0" var/active = 0.0 w_class = 2 attack_verb = list("attacked", "struck", "hit") /obj/item/toy/sword/attack_self(mob/user as mob) active = !(active) if(active) to_chat(user, "You extend the plastic blade with a quick flick of your wrist.") playsound(user, 'sound/weapons/saberon.ogg', 50, 1) icon_state = "swordblue" item_state = "swordblue" w_class = 4 else to_chat(user, "You push the plastic blade back down into the handle.") playsound(user, 'sound/weapons/saberoff.ogg', 50, 1) icon_state = "sword0" item_state = "sword0" w_class = 2 if(istype(user,/mob/living/carbon/human)) var/mob/living/carbon/human/H = user H.update_inv_l_hand() H.update_inv_r_hand() add_fingerprint(user) return // Copied from /obj/item/weapon/melee/energy/sword/attackby /obj/item/toy/sword/attackby(obj/item/weapon/W, mob/living/user, params) ..() if(istype(W, /obj/item/toy/sword)) if(W == src) to_chat(user, "You try to attach the end of the plastic sword to... itself. You're not very smart, are you?") if(ishuman(user)) user.adjustBrainLoss(10) else if((W.flags & NODROP) || (flags & NODROP)) to_chat(user, "\the [flags & NODROP ? src : W] is stuck to your hand, you can't attach it to \the [flags & NODROP ? W : src]!") else to_chat(user, "You attach the ends of the two plastic swords, making a single double-bladed toy! You're fake-cool.") new /obj/item/weapon/twohanded/dualsaber/toy(user.loc) user.unEquip(W) user.unEquip(src) qdel(W) qdel(src) /* * Subtype of Double-Bladed Energy Swords */ /obj/item/weapon/twohanded/dualsaber/toy name = "double-bladed toy sword" desc = "A cheap, plastic replica of TWO energy swords. Double the fun!" force = 0 throwforce = 0 throw_speed = 3 throw_range = 5 force_unwielded = 0 force_wielded = 0 origin_tech = null attack_verb = list("attacked", "struck", "hit") /obj/item/weapon/twohanded/dualsaber/toy/hit_reaction() return 0 /obj/item/weapon/twohanded/dualsaber/toy/IsReflect()//Stops Toy Dualsabers from reflecting energy projectiles return 0 /obj/item/toy/katana name = "replica katana" desc = "Woefully underpowered in D20." icon = 'icons/obj/weapons.dmi' icon_state = "katana" item_state = "katana" flags = CONDUCT slot_flags = SLOT_BELT | SLOT_BACK force = 5 throwforce = 5 w_class = 3 attack_verb = list("attacked", "slashed", "stabbed", "sliced") hitsound = 'sound/weapons/bladeslice.ogg' /obj/item/toy/katana/suicide_act(mob/user) var/dmsg = pick("[user] tries to stab \the [src] into their abdomen, but it shatters! They look as if they might die from the shame.","[user] tries to stab \the [src] into their abdomen, but \the [src] bends and breaks in half! They look as if they might die from the shame.","[user] tries to slice their own throat, but the plastic blade has no sharpness, causing them to lose their balance, slip over, and break their neck with a loud snap!") user.visible_message("[dmsg] It looks like they are trying to commit suicide.") return (BRUTELOSS) /* * Snap pops viral shit */ /obj/item/toy/snappop/virus name = "unstable goo" desc = "Your palm is oozing this stuff!" icon = 'icons/mob/slimes.dmi' icon_state = "red slime extract" throwforce = 5.0 throw_speed = 10 throw_range = 30 w_class = 1 /obj/item/toy/snappop/virus/throw_impact(atom/hit_atom) ..() var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread s.set_up(3, 1, src) s.start() new /obj/effect/decal/cleanable/ash(src.loc) visible_message("The [name] explodes!","You hear a bang!") playsound(src, 'sound/effects/snap.ogg', 50, 1) qdel(src) /* * Snap pops */ /obj/item/toy/snappop name = "snap pop" desc = "Wow!" icon = 'icons/obj/toy.dmi' icon_state = "snappop" w_class = 1 var/ash_type = /obj/effect/decal/cleanable/ash /obj/item/toy/snappop/proc/pop_burst(var/n=3, var/c=1) var/datum/effect/system/spark_spread/s = new() s.set_up(n, c, src) s.start() new ash_type(loc) visible_message("[src] explodes!", "You hear a snap!") playsound(src, 'sound/effects/snap.ogg', 50, 1) qdel(src) /obj/item/toy/snappop/fire_act() pop_burst() /obj/item/toy/snappop/throw_impact(atom/hit_atom) ..() pop_burst() /obj/item/toy/snappop/Crossed(H as mob|obj) if(ishuman(H) || issilicon(H)) //i guess carp and shit shouldn't set them off var/mob/living/carbon/M = H if(issilicon(H) || M.m_intent == "run") to_chat(M, "You step on the snap pop!") pop_burst(2, 0) /obj/item/toy/snappop/phoenix name = "phoenix snap pop" desc = "Wow! And wow! And wow!" ash_type = /obj/effect/decal/cleanable/ash/snappop_phoenix /obj/effect/decal/cleanable/ash/snappop_phoenix var/respawn_time = 300 /obj/effect/decal/cleanable/ash/snappop_phoenix/New() . = ..() addtimer(src, "respawn", respawn_time) /obj/effect/decal/cleanable/ash/snappop_phoenix/proc/respawn() new /obj/item/toy/snappop/phoenix(get_turf(src)) qdel(src) /* * Mech prizes */ /obj/item/toy/prize icon = 'icons/obj/toy.dmi' icon_state = "ripleytoy" var/cooldown = 0 //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/random/mech name = "Random Mech Prize" desc = "This is a random prize" icon = 'icons/obj/toy.dmi' icon_state = "ripleytoy" /obj/random/mech/item_to_spawn() return pick(subtypesof(/obj/item/toy/prize)) //exclude the base type. /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" /obj/item/toy/katana name = "replica katana" desc = "Woefully underpowered in D20." icon = 'icons/obj/weapons.dmi' icon_state = "katana" item_state = "katana" flags = CONDUCT slot_flags = SLOT_BELT | SLOT_BACK force = 5 throwforce = 5 w_class = 3 attack_verb = list("attacked", "slashed", "stabbed", "sliced") /* || A Deck of Cards for playing various games of chance || */ obj/item/toy/cards burn_state = FLAMMABLE burntime = 5 var/parentdeck = null var/deckstyle = "nanotrasen" var/card_hitsound = null var/card_force = 0 var/card_throwforce = 0 var/card_throw_speed = 4 var/card_throw_range = 20 var/list/card_attack_verb = list("attacked") obj/item/toy/cards/New() ..() obj/item/toy/cards/proc/apply_card_vars(obj/item/toy/cards/newobj, obj/item/toy/cards/sourceobj) // Applies variables for supporting multiple types of card deck if(!istype(sourceobj)) return obj/item/toy/cards/deck name = "deck of cards" desc = "A deck of space-grade playing cards." icon = 'icons/obj/toy.dmi' deckstyle = "nanotrasen" icon_state = "deck_nanotrasen_full" w_class = 2 var/cooldown = 0 var/list/cards = list() obj/item/toy/cards/deck/New() ..() icon_state = "deck_[deckstyle]_full" for(var/i = 2; i <= 10; i++) cards += "[i] of Hearts" cards += "[i] of Spades" cards += "[i] of Clubs" cards += "[i] of Diamonds" cards += "King of Hearts" cards += "King of Spades" cards += "King of Clubs" cards += "King of Diamonds" cards += "Queen of Hearts" cards += "Queen of Spades" cards += "Queen of Clubs" cards += "Queen of Diamonds" cards += "Jack of Hearts" cards += "Jack of Spades" cards += "Jack of Clubs" cards += "Jack of Diamonds" cards += "Ace of Hearts" cards += "Ace of Spades" cards += "Ace of Clubs" cards += "Ace of Diamonds" obj/item/toy/cards/deck/attack_hand(mob/user as mob) var/choice = null if(cards.len == 0) icon_state = "deck_[deckstyle]_empty" to_chat(user, "There are no more cards to draw.") return var/obj/item/toy/cards/singlecard/H = new/obj/item/toy/cards/singlecard(user.loc) choice = cards[1] H.cardname = choice H.parentdeck = src var/O = src H.apply_card_vars(H,O) cards -= choice H.pickup(user) user.put_in_active_hand(H) visible_message("[user] draws a card from the deck.", "You draw a card from the deck.") if(cards.len > 26) icon_state = "deck_[deckstyle]_full" else if(cards.len > 10) icon_state = "deck_[deckstyle]_half" else if(cards.len > 1) icon_state = "deck_[deckstyle]_low" obj/item/toy/cards/deck/attack_self(mob/user as mob) if(cooldown < world.time - 50) cards = shuffle(cards) playsound(user, 'sound/items/cardshuffle.ogg', 50, 1) user.visible_message("[user] shuffles the deck.", "You shuffle the deck.") cooldown = world.time obj/item/toy/cards/deck/attackby(obj/item/toy/cards/singlecard/C, mob/living/user, params) ..() if(istype(C)) if(C.parentdeck == src) if(!user.unEquip(C)) to_chat(user, "The card is stuck to your hand, you can't add it to the deck!") return cards += C.cardname user.visible_message("[user] adds a card to the bottom of the deck.","You add the card to the bottom of the deck.") qdel(C) else to_chat(user, "You can't mix cards from other decks.") if(cards.len > 26) icon_state = "deck_[deckstyle]_full" else if(cards.len > 10) icon_state = "deck_[deckstyle]_half" else if(cards.len > 1) icon_state = "deck_[deckstyle]_low" obj/item/toy/cards/deck/attackby(obj/item/toy/cards/cardhand/C, mob/living/user, params) ..() if(istype(C)) if(C.parentdeck == src) if(!user.unEquip(C)) to_chat(user, "The hand of cards is stuck to your hand, you can't add it to the deck!") return cards += C.currenthand user.visible_message("[user] puts their hand of cards in the deck.", "You put the hand of cards in the deck.") qdel(C) else to_chat(user, "You can't mix cards from other decks.") if(cards.len > 26) icon_state = "deck_[deckstyle]_full" else if(cards.len > 10) icon_state = "deck_[deckstyle]_half" else if(cards.len > 1) icon_state = "deck_[deckstyle]_low" obj/item/toy/cards/deck/MouseDrop(atom/over_object) var/mob/M = usr if(usr.stat || !ishuman(usr) || !usr.canmove || usr.restrained()) return if(Adjacent(usr)) if(over_object == M && loc != M) M.put_in_hands(src) to_chat(usr, "You pick up the deck.") else if(istype(over_object, /obj/screen)) switch(over_object.name) if("l_hand") if(!remove_item_from_storage(M)) M.unEquip(src) M.put_in_l_hand(src) to_chat(usr, "You pick up the deck.") if("r_hand") if(!remove_item_from_storage(M)) M.unEquip(src) M.put_in_r_hand(src) to_chat(usr, "You pick up the deck.") else to_chat(usr, "You can't reach it from here.") obj/item/toy/cards/cardhand name = "hand of cards" desc = "A number of cards not in a deck, customarily held in ones hand." icon = 'icons/obj/toy.dmi' icon_state = "nanotrasen_hand2" w_class = 1 var/list/currenthand = list() var/choice = null obj/item/toy/cards/cardhand/attack_self(mob/user as mob) user.set_machine(src) interact(user) obj/item/toy/cards/cardhand/interact(mob/user) var/dat = "You have:
" for(var/t in currenthand) dat += "A [t].
" dat += "Which card will you remove next?" var/datum/browser/popup = new(user, "cardhand", "Hand of Cards", 400, 240) popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) popup.set_content(dat) popup.open() obj/item/toy/cards/cardhand/Topic(href, href_list) if(..()) return if(usr.stat || !ishuman(usr) || !usr.canmove) return var/mob/living/carbon/human/cardUser = usr var/O = src if(href_list["pick"]) if(cardUser.get_item_by_slot(slot_l_hand) == src || cardUser.get_item_by_slot(slot_r_hand) == src) var/choice = href_list["pick"] var/obj/item/toy/cards/singlecard/C = new/obj/item/toy/cards/singlecard(cardUser.loc) currenthand -= choice C.parentdeck = src.parentdeck C.cardname = choice C.apply_card_vars(C,O) C.pickup(cardUser) cardUser.put_in_any_hand_if_possible(C) cardUser.visible_message("[cardUser] draws a card from \his hand.", "You take the [C.cardname] from your hand.") interact(cardUser) if(currenthand.len < 3) icon_state = "[deckstyle]_hand2" else if(src.currenthand.len < 4) icon_state = "[deckstyle]_hand3" else if(src.currenthand.len < 5) icon_state = "[deckstyle]_hand4" if(currenthand.len == 1) var/obj/item/toy/cards/singlecard/N = new/obj/item/toy/cards/singlecard(src.loc) N.parentdeck = src.parentdeck N.cardname = src.currenthand[1] N.apply_card_vars(N,O) cardUser.unEquip(src) N.pickup(cardUser) cardUser.put_in_any_hand_if_possible(N) to_chat(cardUser, "You also take [currenthand[1]] and hold it.") cardUser << browse(null, "window=cardhand") qdel(src) return obj/item/toy/cards/cardhand/attackby(obj/item/toy/cards/singlecard/C, mob/living/user, params) if(istype(C)) if(C.parentdeck == parentdeck) currenthand += C.cardname user.unEquip(C) user.visible_message("[user] adds a card to their hand.", "You add the [C.cardname] to your hand.") interact(user) if(currenthand.len > 4) icon_state = "[deckstyle]_hand5" else if(currenthand.len > 3) icon_state = "[deckstyle]_hand4" else if(currenthand.len > 2) icon_state = "[deckstyle]_hand3" qdel(C) else to_chat(user, "You can't mix cards from other decks.") obj/item/toy/cards/cardhand/apply_card_vars(obj/item/toy/cards/newobj,obj/item/toy/cards/sourceobj) ..() newobj.deckstyle = sourceobj.deckstyle newobj.icon_state = "[deckstyle]_hand2" // Another dumb hack, without this the hand is invisible (or has the default deckstyle) until another card is added. newobj.card_hitsound = sourceobj.card_hitsound newobj.card_force = sourceobj.card_force newobj.card_throwforce = sourceobj.card_throwforce newobj.card_throw_speed = sourceobj.card_throw_speed newobj.card_throw_range = sourceobj.card_throw_range newobj.card_attack_verb = sourceobj.card_attack_verb obj/item/toy/cards/singlecard name = "card" desc = "a card" icon = 'icons/obj/toy.dmi' icon_state = "singlecard_nanotrasen_down" w_class = 1 var/cardname = null var/flipped = 0 pixel_x = -5 obj/item/toy/cards/singlecard/examine(mob/user) if(..(user, 0)) if(ishuman(user)) var/mob/living/carbon/human/cardUser = user if(cardUser.get_item_by_slot(slot_l_hand) == src || cardUser.get_item_by_slot(slot_r_hand) == src) cardUser.visible_message("[cardUser] checks \his card.", "The card reads: [src.cardname]") else to_chat(cardUser, "You need to have the card in your hand to check it.") obj/item/toy/cards/singlecard/verb/Flip() set name = "Flip Card" set category = "Object" set src in range(1) if(usr.stat || !ishuman(usr) || !usr.canmove || usr.restrained()) return if(!flipped) flipped = 1 if(cardname) icon_state = "sc_[cardname]_[deckstyle]" name = cardname else icon_state = "sc_Ace of Spades_[deckstyle]" name = "What Card" pixel_x = 5 else if(flipped) flipped = 0 icon_state = "singlecard_down_[deckstyle]" name = "card" pixel_x = -5 obj/item/toy/cards/singlecard/attackby(obj/item/I, mob/living/user, params) if(istype(I, /obj/item/toy/cards/singlecard/)) var/obj/item/toy/cards/singlecard/C = I if(C.parentdeck == parentdeck) var/obj/item/toy/cards/cardhand/H = new/obj/item/toy/cards/cardhand(user.loc) H.currenthand += C.cardname H.currenthand += cardname H.parentdeck = C.parentdeck H.apply_card_vars(H,C) user.unEquip(C) H.pickup(user) user.put_in_active_hand(H) to_chat(user, "You combine the [C.cardname] and the [cardname] into a hand.") qdel(C) qdel(src) else to_chat(user, "You can't mix cards from other decks.") if(istype(I, /obj/item/toy/cards/cardhand/)) var/obj/item/toy/cards/cardhand/H = I if(H.parentdeck == parentdeck) H.currenthand += cardname user.unEquip(src) user.visible_message("[user] adds a card to \his hand.", "You add the [cardname] to your hand.") H.interact(user) if(H.currenthand.len > 4) H.icon_state = "[deckstyle]_hand5" else if(H.currenthand.len > 3) H.icon_state = "[deckstyle]_hand4" else if(H.currenthand.len > 2) H.icon_state = "[deckstyle]_hand3" qdel(src) else to_chat(user, "You can't mix cards from other decks.") obj/item/toy/cards/singlecard/attack_self(mob/user) if(usr.stat || !ishuman(usr) || !usr.canmove || usr.restrained()) return Flip() obj/item/toy/cards/singlecard/apply_card_vars(obj/item/toy/cards/singlecard/newobj,obj/item/toy/cards/sourceobj) ..() newobj.deckstyle = sourceobj.deckstyle newobj.icon_state = "singlecard_down_[deckstyle]" // Without this the card is invisible until flipped. It's an ugly hack, but it works. newobj.card_hitsound = sourceobj.card_hitsound newobj.hitsound = newobj.card_hitsound newobj.card_force = sourceobj.card_force newobj.force = newobj.card_force newobj.card_throwforce = sourceobj.card_throwforce newobj.throwforce = newobj.card_throwforce newobj.card_throw_speed = sourceobj.card_throw_speed newobj.throw_speed = newobj.card_throw_speed newobj.card_throw_range = sourceobj.card_throw_range newobj.throw_range = newobj.card_throw_range newobj.card_attack_verb = sourceobj.card_attack_verb newobj.attack_verb = newobj.card_attack_verb /* || Syndicate playing cards, for pretending you're Gambit and playing poker for the nuke disk. || */ obj/item/toy/cards/deck/syndicate name = "suspicious looking deck of cards" desc = "A deck of space-grade playing cards. They seem unusually rigid." deckstyle = "syndicate" card_hitsound = 'sound/weapons/bladeslice.ogg' card_force = 5 card_throwforce = 10 card_throw_speed = 3 card_throw_range = 20 card_attack_verb = list("attacked", "sliced", "diced", "slashed", "cut") burn_state = FIRE_PROOF /* || Custom card decks || */ obj/item/toy/cards/deck/black deckstyle = "black" obj/item/toy/cards/deck/syndicate/black deckstyle = "black" /obj/item/toy/nuke name = "\improper Nuclear Fission Explosive toy" desc = "A plastic model of a Nuclear Fission Explosive." icon = 'icons/obj/toy.dmi' icon_state = "nuketoyidle" w_class = 2 var/cooldown = 0 /obj/item/toy/nuke/attack_self(mob/user) if(cooldown < world.time) cooldown = world.time + 1800 //3 minutes user.visible_message("[user] presses a button on [src]", "You activate [src], it plays a loud noise!", "You hear the click of a button.") spawn(5) //gia said so icon_state = "nuketoy" playsound(src, 'sound/machines/Alarm.ogg', 100, 0, 0) sleep(135) icon_state = "nuketoycool" sleep(cooldown - world.time) icon_state = "nuketoyidle" else var/timeleft = (cooldown - world.time) to_chat(user, "Nothing happens, and '[round(timeleft/10)]' appears on a small display.") /obj/item/toy/therapy name = "therapy doll" desc = "A toy for therapeutic and recreational purposes." icon_state = "therapyred" item_state = "egg4" w_class = 1 var/cooldown = 0 /obj/item/toy/therapy/New() if(item_color) name = "[item_color] therapy doll" desc += " This one is [item_color]." icon_state = "therapy[item_color]" /obj/item/toy/therapy/attack_self(mob/user) if(cooldown < world.time - 8) to_chat(user, "You relieve some stress with \the [src].") playsound(user, 'sound/items/squeaktoy.ogg', 20, 1) cooldown = world.time /obj/random/therapy name = "Random Therapy Doll" desc = "This is a random therapy doll." icon = 'icons/obj/toy.dmi' icon_state = "therapyred" /obj/random/prize/item_to_spawn() return pick(subtypesof(/obj/item/toy/therapy)) //exclude the base type. /obj/item/toy/therapy/red item_state = "egg4" // It's the red egg in items_left/righthand item_color = "red" /obj/item/toy/therapy/purple item_state = "egg1" // It's the magenta egg in items_left/righthand item_color = "purple" /obj/item/toy/therapy/blue item_state = "egg2" // It's the blue egg in items_left/righthand item_color = "blue" /obj/item/toy/therapy/yellow item_state = "egg5" // It's the yellow egg in items_left/righthand item_color = "yellow" /obj/item/toy/therapy/orange item_state = "egg4" // It's the red one again, lacking an orange item_state and making a new one is pointless item_color = "orange" /obj/item/toy/therapy/green item_state = "egg3" // It's the green egg in items_left/righthand item_color = "green" /obj/item/weapon/toddler icon_state = "toddler" name = "toddler" desc = "This baby looks almost real. Wait, did it just burp?" force = 5 w_class = 4 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" item_state = "inflatable" icon = 'icons/obj/clothing/belts.dmi' slot_flags = SLOT_BELT /* * Fake meteor */ /obj/item/toy/minimeteor name = "Mini-Meteor" desc = "Relive the excitement of a meteor shower! SweetMeat-eor. Co is not responsible for any injuries, headaches or hearing loss caused by Mini-Meteor." icon = 'icons/obj/toy.dmi' icon_state = "minimeteor" w_class = 2 /obj/item/toy/minimeteor/throw_impact(atom/hit_atom) ..() playsound(src, 'sound/effects/meteorimpact.ogg', 40, 1) for(var/mob/M in range(10, src)) if(!M.stat && !istype(M, /mob/living/silicon/ai))\ shake_camera(M, 3, 1) qdel(src) /* * Carp plushie */ /obj/item/toy/carpplushie name = "space carp plushie" desc = "An adorable stuffed toy that resembles a space carp." icon = 'icons/obj/toy.dmi' icon_state = "carpplushie" attack_verb = list("bitten", "eaten", "fin slapped") var/bitesound = 'sound/weapons/bite.ogg' burn_state = FLAMMABLE // Attack mob /obj/item/toy/carpplushie/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/carpplushie/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 = "carpplushie" /obj/random/carp_plushie/item_to_spawn() return pick(typesof(/obj/item/toy/carpplushie)) //can pick any carp plushie, even the original. /obj/item/toy/carpplushie/ice icon_state = "icecarp" /obj/item/toy/carpplushie/silent icon_state = "silentcarp" /obj/item/toy/carpplushie/electric icon_state = "electriccarp" /obj/item/toy/carpplushie/gold icon_state = "goldcarp" /obj/item/toy/carpplushie/toxin icon_state = "toxincarp" /obj/item/toy/carpplushie/dragon icon_state = "dragoncarp" /obj/item/toy/carpplushie/pink icon_state = "pinkcarp" /obj/item/toy/carpplushie/candy icon_state = "candycarp" /obj/item/toy/carpplushie/nebula icon_state = "nebulacarp" /obj/item/toy/carpplushie/void icon_state = "voidcarp" /* * Plushie */ /obj/item/toy/plushie name = "plushie" desc = "An adorable, soft, and cuddly plushie." icon = 'icons/obj/toy.dmi' var/poof_sound = 'sound/weapons/thudswoosh.ogg' attack_verb = list("poofed", "bopped", "whapped","cuddled","fluffed") burn_state = FLAMMABLE /obj/item/toy/plushie/attack(mob/M as mob, mob/user as mob) playsound(loc, poof_sound, 20, 1) // Play the whoosh sound in local area if(iscarbon(M)) if(prob(10)) M.reagents.add_reagent("hugs", 10) return ..() /obj/item/toy/plushie/attack_self(mob/user as mob) var/cuddle_verb = pick("hugs","cuddles","snugs") user.visible_message("[user] [cuddle_verb] the [src].") playsound(get_turf(src), poof_sound, 50, 1, -1) return ..() /obj/random/plushie name = "Random Plushie" desc = "This is a random plushie" icon = 'icons/obj/toy.dmi' icon_state = "redfox" /obj/random/plushie/item_to_spawn() return pick(subtypesof(/obj/item/toy/plushie)) //exclude the base type. /obj/item/toy/plushie/corgi name = "corgi plushie" icon_state = "corgi" /obj/item/toy/plushie/girly_corgi name = "corgi plushie" icon_state = "girlycorgi" /obj/item/toy/plushie/robo_corgi name = "borgi plushie" icon_state = "robotcorgi" /obj/item/toy/plushie/octopus name = "octopus plushie" icon_state = "loveable" /obj/item/toy/plushie/face_hugger name = "facehugger plushie" icon_state = "huggable" //foxes are basically the best /obj/item/toy/plushie/red_fox name = "red fox plushie" icon_state = "redfox" /obj/item/toy/plushie/black_fox name = "black fox plushie" icon_state = "blackfox" /obj/item/toy/plushie/marble_fox name = "marble fox plushie" icon_state = "marblefox" /obj/item/toy/plushie/blue_fox name = "blue fox plushie" icon_state = "bluefox" /obj/item/toy/plushie/orange_fox name = "orange fox plushie" icon_state = "orangefox" /obj/item/toy/plushie/coffee_fox name = "coffee fox plushie" icon_state = "coffeefox" /obj/item/toy/plushie/pink_fox name = "pink fox plushie" icon_state = "pinkfox" /obj/item/toy/plushie/purple_fox name = "purple fox plushie" icon_state = "purplefox" /obj/item/toy/plushie/crimson_fox name = "crimson fox plushie" icon_state = "crimsonfox" /obj/item/toy/plushie/deer name = "deer plushie" icon_state = "deer" /obj/item/toy/plushie/black_cat name = "black cat plushie" icon_state = "blackcat" /obj/item/toy/plushie/grey_cat name = "grey cat plushie" icon_state = "greycat" /obj/item/toy/plushie/white_cat name = "white cat plushie" icon_state = "whitecat" /obj/item/toy/plushie/orange_cat name = "orange cat plushie" icon_state = "orangecat" /obj/item/toy/plushie/siamese_cat name = "siamese cat plushie" icon_state = "siamesecat" /obj/item/toy/plushie/tabby_cat name = "tabby cat plushie" icon_state = "tabbycat" /obj/item/toy/plushie/tuxedo_cat name = "tuxedo cat plushie" icon_state = "tuxedocat" /* * Foam Armblade */ /obj/item/toy/foamblade name = "foam armblade" desc = "it says \"Sternside Changs #1 fan\" on it. " icon = 'icons/obj/toy.dmi' icon_state = "foamblade" item_state = "arm_blade" attack_verb = list("pricked", "absorbed", "gored") w_class = 2 burn_state = FLAMMABLE /* * Toy/fake flash */ /obj/item/toy/flash name = "toy flash" desc = "FOR THE REVOLU- Oh wait, that's just a toy." icon = 'icons/obj/device.dmi' icon_state = "flash" item_state = "flashtool" w_class = 1 /obj/item/toy/flash/attack(mob/living/M, mob/user) playsound(src.loc, 'sound/weapons/flash.ogg', 100, 1) flick("[initial(icon_state)]2", src) user.visible_message("[user] blinds [M] with the flash!") /* * Toy big red button */ /obj/item/toy/redbutton name = "big red button" desc = "A big, plastic red button. Reads 'From HonkCo Pranks?' on the back." icon = 'icons/obj/assemblies.dmi' icon_state = "bigred" w_class = 2 var/cooldown = 0 /obj/item/toy/redbutton/attack_self(mob/user) if(cooldown < world.time) cooldown = (world.time + 300) // Sets cooldown at 30 seconds user.visible_message("[user] presses the big red button.", "You press the button, it plays a loud noise!", "The button clicks loudly.") playsound(src, 'sound/effects/explosionfar.ogg', 50, 0, 0) for(var/mob/M in range(10, src)) // Checks range if(!M.stat && !istype(M, /mob/living/silicon/ai)) // Checks to make sure whoever's getting shaken is alive/not the AI sleep(8) // Short delay to match up with the explosion sound shake_camera(M, 2, 1) // Shakes player camera 2 squares for 1 second. else to_chat(user, "Nothing happens.") /* * AI core prizes */ /obj/item/toy/AI name = "toy AI" desc = "A little toy model AI core with real law announcing action!" icon = 'icons/obj/toy.dmi' icon_state = "AI" w_class = 2 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("[bicon(src)] [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 = 2 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("[bicon(src)] [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 = 2 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("[bicon(src)] [message]") cooldown = 1 spawn(30) cooldown = 0 return ..() // DND Character minis. Use the naming convention (type)character for the icon states. /obj/item/toy/character icon = 'icons/obj/toy.dmi' w_class = 2 pixel_z = 5 /obj/item/toy/character/alien name = "Xenomorph Miniature" 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/cthulhu name = "Cthulhu 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/New() ..() new /obj/item/toy/character/alien(src) new /obj/item/toy/character/cleric(src) new /obj/item/toy/character/warrior(src) new /obj/item/toy/character/thief(src) new /obj/item/toy/character/wizard(src) new /obj/item/toy/character/cthulhu(src) new /obj/item/toy/character/lich(src) //Pet Rocks, just like from the 70's! /obj/item/toy/pet_rock name = "pet rock" desc = "The perfect pet!" icon = 'icons/obj/toy.dmi' icon_state = "pet_rock" w_class = 2 force = 5 throwforce = 5 attack_verb = list("attacked", "bashed", "smashed", "stoned") hitsound = "swing_hit" /obj/item/toy/pet_rock/fred name = "fred" desc = "Fred, the bestest boy pet in the whole wide universe!" icon_state = "fred" /obj/item/toy/pet_rock/roxie name = "roxie" desc = "Roxie, the bestest girl pet in the whole wide universe!" icon_state = "roxie" //minigibber, so cute /obj/item/toy/minigibber name = "miniature gibber" desc = "A miniature recreation of NanoTrasen's famous meat grinder." icon = 'icons/obj/toy.dmi' icon_state = "minigibber" attack_verb = list("grinded", "gibbed") w_class = 2 var/cooldown = 0 var/obj/stored_minature = null /obj/item/toy/minigibber/attack_self(var/mob/user) if(stored_minature) to_chat(user, "\The [src] makes a violent grinding noise as it tears apart the miniature figure inside!") qdel(stored_minature) stored_minature = null playsound(user, 'sound/goonstation/effects/gib.ogg', 20, 1) cooldown = world.time if(cooldown < world.time - 8) to_chat(user, "You hit the gib button on \the [src].") playsound(user, 'sound/goonstation/effects/gib.ogg', 20, 1) cooldown = world.time /obj/item/toy/minigibber/attackby(var/obj/O, var/mob/user, params) if(istype(O,/obj/item/toy/character) && O.loc == user) to_chat(user, "You start feeding \the [O] [bicon(O)] into \the [src]'s mini-input.") if(do_after(user,10, target = src)) if(O.loc != user) to_chat(user, "\The [O] is too far away to feed into \the [src]!") else to_chat(user, "You feed \the [O] [bicon(O)] into \the [src]!") user.unEquip(O) O.forceMove(src) stored_minature = O else to_chat(user, "You stop feeding \the [O] into \the [src]'s mini-input.") else ..() /* * Xenomorph action figure */ /obj/item/toy/toy_xeno icon = 'icons/obj/toy.dmi' icon_state = "toy_xeno" name = "xenomorph action figure" desc = "MEGA presents the new Xenos Isolated action figure! Comes complete with realistic sounds! Pull back string to use." w_class = 2 var/cooldown = 0 /obj/item/toy/toy_xeno/attack_self(mob/user) if(cooldown <= world.time) cooldown = (world.time + 50) //5 second cooldown user.visible_message("[user] pulls back the string on [src].") icon_state = "[initial(icon_state)]_used" sleep(5) audible_message("[bicon(src)] Hiss!") var/list/possible_sounds = list('sound/voice/hiss1.ogg', 'sound/voice/hiss2.ogg', 'sound/voice/hiss3.ogg', 'sound/voice/hiss4.ogg') playsound(get_turf(src), pick(possible_sounds), 50, 1) spawn(45) if(src) icon_state = "[initial(icon_state)]" else to_chat(user, "The string on [src] hasn't rewound all the way!") return /obj/item/toy/russian_revolver name = "russian revolver" desc = "for fun and games!" icon = 'icons/obj/guns/projectile.dmi' icon_state = "detective_gold" item_state = "gun" lefthand_file = 'icons/mob/inhands/guns_lefthand.dmi' righthand_file = 'icons/mob/inhands/guns_righthand.dmi' flags = CONDUCT slot_flags = SLOT_BELT materials = list(MAT_METAL=2000) w_class = 3 throwforce = 5 throw_speed = 4 throw_range = 5 force = 5.0 origin_tech = "combat=1" attack_verb = list("struck", "hit", "bashed") var/bullet_position = 1 var/is_empty = 0 /obj/item/toy/russian_revolver/suicide_act(mob/user) user.visible_message("[user] quickly loads six bullets into the [src.name]'s cylinder and points it at \his head before pulling the trigger! It looks like they are trying to commit suicide.") playsound(loc, 'sound/weapons/Gunshot.ogg', 50, 1) return (BRUTELOSS) /obj/item/toy/russian_revolver/New() spin_cylinder() ..() /obj/item/toy/russian_revolver/attack_self(mob/user) if(is_empty) user.visible_message("[user] loads a bullet into the [src]'s cylinder.") is_empty = 0 else spin_cylinder() user.visible_message("[user] spins the cylinder on the [src]!") /obj/item/toy/russian_revolver/attack(mob/living/carbon/M, mob/user) if(M != user) //can't use this on other people return if(is_empty) to_chat(user, "The [src] is empty.") return user.visible_message("[user] points the [src] at their head, ready to pull the trigger!") if(do_after(user, 30, target = M)) if(bullet_position != 1) user.visible_message("*click*") playsound(src, 'sound/weapons/empty.ogg', 100, 1) bullet_position -= 1 return if(bullet_position == 1) is_empty = 1 playsound(src, 'sound/weapons/Gunshot.ogg', 50, 1) user.visible_message("The [src] goes off!") M.apply_damage(200, BRUTE, "head", sharp =1, used_weapon = "Self-inflicted gunshot would to the head.") M.death() else user.visible_message("[user] lowers the [src] from their head.") /obj/item/toy/russian_revolver/proc/spin_cylinder() bullet_position = rand(1,6) /* * Rubber Chainsaw */ /obj/item/weapon/twohanded/toy/chainsaw name = "Toy Chainsaw" desc = "A toy chainsaw with a rubber edge. Ages 8 and up" icon_state = "chainsaw0" force = 0 throwforce = 0 throw_speed = 4 throw_range = 20 wieldsound = 'sound/weapons/chainsawstart.ogg' attack_verb = list("sawed", "cut", "hacked", "carved", "cleaved", "butchered", "felled", "timbered") /obj/item/weapon/twohanded/toy/chainsaw/update_icon() if(wielded) icon_state = "chainsaw[wielded]" else icon_state = "chainsaw0" /* * Action Figures */ /obj/random/figure name = "Random Action Figure" desc = "This is a random toy action figure" icon = 'icons/obj/toy.dmi' icon_state = "nuketoy" /obj/random/figure/item_to_spawn() return pick(subtypesof(/obj/item/toy/figure)) /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?" /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("[bicon(src)] The [src] says \"[toysay]\".") playsound(user, 'sound/machines/click.ogg', 20, 1) /obj/item/toy/figure/cmo name = "Chief Medical Officer action figure" icon_state = "cmo" toysay = "Suit sensors!" /obj/item/toy/figure/assistant name = "Assistant action figure" icon_state = "assistant" toysay = "Grey tide station wide!" /obj/item/toy/figure/atmos name = "Atmospheric Technician action figure" icon_state = "atmos" toysay = "Glory to Atmosia!" /obj/item/toy/figure/bartender name = "Bartender action figure" icon_state = "bartender" toysay = "Wheres my monkey?" /obj/item/toy/figure/borg name = "Cyborg action figure" icon_state = "borg" toysay = "I. LIVE. AGAIN." /obj/item/toy/figure/botanist name = "Botanist action figure" icon_state = "botanist" toysay = "Dude, I see colors..." /obj/item/toy/figure/captain name = "Captain action figure" icon_state = "captain" toysay = "Crew, the Nuke Disk is safely up my ass." /obj/item/toy/figure/cargotech name = "Cargo Technician action figure" icon_state = "cargotech" toysay = "For Cargonia!" /obj/item/toy/figure/ce name = "Chief Engineer action figure" icon_state = "ce" toysay = "Wire the solars!" /obj/item/toy/figure/chaplain name = "Chaplain action figure" icon_state = "chaplain" toysay = "Gods make me a killing machine please!" /obj/item/toy/figure/chef name = "Chef action figure" icon_state = "chef" toysay = "I swear it's not human meat." /obj/item/toy/figure/chemist name = "Chemist action figure" icon_state = "chemist" toysay = "Get your pills!" /obj/item/toy/figure/clown name = "Clown action figure" icon_state = "clown" toysay = "Honk!" /obj/item/toy/figure/ian name = "Ian action figure" icon_state = "ian" toysay = "Arf!" /obj/item/toy/figure/detective name = "Detective action figure" icon_state = "detective" toysay = "This airlock has grey jumpsuit and insulated glove fibers on it." /obj/item/toy/figure/dsquad name = "Death Squad Officer action figure" icon_state = "dsquad" toysay = "Eliminate all threats!" /obj/item/toy/figure/engineer name = "Engineer action figure" icon_state = "engineer" toysay = "Oh god, the singularity is loose!" /obj/item/toy/figure/geneticist name = "Geneticist action figure" icon_state = "geneticist" toysay = "I'm not qualified for this job." /obj/item/toy/figure/hop name = "Head of Personnel action figure" icon_state = "hop" toysay = "Giving out all access!" /obj/item/toy/figure/hos name = "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" icon_state = "qm" toysay = "Hail Cargonia!" /obj/item/toy/figure/janitor name = "Janitor action figure" icon_state = "janitor" toysay = "Look at the signs, you idiot." /obj/item/toy/figure/lawyer name = "Internal Affairs Agent action figure" icon_state = "lawyer" 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" icon_state = "librarian" toysay = "One day while..." /obj/item/toy/figure/md name = "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" icon_state = "miner" toysay = "Oh god it's eating my intestines!" /obj/item/toy/figure/ninja name = "Ninja action figure" icon_state = "ninja" toysay = "Oh god! Stop shooting, I'm friendly!" /obj/item/toy/figure/wizard name = "Wizard action figure" icon_state = "wizard" toysay = "Ei Nath!" /obj/item/toy/figure/rd name = "Research Director action figure" icon_state = "rd" toysay = "Blowing all of the borgs!" /obj/item/toy/figure/roboticist name = "Roboticist action figure" icon_state = "roboticist" toysay = "He asked to be borged!" /obj/item/toy/figure/scientist name = "Scientist action figure" icon_state = "scientist" toysay = "Someone else must have made those bombs!" /obj/item/toy/figure/syndie name = "Nuclear Operative action figure" icon_state = "syndie" toysay = "Get that fucking disk!" /obj/item/toy/figure/secofficer name = "Security Officer action figure" icon_state = "secofficer" toysay = "I am the law!" /obj/item/toy/figure/virologist name = "Virologist action figure" icon_state = "virologist" toysay = "The cure is potassium!" /obj/item/toy/figure/warden name = "Warden action figure" icon_state = "warden" toysay = "Execute him for breaking in!" ////////////////////////////////////////////////////// // Magic 8-Ball / Conch // ////////////////////////////////////////////////////// /obj/item/toy/eight_ball name = "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("[bicon(src)] 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.")