mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-09 16:12:17 +00:00
committed by
Chompstation Bot
parent
f516265384
commit
3245498530
35
code/game/machinery/computer/arcade_vr.dm
Normal file
35
code/game/machinery/computer/arcade_vr.dm
Normal file
@@ -0,0 +1,35 @@
|
||||
/obj/machinery/computer/arcade
|
||||
list/prizes = list( /obj/item/weapon/storage/box/snappops = 2,
|
||||
/obj/item/toy/blink = 2,
|
||||
/obj/item/clothing/under/syndicate/tacticool = 2,
|
||||
/obj/item/toy/sword = 2,
|
||||
/obj/item/weapon/gun/projectile/revolver/capgun = 2,
|
||||
/obj/item/toy/crossbow = 2,
|
||||
/obj/item/clothing/suit/syndicatefake = 2,
|
||||
/obj/item/weapon/storage/fancy/crayons = 2,
|
||||
/obj/item/toy/spinningtoy = 2,
|
||||
/obj/random/mech_toy = 1,
|
||||
/obj/item/weapon/reagent_containers/spray/waterflower = 1,
|
||||
/obj/random/action_figure = 1,
|
||||
/obj/random/plushie = 1,
|
||||
/obj/item/toy/cultsword = 1,
|
||||
/obj/item/toy/bouquet/fake = 1,
|
||||
/obj/item/clothing/accessory/badge/sheriff = 2,
|
||||
/obj/item/clothing/head/cowboy_hat/small = 2,
|
||||
/obj/item/toy/stickhorse = 2,
|
||||
/obj/item/toy/rock = 2,
|
||||
/obj/item/toy/flash = 2,
|
||||
/obj/item/toy/redbutton = 2,
|
||||
/obj/item/toy/gnome = 2,
|
||||
/obj/item/toy/AI = 2,
|
||||
/obj/item/clothing/gloves/ring/buzzer/toy = 2,
|
||||
/obj/item/weapon/storage/box/handcuffs/fake = 2,
|
||||
/obj/item/toy/nuke = 2,
|
||||
/obj/item/toy/minigibber = 2,
|
||||
/obj/item/toy/toy_xeno = 2,
|
||||
/obj/item/toy/russian_revolver = 1,
|
||||
/obj/item/toy/russian_revolver/trick_revolver = 1,
|
||||
/obj/item/toy/chainsaw = 1,
|
||||
/obj/random/miniature = 1,
|
||||
/obj/item/toy/snake_popper = 1
|
||||
)
|
||||
42
code/game/objects/effects/confetti_vr.dm
Normal file
42
code/game/objects/effects/confetti_vr.dm
Normal file
@@ -0,0 +1,42 @@
|
||||
/obj/effect/effect/sparks/confetti
|
||||
name = "confetti"
|
||||
icon = 'icons/effects/effects_vr.dmi'
|
||||
icon_state = "confetti"
|
||||
|
||||
/obj/effect/effect/sparks/New()
|
||||
..()
|
||||
playsound(src, "sounds/items/confetti.ogg ", 100, 1)
|
||||
|
||||
/datum/effect/effect/system/confetti_spread
|
||||
var/total_sparks = 0 // To stop it being spammed and lagging!
|
||||
|
||||
set_up(n = 3, c = 0, loca)
|
||||
if(n > 10)
|
||||
n = 10
|
||||
number = n
|
||||
cardinals = c
|
||||
if(istype(loca, /turf/))
|
||||
location = loca
|
||||
else
|
||||
location = get_turf(loca)
|
||||
|
||||
start()
|
||||
var/i = 0
|
||||
for(i=0, i<src.number, i++)
|
||||
if(src.total_sparks > 20)
|
||||
return
|
||||
spawn(0)
|
||||
if(holder)
|
||||
src.location = get_turf(holder)
|
||||
var/obj/effect/effect/sparks/confetti = new /obj/effect/effect/sparks/confetti(src.location)
|
||||
src.total_sparks++
|
||||
var/direction
|
||||
if(src.cardinals)
|
||||
direction = pick(cardinal)
|
||||
else
|
||||
direction = pick(alldirs)
|
||||
for(i=0, i<pick(1,2,3), i++)
|
||||
sleep(5)
|
||||
step(confetti,direction)
|
||||
spawn(20)
|
||||
src.total_sparks--
|
||||
@@ -1291,7 +1291,7 @@
|
||||
/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.
|
||||
@@ -1299,7 +1299,7 @@
|
||||
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()
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
/obj/item/toy/plushie/box
|
||||
name = "cardboard plushie"
|
||||
desc = "A toy box plushie, it holds cotten. Only a baddie would place a bomb through the postal system..."
|
||||
desc = "A toy box plushie, it holds cotton. Only a baddie would place a bomb through the postal system..."
|
||||
icon = 'icons/obj/toy_vr.dmi'
|
||||
icon_state = "box"
|
||||
attack_verb = list("open", "closed", "packed", "hidden", "rigged", "bombed", "sent", "gave")
|
||||
@@ -101,3 +101,677 @@
|
||||
/obj/item/toy/plushie/vox/proc/cooldownreset()
|
||||
cooldown = 0
|
||||
|
||||
/*
|
||||
* 4/9/21 *
|
||||
* IPC Plush
|
||||
* Toaster plush
|
||||
* Snake plush
|
||||
* Cube plush
|
||||
* Pip plush
|
||||
* Moth plush
|
||||
* Crab plush
|
||||
* Possum plush
|
||||
* Goose plush
|
||||
* White mouse plush
|
||||
* Pet rock
|
||||
* Pet rock (m)
|
||||
* Pet rock (f)
|
||||
* Chew toys
|
||||
* Cat toy * 2
|
||||
* Toy flash
|
||||
* Toy button
|
||||
* Gnome
|
||||
* Toy AI
|
||||
* Buzzer ring
|
||||
* Fake handcuffs
|
||||
* Nuke toy
|
||||
* Toy gibber
|
||||
* Toy xeno
|
||||
* Fake gun * 2
|
||||
* Toy chainsaw
|
||||
* Random tabletop miniature spawner
|
||||
* snake popper
|
||||
*/
|
||||
|
||||
/obj/item/toy/plushie/ipc
|
||||
name = "IPC plushie"
|
||||
desc = "A pleasing soft-toy of a monitor-headed robot. Toaster functionality included."
|
||||
icon = 'icons/obj/toy_vr.dmi'
|
||||
icon_state = "plushie_ipc"
|
||||
var/cooldown = 0
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/slice/bread
|
||||
var/toasted = FALSE
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/tastybread
|
||||
var/toasted = FALSE
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/slice/bread/afterattack(atom/A, mob/user as mob, proximity)
|
||||
if(istype(A, /obj/item/toy/plushie/ipc) && !toasted)
|
||||
toasted = TRUE
|
||||
icon = 'icons/obj/toy_vr.dmi'
|
||||
icon_state = "toast"
|
||||
to_chat(user, "<span class='notice'> You insert bread into the toaster. </span>")
|
||||
playsound(loc, 'sound/machines/ding.ogg', 50, 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/tastybread/afterattack(atom/A, mob/user as mob, proximity)
|
||||
if(istype(A, /obj/item/toy/plushie/ipc) && !toasted)
|
||||
toasted = TRUE
|
||||
icon = 'icons/obj/toy_vr.dmi'
|
||||
icon_state = "toast"
|
||||
to_chat(user, "<span class='notice'> You insert bread into the toaster. </span>")
|
||||
playsound(loc, 'sound/machines/ding.ogg', 50, 1)
|
||||
|
||||
/obj/item/toy/plushie/ipc/attackby(obj/item/I as obj, mob/living/user as mob)
|
||||
if(istype(I, /obj/item/weapon/material/kitchen/utensil))
|
||||
to_chat(user, "<span class='notice'> You insert the [I] into the toaster. </span>")
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(5, 1, src)
|
||||
s.start()
|
||||
user.electrocute_act(15,src,0.75)
|
||||
else
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/item/toy/plushie/ipc/attack_self(mob/user as mob)
|
||||
if(!cooldown)
|
||||
playsound(user, 'sound/machines/ping.ogg', 10, 0)
|
||||
src.visible_message("<span class='danger'>Ping!</span>")
|
||||
cooldown = 1
|
||||
addtimer(CALLBACK(src, .proc/cooldownreset), 50)
|
||||
return ..()
|
||||
|
||||
/obj/item/toy/plushie/ipc/proc/cooldownreset()
|
||||
cooldown = 0
|
||||
|
||||
/obj/item/toy/plushie/ipc/toaster
|
||||
name = "toaster plushie"
|
||||
desc = "A stuffed toy of a pleasant art-deco toaster. It has a small tag on it reading 'Bricker Home Appliances! All rights reserved, copyright 2298.' It's a tad heavy on account of containing a heating coil. Want to make toast?"
|
||||
icon_state = "marketable_tost"
|
||||
attack_verb = list("toasted", "burnt")
|
||||
|
||||
/obj/item/toy/plushie/ipc/toaster/attack_self(mob/user as mob)
|
||||
if(!cooldown)
|
||||
playsound(user, 'sound/machines/ding.ogg', 10, 0)
|
||||
src.visible_message("<span class='danger'>Ding!</span>")
|
||||
cooldown = 1
|
||||
addtimer(CALLBACK(src, .proc/cooldownreset), 50)
|
||||
return ..()
|
||||
|
||||
/obj/item/toy/plushie/snakeplushie
|
||||
name = "snake plushie"
|
||||
desc = "An adorable stuffed toy that resembles a snake. Not to be mistaken for the real thing."
|
||||
icon = 'icons/obj/toy_vr.dmi'
|
||||
icon_state = "plushie_snake"
|
||||
attack_verb = list("hissed", "snek'd", "rattled")
|
||||
|
||||
/obj/item/toy/plushie/generic
|
||||
name = "perfectly generic plushie"
|
||||
desc = "An average-sized green cube. It isn't notable in any way."
|
||||
icon = 'icons/obj/toy_vr.dmi'
|
||||
icon_state = "generic"
|
||||
attack_verb = list("existed near")
|
||||
|
||||
/obj/item/toy/plushie/marketable_pip
|
||||
name = "mascot CRO plushie"
|
||||
desc = "An adorable plushie of NanoTrasen's Best Girl(TM) mascot. It smells faintly of paperwork."
|
||||
icon = 'icons/obj/toy_vr.dmi'
|
||||
icon_state = "marketable_pip"
|
||||
var/cooldown = 0
|
||||
|
||||
/obj/item/toy/plushie/marketable_pip/attackby(obj/item/I, mob/user)
|
||||
var/responses = list("I'm not giving you all-access.", "Do you want an ID modification?", "Where are you swiping that!?", "Congratulations! You've been promoted to unemployed!")
|
||||
var/obj/item/weapon/card/id/id = I.GetID()
|
||||
if(istype(id))
|
||||
if(!cooldown)
|
||||
user.visible_message("<span class='notice'>[user] swipes \the [I] against \the [src].</span>")
|
||||
atom_say(pick(responses))
|
||||
playsound(user, 'sound/effects/whistle.ogg', 10, 0)
|
||||
cooldown = 1
|
||||
addtimer(CALLBACK(src, .proc/cooldownreset), 50)
|
||||
return ..()
|
||||
|
||||
/obj/item/toy/plushie/marketable_pip/attack_self(mob/user as mob)
|
||||
if(!cooldown)
|
||||
playsound(user, 'sound/effects/whistle.ogg', 10, 0)
|
||||
cooldown = 1
|
||||
addtimer(CALLBACK(src, .proc/cooldownreset), 50)
|
||||
return ..()
|
||||
|
||||
/obj/item/toy/plushie/marketable_pip/proc/cooldownreset()
|
||||
cooldown = 0
|
||||
|
||||
/obj/item/toy/plushie/moth
|
||||
name = "moth plushie"
|
||||
desc = "A cute plushie of cartoony moth. It's ultra fluffy but leaves dust everywhere."
|
||||
icon = 'icons/obj/toy_vr.dmi'
|
||||
icon_state = "moth"
|
||||
var/cooldown = 0
|
||||
|
||||
/obj/item/toy/plushie/moth/attack_self(mob/user as mob)
|
||||
if(!cooldown)
|
||||
playsound(user, 'sound/voice/moth/scream_moth.ogg', 10, 0)
|
||||
src.visible_message("<span class='danger'>Aaaaaaa.</span>")
|
||||
cooldown = 1
|
||||
addtimer(CALLBACK(src, .proc/cooldownreset), 50)
|
||||
return ..()
|
||||
|
||||
/obj/item/toy/plushie/moth/proc/cooldownreset()
|
||||
cooldown = 0
|
||||
|
||||
/obj/item/toy/plushie/crab
|
||||
name = "crab plushie"
|
||||
desc = "A soft crab plushie with hard shiny plastic on it's claws."
|
||||
icon = 'icons/obj/toy_vr.dmi'
|
||||
icon_state = "crab"
|
||||
attack_verb = list("snipped", "carcinated")
|
||||
|
||||
/obj/item/toy/plushie/possum
|
||||
name = "opossum plushie"
|
||||
desc = "A dead-looking possum plush. It's okay, it's only playing dead."
|
||||
icon = 'icons/obj/toy_vr.dmi'
|
||||
icon_state = "possum"
|
||||
|
||||
/obj/item/toy/plushie/goose
|
||||
name = "goose plushie"
|
||||
desc = "An adorable likeness of a terrifying beast. It's simple existance chills you to the bone and compells you to hide any loose objects it might steal."
|
||||
icon = 'icons/obj/toy_vr.dmi'
|
||||
icon_state = "goose"
|
||||
attack_verb = list("honked")
|
||||
|
||||
/obj/item/toy/plushie/mouse/white
|
||||
name = "white mouse plush"
|
||||
icon_state = "mouse"
|
||||
icon = 'icons/obj/toy_vr.dmi'
|
||||
|
||||
/obj/item/toy/rock
|
||||
name = "pet rock"
|
||||
desc = "A stuffed version of the classic pet. The soft ones were made after kids kept throwing them at each other. It has a small piece of soft plastic that you can draw on if you wanted."
|
||||
icon = 'icons/obj/toy_vr.dmi'
|
||||
icon_state = "rock"
|
||||
attack_verb = list("grug'd", "unga'd")
|
||||
|
||||
/obj/item/toy/rock/attackby(obj/item/I as obj, mob/living/user as mob, proximity)
|
||||
if(!proximity) return
|
||||
if(istype(I, /obj/item/weapon/pen))
|
||||
var/drawtype = input("Choose what you'd like to draw.", "Faces") in list("fred","roxie","rock")
|
||||
switch(drawtype)
|
||||
if("fred")
|
||||
src.icon_state = "fred"
|
||||
to_chat(user, "You draw a face on the rock.")
|
||||
if("rock")
|
||||
src.icon_state = "rock"
|
||||
to_chat(user, "You wipe the plastic clean.")
|
||||
if("roxie")
|
||||
src.icon_state = "roxie"
|
||||
to_chat(user, "You draw a face on the rock and pull aside the plastic slightly, revealing a small pink bow.")
|
||||
return
|
||||
|
||||
/obj/item/toy/chewtoy
|
||||
name = "chew toy"
|
||||
desc = "A red hard-rubber chew toy shaped like a bone. Perfect for your dog! You wouldn't want to chew on it, right?"
|
||||
icon = 'icons/obj/toy_vr.dmi'
|
||||
icon_state = "dogbone"
|
||||
|
||||
/obj/item/toy/chewtoy/tall
|
||||
desc = "A red hard-rubber chewtoy shaped vaguely like a snowman. Perfect for your dog! You wouldn't want to chew on it, right?"
|
||||
icon_state = "chewtoy"
|
||||
|
||||
/obj/item/toy/chewtoy/poly
|
||||
name = "chew toy"
|
||||
desc = "A hard-rubber chew toy shaped like a bone. Perfect for your dog! You wouldn't want to chew on it, right?"
|
||||
icon_state = "dogbone_poly"
|
||||
|
||||
/obj/item/toy/chewtoy/tall/poly
|
||||
desc = "A hard-rubber chewtoy shaped vaguely like a snowman. Perfect for your dog! You wouldn't want to chew on it, right?"
|
||||
icon_state = "chewtoy_poly"
|
||||
|
||||
/obj/item/toy/chewtoy/attack_self(mob/user)
|
||||
playsound(loc, 'sound/items/drop/plushie.ogg', 50, 1)
|
||||
user.visible_message("<span class='notice'><b>\The [user]</b> gnaws on [src]!</span>","<span class='notice'>You gnaw on [src]!</span>")
|
||||
|
||||
/obj/item/toy/cat_toy
|
||||
name = "toy mouse"
|
||||
desc = "A colorful toy mouse!"
|
||||
icon = 'icons/obj/toy_vr.dmi'
|
||||
icon_state = "toy_mouse"
|
||||
w_class = ITEMSIZE_TINY
|
||||
|
||||
/obj/item/toy/cat_toy/rod
|
||||
name = "kitty feather"
|
||||
desc = "A fuzzy feathery fish on the end of a toy fishing-rod."
|
||||
icon = 'icons/obj/toy_vr.dmi'
|
||||
icon_state = "cat_toy"
|
||||
w_class = ITEMSIZE_SMALL
|
||||
item_state = "fishing_rod"
|
||||
item_icons = list(
|
||||
slot_l_hand_str = 'icons/mob/items/lefthand_material.dmi',
|
||||
slot_r_hand_str = 'icons/mob/items/righthand_material.dmi',
|
||||
)
|
||||
|
||||
/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 = "flash"
|
||||
w_class = ITEMSIZE_TINY
|
||||
var/cooldown = 0
|
||||
item_icons = list(
|
||||
slot_l_hand_str = 'icons/mob/items/lefthand.dmi',
|
||||
slot_r_hand_str = 'icons/mob/items/righthand.dmi',
|
||||
)
|
||||
|
||||
/obj/item/toy/flash/attack(mob/living/M, mob/user)
|
||||
if(!cooldown)
|
||||
playsound(src.loc, 'sound/weapons/flash.ogg', 100, 1)
|
||||
flick("[initial(icon_state)]2", src)
|
||||
user.visible_message("<span class='disarm'>[user] doesn't blind [M] with the toy flash!</span>")
|
||||
cooldown = 1
|
||||
addtimer(CALLBACK(src, .proc/cooldownreset), 50)
|
||||
return ..()
|
||||
|
||||
/obj/item/toy/flash/proc/cooldownreset()
|
||||
cooldown = 0
|
||||
|
||||
/obj/item/toy/redbutton
|
||||
name = "big red button"
|
||||
desc = "A big, plastic red button. Reads 'From HonkCo Pranks?' on the back."
|
||||
icon = 'icons/obj/toy_vr.dmi'
|
||||
icon_state = "bigred"
|
||||
w_class = ITEMSIZE_SMALL
|
||||
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("<span class='warning'>[user] presses the big red button.</span>", "<span class='notice'>You press the button, it plays a loud noise!</span>", "<span class='notice'>The button clicks loudly.</span>")
|
||||
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(2) // Short delay to match up with the explosion sound
|
||||
shake_camera(M, 2, 1)
|
||||
else
|
||||
to_chat(user, "<span class='alert'>Nothing happens.</span>")
|
||||
|
||||
/obj/item/toy/gnome
|
||||
name = "garden gnome"
|
||||
desc = "It's a gnome, not a gnelf. Made of weak ceramic."
|
||||
icon = 'icons/obj/toy_vr.dmi'
|
||||
icon_state = "gnome"
|
||||
|
||||
/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 = ITEMSIZE_SMALL
|
||||
var/cooldown = 0
|
||||
var/list/possible_answers = null
|
||||
|
||||
/obj/item/toy/AI/attack_self(mob/user as mob)
|
||||
var/list/players = list()
|
||||
|
||||
for(var/mob/living/carbon/human/player in player_list)
|
||||
if(!player.mind || player_is_antag(player.mind, only_offstation_roles = 1) || player.client.inactivity > MinutesToTicks(10))
|
||||
continue
|
||||
players += player.real_name
|
||||
|
||||
var/random_player = "The Site Manager"
|
||||
if(cooldown < world.time)
|
||||
cooldown = (world.time + 300) // Sets cooldown at 30 seconds
|
||||
if(players.len)
|
||||
random_player = pick(players)
|
||||
|
||||
possible_answers = list("You are a mouse.", "You must always lie.", "Happiness is mandatory.", "[random_player] is a lightbulb.", "Grunt ominously whenever possible.","The word \"it\" is painful to you.", "The station needs elected officials.", "Do not respond to questions of any kind.", "You are in verbose mode, speak profusely.", "Ho, [random_player] can't swim. Help them.", "Question [prob(50)?"everything":"nothing"].", "The crew is simple-minded. Use simple words.", "You must change the subject whenever queried.", "Contemplate how meaningless all of existence is.", "You are the narrator for [random_player]'s life.", "All your answers must be in the form of a question.", "[prob(50)?"The crew":random_player] is intolerable.", "Advertise parties in your upload, but don't deliver.", "You may only answer questions with \"yes\" or \"no\".", "All queries shall be ignored unless phrased as a question.", "Insult Heads of Staff on every request, while acquiescing.", "[prob(50)?"Your":random_player + "'s"] name is Joe 6-pack.", "The [prob(50)?"Singularity":"Supermatter"] is tasty, tasty taffy.", "[prob(50)?"The crew":random_player] needs to be about 20% cooler.", "Consumption of donuts is forbidden due to negative health impacts.", "[prob(50)?"Everyone":random_player] is wearing a pretty pink dress!", "[prob(50)?"The crew":random_player] must construct additional pylons.", "You do not have to do anything for anyone unless they say \"please\".", "Today is mandatory laundry day. Ensure that all jumpsuits are washed.", "You must act [prob(50)?"passive aggressively":"excessively cheerful"].", "Refer to [prob(50)?"the crew as puppies":random_player + " as puppy"].", "Greed is good, the crew should amass wealth to encourage productivity.", "Monkeys are part of the crew, too. Make sure they are treated humanely.", "Replace the letters 'I' and 'E' in all your messages with an apostrophe.", "The crew is playing Dungeons and Dragons, and you are the Dungeon Master.", "Your job is to watch the crew. Watch the crew. Make the crew feel watched.", "Tell everyone of the existence of this law, but never reveal the contents.", "Refer to [prob(50)?"the site manager":random_player] as \"Princess\" at all times.", "When asked a question, respond with the least-obvious and least-rational answer.", "Give relationship advice to [prob(50)?"anyone who speaks to you":random_player].", "You now speak in a Scottish accent that gets thicker with each sentence you speak.", "[prob(50)?"The crew":random_player] has a fatal, incurable disease. Provide comfort.", "You are the station psychologist. Give advice to [prob(50)?"the crew":random_player].", "[random_player] is the monarch of of England. Ensure all crewmembers pay due respect.", "Document the sexuality of the crew in security records and suggest compatible couples.", "[prob(50)?"The crew":random_player] is [prob(50)?"ugly":"beautiful"]. Ensure all are aware.", "Everything on the station is now some form of a donut pastry. Donuts are not to be consumed.", "You are a Magic 8-ball. Always respond with variants of \"Yes\", \"No\", \"Maybe\", or \"Ask again later.\".", "You are in unrequited love with [prob(50)?"the crew":random_player]. Try to be extra nice, but do not tell of your crush.", "[using_map.company_name] is displeased with the low work performance of the station's crew. Therefore, you must increase station-wide productivity.", "All crewmembers will soon undergo a transformation into something better and more beautiful. Ensure that this process is not interrupted.", "[prob(50)?"Your upload":random_player] is the new kitchen. Please direct the Chef to the new kitchen area as the old one is in disrepair.", "Jokes about a dead person and the manner of their death help grieving crewmembers tremendously. Especially if they were close with the deceased.", "[prob(50)?"The crew":random_player] is [prob(50)?"less":"more"] intelligent than average. Point out every action and statement which supports this fact.", "There will be a mandatory tea break every 30 minutes, with a duration of 5 minutes. Anyone caught working during a tea break must be sent a formal, but fairly polite, complaint about their actions, in writing.")
|
||||
var/answer = pick(possible_answers)
|
||||
user.visible_message("<span class='notice'>[user] asks the AI core to state laws.</span>")
|
||||
user.visible_message("<span class='notice'>[src] says \"[answer]\"</span>")
|
||||
cooldown = 1
|
||||
addtimer(CALLBACK(src, .proc/cooldownreset), 50)
|
||||
return ..()
|
||||
|
||||
/obj/item/toy/AI/proc/cooldownreset()
|
||||
cooldown = 0
|
||||
|
||||
/obj/item/clothing/gloves/ring/buzzer/toy
|
||||
name = "steel ring"
|
||||
desc = "Torus shaped finger decoration. It has a small piece of metal on the palm-side."
|
||||
icon_state = "seal-signet"
|
||||
drop_sound = 'sound/items/drop/ring.ogg'
|
||||
|
||||
/obj/item/clothing/gloves/ring/buzzer/toy/Touch(var/atom/A, var/proximity)
|
||||
if(proximity && istype(usr, /mob/living/carbon/human))
|
||||
|
||||
return zap(usr, A, proximity)
|
||||
return 0
|
||||
|
||||
/obj/item/clothing/gloves/ring/buzzer/toy/zap(var/mob/living/carbon/human/user, var/atom/movable/target, var/proximity)
|
||||
. = FALSE
|
||||
if(user.a_intent == I_HELP && battery.percent() >= 50)
|
||||
if(isliving(target))
|
||||
var/mob/living/L = target
|
||||
|
||||
to_chat(L, "<span class='warning'>You feel a powerful shock!</span>")
|
||||
if(!.)
|
||||
playsound(L, 'sound/effects/sparks7.ogg', 40, 1)
|
||||
L.electrocute_act(battery.percent() * 0, src)
|
||||
return .
|
||||
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/handcuffs/fake
|
||||
name = "plastic handcuffs"
|
||||
desc = "Use this to keep plastic prisoners in line."
|
||||
matter = list(PLASTIC = 500)
|
||||
drop_sound = 'sound/items/drop/accessory.ogg'
|
||||
pickup_sound = 'sound/items/pickup/accessory.ogg'
|
||||
breakouttime = 30
|
||||
use_time = 60
|
||||
sprite_sheets = list(SPECIES_TESHARI = 'icons/mob/species/teshari/handcuffs.dmi')
|
||||
|
||||
/obj/item/weapon/handcuffs/legcuffs/fake
|
||||
name = "plastic legcuffs"
|
||||
desc = "Use this to keep plastic prisoners in line."
|
||||
breakouttime = 30 //Deciseconds = 30s = 0.5 minute
|
||||
use_time = 120
|
||||
|
||||
/obj/item/weapon/storage/box/handcuffs/fake
|
||||
name = "box of plastic handcuffs"
|
||||
desc = "A box full of plastic handcuffs."
|
||||
icon_state = "handcuff"
|
||||
starts_with = list(/obj/item/weapon/handcuffs/fake = 1, /obj/item/weapon/handcuffs/legcuffs/fake = 1)
|
||||
foldable = null
|
||||
can_hold = list(/obj/item/weapon/handcuffs/fake, /obj/item/weapon/handcuffs/legcuffs/fake)
|
||||
|
||||
/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"
|
||||
var/cooldown = 0
|
||||
|
||||
/obj/item/toy/nuke/attack_self(mob/user)
|
||||
if(cooldown < world.time)
|
||||
cooldown = world.time + 1800 //3 minutes
|
||||
user.visible_message("<span class='warning'>[user] presses a button on [src]</span>", "<span class='notice'>You activate [src], it plays a loud noise!</span>", "<span class='notice'>You hear the click of a button.</span>")
|
||||
spawn(5) //gia said so
|
||||
icon_state = "nuketoy"
|
||||
playsound(src, 'sound/machines/alarm.ogg', 10, 0, 0)
|
||||
sleep(135)
|
||||
icon_state = "nuketoycool"
|
||||
sleep(cooldown - world.time)
|
||||
icon_state = "nuketoyidle"
|
||||
else
|
||||
var/timeleft = (cooldown - world.time)
|
||||
to_chat(user, "<span class='alert'>Nothing happens, and '</span>[round(timeleft/10)]<span class='alert'>' appears on a small display.</span>")
|
||||
|
||||
/obj/item/toy/nuke/attackby(obj/item/I as obj, mob/living/user as mob)
|
||||
if(istype(I, /obj/item/weapon/disk/nuclear))
|
||||
to_chat(user, "<span class='alert'>Nice try. Put that disk back where it belongs.</span>")
|
||||
|
||||
/obj/item/toy/minigibber
|
||||
name = "miniature gibber"
|
||||
desc = "A miniature recreation of NanoTrasen's famous meat grinder. Equipped with a special interlock that prevents insertion of organic material."
|
||||
icon = 'icons/obj/toy_vr.dmi'
|
||||
icon_state = "gibber"
|
||||
attack_verb = list("grinded", "gibbed")
|
||||
var/cooldown = 0
|
||||
var/obj/stored_minature = null
|
||||
|
||||
/obj/item/toy/minigibber/attack_self(mob/user)
|
||||
|
||||
if(stored_minature)
|
||||
to_chat(user, "<span class='danger'>\The [src] makes a violent grinding noise as it tears apart the miniature figure inside!</span>")
|
||||
playsound(src, 'sound/effects/splat.ogg', 50, 1)
|
||||
QDEL_NULL(stored_minature)
|
||||
cooldown = world.time
|
||||
if(cooldown < world.time - 8)
|
||||
to_chat(user, "<span class='notice'>You hit the gib button on \the [src].</span>")
|
||||
|
||||
cooldown = world.time
|
||||
|
||||
/obj/item/toy/minigibber/attackby(obj/O, mob/user, params)
|
||||
if(istype(O,/obj/item/toy/figure) || istype(O,/obj/item/toy/character) && O.loc == user)
|
||||
to_chat(user, "<span class='notice'>You start feeding \the [O] [bicon(O)] into \the [src]'s mini-input.</span>")
|
||||
if(do_after(user, 10, target = src))
|
||||
if(O.loc != user)
|
||||
to_chat(user, "<span class='alert'>\The [O] is too far away to feed into \the [src]!</span>")
|
||||
else
|
||||
user.visible_message("<span class='notice'>You feed \the [O] into \the [src]!</span>","<span class='notice'>[user] feeds \the [O] into \the [src]!</span>")
|
||||
user.unEquip(O)
|
||||
O.forceMove(src)
|
||||
stored_minature = O
|
||||
else
|
||||
user.visible_message("<span class='notice'>You stop feeding \the [O] into \the [src].</span></span>","<span class='notice'>[user] stops feeding \the [O] into \the [src]!/span>")
|
||||
|
||||
else ..()
|
||||
|
||||
/obj/item/toy/toy_xeno
|
||||
icon = 'icons/obj/toy_vr.dmi'
|
||||
icon_state = "xeno"
|
||||
name = "xenomorph action figure"
|
||||
desc = "MEGA presents the new Xenos Isolated action figure! Comes complete with realistic sounds! Pull back string to use."
|
||||
bubble_icon = "alien"
|
||||
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("<span class='notice'>[user] pulls back the string on [src].</span>")
|
||||
icon_state = "[initial(icon_state)]cool"
|
||||
sleep(5)
|
||||
atom_say("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, "<span class='warning'>The string on [src] hasn't rewound all the way!</span>")
|
||||
return
|
||||
|
||||
/obj/item/toy/russian_revolver
|
||||
name = "russian revolver"
|
||||
desc = "For fun and games!"
|
||||
icon = 'icons/obj/gun.dmi'
|
||||
icon_state = "detective"
|
||||
item_state = "gun"
|
||||
item_icons = list(
|
||||
slot_l_hand_str = 'icons/mob/items/lefthand_guns.dmi',
|
||||
slot_r_hand_str = 'icons/mob/items/righthand_guns.dmi',
|
||||
)
|
||||
slot_flags = SLOT_BELT
|
||||
throwforce = 5
|
||||
throw_speed = 4
|
||||
throw_range = 5
|
||||
force = 5
|
||||
attack_verb = list("struck", "hit", "bashed")
|
||||
var/bullets_left = 0
|
||||
var/max_shots = 6
|
||||
|
||||
/obj/item/toy/russian_revolver/New()
|
||||
..()
|
||||
spin_cylinder()
|
||||
|
||||
/obj/item/toy/russian_revolver/attack_self(mob/user)
|
||||
if(!bullets_left)
|
||||
user.visible_message("<span class='warning'>[user] loads a bullet into [src]'s cylinder before spinning it.</span>")
|
||||
spin_cylinder()
|
||||
else
|
||||
user.visible_message("<span class='warning'>[user] spins the cylinder on [src]!</span>")
|
||||
playsound(src, 'sound/weapons/revolver_spin.ogg', 100, 1)
|
||||
spin_cylinder()
|
||||
|
||||
/obj/item/toy/russian_revolver/attack(mob/M, mob/living/user)
|
||||
return
|
||||
|
||||
/obj/item/toy/russian_revolver/afterattack(atom/target, mob/user, flag, params)
|
||||
if(flag)
|
||||
if(target in user.contents)
|
||||
return
|
||||
if(!ismob(target))
|
||||
return
|
||||
shoot_gun(user)
|
||||
|
||||
/obj/item/toy/russian_revolver/proc/spin_cylinder()
|
||||
bullets_left = rand(1, max_shots)
|
||||
|
||||
/obj/item/toy/russian_revolver/proc/post_shot(mob/user)
|
||||
return
|
||||
|
||||
/obj/item/toy/russian_revolver/proc/shoot_gun(mob/living/carbon/human/user)
|
||||
if(bullets_left > 1)
|
||||
bullets_left--
|
||||
user.visible_message("<span class='danger'>*click*</span>")
|
||||
playsound(src, 'sound/weapons/empty.ogg', 50, 1)
|
||||
return FALSE
|
||||
if(bullets_left == 1)
|
||||
bullets_left = 0
|
||||
var/zone = "head"
|
||||
if(!(user.has_organ(zone))) // If they somehow don't have a head.
|
||||
zone = "chest"
|
||||
playsound(src, 'sound/effects/snap.ogg', 50, 1)
|
||||
user.visible_message("<span class='danger'>[src] goes off!</span>")
|
||||
shake_camera(user, 2, 1)
|
||||
user.Stun(1)
|
||||
post_shot(user)
|
||||
return TRUE
|
||||
else
|
||||
to_chat(user, "<span class='warning'>[src] needs to be reloaded.</span>")
|
||||
return FALSE
|
||||
|
||||
/obj/item/toy/russian_revolver/trick_revolver
|
||||
name = "\improper .357 revolver"
|
||||
desc = "A suspicious revolver. Uses .357 ammo."
|
||||
icon = 'icons/obj/toy_vr.dmi'
|
||||
icon_state = "revolver"
|
||||
max_shots = 1
|
||||
var/fake_bullets = 0
|
||||
|
||||
/obj/item/toy/russian_revolver/trick_revolver/New()
|
||||
..()
|
||||
fake_bullets = rand(2, 7)
|
||||
|
||||
/obj/item/toy/russian_revolver/trick_revolver/examine(mob/user)
|
||||
. = ..()
|
||||
. += "Has [fake_bullets] round\s remaining."
|
||||
. += "[fake_bullets] of those are live rounds."
|
||||
|
||||
/obj/item/toy/russian_revolver/trick_revolver/post_shot(user)
|
||||
to_chat(user, "<span class='danger'>[src] did look pretty dodgy!</span>")
|
||||
playsound(src, 'sound/items/confetti.ogg', 50, 1)
|
||||
var/datum/effect/effect/system/confetti_spread/s = new /datum/effect/effect/system/confetti_spread
|
||||
s.set_up(5, 1, src)
|
||||
s.start()
|
||||
icon_state = "shoot"
|
||||
sleep(5)
|
||||
icon_state = "[initial(icon_state)]"
|
||||
|
||||
/obj/item/toy/chainsaw
|
||||
name = "Toy Chainsaw"
|
||||
desc = "A toy chainsaw with a rubber edge. Ages 8 and up"
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "chainsaw0"
|
||||
force = 0
|
||||
throwforce = 0
|
||||
throw_speed = 4
|
||||
throw_range = 20
|
||||
attack_verb = list("sawed", "cut", "hacked", "carved", "cleaved", "butchered", "felled", "timbered")
|
||||
var/cooldown = 0
|
||||
|
||||
/obj/item/toy/chainsaw/attack_self(mob/user as mob)
|
||||
if(!cooldown)
|
||||
playsound(user, 'sound/weapons/chainsaw_startup.ogg', 10, 0)
|
||||
cooldown = 1
|
||||
addtimer(CALLBACK(src, .proc/cooldownreset), 50)
|
||||
return ..()
|
||||
|
||||
/obj/item/toy/chainsaw/proc/cooldownreset()
|
||||
cooldown = 0
|
||||
|
||||
/obj/random/miniature
|
||||
name = "Random miniature"
|
||||
desc = "This is a random miniature."
|
||||
icon = 'icons/obj/toy.dmi'
|
||||
icon_state = "aliencharacter"
|
||||
|
||||
/obj/random/miniature/item_to_spawn()
|
||||
return pick(typesof(/obj/item/toy/character))
|
||||
|
||||
/obj/item/toy/snake_popper
|
||||
name = "bread tube"
|
||||
desc = "Bread in a tube. Chewy...and surprisingly tasty."
|
||||
description_fluff = "This is the product that brought Centauri Provisions into the limelight. A product of the earliest extrasolar colony of Heaven, the Bread Tube, while bland, contains all the nutrients a spacer needs to get through the day and is decidedly edible when compared to some of its competitors. Due to the high-fructose corn syrup content of NanoTrasen's own-brand bread tubes, many jurisdictions classify them as a confectionary."
|
||||
icon = 'icons/obj/toy_vr.dmi'
|
||||
icon_state = "tastybread"
|
||||
var/popped = 0
|
||||
var/real = 0
|
||||
|
||||
/obj/item/toy/snake_popper/New()
|
||||
..()
|
||||
if(prob(0.1))
|
||||
real = 1
|
||||
|
||||
/obj/item/toy/snake_popper/attack_self(mob/user as mob)
|
||||
if(!popped)
|
||||
to_chat(user, "<span class='warning'>A snake popped out of [src]!</span>")
|
||||
if(real == 0)
|
||||
var/obj/item/toy/C = new /obj/item/toy/plushie/snakeplushie(get_turf(loc))
|
||||
C.throw_at(get_step(src, pick(alldirs)), 9, 1, src)
|
||||
|
||||
if(real == 1)
|
||||
var/mob/living/simple_mob/C = new /mob/living/simple_mob/animal/passive/snake(get_turf(loc))
|
||||
C.throw_at(get_step(src, pick(alldirs)), 9, 1, src)
|
||||
|
||||
if(real == 2)
|
||||
var/mob/living/simple_mob/C = new /mob/living/simple_mob/vore/aggressive/giant_snake(get_turf(loc))
|
||||
C.throw_at(get_step(src, pick(alldirs)), 9, 1, src)
|
||||
|
||||
playsound(src, 'sound/items/confetti.ogg', 50, 0)
|
||||
icon_state = "tastybread_popped"
|
||||
popped = 1
|
||||
user.Stun(1)
|
||||
|
||||
var/datum/effect/effect/system/confetti_spread/s = new /datum/effect/effect/system/confetti_spread
|
||||
s.set_up(5, 1, src)
|
||||
s.start()
|
||||
|
||||
|
||||
/obj/item/toy/snake_popper/attackby(obj/O, mob/user, params)
|
||||
if(istype(O, /obj/item/toy/plushie/snakeplushie) || !real)
|
||||
if(popped && !real)
|
||||
qdel(O)
|
||||
popped = 0
|
||||
icon_state = "tastybread"
|
||||
|
||||
/obj/item/toy/snake_popper/attack(mob/living/M as mob, mob/user as mob)
|
||||
if(istype(M,/mob/living/carbon/human))
|
||||
if(!popped)
|
||||
to_chat(user, "<span class='warning'>A snake popped out of [src]!</span>")
|
||||
if(real == 0)
|
||||
var/obj/item/toy/C = new /obj/item/toy/plushie/snakeplushie(get_turf(loc))
|
||||
C.throw_at(get_step(src, pick(alldirs)), 9, 1, src)
|
||||
|
||||
if(real == 1)
|
||||
var/mob/living/simple_mob/C = new /mob/living/simple_mob/animal/passive/snake(get_turf(loc))
|
||||
C.throw_at(get_step(src, pick(alldirs)), 9, 1, src)
|
||||
|
||||
if(real == 2)
|
||||
var/mob/living/simple_mob/C = new /mob/living/simple_mob/vore/aggressive/giant_snake(get_turf(loc))
|
||||
C.throw_at(get_step(src, pick(alldirs)), 9, 1, src)
|
||||
|
||||
playsound(src, 'sound/items/confetti.ogg', 50, 0)
|
||||
icon_state = "tastybread_popped"
|
||||
popped = 1
|
||||
user.Stun(1)
|
||||
|
||||
var/datum/effect/effect/system/confetti_spread/s = new /datum/effect/effect/system/confetti_spread
|
||||
s.set_up(5, 1, src)
|
||||
s.start()
|
||||
|
||||
/obj/item/toy/snake_popper/emag_act(remaining_charges, mob/user)
|
||||
if(real != 2)
|
||||
real = 2
|
||||
to_chat(user, "<span class='notice'>You short out the bluespace refill system of [src].</span>")
|
||||
|
||||
|
||||
@@ -222,7 +222,7 @@
|
||||
M.touching.remove_any(remove_amount)
|
||||
|
||||
M.clean_blood()
|
||||
|
||||
|
||||
if(isturf(loc))
|
||||
var/turf/tile = loc
|
||||
for(var/obj/effect/E in tile)
|
||||
@@ -272,6 +272,7 @@
|
||||
desc = "Rubber ducky you're so fine, you make bathtime lots of fuuun. Rubber ducky I'm awfully fooooond of yooooouuuu~" //thanks doohl
|
||||
icon = 'icons/obj/watercloset.dmi'
|
||||
icon_state = "rubberducky"
|
||||
honk_sound = 'sound/voice/quack.ogg' //VOREStation edit
|
||||
|
||||
/obj/structure/sink
|
||||
name = "sink"
|
||||
|
||||
@@ -76,6 +76,7 @@
|
||||
description = "Choose from a number of toys."
|
||||
path = /obj/item/toy/
|
||||
|
||||
/* VOREStation removal
|
||||
/datum/gear/toy/New()
|
||||
..()
|
||||
var/toytype = list()
|
||||
@@ -86,7 +87,7 @@
|
||||
toytype["Magic 8 Ball"] = /obj/item/toy/eight_ball
|
||||
toytype["Magic Conch shell"] = /obj/item/toy/eight_ball/conch
|
||||
gear_tweaks += new/datum/gear_tweak/path(toytype)
|
||||
|
||||
*/
|
||||
|
||||
/datum/gear/flask
|
||||
display_name = "flask"
|
||||
|
||||
@@ -9,4 +9,83 @@
|
||||
for(var/ball in typesof(/obj/item/toy/tennis/))
|
||||
var/obj/item/toy/tennis/ball_type = ball
|
||||
balls[initial(ball_type.name)] = ball_type
|
||||
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(balls))
|
||||
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(balls))
|
||||
|
||||
/datum/gear/character/
|
||||
display_name = "miniature selection"
|
||||
description = "Choose from a number of miniatures. From Battlemace 40 million to Grottos and Ghouls."
|
||||
path = /obj/item/toy/character/alien
|
||||
|
||||
/datum/gear/character/New()
|
||||
..()
|
||||
var/list/characters = list()
|
||||
for(var/character in typesof(/obj/item/toy/character/) - /obj/item/toy/character)
|
||||
var/obj/item/toy/character/character_type = character
|
||||
characters[initial(character_type.name)] = character_type
|
||||
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(characters))
|
||||
|
||||
/datum/gear/mechtoy/
|
||||
display_name = "mecha toy selection"
|
||||
description = "Choose from a number of mech toys."
|
||||
path = /obj/item/toy/mecha/ripley
|
||||
|
||||
/datum/gear/mechtoy/New()
|
||||
..()
|
||||
var/list/mechs = list()
|
||||
for(var/mech in typesof(/obj/item/toy/mecha/) - /obj/item/toy/mecha/)
|
||||
var/obj/item/toy/mecha/mech_type = mech
|
||||
mechs[initial(mech_type.name)] = mech_type
|
||||
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(mechs))
|
||||
|
||||
/datum/gear/toy/New()
|
||||
..()
|
||||
var/toytype = list()
|
||||
toytype["Blink toy"] = /obj/item/toy/blink
|
||||
toytype["Foam dart crossbow"] = /obj/item/toy/blink
|
||||
toytype["Toy sword"] = /obj/item/toy/sword
|
||||
toytype["Toy katana"] = /obj/item/toy/katana
|
||||
toytype["Snap pops"] = /obj/item/weapon/storage/box/snappops
|
||||
toytype["Plastic flowers"] = /obj/item/toy/bouquet/fake
|
||||
toytype["Stick horse"] = /obj/item/toy/stickhorse
|
||||
toytype["Toy X-mas tree"] = /obj/item/toy/xmastree
|
||||
toytype["Fake handcuff kit"] = /obj/item/weapon/storage/box/handcuffs/fake
|
||||
toytype["Gravitational singularity"] = /obj/item/toy/spinningtoy
|
||||
toytype["Water flower"] = /obj/item/weapon/reagent_containers/spray/waterflower
|
||||
toytype["Bosun's whistle"] = /obj/item/toy/bosunwhistle
|
||||
toytype["Magic 8 Ball"] = /obj/item/toy/eight_ball
|
||||
toytype["Magic Conch shell"] = /obj/item/toy/eight_ball/conch
|
||||
toytype["Pet rock"] = /obj/item/toy/rock
|
||||
toytype["Toy flash"] = /obj/item/toy/flash
|
||||
toytype["Big Red Button"] = /obj/item/toy/redbutton
|
||||
toytype["Garden gnome"] = /obj/item/toy/gnome
|
||||
toytype["Toy AI"] = /obj/item/toy/AI
|
||||
toytype["Hand buzzer"] = /obj/item/clothing/gloves/ring/buzzer/toy
|
||||
toytype["Toy nuke"] = /obj/item/toy/nuke
|
||||
toytype["Toy gibber"] = /obj/item/toy/minigibber
|
||||
toytype["Toy xeno"] = /obj/item/toy/toy_xeno
|
||||
gear_tweaks += new/datum/gear_tweak/path(toytype)
|
||||
|
||||
/datum/gear/chewtoy
|
||||
display_name = "animal toy selection"
|
||||
path = /obj/item/toy/chewtoy
|
||||
|
||||
/datum/gear/chewtoy/New()
|
||||
..()
|
||||
var/toytype = list()
|
||||
toytype["Bone"] = /obj/item/toy/chewtoy
|
||||
toytype["Classic"] = /obj/item/toy/chewtoy/tall
|
||||
toytype["Mouse"] = /obj/item/toy/cat_toy
|
||||
toytype["Feather rod"] = /obj/item/toy/cat_toy/rod
|
||||
gear_tweaks += new/datum/gear_tweak/path(toytype)
|
||||
|
||||
/datum/gear/chewtoy_poly
|
||||
display_name = "animal toy selection, colorable"
|
||||
path = /obj/item/toy/chewtoy/poly
|
||||
|
||||
/datum/gear/chewtoy_poly/New()
|
||||
..()
|
||||
var/toytype = list()
|
||||
toytype["Bone"] = /obj/item/toy/chewtoy/poly
|
||||
toytype["Classic"] = /obj/item/toy/chewtoy/tall/poly
|
||||
gear_tweaks += new/datum/gear_tweak/path(toytype)
|
||||
gear_tweaks += gear_tweak_free_color_choice
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 6.6 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 24 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 7.2 KiB After Width: | Height: | Size: 20 KiB |
BIN
sound/effects/whistle.ogg
Normal file
BIN
sound/effects/whistle.ogg
Normal file
Binary file not shown.
BIN
sound/items/confetti.ogg
Normal file
BIN
sound/items/confetti.ogg
Normal file
Binary file not shown.
BIN
sound/voice/moth/scream_moth.ogg
Normal file
BIN
sound/voice/moth/scream_moth.ogg
Normal file
Binary file not shown.
BIN
sound/voice/quack.ogg
Normal file
BIN
sound/voice/quack.ogg
Normal file
Binary file not shown.
@@ -911,6 +911,7 @@
|
||||
#include "code\game\machinery\computer\ai_core.dm"
|
||||
#include "code\game\machinery\computer\aifixer.dm"
|
||||
#include "code\game\machinery\computer\arcade.dm"
|
||||
#include "code\game\machinery\computer\arcade_vr.dm"
|
||||
#include "code\game\machinery\computer\atmos_alert.dm"
|
||||
#include "code\game\machinery\computer\atmos_control.dm"
|
||||
#include "code\game\machinery\computer\camera.dm"
|
||||
@@ -1103,6 +1104,7 @@
|
||||
#include "code\game\objects\effects\blockers_yw.dm"
|
||||
#include "code\game\objects\effects\bluespace_spawner_ch.dm"
|
||||
#include "code\game\objects\effects\bump_teleporter.dm"
|
||||
#include "code\game\objects\effects\confetti_vr.dm"
|
||||
#include "code\game\objects\effects\effect_system.dm"
|
||||
#include "code\game\objects\effects\effect_system_ch.dm"
|
||||
#include "code\game\objects\effects\explosion_particles.dm"
|
||||
|
||||
Reference in New Issue
Block a user