mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2026-08-27 15:17:21 +01:00
Merge pull request #8173 from Cerebulon/tgportports
Misc Vore-TG Port Ports
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"
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -94,6 +94,27 @@
|
||||
/obj/item/weapon/material/kitchen/utensil/fork/plastic
|
||||
default_material = "plastic"
|
||||
|
||||
/obj/item/weapon/material/kitchen/utensil/foon
|
||||
name = "foon"
|
||||
desc = "It's a foon. The forgotten cousin of the spork."
|
||||
icon_state = "foon"
|
||||
sharp = TRUE
|
||||
edge = FALSE
|
||||
|
||||
/obj/item/weapon/material/kitchen/utensil/foon/plastic
|
||||
default_material = "plastic"
|
||||
|
||||
/obj/item/weapon/material/kitchen/utensil/spork
|
||||
name = "spork"
|
||||
desc = "It's a spork. The (un)holy merger of a spoon and fork."
|
||||
icon_state = "spork"
|
||||
sharp = TRUE
|
||||
edge = FALSE
|
||||
|
||||
/obj/item/weapon/material/kitchen/utensil/spork/plastic
|
||||
default_material = "plastic"
|
||||
|
||||
|
||||
/obj/item/weapon/material/kitchen/utensil/spoon
|
||||
name = "spoon"
|
||||
desc = "It's a spoon. You can see your own upside-down face in it."
|
||||
|
||||
@@ -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]'"
|
||||
|
||||
@@ -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")
|
||||
@@ -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