mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2026-08-29 16:18:35 +01:00
Merge branch 'master' of https://github.com/PolarisSS13/Polaris into woodrat_map
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
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"
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
else
|
||||
src.poster_decl = get_poster_decl(/decl/poster, FALSE)
|
||||
|
||||
name += " - No. [src.poster_decl.name]"
|
||||
name += " - [src.poster_decl.name]"
|
||||
return ..()
|
||||
|
||||
//Places the poster on a wall
|
||||
@@ -99,13 +99,14 @@
|
||||
|
||||
var/mob/M = usr
|
||||
var/list/options = list()
|
||||
for(var/decl/poster/posteroption in decls_repository.get_decls_of_type(/decl/poster))
|
||||
options[posteroption.listing_name] = posteroption
|
||||
var/list/decl/poster/posters = decls_repository.get_decls_of_type(/decl/poster)
|
||||
for(var/option in posters)
|
||||
options[posters[option].listing_name] = posters[option]
|
||||
|
||||
var/choice = input(M,"Choose a poster!","Customize Poster") in options
|
||||
if(src && choice && !M.stat && in_range(M,src))
|
||||
poster_decl = options[choice]
|
||||
name = "rolled-up poly-poster - No.[poster_decl.icon_state]"
|
||||
name = "rolled-up poly-poster - [src.poster_decl.name]"
|
||||
to_chat(M, "The poster is now: [choice].")
|
||||
|
||||
|
||||
@@ -203,4 +204,4 @@
|
||||
|
||||
// Non-Random Posters
|
||||
/obj/structure/sign/poster/custom
|
||||
roll_type = /obj/item/poster/custom
|
||||
roll_type = /obj/item/poster/custom
|
||||
|
||||
@@ -215,7 +215,7 @@ var/global/list/tele_landmarks = list() // Terrible, but the alternative is loop
|
||||
if(!istype(candidate) || istype(candidate, /turf/simulated/sky))
|
||||
safety--
|
||||
continue
|
||||
else if(candidate && !candidate.outdoors == OUTDOORS_YES)
|
||||
else if(candidate && !candidate.is_outdoors())
|
||||
safety--
|
||||
continue
|
||||
else
|
||||
|
||||
@@ -1,15 +1,22 @@
|
||||
|
||||
//Binoculars
|
||||
/obj/item/device/binoculars
|
||||
|
||||
name = "binoculars"
|
||||
desc = "A pair of binoculars."
|
||||
zoomdevicename = "eyepieces"
|
||||
icon_state = "binoculars"
|
||||
force = 5.0
|
||||
w_class = ITEMSIZE_SMALL
|
||||
throwforce = 5.0
|
||||
throw_range = 15
|
||||
throw_speed = 3
|
||||
|
||||
//matter = list("metal" = 50,"glass" = 50)
|
||||
|
||||
|
||||
/obj/item/device/binoculars/attack_self(mob/user)
|
||||
zoom()
|
||||
|
||||
//Spyglass
|
||||
/obj/item/device/binoculars/spyglass
|
||||
name = "spyglass"
|
||||
desc = "A classic spyglass. Useful for star-gazing, peeping, and recon."
|
||||
icon_state = "spyglass"
|
||||
slot_flags = SLOT_BELT
|
||||
@@ -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, "<span class='notice'>[src] is in battle, let it finish first.</span>")
|
||||
return
|
||||
|
||||
|
||||
var/datum/gender/T = gender_datums[user.get_visible_gender()]
|
||||
user.visible_message("<span class='suicide'>[user] begins a fight [T.His] can't win with [src]! It looks like [T.His] trying to commit suicide!</span>")
|
||||
|
||||
@@ -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("<span class='danger'> [attacker] begins charging its special attack!! </span>", \
|
||||
"<span class='danger'> You begin charging [attacker]'s special attack! </span>")
|
||||
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("<span class='danger'> [src] begins charging its special attack!! </span>", \
|
||||
"<span class='danger'> You begin charging [src]'s special attack! </span>")
|
||||
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("<span class='boldwarning'> ...and lands a CRIPPLING BLOW! </span>", \
|
||||
"<span class='boldwarning'> ...and you land a CRIPPLING blow on [attacker]! </span>", null)
|
||||
"<span class='boldwarning'> ...and you land a CRIPPLING blow on [attacker]! </span>", null)
|
||||
else
|
||||
attacker_controller.visible_message("<span class='notice'> [src] and [attacker] stand around awkwardly.</span>", \
|
||||
"<span class='notice'> You don't know what to do next.</span>")
|
||||
"<span class='notice'> You don't know what to do next.</span>")
|
||||
|
||||
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("<span class='boldnotice'> MUTUALLY ASSURED DESTRUCTION!! [src] and [attacker] both end up destroyed!</span>", \
|
||||
"<span class='boldnotice'> Both [src] and [attacker] are destroyed!</span>")
|
||||
"<span class='boldnotice'> Both [src] and [attacker] are destroyed!</span>")
|
||||
else if(attacker.combat_health <= 0) //src wins
|
||||
wins++
|
||||
attacker.losses++
|
||||
@@ -403,7 +403,7 @@
|
||||
"<span class='notice'> You raise up [src] victoriously over [attacker]!</span>")
|
||||
else if (combat_health <= 0) //attacker wins
|
||||
attacker.wins++
|
||||
losses++
|
||||
losses++
|
||||
playsound(src, 'sound/effects/light_flicker.ogg', 20, TRUE)
|
||||
src_controller.visible_message("<span class='notice'> [src] collapses!</span>", \
|
||||
"<span class='notice'> [src] collapses!</span>", 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, "<span class='notice'>[target ? T.His : "Your" ] [attacker.name] is in combat.</span>")
|
||||
if(target)
|
||||
if(target)
|
||||
to_chat(target, "<span class='notice'>Your [attacker.name] is in combat.</span>")
|
||||
return FALSE
|
||||
return FALSE
|
||||
if(in_combat)
|
||||
to_chat(user, "<span class='notice'>Your [name] is in combat.</span>")
|
||||
if(target)
|
||||
if(target)
|
||||
to_chat(target, "<span class='notice'>[T.His] [name] is in combat.</span>")
|
||||
return FALSE
|
||||
return FALSE
|
||||
if(attacker && attacker.timer > world.time)
|
||||
to_chat(user, "<span class='notice'>[target?T.His : "Your" ] [attacker.name] isn't ready for battle.</span>")
|
||||
if(target)
|
||||
if(target)
|
||||
to_chat(target, "<span class='notice'>Your [attacker.name] isn't ready for battle.</span>")
|
||||
return FALSE
|
||||
return FALSE
|
||||
if(timer > world.time)
|
||||
to_chat(user, "<span class='notice'>Your [name] isn't ready for battle.</span>")
|
||||
if(target)
|
||||
if(target)
|
||||
to_chat(target, "<span class='notice'>[T.His] [name] isn't ready for battle.</span>")
|
||||
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("<span class='notice'> [src] does a cool flip.</span>")
|
||||
|
||||
|
||||
/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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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("<span class='notice'>[user] pairs [I] to [nickname]</span>")
|
||||
toggle_pairing()
|
||||
|
||||
|
||||
else if(I.is_screwdriver() && cell)
|
||||
if(do_after(user, 3 SECONDS, src))
|
||||
to_chat(user, "<span class='notice'>You remove [cell] into [nickname].</span>")
|
||||
@@ -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, "<span class='notice'>You insert [I] into [nickname].</span>")
|
||||
@@ -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()
|
||||
|
||||
@@ -15,24 +15,44 @@
|
||||
edge = TRUE
|
||||
force_divisor = 0.1 // 6 when wielded with hardness 60 (steel)
|
||||
thrown_force_divisor = 0.25 // 5 when thrown with weight 20 (steel)
|
||||
var/weakref/loaded //Weakref for currently loaded food object.
|
||||
var/scoop_volume = 5
|
||||
var/loaded // Name for currently loaded food object.
|
||||
var/loaded_color // Color for currently loaded food object.
|
||||
|
||||
/obj/item/weapon/material/kitchen/utensil/New()
|
||||
..()
|
||||
/obj/item/weapon/material/kitchen/utensil/Initialize()
|
||||
. = ..()
|
||||
if (prob(60))
|
||||
src.pixel_y = rand(0, 4)
|
||||
create_reagents(5)
|
||||
return
|
||||
create_reagents(scoop_volume)
|
||||
|
||||
/obj/item/weapon/material/kitchen/utensil/update_icon()
|
||||
. = ..()
|
||||
cut_overlays()
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/eaten = loaded?.resolve()
|
||||
if(eaten)
|
||||
if(loaded)
|
||||
var/image/I = new(icon, "loadedfood")
|
||||
I.color = eaten.filling_color
|
||||
I.color = loaded_color
|
||||
add_overlay(I)
|
||||
|
||||
/obj/item/weapon/material/kitchen/utensil/proc/load_food(var/mob/user, var/obj/item/weapon/reagent_containers/food/snacks/loading)
|
||||
if (reagents.total_volume > 0)
|
||||
to_chat(user, SPAN_DANGER("There is already something on \the [src]."))
|
||||
return
|
||||
if (!loading?.reagents?.total_volume)
|
||||
to_chat(user, SPAN_NOTICE("Nothing to scoop up in \the [loading]!"))
|
||||
|
||||
|
||||
loaded = "\the [loading]"
|
||||
user.visible_message( \
|
||||
"<b>\The [user]</b> scoops up some of [loaded] with \the [src]!",
|
||||
SPAN_NOTICE("You scoop up some of [loaded] with \the [src]!")
|
||||
)
|
||||
loading.bitecount++
|
||||
loading.reagents.trans_to_obj(src, min(loading.reagents.total_volume, scoop_volume))
|
||||
loaded_color = loading.filling_color
|
||||
if (loading.reagents.total_volume <= 0)
|
||||
qdel(loading)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/material/kitchen/utensil/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
||||
if(!istype(M))
|
||||
return ..()
|
||||
@@ -46,19 +66,18 @@
|
||||
return ..()
|
||||
|
||||
if (loaded && reagents.total_volume > 0)
|
||||
var/atom/movable/eaten = loaded?.resolve()
|
||||
reagents.trans_to_mob(M, reagents.total_volume, CHEM_INGEST)
|
||||
if(eaten)
|
||||
if(M == user)
|
||||
if(!M.can_eat(eaten))
|
||||
return
|
||||
M.visible_message(SPAN_NOTICE("\The [user] eats some of \the [eaten] with \the [src]."))
|
||||
else
|
||||
user.visible_message(SPAN_WARNING("\The [user] begins to feed \the [M]!"))
|
||||
if(!(M.can_force_feed(user, eaten) && do_mob(user, M, 5 SECONDS)))
|
||||
return
|
||||
M.visible_message(SPAN_NOTICE("\The [user] feeds some of \the [eaten] to \the [M] with \the [src]."))
|
||||
playsound(src,'sound/items/eatfood.ogg', rand(10,40), 1)
|
||||
if(M == user)
|
||||
if(!M.can_eat(loaded))
|
||||
return
|
||||
M.visible_message("<b>\The [user]</b> eats some of [loaded] with \the [src].")
|
||||
else
|
||||
user.visible_message(SPAN_WARNING("\The [user] begins to feed \the [M]!"))
|
||||
if(!(M.can_force_feed(user, loaded) && do_mob(user, M, 5 SECONDS)))
|
||||
return
|
||||
M.visible_message("<b>\The [user]</b> feeds some of [loaded] to \the [M] with \the [src].")
|
||||
playsound(src,'sound/items/eatfood.ogg', rand(10,40), 1)
|
||||
loaded = null
|
||||
update_icon()
|
||||
return
|
||||
else
|
||||
@@ -75,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."
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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]'"
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
return
|
||||
|
||||
/obj/structure/sign/attackby(obj/item/tool as obj, mob/user as mob) //deconstruction
|
||||
if(tool.is_screwdriver() && !istype(src, /obj/structure/sign/double))
|
||||
if(tool.is_screwdriver() && !istype(src, /obj/structure/sign/scenery) && !istype(src, /obj/structure/sign/double))
|
||||
playsound(src, tool.usesound, 50, 1)
|
||||
to_chat(user, "You unfasten the sign with your [tool].")
|
||||
var/obj/item/sign/S = new(src.loc)
|
||||
@@ -63,14 +63,14 @@
|
||||
qdel(src)
|
||||
else ..()
|
||||
|
||||
/obj/structure/sign/double/map
|
||||
/obj/structure/sign/scenery/map
|
||||
name = "station map"
|
||||
desc = "A framed picture of the station."
|
||||
|
||||
/obj/structure/sign/double/map/left
|
||||
/obj/structure/sign/scenery/map/left
|
||||
icon_state = "map-left"
|
||||
|
||||
/obj/structure/sign/double/map/right
|
||||
/obj/structure/sign/scenery/map/right
|
||||
icon_state = "map-right"
|
||||
|
||||
/obj/structure/sign/securearea
|
||||
@@ -250,6 +250,10 @@
|
||||
name = "\improper ACIDIC SURFACE"
|
||||
icon_state = "acid"
|
||||
|
||||
/obj/structure/sign/warning/cold
|
||||
name = "\improper EXTREME COLD ENVIRONMENT"
|
||||
icon_state = "cold"
|
||||
|
||||
/obj/structure/sign/redcross
|
||||
name = "medbay"
|
||||
desc = "The Intergalactic symbol of Medical institutions. You'll probably get help here."
|
||||
@@ -320,6 +324,7 @@
|
||||
desc = "A warning sign which reads XENOBIOLOGY."
|
||||
icon_state = "xenobio3"
|
||||
|
||||
|
||||
//direction signs presented by the order they appear in the dmi
|
||||
/obj/structure/sign/directions
|
||||
name = "direction sign"
|
||||
@@ -336,221 +341,436 @@
|
||||
desc = "A direction sign, pointing out the way to \the [src]."
|
||||
*/
|
||||
|
||||
//Also floor/level/deck signs in the same vein. Naming conventions!
|
||||
/obj/structure/sign/levels
|
||||
name = "level sign"
|
||||
desc = "A level sign, claiming to know which level to find... Something on?"
|
||||
icon_state = "level"
|
||||
icon = 'icons/obj/decals_levels.dmi'
|
||||
|
||||
//engineering signs
|
||||
/obj/structure/sign/directions/engineering
|
||||
name = "\improper Engineering Department"
|
||||
desc = "A direction sign, pointing out the way to the Engineering Department."
|
||||
icon_state = "direction_eng"
|
||||
|
||||
/obj/structure/sign/levels/engineering
|
||||
name = "\improper Engineering Department"
|
||||
desc = "A level sign, stating the level to find the Engineering Department on."
|
||||
icon_state = "level_eng"
|
||||
|
||||
/obj/structure/sign/directions/engineering/reactor
|
||||
name = "\improper Reactor"
|
||||
desc = "A direction sign, pointing out the way to the Reactor."
|
||||
icon_state = "direction_core"
|
||||
|
||||
/obj/structure/sign/levels/engineering/reactor
|
||||
name = "\improper Reactor"
|
||||
desc = "A level sign, stating the level to find the Reactor on."
|
||||
icon_state = "level_core"
|
||||
|
||||
/obj/structure/sign/directions/engineering/solars
|
||||
name = "\improper Solar Array"
|
||||
desc = "A direction sign, pointing out the way to the nearest Solar Array."
|
||||
icon_state = "direction_solar"
|
||||
|
||||
/obj/structure/sign/levels/engineering/solars
|
||||
name = "\improper Solar Array"
|
||||
desc = "A level sign, stating the level to find the nearest Solar Array on."
|
||||
icon_state = "level_solar"
|
||||
|
||||
/obj/structure/sign/directions/engineering/atmospherics
|
||||
name = "\improper Atmospherics Department"
|
||||
desc = "A direction sign, pointing out the way to the Atmospherics Department."
|
||||
icon_state = "direction_atmos"
|
||||
|
||||
/obj/structure/sign/levels/engineering/atmospherics
|
||||
name = "\improper Atmospherics Department"
|
||||
desc = "A level sign, stating the level to find the Atmospherics Department on."
|
||||
icon_state = "level_atmos"
|
||||
|
||||
/obj/structure/sign/directions/engineering/gravgen
|
||||
name = "\improper Gravity Generator"
|
||||
desc = "A direction sign, pointing out the way to the Artificial Gravity Generator."
|
||||
icon_state = "direction_grav"
|
||||
|
||||
/obj/structure/sign/levels/engineering/gravgen
|
||||
name = "\improper Gravity Generator"
|
||||
desc = "A level sign, stating the level to find the Artificial Gravity Generator on."
|
||||
icon_state = "level_grav"
|
||||
|
||||
/obj/structure/sign/directions/engineering/engeqp
|
||||
name = "\improper Engineering Equipment Storage"
|
||||
desc = "A direction sign, pointing out the way to Engineering Equipment Storage."
|
||||
icon_state = "direction_engeqp"
|
||||
|
||||
/obj/structure/sign/levels/engineering/engeqp
|
||||
name = "\improper Engineering Equipment Storage"
|
||||
desc = "A level sign, stating the level to find Engineering Equipment Storage on."
|
||||
icon_state = "level_engeqp"
|
||||
|
||||
//security signs
|
||||
/obj/structure/sign/directions/security
|
||||
name = "\improper Security Department"
|
||||
desc = "A direction sign, pointing out the way to the Security Department."
|
||||
icon_state = "direction_sec"
|
||||
|
||||
/obj/structure/sign/levels/security
|
||||
name = "\improper Security Department"
|
||||
desc = "A level sign, stating the level to find the Security Department on."
|
||||
icon_state = "direction_sec"
|
||||
|
||||
/obj/structure/sign/directions/security/armory
|
||||
name = "\improper Armory"
|
||||
desc = "A direction sign, pointing out the way to the Armory."
|
||||
icon_state = "direction_armory"
|
||||
|
||||
/obj/structure/sign/levels/security/armory
|
||||
name = "\improper Armory"
|
||||
desc = "A level sign, stating the level to find the Armory on."
|
||||
icon_state = "direction_armory"
|
||||
|
||||
/obj/structure/sign/directions/security/brig
|
||||
name = "\improper Brig"
|
||||
desc = "A direction sign, pointing out the way to the Brig."
|
||||
icon_state = "direction_brig"
|
||||
|
||||
/obj/structure/sign/levels/security/brig
|
||||
name = "\improper Brig"
|
||||
desc = "A level sign, stating the level to find the Brig on."
|
||||
icon_state = "level_brig"
|
||||
|
||||
/obj/structure/sign/directions/security/seceqp
|
||||
name = "\improper Security Equipment Storage"
|
||||
desc = "A direction sign, pointing out the way to Security Equipment Storage."
|
||||
icon_state = "direction_seceqp"
|
||||
|
||||
/obj/structure/sign/levels/security/seceqp
|
||||
name = "\improper Security Equipment Storage"
|
||||
desc = "A level sign, stating the level to find Security Equipment Storage on."
|
||||
icon_state = "level_seceqp"
|
||||
|
||||
/obj/structure/sign/directions/security/internal_affairs
|
||||
name = "\improper Internal Affairs Office"
|
||||
desc = "A direction sign, pointing out the way to the Internal Affairs Office."
|
||||
icon_state = "direction_intaff"
|
||||
|
||||
/obj/structure/sign/levels/security/internal_affairs
|
||||
name = "\improper Internal Affairs Office"
|
||||
desc = "A level sign, stating the level to find the Internal Affairs Office on."
|
||||
icon_state = "level_intaff"
|
||||
|
||||
/obj/structure/sign/directions/security/forensics
|
||||
name = "\improper Forensics Lab"
|
||||
desc = "A direction sign, pointing out the way to the Forensics Lab."
|
||||
icon_state = "direction_forensics"
|
||||
|
||||
/obj/structure/sign/levels/security/forensics
|
||||
name = "\improper Forensics Lab"
|
||||
desc = "A level sign, stating the level to find the Forensics Lab on."
|
||||
icon_state = "level_forensics"
|
||||
|
||||
/obj/structure/sign/directions/security/forensics/alt
|
||||
icon_state = "direction_lab"
|
||||
|
||||
/obj/structure/sign/levels/security/forensics/alt
|
||||
icon_state = "level_lab"
|
||||
|
||||
/obj/structure/sign/directions/security/interrogation
|
||||
name = "\improper Interrogations"
|
||||
desc = "A direction sign, pointing out the way to Interrogations."
|
||||
icon_state = "direction_interrogation"
|
||||
|
||||
/obj/structure/sign/levels/security/interrogation
|
||||
name = "\improper Interrogations"
|
||||
desc = "A level sign, stating the level to find Interrogations on."
|
||||
icon_state = "level_interrogation"
|
||||
|
||||
//science signs
|
||||
/obj/structure/sign/directions/science
|
||||
name = "\improper Science Department"
|
||||
desc = "A direction sign, pointing out the way to the Science Department."
|
||||
icon_state = "direction_sci"
|
||||
|
||||
|
||||
/obj/structure/sign/levels/science
|
||||
name = "\improper Science Department"
|
||||
desc = "A level sign, stating the level to find the Science Department on."
|
||||
icon_state = "level_sci"
|
||||
|
||||
/obj/structure/sign/directions/science/rnd
|
||||
name = "\improper Research & Development"
|
||||
desc = "A direction sign, pointing out the way to Research & Development."
|
||||
icon_state = "direction_rnd"
|
||||
|
||||
/obj/structure/sign/levels/science/rnd
|
||||
name = "\improper Research & Development"
|
||||
desc = "A level sign, stating the level to find Research & Development on."
|
||||
icon_state = "level_rnd"
|
||||
|
||||
/obj/structure/sign/directions/science/toxins
|
||||
name = "\improper Toxins Lab"
|
||||
desc = "A direction sign, pointing out the way to the Toxins Lab."
|
||||
icon_state = "direction_sci"
|
||||
|
||||
/obj/structure/sign/levels/science/toxins
|
||||
name = "\improper Toxins Lab"
|
||||
desc = "A level sign, stating the level to find the Toxins Lab on."
|
||||
icon_state = "level_sci"
|
||||
|
||||
/obj/structure/sign/directions/science/robotics
|
||||
name = "\improper Robotics Workshop"
|
||||
desc = "A direction sign, pointing out the way to the Robotics Workshop."
|
||||
icon_state = "direction_robotics"
|
||||
|
||||
/obj/structure/sign/levels/science/robotics
|
||||
name = "\improper Robotics Workshop"
|
||||
desc = "A level sign, stating the level to find the Robotics Workshop on."
|
||||
icon_state = "level_robotics"
|
||||
|
||||
/obj/structure/sign/directions/science/xenoarch
|
||||
name = "\improper Xenoarchaeology Lab"
|
||||
desc = "A direction sign, pointing out the way to the Xenoarchaeology Lab."
|
||||
icon_state = "direction_xenoarch"
|
||||
|
||||
/obj/structure/sign/levels/science/xenoarch
|
||||
name = "\improper Xenoarchaeology Lab"
|
||||
desc = "A level sign, stating the level to find the Xenoarchaeology Lab on."
|
||||
icon_state = "level_xenoarch"
|
||||
|
||||
/obj/structure/sign/directions/science/xenobiology
|
||||
name = "\improper Xenobiology Lab"
|
||||
desc = "A direction sign, pointing out the way to the Xenobiology Lab."
|
||||
icon_state = "direction_xbio"
|
||||
|
||||
/obj/structure/sign/levels/science/xenobiology
|
||||
name = "\improper Xenobiology Lab"
|
||||
desc = "A level sign, stating the level to find the Xenobiology Lab on."
|
||||
icon_state = "level_xbio"
|
||||
|
||||
/obj/structure/sign/directions/science/xenoflora
|
||||
name = "\improper Xenoflora Lab"
|
||||
desc = "A direction sign, pointing out the way to the Xenoflora Lab."
|
||||
icon_state = "direction_xflora"
|
||||
|
||||
/obj/structure/sign/levels/science/xenoflora
|
||||
name = "\improper Xenoflora Lab"
|
||||
desc = "A level sign, stating the level to find the Xenoflora Lab on."
|
||||
icon_state = "level_xflora"
|
||||
|
||||
/obj/structure/sign/directions/science/exploration
|
||||
name = "\improper Exploration Department"
|
||||
desc = "A direction sign, pointing out the way to the Exploration Department."
|
||||
icon_state = "direction_explo"
|
||||
|
||||
/obj/structure/sign/levels/science/exploration
|
||||
name = "\improper Exploration Department"
|
||||
desc = "A level sign, stating the level to find the Exploration Department on."
|
||||
icon_state = "level_explo"
|
||||
|
||||
//medical signs
|
||||
/obj/structure/sign/directions/medical
|
||||
name = "\improper Medical Bay"
|
||||
desc = "A direction sign, pointing out the way to the Medical Bay."
|
||||
icon_state = "direction_med"
|
||||
|
||||
/obj/structure/sign/levels/medical
|
||||
name = "\improper Medical Bay"
|
||||
desc = "A level sign, stating the level to find the Medical Bay on."
|
||||
icon_state = "level_med"
|
||||
|
||||
/obj/structure/sign/directions/medical/chemlab
|
||||
name = "\improper Chemistry Lab"
|
||||
desc = "A direction sign, pointing out the way to the Chemistry Lab."
|
||||
icon_state = "direction_med"
|
||||
|
||||
/obj/structure/sign/levels/medical/chemlab
|
||||
name = "\improper Chemistry Lab"
|
||||
desc = "A level sign, stating the level to find the Chemistry Lab on."
|
||||
icon_state = "level_med"
|
||||
|
||||
/obj/structure/sign/directions/medical/surgery
|
||||
name = "\improper Surgery"
|
||||
desc = "A direction sign, pointing out the way to Surgery."
|
||||
icon_state = "direction_surgery"
|
||||
|
||||
/obj/structure/sign/levels/medical/surgery
|
||||
name = "\improper Surgery"
|
||||
desc = "A level sign, stating the level to find Surgery on."
|
||||
icon_state = "level_surgery"
|
||||
|
||||
/obj/structure/sign/directions/medical/operating_1
|
||||
name = "\improper Operating Theatre 1"
|
||||
desc = "A direction sign, pointing out the way to Operating Theatre 1."
|
||||
icon_state = "direction_op1"
|
||||
|
||||
/obj/structure/sign/levels/medical/operating_1
|
||||
name = "\improper Operating Theatre 1"
|
||||
desc = "A level sign, stating the level to find Operating Theatre 1 on."
|
||||
icon_state = "level_op1"
|
||||
|
||||
/obj/structure/sign/directions/medical/operating_2
|
||||
name = "\improper Operating Theatre 2"
|
||||
desc = "A direction sign, pointing out the way to Operating Theatre 2."
|
||||
icon_state = "direction_op2"
|
||||
|
||||
/obj/structure/sign/levels/medical/operating_2
|
||||
name = "\improper Operating Theatre 2"
|
||||
desc = "A level sign, stating the level to find Operating Theatre 2 on."
|
||||
icon_state = "level_op2"
|
||||
|
||||
/obj/structure/sign/directions/medical/virology
|
||||
name = "\improper Virology"
|
||||
desc = "A direction sign, pointing out the way to the Virology Lab."
|
||||
icon_state = "direction_viro"
|
||||
|
||||
/obj/structure/sign/levels/medical/virology
|
||||
name = "\improper Virology"
|
||||
desc = "A level sign, stating the level to find the Virology Lab on."
|
||||
icon_state = "level_viro"
|
||||
|
||||
/obj/structure/sign/directions/medical/medeqp
|
||||
name = "\improper Medical Equipment Storage"
|
||||
desc = "A direction sign, pointing out the way to Medical Equipment Storage."
|
||||
icon_state = "direction_medeqp"
|
||||
|
||||
/obj/structure/sign/levels/medical/medeqp
|
||||
name = "\improper Medical Equipment Storage"
|
||||
desc = "A level sign, stating the level to find Medical Equipment Storage on."
|
||||
icon_state = "level_medeqp"
|
||||
|
||||
/obj/structure/sign/directions/medical/morgue
|
||||
name = "\improper Morgue"
|
||||
desc = "A direction sign, pointing out the way to the Morgue."
|
||||
icon_state = "direction_morgue"
|
||||
|
||||
/obj/structure/sign/levels/medical/morgue
|
||||
name = "\improper Morgue"
|
||||
desc = "A level sign, stating the level to find the Morgue on."
|
||||
icon_state = "level_morgue"
|
||||
|
||||
/obj/structure/sign/directions/medical/cloning
|
||||
name = "\improper Cloning Lab"
|
||||
desc = "A direction sign, pointing out the way to the Cloning Lab."
|
||||
icon_state = "direction_cloning"
|
||||
|
||||
/obj/structure/sign/levels/medical/cloning
|
||||
name = "\improper Cloning Lab"
|
||||
desc = "A level sign, stating the level to find the Cloning Lab on."
|
||||
icon_state = "level_cloning"
|
||||
|
||||
/obj/structure/sign/directions/medical/resleeving
|
||||
name = "\improper Resleeving Lab"
|
||||
desc = "A direction sign, pointing out the way to the Resleeving Lab."
|
||||
icon_state = "direction_resleeve"
|
||||
|
||||
|
||||
/obj/structure/sign/levels/medical/resleeving
|
||||
name = "\improper Resleeving Lab"
|
||||
desc = "A level sign, stating the level to find the Resleeving Lab on."
|
||||
icon_state = "level_resleeve"
|
||||
|
||||
//special signs
|
||||
/obj/structure/sign/directions/evac
|
||||
name = "\improper Evacuation"
|
||||
desc = "A direction sign, pointing out the way to the Escape Shuttle Dock."
|
||||
icon_state = "direction_evac"
|
||||
|
||||
/obj/structure/sign/levels/evac
|
||||
name = "\improper Evacuation"
|
||||
desc = "A level sign, stating the level to find the Escape Shuttle Dock on."
|
||||
icon_state = "level_evac"
|
||||
|
||||
/obj/structure/sign/directions/eva
|
||||
name = "\improper Extra-Vehicular Activity"
|
||||
desc = "A direction sign, pointing out the way to the EVA Bay."
|
||||
icon_state = "direction_eva"
|
||||
|
||||
/obj/structure/sign/levels/eva
|
||||
name = "\improper Extra-Vehicular Activity"
|
||||
desc = "A level sign, stating the level to find the EVA Bay on."
|
||||
icon_state = "level_eva"
|
||||
|
||||
//command signs
|
||||
/obj/structure/sign/directions/ai_core
|
||||
name = "\improper AI Core"
|
||||
desc = "A direction sign, pointing out the way to the AI Core."
|
||||
icon_state = "direction_ai_core"
|
||||
|
||||
/obj/structure/sign/levels/ai_core
|
||||
name = "\improper AI Core"
|
||||
desc = "A level sign, stating the level to find the AI Core on."
|
||||
icon_state = "level_ai_core"
|
||||
|
||||
/obj/structure/sign/directions/bridge
|
||||
name = "\improper Bridge"
|
||||
desc = "A direction sign, pointing out the way to the Bridge."
|
||||
icon_state = "direction_bridge"
|
||||
|
||||
/obj/structure/sign/levels/bridge
|
||||
name = "\improper Bridge"
|
||||
desc = "A level sign, stating the level to find the Bridge on."
|
||||
icon_state = "level_bridge"
|
||||
|
||||
/obj/structure/sign/directions/command
|
||||
name = "\improper Command"
|
||||
desc = "A direction sign, pointing out the way to the Command Center."
|
||||
icon_state = "direction_command"
|
||||
|
||||
/obj/structure/sign/levels/command
|
||||
name = "\improper Command"
|
||||
desc = "A level sign, stating the level to find the Command Center on."
|
||||
icon_state = "level_command"
|
||||
|
||||
/obj/structure/sign/directions/teleporter
|
||||
name = "\improper Teleporter"
|
||||
desc = "A direction sign, pointing out the way to the Teleporter."
|
||||
icon_state = "direction_teleport"
|
||||
|
||||
/obj/structure/sign/levels/teleporter
|
||||
name = "\improper Teleporter"
|
||||
desc = "A level sign, stating the level to find the Teleporter on."
|
||||
icon_state = "level_teleport"
|
||||
|
||||
/obj/structure/sign/directions/telecomms
|
||||
name = "\improper Telecommunications Hub"
|
||||
desc = "A direction sign, pointing out the way to the Telecommunications Hub."
|
||||
icon_state = "direction_tcomms"
|
||||
|
||||
|
||||
/obj/structure/sign/levels/telecomms
|
||||
name = "\improper Telecommunications Hub"
|
||||
desc = "A level sign, stating the level to find the Telecommunications Hub on."
|
||||
icon_state = "level_tcomms"
|
||||
|
||||
//cargonia signs
|
||||
/obj/structure/sign/directions/cargo
|
||||
name = "\improper Cargo Department"
|
||||
desc = "A direction sign, pointing out the way to the Cargo Department."
|
||||
icon_state = "direction_crg"
|
||||
|
||||
/obj/structure/sign/levels/cargo
|
||||
name = "\improper Cargo Department"
|
||||
desc = "A level sign, stating the level to find the Cargo Department on."
|
||||
icon_state = "level_crg"
|
||||
|
||||
/obj/structure/sign/directions/cargo/mining
|
||||
name = "\improper Mining Department"
|
||||
desc = "A direction sign, pointing out the way to the Mining Department."
|
||||
icon_state = "direction_mining"
|
||||
|
||||
/obj/structure/sign/levels/cargo/mining
|
||||
name = "\improper Mining Department"
|
||||
desc = "A level sign, stating the level to find the Mining Department on."
|
||||
icon_state = "level_mining"
|
||||
|
||||
/obj/structure/sign/directions/cargo/refinery
|
||||
name = "\improper Refinery"
|
||||
desc = "A direction sign, pointing out the way to the Refinery."
|
||||
icon_state = "direction_refinery"
|
||||
|
||||
/obj/structure/sign/levels/cargo/refinery
|
||||
name = "\improper Refinery"
|
||||
desc = "A level sign, stating the level to find the Refinery on."
|
||||
icon_state = "level_refinery"
|
||||
|
||||
//civilian/misc signs
|
||||
/obj/structure/sign/directions/roomnum
|
||||
name = "room number"
|
||||
@@ -562,66 +782,131 @@
|
||||
desc = "A direction sign, pointing out the way to Cryogenic Storage."
|
||||
icon_state = "direction_cry"
|
||||
|
||||
/obj/structure/sign/levels/cryo
|
||||
name = "\improper Cryogenic Storage"
|
||||
desc = "A level sign, stating the level to find Cryogenic Storage on."
|
||||
icon_state = "level_cry"
|
||||
|
||||
/obj/structure/sign/directions/elevator
|
||||
name = "\improper Elevator"
|
||||
desc = "A direction sign, pointing out the way to the nearest elevator."
|
||||
icon_state = "direction_elv"
|
||||
|
||||
/obj/structure/sign/levels/elevator
|
||||
name = "\improper Elevator"
|
||||
desc = "A level sign, stating the level to find the nearest elevator on."
|
||||
icon_state = "level_elv"
|
||||
|
||||
/obj/structure/sign/directions/bar
|
||||
name = "\improper Bar"
|
||||
desc = "A direction sign, pointing out the way to the nearest watering hole."
|
||||
icon_state = "direction_bar"
|
||||
|
||||
/obj/structure/sign/levels/bar
|
||||
name = "\improper Bar"
|
||||
desc = "A level sign, stating the level to find the nearest watering hole on."
|
||||
icon_state = "level_bar"
|
||||
|
||||
/obj/structure/sign/directions/kitchen
|
||||
name = "\improper Kitchen"
|
||||
desc = "A pictographic direction sign with a knife, plate, and fork, pointing out the way to the nearest dining establishment."
|
||||
icon_state = "direction_kitchen"
|
||||
|
||||
/obj/structure/sign/levels/kitchen
|
||||
name = "\improper Kitchen"
|
||||
desc = "A pictographic direction sign with a knife, plate, and fork, stating the level to find the nearest dining establishment on."
|
||||
icon_state = "level_kitchen"
|
||||
|
||||
/obj/structure/sign/directions/tram
|
||||
name = "\improper Public Transit Station"
|
||||
desc = "A direction sign, pointing out the way to the nearest public transit station."
|
||||
icon_state = "direction_tram"
|
||||
|
||||
/obj/structure/sign/levels/tram
|
||||
name = "\improper Public Transit Station"
|
||||
desc = "A level sign, stating the level to find the nearest public transit station on."
|
||||
icon_state = "level_tram"
|
||||
|
||||
/obj/structure/sign/directions/janitor
|
||||
name = "\improper Custodial Closet"
|
||||
desc = "A direction sign, pointing out the way to the Custodial Closet."
|
||||
icon_state = "direction_janitor"
|
||||
|
||||
/obj/structure/sign/levels/janitor
|
||||
name = "\improper Custodial Closet"
|
||||
desc = "A level sign, stating the level to find the Custodial Closet on."
|
||||
icon_state = "level_janitor"
|
||||
|
||||
/obj/structure/sign/directions/chapel
|
||||
name = "\improper Chapel"
|
||||
desc = "A direction sign, pointing out the way to the Chapel."
|
||||
icon_state = "direction_chapel"
|
||||
|
||||
/obj/structure/sign/levels/chapel
|
||||
name = "\improper Chapel"
|
||||
desc = "A level sign, stating the level to find the Chapel on."
|
||||
icon_state = "level_chapel"
|
||||
|
||||
/obj/structure/sign/directions/dorms
|
||||
name = "\improper Dormitories"
|
||||
desc = "A direction sign, pointing out the way to the Dormitories."
|
||||
icon_state = "direction_dorms"
|
||||
|
||||
/obj/structure/sign/levels/dorms
|
||||
name = "\improper Dormitories"
|
||||
desc = "A level sign, stating the level to find the Dormitories on."
|
||||
icon_state = "level_dorms"
|
||||
|
||||
/obj/structure/sign/directions/library
|
||||
name = "\improper Library"
|
||||
desc = "A direction sign, pointing out the way to the Library."
|
||||
icon_state = "direction_library"
|
||||
|
||||
/obj/structure/sign/levels/library
|
||||
name = "\improper Library"
|
||||
desc = "A level sign, stating the level to find the Library on."
|
||||
icon_state = "level_library"
|
||||
|
||||
/obj/structure/sign/directions/dock
|
||||
name = "\improper Dock"
|
||||
desc = "A direction sign, pointing out the way to the nearest docking area."
|
||||
icon_state = "direction_dock"
|
||||
|
||||
/obj/structure/sign/levels/dock
|
||||
name = "\improper Dock"
|
||||
desc = "A level sign, stating the level to find the nearest docking area on."
|
||||
icon_state = "level_dock"
|
||||
|
||||
/obj/structure/sign/directions/gym
|
||||
name = "\improper Gym"
|
||||
desc = "A direction sign, pointing out the way to the Gym."
|
||||
icon_state = "direction_gym"
|
||||
|
||||
/obj/structure/sign/levels/gym
|
||||
name = "\improper Gym"
|
||||
desc = "A level sign, stating the level to find the Gym on."
|
||||
icon_state = "level_gym"
|
||||
|
||||
/obj/structure/sign/directions/pool
|
||||
name = "\improper Pool"
|
||||
desc = "A direction sign, pointing out the way to the Pool."
|
||||
icon_state = "direction_pool"
|
||||
|
||||
/obj/structure/sign/levels/pool
|
||||
name = "\improper Pool"
|
||||
desc = "A level sign, stating the level to find the Pool on."
|
||||
icon_state = "level_pool"
|
||||
|
||||
/obj/structure/sign/directions/recreation
|
||||
name = "\improper Recreation Area"
|
||||
desc = "A direction sign, pointing out the way to the nearest Recreation Area."
|
||||
icon_state = "direction_recreation"
|
||||
|
||||
/obj/structure/sign/levels/recreation
|
||||
name = "\improper Recreation Area"
|
||||
desc = "A level sign, stating the level to find the nearest Recreation Area on."
|
||||
icon_state = "level_recreation"
|
||||
|
||||
/obj/structure/sign/directions/stairwell
|
||||
name = "\improper Stairwell"
|
||||
desc = "A direction sign with stairs and a door, pointing out the way to the nearest stairwell."
|
||||
@@ -686,6 +971,48 @@
|
||||
name = "\improper Fourth Deck"
|
||||
icon_state = "deck-4"
|
||||
|
||||
/obj/structure/sign/level/one
|
||||
name = "\improper Level One"
|
||||
icon_state = "level-1"
|
||||
|
||||
/obj/structure/sign/level/one/large
|
||||
icon_state = "level-1-large"
|
||||
|
||||
/obj/structure/sign/level/two
|
||||
name = "\improper Level Two"
|
||||
icon_state = "level-2"
|
||||
|
||||
/obj/structure/sign/level/two/large
|
||||
icon_state = "level-2-large"
|
||||
|
||||
/obj/structure/sign/level/three
|
||||
name = "\improper Level Three"
|
||||
icon_state = "level-3"
|
||||
|
||||
/obj/structure/sign/level/three/large
|
||||
icon_state = "level-3-large"
|
||||
|
||||
/obj/structure/sign/level/fourth
|
||||
name = "\improper Level Four"
|
||||
icon_state = "level-4"
|
||||
|
||||
/obj/structure/sign/level/four/large
|
||||
icon_state = "level-4-large"
|
||||
|
||||
/obj/structure/sign/level/basement
|
||||
name = "\improper Basement Level"
|
||||
icon_state = "level-b"
|
||||
|
||||
/obj/structure/sign/level/basement/large
|
||||
icon_state = "level-b-large"
|
||||
|
||||
/obj/structure/sign/level/ground
|
||||
name = "\improper Basement Level"
|
||||
icon_state = "level-g"
|
||||
|
||||
/obj/structure/sign/level/ground/large
|
||||
icon_state = "level-g-large"
|
||||
|
||||
/obj/structure/sign/hangar/one
|
||||
name = "\improper Hangar One"
|
||||
icon_state = "hangar-1"
|
||||
@@ -726,12 +1053,61 @@
|
||||
name = "\improper AIR"
|
||||
icon_state = "atmos_air"
|
||||
|
||||
/obj/structure/sign/poi/engineleft
|
||||
/obj/structure/sign/scenery/engineleft
|
||||
name = "I.C.V."
|
||||
desc = "The charred name of a cargo ship of some description."
|
||||
icon_state = "poi_engine1"
|
||||
|
||||
/obj/structure/sign/poi/engineright
|
||||
/obj/structure/sign/scenery/engineright
|
||||
name = "I.C.V."
|
||||
desc = "The charred name of a cargo ship of some description."
|
||||
icon_state = "poi_engine2"
|
||||
icon_state = "poi_engine2"
|
||||
|
||||
//Direction/Level sign overlays. Not mechanically functional as noted above, but usable for mapping.
|
||||
/obj/structure/sign/scenery/overlay
|
||||
name = "snow covering"
|
||||
desc = "Frozen snow obscures the view of a sign beneath."
|
||||
icon_state = "snowy"
|
||||
icon = 'icons/obj/decals_directions.dmi'
|
||||
|
||||
/obj/structure/sign/scenery/overlay/rust
|
||||
name = "rust covering"
|
||||
desc = "Thick rust obscures the view of a sign beneath."
|
||||
icon_state = "rusted"
|
||||
|
||||
/obj/structure/sign/scenery/overlay/vine
|
||||
name = "vine covering"
|
||||
desc = "Thick vines obscure the view of a sign beneath."
|
||||
icon_state = "vines"
|
||||
|
||||
/obj/structure/sign/scenery/overlay/vine/top
|
||||
icon_state = "vines_top"
|
||||
|
||||
/obj/structure/sign/scenery/overlay/vine/mid
|
||||
icon_state = "vines_mid"
|
||||
|
||||
/obj/structure/sign/scenery/overlay/vine/bottom
|
||||
icon_state = "vines_bottom"
|
||||
|
||||
/obj/structure/sign/bigname
|
||||
name = "Cynosure Station"
|
||||
desc = "An aging sign for the Cynosure Xenoarchaeological Research Station."
|
||||
icon_state = "cyno_1"
|
||||
|
||||
/obj/structure/sign/bigname/seg_2
|
||||
icon_state = "cyno_2"
|
||||
|
||||
/obj/structure/sign/bigname/seg_3
|
||||
icon_state = "cyno_3"
|
||||
|
||||
/obj/structure/sign/bigname/seg_4
|
||||
icon_state = "cyno_4"
|
||||
|
||||
/obj/structure/sign/bigname/seg_5
|
||||
icon_state = "cyno_5"
|
||||
|
||||
/obj/structure/sign/bigname/seg_6
|
||||
icon_state = "cyno_6"
|
||||
|
||||
/obj/structure/sign/bigname/seg_7
|
||||
icon_state = "cyno_7"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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")
|
||||
@@ -1,8 +1,8 @@
|
||||
/obj/structure/undies_wardrobe
|
||||
name = "underwear wardrobe"
|
||||
desc = "Holds item of clothing you shouldn't be showing off in the hallways."
|
||||
icon = 'icons/obj/closet.dmi'
|
||||
icon_state = "cabinet_closed"
|
||||
icon = 'icons/obj/closets/undies_wardrobe.dmi'
|
||||
icon_state = "wardrobe"
|
||||
density = 1
|
||||
|
||||
/obj/structure/undies_wardrobe/attack_hand(var/mob/user)
|
||||
|
||||
@@ -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, "<span class='notice'>[GM.name] needs to be on the toilet.</span>")
|
||||
return
|
||||
if(open && !swirlie)
|
||||
user.visible_message("<span class='danger'>[user] starts to give [GM.name] a swirlie!</span>", "<span class='notice'>You start to give [GM.name] a swirlie!</span>")
|
||||
swirlie = GM
|
||||
if(do_after(user, 30, GM))
|
||||
user.visible_message("<span class='danger'>[user] gives [GM.name] a swirlie!</span>", "<span class='notice'>You give [GM.name] a swirlie!</span>", "You hear a toilet flushing.")
|
||||
if(!GM.internal)
|
||||
GM.adjustOxyLoss(5)
|
||||
swirlie = null
|
||||
else
|
||||
user.visible_message("<span class='danger'>[user] slams [GM.name] into the [src]!</span>", "<span class='notice'>You slam [GM.name] into the [src]!</span>")
|
||||
GM.adjustBruteLoss(5)
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You need a tighter grip.</span>")
|
||||
|
||||
|
||||
/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"
|
||||
|
||||
Reference in New Issue
Block a user