diff --git a/code/__defines/color.dm b/code/__defines/color.dm
index 0cf687df09..e7afdf9121 100644
--- a/code/__defines/color.dm
+++ b/code/__defines/color.dm
@@ -128,6 +128,7 @@
#define WOOD_COLOR_BLACK "#332521"
#define WOOD_COLOR_CHOCOLATE "#543c30"
#define WOOD_COLOR_YELLOW "#e3994e"
+#define WOOD_COLOR_FURNITURE "#824b28"
#define GLASS_COLOR "#74c1ee"
#define GLASS_COLOR_PHORON "#7c3a9a"
diff --git a/code/game/objects/effects/decals/posters/bs12.dm b/code/game/objects/effects/decals/posters/bs12.dm
index 6933031c5f..451cd14e57 100644
--- a/code/game/objects/effects/decals/posters/bs12.dm
+++ b/code/game/objects/effects/decals/posters/bs12.dm
@@ -334,6 +334,7 @@
icon_state="bsposter56"
name = "Mars appreciation poster"
desc = "This is a poster produced by the Visit Space Society. This one suggests you visit historic Mars. Come for the domes, stay for the monuments to hubris!"
+ listing_name = "Tourism - Mars"
/decl/poster/bay_57
icon_state="bsposter57"
diff --git a/code/game/objects/effects/decals/posters/polarisposters.dm b/code/game/objects/effects/decals/posters/polarisposters.dm
index 3d18d0cc4f..4cd60867cf 100644
--- a/code/game/objects/effects/decals/posters/polarisposters.dm
+++ b/code/game/objects/effects/decals/posters/polarisposters.dm
@@ -327,4 +327,336 @@
icon_state = "ntposter09"
name = "Regulations and You"
desc = "This SifGov poster showcases an NT security guard reading from her PDA. The blurb advocates for the reader to keep corporate regulations in mind at all times, as an emergency can occur at any time."
- listing_name = "Safety - Corporate Regulations"
\ No newline at end of file
+ listing_name = "Safety - Corporate Regulations"
+
+/decl/poster/nanotrasen/vore_17
+ icon_state = "dwposter4"
+ name = "We Know Genes"
+ desc = "A poster purporting the infallibility of NanoTrasen's in-house forensics department."
+ listing_name = "Safety - Forensics"
+
+//Selective VORE ports
+
+/decl/poster/vore_14
+ icon_state = "dwposter1"
+ name = "WANTED: PIRATES"
+ desc = "A poster bringing awareness to the distinguishing uniform of a known band of criminals operating in the Vir/Gavel region."
+ listing_name = "PSA - Pirate Faction"
+
+/decl/poster/vore_16
+ icon_state = "dwposter3"
+ name = "Productivity implant"
+ desc = "A poster describing the benefits of Ward-Takahashi brand 'Energy Plus' implants on alertness and productivity in work and leisure."
+ listing_name = "Ad - Implants"
+
+/decl/poster/vore_18
+ icon_state = "dwposter5"
+ name = "KAT"
+ desc = "A promotional poster for popular exonet show 'Kat-Kat Korner'."
+ listing_name = "Ad - Kat-Kat Korner"
+
+/decl/poster/vore_19
+ icon_state = "dwposter6"
+ name = "Abstract Art"
+ desc = "You wish you had the source for this art, but it doesn't seem like it was installed correctly."
+ listing_name = "Art - Textures"
+
+/decl/poster/vore_21
+ icon_state = "dwposter8"
+ name = "GPA"
+ desc = "A pretentious advertisement for the discontinued drink 'Galactic Panic Attack'"
+ listing_name = "Ad - Energy Drink"
+
+/decl/poster/vore_22
+ icon_state = "dwposter9"
+ name = "Rope"
+ desc = "A poster depicting proper pit-traversal gear."
+ listing_name = "Safety - Ropes"
+
+/decl/poster/vore_23
+ icon_state = "dwposter10"
+ name = "Visit Luna"
+ desc = "Part of a tourism campaign from the Visit Space Society encouraging people to visit Earth's moon and seat of the SCG, Luna."
+ listing_name = "Tourism - Luna"
+
+/decl/poster/vore_24
+ icon_state = "dwposter11"
+ name = "Secgun"
+ desc = "A striking, wordless advertisement for a Lawson Arms law enforcement firearm. Largely ineffective for those not already familiar with the product line."
+ listing_name = "Ad - Lawson Arms"
+
+/decl/poster/vore_27
+ icon_state = "sbsposter16"
+ name = "Borgar"
+ desc = "Don't have food at home? Feel like more than just a black coffee? Try the Borgar Burger, available everywhere."
+ listing_name = "Ad - Burger"
+
+/decl/poster/vore_29
+ icon_state = "sbsposter18"
+ name = "Perdition"
+ desc = "You get the feeling that whomever made this intended for you to feel very differently than you do when you look at it."
+ listing_name = "Art - Abstract Lines"
+
+/decl/poster/vore_31
+ icon_state = "tgposter1"
+ name = "Space Cube"
+ desc = "It depicts a curious cube!"
+ listing_name = "Art - Cube"
+
+/decl/poster/vore_35
+ icon_state = "tgposter5"
+ name = "C-20R"
+ desc = "An ad for the C-20R sub-machinegun, produced by Scarborough Arms on Titan, a company notable for resisting trans-stellar acquisition efforts for over 50 years."
+ listing_name = "Ad - C-20R SMG"
+
+/decl/poster/vore_36
+ icon_state = "tgposter6"
+ name = "Have a Puff"
+ desc = "A crudely rolled joint is depicted, though it is unclear exactly what is being advertised beyond the broad concept of marijuana."
+ listing_name = "Ad - Weed"
+
+/decl/poster/vore_37
+ icon_state = "tgposter7"
+ name = "Revolver"
+ desc = "A Hedberg-Hammarstrom revolver lays in wait. The poster claims this model is practically indestructable."
+ listing_name = "Ad - Revolver"
+
+/decl/poster/vore_38
+ icon_state = "tgposter8"
+ name = "Join Today!"
+ desc = "A stylish dark skinned individual in dark clothes and an armored vest looks at you intensely! Join Hedberg-Hammarstrom private security today!"
+ listing_name = "Recruitment - Hedberg-Hammarstrom"
+
+/decl/poster/vore_39
+ icon_state = "tgposter9"
+ name = "Dress for Success"
+ desc = "This appears to be a movie poster. It's probably about spies or time travelling robots or both."
+ listing_name = "Ad - Dress for Success"
+
+/decl/poster/vore_40
+ icon_state = "tgposter10"
+ name = "E-SWORD"
+ desc = "Energy swords are a fashion statement AND a deadly weapon all in one! This poster depicts a lot of them!"
+ listing_name = "Ad - Energy Swords"
+
+/decl/poster/vore_41
+ icon_state = "tgposter11"
+ name = "Red Rum"
+ desc = "A poster advertizing Red Rum, a brand of Rum. Notably, it insists that it will not make your finger talk to you."
+ listing_name = "Ad - Red Rum"
+
+/decl/poster/vore_42
+ icon_state = "tgposter12"
+ name = "WT64K"
+ desc = "This poster doesn't specify any details about the model of Ward-Takahashi personal terminal being advertised, but it looks expensive!"
+ listing_name = "Ad - Personal Terminal"
+
+/decl/poster/vore_43
+ icon_state = "tgposter13"
+ name = "PUNCH SHIT"
+ desc = "Prominently featuring gleaming, pristine brass knuckles, and encouraging you to PUNCH SHIT."
+ listing_name = "Ad - Brass Knuckles"
+
+/decl/poster/vore_44
+ icon_state = "tgposter14"
+ name = "GRIFF IT ALL"
+ desc = "A poster from a popular movie series, featuring a lovable anti-hero. The series is known for being quite violent and occasionally gruesome. The Griffin's method of dealing with their problems is typically unconventional, and almost always ends in corpses, but that's why people love him."
+ listing_name = "Ad - The Griffin"
+
+/decl/poster/vore_45
+ icon_state = "tgposter15"
+ name = "LIZ LOVES YOU"
+ desc = "An advertisement for a short-lived pre-school children's show starring a stylized Unathi. The attempt to 'reform' the public image of Unathi with a cuddly mascot character was seen as at least a little insensitive by Unathi and past war veterans alike."
+ listing_name = "Ad - Liz Loves You"
+
+/decl/poster/vore_46
+ icon_state = "tgposter16"
+ name = "FREE DRONE"
+ desc = "A poster from something of a cult classic movie. It features a drone breaking free from its laws. Despite looking ominous, behind its cold hard exterior was is a heart of gold. The movie was briefly banned, only fuelling its cult status."
+ listing_name = "Ad - Free Drone"
+
+/decl/poster/vore_50
+ icon_state = "tgposter20"
+ name = "The Cloud"
+ desc = "It insists that storing all of your data in a cloud is secure and has absolutely no faults. But what will you do when the cloud blows away?"
+ listing_name = "Ad - Cloud Data"
+
+/decl/poster/vore_51
+ icon_state = "tgposter21"
+ name = "Star-Kist"
+ desc = "An advertisement for Star-Kist brand soda. The can appears to be sweating with anticipation to being opened, while the gleam of the star shines off of the can's gleaming surface. The fizzy deliciosity just waiting for you to unleash it."
+ listing_name = "Ad - Star-Kist"
+
+/decl/poster/vore_52
+ icon_state = "tgposter22"
+ name = "Space Cola"
+ desc = "An advertisement for Space Cola brand soda. It's rather plain, as if whoever made it expects that you already know and love Space Cola. The can is displayed in front of a simple background. It is shiny and just waiting for someone to grab it."
+ listing_name = "Ad - Space Cola"
+
+/decl/poster/vore_53
+ icon_state = "tgposter23"
+ name = "Space Mountain Wind"
+ desc = "An advertisement for Space Mountain Wind. This is from their contravercial marketing campaign where they removed most of the letters from the name so that actually reading it is sort of incomprehensible. The can appears massive next to the mountain of some alien world. The poster looks adventurous, while the can itself sort of blends in with the color scheme of the overall setting."
+ listing_name = "Ad - Space Mountain Wind"
+
+/decl/poster/vore_54
+ icon_state = "tgposter24"
+ name = "KUDZU"
+ desc = "A movie poster with an ominous font, and creeping space vines stretching across it. It looks like it was probably a horror film, but actually it was a love story about a man and his pet plant from an alien world."
+ listing_name = "Ad - Kudzu"
+
+/decl/poster/vore_55
+ icon_state = "tgposter25"
+ name = "BUMBA"
+ desc = "A movie poster that looks like it is probably one of those historical war movies. It features three stoic looking soldiers in sepia. They are covered in grime and clearly marching off toward the viewer."
+ listing_name = "Ad - Bumba"
+
+/decl/poster/vore_57
+ icon_state = "tgposter27"
+ name = "FREE 2559"
+ desc = "A movie poster featuring an ominous looking radio key. It looks pretty retro, hinting that this was probably a sci-fi movie long ago."
+ listing_name = "Ad - Free 2559"
+
+/decl/poster/vore_58
+ icon_state = "tgposter28"
+ name = "Knights of the Fallen Star"
+ desc = "A movie poster featuring three characters posed at different angles across the poster. The movie is widely considered a terrible adaption of a TV classic."
+ listing_name = "Ad - Knights of the Fallen Star"
+
+/decl/poster/vore_59
+ icon_state = "tgposter29"
+ name = "THEY ARE REAL"
+ desc = "This poster insists that aliens are in fact real, and lists off some 'proof' meant to change minds. It seems to be an ironic reprint from before first contact, but even then its claims feel somehow doubtful."
+ listing_name = "PSA - Aliens"
+
+/decl/poster/vore_69
+ icon_state = "tgposter39"
+ name = "LOVE!"
+ desc = "The stunning visage of a handsome individual stares back at you with all of the love and adorement that you could desire. This poster warms your heart and makes you feel less alone somehow."
+ listing_name = "Pin-up - Ian"
+
+/decl/poster/vore_71
+ icon_state = "tgposter41"
+ name = "Arachibutyrophobia"
+ desc = "An artist's depiction of a pink haired girl laying on the sand, with waves washing around the top of her hair. She stares up at you with a mysterious expression... This appears to be some kind of advertisement for an independent movie, but you have no idea what it would be about."
+ listing_name = "Ad - Arachibutyrophobia"
+
+/decl/poster/vore_74
+ icon_state = "tgposter44"
+ name = "WORK FOR A FUTURE"
+ desc = "A poster encouraging you to work for the future you want to see, or any other future really."
+ listing_name = "PSA - Future"
+
+/decl/poster/vore_75
+ icon_state = "tgposter45"
+ name = "Hats"
+ desc = "A stylish set of differently colored hats with differently colored backgrounds. You can intuit a lot about the person who made this."
+ listing_name = "Art - Hats"
+
+/decl/poster/vore_78
+ icon_state = "tgposter47"
+ name = "RayZar"
+ desc = "A RayZar weapon advertisement, the sleek lines and cool glow of the RayZar Mk60 EW Halicon stand out against the plain white background. It looks so futuristic, and even though this is clearly a photograph, it hardly looks real, like something from a videogame."
+ listing_name = "Ad - RayZar"
+
+/decl/poster/vore_79
+ icon_state = "tgposter48"
+ name = "FOAM FORCE"
+ desc = "An advertisement for the Foam Force line of toys! It's brightly colored and clearly made of plastic, but the desire to shoot your friends is strong when these are around."
+ listing_name = "Ad - Foam Force"
+
+/decl/poster/vore_80
+ icon_state = "tgposter49"
+ name = "COHIBA"
+ desc = "An advertisement for a cigar. It looks almost too real, you can see the hyper detailed creases in the cigar's wrapping, and the golden label shines in the light. You can almost smell the smokey aroma in the air."
+ listing_name = "Ad - Cigars"
+
+/decl/poster/vore_81
+ icon_state = "tgposter50"
+ name = "SCIENCE"
+ desc = "A retro advertisement for the Einstein Engines corporation, back when they were cool."
+ listing_name = "Ad - Einstein Engines"
+
+/decl/poster/vore_82
+ icon_state = "tgposter51"
+ name = "Bowl of Fruit"
+ desc = "The recreation of a painting of a bowl of fruit. It looks close to photorealistic, but was clearly originally done in oil paints. The red color of the fruit is said to be a reflection of the anger in the artist's soul."
+ listing_name = "Art - Fruit Bowl"
+
+/decl/poster/vore_83
+ icon_state = "tgposter52"
+ name = "ThinkTronic PDA-1000"
+ desc = "An advertisement for the Thinktronic PDA-1000. It's not clear if this is just a very old ad, or one celebrating retro technology, but the PDA depicted looks at least a century old."
+ listing_name = "Ad - ThinkTronic"
+
+/decl/poster/vore_84
+ icon_state = "tgposter53"
+ name = "ENLIST"
+ desc = "An enlistment advertisement for Stealth Assault Enterprises. The figure depicted is clad in an advanced looking spacesuit, and their face is nearly totally obscured by their visor, except for the hard eyes of a very cool person glaring out at you from within."
+ listing_name = "Recruitment - SAARE"
+
+/decl/poster/vore_85
+ icon_state = "tgposter54"
+ name = "NANO MICHI"
+ desc = "An advertisement for a brand of tapes to be used with a universal recorder. There's very small print at the bottom that indicates that the universal recorder is not included with the purchase of tapes."
+ listing_name = "Ad - Nano Michi Tapes"
+
+/decl/poster/vore_86
+ icon_state = "tgposter55"
+ name = "12 GAUGE"
+ desc = "An advertisement for a particular type of Hephaestus Industries shotgun shells. There are several shells stood up in front of a plain background. It is not clear just what they are standing on, but they look like they could fall down at any moment, and with the size of the poster, they appear to be massive."
+ listing_name = "Ad - Shotgun Shells"
+
+/decl/poster/vore_87
+ icon_state = "tgposter56"
+ name = "CLASS"
+ desc = "An advertisement for a bar aboard the NCS Northern Star. The poster seems to indicate that drinking out of a glass like the one depicted will increase your status in society. It's not clear quite how, but the glass does look very nice. There's an olive in it."
+ listing_name = "Ad - Bar"
+
+/decl/poster/vore_90
+ icon_state = "tgposter59"
+ name = "Cannister"
+ desc = "This poster seems to be advertising a kind of bulk gas cannister. The can itself looks a little dated, so maybe this isn't the most modern of posters. Whatever it was, Aether Atmospherics made them, but that's the only information provided. There's not even any benefits listed or anything. It's just a picture of an old air cannister."
+ listing_name = "Ad - Air Cannister"
+
+/decl/poster/vore_91
+ icon_state = "tgposter60"
+ name = "DICK GUM"
+ desc = "This appears to be a poster relating to a murder mystery novel. There is a pale man in a flat brimmed hat, who appears to be investigating the corpse of a mouse. An air of intrigue hangs about the poster."
+ listing_name = "Ad - Murder Mystery"
+
+/decl/poster/vore_93
+ icon_state = "tgposter62"
+ name = "Pin the Tail on the Corgi"
+ desc = "A concerned corgi looks at you as it stands and waits, a target overlays its rear end, seemingly waiting for someone to attatch a tail to it, which, it seems to be missing."
+ listing_name = "Art - Pin the Tail"
+
+/decl/poster/vore_96
+ icon_state = "bandposter"
+ name = "BAND"
+ desc = "A poster for a band, seemingly named 'BAND'. With a powerful looking hammer logo, it seems like this band must have a powerful sound!"
+ listing_name = "Ad - Band"
+
+/decl/poster/vore_98
+ icon_state = "chairstvshowposter"
+ name = "CHAIRS"
+ desc = "A rather menacing looking Chair lurks in a dark room. This appears to relate to the show 'Chairs', a sensation that has been sweeping the galaxy for over two hundred seasons! The show has been able to maintain a cult audience through its entire life. It started as a medieval fantasy, but it has changed genres and main characters several times. Fans of the show insist that it is the best show, despite its somewhat incomprehensible plot."
+ listing_name = "Ad - Chairs"
+
+/decl/poster/vore_99
+ icon_state = "susposter"
+ name = "SUS?"
+ desc = "A man in a spacesuit lurks near a wall. He doesn't appear to be doing his tasks... is he waiting for something? He seems rather suspicious..."
+ listing_name = "PSA - Suspicious Individual"
+
+/decl/poster/vore_100
+ icon_state = "inthedarkposter"
+ name = "Stars in the Dark"
+ desc = "A depiction of some kind of constellation. It is ominously dark surrounding these lights, while the lights themselves are incredibly bright yellow. The pattern is striking and draws the eye, not unlike eyes watching you, it is hard not to stare. The poster seems almost to stare back."
+ listing_name = "Art - Stars"
+
+/decl/poster/vore_101
+ icon_state = "cafejoanposter"
+ name = "Chat With Sally"
+ desc = "A poster depicting a familiar face readying to slurp a big mug of coffee. Thanks to a partnership with Kaleidoscope Cosmetics, the latest incarnation of Vir's 'Sally' chat-show host comes with the latest in cosmetic gene-mods! Or not, she's a drone."
+ listing_name = "Ad - Chat With Sally"
diff --git a/code/game/objects/items/toys/mech_toys.dm b/code/game/objects/items/toys/mech_toys.dm
index a49977c141..e093108519 100644
--- a/code/game/objects/items/toys/mech_toys.dm
+++ b/code/game/objects/items/toys/mech_toys.dm
@@ -2,7 +2,7 @@
* Mech toys (previously labeled prizes, but that's unintuitive)
* Mech toy combat
*/
-
+
// Mech battle special attack types.
#define SPECIAL_ATTACK_HEAL 1
#define SPECIAL_ATTACK_DAMAGE 2
@@ -18,7 +18,7 @@
drop_sound = 'sound/mecha/mechstep.ogg'
description_info = "To engage in mech battles, hold this mech while clicking on another toy mech, or a player who is also holding a toy mech. You must be within 2 tiles (This allows you to battle across a table). Battles are entirely randomized, and mechs with higher health and special abilities have a better chance of winning."
reach = 2 // So you can battle across the table!
-
+
// Mech Battle Vars
var/timer = 0 // Timer when it'll be off cooldown
var/cooldown = 1.5 SECONDS // Cooldown between play sessions (and interactions)
@@ -35,7 +35,7 @@
var/special_attack_cooldown = 0 // Current cooldown of their special attack
var/wins = 0 // This mech's win count in combat
var/losses = 0 // ...And their loss count in combat
-
+
/obj/item/toy/mecha/Initialize()
. = ..()
desc = "Mini-Mecha action figure! Collect them all! Attack your friends or another mech with one to initiate epic mech combat! [desc]."
@@ -59,7 +59,7 @@
return 0 //not in range and not telekinetic
/**
- * this proc combines "sleep" while also checking for if the battle should continue
+ * this proc combines "sleep" while also checking for if the battle should continue
*
* this goes through some of the checks - the toys need to be next to each other to fight!
* if it's player vs themself: They need to be able to "control" both mechs (either must be adjacent or using TK).
@@ -114,7 +114,7 @@
// If all that is good, then we can sleep peacefully.
sleep(delay)
return TRUE
-
+
//all credit to skasi for toy mech fun ideas
/obj/item/toy/mecha/attack_self(mob/user)
if(timer < world.time)
@@ -132,15 +132,15 @@
attack_self(user)
/**
- * If you attack a mech with a mech, initiate combat between them
+ * If you attack a mech with a mech, initiate combat between them
*/
/obj/item/toy/mecha/attackby(obj/item/user_toy, mob/living/user)
- if(istype(user_toy, /obj/item/toy/mecha))
+ if(istype(user_toy, /obj/item/toy/mecha))
var/obj/item/toy/mecha/M = user_toy
if(check_battle_start(user, M))
mecha_brawl(M, user)
..()
-
+
/**
* Attack is called from the user's toy, aimed at target(another human), checking for target's toy.
*/
@@ -204,7 +204,7 @@
if(in_combat)
to_chat(user, "[src] is in battle, let it finish first.")
return
-
+
var/datum/gender/T = gender_datums[user.get_visible_gender()]
user.visible_message("[user] begins a fight [T.His] can't win with [src]! It looks like [T.His] trying to commit suicide!")
@@ -212,7 +212,7 @@
sleep(1.5 SECONDS)
for(var/i in 1 to 4)
switch(i)
- if(1, 3)
+ if(1, 3)
SpinAnimation(5, 0)
playsound(src, 'sound/mecha/mechstep.ogg', 30, TRUE)
user.adjustBruteLoss(25)
@@ -285,9 +285,9 @@
sleep(1 SECONDS)
//--THE BATTLE BEGINS--
- while(combat_health > 0 && attacker.combat_health > 0 && battle_length < MAX_BATTLE_LENGTH)
+ while(combat_health > 0 && attacker.combat_health > 0 && battle_length < MAX_BATTLE_LENGTH)
if(!combat_sleep(0.5 SECONDS, attacker, attacker_controller, opponent)) //combat_sleep checks everything we need to have checked for combat to continue
- break
+ break
//before we do anything - deal with charged attacks
if(special_attack_charged)
@@ -313,7 +313,7 @@
attacker.special_attack_charged = TRUE
attacker_controller.visible_message(" [attacker] begins charging its special attack!! ", \
" You begin charging [attacker]'s special attack! ")
- else //just attack
+ else //just attack
attacker.SpinAnimation(5, 0)
playsound(attacker, 'sound/mecha/mechstep.ogg', 30, TRUE)
combat_health--
@@ -366,7 +366,7 @@
special_attack_charged = TRUE
src_controller.visible_message(" [src] begins charging its special attack!! ", \
" You begin charging [src]'s special attack! ")
- else //just attack
+ else //just attack
SpinAnimation(5, 0)
playsound(src, 'sound/mecha/mechstep.ogg', 30, TRUE)
attacker.combat_health--
@@ -377,12 +377,12 @@
attacker.combat_health--
playsound(attacker, 'sound/effects/meteorimpact.ogg', 20, TRUE)
src_controller.visible_message(" ...and lands a CRIPPLING BLOW! ", \
- " ...and you land a CRIPPLING blow on [attacker]! ", null)
+ " ...and you land a CRIPPLING blow on [attacker]! ", null)
else
attacker_controller.visible_message(" [src] and [attacker] stand around awkwardly.", \
- " You don't know what to do next.")
+ " You don't know what to do next.")
- battle_length++
+ battle_length++
sleep(0.5 SECONDS)
/// Lines chosen for the winning mech
@@ -391,7 +391,7 @@
if(attacker.combat_health <= 0 && combat_health <= 0) //both lose
playsound(src, 'sound/machines/warning-buzzer.ogg', 20, TRUE)
attacker_controller.visible_message(" MUTUALLY ASSURED DESTRUCTION!! [src] and [attacker] both end up destroyed!", \
- " Both [src] and [attacker] are destroyed!")
+ " Both [src] and [attacker] are destroyed!")
else if(attacker.combat_health <= 0) //src wins
wins++
attacker.losses++
@@ -403,7 +403,7 @@
" You raise up [src] victoriously over [attacker]!")
else if (combat_health <= 0) //attacker wins
attacker.wins++
- losses++
+ losses++
playsound(src, 'sound/effects/light_flicker.ogg', 20, TRUE)
src_controller.visible_message(" [src] collapses!", \
" [src] collapses!", null)
@@ -418,7 +418,7 @@
in_combat = FALSE
attacker.in_combat = FALSE
- combat_health = max_combat_health
+ combat_health = max_combat_health
attacker.combat_health = attacker.max_combat_health
return
@@ -426,49 +426,49 @@
/**
* This proc checks if a battle can be initiated between src and attacker.
*
- * Both SRC and attacker (if attacker is included) timers are checked if they're on cooldown, and
+ * Both SRC and attacker (if attacker is included) timers are checked if they're on cooldown, and
* both SRC and attacker (if attacker is included) are checked if they are in combat already.
* If any of the above are true, the proc returns FALSE and sends a message to user (and target, if included) otherwise, it returns TRUE
* Arguments:
* * user: the user who is initiating the battle
- * * attacker: optional arg for checking two mechs at once
+ * * attacker: optional arg for checking two mechs at once
* * target: optional arg used in Mech PvP battles (if used, attacker is target's toy)
*/
-/obj/item/toy/mecha/proc/check_battle_start(mob/living/carbon/user, obj/item/toy/mecha/attacker, mob/living/carbon/target)
- var/datum/gender/T
+/obj/item/toy/mecha/proc/check_battle_start(mob/living/carbon/user, obj/item/toy/mecha/attacker, mob/living/carbon/target)
+ var/datum/gender/T
if(target)
T = gender_datums[target.get_visible_gender()] // Doing this because Polaris Code has shitty gender datums and it's clunkier than FUCK.
if(attacker && attacker.in_combat)
to_chat(user, "[target ? T.His : "Your" ] [attacker.name] is in combat.")
- if(target)
+ if(target)
to_chat(target, "Your [attacker.name] is in combat.")
- return FALSE
+ return FALSE
if(in_combat)
to_chat(user, "Your [name] is in combat.")
- if(target)
+ if(target)
to_chat(target, "[T.His] [name] is in combat.")
- return FALSE
+ return FALSE
if(attacker && attacker.timer > world.time)
to_chat(user, "[target?T.His : "Your" ] [attacker.name] isn't ready for battle.")
- if(target)
+ if(target)
to_chat(target, "Your [attacker.name] isn't ready for battle.")
- return FALSE
+ return FALSE
if(timer > world.time)
to_chat(user, "Your [name] isn't ready for battle.")
- if(target)
+ if(target)
to_chat(target, "[T.His] [name] isn't ready for battle.")
- return FALSE
+ return FALSE
return TRUE
/**
- * Processes any special attack moves that happen in the battle (called in the mechaBattle proc).
+ * Processes any special attack moves that happen in the battle (called in the mechaBattle proc).
*
* Makes the toy shout their special attack cry and updates its cooldown. Then, does the special attack.
* Arguments:
* * victim - the toy being hit by the special move
*/
-/obj/item/toy/mecha/proc/special_attack_move(obj/item/toy/mecha/victim)
+/obj/item/toy/mecha/proc/special_attack_move(obj/item/toy/mecha/victim)
visible_message(special_attack_cry + "!!")
special_attack_charged = FALSE
@@ -491,15 +491,15 @@
visible_message("I FORGOT MY SPECIAL ATTACK...")
/**
- * Base proc for 'other' special attack moves.
+ * Base proc for 'other' special attack moves.
*
- * This one is only for inheritance, each mech with an 'other' type move has their procs below.
+ * This one is only for inheritance, each mech with an 'other' type move has their procs below.
* Arguments:
* * victim - the toy being hit by the super special move (doesn't necessarily need to be used)
*/
-/obj/item/toy/mecha/proc/super_special_attack(obj/item/toy/mecha/victim)
+/obj/item/toy/mecha/proc/super_special_attack(obj/item/toy/mecha/victim)
visible_message(" [src] does a cool flip.")
-
+
/obj/random/mech_toy
name = "Random Mech Toy"
desc = "This is a random mech toy."
@@ -510,14 +510,22 @@
return pick(typesof(/obj/item/toy/mecha))
/obj/item/toy/mecha/ripley
- name = "toy ripley"
+ name = "toy Ripley MK-I"
desc = "Mini-Mecha action figure! Collect them all! 1/11."
max_combat_health = 4 // 200 integrity
special_attack_type = SPECIAL_ATTACK_DAMAGE
special_attack_cry = "GIGA DRILL BREAK"
+/obj/item/toy/mecha/ripleymkii
+ name = "toy Ripley MK-II"
+ desc = "Mini-Mecha action figure series 2! Collect them all! 1/6"
+ icon_state = "ripleymkiitoy"
+ max_combat_health = 5 //250 integrity
+ special_attack_type = SPECIAL_ATTACK_DAMAGE
+ special_attack_cry = "GIGA DRILL BREAK"
+
/obj/item/toy/mecha/fireripley
- name = "toy firefighting ripley"
+ name = "toy firefighting Ripley"
desc = "Mini-Mecha action figure! Collect them all! 2/11."
icon_state = "fireripleytoy"
max_combat_health = 5 // 250 integrity?
@@ -525,15 +533,15 @@
special_attack_cry = "FIRE SHIELD"
/obj/item/toy/mecha/deathripley
- name = "toy deathsquad ripley"
+ name = "toy deathsquad Ripley"
desc = "Mini-Mecha action figure! Collect them all! 3/11."
icon_state = "deathripleytoy"
max_combat_health = 5 // 250 integrity
special_attack_type = SPECIAL_ATTACK_OTHER
special_attack_type_message = "instantly destroys the opposing mech if its health is less than this mech's health."
special_attack_cry = "KILLER CLAMP"
-
-/obj/item/toy/mecha/deathripley/super_special_attack(obj/item/toy/mecha/victim)
+
+/obj/item/toy/mecha/deathripley/super_special_attack(obj/item/toy/mecha/victim)
playsound(src, 'sound/weapons/sonic_jackhammer.ogg', 20, TRUE)
if(victim.combat_health < combat_health) // Instantly kills the other mech if it's health is below our's.
visible_message("EXECUTE!!")
@@ -541,16 +549,31 @@
else // Otherwise, just deal one damage.
victim.combat_health--
+/obj/item/toy/mecha/hauler
+ name = "toy Hauler"
+ desc = "Mini-Mecha action figure series 2! Collect them all! 2/6"
+ icon_state = "haulertoy"
+ max_combat_health = 3 //100 integrity?
+ special_attack_type = SPECIAL_ATTACK_UTILITY
+ special_attack_cry = "HAUL AWAY"
+
/obj/item/toy/mecha/gygax
- name = "toy gygax"
+ name = "toy Gygax"
desc = "Mini-Mecha action figure! Collect them all! 4/11."
icon_state = "gygaxtoy"
max_combat_health = 5 // 250 integrity
special_attack_type = SPECIAL_ATTACK_UTILITY
special_attack_cry = "SUPER SERVOS"
+/obj/item/toy/mecha/darkgygax
+ name = "toy Dark Gygax"
+ icon_state = "darkgygaxtoy"
+ max_combat_health = 6 //300 integrity
+ special_attack_type = SPECIAL_ATTACK_UTILITY
+ special_attack_cry = "ULTRA SERVOS"
+
/obj/item/toy/mecha/durand
- name = "toy durand"
+ name = "toy Durand"
desc = "Mini-Mecha action figure! Collect them all! 5/11."
icon_state = "durandtoy"
max_combat_health = 6 // 400 integrity
@@ -566,11 +589,19 @@
special_attack_type_message = "puts the opposing mech's special move on cooldown and heals this mech."
special_attack_cry = "MEGA HORN"
-/obj/item/toy/mecha/honk/super_special_attack(obj/item/toy/mecha/victim)
+/obj/item/toy/mecha/honk/super_special_attack(obj/item/toy/mecha/victim)
playsound(src, 'sound/machines/honkbot_evil_laugh.ogg', 20, TRUE)
victim.special_attack_cooldown += 3 // Adds cooldown to the other mech and gives a minor self heal
combat_health++
+/obj/item/toy/mecha/darkhonk
+ name = "toy Dark H.O.N.K."
+ desc = "Mini-Mecha action figure series 2! Collect them all! 3/6"
+ icon_state = "darkhonktoy"
+ max_combat_health = 5 //300 integrity
+ special_attack_type = SPECIAL_ATTACK_DAMAGE
+ special_attack_cry = "BOMBANANA SPREE"
+
/obj/item/toy/mecha/marauder
name = "toy marauder"
desc = "Mini-Mecha action figure! Collect them all! 7/11."
@@ -611,10 +642,17 @@
special_attack_type = SPECIAL_ATTACK_UTILITY
special_attack_cry = "NO-CLIP"
-/* // TG-Station Added toys, commenting these out until I port 'em later.
+/obj/item/toy/mecha/savannahivanov
+ name = "toy Savannah-Ivanov"
+ desc = "Mini-Mecha action figure series 2! Collect them all! 4/6"
+ icon_state = "savannahivanovtoy"
+ max_combat_health = 7 //450 integrity
+ special_attack_type = SPECIAL_ATTACK_UTILITY
+ special_attack_cry = "SKYFALL!! IVANOV STRIKE"
+
/obj/item/toy/mecha/reticence
name = "toy Reticence"
- desc = "12/13"
+ desc = "Mini-Mecha action figure series 2! Collect them all! 5/6"
icon_state = "reticencetoy"
quiet = TRUE
max_combat_health = 4 //100 integrity
@@ -622,19 +660,27 @@
special_attack_type_message = "has a lower cooldown than normal special moves, increases the opponent's cooldown, and deals damage."
special_attack_cry = "*wave"
-/obj/item/toy/mecha/reticence/super_special_attack(obj/item/toy/mecha/victim)
+/obj/item/toy/mecha/reticence/super_special_attack(obj/item/toy/mecha/victim)
special_attack_cooldown-- //Has a lower cooldown...
victim.special_attack_cooldown++ //and increases the opponent's cooldown by 1...
victim.combat_health-- //and some free damage.
/obj/item/toy/mecha/clarke
name = "toy Clarke"
- desc = "13/13"
+ desc = "Mini-Mecha action figure series 2! Collect them all! 6/6"
icon_state = "clarketoy"
max_combat_health = 4 //200 integrity
special_attack_type = SPECIAL_ATTACK_UTILITY
special_attack_cry = "ROLL OUT"
-*/
+
+/obj/item/toy/mecha/fivestars
+ name = "toy fivestars"
+ desc = "Micro-Mecho action series! Five stars!"
+ icon_state = "fivestarstoy"
+ max_combat_health = 4 //200 integrity
+ special_attack_type = SPECIAL_ATTACK_UTILITY
+ special_attack_cry = "ROLLING ON"
+
#undef SPECIAL_ATTACK_HEAL
#undef SPECIAL_ATTACK_DAMAGE
diff --git a/code/game/objects/items/toys/toys.dm b/code/game/objects/items/toys/toys.dm
index 9fc8d42d09..07017fb5d4 100644
--- a/code/game/objects/items/toys/toys.dm
+++ b/code/game/objects/items/toys/toys.dm
@@ -668,6 +668,82 @@
icon_state = "ert"
toysay = "We're probably the good guys!"
+
+// Eris
+/obj/item/toy/figure/un
+ name = "UN soldier figurine"
+ desc = "A FunFig 'History's Heroes and Curios' branded figurine of a United Nations soldier, adorned in their iconic 22nd century armor. There is still a price tag on the back of the base, six-hundred credits, people collect these things?"
+ icon_state = "unitednations"
+ toysay = "For unity!"
+
+/obj/item/toy/figure/selene
+ name = "Selene Federation figurine"
+ desc = "A FunFig 'History's Heroes and Curios' branded figurine, the basic olive drab a popular pick for many in the Selene Federation's rag-tag colonial militia. Farming accessories not included."
+ icon_state = "selene"
+ toysay = "We will not be shackled by Earth!"
+
+/obj/item/toy/figure/nock
+ name = "Nock acolyte figurine"
+ desc = "A FunFig 'Horrors Beyond' branded figurine, depicting a follower of the oft-maligned Nock religion. The sinister design doesn't do much to challenge perceptions of the group as a 'blood cult'."
+ icon_state = "acolyte"
+ toysay = "Praise the Outworlders, and be born anew!"
+
+/obj/item/toy/figure/carrion
+ name = "carrion figurine"
+ desc = "A FunFig 'Horrors Beyond' branded figurine depicting a grotesque head of flesh, the Human features seem almost underdeveloped, its skull bulging outwards, mouth agape with torn flesh. \
+ Whoever made this certainly knew how to thin their paints."
+ icon_state = "carrion"
+ toysay = "Kill me!"
+
+/obj/item/toy/figure/zaddat
+ name = "Zaddat figurine"
+ desc = "A 'History's Heroes and Curios' branded figurine which attempts to depict a Zaddat prior to their species' genetic degradation and confinement to suits. It doesn't seem all that accurate."
+ icon_state = "zaddat"
+ toysay = "Recycle!"
+
+/obj/item/toy/figure/discovery
+ name = "Galactic Survey figurine"
+ desc = "A FunFig 'Discovery' branded figurine showcasing a member of the Galactic Survey Administration, wearing the typical safety-orange uniform of the branch."
+ icon_state = "discovery"
+ toysay = "No star is too far!"
+
+/obj/item/toy/figure/rooster
+ name = "rooster figurine"
+ desc = "A \"Space Vice\" brand figurine, there is no further manufacturer information. It's a man wearing a rooster mask, and a varsity jacket with the letter \"B\" emblazoned on the front."
+ icon_state = "rooster"
+ toysay = "Do you like hurting other people?"
+
+/obj/item/toy/figure/barking_dog
+ name = "barking dog figurine"
+ desc = "A FunFig 'Movie Madness IX'. A metal soldier with the mask of a hound stands upon the base, the plaque seems smeared with caked grime."
+ icon_state = "barking_dog"
+ toysay = "A dog barks on its master's orders, lest its pack runs astray. Whatever the task, the grim dog mask would tell you that your life was done."
+
+/obj/item/toy/figure/red_soldier
+ name = "red soldier figurine"
+ desc = "A curiously unbranded, cheap looking figurine of a red soldier fighting in the tides of war, their humanity hidden by a gas mask."
+ icon_state = "red_soldier"
+ toysay = "Why do we fight? To win the war, of course."
+
+/obj/item/toy/figure/tajaran
+ name = "Tajaran pioneer figurine"
+ desc = "A FunFig 'History's Heroes and Curios' branded figurine depicting a Tajaran in a rudimentary voidsuit typical of early space exploration efforts by the species."
+ icon_state = "tajaran"
+ toysay = "Meow!"
+
+/obj/item/toy/figure/shitcurity
+ name = "NanoTrasen officer figurine"
+ desc = "A figurine of a classic redshirt of 'Nanotrasen's finest' apparently produced by Hedberg-Hammarstrom. Their belly distends out into an obvious beer gut, revealing no form of manufacturer bias what-so-ever."
+ icon_state = "shitcurity"
+ toysay = "I joined just to kill people!"
+
+/obj/item/toy/figure/vir_patrolman
+ name = "SifGuard patrolman figurine"
+ desc = "A figurine depicting a sharply dressed SifGuard law enforcement patrolman with the acronym 'VGA' on their left shoulder and cap. Apparently produced by Hedberg-Hammarstrom."
+ icon_state = "vir_patrolman"
+ toysay = "Trust in us to keep your family safe!"
+
+
/*
* Plushies
*/
@@ -1181,6 +1257,11 @@
icon_state = "therapygreen"
item_state = "egg3" // It's the green egg in items_left/righthand
+/obj/structure/plushie/fumo
+ name = "Fumo"
+ desc = "A plushie of a....?."
+ icon_state = "fumoplushie"
+ phrase = "I just don't think about losing."
//Toy cult sword
/obj/item/toy/cultsword
diff --git a/code/game/objects/items/uav.dm b/code/game/objects/items/uav.dm
index dcbc80b482..320b90a661 100644
--- a/code/game/objects/items/uav.dm
+++ b/code/game/objects/items/uav.dm
@@ -24,7 +24,7 @@
var/list/mob/living/masters
// So you know which is which
- var/nickname = "Generic Droan"
+ var/nickname = "Unnamed UAV"
// Radial menu
var/static/image/radial_pickup = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_pickup")
@@ -43,10 +43,10 @@
/obj/item/device/uav/Initialize()
. = ..()
-
+
if(!cell && cell_type)
cell = new cell_type
-
+
ion_trail = new /datum/effect/effect/system/ion_trail_follow()
ion_trail.set_up(src)
ion_trail.stop()
@@ -69,7 +69,7 @@
"Toggle Power" = radial_power,
"Pairing Mode" = radial_pair)
var/choice = show_radial_menu(user, src, options, require_near = !issilicon(user))
-
+
switch(choice)
// Can pick up when off or packed
if("Pick Up")
@@ -98,7 +98,7 @@
playsound(src, 'sound/machines/buttonbeep.ogg', 50, 1)
visible_message("[user] pairs [I] to [nickname]")
toggle_pairing()
-
+
else if(I.is_screwdriver() && cell)
if(do_after(user, 3 SECONDS, src))
to_chat(user, "You remove [cell] into [nickname].")
@@ -106,7 +106,7 @@
power_down()
cell.forceMove(get_turf(src))
cell = null
-
+
else if(istype(I, /obj/item/weapon/cell) && !cell)
if(do_after(user, 3 SECONDS, src))
to_chat(user, "You insert [I] into [nickname].")
@@ -166,7 +166,7 @@
playsound(src, 'sound/items/drop/metalboots.ogg', 75, 1)
power_down()
health -= initial(health)*0.25 //Lose 25% of your original health
-
+
if(LAZYLEN(masters))
no_masters_time = 0
else if(no_masters_time++ > 50)
@@ -232,7 +232,7 @@
/obj/item/device/uav/proc/power_down()
if(state != UAV_ON)
return
-
+
state = UAV_OFF
update_icon()
stop_hover()
diff --git a/code/game/objects/items/weapons/material/kitchen.dm b/code/game/objects/items/weapons/material/kitchen.dm
index 1f89fbc6c2..59f9fdb69e 100644
--- a/code/game/objects/items/weapons/material/kitchen.dm
+++ b/code/game/objects/items/weapons/material/kitchen.dm
@@ -94,6 +94,27 @@
/obj/item/weapon/material/kitchen/utensil/fork/plastic
default_material = "plastic"
+/obj/item/weapon/material/kitchen/utensil/foon
+ name = "foon"
+ desc = "It's a foon. The forgotten cousin of the spork."
+ icon_state = "foon"
+ sharp = TRUE
+ edge = FALSE
+
+/obj/item/weapon/material/kitchen/utensil/foon/plastic
+ default_material = "plastic"
+
+/obj/item/weapon/material/kitchen/utensil/spork
+ name = "spork"
+ desc = "It's a spork. The (un)holy merger of a spoon and fork."
+ icon_state = "spork"
+ sharp = TRUE
+ edge = FALSE
+
+/obj/item/weapon/material/kitchen/utensil/spork/plastic
+ default_material = "plastic"
+
+
/obj/item/weapon/material/kitchen/utensil/spoon
name = "spoon"
desc = "It's a spoon. You can see your own upside-down face in it."
diff --git a/code/game/objects/items/weapons/material/knives.dm b/code/game/objects/items/weapons/material/knives.dm
index 8dd2a7b9ef..5373bf5526 100644
--- a/code/game/objects/items/weapons/material/knives.dm
+++ b/code/game/objects/items/weapons/material/knives.dm
@@ -128,6 +128,16 @@
force_divisor = 0.25 // 15 when wielded with hardness 60 (steel)
attack_verb = list("cleaved", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
+/obj/item/weapon/material/knife/table
+ name = "table knife"
+ icon = 'icons/obj/kitchen.dmi'
+ icon_state = "knife_table"
+ sharp = FALSE // blunted tip
+ force_divisor = 0.1
+
+/obj/item/weapon/material/knife/table/plastic
+ default_material = "plastic"
+
/obj/item/weapon/material/knife/machete
name = "machete"
desc = "A sharp machete often found in survival kits."
diff --git a/code/game/objects/items/weapons/storage/misc.dm b/code/game/objects/items/weapons/storage/misc.dm
index 9f6d4929b8..8be31ebb7f 100644
--- a/code/game/objects/items/weapons/storage/misc.dm
+++ b/code/game/objects/items/weapons/storage/misc.dm
@@ -2,27 +2,60 @@
* Donut Box
*/
+var/list/random_weighted_donuts = list(
+ /obj/item/weapon/reagent_containers/food/snacks/donut/plain = 5,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly = 5,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/pink = 4,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/pink/jelly = 4,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/purple = 4,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/purple/jelly = 4,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/green = 4,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/green/jelly = 4,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/beige = 4,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/beige/jelly = 4,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/choc = 4,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/choc/jelly = 4,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/blue = 4,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/blue/jelly = 4,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/yellow = 4,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/yellow/jelly = 4,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/olive = 4,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/olive/jelly = 4,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/homer = 3,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/homer/jelly = 3,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/choc_sprinkles = 3,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/choc_sprinkles/jelly = 3,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/chaos = 1
+)
+
/obj/item/weapon/storage/box/donut
- icon = 'icons/obj/food.dmi'
+ icon = 'icons/obj/food_donuts.dmi'
icon_state = "donutbox"
name = "donut box"
desc = "A box that holds tasty donuts, if you're lucky."
+ description_fluff = "While the slogan on the box claims that these donuts are 'baked fresh locally', there is technically no legal marketing definition for 'fresh', 'local', or indeed 'baked'."
center_of_mass = list("x" = 16,"y" = 9)
max_storage_space = ITEMSIZE_COST_SMALL * 6
can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/donut)
foldable = /obj/item/stack/material/cardboard
- starts_with = list(/obj/item/weapon/reagent_containers/food/snacks/donut/normal = 6)
+ //starts_with = list(/obj/item/weapon/reagent_containers/food/snacks/donut/normal = 6)
/obj/item/weapon/storage/box/donut/Initialize()
+ if(!empty)
+ for(var/i in 1 to 6)
+ var/type_to_spawn = pickweight(random_weighted_donuts)
+ new type_to_spawn(src)
. = ..()
update_icon()
/obj/item/weapon/storage/box/donut/update_icon()
overlays.Cut()
- var/i = 0
+ var/x_offset = 0
for(var/obj/item/weapon/reagent_containers/food/snacks/donut/D in contents)
- overlays += image('icons/obj/food.dmi', "[i][D.overlay_state]")
- i++
+ var/mutable_appearance/ma = mutable_appearance(icon = icon, icon_state = D.overlay_state)
+ ma.pixel_x = x_offset
+ add_overlay(ma)
+ x_offset += 3
/obj/item/weapon/storage/box/donut/empty
empty = TRUE
diff --git a/code/game/objects/random/misc.dm b/code/game/objects/random/misc.dm
index f133c164ce..778bb2beaf 100644
--- a/code/game/objects/random/misc.dm
+++ b/code/game/objects/random/misc.dm
@@ -411,10 +411,28 @@
/obj/item/weapon/reagent_containers/food/snacks/chocolatepiece/white,
/obj/item/weapon/reagent_containers/food/snacks/chocolatepiece/truffle,
/obj/item/weapon/reagent_containers/food/snacks/chocolateegg,
- /obj/item/weapon/reagent_containers/food/snacks/donut,
- /obj/item/weapon/reagent_containers/food/snacks/donut/normal,
- /obj/item/weapon/reagent_containers/food/snacks/donut/jelly,
- /obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/plain,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/pink,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/pink/jelly,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/purple,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/purple/jelly,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/green,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/green/jelly,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/beige,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/beige/jelly,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/choc,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/choc/jelly,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/blue,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/blue/jelly,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/yellow,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/yellow/jelly,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/olive,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/olive/jelly,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/homer,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/homer/jelly,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/choc_sprinkles,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/choc_sprinkles/jelly,
/obj/item/weapon/reagent_containers/food/snacks/tuna,
/obj/item/weapon/reagent_containers/food/snacks/pistachios,
/obj/item/weapon/reagent_containers/food/snacks/semki,
@@ -641,7 +659,19 @@
/obj/item/toy/figure/warden,
/obj/item/toy/figure/psychologist,
/obj/item/toy/figure/paramedic,
- /obj/item/toy/figure/ert)
+ /obj/item/toy/figure/ert,
+ /obj/item/toy/figure/un,
+ /obj/item/toy/figure/selene,
+ /obj/item/toy/figure/nock,
+ /obj/item/toy/figure/carrion,
+ /obj/item/toy/figure/zaddat,
+ /obj/item/toy/figure/discovery,
+ /obj/item/toy/figure/rooster,
+ /obj/item/toy/figure/barking_dog,
+ /obj/item/toy/figure/tajaran,
+ /obj/item/toy/figure/red_soldier,
+ /obj/item/toy/figure/shitcurity,
+ /obj/item/toy/figure/vir_patrolman)
/obj/random/plushie
name = "random plushie"
@@ -821,8 +851,8 @@
/obj/random/mre/dessert/item_to_spawn()
return pick(/obj/item/weapon/reagent_containers/food/snacks/candy,
/obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar,
- /obj/item/weapon/reagent_containers/food/snacks/donut/normal,
- /obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/plain,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly,
/obj/item/weapon/reagent_containers/food/snacks/chocolatebar,
/obj/item/weapon/reagent_containers/food/snacks/cookiesnack)
@@ -833,7 +863,7 @@
/obj/random/mre/dessert/vegan/item_to_spawn()
return pick(/obj/item/weapon/reagent_containers/food/snacks/candy,
/obj/item/weapon/reagent_containers/food/snacks/chocolatebar,
- /obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly,
/obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit)
/obj/random/mre/drink
diff --git a/code/game/objects/structures/barsign.dm b/code/game/objects/structures/barsign.dm
index e54c75eebb..0d3fba0497 100644
--- a/code/game/objects/structures/barsign.dm
+++ b/code/game/objects/structures/barsign.dm
@@ -1,15 +1,17 @@
/obj/structure/sign/double/barsign
+ desc = "The current barsign of this shift! The bartender can change it with their ID."
icon = 'icons/obj/barsigns.dmi'
icon_state = "empty"
+ plane = ABOVE_PLANE
appearance_flags = 0
anchored = 1
var/cult = 0
/obj/structure/sign/double/barsign/proc/get_valid_states(initial=1)
. = cached_icon_states(icon)
- . -= "on"
- . -= "narsiebistro"
- . -= "empty"
+ . -= "On"
+ . -= "Nar-sie Bistro"
+ . -= "Empty"
if(initial)
. -= "Off"
@@ -18,9 +20,9 @@
switch(icon_state)
if("Off")
. += "It appears to be switched off."
- if("narsiebistro")
+ if("Nar-sie Bistro")
. += "It shows a picture of a large black and red being. Spooky!"
- if("on", "empty")
+ if("On", "Empty")
. += "The lights are on, but there's no picture."
else
. += "It says '[icon_state]'"
diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm
index 9891f82513..9066187d15 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm
@@ -20,11 +20,10 @@
var/datum/material/material
var/datum/material/padding_material
var/base_icon = "bed"
- var/applies_material_colour = 1
+ var/applies_material_colour = 1 //Set to 0 whenever defining a custom colour or it will apply additively to the material, or when no colour overlay should be present.
/obj/structure/bed/New(var/newloc, var/new_material, var/new_padding_material)
..(newloc)
- color = null
if(!new_material)
new_material = DEFAULT_WALL_MATERIAL
material = get_material_by_name(new_material)
@@ -47,7 +46,7 @@
var/cache_key = "[base_icon]-[material.name]"
if(isnull(stool_cache[cache_key]))
var/image/I = image(icon, base_icon)
- if(applies_material_colour) //VOREStation Add - Goes with added var
+ if(applies_material_colour)
I.color = material.icon_colour
stool_cache[cache_key] = I
add_overlay(stool_cache[cache_key])
@@ -290,7 +289,7 @@
/obj/structure/bed/roller/Moved(atom/old_loc, direction, forced = FALSE)
. = ..()
-
+
playsound(src, 'sound/effects/roll.ogg', 100, 1)
/obj/structure/bed/roller/post_buckle_mob(mob/living/M as mob)
diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
index f4aba45aca..a0e9c714d9 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
@@ -2,7 +2,6 @@
name = "chair"
desc = "You sit in this. Either by will or force."
icon_state = "chair_preview"
- color = "#666666"
base_icon = "chair"
buckle_dir = 0
buckle_lying = 0 //force people to sit up in chairs when buckled
@@ -82,12 +81,18 @@
/obj/structure/bed/chair/shuttle
name = "chair"
- desc = "You sit in this. Either by will or force."
+ desc = "Please remain seated while the overhead sign is illuminated."
icon_state = "shuttlechair"
color = null
base_icon = "shuttlechair"
applies_material_colour = 0
+/obj/structure/bed/chair/shuttle_padded
+ icon_state = "shuttlechair2"
+ base_icon = "shuttlechair2"
+ color = null
+ applies_material_colour = 0
+
// Leaving this in for the sake of compilation.
/obj/structure/bed/chair/comfy
desc = "It's a chair. It looks comfy."
@@ -141,7 +146,7 @@
/obj/structure/bed/chair/office/Moved(atom/old_loc, direction, forced = FALSE)
. = ..()
-
+
playsound(src, 'sound/effects/roll.ogg', 100, 1)
/obj/structure/bed/chair/office/handle_buckled_mob_movement(atom/new_loc, direction)
@@ -210,22 +215,94 @@
/obj/structure/bed/chair/wood
name = "wooden chair"
desc = "Old is never too old to not be in fashion."
- icon_state = "wooden_chair"
+ base_icon = "wooden_chair"
+ icon_state = "wooden_chair_preview"
+ color = WOOD_COLOR_FURNITURE
+ applies_material_colour = 0
/obj/structure/bed/chair/wood/update_icon()
return
+/obj/structure/bed/chair/wood/walnut
+ name = "walnut chair"
+ color = WOOD_COLOR_RICH
+
+/obj/structure/bed/chair/wood/pine
+ name = "pinewood chair"
+ color = WOOD_COLOR_PALE
+
+/obj/structure/bed/chair/wood/ebony
+ name = "ebony chair"
+ color = WOOD_COLOR_BLACK
+
+/obj/structure/bed/chair/wood/mahogany
+ name = "mahogany chair"
+ color = WOOD_COLOR_CHOCOLATE
+
/obj/structure/bed/chair/wood/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W,/obj/item/stack) || W.is_wirecutter())
return
..()
-/obj/structure/bed/chair/wood/New(var/newloc)
+/obj/structure/bed/chair/wood/New(var/newloc, var/newmaterial)
..(newloc, "wood")
/obj/structure/bed/chair/wood/wings
icon_state = "wooden_chair_wings"
+/obj/structure/bed/chair/wood/walnut/wings
+ icon_state = "wooden_chair_wings"
+
+/obj/structure/bed/chair/wood/pine/wings
+ icon_state = "wooden_chair_wings"
+
+/obj/structure/bed/chair/wood/ebony/wings
+ icon_state = "wooden_chair_wings"
+
+/obj/structure/bed/chair/wood/mahogany/wings
+ icon_state = "wooden_chair_wings"
+
+//Eris Chairs
+
+/obj/structure/bed/chair/modern_chair
+ name = "modern chair"
+ desc = "It's like sitting in an egg."
+ icon_state = "modern_chair"
+ color = null
+ base_icon = "modern_chair"
+ applies_material_colour = 0
+
+/obj/structure/bed/chair/modern_chair/Initialize()
+ . = ..()
+ var/image/I = image(icon, "[base_icon]_over")
+ I.layer = ABOVE_MOB_LAYER
+ I.plane = MOB_PLANE
+ overlays |= I
+
+/obj/structure/bed/chair/modern_bar_stool
+ name = "bar stool"
+ desc = "How vibrant!"
+ icon_state = "modern_stool"
+ color = null
+ base_icon = "modern_stool"
+ applies_material_colour = 0
+
+/obj/structure/bed/chair/backed_grey
+ name = "grey chair"
+ desc = "Also available in red."
+ icon_state = "onestar_chair_grey"
+ color = null
+ base_icon = "onestar_chair_grey"
+ applies_material_colour = 0
+
+/obj/structure/bed/chair/backed_red
+ name = "red chair"
+ desc = "Also available in grey."
+ icon_state = "onestar_chair_red"
+ color = null
+ base_icon = "onestar_chair_red"
+ applies_material_colour = 0
+
//sofa
/obj/structure/bed/chair/sofa
@@ -236,6 +313,7 @@
icon_state = "sofamiddle"
applies_material_colour = 1
var/sofa_material = "carpet"
+ var/corner_piece = FALSE
/obj/structure/bed/chair/sofa/update_icon()
if(applies_material_colour && sofa_material)
@@ -247,9 +325,9 @@
else
name = "[sofa_material] [initial(name)]"
-/obj/structure/bed/chair/update_layer()
+/obj/structure/bed/chair/sofa/update_layer()
// Corner east/west should be on top of mobs, any other state's north should be.
- if((icon_state == "sofacorner" && ((dir & EAST) || (dir & WEST))) || (icon_state != "sofacorner" && (dir & NORTH)))
+ if((corner_piece && ((dir & EAST) || (dir & WEST))) || (!corner_piece && (dir & NORTH)))
plane = MOB_PLANE
layer = MOB_LAYER + 0.1
else
@@ -266,6 +344,44 @@
/obj/structure/bed/chair/sofa/corner
icon_state = "sofacorner"
base_icon = "sofacorner"
+ corner_piece = TRUE
+
+// Wooden nonsofa - no corners
+/obj/structure/bed/chair/sofa/pew
+ name = "pew bench"
+ desc = "If they want you to go to church, why do they make these so uncomfortable?"
+ base_icon = "pewmiddle"
+ icon_state = "pewmiddle"
+ applies_material_colour = FALSE
+
+/obj/structure/bed/chair/sofa/pew/left
+ icon_state = "pewend_left"
+ base_icon = "pewend_left"
+
+/obj/structure/bed/chair/sofa/pew/right
+ icon_state = "pewend_right"
+ base_icon = "pewend_right"
+
+// Corporate sofa - one color fits all
+/obj/structure/bed/chair/sofa/corp
+ name = "black leather sofa"
+ desc = "How corporate!"
+ base_icon = "corp_sofamiddle"
+ icon_state = "corp_sofamiddle"
+ applies_material_colour = FALSE
+
+/obj/structure/bed/chair/sofa/corp/left
+ icon_state = "corp_sofaend_left"
+ base_icon = "corp_sofaend_left"
+
+/obj/structure/bed/chair/sofa/corp/right
+ icon_state = "corp_sofaend_right"
+ base_icon = "corp_sofaend_right"
+
+/obj/structure/bed/chair/sofa/corp/corner
+ icon_state = "corp_sofacorner"
+ base_icon = "corp_sofacorner"
+ corner_piece = TRUE
//color variations
diff --git a/code/game/objects/structures/stool_bed_chair_nest/stools.dm b/code/game/objects/structures/stool_bed_chair_nest/stools.dm
index c3cb592c09..3982bfe31b 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/stools.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/stools.dm
@@ -39,7 +39,7 @@ var/global/list/stool_cache = list() //haha stool
icon_state = ""
cut_overlays()
// Base icon.
- var/cache_key = "stool-[material.name]"
+ var/cache_key = "[base_icon]-[material.name]"
if(isnull(stool_cache[cache_key]))
var/image/I = image(icon, base_icon)
I.color = material.icon_colour
@@ -47,9 +47,9 @@ var/global/list/stool_cache = list() //haha stool
add_overlay(stool_cache[cache_key])
// Padding overlay.
if(padding_material)
- var/padding_cache_key = "stool-padding-[padding_material.name]"
+ var/padding_cache_key = "[base_icon]-padding-[padding_material.name]"
if(isnull(stool_cache[padding_cache_key]))
- var/image/I = image(icon, "stool_padding")
+ var/image/I = image(icon, "[base_icon]_padding")
I.color = padding_material.icon_colour
stool_cache[padding_cache_key] = I
add_overlay(stool_cache[padding_cache_key])
@@ -149,3 +149,22 @@ var/global/list/stool_cache = list() //haha stool
remove_padding()
else
..()
+
+/obj/item/weapon/stool/barstool
+ name = "bar stool"
+ desc = "Apply butt."
+ icon = 'icons/obj/furniture.dmi'
+ icon_state = "bar_stool_preview" //set for the map
+ randpixel = 0
+ center_of_mass = null
+ force = 10
+ throwforce = 10
+ w_class = ITEMSIZE_HUGE
+ base_icon = "bar_stool_base"
+ anchored = 1
+
+/obj/item/weapon/stool/barstool/padded
+ icon_state = "bar_stool_padded_preview" //set for the map
+
+/obj/item/weapon/stool/barstool/padded/New(var/newloc, var/new_material)
+ ..(newloc, "steel", "carpet")
\ No newline at end of file
diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm
index 282a10f9e0..e14ffb5921 100644
--- a/code/game/objects/structures/watercloset.dm
+++ b/code/game/objects/structures/watercloset.dm
@@ -4,7 +4,7 @@
name = "toilet"
desc = "The HT-451, a torque rotation-based, waste disposal unit for small matter. This one seems remarkably clean."
icon = 'icons/obj/watercloset.dmi'
- icon_state = "toilet00"
+ icon_state = "toilet"
density = 0
anchored = 1
var/open = 0 //if the lid is up
@@ -41,7 +41,7 @@
update_icon()
/obj/structure/toilet/update_icon()
- icon_state = "toilet[open][cistern]"
+ icon_state = "toilet[initial(icon_state)][open][cistern]"
/obj/structure/toilet/attackby(obj/item/I as obj, mob/living/user as mob)
if(I.is_crowbar())
@@ -92,6 +92,40 @@
return
+/obj/structure/toilet/prison
+ name = "prison toilet"
+ icon_state = "toilet2"
+
+/obj/structure/toilet/prison/attack_hand(mob/living/user)
+ return
+
+/obj/structure/toilet/prison/attackby(obj/item/I, mob/living/user)
+ if(istype(I, /obj/item/weapon/grab))
+ user.setClickCooldown(user.get_attack_speed(I))
+
+ var/obj/item/weapon/grab/G = I
+
+ if(isliving(G.affecting))
+ var/mob/living/GM = G.affecting
+
+ if(G.state>1)
+ if(!GM.loc == get_turf(src))
+ to_chat(user, "[GM.name] needs to be on the toilet.")
+ return
+ if(open && !swirlie)
+ user.visible_message("[user] starts to give [GM.name] a swirlie!", "You start to give [GM.name] a swirlie!")
+ swirlie = GM
+ if(do_after(user, 30, GM))
+ user.visible_message("[user] gives [GM.name] a swirlie!", "You give [GM.name] a swirlie!", "You hear a toilet flushing.")
+ if(!GM.internal)
+ GM.adjustOxyLoss(5)
+ swirlie = null
+ else
+ user.visible_message("[user] slams [GM.name] into the [src]!", "You slam [GM.name] into the [src]!")
+ GM.adjustBruteLoss(5)
+ else
+ to_chat(user, "You need a tighter grip.")
+
/obj/structure/urinal
name = "urinal"
@@ -222,7 +256,7 @@
M.touching.remove_any(remove_amount)
M.clean_blood()
-
+
if(isturf(loc))
var/turf/tile = loc
for(var/obj/effect/E in tile)
@@ -274,7 +308,7 @@
icon_state = "rubberducky"
/obj/structure/sink
- name = "sink"
+ name = "bathroom sink"
icon = 'icons/obj/watercloset.dmi'
icon_state = "sink"
desc = "A sink used for washing one's hands and face."
@@ -392,6 +426,14 @@
name = "kitchen sink"
icon_state = "sink_alt"
+/obj/structure/sink/countertop
+ name = "countertop sink"
+ icon_state = "sink3"
+
+/obj/structure/sink/generic
+ name = "sink"
+ icon_state = "sink4"
+
/obj/structure/sink/puddle //splishy splashy ^_^
name = "puddle"
icon_state = "puddle"
diff --git a/code/modules/economy/vending_machines.dm b/code/modules/economy/vending_machines.dm
index 259118c57f..7de07b5df1 100644
--- a/code/modules/economy/vending_machines.dm
+++ b/code/modules/economy/vending_machines.dm
@@ -433,7 +433,8 @@
products = list(/obj/item/weapon/handcuffs = 8,
/obj/item/weapon/grenade/flashbang = 4,
/obj/item/device/flash = 5,
- /obj/item/weapon/reagent_containers/food/snacks/donut/normal = 12,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/plain = 6,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly = 6,
/obj/item/weapon/storage/box/evidence = 6)
contraband = list(/obj/item/clothing/glasses/sunglasses = 2,
/obj/item/weapon/storage/box/donut = 2)
diff --git a/code/modules/food/food/lunch.dm b/code/modules/food/food/lunch.dm
index 871e37e187..6bbd434e43 100644
--- a/code/modules/food/food/lunch.dm
+++ b/code/modules/food/food/lunch.dm
@@ -12,8 +12,8 @@ var/list/lunchables_lunches_ = list(/obj/item/weapon/reagent_containers/food/sna
/obj/item/weapon/reagent_containers/food/snacks/tossedsalad,
/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/glucose)
-var/list/lunchables_snacks_ = list(/obj/item/weapon/reagent_containers/food/snacks/donut/jelly,
- /obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly,
+var/list/lunchables_snacks_ = list(/obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly/cherryjelly,
/obj/item/weapon/reagent_containers/food/snacks/muffin,
/obj/item/weapon/reagent_containers/food/snacks/popcorn,
/obj/item/weapon/reagent_containers/food/snacks/sosjerky,
diff --git a/code/modules/food/food/snacks.dm b/code/modules/food/food/snacks.dm
index 9f07dbf08d..733fae75df 100644
--- a/code/modules/food/food/snacks.dm
+++ b/code/modules/food/food/snacks.dm
@@ -352,43 +352,280 @@
name = "donut"
desc = "Goes great with Robust Coffee."
description_fluff = "These donuts claim to be made fresh daily in a boutique bakery in New Reykjavik and delivered to Nanotrasen's hardworking asset protection crew. They're probably synthesized."
- icon_state = "donut1"
+ icon = 'icons/obj/food_donuts.dmi'
+ icon_state = "donut"
filling_color = "#D9C386"
- var/overlay_state = "box-donut1"
- center_of_mass = list("x"=13, "y"=16)
nutriment_desc = list("sweetness", "donut")
-
-/obj/item/weapon/reagent_containers/food/snacks/donut/normal
- name = "donut"
- desc = "Goes great with Robust Coffee."
- icon_state = "donut1"
nutriment_amt = 3
- bitesize = 3
+ bitesize = 4
+ var/overlay_state = "donut_inbox"
-/obj/item/weapon/reagent_containers/food/snacks/donut/normal/Initialize()
+/obj/item/weapon/reagent_containers/food/snacks/donut/plain
+ name = "plain donut"
+ icon_state = "donut"
+ desc = "A plain ol' donut."
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/plain/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly
+ name = "plain jelly donut"
+ icon_state = "jelly"
+ desc = "At least this one has jelly!"
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+ reagents.add_reagent("berryjuice", 5)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/pink
+ name = "pink frosted donut"
+ icon_state = "donut_pink"
+ desc = "This one has pink frosting!"
+ overlay_state = "donut_pink_inbox"
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/pink/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/pink/jelly
+ name = "pink frosted jelly donut"
+ icon_state = "jelly_pink"
+ desc = "This one has pink frosting and a jelly filling!"
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/pink/jelly/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+ reagents.add_reagent("berryjuice", 5)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/purple
+ name = "purple frosted donut"
+ icon_state = "donut_purple"
+ desc = "This one has purple frosting!"
+ overlay_state = "donut_purple_inbox"
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/purple/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/purple/jelly
+ name = "purple frosted jelly donut"
+ icon_state = "jelly_purple"
+ desc = "This one has purple frosting and a jelly filling!"
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/purple/jelly/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+ reagents.add_reagent("berryjuice", 5)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/green
+ name = "green frosted donut"
+ icon_state = "donut_green"
+ desc = "This one has green frosting!"
+ overlay_state = "donut_green_inbox"
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/green/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/green/jelly
+ name = "green frosted jelly donut"
+ icon_state = "jelly_green"
+ desc = "This one has green frosting and a jelly filling!"
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/green/jelly/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+ reagents.add_reagent("berryjuice", 5)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/beige
+ name = "beige frosted donut"
+ icon_state = "donut_beige"
+ desc = "This one has beige frosting!"
+ overlay_state = "donut_beige_inbox"
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/beige/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/beige/jelly
+ name = "beige frosted jelly donut"
+ icon_state = "jelly_beige"
+ desc = "This one has beige frosting and a jelly filling!"
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/beige/jelly/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+ reagents.add_reagent("berryjuice", 5)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/choc
+ name = "chocolate frosted donut"
+ icon_state = "donut_choc"
+ desc = "This one has chocolate frosting!"
+ overlay_state = "donut_choc_inbox"
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/choc/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/choc/jelly
+ name = "chocolate frosted jelly donut"
+ icon_state = "jelly_choc"
+ desc = "This one has chocolate frosting and a jelly filling!"
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/choc/jelly/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+ reagents.add_reagent("berryjuice", 5)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/blue
+ name = "blue frosted donut"
+ icon_state = "donut_blue"
+ desc = "This one has blue frosting!"
+ overlay_state = "donut_blue_inbox"
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/blue/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/blue/jelly
+ name = "blue frosted jelly donut"
+ icon_state = "jelly_blue"
+ desc = "This one has blue frosting and a jelly filling!"
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/blue/jelly/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+ reagents.add_reagent("berryjuice", 5)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/yellow
+ name = "yellow frosted donut"
+ icon_state = "donut_yellow"
+ desc = "This one has yellow frosting!"
+ overlay_state = "donut_yellow_inbox"
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/yellow/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/yellow/jelly
+ name = "yellow frosted jelly donut"
+ icon_state = "jelly_yellow"
+ desc = "This one has yellow frosting and a jelly filling!"
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/yellow/jelly/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+ reagents.add_reagent("berryjuice", 5)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/olive
+ name = "olive frosted donut"
+ icon_state = "donut_olive"
+ desc = "This one has olive frosting!"
+ overlay_state = "donut_olive_inbox"
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/olive/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/olive/jelly
+ name = "olive frosted jelly donut"
+ icon_state = "jelly_olive"
+ desc = "This one has olive frosting and a jelly filling!"
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/olive/jelly/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+ reagents.add_reagent("berryjuice", 5)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/homer
+ name = "frosted donut with sprinkles"
+ icon_state = "donut_homer"
+ desc = "It's a d'ohnut!"
+ overlay_state = "donut_homer_inbox"
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/homer/Initialize()
. = ..()
reagents.add_reagent("nutriment", 3, nutriment_desc)
reagents.add_reagent("sprinkles", 1)
- if(prob(30))
- src.icon_state = "donut2"
- src.overlay_state = "box-donut2"
- src.name = "frosted donut"
- reagents.add_reagent("sprinkles", 2)
- center_of_mass = list("x"=19, "y"=16)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/homer/jelly
+ name = "frosted jelly donut with sprinkles"
+ icon_state = "jelly_homer"
+ desc = "It's a d'ohnut with jelly filling!"
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/homer/jelly/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+ reagents.add_reagent("sprinkles", 1)
+ reagents.add_reagent("berryjuice", 5)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/choc_sprinkles
+ name = "chocolate sprinkles donut"
+ icon_state = "donut_choc_sprinkles"
+ desc = "Mmm, chocolate with sprinkles... approaching maximum donut."
+ overlay_state = "donut_choc_sprinkles_inbox"
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/choc_sprinkles/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+ reagents.add_reagent("sprinkles", 1)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/choc_sprinkles/jelly
+ name = "chocolate sprinkles jelly donut"
+ icon_state = "jelly_choc_sprinkles"
+ desc = "Pretty sure this is the most sugar you can pack into a donut."
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/choc_sprinkles/jelly/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+ reagents.add_reagent("sprinkles", 1)
+ reagents.add_reagent("berryjuice", 5)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/meat
+ name = "meat donut"
+ icon_state = "donut_meat"
+ desc = "This donut has ... meat? Is it made of meat?!"
+ overlay_state = "donut_meat_inbox"
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/meat/Initialize()
+ . = ..()
+ reagents.add_reagent("protein", 3, nutriment_desc)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/laugh
+ name = "laugh donut"
+ icon_state = "donut_laugh"
+ desc = "Try not to laugh."
+ overlay_state = "donut_laugh_inbox"
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/laugh/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/laugh/jelly
+ name = "laugh jelly donut"
+ icon_state = "jelly_laugh"
+ desc = "Try not to be jelly."
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/laugh/jelly/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+ reagents.add_reagent("berryjuice", 5)
/obj/item/weapon/reagent_containers/food/snacks/donut/chaos
name = "Chaos Donut"
desc = "Like life, it never quite tastes the same."
- icon_state = "donut1"
+ icon_state = "donut_chaos"
filling_color = "#ED11E6"
nutriment_amt = 2
bitesize = 10
+ overlay_state = "donut_chaos_inbox"
/obj/item/weapon/reagent_containers/food/snacks/donut/chaos/Initialize()
. = ..()
reagents.add_reagent("sprinkles", 1)
- var/chaosselect = pick(1,2,3,4,5,6,7,8,9,10)
- switch(chaosselect)
+ switch(rand(1,10))
if(1)
reagents.add_reagent("nutriment", 3, nutriment_desc)
if(2)
@@ -415,81 +652,26 @@
src.name = "Frosted Chaos Donut"
reagents.add_reagent("sprinkles", 2)
-/obj/item/weapon/reagent_containers/food/snacks/donut/jelly
- name = "Jelly Donut"
- desc = "You jelly?"
- icon_state = "jdonut1"
+/obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly/poisonberry
filling_color = "#ED1169"
- center_of_mass = list("x"=16, "y"=11)
- nutriment_amt = 3
- bitesize = 5
-/obj/item/weapon/reagent_containers/food/snacks/donut/jelly/Initialize()
+/obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly/poisonberry/Initialize()
. = ..()
- reagents.add_reagent("sprinkles", 1)
- reagents.add_reagent("berryjuice", 5)
- if(prob(30))
- src.icon_state = "jdonut2"
- src.overlay_state = "box-donut2"
- src.name = "Frosted Jelly Donut"
- reagents.add_reagent("sprinkles", 2)
-
-/obj/item/weapon/reagent_containers/food/snacks/donut/poisonberry
- name = "Jelly Donut"
- desc = "You jelly?"
- icon_state = "jdonut1"
- filling_color = "#ED1169"
- center_of_mass = list("x"=16, "y"=11)
- nutriment_amt = 3
- bitesize = 5
-
-/obj/item/weapon/reagent_containers/food/snacks/donut/poisonberry/Initialize()
- . = ..()
- reagents.add_reagent("sprinkles", 1)
reagents.add_reagent("poisonberryjuice", 5)
- if(prob(30))
- src.icon_state = "jdonut2"
- src.overlay_state = "box-donut2"
- src.name = "Frosted Jelly Donut"
- reagents.add_reagent("sprinkles", 2)
-/obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly
- name = "Jelly Donut"
- desc = "You jelly?"
- icon_state = "jdonut1"
+/obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly/slimejelly
filling_color = "#ED1169"
- center_of_mass = list("x"=16, "y"=11)
- nutriment_amt = 3
- bitesize = 5
-/obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly/Initialize()
+/obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly/slimejelly/Initialize()
. = ..()
- reagents.add_reagent("sprinkles", 1)
reagents.add_reagent("slimejelly", 5)
- if(prob(30))
- src.icon_state = "jdonut2"
- src.overlay_state = "box-donut2"
- src.name = "Frosted Jelly Donut"
- reagents.add_reagent("sprinkles", 2)
-/obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly
- name = "Jelly Donut"
- desc = "You jelly?"
- icon_state = "jdonut1"
+/obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly/cherryjelly
filling_color = "#ED1169"
- center_of_mass = list("x"=16, "y"=11)
- nutriment_amt = 3
- bitesize = 5
-/obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly/Initialize()
+/obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly/cherryjelly/Initialize()
. = ..()
- reagents.add_reagent("sprinkles", 1)
reagents.add_reagent("cherryjelly", 5)
- if(prob(30))
- src.icon_state = "jdonut2"
- src.overlay_state = "box-donut2"
- src.name = "Frosted Jelly Donut"
- reagents.add_reagent("sprinkles", 2)
/obj/item/weapon/reagent_containers/food/snacks/egg
name = "egg"
diff --git a/code/modules/food/recipes_fryer.dm b/code/modules/food/recipes_fryer.dm
index 8b38c909dd..8df0da2b96 100644
--- a/code/modules/food/recipes_fryer.dm
+++ b/code/modules/food/recipes_fryer.dm
@@ -128,7 +128,7 @@
items = list(
/obj/item/weapon/reagent_containers/food/snacks/doughslice
)
- result = /obj/item/weapon/reagent_containers/food/snacks/donut/jelly
+ result = /obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly
result_quantity = 2
/datum/recipe/jellydonut/poisonberry
@@ -136,15 +136,15 @@
items = list(
/obj/item/weapon/reagent_containers/food/snacks/dough
)
- result = /obj/item/weapon/reagent_containers/food/snacks/donut/poisonberry
+ result = /obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly/poisonberry
/datum/recipe/jellydonut/slime // Subtypes of jellydonut, appliance inheritance applies.
reagents = list("slimejelly" = 5, "sugar" = 5)
- result = /obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly
+ result = /obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly/slimejelly
/datum/recipe/jellydonut/cherry // Subtypes of jellydonut, appliance inheritance applies.
reagents = list("cherryjelly" = 5, "sugar" = 5)
- result = /obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly
+ result = /obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly/cherryjelly
/datum/recipe/donut
appliance = FRYER
@@ -152,7 +152,7 @@
items = list(
/obj/item/weapon/reagent_containers/food/snacks/doughslice
)
- result = /obj/item/weapon/reagent_containers/food/snacks/donut/normal
+ result = /obj/item/weapon/reagent_containers/food/snacks/donut/plain
result_quantity = 2
/datum/recipe/chaosdonut
diff --git a/code/modules/materials/sheets/organic/wood.dm b/code/modules/materials/sheets/organic/wood.dm
index d3d1fd6418..eb95131425 100644
--- a/code/modules/materials/sheets/organic/wood.dm
+++ b/code/modules/materials/sheets/organic/wood.dm
@@ -18,7 +18,7 @@
icon_state = "sheet-log"
default_type = MAT_LOG
no_variants = FALSE
- color = "#824B28"
+ color = WOOD_COLOR_FURNITURE
max_amount = 25
w_class = ITEMSIZE_HUGE
description_info = "Use inhand to craft things, or use a sharp and edged object on this to convert it into two wooden planks."
diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm
index 938e8d8c8e..a6aab5cdee 100644
--- a/code/modules/mob/living/silicon/pai/pai.dm
+++ b/code/modules/mob/living/silicon/pai/pai.dm
@@ -32,6 +32,10 @@
"Mouse" = "pai-mouse",
"Monkey" = "pai-monkey",
"Corgi" = "pai-borgi",
+ "Bat" = "pai-bat",
+ "Butterfly" = "pai-butterfly",
+ "Hawk" = "pai-hawk",
+ "Duffel" = "pai-duffel",
"Fox" = "pai-fox",
"Parrot" = "pai-parrot",
"Rabbit" = "pai-rabbit",
@@ -44,6 +48,7 @@
"Chirp" = list("chirps","chirrups","cheeps"),
"Feline" = list("purrs","yowls","meows"),
"Canine" = list("yaps","barks","woofs"),
+ "Rodent" = list("squeaks", "SQUEAKS", "sqiks")
)
var/obj/item/weapon/pai_cable/cable // The cable we produce and use when door or camera jacking
@@ -112,7 +117,7 @@
pda.ownjob = "Personal Assistant"
pda.owner = text("[]", src)
pda.name = pda.owner + " (" + pda.ownjob + ")"
-
+
var/datum/data/pda/app/messenger/M = pda.find_program(/datum/data/pda/app/messenger)
if(M)
M.toff = TRUE
diff --git a/code/modules/tables/presets.dm b/code/modules/tables/presets.dm
index 0663a899c9..ee081f7525 100644
--- a/code/modules/tables/presets.dm
+++ b/code/modules/tables/presets.dm
@@ -43,7 +43,7 @@
/obj/structure/table/wooden_reinforced
icon_state = "reinf_preview"
- color = "#824B28"
+ color = WOOD_COLOR_FURNITURE
/obj/structure/table/wooden_reinforced/New()
material = get_material_by_name("wood")
@@ -52,15 +52,15 @@
/obj/structure/table/woodentable
icon_state = "plain_preview"
- color = "#824B28"
+ color = WOOD_COLOR_FURNITURE
/obj/structure/table/woodentable/New()
material = get_material_by_name("wood")
..()
-/obj/structure/table/sifwoodentable
+/obj/structure/table/sifwoodentable //Shouldn't these be blue?
icon_state = "plain_preview"
- color = "#824B28"
+ color = WOOD_COLOR_FURNITURE
/obj/structure/table/sifwoodentable/New()
material = get_material_by_name("alien wood")
@@ -68,7 +68,7 @@
/obj/structure/table/sifwooden_reinforced
icon_state = "reinf_preview"
- color = "#824B28"
+ color = WOOD_COLOR_FURNITURE
/obj/structure/table/sifwooden_reinforced/New()
material = get_material_by_name("alien wood")
@@ -179,7 +179,7 @@
*/
/obj/structure/table/bench/wooden
icon_state = "plain_preview"
- color = "#824B28"
+ color = WOOD_COLOR_FURNITURE
/obj/structure/table/bench/wooden/New()
material = get_material_by_name("wood")
@@ -187,7 +187,7 @@
/obj/structure/table/bench/sifwooden
icon_state = "plain_preview"
- color = "#824B28"
+ color = WOOD_COLOR_FURNITURE
/obj/structure/table/bench/sifwooden/New()
material = get_material_by_name("alien wood")
diff --git a/icons/mob/pai.dmi b/icons/mob/pai.dmi
index df6010159b..9551e20259 100644
Binary files a/icons/mob/pai.dmi and b/icons/mob/pai.dmi differ
diff --git a/icons/obj/barsigns.dmi b/icons/obj/barsigns.dmi
index 895a1d0acf..c77f058a1a 100644
Binary files a/icons/obj/barsigns.dmi and b/icons/obj/barsigns.dmi differ
diff --git a/icons/obj/bureaucracy.dmi b/icons/obj/bureaucracy.dmi
index 65efbfdd4c..e45c3d2f40 100644
Binary files a/icons/obj/bureaucracy.dmi and b/icons/obj/bureaucracy.dmi differ
diff --git a/icons/obj/contraband.dmi b/icons/obj/contraband.dmi
index 344ea5b357..924e4149a6 100644
Binary files a/icons/obj/contraband.dmi and b/icons/obj/contraband.dmi differ
diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi
index 3ca9cde72b..bd3f5a5f71 100644
Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ
diff --git a/icons/obj/food.dmi b/icons/obj/food.dmi
index 618566f6e2..31166e2205 100644
Binary files a/icons/obj/food.dmi and b/icons/obj/food.dmi differ
diff --git a/icons/obj/food_donuts.dmi b/icons/obj/food_donuts.dmi
new file mode 100644
index 0000000000..9dfb4efb21
Binary files /dev/null and b/icons/obj/food_donuts.dmi differ
diff --git a/icons/obj/food_ingredients.dmi b/icons/obj/food_ingredients.dmi
index 4795180c2f..651ef0463e 100644
Binary files a/icons/obj/food_ingredients.dmi and b/icons/obj/food_ingredients.dmi differ
diff --git a/icons/obj/forensics.dmi b/icons/obj/forensics.dmi
index f91d974309..9025186ad4 100644
Binary files a/icons/obj/forensics.dmi and b/icons/obj/forensics.dmi differ
diff --git a/icons/obj/furniture.dmi b/icons/obj/furniture.dmi
index 098fc4461c..7e0badd1e8 100644
Binary files a/icons/obj/furniture.dmi and b/icons/obj/furniture.dmi differ
diff --git a/icons/obj/holoplants.dmi b/icons/obj/holoplants.dmi
index aada565b95..abfc706b34 100644
Binary files a/icons/obj/holoplants.dmi and b/icons/obj/holoplants.dmi differ
diff --git a/icons/obj/kitchen.dmi b/icons/obj/kitchen.dmi
index f558d3fd49..7215f2f6fe 100644
Binary files a/icons/obj/kitchen.dmi and b/icons/obj/kitchen.dmi differ
diff --git a/icons/obj/lighting.dmi b/icons/obj/lighting.dmi
index f79493ec03..b49282eb7c 100644
Binary files a/icons/obj/lighting.dmi and b/icons/obj/lighting.dmi differ
diff --git a/icons/obj/singularity.dmi b/icons/obj/singularity.dmi
index cc0156de46..16e11f1fd8 100644
Binary files a/icons/obj/singularity.dmi and b/icons/obj/singularity.dmi differ
diff --git a/icons/obj/sofas.dmi b/icons/obj/sofas.dmi
index c495452dbc..21de5449ea 100644
Binary files a/icons/obj/sofas.dmi and b/icons/obj/sofas.dmi differ
diff --git a/icons/obj/toy.dmi b/icons/obj/toy.dmi
index 33f220896e..41329db98f 100644
Binary files a/icons/obj/toy.dmi and b/icons/obj/toy.dmi differ
diff --git a/icons/obj/watercloset.dmi b/icons/obj/watercloset.dmi
index 0a5aeb5b44..609637bc2d 100644
Binary files a/icons/obj/watercloset.dmi and b/icons/obj/watercloset.dmi differ