mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-30 08:29:57 +01:00
Unapologetic Janitor Buffs (#4006)
This commit is contained in:
@@ -538,6 +538,7 @@
|
||||
#include "code\game\machinery\transformer.dm"
|
||||
#include "code\game\machinery\turret_control.dm"
|
||||
#include "code\game\machinery\vending.dm"
|
||||
#include "code\game\machinery\vending_items.dm"
|
||||
#include "code\game\machinery\vending_types.dm"
|
||||
#include "code\game\machinery\wall_frames.dm"
|
||||
#include "code\game\machinery\washing_machine.dm"
|
||||
@@ -877,6 +878,7 @@
|
||||
#include "code\game\objects\items\weapons\tanks\jetpack.dm"
|
||||
#include "code\game\objects\items\weapons\tanks\tank_types.dm"
|
||||
#include "code\game\objects\items\weapons\tanks\tanks.dm"
|
||||
#include "code\game\objects\items\weapons\tanks\watertank.dm"
|
||||
#include "code\game\objects\random\random.dm"
|
||||
#include "code\game\objects\structures\banner.dm"
|
||||
#include "code\game\objects\structures\barsign.dm"
|
||||
@@ -2251,6 +2253,7 @@
|
||||
#include "code\modules\vehicles\bike.dm"
|
||||
#include "code\modules\vehicles\cargo_train.dm"
|
||||
#include "code\modules\vehicles\droppod.dm"
|
||||
#include "code\modules\vehicles\pussywagon.dm"
|
||||
#include "code\modules\vehicles\train.dm"
|
||||
#include "code\modules\vehicles\vehicle.dm"
|
||||
#include "code\modules\ventcrawl\ventcrawl.dm"
|
||||
|
||||
@@ -200,35 +200,6 @@
|
||||
H.species.equip_survival_gear(H,1)
|
||||
return TRUE
|
||||
|
||||
/datum/job/janitor
|
||||
title = "Janitor"
|
||||
flag = JANITOR
|
||||
department = "Civilian"
|
||||
department_flag = CIVILIAN
|
||||
faction = "Station"
|
||||
total_positions = 2
|
||||
spawn_positions = 2
|
||||
supervisors = "the head of personnel"
|
||||
selection_color = "#dddddd"
|
||||
access = list(access_janitor, access_maint_tunnels, access_engine, access_research, access_sec_doors, access_medical)
|
||||
minimal_access = list(access_janitor, access_maint_tunnels, access_engine, access_research, access_sec_doors, access_medical)
|
||||
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H)
|
||||
return FALSE
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/duffel(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/janitor(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/janitor(H), slot_belt)
|
||||
return TRUE
|
||||
|
||||
|
||||
//More or less assistants
|
||||
/datum/job/librarian
|
||||
title = "Librarian"
|
||||
|
||||
@@ -18,11 +18,11 @@
|
||||
|
||||
access = list(access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels,
|
||||
access_teleporter, access_external_airlocks, access_atmospherics, access_emergency_storage, access_eva,
|
||||
access_heads, access_construction, access_sec_doors,
|
||||
access_heads, access_construction, access_sec_doors, access_janitor,
|
||||
access_ce, access_RC_announce, access_keycard_auth, access_tcomsat, access_ai_upload)
|
||||
minimal_access = list(access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels,
|
||||
access_teleporter, access_external_airlocks, access_atmospherics, access_emergency_storage, access_eva,
|
||||
access_heads, access_construction, access_sec_doors,
|
||||
access_heads, access_construction, access_sec_doors, access_janitor,
|
||||
access_ce, access_RC_announce, access_keycard_auth, access_tcomsat, access_ai_upload)
|
||||
minimal_player_age = 7
|
||||
|
||||
@@ -134,3 +134,31 @@
|
||||
return FALSE
|
||||
H.species.equip_survival_gear(H,1)
|
||||
return TRUE
|
||||
|
||||
/datum/job/janitor
|
||||
title = "Janitor"
|
||||
flag = JANITOR
|
||||
department = "Engineering"
|
||||
department_flag = ENGSEC
|
||||
faction = "Station"
|
||||
total_positions = 2
|
||||
spawn_positions = 2
|
||||
supervisors = "the chief engineer"
|
||||
selection_color = "#fff5cc"
|
||||
access = list(access_janitor, access_maint_tunnels, access_engine, access_research, access_sec_doors, access_medical)
|
||||
minimal_access = list(access_janitor, access_maint_tunnels, access_engine, access_research, access_sec_doors, access_medical)
|
||||
|
||||
bag_type = /obj/item/weapon/storage/backpack
|
||||
satchel_type = /obj/item/weapon/storage/backpack/satchel_norm
|
||||
duffel_type = /obj/item/weapon/storage/backpack/satchel
|
||||
messenger_bag_type = /obj/item/weapon/storage/backpack/duffel
|
||||
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H)
|
||||
return FALSE
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_eng(H), slot_l_ear)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/janitor(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/janitor(H), slot_belt)
|
||||
return TRUE
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
var/product_name = "generic" // Display name for the product
|
||||
var/product_path = null
|
||||
var/amount = 0 // Amount held in the vending machine
|
||||
var/max_amount = 0
|
||||
var/price = 0 // Price to buy one
|
||||
var/display_color = null // Display color for vending machine listing
|
||||
var/category = CAT_NORMAL // CAT_HIDDEN for contraband, CAT_COIN for premium
|
||||
@@ -95,8 +96,9 @@
|
||||
var/scan_id = 1
|
||||
var/obj/item/weapon/coin/coin
|
||||
var/datum/wires/vending/wires = null
|
||||
|
||||
|
||||
var/can_move = 1 //if you can wrench the machine out of place
|
||||
var/vend_id = "generic"
|
||||
|
||||
/obj/machinery/vending/Initialize()
|
||||
. = ..()
|
||||
@@ -137,6 +139,7 @@
|
||||
|
||||
product.price = (entry in src.prices) ? src.prices[entry] : 0
|
||||
product.amount = (current_list[1][entry]) ? current_list[1][entry] : 1
|
||||
product.max_amount = product.amount
|
||||
product.category = category
|
||||
|
||||
src.product_records.Add(product)
|
||||
@@ -246,6 +249,24 @@
|
||||
anchored = !anchored
|
||||
return
|
||||
|
||||
else if(istype(W,/obj/item/weapon/vending_refill))
|
||||
if(panel_open)
|
||||
var/obj/item/weapon/vending_refill/VR = W
|
||||
if(VR.charges)
|
||||
if(VR.vend_id == vend_id)
|
||||
VR.restock_inventory(src)
|
||||
user << "<span class='notice'>You restock \the [src] with \the [VR]!</span>"
|
||||
if(!VR.charges)
|
||||
user << "<span class='warning'>\The [VR] is depleted!</span>"
|
||||
else
|
||||
user << "<span class='warning'>\The [VR] is not stocked for this type of vendor!</span>"
|
||||
else
|
||||
user << "<span class='warning'>\The [VR] is depleted!</span>"
|
||||
return
|
||||
else
|
||||
user << "<span class='warning'>You must open \the [src]'s maintenance panel first!</span>"
|
||||
return
|
||||
|
||||
else if(!is_borg_item(W))
|
||||
|
||||
for(var/datum/data/vending_product/R in product_records)
|
||||
@@ -254,7 +275,6 @@
|
||||
qdel(W)
|
||||
return
|
||||
..()
|
||||
|
||||
else
|
||||
..()
|
||||
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
/obj/item/weapon/vending_refill
|
||||
name = "resupply canister"
|
||||
var/vend_id = "generic"
|
||||
|
||||
icon = 'icons/obj/electronic_assemblies.dmi'
|
||||
icon_state = "setup_medium-open"
|
||||
item_state = "RPED"
|
||||
desc = "A vending machine restock cart."
|
||||
force = 7
|
||||
throwforce = 10
|
||||
throw_speed = 1
|
||||
throw_range = 7
|
||||
w_class = 3
|
||||
var/charges = 0
|
||||
|
||||
/obj/item/weapon/vending_refill/examine(mob/user)
|
||||
..()
|
||||
if(charges > 0)
|
||||
to_chat(user, "It can restock [charges] item(s).")
|
||||
else
|
||||
to_chat(user, "It's empty!")
|
||||
|
||||
/obj/item/weapon/vending_refill/proc/restock_inventory(var/obj/machinery/vending/vendor)
|
||||
if(vendor)
|
||||
for(var/datum/data/vending_product/product in vendor.product_records)
|
||||
if(product.amount < product.max_amount)
|
||||
var/expense = product.max_amount - product.amount
|
||||
if(charges < expense)
|
||||
expense = charges
|
||||
product.amount += expense
|
||||
charges -= expense
|
||||
if(!charges)
|
||||
break
|
||||
|
||||
//can refill most vendors from half depleted once.
|
||||
|
||||
/obj/item/weapon/vending_refill/booze
|
||||
name = "booze resupply canister"
|
||||
vend_id = "booze"
|
||||
charges = 100 //holy shit that's a lot of booze
|
||||
|
||||
/obj/item/weapon/vending_refill/tools
|
||||
name = "tools resupply canister"
|
||||
vend_id = "tools"
|
||||
charges = 25
|
||||
|
||||
/obj/item/weapon/vending_refill/coffee
|
||||
name = "coffee resupply canister"
|
||||
vend_id = "coffee"
|
||||
charges = 38
|
||||
|
||||
/obj/item/weapon/vending_refill/snack
|
||||
name = "snacks resupply canister"
|
||||
vend_id = "snacks"
|
||||
charges = 38
|
||||
|
||||
/obj/item/weapon/vending_refill/cola
|
||||
name = "cola resupply canister"
|
||||
vend_id = "cola"
|
||||
charges = 50
|
||||
|
||||
/obj/item/weapon/vending_refill/pda
|
||||
name = "pdas resupply canister"
|
||||
vend_id = "pdas"
|
||||
charges = 38
|
||||
|
||||
/obj/item/weapon/vending_refill/smokes
|
||||
name = "smokes resupply canister"
|
||||
vend_id = "smokes"
|
||||
charges = 25
|
||||
|
||||
/obj/item/weapon/vending_refill/meds
|
||||
name = "meds resupply canister"
|
||||
vend_id = "meds"
|
||||
charges = 38
|
||||
|
||||
/obj/item/weapon/vending_refill/robust
|
||||
name = "security resupply canister"
|
||||
vend_id = "security"
|
||||
charges = 25
|
||||
|
||||
/obj/item/weapon/vending_refill/hydro
|
||||
name = "hydro resupply canister"
|
||||
vend_id = "hydro"
|
||||
charges = 23
|
||||
|
||||
/obj/item/weapon/vending_refill/seeds
|
||||
name = "resupply canister"
|
||||
vend_id = "seeds"
|
||||
charges = 175
|
||||
|
||||
/obj/item/weapon/vending_refill/cutlery
|
||||
name = "cutlery resupply canister"
|
||||
vend_id = "cutlery"
|
||||
charges = 50
|
||||
|
||||
/obj/item/weapon/vending_refill/robo
|
||||
name = "robo-tools resupply canister"
|
||||
vend_id = "robo-tools"
|
||||
charges = 38
|
||||
@@ -22,6 +22,7 @@
|
||||
desc = "A technological marvel, supposedly able to mix just the mixture you'd like to drink the moment you ask for one."
|
||||
icon_state = "boozeomat" //////////////18 drink entities below, plus the glasses, in case someone wants to edit the number of bottles
|
||||
icon_deny = "boozeomat-deny"
|
||||
vend_id = "booze"
|
||||
products = list(
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/gin = 5,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey = 5,
|
||||
@@ -79,6 +80,7 @@
|
||||
req_access = list(access_bar)
|
||||
|
||||
/obj/machinery/vending/assist
|
||||
vend_id = "tools"
|
||||
products = list(
|
||||
/obj/item/device/assembly/prox_sensor = 5,
|
||||
/obj/item/device/assembly/igniter = 3,
|
||||
@@ -101,6 +103,7 @@
|
||||
vend_delay = 34
|
||||
idle_power_usage = 211 //refrigerator - believe it or not, this is actually the average power consumption of a refrigerated vending machine according to NRCan.
|
||||
vend_power_usage = 85000 //85 kJ to heat a 250 mL cup of coffee
|
||||
vend_id = "coffee"
|
||||
products = list(
|
||||
/obj/item/weapon/reagent_containers/food/drinks/coffee = 25,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/tea = 25,
|
||||
@@ -122,6 +125,7 @@
|
||||
product_slogans = "Try our new nougat bar!;Twice the calories for half the price!"
|
||||
product_ads = "The healthiest!;Award-winning chocolate bars!;Mmm! So good!;Oh my god it's so juicy!;Have a snack.;Snacks are good for you!;Have some more Getmore!;Best quality snacks straight from mars.;We love chocolate!;Try our new jerky!"
|
||||
icon_state = "snack"
|
||||
vend_id = "snacks"
|
||||
products = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy = 6,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/dry_ramen = 6,
|
||||
@@ -163,6 +167,7 @@
|
||||
icon_state = "Cola_Machine"
|
||||
product_slogans = "Robust Softdrinks: More robust than a toolbox to the head!"
|
||||
product_ads = "Refreshing!;Hope you're thirsty!;Over 1 million drinks sold!;Thirsty? Why not cola?;Please, have a drink!;Drink up!;The best drinks in space."
|
||||
vend_id = "cola"
|
||||
products = list(
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/cola = 10,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/space_mountain_wind = 10,
|
||||
@@ -199,6 +204,7 @@
|
||||
icon_state = "cart"
|
||||
icon_deny = "cart-deny"
|
||||
req_access = list(access_hop)
|
||||
vend_id = "pdas"
|
||||
products = list(
|
||||
/obj/item/weapon/cartridge/medical = 10,
|
||||
/obj/item/weapon/cartridge/engineering = 10,
|
||||
@@ -218,6 +224,7 @@
|
||||
product_ads = "Probably not bad for you!;Don't believe the scientists!;It's good for you!;Don't quit, buy more!;Smoke!;Nicotine heaven.;Best cigarettes since 2150.;Award-winning cigs."
|
||||
vend_delay = 34
|
||||
icon_state = "cigs"
|
||||
vend_id = "smokes"
|
||||
products = list(
|
||||
/obj/item/weapon/storage/fancy/cigarettes = 10,
|
||||
/obj/item/weapon/storage/box/matches = 10,
|
||||
@@ -244,6 +251,7 @@
|
||||
icon_deny = "med-deny"
|
||||
product_ads = "Go save some lives!;The best stuff for your medbay.;Only the finest tools.;Natural chemicals!;This stuff saves lives.;Don't you want some?;Ping!"
|
||||
req_access = list(access_medical_equip)
|
||||
vend_id = "meds"
|
||||
products = list(
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/antitoxin = 4,
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline = 4,
|
||||
@@ -270,6 +278,7 @@
|
||||
/obj/machinery/vending/phoronresearch
|
||||
name = "Toximate 3000"
|
||||
desc = "All the fine parts you need in one vending machine!"
|
||||
vend_id = "bomba"
|
||||
products = list(
|
||||
/obj/item/clothing/under/rank/scientist = 6,
|
||||
/obj/item/clothing/suit/bio_suit = 6,
|
||||
@@ -289,6 +298,7 @@
|
||||
icon_deny = "wallmed-deny"
|
||||
req_access = list(access_medical)
|
||||
density = 0 //It is wall-mounted, and thus, not dense. --Superxpdude
|
||||
vend_id = "meds"
|
||||
products = list(
|
||||
/obj/item/stack/medical/bruise_pack = 2,
|
||||
/obj/item/stack/medical/ointment = 2,
|
||||
@@ -308,6 +318,7 @@
|
||||
icon_deny = "wallmed-deny"
|
||||
req_access = list(access_medical)
|
||||
density = 0 //It is wall-mounted, and thus, not dense. --Superxpdude
|
||||
vend_id = "meds"
|
||||
products = list(
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector = 5,
|
||||
/obj/item/weapon/reagent_containers/syringe/antitoxin = 3,
|
||||
@@ -326,6 +337,7 @@
|
||||
icon_state = "sec"
|
||||
icon_deny = "sec-deny"
|
||||
req_access = list(access_security)
|
||||
vend_id = "security"
|
||||
products = list(
|
||||
/obj/item/weapon/handcuffs = 8,
|
||||
/obj/item/weapon/grenade/chem_grenade/teargas = 4,
|
||||
@@ -349,6 +361,7 @@
|
||||
product_ads = "We like plants!;Don't you want some?;The greenest thumbs ever.;We like big plants.;Soft soil..."
|
||||
icon_state = "nutri"
|
||||
icon_deny = "nutri-deny"
|
||||
vend_id = "hydro"
|
||||
products = list(
|
||||
/obj/item/weapon/reagent_containers/glass/fertilizer/ez = 6,
|
||||
/obj/item/weapon/reagent_containers/glass/fertilizer/l4z = 5,
|
||||
@@ -373,6 +386,7 @@
|
||||
product_slogans = "THIS'S WHERE TH' SEEDS LIVE! GIT YOU SOME!;Hands down the best seed selection on the station!;Also certain mushroom varieties available, more for experts! Get certified today!"
|
||||
product_ads = "We like plants!;Grow some crops!;Grow, baby, growww!;Aw h'yeah son!"
|
||||
icon_state = "seeds"
|
||||
vend_id = "seeds"
|
||||
|
||||
products = list(
|
||||
/obj/item/seeds/bananaseed = 3,
|
||||
@@ -493,6 +507,7 @@
|
||||
vend_delay = 15
|
||||
vend_reply = "Have an enchanted evening!"
|
||||
product_ads = "FJKLFJSD;AJKFLBJAKL;1234 LOONIES LOL!;>MFW;Kill them fuckers!;GET DAT FUKKEN DISK;HONK!;EI NATH;Destroy the station!;Admin conspiracies since forever!;Space-time bending hardware!"
|
||||
vend_id = "magic"
|
||||
products = list(
|
||||
/obj/item/clothing/head/wizard = 1,
|
||||
/obj/item/clothing/suit/wizrobe = 1,
|
||||
@@ -510,6 +525,7 @@
|
||||
desc = "A kitchen and restaurant equipment vendor."
|
||||
product_ads = "Mm, food stuffs!;Food and food accessories.;Get your plates!;You like forks?;I like forks.;Woo, utensils.;You don't really need these..."
|
||||
icon_state = "dinnerware"
|
||||
vend_id = "cutlery"
|
||||
products = list(
|
||||
/obj/item/weapon/tray = 8,
|
||||
/obj/item/weapon/material/kitchen/utensil/fork = 6,
|
||||
@@ -532,6 +548,7 @@
|
||||
name = "BODA"
|
||||
desc = "An old sweet water vending machine,how did this end up here?"
|
||||
icon_state = "sovietsoda"
|
||||
vend_id = "cola"
|
||||
product_ads = "For Tsar and Country.;Have you fulfilled your nutrition quota today?;Very nice!;We are simple people, for this is all we eat.;If there is a person, there is a problem. If there is no person, then there is no problem."
|
||||
products = list(
|
||||
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/soda = 30
|
||||
@@ -550,6 +567,7 @@
|
||||
desc = "Tools for tools."
|
||||
icon_state = "tool"
|
||||
icon_deny = "tool-deny"
|
||||
vend_id = "tools"
|
||||
//req_access = list(access_maint_tunnels) //Maintenance access
|
||||
products = list(
|
||||
/obj/item/stack/cable_coil/random = 10,
|
||||
@@ -575,6 +593,7 @@
|
||||
icon_state = "engivend"
|
||||
icon_deny = "engivend-deny"
|
||||
req_access = list(access_engine_equip)
|
||||
vend_id = "tools"
|
||||
products = list(
|
||||
/obj/item/clothing/glasses/meson = 2,
|
||||
/obj/item/device/multitool = 4,
|
||||
@@ -597,6 +616,7 @@
|
||||
icon_state = "tact"
|
||||
icon_deny = "tact-deny"
|
||||
req_access = list(access_security)
|
||||
vend_id = "tactical"
|
||||
products = list(
|
||||
/obj/item/weapon/storage/box/shotgunammo = 2,
|
||||
/obj/item/weapon/storage/box/shotgunshells = 2,
|
||||
@@ -616,6 +636,7 @@
|
||||
icon_state = "tact"
|
||||
icon_deny = "tact-deny"
|
||||
req_access = list(access_security)
|
||||
vend_id = "ert"
|
||||
products = list(
|
||||
/obj/item/weapon/storage/box/shotgunammo = 2,
|
||||
/obj/item/weapon/storage/box/shotgunshells = 2,
|
||||
@@ -639,6 +660,7 @@
|
||||
icon_state = "engi"
|
||||
icon_deny = "engi-deny"
|
||||
req_access = list(access_engine_equip)
|
||||
vend_id = "tools"
|
||||
products = list(
|
||||
/obj/item/clothing/under/rank/chief_engineer = 4,
|
||||
/obj/item/clothing/under/rank/engineer = 4,
|
||||
@@ -676,6 +698,7 @@
|
||||
icon_state = "robotics"
|
||||
icon_deny = "robotics-deny"
|
||||
req_access = list(access_robotics)
|
||||
vend_id = "robo-tools"
|
||||
products = list(
|
||||
/obj/item/clothing/suit/storage/toggle/labcoat = 4,
|
||||
/obj/item/clothing/under/rank/roboticist = 4,
|
||||
@@ -699,6 +722,7 @@
|
||||
name = "prop dispenser"
|
||||
desc = "All the props an actor could need. Probably."
|
||||
icon_state = "Theater"
|
||||
vend_id = "baygay"
|
||||
products = list(
|
||||
/obj/structure/flora/pottedplant = 2,
|
||||
/obj/item/device/flashlight/lamp = 2,
|
||||
@@ -715,8 +739,34 @@
|
||||
name = "container dispenser"
|
||||
desc = "A container that dispenses containers."
|
||||
icon_state = "robotics"
|
||||
vend_id = "baygay"
|
||||
products = list(
|
||||
/obj/structure/closet/crate/freezer = 2,
|
||||
/obj/structure/closet = 3,
|
||||
/obj/structure/closet/crate = 3
|
||||
)
|
||||
|
||||
|
||||
//RECURSION
|
||||
/obj/machinery/vending/vendors
|
||||
name = "Omni-Vendor"
|
||||
desc = "The mother of all vendors, from which vending itself comes!"
|
||||
icon_state = "engivend"
|
||||
icon_deny = "engivend-deny"
|
||||
vend_id = "admin"
|
||||
req_access = list(access_janitor)
|
||||
products = list(
|
||||
/obj/item/weapon/vending_refill/booze = 1,
|
||||
/obj/item/weapon/vending_refill/tools = 1,
|
||||
/obj/item/weapon/vending_refill/coffee = 1,
|
||||
/obj/item/weapon/vending_refill/snack = 1,
|
||||
/obj/item/weapon/vending_refill/cola = 1,
|
||||
/obj/item/weapon/vending_refill/pda = 1,
|
||||
/obj/item/weapon/vending_refill/smokes = 1,
|
||||
/obj/item/weapon/vending_refill/meds = 1,
|
||||
/obj/item/weapon/vending_refill/robust = 1,
|
||||
/obj/item/weapon/vending_refill/hydro = 1,
|
||||
/obj/item/weapon/vending_refill/cutlery = 1,
|
||||
/obj/item/weapon/vending_refill/robo = 1
|
||||
|
||||
)
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//Added by Jack Rost
|
||||
/obj/item/trash
|
||||
icon = 'icons/obj/trash.dmi'
|
||||
w_class = 2.0
|
||||
w_class = 1.0
|
||||
desc = "This is rubbish."
|
||||
|
||||
/obj/item/trash/koisbar
|
||||
|
||||
@@ -37,15 +37,16 @@
|
||||
|
||||
w_class = 4
|
||||
max_w_class = 2
|
||||
max_storage_space = 56
|
||||
can_hold = null // any
|
||||
cant_hold = list(/obj/item/weapon/disk/nuclear)
|
||||
|
||||
/obj/item/weapon/storage/bag/trash/update_icon()
|
||||
if(contents.len == 0)
|
||||
icon_state = "trashbag0"
|
||||
else if(contents.len < 12)
|
||||
icon_state = "trashbag1"
|
||||
else if(contents.len < 21)
|
||||
icon_state = "trashbag1"
|
||||
else if(contents.len < 42)
|
||||
icon_state = "trashbag2"
|
||||
else icon_state = "trashbag3"
|
||||
|
||||
|
||||
@@ -230,7 +230,11 @@
|
||||
/obj/item/device/lightreplacer,
|
||||
/obj/item/device/flashlight,
|
||||
/obj/item/weapon/reagent_containers/spray,
|
||||
/obj/item/weapon/soap
|
||||
/obj/item/weapon/soap,
|
||||
/obj/item/weapon/storage/bag/trash,
|
||||
/obj/item/weapon/screwdriver,
|
||||
/obj/item/weapon/wrench,
|
||||
/obj/item/weapon/crowbar
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/belt/wands
|
||||
|
||||
@@ -0,0 +1,149 @@
|
||||
/obj/item/watertank
|
||||
name = "backpack water tank"
|
||||
desc = "A watertank backpack with nozzle to clean dirt and graffiti."
|
||||
icon = 'icons/obj/hydro_equipment.dmi'
|
||||
icon_state = "waterpack"
|
||||
item_state = "waterpack"
|
||||
contained_sprite = 1
|
||||
w_class = 3
|
||||
slot_flags = SLOT_BACK
|
||||
|
||||
var/obj/item/weapon/reagent_containers/spray/chemsprayer/mister/noz
|
||||
var/on = FALSE
|
||||
var/volume = 500
|
||||
|
||||
/obj/item/watertank/Initialize()
|
||||
. = ..()
|
||||
create_reagents(volume)
|
||||
noz = make_noz()
|
||||
noz.tank = src
|
||||
noz.reagents = reagents
|
||||
noz.loc = src
|
||||
|
||||
/obj/item/watertank/ui_action_click()
|
||||
toggle_mister()
|
||||
|
||||
/obj/item/watertank/verb/toggle_mister()
|
||||
set name = "Toggle Mister"
|
||||
set category = "Object"
|
||||
var/mob/living/carbon/human/user
|
||||
if(istype(usr,/mob/living/carbon/human))
|
||||
user = usr
|
||||
else
|
||||
return
|
||||
if(!user)
|
||||
return
|
||||
if (user.back!= src)
|
||||
to_chat(user, "<span class='warning'>The watertank must be worn properly to use!</span>")
|
||||
return
|
||||
if(use_check(user))
|
||||
return
|
||||
on = !on
|
||||
if(on)
|
||||
if(!noz)
|
||||
noz = make_noz()
|
||||
noz.tank = src
|
||||
noz.reagents = reagents
|
||||
noz.loc = src
|
||||
|
||||
//Detach the nozzle into the user's hands
|
||||
if(!user.put_in_hands(noz))
|
||||
on = FALSE
|
||||
to_chat(user, "<span class='warning'>You need a free hand to hold the mister!</span>")
|
||||
return
|
||||
noz.loc = user
|
||||
else
|
||||
//Remove from their hands and put back "into" the tank
|
||||
remove_noz()
|
||||
return
|
||||
|
||||
/obj/item/watertank/proc/make_noz()
|
||||
return new /obj/item/weapon/reagent_containers/spray/chemsprayer/mister()
|
||||
|
||||
/obj/item/watertank/equipped(mob/user, slot)
|
||||
..()
|
||||
if(slot != slot_back)
|
||||
remove_noz()
|
||||
|
||||
/obj/item/watertank/proc/remove_noz()
|
||||
if(!noz)
|
||||
noz = make_noz()
|
||||
noz.tank = src
|
||||
noz.reagents = reagents
|
||||
noz.loc = src
|
||||
if(ismob(noz.loc))
|
||||
var/mob/M = noz.loc
|
||||
M.drop_from_inventory(noz)
|
||||
noz.loc = src
|
||||
return
|
||||
|
||||
/obj/item/watertank/Destroy()
|
||||
qdel(noz)
|
||||
noz = null
|
||||
return ..()
|
||||
|
||||
/obj/item/watertank/attackby(obj/item/W, mob/user, params)
|
||||
if(W == noz)
|
||||
remove_noz()
|
||||
return 1
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/spray/chemsprayer/mister
|
||||
name = "water mister"
|
||||
desc = "A mister nozzle attached to a water tank."
|
||||
icon = 'icons/obj/hydro_equipment.dmi'
|
||||
icon_state = "mister"
|
||||
item_state = "mister"
|
||||
contained_sprite = 1
|
||||
w_class = 3
|
||||
amount_per_transfer_from_this = 50
|
||||
volume = 500
|
||||
slot_flags = 0
|
||||
|
||||
var/obj/item/watertank/tank
|
||||
|
||||
/obj/item/weapon/reagent_containers/spray/chemsprayer/mister/dropped(mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>The mister snaps back onto the watertank.</span>")
|
||||
tank.on = 0
|
||||
forceMove(tank)
|
||||
|
||||
/obj/item/weapon/reagent_containers/spray/chemsprayer/mister/attack_self()
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/spray/chemsprayer/mister/Move()
|
||||
..()
|
||||
if(loc != tank.loc)
|
||||
forceMove(tank.loc)
|
||||
|
||||
/obj/item/weapon/reagent_containers/spray/chemsprayer/mister/afterattack(obj/target, mob/user, proximity)
|
||||
if(target.loc == loc) //Safety check so you don't fill your mister with mutagen or something and then blast yourself in the face with it
|
||||
return
|
||||
..()
|
||||
|
||||
//Janitor tank
|
||||
/obj/item/watertank/janitor
|
||||
name = "backpack water tank"
|
||||
desc = "A janitorial watertank backpack with nozzle to clean dirt and graffiti."
|
||||
icon_state = "waterpackjani"
|
||||
item_state = "waterpackjani"
|
||||
|
||||
/obj/item/watertank/janitor/Initialize()
|
||||
..()
|
||||
reagents.add_reagent("cleaner", 500)
|
||||
|
||||
/obj/item/weapon/reagent_containers/spray/chemsprayer/mister/janitor
|
||||
name = "janitor spray nozzle"
|
||||
desc = "A janitorial spray nozzle attached to a watertank, designed to clean up large messes."
|
||||
icon_state = "misterjani"
|
||||
item_state = "misterjani"
|
||||
amount_per_transfer_from_this = 5
|
||||
possible_transfer_amounts = list()
|
||||
|
||||
/obj/item/watertank/janitor/make_noz()
|
||||
return new /obj/item/weapon/reagent_containers/spray/chemsprayer/mister/janitor(src)
|
||||
|
||||
/obj/item/weapon/reagent_containers/spray/chemsprayer/mister/janitor/attack_self(var/mob/user)
|
||||
amount_per_transfer_from_this = (amount_per_transfer_from_this == 10 ? 5 : 10)
|
||||
to_chat(user, "<span class='notice'>You [amount_per_transfer_from_this == 10 ? "remove" : "fix"] the nozzle. You'll now use [amount_per_transfer_from_this] units per spray.</span>")
|
||||
@@ -62,11 +62,10 @@
|
||||
|
||||
/obj/structure/closet/jcloset/fill()
|
||||
new /obj/item/clothing/under/rank/janitor(src)
|
||||
new /obj/item/device/radio/headset/headset_service(src)
|
||||
new /obj/item/device/radio/headset/headset_eng(src)
|
||||
new /obj/item/weapon/cartridge/janitor(src)
|
||||
new /obj/item/clothing/gloves/black(src)
|
||||
new /obj/item/clothing/head/soft/purple(src)
|
||||
new /obj/item/clothing/head/beret/purple(src)
|
||||
new /obj/item/device/flashlight(src)
|
||||
new /obj/item/weapon/caution(src)
|
||||
new /obj/item/weapon/caution(src)
|
||||
@@ -81,6 +80,8 @@
|
||||
new /obj/item/weapon/grenade/chem_grenade/cleaner(src)
|
||||
new /obj/item/weapon/grenade/chem_grenade/cleaner(src)
|
||||
new /obj/item/weapon/reagent_containers/spray/cleaner(src)
|
||||
new /obj/item/weapon/reagent_containers/glass/rag(src)
|
||||
new /obj/item/weapon/soap/nanotrasen(src)
|
||||
|
||||
/*
|
||||
* Lawyer
|
||||
|
||||
@@ -302,130 +302,4 @@
|
||||
has_items = 1
|
||||
if(signs)
|
||||
add_overlay("cart_sign[signs]")
|
||||
has_items = 1
|
||||
|
||||
|
||||
//old style retardo-cart
|
||||
/obj/structure/bed/chair/janicart
|
||||
name = "janicart"
|
||||
icon = 'icons/obj/vehicles.dmi'
|
||||
icon_state = "pussywagon"
|
||||
anchored = 1
|
||||
density = 1
|
||||
flags = OPENCONTAINER
|
||||
//copypaste sorry
|
||||
var/amount_per_transfer_from_this = 5 //shit I dunno, adding this so syringes stop runtime erroring. --NeoFite
|
||||
var/obj/item/weapon/storage/bag/trash/mybag = null
|
||||
var/callme = "pimpin' ride" //how do people refer to it?
|
||||
|
||||
|
||||
/obj/structure/bed/chair/janicart/New()
|
||||
create_reagents(100)
|
||||
|
||||
|
||||
/obj/structure/bed/chair/janicart/examine(mob/user)
|
||||
if(!..(user, 1))
|
||||
return
|
||||
|
||||
user << "\icon[src] This [callme] contains [reagents.total_volume] unit\s of water!"
|
||||
if(mybag)
|
||||
user << "\A [mybag] is hanging on the [callme]."
|
||||
|
||||
|
||||
/obj/structure/bed/chair/janicart/attackby(obj/item/I, mob/user)
|
||||
if(istype(I, /obj/item/weapon/mop))
|
||||
if(reagents.total_volume > 1)
|
||||
reagents.trans_to_obj(I, 2)
|
||||
user << "<span class='notice'>You wet [I] in the [callme].</span>"
|
||||
playsound(loc, 'sound/effects/slosh.ogg', 25, 1)
|
||||
else
|
||||
user << "<span class='notice'>This [callme] is out of water!</span>"
|
||||
else if(istype(I, /obj/item/key))
|
||||
user << "Hold [I] in one of your hands while you drive this [callme]."
|
||||
else if(istype(I, /obj/item/weapon/storage/bag/trash))
|
||||
user << "<span class='notice'>You hook the trashbag onto the [callme].</span>"
|
||||
user.drop_item()
|
||||
I.loc = src
|
||||
mybag = I
|
||||
|
||||
|
||||
/obj/structure/bed/chair/janicart/attack_hand(mob/user)
|
||||
if(mybag)
|
||||
mybag.loc = get_turf(user)
|
||||
user.put_in_hands(mybag)
|
||||
mybag = null
|
||||
else
|
||||
..()
|
||||
|
||||
|
||||
/obj/structure/bed/chair/janicart/relaymove(mob/user, direction)
|
||||
if(user.stat || user.stunned || user.weakened || user.paralysis)
|
||||
unbuckle_mob()
|
||||
if(istype(user.l_hand, /obj/item/key) || istype(user.r_hand, /obj/item/key))
|
||||
step(src, direction)
|
||||
update_mob()
|
||||
else
|
||||
user << "<span class='notice'>You'll need the keys in one of your hands to drive this [callme].</span>"
|
||||
|
||||
|
||||
/obj/structure/bed/chair/janicart/Move()
|
||||
..()
|
||||
if(buckled_mob)
|
||||
if(buckled_mob.buckled == src)
|
||||
buckled_mob.loc = loc
|
||||
|
||||
|
||||
/obj/structure/bed/chair/janicart/post_buckle_mob(mob/living/M)
|
||||
update_mob()
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/structure/bed/chair/janicart/unbuckle_mob()
|
||||
var/mob/living/M = ..()
|
||||
if(M)
|
||||
M.pixel_x = 0
|
||||
M.pixel_y = 0
|
||||
return M
|
||||
|
||||
|
||||
/obj/structure/bed/chair/janicart/set_dir()
|
||||
..()
|
||||
if(buckled_mob)
|
||||
if(buckled_mob.loc != loc)
|
||||
buckled_mob.buckled = null //Temporary, so Move() succeeds.
|
||||
buckled_mob.buckled = src //Restoring
|
||||
|
||||
update_mob()
|
||||
|
||||
|
||||
/obj/structure/bed/chair/janicart/proc/update_mob()
|
||||
if(buckled_mob)
|
||||
buckled_mob.set_dir(dir)
|
||||
switch(dir)
|
||||
if(SOUTH)
|
||||
buckled_mob.pixel_x = 0
|
||||
buckled_mob.pixel_y = 7
|
||||
if(WEST)
|
||||
buckled_mob.pixel_x = 13
|
||||
buckled_mob.pixel_y = 7
|
||||
if(NORTH)
|
||||
buckled_mob.pixel_x = 0
|
||||
buckled_mob.pixel_y = 4
|
||||
if(EAST)
|
||||
buckled_mob.pixel_x = -13
|
||||
buckled_mob.pixel_y = 7
|
||||
|
||||
|
||||
/obj/structure/bed/chair/janicart/bullet_act(var/obj/item/projectile/Proj)
|
||||
if(buckled_mob)
|
||||
if(prob(85))
|
||||
return buckled_mob.bullet_act(Proj)
|
||||
visible_message("<span class='warning'>[Proj] ricochets off the [callme]!</span>")
|
||||
|
||||
|
||||
/obj/item/key
|
||||
name = "key"
|
||||
desc = "A keyring with a small steel key, and a pink fob reading \"Pussy Wagon\"."
|
||||
icon = 'icons/obj/vehicles.dmi'
|
||||
icon_state = "keys"
|
||||
w_class = 1
|
||||
has_items = 1
|
||||
@@ -145,6 +145,10 @@
|
||||
desc = "Next to the extremely long list of names and job titles, there is a drawing of a little child. The child appears to be retarded. Beneath the image, someone has scratched the word \"PACKETS\""
|
||||
icon_state = "kiddieplaque"
|
||||
|
||||
/obj/structure/sign/kiddieplaque/janitor
|
||||
desc = "A humble wooden plaque. In simple lettering begin the words: \"Primum non sordes\"."
|
||||
name = "\improper Janitorial Oath"
|
||||
|
||||
/obj/structure/sign/atmosplaque
|
||||
name = "\improper FEA atmospherics division plaque"
|
||||
desc = "This plaque commemorates the fall of the Atmos FEA division. For all the charred, dizzy, and brittle men who have died in its hands."
|
||||
|
||||
@@ -596,7 +596,7 @@
|
||||
add_overlay(I)
|
||||
turn_off() //so engine verbs are correctly set
|
||||
|
||||
/obj/vehicle/train/cargo/engine/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
/obj/vehicle/train/cargo/engine/mining/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/key/minecarts))
|
||||
if(!key)
|
||||
user.drop_item()
|
||||
|
||||
@@ -0,0 +1,212 @@
|
||||
/obj/vehicle/train/cargo/engine/pussywagon
|
||||
name = "janicart deluxe engine"
|
||||
desc = "The engine for the janicart deluxe trolley, the bread to your butter."
|
||||
icon = 'icons/obj/vehicles.dmi'
|
||||
icon_state = "janicart_off"
|
||||
move_delay = 3
|
||||
|
||||
mob_offset_y = 7
|
||||
load_offset_x = -13
|
||||
|
||||
var/cart_icon = "janicart"
|
||||
|
||||
/obj/item/weapon/key/janicart
|
||||
name = "key"
|
||||
desc = "A keyring with a small steel key, and a pink fob reading \"Pussy Wagon\"."
|
||||
icon = 'icons/obj/vehicles.dmi'
|
||||
icon_state = "keys"
|
||||
w_class = 1
|
||||
|
||||
/obj/vehicle/train/cargo/engine/pussywagon/Initialize()
|
||||
. = ..()
|
||||
cell = new /obj/item/weapon/cell/high(src)
|
||||
key = null
|
||||
update_icon()
|
||||
turn_off() //so engine verbs are correctly set
|
||||
|
||||
/obj/vehicle/train/cargo/engine/pussywagon/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/key/janicart))
|
||||
if(!key)
|
||||
user.drop_item()
|
||||
W.forceMove(src)
|
||||
key = W
|
||||
verbs += /obj/vehicle/train/cargo/engine/verb/remove_key
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/vehicle/train/cargo/engine/pussywagon/turn_on()
|
||||
if(!key)
|
||||
return
|
||||
else
|
||||
..()
|
||||
update_stats()
|
||||
|
||||
verbs += /obj/vehicle/train/cargo/engine/pussywagon/verb/toggle_mop
|
||||
verbs += /obj/vehicle/train/cargo/engine/pussywagon/verb/toggle_hoover
|
||||
|
||||
/obj/vehicle/train/cargo/engine/pussywagon/turn_off()
|
||||
..()
|
||||
|
||||
if(tow)
|
||||
if(istype(tow,/obj/vehicle/train/cargo/trolley/pussywagon))
|
||||
var/obj/vehicle/train/cargo/trolley/pussywagon/PW = tow
|
||||
if(PW.mopping)
|
||||
PW.mop_toggle()
|
||||
if(PW.hoover)
|
||||
PW.hoover_toggle()
|
||||
verbs -= /obj/vehicle/train/cargo/engine/pussywagon/verb/toggle_mop
|
||||
verbs -= /obj/vehicle/train/cargo/engine/pussywagon/verb/toggle_hoover
|
||||
|
||||
/obj/vehicle/train/cargo/engine/pussywagon/verb/toggle_mop()
|
||||
set name = "Toggle Mop-o-matic"
|
||||
set category = "Vehicle"
|
||||
set src in view(0)
|
||||
|
||||
if(usr.incapacitated())
|
||||
return
|
||||
|
||||
if(on && tow)
|
||||
if(istype(tow,/obj/vehicle/train/cargo/trolley/pussywagon))
|
||||
var/obj/vehicle/train/cargo/trolley/pussywagon/PW = tow
|
||||
if(!PW.bucket)
|
||||
usr << "<span class='warning'>You must insert a reagent container first!</span>"
|
||||
return
|
||||
PW.mop_toggle()
|
||||
|
||||
/obj/vehicle/train/cargo/engine/pussywagon/verb/toggle_hoover()
|
||||
set name = "Toggle Space Hoover"
|
||||
set category = "Vehicle"
|
||||
set src in view(0)
|
||||
|
||||
if(usr.incapacitated())
|
||||
return
|
||||
|
||||
if(on && tow)
|
||||
if(istype(tow,/obj/vehicle/train/cargo/trolley/pussywagon))
|
||||
var/obj/vehicle/train/cargo/trolley/pussywagon/PW = tow
|
||||
PW.hoover_toggle()
|
||||
|
||||
/obj/vehicle/train/cargo/engine/pussywagon/update_icon()
|
||||
cut_overlays()
|
||||
|
||||
if(on)
|
||||
add_overlay(image('icons/obj/vehicles.dmi', "[cart_icon]_on_overlay", MOB_LAYER + 1))
|
||||
icon_state = "[cart_icon]_on"
|
||||
else
|
||||
add_overlay(image('icons/obj/vehicles.dmi', "[cart_icon]_off_overlay", MOB_LAYER + 1))
|
||||
icon_state = "[cart_icon]_off"
|
||||
..()
|
||||
|
||||
/obj/vehicle/train/cargo/engine/pussywagon/Move(var/turf/destination)
|
||||
switch(dir)
|
||||
if(NORTH)
|
||||
mob_offset_y = 7
|
||||
load_offset_x = 0
|
||||
load.pixel_y = mob_offset_y
|
||||
load.pixel_x = load_offset_x
|
||||
if(SOUTH)
|
||||
mob_offset_y = 7
|
||||
load_offset_x = 0
|
||||
load.pixel_y = mob_offset_y
|
||||
load.pixel_x = load_offset_x
|
||||
if(EAST)
|
||||
mob_offset_y = 7
|
||||
load_offset_x = -13
|
||||
load.pixel_y = mob_offset_y
|
||||
load.pixel_x = load_offset_x
|
||||
if(WEST)
|
||||
mob_offset_y = 7
|
||||
load_offset_x = 13
|
||||
load.pixel_y = mob_offset_y
|
||||
load.pixel_x = load_offset_x
|
||||
..()
|
||||
|
||||
/obj/vehicle/train/cargo/trolley/pussywagon
|
||||
name = "janicart deluxe trolley"
|
||||
desc = "The trolley of the janicart deluxe, equipped with dual rotary mop and a NT-X1 Vacuum Cleaner."
|
||||
icon = 'icons/obj/vehicles.dmi'
|
||||
icon_state = "jantrolley"
|
||||
|
||||
var/obj/item/weapon/reagent_containers/bucket
|
||||
var/list/hoovered = list()
|
||||
var/vacuum_capacity = 125
|
||||
var/mopping = 0
|
||||
var/hoover = 0
|
||||
|
||||
|
||||
/obj/vehicle/train/cargo/trolley/pussywagon/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/reagent_containers) && open)
|
||||
if(!bucket)
|
||||
user.drop_item()
|
||||
bucket = W
|
||||
W.forceMove(src)
|
||||
user << "<span class='notice'>You replace \the [src]'s reagent reservoir.</span>"
|
||||
return
|
||||
|
||||
if(iswrench(W) && open)
|
||||
if(bucket)
|
||||
bucket.forceMove(user.loc)
|
||||
bucket = null
|
||||
user << "<span class='notice'>You remove \the [src]'s reagent reservoir.</span>"
|
||||
return
|
||||
|
||||
if(iscrowbar(W) && !open)
|
||||
if(bucket)
|
||||
for(var/obj/item/I in hoovered)
|
||||
I.forceMove(user.loc)
|
||||
hoovered -= I
|
||||
vacuum_capacity = 125
|
||||
user << "<span class='notice'>You empty \the [src]'s vacuum cleaner.</span>"
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/vehicle/train/cargo/trolley/pussywagon/Move(var/turf/destination)
|
||||
if(lead)
|
||||
var/turf/tile = loc
|
||||
if(mopping && bucket)
|
||||
if(isturf(tile))
|
||||
if(bucket.reagents.total_volume > 1)
|
||||
tile.clean(bucket)
|
||||
lead.cell.use(charge_use, load)
|
||||
else
|
||||
mop_toggle()
|
||||
if(hoover)
|
||||
var/current_len = hoovered.len
|
||||
for(var/obj/item/I in tile)
|
||||
if(I.w_class <= 2.0 && !I.anchored && (vacuum_capacity -= w_class >= 0))
|
||||
I.forceMove(src)
|
||||
hoovered += I
|
||||
vacuum_capacity -= I.w_class
|
||||
lead.cell.use(charge_use)
|
||||
if(!vacuum_capacity)
|
||||
hoover_toggle()
|
||||
if(hoovered.len > current_len)
|
||||
playsound(src, 'sound/machines/disposalflush.ogg', 100, 1)
|
||||
return ..()
|
||||
|
||||
/obj/vehicle/train/cargo/trolley/pussywagon/proc/mop_toggle()
|
||||
if(!mopping)
|
||||
mopping = 1
|
||||
src.visible_message("\The [src]'s mop-o-matic rumbles to life.", "You hear something rumble deeply.")
|
||||
playsound(src, 'sound/machines/hydraulic_long.ogg', 100, 1)
|
||||
else
|
||||
mopping = 0
|
||||
src.visible_message("\The [src]'s mop-o-matic putters before turning off.", "You hear something putter slowly.")
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/vehicle/train/cargo/trolley/pussywagon/proc/hoover_toggle()
|
||||
if(!hoover)
|
||||
hoover = 1
|
||||
src.visible_message("\The [src]'s space hoover rumbles to life.", "You hear something rumble deeply.")
|
||||
playsound(src, 'sound/machines/hydraulic_long.ogg', 100, 1)
|
||||
else
|
||||
hoover = 0
|
||||
src.visible_message("\The [src]'s space hoover putters before turning off.", "You hear something putter slowly.")
|
||||
update_icon()
|
||||
|
||||
/obj/vehicle/train/cargo/trolley/pussywagon/update_icon()
|
||||
cut_overlays()
|
||||
|
||||
if(mopping)
|
||||
add_overlay(image('icons/obj/vehicles.dmi', "[icon_state]_mop_overlay", MOB_LAYER + 1))
|
||||
@@ -0,0 +1,40 @@
|
||||
################################
|
||||
# Example Changelog File
|
||||
#
|
||||
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
|
||||
#
|
||||
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
|
||||
# When it is, any changes listed below will disappear.
|
||||
#
|
||||
# Valid Prefixes:
|
||||
# bugfix
|
||||
# wip (For works in progress)
|
||||
# tweak
|
||||
# soundadd
|
||||
# sounddel
|
||||
# rscadd (general adding of nice things)
|
||||
# rscdel (general deleting of nice things)
|
||||
# imageadd
|
||||
# imagedel
|
||||
# maptweak
|
||||
# spellcheck (typo fixes)
|
||||
# experiment
|
||||
# balance
|
||||
#################################
|
||||
|
||||
# Your name.
|
||||
author: LordFowl
|
||||
|
||||
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
|
||||
delete-after: True
|
||||
|
||||
# Any changes you've made. See valid prefix list above.
|
||||
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
|
||||
# SCREW THIS UP AND IT WON'T WORK.
|
||||
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
|
||||
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
|
||||
changes:
|
||||
- rscadd: "Added vending machine restockers, which can be used to restock vending machines. Can be ordered from cargo with a custodial ID."
|
||||
- rscadd: "Added the janicart deluxe, a multi-object vehicle that can be used to clean wide swathes of area with its turbomop and space hoover attachments."
|
||||
- rscadd: "Added backmounted chemsprayers."
|
||||
- tweak: "Janitors have been moved from civilian to engineering."
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 5.9 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 18 KiB |
+1138
-460
File diff suppressed because it is too large
Load Diff
@@ -15263,9 +15263,6 @@
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/landmark/start{
|
||||
name = "Janitor"
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/hallway/secondary/entry/aft)
|
||||
"Cj" = (
|
||||
|
||||
Reference in New Issue
Block a user