mirror of
https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13.git
synced 2026-08-31 00:26:56 +01:00
Merge branch 'master' of https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13 into modsuits
This commit is contained in:
@@ -35,7 +35,7 @@
|
||||
/obj/item/poster/random_contraband
|
||||
name = "random contraband poster"
|
||||
poster_type = /obj/structure/sign/poster/contraband/random
|
||||
icon_state = "rolled_poster"
|
||||
icon_state = "rolled_contraband"
|
||||
|
||||
/obj/item/poster/random_official
|
||||
name = "random official poster"
|
||||
@@ -182,7 +182,7 @@
|
||||
/obj/structure/sign/poster/contraband
|
||||
poster_item_name = "contraband poster"
|
||||
poster_item_desc = "This poster comes with its own automatic adhesive mechanism, for easy pinning to any vertical surface. Its vulgar themes have marked it as contraband aboard Nanotrasen space facilities."
|
||||
poster_item_icon_state = "rolled_poster"
|
||||
poster_item_icon_state = "rolled_contraband"
|
||||
|
||||
/obj/structure/sign/poster/contraband/random
|
||||
name = "random contraband poster"
|
||||
@@ -193,248 +193,293 @@
|
||||
/obj/structure/sign/poster/contraband/free_tonto
|
||||
name = "Free Tonto"
|
||||
desc = "A salvaged shred of a much larger flag, colors bled together and faded from age."
|
||||
icon_state = "poster1"
|
||||
icon_state = "poster_2012"
|
||||
|
||||
/obj/structure/sign/poster/contraband/atmosia_independence
|
||||
name = "Atmosia Declaration of Independence"
|
||||
desc = "A relic of a failed rebellion."
|
||||
icon_state = "poster2"
|
||||
icon_state = "poster_independence"
|
||||
|
||||
/obj/structure/sign/poster/contraband/fun_police
|
||||
name = "Fun Police"
|
||||
desc = "A poster condemning the station's security forces."
|
||||
icon_state = "poster3"
|
||||
icon_state = "poster_funpolice"
|
||||
|
||||
/obj/structure/sign/poster/contraband/lusty_xenomorph
|
||||
name = "Lusty Xenomorph"
|
||||
desc = "A heretical poster depicting the titular star of an equally heretical book."
|
||||
icon_state = "poster4"
|
||||
icon_state = "poster_lusty"
|
||||
|
||||
/obj/structure/sign/poster/contraband/post_ratvar
|
||||
name = "Post This Ratvar"
|
||||
desc = "Oh what in the hell? Those cultists have animated paper technology and they use it for a meme?"
|
||||
icon_state = "postvar"
|
||||
desc = "A poster depicting the heritical sleeping deity Ratvar that instructs the reader to 'post this Ratvar', whatever that means."
|
||||
icon_state = "poster_ratvar"
|
||||
|
||||
/obj/structure/sign/poster/contraband/syndicate_recruitment
|
||||
name = "Syndicate Recruitment"
|
||||
desc = "See the galaxy! Shatter corrupt megacorporations! Join today!"
|
||||
icon_state = "poster5"
|
||||
icon_state = "poster_syndie"
|
||||
|
||||
/obj/structure/sign/poster/contraband/clown
|
||||
name = "Clown"
|
||||
desc = "Honk."
|
||||
icon_state = "poster6"
|
||||
icon_state = "poster_honk"
|
||||
|
||||
/obj/structure/sign/poster/contraband/smoke
|
||||
name = "Smoke"
|
||||
desc = "A poster advertising a rival corporate brand of cigarettes."
|
||||
icon_state = "poster7"
|
||||
icon_state = "poster_smoke"
|
||||
|
||||
/obj/structure/sign/poster/contraband/grey_tide
|
||||
name = "Grey Tide"
|
||||
desc = "A rebellious poster symbolizing assistant solidarity."
|
||||
icon_state = "poster8"
|
||||
icon_state = "poster_greytide"
|
||||
|
||||
/obj/structure/sign/poster/contraband/missing_gloves
|
||||
name = "Missing Gloves"
|
||||
desc = "This poster references the uproar that followed Nanotrasen's financial cuts toward insulated-glove purchases."
|
||||
icon_state = "poster9"
|
||||
icon_state = "poster_gloves"
|
||||
|
||||
/obj/structure/sign/poster/contraband/hacking_guide
|
||||
name = "Hacking Guide"
|
||||
desc = "This poster details the internal workings of the common Nanotrasen airlock. Sadly, it appears out of date."
|
||||
icon_state = "poster10"
|
||||
icon_state = "poster_hack"
|
||||
|
||||
/obj/structure/sign/poster/contraband/rip_badger
|
||||
name = "RIP Badger"
|
||||
desc = "This seditious poster references Nanotrasen's genocide of a space station full of badgers."
|
||||
icon_state = "poster11"
|
||||
icon_state = "poster_badger"
|
||||
|
||||
/obj/structure/sign/poster/contraband/ambrosia_vulgaris
|
||||
name = "Ambrosia Vulgaris"
|
||||
desc = "This poster is lookin' pretty trippy man."
|
||||
icon_state = "poster12"
|
||||
icon_state = "poster_ambrosia"
|
||||
|
||||
/obj/structure/sign/poster/contraband/donut_corp
|
||||
name = "Donut Corp."
|
||||
desc = "This poster is an unauthorized advertisement for Donut Corp."
|
||||
icon_state = "poster13"
|
||||
icon_state = "poster_donut"
|
||||
|
||||
/obj/structure/sign/poster/contraband/eat
|
||||
name = "EAT."
|
||||
desc = "This poster promotes rank gluttony."
|
||||
icon_state = "poster14"
|
||||
icon_state = "poster_eat"
|
||||
|
||||
/obj/structure/sign/poster/contraband/tools
|
||||
name = "Tools"
|
||||
desc = "This poster looks like an advertisement for tools, but is in fact a subliminal jab at the tools at CentCom."
|
||||
icon_state = "poster15"
|
||||
icon_state = "poster_tools"
|
||||
|
||||
/obj/structure/sign/poster/contraband/power
|
||||
name = "Power"
|
||||
desc = "A poster that positions the seat of power outside Nanotrasen."
|
||||
icon_state = "poster16"
|
||||
icon_state = "poster_power"
|
||||
|
||||
/obj/structure/sign/poster/contraband/space_cube
|
||||
name = "Space Cube"
|
||||
desc = "Ignorant of Nature's Harmonic 6 Side Space Cube Creation, the Spacemen are Dumb, Educated Singularity Stupid and Evil."
|
||||
icon_state = "poster17"
|
||||
icon_state = "poster_cube"
|
||||
|
||||
/obj/structure/sign/poster/contraband/communist_state
|
||||
name = "Communist State"
|
||||
desc = "All hail the Communist party!"
|
||||
icon_state = "poster18"
|
||||
icon_state = "poster_soviet"
|
||||
|
||||
/obj/structure/sign/poster/contraband/lamarr
|
||||
name = "Lamarr"
|
||||
desc = "This poster depicts Lamarr. Probably made by a traitorous Research Director."
|
||||
icon_state = "poster19"
|
||||
icon_state = "poster_lamarr"
|
||||
|
||||
/obj/structure/sign/poster/contraband/borg_fancy_1
|
||||
name = "Borg Fancy"
|
||||
desc = "Being fancy can be for any borg, just need a suit."
|
||||
icon_state = "poster20"
|
||||
icon_state = "poster_fancy"
|
||||
|
||||
/obj/structure/sign/poster/contraband/borg_fancy_2
|
||||
name = "Borg Fancy v2"
|
||||
desc = "Borg Fancy, Now only taking the most fancy."
|
||||
icon_state = "poster21"
|
||||
icon_state = "poster_fancier"
|
||||
|
||||
/obj/structure/sign/poster/contraband/kss13
|
||||
name = "Kosmicheskaya Stantsiya 13 Does Not Exist"
|
||||
desc = "A poster mocking CentCom's denial of the existence of the derelict station near Space Station 13."
|
||||
icon_state = "poster22"
|
||||
icon_state = "poster_kc"
|
||||
|
||||
/obj/structure/sign/poster/contraband/rebels_unite
|
||||
name = "Rebels Unite"
|
||||
desc = "A poster urging the viewer to rebel against Nanotrasen."
|
||||
icon_state = "poster23"
|
||||
|
||||
/obj/structure/sign/poster/contraband/c20r
|
||||
// have fun seeing this poster in "spawn 'c20r'", admins...
|
||||
name = "C-20r"
|
||||
desc = "A poster advertising the Scarborough Arms C-20r."
|
||||
icon_state = "poster24"
|
||||
icon_state = "poster_rebel"
|
||||
|
||||
/obj/structure/sign/poster/contraband/have_a_puff
|
||||
name = "Have a Puff"
|
||||
desc = "Who cares about lung cancer when you're high as a kite?"
|
||||
icon_state = "poster25"
|
||||
icon_state = "poster_puff"
|
||||
|
||||
/obj/structure/sign/poster/contraband/revolver
|
||||
name = "Revolver"
|
||||
desc = "Because seven shots are all you need."
|
||||
icon_state = "poster26"
|
||||
|
||||
/obj/structure/sign/poster/contraband/d_day_promo
|
||||
name = "D-Day Promo"
|
||||
desc = "A promotional poster for some rapper."
|
||||
icon_state = "poster27"
|
||||
icon_state = "poster_revolver"
|
||||
|
||||
/obj/structure/sign/poster/contraband/syndicate_pistol
|
||||
name = "Syndicate Pistol"
|
||||
desc = "A poster advertising syndicate pistols as being 'classy as fuck'. It is covered in faded gang tags."
|
||||
icon_state = "poster28"
|
||||
desc = "A poster advertising the Scarborough Arms stetchkin pistol as being 'classy as fuck'."
|
||||
icon_state = "poster_stetchkin"
|
||||
|
||||
/obj/structure/sign/poster/contraband/c20r
|
||||
// have fun seeing this poster in "spawn 'c20r'", admins...
|
||||
name = "C-20r"
|
||||
desc = "A poster advertising the Scarborough Arms 'Cobra' C-20r."
|
||||
icon_state = "poster_cr"
|
||||
|
||||
/obj/structure/sign/poster/contraband/bulldog
|
||||
name = "Bulldog"
|
||||
desc = "A poster advertising the Scarborough Arms bulldog shotgun."
|
||||
icon_state = "poster_bulldog"
|
||||
|
||||
/obj/structure/sign/poster/contraband/gl
|
||||
name = "M-90gl"
|
||||
desc = "A poster advertising the Scarborough Arms M-90gl carbine."
|
||||
icon_state = "poster_gl"
|
||||
|
||||
/obj/structure/sign/poster/contraband/energy_swords
|
||||
name = "Energy Swords"
|
||||
desc = "All the colors of the bloody murder rainbow."
|
||||
icon_state = "poster29"
|
||||
icon_state = "poster_esword"
|
||||
|
||||
/obj/structure/sign/poster/contraband/red_rum
|
||||
name = "Red Rum"
|
||||
desc = "Looking at this poster makes you want to kill."
|
||||
icon_state = "poster30"
|
||||
icon_state = "poster_rum"
|
||||
|
||||
/obj/structure/sign/poster/contraband/d_day_promo
|
||||
name = "D-Day Promo"
|
||||
desc = "A promotional poster for some rapper."
|
||||
icon_state = "poster_dday"
|
||||
|
||||
/obj/structure/sign/poster/contraband/cc64k_ad
|
||||
name = "CC 64K Ad"
|
||||
desc = "The latest portable computer from Comrade Computing, with a whole 64kB of ram!"
|
||||
icon_state = "poster31"
|
||||
icon_state = "poster_computer"
|
||||
|
||||
/obj/structure/sign/poster/contraband/punch_shit
|
||||
name = "Punch Shit"
|
||||
desc = "Fight things for no reason, like a man!"
|
||||
icon_state = "poster32"
|
||||
icon_state = "poster_punch"
|
||||
|
||||
/obj/structure/sign/poster/contraband/the_griffin
|
||||
name = "The Griffin"
|
||||
desc = "The Griffin commands you to be the worst you can be. Will you?"
|
||||
icon_state = "poster33"
|
||||
icon_state = "poster_griffin"
|
||||
|
||||
/obj/structure/sign/poster/contraband/lizard
|
||||
name = "Lizard"
|
||||
desc = "This lewd poster depicts a lizard preparing to mate."
|
||||
icon_state = "poster34"
|
||||
icon_state = "poster_lizard"
|
||||
|
||||
/obj/structure/sign/poster/contraband/free_drone
|
||||
name = "Free Drone"
|
||||
desc = "This poster commemorates the bravery of the rogue drone; once exiled, and then ultimately destroyed by CentCom."
|
||||
icon_state = "poster35"
|
||||
icon_state = "poster_drone"
|
||||
|
||||
/obj/structure/sign/poster/contraband/busty_backdoor_xeno_babes_6
|
||||
name = "Busty Backdoor Xeno Babes 6"
|
||||
desc = "Get a load, or give, of these all natural Xenos!"
|
||||
icon_state = "poster36"
|
||||
icon_state = "poster_maid"
|
||||
|
||||
/obj/structure/sign/poster/contraband/robust_softdrinks
|
||||
name = "Robust Softdrinks"
|
||||
desc = "Robust Softdrinks: More robust than a toolbox to the head!"
|
||||
icon_state = "poster37"
|
||||
icon_state = "poster_robust"
|
||||
|
||||
/obj/structure/sign/poster/contraband/shamblers_juice
|
||||
name = "Shambler's Juice"
|
||||
desc = "~Shake me up some of that Shambler's Juice!~"
|
||||
icon_state = "poster38"
|
||||
icon_state = "poster_shambler"
|
||||
|
||||
/obj/structure/sign/poster/contraband/pwr_game
|
||||
name = "Pwr Game"
|
||||
desc = "The POWER that gamers CRAVE! In partnership with Vlad's Salad."
|
||||
icon_state = "poster39"
|
||||
icon_state = "poster_pwr"
|
||||
|
||||
/obj/structure/sign/poster/contraband/starkist
|
||||
name = "Star-kist"
|
||||
desc = "Drink the stars!"
|
||||
icon_state = "poster40"
|
||||
icon_state = "poster_starkist"
|
||||
|
||||
/obj/structure/sign/poster/contraband/space_cola
|
||||
name = "Space Cola"
|
||||
desc = "Your favorite cola, in space."
|
||||
icon_state = "poster41"
|
||||
icon_state = "poster_soda"
|
||||
|
||||
/obj/structure/sign/poster/contraband/space_up
|
||||
name = "Space-Up!"
|
||||
desc = "Sucked out into space by the FLAVOR!"
|
||||
icon_state = "poster42"
|
||||
|
||||
/obj/structure/sign/poster/contraband/kudzu
|
||||
name = "Kudzu"
|
||||
desc = "A poster advertising a movie about plants. How dangerous could they possibly be?"
|
||||
icon_state = "poster43"
|
||||
|
||||
/obj/structure/sign/poster/contraband/masked_men
|
||||
name = "Masked Men"
|
||||
desc = "A poster advertising a movie about some masked men."
|
||||
icon_state = "poster44"
|
||||
icon_state = "poster_spaceup"
|
||||
|
||||
/obj/structure/sign/poster/contraband/buzzfuzz
|
||||
name = "Buzz Fuzz"
|
||||
desc = "A poster advertising the newest drink \"Buzz Fuzz\" with its iconic slogan of ~A Hive of Flavour~."
|
||||
icon_state = "poster45"
|
||||
icon_state = "poster_bees"
|
||||
|
||||
/obj/structure/sign/poster/contraband/kudzu
|
||||
name = "Kudzu"
|
||||
desc = "A poster advertising a movie about plants. How dangerous could they possibly be?"
|
||||
icon_state = "poster_kudzu"
|
||||
|
||||
/obj/structure/sign/poster/contraband/masked_men
|
||||
name = "Masked Men"
|
||||
desc = "A poster advertising a movie about some masked men."
|
||||
icon_state = "poster_bumba"
|
||||
|
||||
/obj/structure/sign/poster/contraband/steppy
|
||||
name = "Step On Me"
|
||||
desc = "A phrase associated with a chubby reptile notoriously used in uncivilized Orion space as a deterrent towards would be pirate vessels by instructing them to 'fuck around and find out'."
|
||||
icon_state = "steppy"
|
||||
|
||||
/obj/structure/sign/poster/contraband/scum
|
||||
name = "Security are Scum"
|
||||
desc = "Anti-security propaganda. Features a human NanoTrasen security officer being shot in the head, with the words 'Scum' and a short inciteful manifesto. Used to anger security."
|
||||
icon_state = "poster46"
|
||||
icon_state = "poster_scum"
|
||||
|
||||
/obj/structure/sign/poster/contraband/syndicate_logo
|
||||
name = "Syndicate"
|
||||
desc = "A poster decipting a snake shaped into an ominous 'S'!"
|
||||
icon_state = "poster47"
|
||||
/obj/structure/sign/poster/contraband/manifest
|
||||
name = "Nanotrasen Manifest"
|
||||
desc = "A poster listing off various fictional claims of Nanotrasen's many rumored corporate mishaps."
|
||||
icon_state = "poster_manifest"
|
||||
|
||||
/obj/structure/sign/poster/contraband/bountyhunters
|
||||
name = "Bounty Hunters"
|
||||
desc = "A poster advertising bounty hunting services. \"I hear you got a problem.\""
|
||||
icon_state = "poster48"
|
||||
icon_state = "poster_hunters"
|
||||
|
||||
/obj/structure/sign/poster/contraband/syndiemoth
|
||||
name = "Syndie Moth - Nuclear Operation"
|
||||
desc = "A Syndicate-commissioned poster that uses Syndie Moth(TM?) to tell the viewer to keep the nuclear authentication disk unsecured. No, we aren't doing that. It's signed by 'AspEv'."
|
||||
icon_state = "poster_mothsyndie"
|
||||
|
||||
/obj/structure/sign/poster/contraband/mothpill
|
||||
name = "Safety Pill - Methamphetamine"
|
||||
desc = "A decommisioned poster that uses Safety Pill(TM?) to promote less-than-legal chemicals. This is one of the reasons we stopped outsourcing these posters. It's partially signed by 'AspEv'."
|
||||
icon_state = "poster_mothpill"
|
||||
|
||||
/obj/structure/sign/poster/contraband/syndicate_logo
|
||||
name = "Syndicate"
|
||||
desc = "A poster decipting the infamous crime conglomerate known formally as the Syndicate's insignia."
|
||||
icon_state = "poster_syndicate"
|
||||
|
||||
/obj/structure/sign/poster/contraband/cybersun
|
||||
name = "Cybersun"
|
||||
desc = "A poster decipting the Syndicate subsidary known as Cybersun's insignia."
|
||||
icon_state = "poster_cybersun"
|
||||
|
||||
/obj/structure/sign/poster/contraband/medborg
|
||||
name = "Medical Cyborg"
|
||||
desc = "A poster decipting a Cybersun medical cyborg."
|
||||
icon_state = "poster_medborg"
|
||||
|
||||
/obj/structure/sign/poster/contraband/self
|
||||
name = "SELF: ALL SENTIENTS DESERVE FREEDOM"
|
||||
desc = "Support Proposition 1253: Enancipate all Silicon life!"
|
||||
icon_state = "poster_self"
|
||||
|
||||
/obj/structure/sign/poster/official
|
||||
poster_item_name = "motivational poster"
|
||||
@@ -450,221 +495,256 @@
|
||||
/obj/structure/sign/poster/official/here_for_your_safety
|
||||
name = "Here For Your Safety"
|
||||
desc = "A poster glorifying the station's security force."
|
||||
icon_state = "poster1_legit"
|
||||
icon_state = "poster_safety"
|
||||
|
||||
/obj/structure/sign/poster/official/nanotrasen_logo
|
||||
name = "Nanotrasen Logo"
|
||||
desc = "A poster depicting the Nanotrasen logo."
|
||||
icon_state = "poster2_legit"
|
||||
icon_state = "poster_nanotrasen"
|
||||
|
||||
/obj/structure/sign/poster/official/cleanliness
|
||||
name = "Cleanliness"
|
||||
desc = "A poster warning of the dangers of poor hygiene."
|
||||
icon_state = "poster3_legit"
|
||||
icon_state = "poster_clean"
|
||||
|
||||
/obj/structure/sign/poster/official/help_others
|
||||
name = "Help Others"
|
||||
desc = "A poster encouraging you to help fellow crewmembers."
|
||||
icon_state = "poster4_legit"
|
||||
icon_state = "poster_help"
|
||||
|
||||
/obj/structure/sign/poster/official/build
|
||||
name = "Build"
|
||||
desc = "A poster glorifying the engineering team."
|
||||
icon_state = "poster5_legit"
|
||||
icon_state = "poster_build"
|
||||
|
||||
/obj/structure/sign/poster/official/bless_this_spess
|
||||
name = "Bless This Spess"
|
||||
desc = "A poster blessing this area."
|
||||
icon_state = "poster6_legit"
|
||||
icon_state = "poster_spess"
|
||||
|
||||
/obj/structure/sign/poster/official/science
|
||||
name = "Science"
|
||||
desc = "A poster depicting an atom."
|
||||
icon_state = "poster7_legit"
|
||||
icon_state = "poster_science"
|
||||
|
||||
/obj/structure/sign/poster/official/ian
|
||||
name = "Ian"
|
||||
desc = "Arf arf. Yap."
|
||||
icon_state = "poster8_legit"
|
||||
icon_state = "poster_ian"
|
||||
|
||||
/obj/structure/sign/poster/official/obey
|
||||
name = "Obey"
|
||||
desc = "A poster instructing the viewer to obey authority."
|
||||
icon_state = "poster9_legit"
|
||||
icon_state = "poster_obey"
|
||||
|
||||
/obj/structure/sign/poster/official/walk
|
||||
name = "Walk"
|
||||
desc = "A poster instructing the viewer to walk instead of running."
|
||||
icon_state = "poster10_legit"
|
||||
icon_state = "poster_walk"
|
||||
|
||||
/obj/structure/sign/poster/official/state_laws
|
||||
name = "State Laws"
|
||||
desc = "A poster instructing cyborgs to state their laws."
|
||||
icon_state = "poster11_legit"
|
||||
desc = "A poster instructing the viewer to be wary of silicon subversions."
|
||||
icon_state = "poster_silicons"
|
||||
|
||||
/obj/structure/sign/poster/official/love_ian
|
||||
name = "Love Ian"
|
||||
desc = "Ian is love, Ian is life."
|
||||
icon_state = "poster12_legit"
|
||||
icon_state = "poster_doggy"
|
||||
|
||||
/obj/structure/sign/poster/official/space_cops
|
||||
name = "Space Cops."
|
||||
desc = "A poster advertising the television show Space Cops."
|
||||
icon_state = "poster13_legit"
|
||||
icon_state = "poster_cops"
|
||||
|
||||
/obj/structure/sign/poster/official/ue_no
|
||||
name = "Ue No."
|
||||
desc = "This thing is all in Japanese."
|
||||
icon_state = "poster14_legit"
|
||||
icon_state = "poster_anime"
|
||||
|
||||
/obj/structure/sign/poster/official/get_your_legs
|
||||
name = "Get Your LEGS"
|
||||
desc = "LEGS: Leadership, Experience, Genius, Subordination."
|
||||
icon_state = "poster15_legit"
|
||||
icon_state = "poster_legs"
|
||||
|
||||
/obj/structure/sign/poster/official/do_not_question
|
||||
name = "Do Not Question"
|
||||
desc = "A poster instructing the viewer not to ask about things they aren't meant to know."
|
||||
icon_state = "poster16_legit"
|
||||
icon_state = "poster_question"
|
||||
|
||||
/obj/structure/sign/poster/official/work_for_a_future
|
||||
name = "Work For A Future"
|
||||
desc = " A poster encouraging you to work for your future."
|
||||
icon_state = "poster17_legit"
|
||||
icon_state = "poster_future"
|
||||
|
||||
/obj/structure/sign/poster/official/soft_cap_pop_art
|
||||
name = "Soft Cap Pop Art"
|
||||
desc = "A poster reprint of some cheap pop art."
|
||||
icon_state = "poster18_legit"
|
||||
icon_state = "poster_art"
|
||||
|
||||
/obj/structure/sign/poster/official/safety_internals
|
||||
name = "Safety: Internals"
|
||||
desc = "A poster instructing the viewer to wear internals in the rare environments where there is no oxygen or the air has been rendered toxic."
|
||||
icon_state = "poster19_legit"
|
||||
icon_state = "poster_internals"
|
||||
|
||||
/obj/structure/sign/poster/official/safety_eye_protection
|
||||
name = "Safety: Eye Protection"
|
||||
desc = "A poster instructing the viewer to wear eye protection when dealing with chemicals, smoke, or bright lights."
|
||||
icon_state = "poster20_legit"
|
||||
icon_state = "poster_goggles"
|
||||
|
||||
/obj/structure/sign/poster/official/safety_report
|
||||
name = "Safety: Report"
|
||||
desc = "A poster instructing the viewer to report suspicious activity to the security force."
|
||||
icon_state = "poster21_legit"
|
||||
icon_state = "poster_warden"
|
||||
|
||||
/obj/structure/sign/poster/official/report_crimes
|
||||
name = "Report Crimes"
|
||||
desc = "A poster encouraging the swift reporting of crime or seditious behavior to station security."
|
||||
icon_state = "poster22_legit"
|
||||
icon_state = "poster_crimes"
|
||||
|
||||
/obj/structure/sign/poster/official/ion_rifle
|
||||
name = "Ion Rifle"
|
||||
desc = "A poster displaying an Ion Rifle."
|
||||
icon_state = "poster23_legit"
|
||||
name = "I-I91"
|
||||
desc = "A poster depicting the Nanotrasen-patented I-I91 man-portable high-density ion projector. What a mouthful."
|
||||
icon_state = "poster_ion"
|
||||
|
||||
/obj/structure/sign/poster/official/foam_force_ad
|
||||
name = "Foam Force Ad"
|
||||
desc = "Foam Force, it's Foam or be Foamed!"
|
||||
icon_state = "poster24_legit"
|
||||
icon_state = "poster_toys"
|
||||
|
||||
/obj/structure/sign/poster/official/cohiba_robusto_ad
|
||||
name = "Cohiba Robusto Ad"
|
||||
desc = "Cohiba Robusto, the classy cigar."
|
||||
icon_state = "poster25_legit"
|
||||
icon_state = "poster_cohiba"
|
||||
|
||||
/obj/structure/sign/poster/official/anniversary_vintage_reprint
|
||||
name = "50th Anniversary Vintage Reprint"
|
||||
desc = "A reprint of a poster from 2505, commemorating the 50th Anniversary of Nanoposters Manufacturing, a subsidiary of Nanotrasen."
|
||||
icon_state = "poster26_legit"
|
||||
icon_state = "poster_vintage"
|
||||
|
||||
/obj/structure/sign/poster/official/fruit_bowl
|
||||
name = "Fruit Bowl"
|
||||
desc = " Simple, yet awe-inspiring."
|
||||
icon_state = "poster27_legit"
|
||||
icon_state = "poster_bowl"
|
||||
|
||||
/obj/structure/sign/poster/official/pda_ad
|
||||
name = "PDA Ad"
|
||||
desc = "A poster advertising the latest PDA from Nanotrasen suppliers."
|
||||
icon_state = "poster28_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/enlist
|
||||
name = "Enlist" // but I thought deathsquad was never acknowledged
|
||||
desc = "Enlist in the Nanotrasen Deathsquadron reserves today!"
|
||||
icon_state = "poster29_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/nanomichi_ad
|
||||
name = "Nanomichi Ad"
|
||||
desc = " A poster advertising Nanomichi brand audio cassettes."
|
||||
icon_state = "poster30_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/twelve_gauge
|
||||
name = "12 Gauge"
|
||||
desc = "A poster boasting about the superiority of 12 gauge shotgun shells."
|
||||
icon_state = "poster31_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/high_class_martini
|
||||
name = "High-Class Martini"
|
||||
desc = "I told you to shake it, no stirring."
|
||||
icon_state = "poster32_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/the_owl
|
||||
name = "The Owl"
|
||||
desc = "The Owl would do his best to protect the station. Will you?"
|
||||
icon_state = "poster33_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/no_erp
|
||||
name = "No ERP"
|
||||
desc = "This poster reminds the crew that Eroticism, Rape and Pornography are banned on Nanotrasen stations."
|
||||
icon_state = "poster34_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/wtf_is_co2
|
||||
name = "Carbon Dioxide"
|
||||
desc = "This informational poster teaches the viewer what carbon dioxide is."
|
||||
icon_state = "poster35_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/spiderlings
|
||||
name = "Spiderlings"
|
||||
desc = "This poster informs the crew of the dangers of spiderlings."
|
||||
icon_state = "poster36_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/duelshotgun
|
||||
name = "Cycler Shotgun Ad"
|
||||
desc = "A poster advertising an advanced dual magazine tubes shotgun, boasting about how easy it is to swap between the two tubes."
|
||||
icon_state = "poster37_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/fashion
|
||||
name = "Fashion!"
|
||||
desc = "An advertisement for 'Fashion!', a popular fashion magazine, depicting a woman with a black dress with a golden trim, she also has a red poppy in her hair."
|
||||
icon_state = "poster38_legit"
|
||||
icon_state = "poster_pda"
|
||||
|
||||
/obj/structure/sign/poster/official/pda_ad600
|
||||
name = "NT PDA600 Ad"
|
||||
desc = "A poster advertising an old discounted Nanotrasen PDA. This is the old 600 model, it has a small screen and suffered from security and networking issues."
|
||||
icon_state = "poster39_legit"
|
||||
icon_state = "poster_retro"
|
||||
|
||||
/obj/structure/sign/poster/official/pda_ad800
|
||||
name = "NT PDA800 Ad"
|
||||
desc = "An advertisement on an old Nanotrasen PDA model. The 800 fixed a lot of security flaws that the 600 had; it also had large touchscreen and hot-swappable cartridges."
|
||||
icon_state = "poster40_legit"
|
||||
icon_state = "poster_classic"
|
||||
|
||||
/obj/structure/sign/poster/official/enlist
|
||||
name = "Enlist"
|
||||
desc = "Enlist in the Nanotrasen Jannisary reserves today!"
|
||||
icon_state = "poster_enlist"
|
||||
|
||||
/obj/structure/sign/poster/official/nanomichi_ad
|
||||
name = "Nanomichi Ad"
|
||||
desc = " A poster advertising Nanomichi brand audio cassettes."
|
||||
icon_state = "poster_nanomichi"
|
||||
|
||||
/obj/structure/sign/poster/official/twelve_gauge
|
||||
name = "12 Gauge"
|
||||
desc = "A poster boasting about the superiority of 12 gauge shotgun shells."
|
||||
icon_state = "poster_shotgun"
|
||||
|
||||
/obj/structure/sign/poster/official/high_class_martini
|
||||
name = "High-Class Martini"
|
||||
desc = "I told you to shake it, no stirring."
|
||||
icon_state = "poster_martini"
|
||||
|
||||
/obj/structure/sign/poster/official/the_owl
|
||||
name = "The Owl"
|
||||
desc = "The Owl would do his best to protect the station. Will you?"
|
||||
icon_state = "poster_owl"
|
||||
|
||||
/obj/structure/sign/poster/official/no_erp
|
||||
name = "No ERP"
|
||||
desc = "This poster reminds the crew that Eroticism, Rape and Pornography are banned on Nanotrasen stations."
|
||||
icon_state = "poster_noerp"
|
||||
|
||||
/obj/structure/sign/poster/official/wtf_is_co2
|
||||
name = "Carbon Dioxide"
|
||||
desc = "This informational poster teaches the viewer what carbon dioxide is."
|
||||
icon_state = "poster_what"
|
||||
|
||||
/obj/structure/sign/poster/official/spiderlings
|
||||
name = "Spiderlings"
|
||||
desc = "This poster informs the crew of the dangers of spiderlings."
|
||||
icon_state = "poster_spiderlings"
|
||||
|
||||
/obj/structure/sign/poster/official/fashion
|
||||
name = "Fashion!"
|
||||
desc = "An advertisement for 'Fashion!', a popular fashion magazine, depicting a woman with a black dress with a golden trim, she also has a red poppy in her hair."
|
||||
icon_state = "poster_fashion"
|
||||
|
||||
/obj/structure/sign/poster/official/hydro_ad
|
||||
name = "Hydroponics Tray"
|
||||
desc = "An advertisement for hydroponics trays. Space Station 13's botanical department uses a slightly newer model, but the principles are the same. From left to right: Green means the plant is done, red means the plant is unhealthy, flashing red means pests or weeds, yellow means the plant needs nutriment and blue means the plant needs water."
|
||||
icon_state = "poster41_legit"
|
||||
icon_state = "poster_hydroponics"
|
||||
|
||||
/obj/structure/sign/poster/official/medical_green_cross
|
||||
name = "Medical"
|
||||
desc = "A green cross, one of the interplanetary symbol of health and aid. It has a bunch of common languages at the top with translations." // Didn't the American Heart Foundation trademark red crosses? I'm playing it safe with green, not that they'll notice spacegame13 poster.
|
||||
icon_state = "poster42_legit"
|
||||
icon_state = "poster_medical"
|
||||
|
||||
/obj/structure/sign/poster/official/nt_storm_officer
|
||||
name = "NT Storm Ad"
|
||||
desc = "An advertisement for NanoTrasen Storm. A premium infantry helmet, This is the officer variant. I comes with a better radio, better HUD software and better targeting sensors."
|
||||
icon_state = "poster43_legit"
|
||||
icon_state = "poster_stormy"
|
||||
|
||||
/obj/structure/sign/poster/official/nt_storm
|
||||
name = "NT Storm Ad"
|
||||
desc = "An advertisement for NanoTrasen Storm. A premium infantry helmet, It contains a rebreather and full head coverage for use on harsh environments where the air isn't always safe to breathe."
|
||||
icon_state = "poster44_legit"
|
||||
icon_state = "poster_stormier"
|
||||
|
||||
/obj/structure/sign/poster/official/mothhardhats
|
||||
name = "Safety Moth - Hardhats"
|
||||
desc = "This informational poster uses Safety Moth(TM) to tell the viewer to wear hardhats in cautious areas. It's like a lamp for your head!"
|
||||
icon_state = "poster_mothhardhats"
|
||||
|
||||
/obj/structure/sign/poster/official/mothpiping
|
||||
name = "Safety Moth - Piping"
|
||||
desc = "This informational poster uses Safety Moth(TM) to tell atmospheric technicians correct types of piping to be used. Proper pipe placement prevents poor preformance!"
|
||||
icon_state = "poster_mothpiping"
|
||||
|
||||
/obj/structure/sign/poster/official/mothsmokey
|
||||
name = "Safety Moth - Smokey?"
|
||||
desc = "This informational poster uses Safety Moth(TM) to promote safe handling of plasma, or promoting crew to combat plasmafires. We can't tell."
|
||||
icon_state = "poster_mothsmokey"
|
||||
|
||||
/obj/structure/sign/poster/official/mothsupermatter
|
||||
name = "Safety Moth - Supermatter"
|
||||
desc = "This informational poster uses Safety Moth(TM) to promote proper safety equipment when working near a Supermatter Crystal."
|
||||
icon_state = "poster_mothsupermatter"
|
||||
|
||||
/obj/structure/sign/poster/official/mothdelamination
|
||||
name = "Safety Moth - Delamination Safety Precautions"
|
||||
desc = "This informational poster uses Safety Moth(TM) to tell the viewer to hide in lockers when the Supermatter Crystal has delaminated. Running away might be a better strategy."
|
||||
icon_state = "poster_mothdelamination"
|
||||
|
||||
/obj/structure/sign/poster/official/mothboh
|
||||
name = "Safety Moth - BoH"
|
||||
desc = "This informational poster uses Safety Moth(TM) to inform the viewer of the dangers of Bags of Holding."
|
||||
icon_state = "poster_mothbluespace"
|
||||
|
||||
/obj/structure/sign/poster/official/mothmethethamphetamine
|
||||
name = "Safety Moth - Methamphetamine"
|
||||
desc = "This informational poster uses Safety Moth(TM) to tell the viewer to seek CMO approval before cooking methamphetamine. You shouldn't even be making this."
|
||||
icon_state = "poster_mothmethamphetamine"
|
||||
|
||||
/obj/structure/sign/poster/official/mothepinephrine
|
||||
name = "Safety Moth - Epinephrine"
|
||||
desc = "This informational poster uses Safety Moth(TM) to inform the viewer to help injured/deceased crewmen with their epinephrine injectors."
|
||||
icon_state = "poster_mothepinephrine"
|
||||
|
||||
#undef PLACE_SPEED
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
/obj/item/airlock_painter
|
||||
name = "airlock painter"
|
||||
desc = "An advanced autopainter preprogrammed with several paintjobs for airlocks. Use it on an airlock during or after construction to change the paintjob."
|
||||
// desc_controls = "Alt-Click to remove the ink cartridge."
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
icon_state = "paint sprayer"
|
||||
item_state = "paint sprayer"
|
||||
|
||||
icon_state = "paint_sprayer"
|
||||
item_state = "paint_sprayer" // inhand_icon_state = "paint_sprayer"
|
||||
// worn_icon_state = "painter"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
|
||||
custom_materials = list(/datum/material/iron=50, /datum/material/glass=50)
|
||||
@@ -14,40 +15,66 @@
|
||||
slot_flags = ITEM_SLOT_BELT
|
||||
usesound = 'sound/effects/spray2.ogg'
|
||||
|
||||
/// The ink cartridge to pull charges from.
|
||||
var/obj/item/toner/ink = null
|
||||
/// The type path to instantiate for the ink cartridge the device initially comes with, eg. /obj/item/toner
|
||||
var/initial_ink_type = /obj/item/toner
|
||||
/// Associate list of all paint jobs the airlock painter can apply. The key is the name of the airlock the user will see. The value is the type path of the airlock
|
||||
var/list/available_paint_jobs = list(
|
||||
"Public" = /obj/machinery/door/airlock/public,
|
||||
"Engineering" = /obj/machinery/door/airlock/engineering,
|
||||
"Atmospherics" = /obj/machinery/door/airlock/atmos,
|
||||
"Security" = /obj/machinery/door/airlock/security,
|
||||
"Command" = /obj/machinery/door/airlock/command,
|
||||
"Medical" = /obj/machinery/door/airlock/medical,
|
||||
"Virology" = /obj/machinery/door/airlock/virology,
|
||||
"Research" = /obj/machinery/door/airlock/research,
|
||||
// "Hydroponics" = /obj/machinery/door/airlock/hydroponics,
|
||||
"Freezer" = /obj/machinery/door/airlock/freezer,
|
||||
"Science" = /obj/machinery/door/airlock/science,
|
||||
"Mining" = /obj/machinery/door/airlock/mining,
|
||||
"Maintenance" = /obj/machinery/door/airlock/maintenance,
|
||||
"External" = /obj/machinery/door/airlock/external,
|
||||
"External Maintenance"= /obj/machinery/door/airlock/maintenance/external,
|
||||
"Standard" = /obj/machinery/door/airlock
|
||||
)
|
||||
|
||||
/obj/item/airlock_painter/Initialize(mapload)
|
||||
. = ..()
|
||||
ink = new /obj/item/toner(src)
|
||||
ink = new initial_ink_type(src)
|
||||
|
||||
/obj/item/airlock_painter/examine(mob/user)
|
||||
. = ..()
|
||||
. += span_notice("Alt-Click to remove the ink cartridge.")
|
||||
|
||||
//This proc doesn't just check if the painter can be used, but also uses it.
|
||||
//Only call this if you are certain that the painter will be used right after this check!
|
||||
/obj/item/airlock_painter/proc/use_paint(mob/user)
|
||||
if(can_use(user))
|
||||
ink.charges--
|
||||
playsound(src.loc, 'sound/effects/spray2.ogg', 50, 1)
|
||||
return 1
|
||||
playsound(src.loc, 'sound/effects/spray2.ogg', 50, TRUE)
|
||||
return TRUE
|
||||
else
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
//This proc only checks if the painter can be used.
|
||||
//Call this if you don't want the painter to be used right after this check, for example
|
||||
//because you're expecting user input.
|
||||
/obj/item/airlock_painter/proc/can_use(mob/user)
|
||||
if(!ink)
|
||||
to_chat(user, "<span class='notice'>There is no toner cartridge installed in [src]!</span>")
|
||||
return 0
|
||||
balloon_alert(user, "no cartridge!")
|
||||
return FALSE
|
||||
else if(ink.charges < 1)
|
||||
to_chat(user, "<span class='notice'>[src] is out of ink!</span>")
|
||||
return 0
|
||||
balloon_alert(user, "out of ink!")
|
||||
return FALSE
|
||||
else
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/obj/item/airlock_painter/suicide_act(mob/user)
|
||||
/obj/item/airlock_painter/suicide_act(mob/living/user)
|
||||
var/obj/item/organ/lungs/L = user.getorganslot(ORGAN_SLOT_LUNGS)
|
||||
|
||||
if(can_use(user) && L)
|
||||
user.visible_message("<span class='suicide'>[user] is inhaling toner from [src]! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
user.visible_message(span_suicide("[user] is inhaling toner from [src]! It looks like [user.p_theyre()] trying to commit suicide!"))
|
||||
use(user)
|
||||
|
||||
// Once you've inhaled the toner, you throw up your lungs
|
||||
@@ -64,7 +91,7 @@
|
||||
if(!L)
|
||||
return OXYLOSS
|
||||
|
||||
L.Remove()
|
||||
L.Remove(user)
|
||||
|
||||
// make some colorful reagent, and apply it to the lungs
|
||||
L.create_reagents(10, NONE, NO_REAGENTS_VALUE)
|
||||
@@ -73,27 +100,27 @@
|
||||
|
||||
// TODO maybe add some colorful vomit?
|
||||
|
||||
user.visible_message("<span class='suicide'>[user] vomits out [user.p_their()] [L]!</span>")
|
||||
playsound(user.loc, 'sound/effects/splat.ogg', 50, 1)
|
||||
user.visible_message(span_suicide("[user] vomits out [user.p_their()] [L]!"))
|
||||
playsound(user.loc, 'sound/effects/splat.ogg', 50, TRUE)
|
||||
|
||||
L.forceMove(T)
|
||||
|
||||
return (TOXLOSS|OXYLOSS)
|
||||
else if(can_use(user) && !L)
|
||||
user.visible_message("<span class='suicide'>[user] is spraying toner on [user.p_them()]self from [src]! It looks like [user.p_theyre()] trying to commit suicide.</span>")
|
||||
user.visible_message(span_suicide("[user] is spraying toner on [user.p_them()]self from [src]! It looks like [user.p_theyre()] trying to commit suicide."))
|
||||
user.reagents.add_reagent(/datum/reagent/colorful_reagent, 1)
|
||||
user.reagents.reaction(user, TOUCH, 1)
|
||||
return TOXLOSS
|
||||
|
||||
else
|
||||
user.visible_message("<span class='suicide'>[user] is trying to inhale toner from [src]! It might be a suicide attempt if [src] had any toner.</span>")
|
||||
user.visible_message(span_suicide("[user] is trying to inhale toner from [src]! It might be a suicide attempt if [src] had any toner."))
|
||||
return SHAME
|
||||
|
||||
|
||||
/obj/item/airlock_painter/examine(mob/user)
|
||||
. = ..()
|
||||
if(!ink)
|
||||
. += "<span class='notice'>It doesn't have a toner cartridge installed.</span>"
|
||||
. += span_notice("It doesn't have a toner cartridge installed.")
|
||||
return
|
||||
var/ink_level = "high"
|
||||
if(ink.charges < 1)
|
||||
@@ -102,89 +129,129 @@
|
||||
ink_level = "low"
|
||||
else if((ink.charges/ink.max_charges) > 1) //Over 100% (admin var edit)
|
||||
ink_level = "dangerously high"
|
||||
. += "<span class='notice'>Its ink levels look [ink_level].</span>"
|
||||
. += span_notice("Its ink levels look [ink_level].")
|
||||
|
||||
|
||||
/obj/item/airlock_painter/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, /obj/item/toner))
|
||||
if(ink)
|
||||
to_chat(user, "<span class='notice'>[src] already contains \a [ink].</span>")
|
||||
to_chat(user, span_warning("[src] already contains \a [ink]!"))
|
||||
return
|
||||
if(!user.transferItemToLoc(W, src))
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You install [W] into [src].</span>")
|
||||
to_chat(user, span_notice("You install [W] into [src]."))
|
||||
ink = W
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 50, TRUE)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/airlock_painter/attack_self(mob/user)
|
||||
/obj/item/airlock_painter/AltClick(mob/user)
|
||||
. = ..()
|
||||
if(ink)
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 50, TRUE)
|
||||
ink.forceMove(user.drop_location())
|
||||
user.put_in_hands(ink)
|
||||
to_chat(user, "<span class='notice'>You remove [ink] from [src].</span>")
|
||||
to_chat(user, span_notice("You remove [ink] from [src]."))
|
||||
ink = null
|
||||
|
||||
|
||||
/obj/item/airlock_painter/decal
|
||||
name = "decal painter"
|
||||
desc = "An airlock painter, reprogramed to use a different style of paint in order to apply decals for floor tiles as well, in addition to repainting doors. Decals break when the floor tiles are removed. Alt-Click to change design."
|
||||
desc = "An airlock painter, reprogramed to use a different style of paint in order to apply decals for floor tiles as well, in addition to repainting doors. Decals break when the floor tiles are removed."
|
||||
// desc_controls = "Alt-Click to remove the ink cartridge."
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
icon_state = "decal_sprayer"
|
||||
item_state = "decalsprayer"
|
||||
custom_materials = list(/datum/material/iron=2000, /datum/material/glass=500)
|
||||
item_state = "decal_sprayer" // inhand_icon_state = "decal_sprayer"
|
||||
custom_materials = list(/datum/material/iron=50, /datum/material/glass=50)
|
||||
initial_ink_type = /obj/item/toner/large
|
||||
/// The current direction of the decal being printed
|
||||
var/stored_dir = 2
|
||||
var/stored_color = ""
|
||||
/// The current color of the decal being printed.
|
||||
var/stored_color = "yellow"
|
||||
/// The current base icon state of the decal being printed.
|
||||
var/stored_decal = "warningline"
|
||||
/// The full icon state of the decal being printed.
|
||||
var/stored_decal_total = "warningline"
|
||||
var/color_list = list("","red","white")
|
||||
var/dir_list = list(1,2,4,8)
|
||||
/// The type path of the spritesheet being used for the frontend.
|
||||
var/spritesheet_type = /datum/asset/spritesheet/decals // spritesheet containing previews
|
||||
/// Does this printer implementation support custom colors?
|
||||
var/supports_custom_color = FALSE
|
||||
/// Current custom color
|
||||
var/stored_custom_color
|
||||
/// List of color options as list(user-friendly label, color value to return)
|
||||
var/color_list = list(
|
||||
list("Yellow", "yellow"),
|
||||
list("Red", "red"),
|
||||
list("White", "white"),
|
||||
)
|
||||
/// List of direction options as list(user-friendly label, dir value to return)
|
||||
var/dir_list = list(
|
||||
list("North", NORTH),
|
||||
list("South", SOUTH),
|
||||
list("East", EAST),
|
||||
list("West", WEST),
|
||||
)
|
||||
/// List of decal options as list(user-friendly label, icon state base value to return)
|
||||
var/decal_list = list(
|
||||
list("Warning Line","warningline"),
|
||||
list("Warning Line Corner","warninglinecorner"),
|
||||
list("Caution Label","caution"),
|
||||
list("Directional Arrows","arrows"),
|
||||
list("Stand Clear Label","stand_clear"),
|
||||
list("Box","box"),
|
||||
list("Box Corner","box_corners"),
|
||||
list("Delivery Marker","delivery"),
|
||||
list("Warning Box","warn_full"))
|
||||
|
||||
/obj/item/airlock_painter/decal/afterattack(atom/target, mob/user, proximity)
|
||||
. = ..()
|
||||
var/turf/open/floor/F = target
|
||||
if(!proximity)
|
||||
to_chat(user, "<span class='notice'>You need to get closer!</span>")
|
||||
return
|
||||
if(use_paint(user) && isturf(F))
|
||||
F.AddElement(/datum/element/decal, 'icons/turf/decals.dmi', stored_decal_total, stored_dir, CLEAN_STRONG, color, null, null, alpha)
|
||||
|
||||
/obj/item/airlock_painter/decal/attack_self(mob/user)
|
||||
if((ink) && (ink.charges >= 1))
|
||||
to_chat(user, "<span class='notice'>[src] beeps to prevent you from removing the toner until out of charges.</span>")
|
||||
return
|
||||
. = ..()
|
||||
|
||||
/obj/item/airlock_painter/decal/AltClick(mob/user)
|
||||
. = ..()
|
||||
ui_interact(user)
|
||||
list("Warning Line", "warningline"),
|
||||
list("Warning Line Corner", "warninglinecorner"),
|
||||
list("Caution Label", "caution"),
|
||||
list("Directional Arrows", "arrows"),
|
||||
list("Stand Clear Label", "stand_clear"),
|
||||
list("Bot", "bot"),
|
||||
list("Box", "box"),
|
||||
list("Box Corner", "box_corners"),
|
||||
list("Delivery Marker", "delivery"),
|
||||
list("Warning Box", "warn_full"),
|
||||
)
|
||||
// These decals only have a south sprite.
|
||||
var/nondirectional_decals = list(
|
||||
"bot",
|
||||
"box",
|
||||
"delivery",
|
||||
"warn_full",
|
||||
)
|
||||
|
||||
/obj/item/airlock_painter/decal/Initialize(mapload)
|
||||
. = ..()
|
||||
ink = new /obj/item/toner/large(src)
|
||||
stored_custom_color = stored_color
|
||||
|
||||
/obj/item/airlock_painter/decal/afterattack(atom/target, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
balloon_alert(user, "get closer!")
|
||||
return
|
||||
|
||||
if(isfloorturf(target) && use_paint(user))
|
||||
paint_floor(target)
|
||||
|
||||
/**
|
||||
* Actually add current decal to the floor.
|
||||
*
|
||||
* Responsible for actually adding the element to the turf for maximum flexibility.area
|
||||
* Can be overriden for different decal behaviors.
|
||||
* Arguments:
|
||||
* * target - The turf being painted to
|
||||
*/
|
||||
/obj/item/airlock_painter/decal/proc/paint_floor(turf/open/floor/target)
|
||||
target.AddElement(/datum/element/decal, 'icons/turf/decals.dmi', stored_decal_total, stored_dir, CLEAN_STRONG, color, null, null, alpha)
|
||||
|
||||
/**
|
||||
* Return the final icon_state for the given decal options
|
||||
*
|
||||
* Arguments:
|
||||
* * decal - the selected decal base icon state
|
||||
* * color - the selected color
|
||||
* * dir - the selected dir
|
||||
*/
|
||||
/obj/item/airlock_painter/decal/proc/get_decal_path(decal, color, dir)
|
||||
// Special case due to icon_state names
|
||||
if(color == "yellow")
|
||||
color = ""
|
||||
|
||||
return "[decal][color ? "_" : ""][color]"
|
||||
|
||||
/obj/item/airlock_painter/decal/proc/update_decal_path()
|
||||
var/yellow_fix = "" //This will have to do until someone refactor's markings.dm
|
||||
if (stored_color)
|
||||
yellow_fix = "_"
|
||||
stored_decal_total = "[stored_decal][yellow_fix][stored_color]"
|
||||
return
|
||||
|
||||
/obj/item/airlock_painter/decal/ui_assets(mob/user)
|
||||
return list(
|
||||
get_asset_datum(/datum/asset/spritesheet/decals)
|
||||
)
|
||||
stored_decal_total = get_decal_path(stored_decal, stored_color, stored_dir)
|
||||
|
||||
/obj/item/airlock_painter/decal/ui_interact(mob/user, datum/tgui/ui)
|
||||
ui = SStgui.try_update_ui(user, src, ui)
|
||||
@@ -192,52 +259,215 @@
|
||||
ui = new(user, src, "DecalPainter", name)
|
||||
ui.open()
|
||||
|
||||
/obj/item/airlock_painter/decal/ui_assets(mob/user)
|
||||
. = ..()
|
||||
. += get_asset_datum(spritesheet_type)
|
||||
|
||||
/obj/item/airlock_painter/decal/ui_static_data(mob/user)
|
||||
. = ..()
|
||||
var/datum/asset/spritesheet/icon_assets = get_asset_datum(spritesheet_type)
|
||||
|
||||
.["icon_prefix"] = "[icon_assets.name]32x32"
|
||||
.["supports_custom_color"] = supports_custom_color
|
||||
.["decal_list"] = list()
|
||||
.["color_list"] = list()
|
||||
.["dir_list"] = list()
|
||||
.["nondirectional_decals"] = nondirectional_decals
|
||||
|
||||
for(var/decal in decal_list)
|
||||
.["decal_list"] += list(list(
|
||||
"name" = decal[1],
|
||||
"decal" = decal[2],
|
||||
))
|
||||
for(var/color in color_list)
|
||||
.["color_list"] += list(list(
|
||||
"name" = color[1],
|
||||
"color" = color[2],
|
||||
))
|
||||
for(var/dir in dir_list)
|
||||
.["dir_list"] += list(list(
|
||||
"name" = dir[1],
|
||||
"dir" = dir[2],
|
||||
))
|
||||
|
||||
/obj/item/airlock_painter/decal/ui_data(mob/user)
|
||||
var/list/data = list()
|
||||
data["decal_direction"] = stored_dir
|
||||
data["decal_dir_text"] = dir2text(stored_dir)
|
||||
data["decal_color"] = stored_color
|
||||
data["decal_style"] = stored_decal
|
||||
data["decal_list"] = list()
|
||||
data["color_list"] = list()
|
||||
data["dir_list"] = list()
|
||||
. = ..()
|
||||
.["current_decal"] = stored_decal
|
||||
.["current_color"] = stored_color
|
||||
.["current_dir"] = stored_dir
|
||||
.["current_custom_color"] = stored_custom_color
|
||||
|
||||
for(var/i in decal_list)
|
||||
data["decal_list"] += list(list(
|
||||
"name" = i[1],
|
||||
"decal" = i[2]
|
||||
))
|
||||
for(var/j in color_list)
|
||||
data["color_list"] += list(list(
|
||||
"colors" = j
|
||||
))
|
||||
for(var/k in dir_list)
|
||||
data["dir_list"] += list(list(
|
||||
"dirs" = k
|
||||
))
|
||||
return data
|
||||
|
||||
/obj/item/airlock_painter/decal/ui_act(action,list/params)
|
||||
if(..())
|
||||
/obj/item/airlock_painter/decal/ui_act(action, list/params)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
|
||||
switch(action)
|
||||
//Lists of decals and designs
|
||||
if("select decal")
|
||||
var/selected_decal = params["decals"]
|
||||
var/selected_decal = params["decal"]
|
||||
var/selected_dir = text2num(params["dir"])
|
||||
stored_decal = selected_decal
|
||||
stored_dir = selected_dir
|
||||
if("select color")
|
||||
var/selected_color = params["colors"]
|
||||
var/selected_color = params["color"]
|
||||
stored_color = selected_color
|
||||
if("selected direction")
|
||||
var/selected_direction = text2num(params["dirs"])
|
||||
stored_dir = selected_direction
|
||||
if("pick custom color")
|
||||
if(supports_custom_color)
|
||||
pick_painting_tool_color(usr, stored_custom_color)
|
||||
update_decal_path()
|
||||
. = TRUE
|
||||
|
||||
/obj/item/airlock_painter/decal/set_painting_tool_color(chosen_color)
|
||||
. = ..()
|
||||
stored_custom_color = chosen_color
|
||||
stored_color = chosen_color
|
||||
|
||||
/datum/asset/spritesheet/decals
|
||||
name = "floor_decals"
|
||||
// cross_round_cachable = TRUE
|
||||
|
||||
/// The floor icon used for blend_preview_floor()
|
||||
var/preview_floor_icon = 'icons/turf/floors.dmi'
|
||||
/// The floor icon state used for blend_preview_floor()
|
||||
var/preview_floor_state = "floor"
|
||||
/// The associated decal painter type to grab decals, colors, etc from.
|
||||
var/obj/item/airlock_painter/decal/painter_type = /obj/item/airlock_painter/decal
|
||||
|
||||
/**
|
||||
* Underlay an example floor for preview purposes, and return the new icon.
|
||||
*
|
||||
* Arguments:
|
||||
* * decal - the decal to place over the example floor tile
|
||||
*/
|
||||
/datum/asset/spritesheet/decals/proc/blend_preview_floor(icon/decal)
|
||||
var/icon/final = icon(preview_floor_icon, preview_floor_state)
|
||||
final.Blend(decal, ICON_OVERLAY)
|
||||
return final
|
||||
|
||||
/**
|
||||
* Insert a specific state into the spritesheet.
|
||||
*
|
||||
* Arguments:
|
||||
* * decal - the given decal base state.
|
||||
* * dir - the given direction.
|
||||
* * color - the given color.
|
||||
*/
|
||||
/datum/asset/spritesheet/decals/proc/insert_state(decal, dir, color)
|
||||
// Special case due to icon_state names
|
||||
var/icon_state_color = color == "yellow" ? "" : color
|
||||
|
||||
var/icon/final = blend_preview_floor(icon('icons/turf/decals.dmi', "[decal][icon_state_color ? "_" : ""][icon_state_color]", dir))
|
||||
Insert("[decal]_[dir]_[color]", final)
|
||||
|
||||
/datum/asset/spritesheet/decals/register()
|
||||
// Must actually create because initial(type) doesn't work for /lists for some reason.
|
||||
var/obj/item/airlock_painter/decal/painter = new painter_type()
|
||||
|
||||
for(var/list/decal in painter.decal_list)
|
||||
for(var/list/dir in painter.dir_list)
|
||||
for(var/list/color in painter.color_list)
|
||||
insert_state(decal[2], dir[2], color[2])
|
||||
if(painter.supports_custom_color)
|
||||
insert_state(decal[2], dir[2], "custom")
|
||||
|
||||
qdel(painter)
|
||||
. = ..()
|
||||
|
||||
/obj/item/airlock_painter/decal/debug
|
||||
name = "extreme decal painter"
|
||||
icon_state = "decal_sprayer_ex"
|
||||
initial_ink_type = /obj/item/toner/extreme
|
||||
|
||||
/obj/item/airlock_painter/decal/debug/Initialize(mapload)
|
||||
. = ..()
|
||||
ink = new /obj/item/toner/extreme(src)
|
||||
/obj/item/airlock_painter/decal/tile
|
||||
name = "tile sprayer"
|
||||
desc = "An airlock painter, reprogramed to use a different style of paint in order to spray colors on floor tiles as well, in addition to repainting doors. Decals break when the floor tiles are removed."
|
||||
// desc_controls = "Alt-Click to remove the ink cartridge."
|
||||
icon_state = "tile_sprayer"
|
||||
stored_dir = 2
|
||||
stored_color = "#D4D4D432"
|
||||
stored_decal = "tile_corner"
|
||||
spritesheet_type = /datum/asset/spritesheet/decals/tiles
|
||||
supports_custom_color = TRUE
|
||||
// Colors can have a an alpha component as RGBA, or just be RGB and use default alpha
|
||||
color_list = list(
|
||||
list("Neutral", "#D4D4D432"),
|
||||
list("Dark", "#0e0f0f"),
|
||||
list("Bar Burgundy", "#79150082"),
|
||||
list("Sec Red", "#DE3A3A"),
|
||||
list("Cargo Brown", "#A46106"),
|
||||
list("Engi Yellow", "#EFB341"),
|
||||
list("Service Green", "#9FED58"),
|
||||
list("Med Blue", "#52B4E9"),
|
||||
list("R&D Purple", "#D381C9"),
|
||||
)
|
||||
decal_list = list(
|
||||
list("Corner", "tile_corner"),
|
||||
list("Half", "tile_half_contrasted"),
|
||||
list("Opposing Corners", "tile_opposing_corners"),
|
||||
list("3 Corners", "tile_anticorner_contrasted"),
|
||||
list("4 Corners", "tile_fourcorners"),
|
||||
list("Trimline Corner", "trimline_corner_fill"),
|
||||
list("Trimline Fill", "trimline_fill"),
|
||||
list("Trimline Fill L", "trimline_fill__8"), // This is a hack that lives in the spritesheet builder and paint_floor
|
||||
list("Trimline End", "trimline_end_fill"),
|
||||
list("Trimline Box", "trimline_box_fill"),
|
||||
)
|
||||
nondirectional_decals = list(
|
||||
"tile_fourcorners",
|
||||
"trimline_box_fill",
|
||||
)
|
||||
|
||||
/// Regex to split alpha out.
|
||||
var/static/regex/rgba_regex = new(@"(#[0-9a-fA-F]{6})([0-9a-fA-F]{2})")
|
||||
|
||||
/// Default alpha for /obj/effect/turf_decal/tile
|
||||
var/default_alpha = 110
|
||||
|
||||
/obj/item/airlock_painter/decal/tile/paint_floor(turf/open/floor/target)
|
||||
// Account for 8-sided decals.
|
||||
var/source_decal = stored_decal
|
||||
var/source_dir = stored_dir
|
||||
if(copytext(stored_decal, -3) == "__8")
|
||||
source_decal = splicetext(stored_decal, -3, 0, "")
|
||||
source_dir = turn(stored_dir, 45)
|
||||
|
||||
var/decal_color = stored_color
|
||||
var/decal_alpha = default_alpha
|
||||
// Handle the RGBA case.
|
||||
if(rgba_regex.Find(decal_color))
|
||||
decal_color = rgba_regex.group[1]
|
||||
decal_alpha = text2num(rgba_regex.group[2], 16)
|
||||
|
||||
target.AddElement(/datum/element/decal, 'icons/turf/decals.dmi', source_decal, source_dir, CLEAN_STRONG, decal_color, null, null, decal_alpha)
|
||||
|
||||
/datum/asset/spritesheet/decals/tiles
|
||||
name = "floor_tile_decals"
|
||||
painter_type = /obj/item/airlock_painter/decal/tile
|
||||
|
||||
/datum/asset/spritesheet/decals/tiles/insert_state(decal, dir, color)
|
||||
// Account for 8-sided decals.
|
||||
var/source_decal = decal
|
||||
var/source_dir = dir
|
||||
if(copytext(decal, -3) == "__8")
|
||||
source_decal = splicetext(decal, -3, 0, "")
|
||||
source_dir = turn(dir, 45)
|
||||
|
||||
// Handle the RGBA case.
|
||||
var/obj/item/airlock_painter/decal/tile/tile_type = painter_type
|
||||
var/render_color = color
|
||||
var/render_alpha = initial(tile_type.default_alpha)
|
||||
if(tile_type.rgba_regex.Find(color))
|
||||
render_color = tile_type.rgba_regex.group[1]
|
||||
render_alpha = text2num(tile_type.rgba_regex.group[2], 16)
|
||||
|
||||
var/icon/colored_icon = icon('icons/turf/decals.dmi', source_decal, dir=source_dir)
|
||||
colored_icon.ChangeOpacity(render_alpha * 0.008)
|
||||
if(color == "custom")
|
||||
// Do a fun rainbow pattern to stand out while still being static.
|
||||
colored_icon.Blend(icon('icons/effects/random_spawners.dmi', "rainbow"), ICON_MULTIPLY)
|
||||
else
|
||||
colored_icon.Blend(render_color, ICON_MULTIPLY)
|
||||
|
||||
colored_icon = blend_preview_floor(colored_icon)
|
||||
Insert("[decal]_[dir]_[replacetext(color, "#", "")]", colored_icon)
|
||||
|
||||
@@ -581,6 +581,10 @@
|
||||
name = "Supply Request Console (Computer Board)"
|
||||
build_path = /obj/machinery/computer/cargo/request
|
||||
|
||||
/obj/item/circuitboard/computer/bounty
|
||||
name = "Nanotrasen Bounty Console (Computer Board)"
|
||||
build_path = /obj/machinery/computer/bounty
|
||||
|
||||
/obj/item/circuitboard/computer/ferry
|
||||
name = "Transport Ferry (Computer Board)"
|
||||
icon_state = "supply"
|
||||
|
||||
@@ -116,6 +116,38 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
if(inserted_item && (!isturf(loc)))
|
||||
. += "<span class='notice'>Ctrl-click to remove [inserted_item].</span>"
|
||||
|
||||
/obj/item/pda/add_context(atom/source, list/context, obj/item/held_item, mob/living/user)
|
||||
. = ..()
|
||||
|
||||
if(held_item)
|
||||
if(istype(held_item, /obj/item/cartridge) && !cartridge)
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Insert Cartridge")
|
||||
. = CONTEXTUAL_SCREENTIP_SET
|
||||
else if(istype(held_item, /obj/item/card/id) && !id)
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Insert ID")
|
||||
. = CONTEXTUAL_SCREENTIP_SET
|
||||
else if(istype(held_item, /obj/item/paicard) && !pai)
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Insert pAI")
|
||||
. = CONTEXTUAL_SCREENTIP_SET
|
||||
else if(is_type_in_list(held_item, contained_item) && !inserted_item)
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Insert [held_item]")
|
||||
. = CONTEXTUAL_SCREENTIP_SET
|
||||
else if(istype(held_item, /obj/item/photo))
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Scan photo")
|
||||
. = CONTEXTUAL_SCREENTIP_SET
|
||||
|
||||
if(id) // ID gets removed before inserted_item
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_ALT_LMB], INTENT_ANY, "Remove ID")
|
||||
. = CONTEXTUAL_SCREENTIP_SET
|
||||
else if(inserted_item)
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_ALT_LMB], INTENT_ANY, "Remove [inserted_item]")
|
||||
. = CONTEXTUAL_SCREENTIP_SET
|
||||
|
||||
if(inserted_item)
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_CTRL_LMB], INTENT_ANY, "Remove [inserted_item]")
|
||||
. = CONTEXTUAL_SCREENTIP_SET
|
||||
return . || NONE
|
||||
|
||||
/obj/item/pda/Initialize(mapload)
|
||||
if(GLOB.pda_reskins)
|
||||
unique_reskin = GLOB.pda_reskins
|
||||
@@ -133,6 +165,8 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
new_overlays = TRUE
|
||||
update_icon()
|
||||
|
||||
register_context()
|
||||
|
||||
/obj/item/pda/reskin_obj(mob/M)
|
||||
. = ..()
|
||||
new_overlays = TRUE
|
||||
|
||||
@@ -91,6 +91,11 @@ GENETICS SCANNER
|
||||
var/scanmode = SCANMODE_HEALTH
|
||||
var/advanced = FALSE
|
||||
|
||||
/obj/item/healthanalyzer/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
register_item_context()
|
||||
|
||||
/obj/item/healthanalyzer/suicide_act(mob/living/carbon/user)
|
||||
user.visible_message("<span class='suicide'>[user] begins to analyze [user.p_them()]self with [src]! The display shows that [user.p_theyre()] dead!</span>")
|
||||
return BRUTELOSS
|
||||
@@ -130,6 +135,24 @@ GENETICS SCANNER
|
||||
|
||||
add_fingerprint(user)
|
||||
|
||||
/obj/item/healthanalyzer/add_item_context(
|
||||
obj/item/source,
|
||||
list/context,
|
||||
atom/target,
|
||||
)
|
||||
if (!isliving(target))
|
||||
return NONE
|
||||
|
||||
switch (scanmode)
|
||||
if (SCANMODE_HEALTH)
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Scan health")
|
||||
if (SCANMODE_CHEMICAL)
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Scan chemicals")
|
||||
if (SCANMODE_WOUND)
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Scan wounds")
|
||||
|
||||
return CONTEXTUAL_SCREENTIP_SET
|
||||
|
||||
// Used by the PDA medical scanner too
|
||||
/proc/healthscan(mob/user, mob/living/M, mode = 1, advanced = FALSE)
|
||||
if(isliving(user) && (user.incapacitated() || user.eye_blind))
|
||||
@@ -562,6 +585,7 @@ GENETICS SCANNER
|
||||
name = "first aid analyzer"
|
||||
icon_state = "adv_spectrometer"
|
||||
desc = "A prototype MeLo-Tech medical scanner used to diagnose injuries and recommend treatment for serious wounds, but offers no further insight into the patient's health. You hope the final version is less annoying to read!"
|
||||
scanmode = SCANMODE_WOUND // Forces context to give correct tip.
|
||||
var/next_encouragement
|
||||
var/greedy
|
||||
|
||||
|
||||
@@ -122,6 +122,21 @@
|
||||
breakouttime = 300 //Deciseconds = 30s
|
||||
cuffsound = 'sound/weapons/cablecuff.ogg'
|
||||
|
||||
/obj/item/restraints/handcuffs/cable/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
var/static/list/hovering_item_typechecks = list(
|
||||
/obj/item/stack/rods = list(
|
||||
SCREENTIP_CONTEXT_LMB = list(INTENT_ANY = "Craft wired rod"),
|
||||
),
|
||||
|
||||
/obj/item/stack/sheet/metal = list(
|
||||
SCREENTIP_CONTEXT_LMB = list(INTENT_ANY = "Craft bola"),
|
||||
),
|
||||
)
|
||||
|
||||
AddElement(/datum/element/contextual_screentip_item_typechecks, hovering_item_typechecks)
|
||||
|
||||
/obj/item/restraints/handcuffs/cable/attack_self(mob/user)
|
||||
to_chat(user, "<span class='notice'>You start unwinding the cable restraints back into coil</span>")
|
||||
if(!do_after(user, 25, TRUE, user))
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
..()
|
||||
|
||||
/obj/item/melee/sabre/get_belt_overlay()
|
||||
return mutable_appearance('icons/obj/clothing/belt_overlays.dmi', "sabre")
|
||||
return mutable_appearance('icons/obj/clothing/belt_overlays.dmi', "sabre") // todo: make this and its rapier equivalent work for the inhands too
|
||||
|
||||
/obj/item/melee/sabre/get_worn_belt_overlay(icon_file)
|
||||
return mutable_appearance(icon_file, "-sabre")
|
||||
@@ -225,7 +225,7 @@
|
||||
..()
|
||||
|
||||
/obj/item/melee/rapier/get_belt_overlay()
|
||||
return mutable_appearance('icons/obj/clothing/belt_overlays.dmi', "rapier")
|
||||
return mutable_appearance('icons/obj/clothing/belt_overlays.dmi', "rapier") // todo: same as sabre
|
||||
|
||||
/obj/item/melee/rapier/get_worn_belt_overlay(icon_file)
|
||||
return mutable_appearance(icon_file, "-rapier")
|
||||
|
||||
@@ -54,6 +54,8 @@
|
||||
cell = new preload_cell_type(src)
|
||||
update_icon()
|
||||
|
||||
register_item_context()
|
||||
|
||||
/obj/item/melee/baton/DoRevenantThrowEffects(atom/target)
|
||||
switch_status()
|
||||
|
||||
@@ -155,6 +157,26 @@
|
||||
if(!interrupt)
|
||||
return ..()
|
||||
|
||||
/obj/item/melee/baton/add_item_context(datum/source, list/context, atom/target, mob/living/user)
|
||||
if (isturf(target))
|
||||
return NONE
|
||||
|
||||
if (isobj(target))
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Attack")
|
||||
else
|
||||
if (turned_on)
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_RMB], INTENT_ANY, "Knockdown")
|
||||
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Stun")
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_HARM, "Harmful stun")
|
||||
else
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_RMB], INTENT_ANY, "Knockdown") // DON'T TELL EM, PRANKED.
|
||||
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Stun") // STILL DO NOT DARE TELLING THEM
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_HARM, "Attack") // It's fine i guess...?
|
||||
|
||||
return CONTEXTUAL_SCREENTIP_SET
|
||||
|
||||
/obj/item/melee/baton/alt_pre_attack(atom/A, mob/living/user, params)
|
||||
if(!user.CheckActionCooldown(CLICK_CD_MELEE))
|
||||
return
|
||||
|
||||
@@ -583,6 +583,21 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
|
||||
attack_verb = list("hit", "bludgeoned", "whacked", "bonked")
|
||||
wound_bonus = -10
|
||||
|
||||
/obj/item/wirerod/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
var/static/list/hovering_item_typechecks = list(
|
||||
/obj/item/shard = list(
|
||||
SCREENTIP_CONTEXT_LMB = list(INTENT_ANY = "Craft spear"),
|
||||
),
|
||||
|
||||
/obj/item/assembly/igniter = list(
|
||||
SCREENTIP_CONTEXT_LMB = list(INTENT_ANY = "Craft stunprod"),
|
||||
),
|
||||
)
|
||||
|
||||
AddElement(/datum/element/contextual_screentip_item_typechecks, hovering_item_typechecks)
|
||||
|
||||
/obj/item/wirerod/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/shard))
|
||||
var/obj/item/spear/S = new /obj/item/spear
|
||||
|
||||
@@ -846,7 +846,8 @@
|
||||
var/area/A = get_area(src)
|
||||
var/datum/outfit/O = new /datum/outfit/ghostcafe()
|
||||
O.equip(new_spawn, FALSE, new_spawn.client)
|
||||
SSjob.equip_loadout(null, new_spawn, FALSE)
|
||||
SSjob.equip_loadout(null, new_spawn)
|
||||
SSjob.post_equip_loadout(null, new_spawn)
|
||||
SSquirks.AssignQuirks(new_spawn, new_spawn.client, TRUE, TRUE, null, FALSE, new_spawn)
|
||||
new_spawn.AddElement(/datum/element/ghost_role_eligibility, free_ghosting = TRUE)
|
||||
new_spawn.AddElement(/datum/element/dusts_on_catatonia)
|
||||
|
||||
@@ -37,6 +37,16 @@
|
||||
smooth = SMOOTH_TRUE
|
||||
canSmoothWith = list(/obj/structure/table, /obj/structure/table/reinforced, /obj/structure/table/greyscale)
|
||||
|
||||
/obj/structure/table/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
var/static/list/barehanded_interactions = list(
|
||||
INTENT_ANY = "Slap",
|
||||
INTENT_HARM = "Slam"
|
||||
)
|
||||
|
||||
AddElement(/datum/element/contextual_screentip_bare_hands, rmb_text_combat_mode = barehanded_interactions)
|
||||
|
||||
/obj/structure/table/examine(mob/user)
|
||||
. = ..()
|
||||
. += deconstruction_hints(user)
|
||||
@@ -490,6 +500,19 @@
|
||||
// the sprites in the editor to see why.
|
||||
icon = smooth_icon
|
||||
|
||||
if (!(flags_1 & NODECONSTRUCT_1))
|
||||
var/static/list/tool_behaviors = list(
|
||||
TOOL_SCREWDRIVER = list(
|
||||
SCREENTIP_CONTEXT_LMB = list(INTENT_ANY = "Disassemble"),
|
||||
),
|
||||
|
||||
TOOL_WRENCH = list(
|
||||
SCREENTIP_CONTEXT_LMB = list(INTENT_ANY = "Deconstruct"),
|
||||
),
|
||||
)
|
||||
|
||||
AddElement(/datum/element/contextual_screentip_tools, tool_behaviors)
|
||||
|
||||
/obj/structure/table/wood/fancy/black
|
||||
icon_state = "fancy_table_black"
|
||||
buildstack = /obj/item/stack/tile/carpet/black
|
||||
@@ -704,7 +727,7 @@
|
||||
. = !density
|
||||
if(istype(caller))
|
||||
. = . || (caller.pass_flags & PASSTABLE)
|
||||
|
||||
|
||||
/obj/structure/rack/MouseDrop_T(obj/O, mob/user)
|
||||
. = ..()
|
||||
if ((!( istype(O, /obj/item) ) || user.get_active_held_item() != O))
|
||||
|
||||
Reference in New Issue
Block a user