mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-29 08:08:49 +01:00
Merge remote-tracking branch 'upstream/master' into patch/vending-machines
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
|
||||
|
||||
/*
|
||||
* DATA CARDS - Used for the teleporter
|
||||
* DATA CARDS - Used for the IC data card reader
|
||||
*/
|
||||
/obj/item/card
|
||||
name = "card"
|
||||
@@ -24,30 +24,49 @@
|
||||
return BRUTELOSS
|
||||
|
||||
/obj/item/card/data
|
||||
name = "data disk"
|
||||
desc = "A disk of data."
|
||||
icon_state = "data"
|
||||
name = "data card"
|
||||
desc = "A plastic magstripe card for simple and speedy data storage and transfer. This one has a stripe running down the middle."
|
||||
icon_state = "data_1"
|
||||
obj_flags = UNIQUE_RENAME
|
||||
var/function = "storage"
|
||||
var/data = "null"
|
||||
var/special = null
|
||||
item_state = "card-id"
|
||||
lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi'
|
||||
var/detail_color = COLOR_ASSEMBLY_ORANGE
|
||||
|
||||
/obj/item/card/data/verb/label(t as text)
|
||||
set name = "Label Disk"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
/obj/item/card/data/Initialize()
|
||||
.=..()
|
||||
update_icon()
|
||||
|
||||
if(usr.stat || !usr.canmove || usr.restrained())
|
||||
/obj/item/card/data/update_icon()
|
||||
cut_overlays()
|
||||
if(detail_color == COLOR_FLOORTILE_GRAY)
|
||||
return
|
||||
var/mutable_appearance/detail_overlay = mutable_appearance('icons/obj/card.dmi', "[icon_state]-color")
|
||||
detail_overlay.color = detail_color
|
||||
add_overlay(detail_overlay)
|
||||
|
||||
if (t)
|
||||
src.name = "data disk- '[t]'"
|
||||
else
|
||||
src.name = "data disk"
|
||||
src.add_fingerprint(usr)
|
||||
return
|
||||
/obj/item/card/data/attackby(obj/item/I, mob/living/user)
|
||||
if(istype(I, /obj/item/integrated_electronics/detailer))
|
||||
var/obj/item/integrated_electronics/detailer/D = I
|
||||
detail_color = D.detail_color
|
||||
update_icon()
|
||||
return ..()
|
||||
|
||||
/obj/item/proc/GetCard()
|
||||
|
||||
/obj/item/card/data/GetCard()
|
||||
return src
|
||||
|
||||
/obj/item/card/data/full_color
|
||||
desc = "A plastic magstripe card for simple and speedy data storage and transfer. This one has the entire card colored."
|
||||
icon_state = "data_2"
|
||||
|
||||
/obj/item/card/data/disk
|
||||
desc = "A plastic magstripe card for simple and speedy data storage and transfer. This one inexplicibly looks like a floppy disk."
|
||||
icon_state = "data_3"
|
||||
|
||||
/*
|
||||
* ID CARDS
|
||||
|
||||
@@ -321,6 +321,12 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
list_reagents = list("nicotine" = 15, "mushroomhallucinogen" = 35)
|
||||
starts_lit = TRUE
|
||||
|
||||
/obj/item/clothing/mask/cigarette/rollie/cannabis
|
||||
list_reagents = list("space_drugs" = 15, "lipolicide" = 35)
|
||||
|
||||
/obj/item/clothing/mask/cigarette/rollie/mindbreaker
|
||||
list_reagents = list("mindbreaker" = 35, "lipolicide" = 15)
|
||||
|
||||
/obj/item/cigbutt/roach
|
||||
name = "roach"
|
||||
desc = "A manky old roach, or for non-stoners, a used rollup."
|
||||
@@ -385,7 +391,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
/////////////////
|
||||
/obj/item/clothing/mask/cigarette/pipe
|
||||
name = "smoking pipe"
|
||||
desc = "A pipe, for smoking. Probably made of meershaum or something."
|
||||
desc = "A pipe, for smoking. Probably made of meerschaum or something."
|
||||
icon_state = "pipeoff"
|
||||
item_state = "pipeoff"
|
||||
icon_on = "pipeon" //Note - these are in masks.dmi
|
||||
|
||||
@@ -92,8 +92,12 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
..()
|
||||
if(!id && !inserted_item)
|
||||
return
|
||||
else
|
||||
to_chat(user, "<span class='notice'>Alt-click to remove contents.</span>")
|
||||
|
||||
if(id)
|
||||
to_chat(user, "<span class='notice'>Alt-click to remove the id.</span>")
|
||||
|
||||
if(inserted_item && (!isturf(loc)))
|
||||
to_chat(user, "<span class='notice'>Ctrl-click to remove [inserted_item].</span>")
|
||||
|
||||
/obj/item/pda/Initialize()
|
||||
. = ..()
|
||||
@@ -171,12 +175,12 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
return attack_self(M)
|
||||
return ..()
|
||||
|
||||
/obj/item/pda/attack_self(mob/user)
|
||||
/obj/item/pda/interact(mob/user)
|
||||
if(!user.IsAdvancedToolUser())
|
||||
to_chat(user, "<span class='warning'>You don't have the dexterity to do this!</span>")
|
||||
return
|
||||
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
var/datum/asset/spritesheet/assets = get_asset_datum(/datum/asset/spritesheet/simple/pda)
|
||||
assets.send(user)
|
||||
@@ -712,6 +716,15 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
else
|
||||
remove_pen()
|
||||
|
||||
/obj/item/pda/CtrlClick()
|
||||
..()
|
||||
|
||||
if(issilicon(usr))
|
||||
return
|
||||
|
||||
if(usr.canUseTopic(src) && !isturf(loc))
|
||||
remove_pen()
|
||||
|
||||
/obj/item/pda/verb/verb_remove_id()
|
||||
set category = "Object"
|
||||
set name = "Eject ID"
|
||||
|
||||
@@ -100,12 +100,11 @@
|
||||
AddComponent(/datum/component/empprotection, EMP_PROTECT_WIRES)
|
||||
|
||||
/obj/item/radio/interact(mob/user)
|
||||
if (..())
|
||||
return
|
||||
if(unscrewed && !isAI(user))
|
||||
wires.interact(user)
|
||||
add_fingerprint(user)
|
||||
else
|
||||
ui_interact(user)
|
||||
..()
|
||||
|
||||
/obj/item/radio/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \
|
||||
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.inventory_state)
|
||||
|
||||
@@ -18,11 +18,13 @@
|
||||
container_type = AMOUNT_VISIBLE
|
||||
var/max_water = 50
|
||||
var/last_use = 1
|
||||
var/chem = "water"
|
||||
var/safety = TRUE
|
||||
var/refilling = FALSE
|
||||
var/tanktype = /obj/structure/reagent_dispensers/watertank
|
||||
var/sprite_name = "fire_extinguisher"
|
||||
var/power = 5 //Maximum distance launched water will travel
|
||||
var/precision = 0 //By default, turfs picked from a spray are random, set to 1 to make it always have at least one water effect per row
|
||||
var/precision = FALSE //By default, turfs picked from a spray are random, set to 1 to make it always have at least one water effect per row
|
||||
var/cooling_power = 2 //Sets the cooling_temperature of the water reagent datum inside of the extinguisher when it is refilled
|
||||
|
||||
/obj/item/extinguisher/mini
|
||||
@@ -43,7 +45,19 @@
|
||||
/obj/item/extinguisher/New()
|
||||
..()
|
||||
create_reagents(max_water)
|
||||
reagents.add_reagent("water", max_water)
|
||||
reagents.add_reagent(chem, max_water)
|
||||
|
||||
|
||||
/obj/item/extinguisher/advanced
|
||||
name = "advanced fire extinguisher"
|
||||
desc = "Used to stop thermonuclear fires from spreading inside your engine."
|
||||
icon_state = "foam_extinguisher0"
|
||||
//item_state = "foam_extinguisher" needs sprite
|
||||
dog_fashion = null
|
||||
chem = "firefighting_foam"
|
||||
tanktype = /obj/structure/reagent_dispensers/foamtank
|
||||
sprite_name = "foam_extinguisher"
|
||||
precision = TRUE
|
||||
|
||||
/obj/item/extinguisher/suicide_act(mob/living/carbon/user)
|
||||
if (!safety && (reagents.total_volume >= 1))
|
||||
@@ -84,14 +98,14 @@
|
||||
to_chat(user, "<span class='notice'>Alt-click to empty it.</span>")
|
||||
|
||||
/obj/item/extinguisher/proc/AttemptRefill(atom/target, mob/user)
|
||||
if(istype(target, /obj/structure/reagent_dispensers/watertank) && target.Adjacent(user))
|
||||
if(istype(target, tanktype) && target.Adjacent(user))
|
||||
var/safety_save = safety
|
||||
safety = TRUE
|
||||
if(reagents.total_volume == reagents.maximum_volume)
|
||||
to_chat(user, "<span class='warning'>\The [src] is already full!</span>")
|
||||
safety = safety_save
|
||||
return 1
|
||||
var/obj/structure/reagent_dispensers/watertank/W = target
|
||||
var/obj/structure/reagent_dispensers/W = target //will it work?
|
||||
var/transferred = W.reagents.trans_to(src, max_water)
|
||||
if(transferred > 0)
|
||||
to_chat(user, "<span class='notice'>\The [src] has been refilled by [transferred] units.</span>")
|
||||
|
||||
@@ -181,8 +181,9 @@
|
||||
to_chat(user, "<span class='warning'>Sticking a dead brain into the frame would sort of defeat the purpose!</span>")
|
||||
return
|
||||
|
||||
if(jobban_isbanned(BM, "Cyborg"))
|
||||
to_chat(user, "<span class='warning'>This [M.name] does not seem to fit!</span>")
|
||||
if(jobban_isbanned(BM, "Cyborg") || QDELETED(src) || QDELETED(BM) || QDELETED(user) || QDELETED(M) || !Adjacent(user))
|
||||
if(!QDELETED(M))
|
||||
to_chat(user, "<span class='warning'>This [M.name] does not seem to fit!</span>")
|
||||
return
|
||||
|
||||
if(!user.temporarilyRemoveItemFromInventory(W))
|
||||
|
||||
@@ -644,7 +644,7 @@
|
||||
user.visible_message("<span class='notice'>[user] hugs \the [src].</span>","<span class='notice'>You hug \the [src].</span>")
|
||||
|
||||
/////clown box & honkbot assembly
|
||||
obj/item/storage/box/clown
|
||||
/obj/item/storage/box/clown
|
||||
name = "clown box"
|
||||
desc = "A colorful cardboard box for the clown"
|
||||
illustration = "clown"
|
||||
|
||||
@@ -253,6 +253,18 @@
|
||||
icon_state = "slime"
|
||||
spawn_type = /obj/item/clothing/mask/cigarette/xeno
|
||||
|
||||
/obj/item/storage/fancy/cigarettes/cigpack_cannabis
|
||||
name = "\improper Freak Brothers' Special packet"
|
||||
desc = "A label on the packaging reads, \"Endorsed by Phineas, Freddy and Franklin.\""
|
||||
icon_state = "midori"
|
||||
spawn_type = /obj/item/clothing/mask/cigarette/rollie/cannabis
|
||||
|
||||
/obj/item/storage/fancy/cigarettes/cigpack_mindbreaker
|
||||
name = "\improper Leary's Delight packet"
|
||||
desc = "Banned in over 36 galaxies."
|
||||
icon_state = "shadyjim"
|
||||
spawn_type = /obj/item/clothing/mask/cigarette/rollie/mindbreaker
|
||||
|
||||
/obj/item/storage/fancy/rollingpapers
|
||||
name = "rolling paper pack"
|
||||
desc = "A pack of Nanotrasen brand rolling papers."
|
||||
|
||||
@@ -184,8 +184,9 @@
|
||||
to_chat(user, "<span class='warning'>Sticking an inactive [M.name] into the frame would sort of defeat the purpose.</span>")
|
||||
return
|
||||
|
||||
if(!CONFIG_GET(flag/allow_ai) || jobban_isbanned(M.brainmob, "AI"))
|
||||
to_chat(user, "<span class='warning'>This [M.name] does not seem to fit!</span>")
|
||||
if(!CONFIG_GET(flag/allow_ai) || (jobban_isbanned(M.brainmob, "AI") && !QDELETED(src) && !QDELETED(user) && !QDELETED(M) && !QDELETED(user) && Adjacent(user)))
|
||||
if(!QDELETED(M))
|
||||
to_chat(user, "<span class='warning'>This [M.name] does not seem to fit!</span>")
|
||||
return
|
||||
|
||||
if(!M.brainmob.mind)
|
||||
|
||||
@@ -148,14 +148,17 @@
|
||||
resistance_flags = FLAMMABLE
|
||||
max_integrity = 70
|
||||
buildstackamount = 2
|
||||
var/mutable_appearance/armrest
|
||||
item_chair = null
|
||||
var/mutable_appearance/armrest
|
||||
|
||||
/obj/structure/chair/comfy/Initialize()
|
||||
armrest = mutable_appearance('icons/obj/chairs.dmi', "comfychair_armrest")
|
||||
armrest = GetArmrest()
|
||||
armrest.layer = ABOVE_MOB_LAYER
|
||||
return ..()
|
||||
|
||||
/obj/structure/chair/comfy/proc/GetArmrest()
|
||||
return mutable_appearance('icons/obj/chairs.dmi', "comfychair_armrest")
|
||||
|
||||
/obj/structure/chair/comfy/Destroy()
|
||||
QDEL_NULL(armrest)
|
||||
return ..()
|
||||
@@ -189,6 +192,14 @@
|
||||
/obj/structure/chair/comfy/lime
|
||||
color = rgb(255,251,0)
|
||||
|
||||
/obj/structure/chair/comfy/shuttle
|
||||
name = "shuttle seat"
|
||||
desc = "A comfortable, secure seat. It has a more sturdy looking buckling system, for smoother flights."
|
||||
icon_state = "shuttle_chair"
|
||||
|
||||
/obj/structure/chair/comfy/shuttle/GetArmrest()
|
||||
return mutable_appearance('icons/obj/chairs.dmi', "shuttle_chair_armrest")
|
||||
|
||||
/obj/structure/chair/office
|
||||
anchored = FALSE
|
||||
buildstackamount = 5
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
new /obj/item/pipe_dispenser(src)
|
||||
new /obj/item/inducer(src)
|
||||
new /obj/item/circuitboard/machine/techfab/department/engineering(src)
|
||||
new /obj/item/extinguisher/advanced(src)
|
||||
|
||||
/obj/structure/closet/secure_closet/engineering_electrical
|
||||
name = "electrical supplies locker"
|
||||
@@ -94,3 +95,4 @@
|
||||
new /obj/item/clothing/suit/fire/atmos(src)
|
||||
new /obj/item/clothing/head/hardhat/atmos(src)
|
||||
new /obj/item/clothing/glasses/meson/engine/tray(src)
|
||||
new /obj/item/extinguisher/advanced(src)
|
||||
|
||||
@@ -293,7 +293,10 @@
|
||||
windoor.setDir(dir)
|
||||
windoor.density = FALSE
|
||||
|
||||
windoor.req_access = electronics.accesses
|
||||
if(electronics.one_access)
|
||||
windoor.req_one_access = electronics.accesses
|
||||
else
|
||||
windoor.req_access = electronics.accesses
|
||||
windoor.electronics = electronics
|
||||
electronics.loc = windoor
|
||||
if(created_name)
|
||||
|
||||
Reference in New Issue
Block a user