mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-17 01:48:49 +01:00
Adds a pink and a red heart balloon, for valentine's decorations! Also added them to the random balloon pool so they may show up at random now and again. --------- Signed-off-by: Fyni <itsfyni@gmail.com> Co-authored-by: Cody Brittain <1779662+Generalcamo@users.noreply.github.com>
1666 lines
59 KiB
Plaintext
1666 lines
59 KiB
Plaintext
/* Toys!
|
|
* Contains:
|
|
* * Balloons
|
|
* * Fake telebeacon
|
|
* * Fake singularity
|
|
* * Toy gun
|
|
* * Toy crossbow
|
|
* * Toy swords
|
|
* * Toy bosun's whistle
|
|
* * Toy mechs
|
|
* * Snap pops
|
|
* * Water flower
|
|
* * Therapy dolls
|
|
* * Toddler doll
|
|
* * Inflatable duck
|
|
* * Action figures
|
|
* * Plushies
|
|
* * Toy cult sword
|
|
* * Ring bell
|
|
* * Chess Pieces
|
|
* * Stress ball
|
|
*/
|
|
|
|
|
|
/obj/item/toy
|
|
icon = 'icons/obj/toy.dmi'
|
|
item_icons = list(
|
|
slot_l_hand_str = 'icons/mob/items/lefthand_toy.dmi',
|
|
slot_r_hand_str = 'icons/mob/items/righthand_toy.dmi',
|
|
)
|
|
throwforce = 0
|
|
throw_speed = 4
|
|
throw_range = 20
|
|
force = 0
|
|
drop_sound = 'sound/items/drop/gloves.ogg'
|
|
pickup_sound = 'sound/items/pickup/gloves.ogg'
|
|
|
|
/*
|
|
* Water Balloons
|
|
*/
|
|
/obj/item/toy/waterballoon
|
|
name = "water balloon"
|
|
desc = "A translucent balloon. There's nothing in it."
|
|
icon_state = "waterballoon-e"
|
|
item_state = "waterballoon-e"
|
|
drop_sound = 'sound/items/drop/rubber.ogg'
|
|
pickup_sound = 'sound/items/pickup/rubber.ogg'
|
|
|
|
/obj/item/toy/waterballoon/New()
|
|
var/datum/reagents/R = new/datum/reagents(10)
|
|
reagents = R
|
|
R.my_atom = src
|
|
|
|
/obj/item/toy/waterballoon/attack(mob/living/target_mob, mob/living/user, target_zone)
|
|
return
|
|
|
|
/obj/item/toy/waterballoon/afterattack(atom/A as mob|obj, mob/user as mob, proximity)
|
|
if(!proximity) return
|
|
if (istype(A, /obj/structure/reagent_dispensers/watertank) && get_dist(src,A) <= 1)
|
|
A.reagents.trans_to_obj(src, 10)
|
|
to_chat(user, SPAN_NOTICE("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/waterballoon/attackby(obj/item/attacking_item, mob/user)
|
|
if(istype(attacking_item, /obj/item/reagent_containers/glass))
|
|
if(attacking_item.reagents)
|
|
if(attacking_item.reagents.total_volume < 1)
|
|
to_chat(user, "The [attacking_item] is empty.")
|
|
else if(attacking_item.reagents.total_volume >= 1)
|
|
if(attacking_item.reagents.has_reagent(/singleton/reagent/acid/polyacid, 1))
|
|
to_chat(user, "The acid chews through the balloon!")
|
|
attacking_item.reagents.splash(user, reagents.total_volume)
|
|
qdel(src)
|
|
else
|
|
src.desc = "A translucent balloon with some form of liquid sloshing around in it."
|
|
to_chat(user, SPAN_NOTICE("You fill the balloon with the contents of [attacking_item]."))
|
|
attacking_item.reagents.trans_to_obj(src, 10)
|
|
src.update_icon()
|
|
return TRUE
|
|
|
|
/obj/item/toy/waterballoon/throw_impact(atom/hit_atom)
|
|
if(src.reagents.total_volume >= 1)
|
|
src.visible_message(SPAN_WARNING("\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"
|
|
QDEL_IN(src, 5)
|
|
return
|
|
|
|
/obj/item/toy/waterballoon/update_icon()
|
|
if(src.reagents.total_volume >= 1)
|
|
icon_state = "waterballoon"
|
|
else
|
|
icon_state = "waterballoon-e"
|
|
item_state = icon_state
|
|
|
|
/*
|
|
* Balloons
|
|
*/
|
|
|
|
#define BALLOON_NORMAL 0
|
|
#define BALLOON_BLOW 1
|
|
#define BALLOON_BURST 2
|
|
|
|
/obj/item/toy/balloon
|
|
name = "balloon"
|
|
desc_extended = "Thanks to the joint effort of the Research and Atmospherics teams, station enviroments have been set to allow balloons to float without helium. Look, it was the end of the month and we went under budget."
|
|
drop_sound = 'sound/items/drop/rubber.ogg'
|
|
pickup_sound = 'sound/items/pickup/rubber.ogg'
|
|
w_class = WEIGHT_CLASS_HUGE
|
|
var/datum/gas_mixture/air_contents = null
|
|
var/status = 0 // 0 = normal, 1 = blow, 2 = burst
|
|
|
|
/obj/item/toy/balloon/mechanics_hints(mob/user, distance, is_adjacent)
|
|
. += ..()
|
|
. += "You can fill it up with different gases using a tank."
|
|
|
|
/obj/item/toy/balloon/attack_self(mob/user as mob)
|
|
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
|
|
if(user.a_intent == I_HELP)
|
|
user.visible_message(SPAN_NOTICE("<b>\The [user]</b> pokes [src]!"), SPAN_NOTICE("You poke [src]!"))
|
|
else if (user.a_intent == I_HURT)
|
|
user.visible_message(SPAN_WARNING("<b>\The [user]</b> punches [src]!"), SPAN_WARNING("You punch [src]!"))
|
|
else if (user.a_intent == I_GRAB)
|
|
if(prob(66))
|
|
user.visible_message(SPAN_WARNING("<b>\The [user]</b> attempts to pop [src]!"), SPAN_WARNING("You attempt to pop [src]!"))
|
|
else
|
|
user.visible_message(SPAN_WARNING("<b>\The [user]</b> pops [src]!"), SPAN_WARNING("You pop [src]!"))
|
|
burst()
|
|
else
|
|
user.visible_message(SPAN_NOTICE("<b>\The [user]</b> lightly bats the [src]."),
|
|
SPAN_NOTICE("You lightly bat the [src]."))
|
|
|
|
/obj/item/toy/balloon/update_icon()
|
|
switch(status)
|
|
if(BALLOON_BURST)
|
|
if(("[initial(icon_state)]_burst") in icon_states(icon))
|
|
icon_state = "[initial(icon_state)]_burst"
|
|
item_state = icon_state
|
|
else
|
|
qdel(src) // Just qdel it if it doesn't have a burst state.
|
|
if(BALLOON_BLOW)
|
|
if(("[initial(icon_state)]_blow") in icon_states(icon)) //Only give blow icon_state if it has one. For those who can't be bothered to sprite. (Also a catch to prevent invisible sprites.)
|
|
icon_state = "[initial(icon_state)]_blow"
|
|
update_held_icon()
|
|
|
|
/obj/item/toy/balloon/proc/blow(obj/item/tank/T)
|
|
if(status == BALLOON_BURST)
|
|
return
|
|
else
|
|
src.air_contents = T.remove_air_volume(3)
|
|
status = BALLOON_BLOW
|
|
update_icon()
|
|
|
|
/obj/item/toy/balloon/proc/burst()
|
|
playsound(src, 'sound/weapons/gunshot/gunshot1.ogg', 100, 1)
|
|
status = BALLOON_BURST
|
|
update_icon()
|
|
if(air_contents)
|
|
loc.assume_air(air_contents)
|
|
|
|
/obj/item/toy/balloon/ex_act(severity)
|
|
burst()
|
|
switch(severity)
|
|
if(1)
|
|
qdel(src)
|
|
if(2)
|
|
if(prob(50))
|
|
qdel(src)
|
|
|
|
/obj/item/toy/balloon/bullet_act(obj/projectile/hitting_projectile, def_zone, piercing_hit)
|
|
. = ..()
|
|
if(. != BULLET_ACT_HIT)
|
|
return .
|
|
|
|
burst()
|
|
|
|
/obj/item/toy/balloon/fire_act(temperature, volume)
|
|
. = ..()
|
|
|
|
if(temperature > T0C+100)
|
|
burst()
|
|
return
|
|
|
|
/obj/item/toy/balloon/attackby(obj/item/attacking_item, mob/user)
|
|
if(attacking_item.can_puncture())
|
|
burst()
|
|
return TRUE
|
|
|
|
/obj/item/toy/balloon/latex
|
|
desc = "Leaves a starchy taste in your mouth after blowing into it."
|
|
icon_state = "latexballoon"
|
|
item_state = "latexballoon"
|
|
|
|
/obj/item/toy/balloon/latex/nitrile
|
|
desc = "I hope you aren't going to re-use these for medical purposes."
|
|
icon_state = "nitrileballoon"
|
|
item_state = "nitrileballoon"
|
|
|
|
/obj/item/toy/balloon/syndicate
|
|
name = "'criminal' balloon"
|
|
desc = "Across the balloon is printed: \"FUK CAPITALISM!11!\""
|
|
icon_state = "syndballoon"
|
|
item_state = "syndballoon"
|
|
|
|
/obj/item/toy/balloon/nanotrasen
|
|
name = "'motivational' balloon"
|
|
desc = "Across the balloon is printed: \"Man, I love corporate soooo much. I use only brand name products. You have NO idea.\""
|
|
icon_state = "ntballoon"
|
|
item_state = "ntballoon"
|
|
|
|
/obj/item/toy/balloon/fellowship
|
|
name = "fellowship balloon"
|
|
desc = "Across the balloon is printed: \"Fellowship R Friends!\""
|
|
icon_state = "fellowshipballoon"
|
|
item_state = "fellowshipballoon"
|
|
|
|
/obj/item/toy/balloon/fellowshiphead
|
|
name = "fellowship head balloon"
|
|
desc = "Across the balloon is printed: \"Follow Fellows Forwards With The Fellowship!\""
|
|
icon_state = "fellowshipheadballoon"
|
|
item_state = "fellowshipheadballoon"
|
|
|
|
/obj/item/toy/balloon/contender
|
|
name = "contender balloon"
|
|
desc = "Across the balloon is printed: \"Contenders R Cool!\""
|
|
icon_state = "contenderballoon"
|
|
item_state = "contenderballoon"
|
|
|
|
/obj/item/toy/balloon/contenderhead
|
|
name = "contender head balloon"
|
|
desc = "Across the balloon is printed: \"Converge With Comrades in the Contenders!\""
|
|
icon_state = "contenderheadballoon"
|
|
item_state = "contenderheadballoon"
|
|
|
|
/obj/item/toy/balloon/bat
|
|
name = "giant bat balloon"
|
|
desc = "A large, kitschy balloon in the shape of a spooky bat with orange eyes."
|
|
desc_extended = "There's a tag that reads: \"Apparition Halloween LLC.\""
|
|
icon_state = "batballoon"
|
|
|
|
/obj/item/toy/balloon/ghost
|
|
name = "giant ghost balloon"
|
|
desc = "Oh no, it's a ghost! Oh wait, it's just a kitschy balloon. Phew!"
|
|
desc_extended = "There's a tag that reads: \"Apparition Halloween LLC.\""
|
|
icon_state = "ghostballoon"
|
|
|
|
/obj/item/toy/balloon/heart/red
|
|
name = "red heart balloon"
|
|
desc = "A big red balloon in a traditional heart shape. Represents love, not medical work!"
|
|
icon_state = "heartballoonred"
|
|
|
|
/obj/item/toy/balloon/heart/pink
|
|
name = "pink heart balloon"
|
|
desc = "A big pink balloon in a traditional heart shape. Represents love, not medical work!"
|
|
icon_state = "heartballoonpink"
|
|
|
|
/obj/item/toy/balloon/color /// To color it, VV the 'color' var with a hex color code with the # included.
|
|
desc = "It's a plain little balloon. Comes in many colors!"
|
|
icon_state = "colorballoon"
|
|
item_state = "colorballoon"
|
|
build_from_parts = TRUE
|
|
worn_overlay = "string"
|
|
randpixel = 5
|
|
|
|
/obj/item/toy/balloon/color/Initialize()
|
|
. = ..()
|
|
if(build_from_parts)
|
|
color = pick(COLOR_BLUE, COLOR_RED, COLOR_PURPLE, COLOR_BROWN, COLOR_GREEN, COLOR_CYAN, COLOR_YELLOW)
|
|
update_icon()
|
|
randpixel_xy()
|
|
|
|
/obj/item/toy/balloon/color/update_icon() // Only color the balloon, not the string.
|
|
..()
|
|
if(status == BALLOON_BURST)
|
|
worn_overlay = null
|
|
CutOverlays()
|
|
if(worn_overlay)
|
|
AddOverlays(overlay_image(icon, "[initial(icon_state)]_[worn_overlay]", flags=RESET_COLOR))
|
|
|
|
#undef BALLOON_NORMAL
|
|
#undef BALLOON_BLOW
|
|
#undef BALLOON_BURST
|
|
|
|
/*
|
|
* Fake telebeacon
|
|
*/
|
|
/obj/item/toy/blink
|
|
name = "electronic blink toy game"
|
|
desc = "Blink. Blink. Blink. Ages 8 and up."
|
|
icon = 'icons/obj/radio.dmi'
|
|
icon_state = "beacon"
|
|
item_state = "signaler"
|
|
contained_sprite = TRUE
|
|
|
|
/*
|
|
* Fake singularity
|
|
*/
|
|
/obj/item/toy/spinningtoy
|
|
name = "gravitational singularity"
|
|
desc = "\"Singulo\" brand spinning toy."
|
|
icon = 'icons/obj/singularity.dmi'
|
|
icon_state = "singularity_s1"
|
|
|
|
/*
|
|
* Comic books
|
|
*/
|
|
/obj/item/toy/comic
|
|
name = "comic book"
|
|
desc = "A magazine presenting a fictional story through a sequence of images. Perfect for those long, boring shifts."
|
|
w_class = WEIGHT_CLASS_SMALL
|
|
icon = 'icons/obj/library.dmi'
|
|
contained_sprite = TRUE
|
|
icon_state = "comic"
|
|
item_state = "comic"
|
|
drop_sound = 'sound/items/drop/paper.ogg'
|
|
pickup_sound = 'sound/items/pickup/paper.ogg'
|
|
|
|
/obj/item/toy/comic/inspector
|
|
name = "inspector 404 manga"
|
|
desc = "Inspector 404 follows the adventures of the titular I404, a shell inspector from Konyang. This issue, #67, follows the \
|
|
404, also known as Kyung-Sun's quest to bring down the corrupt Superintendent Hayashi."
|
|
icon_state = "comic_inspector"
|
|
item_state = "comic_inspector"
|
|
|
|
/obj/item/toy/comic/stormman
|
|
name = "stormman manga"
|
|
desc = "Stormman, often stylized as STORMMAN! is one of Konyang's most beloved anime series, following a masked superhero named Stormman \
|
|
who has the power to harness the weather to defend his homeworld while keeping his secret identity. Since its release, all kinds of merchandise \
|
|
have been made, including a conversion of the show to a paperback manga."
|
|
icon_state = "comic_stormman"
|
|
item_state = "comic_stormman"
|
|
|
|
/obj/item/toy/comic/outlandish_tales
|
|
name = "outlandish tales magazine"
|
|
desc = "A magazine specialized in publishing Tajaran Otherworldly Literature stories. The periodical magazine features texts submitted by amateur and established writers alike. \
|
|
Since it is printed using cheap, recycled paper, outlandish tales is sold for a couple of credits on the streets of Little Adhomai. The magazine also has a section dedicated to \
|
|
exploring the urban legends and mysteries of Mendell City."
|
|
desc_extended = "Influenced by recent events and the growing interest in urban legends, Little Adhomai became the birthplace of Tajaran Otherworldly Literature. This literary genre combines \
|
|
aspects of fantasy, horror, and speculative fiction alongside Adhomian paranormal elements, frequently reimagining mythological creatures and events. Tajaran Otherworldly texts are usually \
|
|
published in magazines or on extranet sites."
|
|
icon_state = "comicoutlandish"
|
|
item_state = "comic"
|
|
|
|
/obj/item/toy/comic/azmarian
|
|
name = "az'marian comic"
|
|
desc = "A comic book series revolving around a superhero from Az'Mar, popular in the New Kingdom."
|
|
icon_state = "comicazmarian"
|
|
item_state = "comic"
|
|
|
|
/obj/item/toy/comic/azmarian/issue_1
|
|
desc_extended = "Issue 1 - The Az'Marian Landing! - In this issue, the would-be hero departs from Az'Mar and lands in a war-torn \
|
|
town in the outskirts of the Kingdom, witnessing the townspeople terrorised by a Zhan'Khazan maniacal terrorist. After mutilating \
|
|
his body with alien technology and even cutting off his own arms to replace with robotic equivalents, the cybernetically enhanced \
|
|
Corporal Khara'zan will not let his reign of terror be stopped easily. Will the visitor from Az'mar manage to stand in his way and prevail?"
|
|
|
|
/obj/item/toy/comic/azmarian/issue_2
|
|
desc_extended = "Issue 2 - The Road Towards A Dark Future - In this issue, the Az'Marian meets the local nobility whom he had saved from \
|
|
terror, learning that the Kingdom is threatened on all fronts. The superhero embarks on a journey through bandit-infested lands towards the \
|
|
headquarters of evil, meeting an unlikely ally and his band of friends. However, all is not what it seems, and the superhero will soon face \
|
|
a threat that once welcomed him with open arms. A treacherous plot, an ally destined by S'rendarr, and the darkness encroaching; the superhero \
|
|
faces the modern threat of depraved Tajara."
|
|
|
|
/obj/item/toy/comic/azmarian/issue_3
|
|
desc_extended = "Issue 3 - The Swamp Debacle - In this issue, the Az'Marian and his loyal but dim-witted sidekick Murr'zhul reach a poisonous \
|
|
swamp polluted by waste-producing factories. A chemical-obsessed scientist looks to experiment and find the perfect poison for his evil deeds, \
|
|
killing the surrounding nature and turning residents sickly. A lumbering creature hiding in the swamp caves, a mad researcher about to find the \
|
|
perfect toxin, and the duo seeking to halt his plans. Will they find a way to shut him down?"
|
|
|
|
/obj/item/toy/comic/azmarian/issue_4
|
|
desc_extended = "Issue 4 - The Den of Evil! - In this issue, the hero and his loyal but dim-witted sidekick Murr'zhul reach the stronghold of \
|
|
the retreating Corporal Khara'zan. The superhero uncovers a sinister plot orchestrated by the Corporal's superior to turn all of the local living \
|
|
beings into cyborgs. The leader, Director Shul'tyz, is not yet aware of the Az'Marian's presence, and the time is ripe. Met with a slumbering horde \
|
|
of cybernetic ha'rrons, schlorrgos and even Tajara, the superhero encounters a threat that will truly test his mettle."
|
|
|
|
/obj/item/toy/comic/azmarian/issue_5
|
|
desc_extended = "Issue 5 - Path to Recovery - In this issue, the hero, who has faced a successful confrontation with Director Shul'tyz, managed to \
|
|
free the local populace of cybernetic mind control, but at a heavy price. The syringe that was shot into him started coursing through his veins, preventing \
|
|
him from using his powers in a rapidly degrading state. His loyal sidekick Murr'zhul helps bring the hero to the capital of the ancient Kingdom to seek aid. \
|
|
Met with internal politics, a mixed reception, sinister plots and a meeting with the King, will the hero find a way to recover from the illness that plagues him?"
|
|
|
|
/obj/item/toy/comic/azmarian/issue_6
|
|
desc_extended = "Issue 6 - The Pilgrimage - Steppe Trouble! - In this issue, the hero and his loyal but dim-witted sidekick Murr'zhul embark on a journey \
|
|
to a sacred shrine in the mountains built by the early Ancient Tajara. Having received a blessing to prevent his state from degrading from the local priests, \
|
|
the hero has little time to waste before the blessing wanes. A meeting with wandering nomads, an audience with their ruler, and a perilous journey across \
|
|
the steppes leads the Az'Marian to face many decisions and challenges as the reality of the nomads comes to light. Deprived of his powers, will he and his \
|
|
trusted Hharar side-kick manage to reach the mountains?"
|
|
|
|
/obj/item/toy/comic/azmarian/issue_7
|
|
desc_extended = "Issue 7 - The Pilgrimage Pt. 2 - Mountain Survival - In this issue, the hero and his loyal but dim-witted sidekick Murr'zhul reach \
|
|
the mountains that contain the ancient shrine of the Suns, where he would be able to recover from his illness caused by Director Shul'tyz. Trailed \
|
|
by Sham'tyrs, facing freezing winds and snow, the two will trek to reach the shrine in hope of recovery. Bandits encampments, a village in need of help, \
|
|
a chance encounter with the S'Mara, and a shape-shifting spy amongst the Sham'tyrs, will the heroes make their way in one piece?"
|
|
|
|
/obj/item/toy/comic/azmarian/issue_8
|
|
desc_extended = "Issue 8 - The Shrine - In this issue, the hero and his loyal but dim-witted sidekick Murr'zhul meet the Parivara at the ancient shrine. \
|
|
Tended to by the Sun Sister with the blessing of Messa, the Az'Marian manages to recover from his affliction over the course of a week. He learns of an \
|
|
evil plan staged by a group of Cae'rrin living in caves nearby to desecrate the shrine and eat its attendants, and the two embark on a journey to put a \
|
|
stop to this plan. Already aware of the Az'Marian's presence from their spy, they begin to set up traps and occult rituals to prevent him from even reaching \
|
|
the caves. Forces of Raskara, shape-shifting creatures, dastardly traps and true evil lurking within, the Az'Marian and his sidekick will have to use their \
|
|
newly regained powers to their fullest."
|
|
|
|
/obj/item/toy/comic/witchfinder
|
|
name = "Witchfinder novel"
|
|
desc = "A popular genre of Dominian mystery literature, glorifying the Tribunal Investigations Constabulary and the work they do in \
|
|
defending the souls of the people of the Empire."
|
|
desc_extended = "Popular throughout the empire, witchfinder novels can range from schlock aimed at younger audiences to monstrous tomes dedicated to the \
|
|
purportedly real-life escapades of existing witchfinders. No matter their status as educational fiction or fact, every one has two things in common: the \
|
|
common rituals of the Constabulary, such as exorcisms and witchfindings, and a carefully-screened dose of indoctrination into the Moroz Holy Tribunal. Popular \
|
|
authors of witchfinder novels, such as Novi Jadran's Andrija Jurina, even travel abroad as honored servants of His Imperial Majesty Boleslaw Keeser, both to \
|
|
promote Dominian arts among their foreign partners and to proselytize their state religion to eager masses."
|
|
icon_state = "witchfindernovel"
|
|
item_state = "book"
|
|
|
|
/*
|
|
* Magazines
|
|
*/
|
|
|
|
/obj/item/toy/comic/magazine/horticulturetoday
|
|
name = "horticulture today! magazine"
|
|
desc = "A staple publication of all things horticulture."
|
|
desc_extended = "One part magazine, one part scientific journal, Horticulture Today! has been the staple source for horticulture news for the last 150 years. Its found \
|
|
itself in every unconnected station, frontier colony, and doctors office across the spur. The magazine's fame largely comes from its writing, maintaining a perfect blend \
|
|
of entertaining commentary and nuanced summaries of recent discoveries."
|
|
icon_state = "horticulture1"
|
|
item_state = "horticulture"
|
|
|
|
/obj/item/toy/comic/magazine/horticulturetoday/issue1
|
|
desc = "A staple publication of all things horticulture. This issue is about sunflowers."
|
|
icon_state = "horticulture1"
|
|
|
|
/obj/item/toy/comic/magazine/horticulturetoday/issue2
|
|
desc = "A staple publication of all things horticulture. This issue is about root systems."
|
|
icon_state = "horticulture2"
|
|
|
|
/obj/item/toy/comic/magazine/horticulturetoday/issue3
|
|
desc = "A staple publication of all things horticulture. This issue is about garden flowers."
|
|
icon_state = "horticulture3"
|
|
|
|
/obj/item/toy/comic/magazine/horticulturetoday/issue4
|
|
desc = "A staple publication of all things horticulture. This issue is about wild flowers."
|
|
icon_state = "horticulture4"
|
|
|
|
/obj/item/toy/comic/magazine/horticulturetoday/issue5
|
|
desc = "A staple publication of all things horticulture. This issue is about tomatoes of all kinds."
|
|
icon_state = "horticulture5"
|
|
|
|
/obj/item/toy/comic/magazine/horticulturetoday/issue6
|
|
desc = "A staple publication of all things horticulture. This issue is about the genus Allium. Everything from Onions to Leeks."
|
|
icon_state = "horticulture6"
|
|
|
|
//
|
|
// Toy Crossbows
|
|
//
|
|
/obj/item/toy/crossbow
|
|
name = "foam dart crossbow"
|
|
desc = "A foam dart crossbow."
|
|
icon = 'icons/obj/guns/crossbow.dmi'
|
|
icon_state = "crossbow"
|
|
item_state = "crossbow"
|
|
slot_flags = SLOT_BELT | SLOT_HOLSTER
|
|
drop_sound = 'sound/items/drop/gun.ogg'
|
|
pickup_sound = 'sound/items/pickup/gun.ogg'
|
|
contained_sprite = TRUE
|
|
w_class = WEIGHT_CLASS_SMALL
|
|
attack_verb = list("attacked", "struck", "hit")
|
|
var/dart_count = 5
|
|
|
|
/obj/item/toy/crossbow/feedback_hints(mob/user, distance, is_adjacent)
|
|
. += ..()
|
|
if(distance <= 2 && dart_count)
|
|
. += "\The [src] is loaded with [dart_count] foam dart\s."
|
|
|
|
/obj/item/toy/crossbow/attackby(obj/item/attacking_item, mob/user)
|
|
if(istype(attacking_item, /obj/item/toy/ammo/crossbow))
|
|
if(dart_count <= 4)
|
|
user.drop_from_inventory(attacking_item, src)
|
|
qdel(attacking_item)
|
|
dart_count++
|
|
to_chat(user, SPAN_NOTICE("You load the foam dart into \the [src]."))
|
|
else
|
|
to_chat(usr, SPAN_WARNING("\The [src] is already fully loaded."))
|
|
|
|
/obj/item/toy/crossbow/afterattack(atom/target, mob/user, flag)
|
|
if(!isturf(target.loc) || target == user)
|
|
return
|
|
|
|
if(flag)
|
|
return
|
|
|
|
if(locate(/obj/structure/table) in get_turf(src))
|
|
return
|
|
|
|
else if(dart_count)
|
|
var/turf/trg = get_turf(target)
|
|
var/obj/effect/foam_dart_dummy/D = new/obj/effect/foam_dart_dummy(get_turf(src))
|
|
dart_count--
|
|
D.icon_state = "foamdart"
|
|
D.name = "foam dart"
|
|
playsound(src, 'sound/items/syringeproj.ogg', 50, TRUE)
|
|
|
|
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(SPAN_WARNING("\The [M] was hit by the foam dart!"), 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
|
|
|
|
/obj/item/toy/crossbow/attack(mob/living/target_mob, mob/living/user, target_zone)
|
|
src.add_fingerprint(user)
|
|
|
|
if (src.dart_count > 0 && target_mob.lying) // Check
|
|
for(var/mob/O in viewers(target_mob, null))
|
|
if(O.client)
|
|
O.show_message(SPAN_NOTICE("\The [user] casually lines up a shot with [target_mob]'s head and pulls the trigger."), 1)
|
|
O.show_message(SPAN_WARNING("\The [target_mob] was hit in the head by the foam dart!"), 1)
|
|
|
|
playsound(src, 'sound/items/syringeproj.ogg', 50, TRUE)
|
|
new /obj/item/toy/ammo/crossbow(target_mob.loc)
|
|
src.dart_count--
|
|
return
|
|
|
|
/obj/item/toy/ammo/crossbow
|
|
name = "foam dart"
|
|
desc = "A foam dart."
|
|
icon = 'icons/obj/toy.dmi'
|
|
icon_state = "foamdart"
|
|
w_class = WEIGHT_CLASS_TINY
|
|
slot_flags = SLOT_EARS
|
|
drop_sound = 'sound/items/drop/food.ogg'
|
|
pickup_sound = 'sound/items/pickup/food.ogg'
|
|
|
|
/obj/effect/foam_dart_dummy
|
|
name = null
|
|
desc = null
|
|
icon = 'icons/obj/toy.dmi'
|
|
icon_state = null
|
|
anchored = TRUE
|
|
density = FALSE
|
|
|
|
/*
|
|
* Toy swords
|
|
*/
|
|
/obj/item/toy/sword
|
|
name = "toy sword"
|
|
desc = "A cheap, plastic replica of a blue energy sword. Realistic sounds and colors! Ages 8 and up."
|
|
icon = 'icons/obj/weapons.dmi'
|
|
icon_state = "sword0"
|
|
item_state = "sword0"
|
|
item_icons = list(
|
|
slot_l_hand_str = 'icons/mob/items/weapons/lefthand_energy.dmi',
|
|
slot_r_hand_str = 'icons/mob/items/weapons/righthand_energy.dmi',
|
|
)
|
|
drop_sound = 'sound/items/drop/gun.ogg'
|
|
pickup_sound = 'sound/items/pickup/gun.ogg'
|
|
var/active = 0.0
|
|
var/colorvar = "blue"
|
|
var/last_active = 0
|
|
w_class = WEIGHT_CLASS_SMALL
|
|
attack_verb = list("attacked", "struck", "hit")
|
|
|
|
/obj/item/toy/sword/attack_self(mob/user as mob)
|
|
if(last_active <= world.time - 20)
|
|
last_active = world.time
|
|
src.active = !( src.active )
|
|
if(src.active)
|
|
to_chat(user, SPAN_NOTICE("You extend the plastic blade with a quick flick of your wrist."))
|
|
playsound(user, 'sound/weapons/saberon.ogg', 50, 1)
|
|
src.icon_state = "sword[colorvar]"
|
|
src.item_state = "sword[colorvar]"
|
|
src.w_class = WEIGHT_CLASS_BULKY
|
|
else
|
|
to_chat(user, SPAN_NOTICE("You push the plastic blade back down into the handle."))
|
|
playsound(user, 'sound/weapons/saberoff.ogg', 50, 1)
|
|
src.icon_state = "sword0"
|
|
src.item_state = "sword0"
|
|
src.w_class = WEIGHT_CLASS_SMALL
|
|
|
|
if(istype(user,/mob/living/carbon/human))
|
|
var/mob/living/carbon/human/H = user
|
|
H.update_inv_l_hand()
|
|
H.update_inv_r_hand()
|
|
|
|
src.add_fingerprint(user)
|
|
return
|
|
|
|
/obj/item/toy/sword/Initialize()
|
|
. = ..()
|
|
colorvar = pick("red","blue","green","purple")
|
|
desc = "A cheap, plastic replica of a [colorvar] energy sword. Realistic sounds and colors! Ages 8 and up."
|
|
|
|
/obj/item/toy/katana
|
|
name = "replica katana"
|
|
desc = "A cheap plastic katana that luckily isn't sharp enough to accidentally cut your floor length braid. Woefully underpowered in D20."
|
|
contained_sprite = TRUE
|
|
icon = 'icons/obj/sword.dmi'
|
|
icon_state = "katana"
|
|
item_state = "katana"
|
|
drop_sound = 'sound/items/drop/gun.ogg'
|
|
pickup_sound = SFX_PICKUP_SWORD
|
|
equip_sound = SFX_EQUIP_SWORD
|
|
obj_flags = OBJ_FLAG_CONDUCTABLE
|
|
slot_flags = SLOT_BELT | SLOT_BACK
|
|
force = 11
|
|
throwforce = 5
|
|
w_class = WEIGHT_CLASS_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 = WEIGHT_CLASS_TINY
|
|
drop_sound = 'sound/items/drop/food.ogg'
|
|
pickup_sound = 'sound/items/pickup/food.ogg'
|
|
|
|
/obj/item/toy/snappop/Initialize()
|
|
. = ..()
|
|
var/static/list/loc_connections = list(
|
|
COMSIG_ATOM_ENTERED = PROC_REF(on_entered),
|
|
)
|
|
|
|
AddElement(/datum/element/connect_loc, loc_connections)
|
|
|
|
/obj/item/toy/snappop/attack_self(mob/user)
|
|
user.drop_from_inventory(src)
|
|
user.visible_message(SPAN_WARNING("\The [user] throws \the [src] at their feet!"), SPAN_NOTICE("You throw \the [src] at your feet."))
|
|
do_pop()
|
|
|
|
/obj/item/toy/snappop/throw_impact(atom/hit_atom)
|
|
..()
|
|
do_pop()
|
|
|
|
/obj/item/toy/snappop/proc/on_entered(datum/source, atom/movable/arrived, atom/old_loc, list/atom/old_locs)
|
|
if((ishuman(arrived))) //i guess carp and shit shouldn't set them off
|
|
var/mob/living/carbon/human/M = arrived
|
|
if(M.shoes?.item_flags & ITEM_FLAG_LIGHT_STEP)
|
|
return
|
|
if(M.m_intent == M_RUN)
|
|
to_chat(M, SPAN_WARNING("You step on the snap pop!"))
|
|
do_pop()
|
|
|
|
/obj/item/toy/snappop/proc/do_pop()
|
|
spark(src, 3, GLOB.alldirs)
|
|
new /obj/effect/decal/cleanable/ash(get_turf(src))
|
|
visible_message(SPAN_WARNING("\The [src] explodes!"), SPAN_WARNING("You hear a snap!"))
|
|
playsound(get_turf(src), 'sound/effects/snap.ogg', 50, TRUE)
|
|
qdel(src)
|
|
|
|
/obj/item/toy/snappop/syndi/antagonist_hints(mob/user, distance, is_adjacent)
|
|
. += ..()
|
|
. += "These snap pops have an extra compound added that will deploy a tiny smokescreen when snapped."
|
|
|
|
/obj/item/toy/snappop/syndi/do_pop()
|
|
var/datum/effect/effect/system/smoke_spread/smoke = new /datum/effect/effect/system/smoke_spread
|
|
smoke.set_up(2, 0, get_turf(src))
|
|
smoke.attach(get_turf(src))
|
|
smoke.start()
|
|
..()
|
|
|
|
/*
|
|
* Water flower
|
|
*/
|
|
|
|
//moved to spray.dm
|
|
|
|
/*
|
|
* Bosun's whistle
|
|
*/
|
|
|
|
/obj/item/toy/bosunwhistle
|
|
name = "bosun's whistle"
|
|
desc = "A genuine Admiral Krush Bosun's Whistle, for the aspiring ship's captain! Suitable for ages 8 and up, do not swallow."
|
|
icon_state = "bosunwhistle"
|
|
drop_sound = 'sound/items/drop/card.ogg'
|
|
pickup_sound = 'sound/items/pickup/card.ogg'
|
|
var/cooldown = 0
|
|
w_class = WEIGHT_CLASS_TINY
|
|
slot_flags = SLOT_EARS
|
|
|
|
/obj/item/toy/bosunwhistle/attack_self(mob/user as mob)
|
|
if(cooldown < world.time - 35)
|
|
to_chat(user, SPAN_NOTICE("You blow on [src], creating an ear-splitting noise!"))
|
|
playsound(user, 'sound/misc/boatswain.ogg', 20, 1)
|
|
cooldown = world.time
|
|
|
|
/*
|
|
* Mech prizes
|
|
*/
|
|
/obj/item/toy/mech
|
|
icon_state = "ripleytoy"
|
|
var/cooldown = 0
|
|
w_class = WEIGHT_CLASS_SMALL
|
|
drop_sound = 'sound/mecha/mechstep.ogg'
|
|
|
|
/obj/item/toy/mech/attack_self(mob/user)
|
|
var/turf/user_turf = get_turf(user)
|
|
user.drop_from_inventory(src, user_turf)
|
|
new /mob/living/simple_animal/hostile/mech(user_turf, src)
|
|
|
|
/obj/item/toy/mech/ripley
|
|
name = "toy ripley"
|
|
desc = "Mini-Mecha action figure! Collect them all! 1/11."
|
|
|
|
/obj/item/toy/mech/fireripley
|
|
name = "toy firefighting ripley"
|
|
desc = "Mini-Mecha action figure! Collect them all! 2/11."
|
|
icon_state = "fireripleytoy"
|
|
|
|
/obj/item/toy/mech/deathripley
|
|
name = "toy deathsquad ripley"
|
|
desc = "Mini-Mecha action figure! Collect them all! 3/11."
|
|
icon_state = "deathripleytoy"
|
|
|
|
/obj/item/toy/mech/gygax
|
|
name = "toy gygax"
|
|
desc = "Mini-Mecha action figure! Collect them all! 4/11."
|
|
icon_state = "gygaxtoy"
|
|
|
|
/obj/item/toy/mech/durand
|
|
name = "toy durand"
|
|
desc = "Mini-Mecha action figure! Collect them all! 5/11."
|
|
icon_state = "durandprize"
|
|
|
|
/obj/item/toy/mech/honk
|
|
name = "toy H.O.N.K."
|
|
desc = "Mini-Mecha action figure! Collect them all! 6/11."
|
|
icon_state = "honkprize"
|
|
|
|
/obj/item/toy/mech/marauder
|
|
name = "toy marauder"
|
|
desc = "Mini-Mecha action figure! Collect them all! 7/11."
|
|
icon_state = "marauderprize"
|
|
|
|
/obj/item/toy/mech/seraph
|
|
name = "toy seraph"
|
|
desc = "Mini-Mecha action figure! Collect them all! 8/11."
|
|
icon_state = "seraphprize"
|
|
|
|
/obj/item/toy/mech/mauler
|
|
name = "toy mauler"
|
|
desc = "Mini-Mecha action figure! Collect them all! 9/11."
|
|
icon_state = "maulerprize"
|
|
|
|
/obj/item/toy/mech/odysseus
|
|
name = "toy odysseus"
|
|
desc = "Mini-Mecha action figure! Collect them all! 10/11."
|
|
icon_state = "odysseusprize"
|
|
|
|
/obj/item/toy/mech/phazon
|
|
name = "toy phazon"
|
|
desc = "Mini-Mecha action figure! Collect them all! 11/11."
|
|
icon_state = "phazonprize"
|
|
|
|
/*
|
|
* Action figures
|
|
*/
|
|
|
|
/obj/item/toy/figure
|
|
name = "completely glitched action figure"
|
|
desc = "A \"Space Life\" brand... wait, what the hell is this thing? It seems to be requesting the sweet release of death."
|
|
icon_state = "glitched"
|
|
w_class = WEIGHT_CLASS_TINY
|
|
drop_sound = 'sound/items/drop/accessory.ogg'
|
|
pickup_sound = 'sound/items/pickup/accessory.ogg'
|
|
|
|
/obj/item/toy/figure/cmo
|
|
name = "chief medical officer action figure"
|
|
desc = "A \"Space Life\" brand chief medical officer action figure."
|
|
icon_state = "cmo"
|
|
|
|
/obj/item/toy/figure/assistant
|
|
name = "assistant action figure"
|
|
desc = "A \"Space Life\" brand assistant action figure."
|
|
icon_state = "assistant"
|
|
|
|
/obj/item/toy/figure/atmos
|
|
name = "atmospheric technician action figure"
|
|
desc = "A \"Space Life\" brand atmospheric technician action figure."
|
|
icon_state = "atmos"
|
|
|
|
/obj/item/toy/figure/bartender
|
|
name = "bartender action figure"
|
|
desc = "A \"Space Life\" brand bartender action figure."
|
|
icon_state = "bartender"
|
|
|
|
/obj/item/toy/figure/borg
|
|
name = "cyborg action figure"
|
|
desc = "A \"Space Life\" brand cyborg action figure."
|
|
icon_state = "borg"
|
|
|
|
/obj/item/toy/figure/gardener
|
|
name = "gardener action figure"
|
|
desc = "A \"Space Life\" brand gardener action figure."
|
|
icon_state = "botanist"
|
|
|
|
/obj/item/toy/figure/captain
|
|
name = "captain action figure"
|
|
desc = "A \"Space Life\" brand captain action figure."
|
|
icon_state = "captain"
|
|
|
|
/obj/item/toy/figure/cargotech
|
|
name = "cargo technician action figure"
|
|
desc = "A \"Space Life\" brand cargo technician action figure."
|
|
icon_state = "cargotech"
|
|
|
|
/obj/item/toy/figure/ce
|
|
name = "chief engineer action figure"
|
|
desc = "A \"Space Life\" brand chief engineer action figure."
|
|
icon_state = "ce"
|
|
|
|
/obj/item/toy/figure/chaplain
|
|
name = "chaplain action figure"
|
|
desc = "A \"Space Life\" brand chaplain action figure."
|
|
icon_state = "chaplain"
|
|
|
|
/obj/item/toy/figure/chef
|
|
name = "chef action figure"
|
|
desc = "A \"Space Life\" brand chef action figure."
|
|
icon_state = "chef"
|
|
|
|
/obj/item/toy/figure/chemist
|
|
name = "Chemist action figure"
|
|
desc = "A \"Space Life\" brand chemist action figure."
|
|
icon_state = "chemist"
|
|
|
|
/obj/item/toy/figure/clown
|
|
name = "clown action figure"
|
|
desc = "A \"Space Life\" brand clown action figure."
|
|
icon_state = "clown"
|
|
|
|
/obj/item/toy/figure/corgi
|
|
name = "corgi action figure"
|
|
desc = "A \"Space Life\" brand corgi action figure."
|
|
icon_state = "ian"
|
|
|
|
/obj/item/toy/figure/detective
|
|
name = "detective action figure"
|
|
desc = "A \"Space Life\" brand detective action figure."
|
|
icon_state = "detective"
|
|
|
|
/obj/item/toy/figure/dsquad
|
|
name = "space commando action figure"
|
|
desc = "A \"Space Life\" brand space commando action figure."
|
|
icon_state = "dsquad"
|
|
|
|
/obj/item/toy/figure/engineer
|
|
name = "engineer action figure"
|
|
desc = "A \"Space Life\" brand engineer action figure."
|
|
icon_state = "engineer"
|
|
|
|
/obj/item/toy/figure/geneticist
|
|
name = "geneticist action figure"
|
|
desc = "A \"Space Life\" brand geneticist action figure, which was recently dicontinued."
|
|
icon_state = "geneticist"
|
|
|
|
/obj/item/toy/figure/hop
|
|
name = "head of personnel action figure"
|
|
desc = "A \"Space Life\" brand head of personnel action figure."
|
|
icon_state = "hop"
|
|
|
|
/obj/item/toy/figure/hos
|
|
name = "head of security action figure"
|
|
desc = "A \"Space Life\" brand head of security action figure."
|
|
icon_state = "hos"
|
|
|
|
/obj/item/toy/figure/qm
|
|
name = "quartermaster action figure"
|
|
desc = "A \"Space Life\" brand quartermaster action figure."
|
|
icon_state = "qm"
|
|
|
|
/obj/item/toy/figure/janitor
|
|
name = "janitor action figure"
|
|
desc = "A \"Space Life\" brand janitor action figure."
|
|
icon_state = "janitor"
|
|
|
|
/obj/item/toy/figure/agent
|
|
name = "internal affairs agent action figure"
|
|
desc = "A \"Space Life\" brand internal affairs agent action figure."
|
|
icon_state = "agent"
|
|
|
|
/obj/item/toy/figure/librarian
|
|
name = "librarian action figure"
|
|
desc = "A \"Space Life\" brand librarian action figure."
|
|
icon_state = "librarian"
|
|
|
|
/obj/item/toy/figure/journalist
|
|
name = "journalist action figure"
|
|
desc = "A \"Space Life\" brand librarian action figure. The word 'librarian' on the tag is scratched out with marker, and 'journalist' is written in its place."
|
|
icon_state = "librarian"
|
|
|
|
/obj/item/toy/figure/md
|
|
name = "physician action figure"
|
|
desc = "A \"Space Life\" brand physician action figure."
|
|
icon_state = "md"
|
|
|
|
/obj/item/toy/figure/mime
|
|
name = "mime action figure"
|
|
desc = "A \"Space Life\" brand mime action figure."
|
|
icon_state = "mime"
|
|
|
|
/obj/item/toy/figure/miner
|
|
name = "shaft miner action figure"
|
|
desc = "A \"Space Life\" brand shaft miner action figure."
|
|
icon_state = "miner"
|
|
|
|
/obj/item/toy/figure/ninja
|
|
name = "space ninja action figure"
|
|
desc = "A \"Space Life\" brand space ninja action figure."
|
|
icon_state = "ninja"
|
|
|
|
/obj/item/toy/figure/wizard
|
|
name = "wizard action figure"
|
|
desc = "A \"Space Life\" brand wizard action figure."
|
|
icon_state = "wizard"
|
|
|
|
/obj/item/toy/figure/rd
|
|
name = "research director action figure"
|
|
desc = "A \"Space Life\" brand research director action figure."
|
|
icon_state = "rd"
|
|
|
|
/obj/item/toy/figure/roboticist
|
|
name = "roboticist action figure"
|
|
desc = "A \"Space Life\" brand roboticist action figure."
|
|
icon_state = "roboticist"
|
|
|
|
/obj/item/toy/figure/scientist
|
|
name = "scientist action figure"
|
|
desc = "A \"Space Life\" brand scientist action figure."
|
|
icon_state = "scientist"
|
|
|
|
/obj/item/toy/figure/syndie
|
|
name = "doom operative action figure"
|
|
desc = "A \"Space Life\" brand doom operative action figure."
|
|
icon_state = "syndie"
|
|
|
|
/obj/item/toy/figure/secofficer
|
|
name = "security officer action figure"
|
|
desc = "A \"Space Life\" brand security officer action figure."
|
|
icon_state = "secofficer"
|
|
|
|
/obj/item/toy/figure/warden
|
|
name = "warden action figure"
|
|
desc = "A \"Space Life\" brand warden action figure."
|
|
icon_state = "warden"
|
|
|
|
/obj/item/toy/figure/psychologist
|
|
name = "psychologist action figure"
|
|
desc = "A \"Space Life\" brand psychologist action figure."
|
|
icon_state = "psychologist"
|
|
|
|
/obj/item/toy/figure/paramedic
|
|
name = "paramedic action figure"
|
|
desc = "A \"Space Life\" brand paramedic action figure."
|
|
icon_state = "paramedic"
|
|
|
|
/obj/item/toy/figure/ert
|
|
name = "emergency response team commander action figure"
|
|
desc = "A \"Space Life\" brand emergency response team commander action figure."
|
|
icon_state = "ert"
|
|
/*
|
|
* Therapy Dolls
|
|
*/
|
|
/obj/item/toy/plushie/therapy
|
|
name = "therapy doll"
|
|
desc = "A toy for therapeutic and recreational purposes. This one is in red."
|
|
icon = 'icons/obj/toy.dmi'
|
|
icon_state = "therapyred"
|
|
item_state = "therapyred"
|
|
var/active = 0.0
|
|
var/colorvar = "red"
|
|
w_class = WEIGHT_CLASS_TINY
|
|
|
|
/obj/item/toy/plushie/therapy/Initialize()
|
|
. = ..()
|
|
colorvar = pick("red","orange","yellow","green","blue","purple")
|
|
icon_state = "therapy[colorvar]"
|
|
item_state = "egg_[colorvar]"
|
|
desc = "A toy for therapeutic and recreational purposes. This one is in [colorvar]."
|
|
|
|
/*
|
|
* Plushies
|
|
*/
|
|
|
|
/obj/item/toy/plushie
|
|
name = "generic small plush"
|
|
desc = "A very generic small plushie. It seems to not want to exist."
|
|
icon_state = "nymphplushie"
|
|
drop_sound = 'sound/items/drop/plushie.ogg'
|
|
pickup_sound = 'sound/items/pickup/plushie.ogg'
|
|
var/phrase = "Hewwo!"
|
|
/// defines what sound is played when poking the plushie (using it inhand on disarm intent).
|
|
var/poke_sound = 'sound/items/drop/plushie.ogg'
|
|
///A cooldown to stop the poke sound being spammed.
|
|
var/poke_cooldown = 0
|
|
|
|
/obj/item/toy/plushie/attack_self(mob/user as mob)
|
|
if(poke_cooldown > world.time)
|
|
return
|
|
poke_cooldown = world.time + 2 SECONDS
|
|
if(user.a_intent == I_HELP)
|
|
user.visible_message(SPAN_NOTICE("<b>\The [user]</b> hugs [src]!"),
|
|
SPAN_NOTICE("You hug [src]!"))
|
|
|
|
else if (user.a_intent == I_HURT)
|
|
user.visible_message(SPAN_WARNING("<b>\The [user]</b> punches [src]!"), SPAN_WARNING("You punch [src]!"))
|
|
else if (user.a_intent == I_GRAB)
|
|
user.visible_message(SPAN_WARNING("<b>\The [user]</b> attempts to strangle [src]!"), SPAN_WARNING("You attempt to strangle [src]!"))
|
|
else
|
|
user.visible_message(SPAN_NOTICE("<b>\The [user]</b> pokes the [src]."),
|
|
SPAN_NOTICE("You poke the [src]."))
|
|
|
|
playsound(src, poke_sound, 25, 0)
|
|
visible_message("[src] says, \"[phrase]\"")
|
|
|
|
//Large plushies.
|
|
|
|
|
|
/obj/item/toy/plushie/ian
|
|
name = "plush corgi"
|
|
desc = "A plushie of an adorable corgi! Don't you just want to hug it and squeeze it and call it \"Ian\"?"
|
|
icon_state = "ianplushie"
|
|
phrase = "Arf!"
|
|
|
|
/obj/item/toy/plushie/drone
|
|
name = "plush drone"
|
|
desc = "A plushie of a happy drone! It appears to be smiling, and has a small tag which reads \"N.D.V. Icarus Gift Shop\"."
|
|
icon_state = "droneplushie"
|
|
phrase = "Beep boop!"
|
|
|
|
/obj/item/toy/plushie/carp
|
|
name = "plush carp"
|
|
desc = "A plushie of an elated carp! Straight from the wilds of the Tau Ceti frontier, now right here in your hands."
|
|
icon_state = "carpplushie"
|
|
phrase = "Glorf!"
|
|
|
|
/obj/item/toy/plushie/beepsky
|
|
name = "plush Officer Sweepsky"
|
|
desc = "A plushie of a popular industrious cleaning robot! If it could feel emotions, it would love you."
|
|
icon_state = "beepskyplushie"
|
|
phrase = "Ping!"
|
|
|
|
/obj/item/toy/plushie/ivancarp
|
|
name = "plush Ivan the carp"
|
|
desc = "A plushie in the spitting image of a russian raised carp."
|
|
icon_state = "carpplushie_russian"
|
|
phrase = "Blyat!"
|
|
|
|
//Small plushies.
|
|
|
|
/obj/item/toy/plushie/nymph
|
|
name = "diona nymph plush"
|
|
desc = "A plushie of an adorable diona nymph! While its level of self-awareness is still being debated, its level of cuteness is not."
|
|
icon_state = "nymphplushie"
|
|
slot_flags = SLOT_HEAD
|
|
|
|
/obj/item/toy/plushie/mouse
|
|
name = "mouse plush"
|
|
desc = "A plushie of a delightful mouse! What was once considered a vile rodent is now your very best friend."
|
|
icon_state = "mouseplushie"
|
|
|
|
/obj/item/toy/plushie/kitten
|
|
name = "kitten plush"
|
|
desc = "A plushie of a cute kitten! Watch as it purrs its way right into your heart."
|
|
icon_state = "kittenplushie"
|
|
slot_flags = SLOT_HEAD
|
|
|
|
/obj/item/toy/plushie/pennyplush
|
|
name = "Penny plush"
|
|
desc = "It's a plush of the beloved company mascot cat, Penny! For the price NanoTrasen sells these things at, you probably could have bought an actual cat."
|
|
icon_state = "pennyplushie"
|
|
slot_flags = SLOT_HEAD
|
|
|
|
/obj/item/toy/plushie/lizard
|
|
name = "lizard plush"
|
|
desc = "A plushie of a scaly lizard! Very controversial, after being accused as \"racist\" by some Unathi."
|
|
icon_state = "lizardplushie"
|
|
|
|
/obj/item/toy/plushie/spider
|
|
name = "spider plush"
|
|
desc = "A plushie of a fuzzy spider! It has eight legs - all the better to hug you with."
|
|
icon_state = "spiderplushie"
|
|
|
|
/obj/item/toy/plushie/farwa
|
|
name = "farwa plush"
|
|
desc = "A farwa plush doll. It's soft and comforting, with extra grip!"
|
|
icon_state = "farwaplushie"
|
|
slot_flags = SLOT_HEAD
|
|
|
|
/obj/item/toy/plushie/bear
|
|
name = "bear plush"
|
|
desc = "A bear plushie. You should hug it, quickly!"
|
|
icon_state = "bearplushie"
|
|
|
|
/obj/item/toy/plushie/bearfire
|
|
name = "firefighter bear plush"
|
|
desc = "A bear plushie. Only you can stop phoron fires!"
|
|
icon_state = "bearplushie_fire"
|
|
|
|
/obj/item/toy/plushie/schlorrgo
|
|
name = "schlorrgo plush"
|
|
desc = "A schlorrgo plushie, ready to roll his way into your heart!"
|
|
icon_state = "schlorrgoplushie"
|
|
phrase = "Eough!"
|
|
drop_sound = 'sound/effects/creatures/ough.ogg'
|
|
pickup_sound = 'sound/effects/creatures/ough.ogg'
|
|
poke_sound = 'sound/effects/creatures/ough.ogg'
|
|
|
|
/obj/item/toy/plushie/coolschlorrgo
|
|
name = "Cool Schlorrgo plush"
|
|
desc = "A plushie of the popular cartoon character, Cool Schlorrgo. Hadii's grace!"
|
|
icon_state = "coolerschlorrgoplushie"
|
|
phrase = "Eough!"
|
|
drop_sound = 'sound/effects/creatures/ough.ogg'
|
|
pickup_sound = 'sound/effects/creatures/ough.ogg'
|
|
poke_sound = 'sound/effects/creatures/ough.ogg'
|
|
|
|
/obj/item/toy/plushie/slime
|
|
name = "slime plush"
|
|
desc = "A beanbag-filled slime plushie. Relaxing!"
|
|
icon_state = "slimeplushie"
|
|
phrase = "Rawr!"
|
|
|
|
/obj/item/toy/plushie/bee
|
|
name = "bee plush"
|
|
desc = "A chunky plushie bee. Your new buzz-t friend!"
|
|
icon_state = "beeplushie"
|
|
phrase = "Buzz!"
|
|
|
|
/obj/item/toy/plushie/shark
|
|
name = "shark plush"
|
|
desc = "A beloved jumbo sized shark that is sure to impress your friends."
|
|
icon_state = "sharkplushie"
|
|
phrase = "Gashunk!"
|
|
|
|
/obj/item/toy/plushie/greimorian
|
|
name = "greimorian plushie"
|
|
desc = "A lovable plushie of a fierce greimorian! This one takes a few liberties."
|
|
icon_state = "greimorianplushie"
|
|
phrase = "Gort!"
|
|
|
|
/obj/item/toy/plushie/axic
|
|
name = "Axic plushie"
|
|
desc = "Plushie designed after the main characters of the hit show, Swimstars! This one is Axic. "
|
|
icon_state = "axicplushie"
|
|
phrase = "Warble!"
|
|
|
|
/obj/item/toy/plushie/qill
|
|
name = "Qill plushie"
|
|
desc = "Plushie designed after the main characters of the hit show, Swimstars! This one is Qill. "
|
|
icon_state = "qillplushie"
|
|
phrase = "Warble!"
|
|
|
|
/obj/item/toy/plushie/xana
|
|
name = "Xana plushie"
|
|
desc = "Plushie designed after the main characters of the hit show, Swimstars! This one is Xana. "
|
|
icon_state = "xanaplushie"
|
|
phrase = "Warble!"
|
|
|
|
/obj/item/toy/plushie/ipc
|
|
name = "Aphy plushie"
|
|
desc = "A plushie of an old Hephaestus mascot, Aphy."
|
|
desc_extended = "Aphy, a play on the name Aphrodite, was Hephaestus Industries' first baseline prototype. The original Aphy was tragically lost alongside Hephaestus' Mars headquarters during the Violet Dawn disaster, but the unit lives on as a cutesy, marketable mascot."
|
|
icon_state = "ipcplushie"
|
|
phrase = "Bwoop!"
|
|
|
|
/obj/item/toy/plushie/domadice
|
|
name = "Domadice plushie"
|
|
desc = "A marketable plushie of the Kessvalankan Domadice"
|
|
desc_extended = "Resurrected by the Golden Deep, the Kessvalankan Domadice is a Purpose adjacent synthetic. They hail from a time long before any of the current spur's inhabitants were even thoughts on the evolutionary track. Currently Domadice works as a leader in the Golden Deep, on the same footing as Midas Control."
|
|
icon_state = "domadiceplushie"
|
|
phrase = "♫Plin Plin Plon♫"
|
|
|
|
//Squid Plushies
|
|
|
|
/obj/item/toy/plushie/squid
|
|
name = "squid plushie"
|
|
desc = "A small, cute and loveable squid friend. This one is pink coloured."
|
|
icon = 'icons/obj/toy.dmi'
|
|
icon_state = "pinksquid"
|
|
item_state = "pinksquid"
|
|
var/active = 0.0
|
|
var/colorvar = "pink"
|
|
slot_flags = SLOT_HEAD
|
|
|
|
/obj/item/toy/plushie/squid/Initialize()
|
|
. = ..()
|
|
colorvar = pick("pink","blue","mint","green","yellow","orange")
|
|
icon_state = "[colorvar]squid"
|
|
item_state = "[colorvar]squid"
|
|
desc = "A small, cute and loveable squid friend. This one is in [colorvar]."
|
|
|
|
//Fox Plushies
|
|
/obj/item/toy/plushie/fox
|
|
name = "fox plushie"
|
|
desc = "A small, very soft and handsome fox, ready to receive your cuddles. This one is red."
|
|
icon = 'icons/obj/toy.dmi'
|
|
icon_state = "redfox"
|
|
item_state = "redfox"
|
|
phrase = "Kekekeke!"
|
|
|
|
/obj/item/toy/plushie/fox/black
|
|
desc = "A small, very soft and handsome fox, ready to receive your cuddles. This one is black."
|
|
icon_state = "blackfox"
|
|
item_state = "blackfox"
|
|
|
|
/obj/item/toy/plushie/fox/marble
|
|
desc = "A small, very soft and handsome fox, ready to receive your cuddles. This one is white."
|
|
icon_state = "marblefox"
|
|
item_state = "marblefox"
|
|
|
|
/obj/item/toy/plushie/fox/blue
|
|
desc = "A small, very soft and handsome fox, ready to receive your cuddles. This one is blue."
|
|
icon_state = "bluefox"
|
|
item_state = "bluefox"
|
|
|
|
/obj/item/toy/plushie/fox/orange
|
|
desc = "A small, very soft and handsome fox, ready to receive your cuddles. This one is the classic orange."
|
|
icon_state = "orangefox"
|
|
item_state = "orangefox"
|
|
|
|
/obj/item/toy/plushie/fox/coffee
|
|
desc = "A small, very soft and handsome fox, ready to receive your cuddles. This one is coffee-cream coloured."
|
|
icon_state = "coffeefox"
|
|
item_state = "coffeefox"
|
|
|
|
/obj/item/toy/plushie/fox/pink
|
|
desc = "A small, very soft and handsome fox, ready to receive your cuddles. This one is pink."
|
|
icon_state = "pinkfox"
|
|
item_state = "pinkfox"
|
|
|
|
/obj/item/toy/plushie/fox/purple
|
|
desc = "A small, very soft and handsome fox, ready to receive your cuddles. This one is purple."
|
|
icon_state = "purplefox"
|
|
item_state = "purplefox"
|
|
|
|
/obj/item/toy/plushie/fox/crimson
|
|
desc = "A small, very soft and handsome fox, ready to receive your cuddles. This one is crimson."
|
|
icon_state = "crimsonfox"
|
|
item_state = "crimsonfox"
|
|
|
|
/obj/item/toy/plushie/fox/random
|
|
icon_state = "redfox"
|
|
item_state = "redfox"
|
|
var/colorvar = "red"
|
|
|
|
/obj/item/toy/plushie/fox/random/Initialize()
|
|
. = ..()
|
|
desc = "A small, very soft and handsome fox, ready to receive your cuddles. This one is in [colorvar]."
|
|
icon_state = "[colorvar]fox"
|
|
item_state = "[colorvar]fox"
|
|
colorvar = pick("red", "black", "marble", "blue", "orange", "coffee", "pink", "purple", "crimson")
|
|
|
|
// Squid Plushie Random
|
|
/obj/item/toy/plushie/squidcolour
|
|
name = "squid plushie"
|
|
desc = "A small, cute, and loveable squid friend. This one comes in a wide variety of colours."
|
|
icon_state = "squidplushie_colour"
|
|
// slot_flags = SLOT_HEAD - head sprite may come someday, but not today.
|
|
phrase = "Blub!"
|
|
|
|
// Herring Gull Plushie
|
|
/obj/item/toy/plushie/herring_gull
|
|
name = "herring gull plushie"
|
|
desc = "A herring gull plushie. Adorable!"
|
|
desc_extended = "The European herring gull, also known as <i>Larus argentatus</i>, is a common seabird originating from Earth. It can be found on and around \
|
|
the coasts as well as cities on Earth and wherever it may have been transplanted to. Commonly seen as something that symbolizes the sea as well as freedom."
|
|
icon_state = "herring_gull"
|
|
item_state = "herring_gull"
|
|
phrase = "Kek kek kek!"
|
|
var/lying = FALSE
|
|
|
|
/obj/item/toy/plushie/herring_gull/attack_self(mob/user)
|
|
if(user.a_intent == I_HELP)
|
|
user.visible_message(
|
|
SPAN_NOTICE("<b>\The [user]</b> pets \the [src]."),
|
|
SPAN_NOTICE("You pet \the [src].")
|
|
)
|
|
else if(user.a_intent == I_DISARM)
|
|
user.visible_message(
|
|
SPAN_NOTICE("<b>\The [user]</b> squeezes \the [src]."),
|
|
SPAN_NOTICE("You squeeze \the [src].")
|
|
)
|
|
else if(user.a_intent == I_GRAB)
|
|
user.visible_message(
|
|
SPAN_NOTICE("<b>\The [user]</b> hugs \the [src]."),
|
|
SPAN_NOTICE("You hug \the [src].")
|
|
)
|
|
else if(user.a_intent == I_HURT)
|
|
user.visible_message(
|
|
SPAN_NOTICE("<b>\The [user]</b> pokes \the [src]."),
|
|
SPAN_NOTICE("You poke \the [src].")
|
|
)
|
|
playsound(src, 'sound/items/plushies/herring_gull/alarm_call.ogg', 75, FALSE)
|
|
visible_message("<b>\The [src]</b> says, \"[phrase]\"")
|
|
|
|
/obj/item/toy/plushie/herring_gull/AltClick(mob/user)
|
|
if(lying)
|
|
lying = !lying
|
|
user.visible_message(
|
|
SPAN_NOTICE("<b>\The [user]</b> extends \the [src]'s legs."),
|
|
SPAN_NOTICE("You extend \the [src]'s legs.")
|
|
)
|
|
icon_state = "herring_gull"
|
|
item_state = "herring_gull"
|
|
else
|
|
lying = !lying
|
|
user.visible_message(
|
|
SPAN_NOTICE("<b>\The [user]</b> tucks in \the [src]'s legs."),
|
|
SPAN_NOTICE("You tuck in \the [src]'s legs.")
|
|
)
|
|
icon_state = "herring_gull_lying"
|
|
item_state = "herring_gull_lying"
|
|
|
|
//Jeweler cockatoo plushie
|
|
/obj/item/toy/plushie/cockatoo
|
|
name = "jeweler cockatoo plushie"
|
|
desc = "A plushie of Konyang's national animal, much smaller than the real thing. This one won't get you arrested for touching it, either."
|
|
icon_state = "cockatoo"
|
|
phrase = "Chirp!"
|
|
|
|
//Norinori plushie
|
|
/obj/item/toy/plushie/norinori
|
|
name = "\improper Norinori plushie"
|
|
desc = "A plump and fluffy plushie depicting Up!Burger's mascot Norinori the Onigiri! It smells faintly of rice."
|
|
icon_state = "norinori"
|
|
phrase = "Buy. Up!Burger!"
|
|
|
|
//Toy cult sword
|
|
/obj/item/toy/cultsword
|
|
name = "foam sword"
|
|
desc = "An arcane weapon wielded by the followers of the hit Saturday morning cartoon \"King Nursee and the Acolytes of Heroism\"."
|
|
icon = 'icons/obj/sword_64.dmi'
|
|
icon_state = "cultblade"
|
|
item_state = "cultblade"
|
|
w_class = WEIGHT_CLASS_BULKY
|
|
attack_verb = list("attacked", "slashed", "stabbed", "poked")
|
|
contained_sprite = TRUE
|
|
worn_x_dimension = 64
|
|
worn_y_dimension = 64
|
|
|
|
/obj/item/inflatable_duck
|
|
name = "inflatable duck"
|
|
desc = "No bother to sink or swim when you can just float!"
|
|
icon_state = "inflatable"
|
|
item_state = "inflatable"
|
|
icon = 'icons/obj/clothing/belts.dmi'
|
|
slot_flags = SLOT_BELT
|
|
drop_sound = 'sound/items/drop/rubber.ogg'
|
|
pickup_sound = 'sound/items/pickup/rubber.ogg'
|
|
|
|
/obj/item/toy/aurora
|
|
name = "aurora miniature"
|
|
desc = "A miniature of a space station, built into an asteroid. A tiny suspension field keeps it afloat. A small plaque on the front reads: NSS Aurora, Tau Ceti, Romanovich Cloud, 2464. Onward to new horizons."
|
|
desc_extended = "This miniature was given out on the 9th of April 2464 to all former crew members of the Aurora as a memento, before setting off to their new mission on the SCCV Horizon."
|
|
icon_state = "aurora"
|
|
|
|
/obj/item/toy/adhomian_map
|
|
name = "ancient adhomian map"
|
|
desc = "A replica of an Adhomian map found three years ago in Tau Ceti. What it leads to is unknown."
|
|
icon_state = "map"
|
|
|
|
/obj/item/toy/ringbell
|
|
name = "ringside bell"
|
|
desc = "A bell used to signal the beginning and end of various ring sports."
|
|
icon_state = "ringbell"
|
|
anchored = TRUE
|
|
|
|
/obj/item/toy/ringbell/mechanics_hints(mob/user, distance, is_adjacent)
|
|
. += ..()
|
|
. += "Use Help intent on the bell to signal the start of a contest."
|
|
. += "Use the Disarm intent to signal the end of a contest."
|
|
. += "Use the Harm intent to signal a disqualification."
|
|
|
|
/obj/item/toy/ringbell/attack_hand(mob/user)
|
|
switch(user.a_intent)
|
|
if (I_HELP)
|
|
user.visible_message(FONT_LARGE(SPAN_NOTICE("[user] rings \the [src], signalling the beginning of the contest.")), SPAN_NOTICE("You ring \the [src] to signal the beginning of the contest!"))
|
|
playsound(user.loc, 'sound/items/oneding.ogg', 60, 1)
|
|
if (I_DISARM)
|
|
user.visible_message(FONT_LARGE(SPAN_NOTICE("[user] rings \the [src] three times, signalling the end of the contest!")), SPAN_NOTICE("You ring \the [src] to signal the end of the contest!"))
|
|
playsound(user.loc, 'sound/items/threedings.ogg', 60, 1)
|
|
if (I_HURT)
|
|
user.visible_message(FONT_LARGE(SPAN_WARNING("[user] rings \the [src] repeatedly, signalling a disqualification!")), SPAN_WARNING("You ring \the [src] to signal a disqualification!"))
|
|
playsound(user.loc, 'sound/items/manydings.ogg', 60, 1)
|
|
|
|
//baystation desk toys
|
|
|
|
/obj/item/toy/desk
|
|
var/on = FALSE
|
|
var/activation_sound = SFX_SWITCH
|
|
|
|
/obj/item/toy/desk/update_icon()
|
|
if(on)
|
|
icon_state = "[initial(icon_state)]-on"
|
|
else
|
|
icon_state = initial(icon_state)
|
|
|
|
/obj/item/toy/desk/attack_self(mob/user)
|
|
activate(user)
|
|
|
|
/obj/item/toy/desk/AltClick(mob/user)
|
|
if(!use_check_and_message(user))
|
|
activate(user)
|
|
|
|
/obj/item/toy/desk/proc/activate(mob/user)
|
|
on = !on
|
|
playsound(src.loc, activation_sound, 75, 1)
|
|
update_icon()
|
|
return 1
|
|
|
|
/obj/item/toy/desk/newtoncradle
|
|
name = "\improper Newton's cradle"
|
|
desc = "A ancient 21th century super-weapon model demonstrating that Sir Isaac Newton is the deadliest sonuvabitch in space."
|
|
desc_extended = "Aside from car radios, Eridanian Dregs are reportedly notorious for stealing these things. It is often theorized that the very same ball bearings are used in black-market cybernetics."
|
|
icon_state = "newtoncradle"
|
|
|
|
/obj/item/toy/desk/fan
|
|
name = "office fan"
|
|
desc = "Your greatest fan."
|
|
desc_extended = "For weeks, the atmospherics department faced a conundrum on how to lower temperatures in a localized area through complicated pipe channels and ventilation systems. The problem was promptly solved by ordering several desk fans."
|
|
icon_state = "fan"
|
|
|
|
/obj/item/toy/desk/officetoy
|
|
name = "office toy"
|
|
desc = "A generic microfusion powered office desk toy. Only generates magnetism and ennui."
|
|
desc_extended = "The mechanism inside is a Hephasteus trade secret. No peeking!"
|
|
icon_state = "desktoy"
|
|
|
|
/obj/item/toy/desk/dippingbird
|
|
name = "dipping bird toy"
|
|
desc = "Engineers marvel at this scale model of a primitive thermal engine. It's highly debated why the majority of owners were in low-level bureaucratic jobs."
|
|
desc_extended = "One of the key essentials for every Eridanian suit - it's practically a rite of passage to own one of these things."
|
|
icon_state = "dippybird"
|
|
|
|
/obj/item/toy/partypopper
|
|
name = "party popper"
|
|
desc = "Instructions : Aim away from face. Wait for appropriate timing. Pull cord, enjoy confetti."
|
|
icon_state = "partypopper"
|
|
w_class = WEIGHT_CLASS_TINY
|
|
drop_sound = 'sound/items/drop/cardboardbox.ogg'
|
|
pickup_sound = 'sound/items/pickup/cardboardbox.ogg'
|
|
|
|
/obj/item/toy/partypopper/attack_self(mob/user)
|
|
if(icon_state == "partypopper")
|
|
spark(src, 1, user.dir)
|
|
user.visible_message(SPAN_NOTICE("[user] pulls on the string, releasing a burst of confetti!"), SPAN_NOTICE("You pull on the string, releasing a burst of confetti!"))
|
|
playsound(src, 'sound/effects/snap.ogg', 50, TRUE)
|
|
icon_state = "partypopper_e"
|
|
var/turf/T = get_step(src, user.dir)
|
|
if(!turf_clear(T))
|
|
T = get_turf(src)
|
|
new /obj/effect/decal/cleanable/confetti(T)
|
|
else
|
|
to_chat(user, SPAN_NOTICE("The [src] is already spent!"))
|
|
|
|
/obj/item/chess_piece
|
|
name = "white pawn"
|
|
desc = "A %NAME% chess piece, this one is worth %POINT% points."
|
|
icon = 'icons/obj/item/chess.dmi'
|
|
icon_state = "white_pawn"
|
|
w_class = WEIGHT_CLASS_HUGE // hugh mungus
|
|
var/piece_worth = 1
|
|
|
|
/obj/item/chess_piece/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
|
|
if(proximity_flag && isturf(target))
|
|
user.drop_from_inventory(src, target)
|
|
pixel_y = initial(pixel_y)
|
|
pixel_x = initial(pixel_x)
|
|
|
|
/obj/item/chess_piece/Initialize()
|
|
. = ..()
|
|
desc = "A [name] chess piece, this one is worth [piece_worth] point\s."
|
|
|
|
/obj/item/chess_piece/black
|
|
name = "black pawn"
|
|
icon_state = "black_pawn"
|
|
|
|
/obj/item/chess_piece/rook
|
|
name = "white rook"
|
|
icon_state = "white_rook"
|
|
piece_worth = 5
|
|
|
|
/obj/item/chess_piece/rook/black
|
|
name = "black rook"
|
|
icon_state = "black_rook"
|
|
|
|
/obj/item/chess_piece/knight
|
|
name = "white knight"
|
|
icon_state = "white_knight"
|
|
piece_worth = 3
|
|
|
|
/obj/item/chess_piece/knight/black
|
|
name = "black knight"
|
|
icon_state = "black_knight"
|
|
|
|
/obj/item/chess_piece/bishop
|
|
name = "white bishop"
|
|
icon_state = "white_bishop"
|
|
piece_worth = 3
|
|
|
|
/obj/item/chess_piece/bishop/black
|
|
name = "black bishop"
|
|
icon_state = "black_bishop"
|
|
|
|
/obj/item/chess_piece/king
|
|
name = "white king"
|
|
icon_state = "white_king"
|
|
piece_worth = 10 // not really, but i coded myself into a corner here
|
|
|
|
/obj/item/chess_piece/king/black
|
|
name = "black king"
|
|
icon_state = "black_king"
|
|
|
|
/obj/item/chess_piece/queen
|
|
name = "white queen"
|
|
icon_state = "white_queen"
|
|
piece_worth = 9
|
|
|
|
/obj/item/chess_piece/queen/black
|
|
name = "black queen"
|
|
icon_state = "black_queen"
|
|
|
|
// Stress ball
|
|
/obj/item/toy/stressball
|
|
name = "stress ball"
|
|
desc = "A small, squishy stress ball. This one has a squeaker inside."
|
|
w_class = WEIGHT_CLASS_SMALL
|
|
icon_state = "stressball"
|
|
drop_sound = 'sound/items/drop/plushie.ogg'
|
|
pickup_sound = 'sound/items/pickup/plushie.ogg'
|
|
var/squeeze_sound = 'sound/items/drop/plushie.ogg'
|
|
var/cooldown = 0
|
|
|
|
/obj/item/toy/stressball/Initialize()
|
|
. = ..()
|
|
if(!color)
|
|
color = RANDOM_RGB
|
|
update_icon()
|
|
|
|
/obj/item/toy/stressball/attack_self(mob/user as mob)
|
|
if(cooldown > world.time)
|
|
return
|
|
cooldown = world.time + 2 SECONDS
|
|
var/volume = 0
|
|
switch(user.a_intent)
|
|
if(I_HELP)
|
|
user.visible_message(SPAN_NOTICE("[SPAN_BOLD("\The [user]")] plays with \the [src]!"), SPAN_NOTICE("You play with \the [src]!"))
|
|
if(I_DISARM)
|
|
user.visible_message(SPAN_NOTICE("[SPAN_BOLD("\The [user]")] squeezes \the [src]!"), SPAN_NOTICE("You squeeze \the [src]!"))
|
|
volume = 30
|
|
if(I_GRAB)
|
|
user.visible_message(SPAN_NOTICE(SPAN_BOLD("\The [user] pinches \the [src]!")), SPAN_NOTICE(SPAN_BOLD("You pinch \the [src]!")))
|
|
volume = 40
|
|
if(I_HURT)
|
|
user.visible_message(SPAN_WARNING(SPAN_BOLD("\The [user] crushes \the [src]!")), SPAN_WARNING(SPAN_BOLD("You crush \the [src]!")))
|
|
volume = 50
|
|
if(volume)
|
|
playsound(src.loc, squeeze_sound, volume, TRUE)
|
|
|
|
/obj/item/toy/football
|
|
name = "football"
|
|
desc = "A classic, white and black football for kicking. Also known as a soccerball on Biesel and some parts of Earth."
|
|
desc_mechanics = "Click to kick the ball. Alt+Click or use a non-Help intent to deliver a powerful kick. Drag the ball onto your character sprite to pick it up."
|
|
w_class = WEIGHT_CLASS_NORMAL
|
|
icon_state = "football"
|
|
item_state = "football"
|
|
drop_sound = 'sound/items/drop/rubber.ogg'
|
|
pickup_sound = 'sound/items/drop/rubber.ogg'
|
|
|
|
/// The base distance in tiles the football is kicked.
|
|
var/base_kick_distance = 1
|
|
|
|
/obj/item/toy/football/Initialize()
|
|
. = ..()
|
|
|
|
var/static/list/loc_connections = list(
|
|
COMSIG_ATOM_ENTERED = PROC_REF(on_walk_into),
|
|
)
|
|
|
|
AddElement(/datum/element/connect_loc, loc_connections)
|
|
|
|
/obj/item/toy/football/proc/on_walk_into(datum/source, atom/movable/arrived, atom/old_loc, list/atom/old_locs)
|
|
SIGNAL_HANDLER
|
|
|
|
if(!isliving(arrived))
|
|
return
|
|
|
|
var/mob/living/user = arrived
|
|
|
|
if(!isturf(loc))
|
|
to_chat(user, SPAN_NOTICE("\The [src] has to be on the floor to kick it!"))
|
|
return
|
|
|
|
if(!(user?.a_intent == I_HELP))
|
|
user.visible_message(SPAN_WARNING("[user] forcefully kicks \the [src]!"))
|
|
throw_at(get_edge_target_turf(user, get_dir(old_loc, src)), base_kick_distance+(rand(2,5)), 1)
|
|
return
|
|
|
|
user.visible_message(SPAN_NOTICE("[user] kicks \the [src]."))
|
|
throw_at(get_edge_target_turf(user, get_dir(old_loc, src)), base_kick_distance+(rand(1,2)), 1)
|
|
|
|
/obj/item/toy/football/AltClick(var/mob/user)
|
|
if(use_check(user))
|
|
return
|
|
|
|
if(!isturf(loc))
|
|
to_chat(user, SPAN_NOTICE("\The [src] has to be on the floor to kick it!"))
|
|
return
|
|
|
|
user.visible_message(SPAN_WARNING("[user] forcefully kicks \the [src]!"))
|
|
throw_at(get_edge_target_turf(user, get_dir(user, src)), base_kick_distance+(rand(2,5)), 1)
|
|
|
|
/obj/item/toy/football/mouse_drop_dragged(atom/over, mob/user, src_location, over_location, params) //ripped from box/fancy/tray
|
|
if((over && (!use_check(over))) && (over.contents.Find(src) || in_range(src, over)))
|
|
var/mob/dropped_onto_mob = over
|
|
if(ishuman(dropped_onto_mob) && !dropped_onto_mob.get_active_hand())
|
|
var/mob/living/carbon/human/H = user
|
|
var/obj/item/organ/external/temp = H.organs_by_name[H.hand?BP_L_HAND:BP_R_HAND]
|
|
|
|
if(temp && !temp.is_usable())
|
|
to_chat(user, SPAN_NOTICE("You try to move your [temp.name], but cannot!"))
|
|
return
|
|
|
|
to_chat(user, SPAN_NOTICE("You pick up \the [src]."))
|
|
pixel_x = 0
|
|
pixel_y = 0
|
|
forceMove(get_turf(user))
|
|
user.put_in_hands(src)
|
|
return
|