mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-30 15:38:02 +01:00
Merge pull request #5086 from VOREStation/upstream-merge-6059
[MIRROR] Adds Robobags
This commit is contained in:
@@ -141,11 +141,12 @@
|
||||
store_items = 0
|
||||
var/used = 0
|
||||
var/obj/item/weapon/tank/tank = null
|
||||
var/tank_type = /obj/item/weapon/tank/stasis/oxygen
|
||||
var/stasis_level = 3 //Every 'this' life ticks are applied to the mob (when life_ticks%stasis_level == 1)
|
||||
var/obj/item/weapon/reagent_containers/syringe/syringe
|
||||
|
||||
/obj/structure/closet/body_bag/cryobag/Initialize()
|
||||
tank = new /obj/item/weapon/tank/stasis/oxygen(null) //It's in nullspace to prevent ejection when the bag is opened.
|
||||
tank = new tank_type(null) //It's in nullspace to prevent ejection when the bag is opened.
|
||||
..()
|
||||
|
||||
/obj/structure/closet/body_bag/cryobag/Destroy()
|
||||
@@ -157,7 +158,7 @@
|
||||
. = ..()
|
||||
if(used)
|
||||
var/obj/item/O = new/obj/item(src.loc)
|
||||
O.name = "used stasis bag"
|
||||
O.name = "used [name]"
|
||||
O.icon = src.icon
|
||||
O.icon_state = "bodybag_used"
|
||||
O.desc = "Pretty useless now..."
|
||||
|
||||
@@ -0,0 +1,134 @@
|
||||
|
||||
/obj/item/bodybag/cryobag/robobag
|
||||
name = "synthmorph bag"
|
||||
desc = "A reusable polymer bag designed to slow down synthetic functions such as data corruption and coolant flow, \
|
||||
especially useful if short on time or in a hostile enviroment."
|
||||
icon = 'icons/obj/robobag.dmi'
|
||||
icon_state = "bodybag_folded"
|
||||
item_state = "bodybag_cryo_folded"
|
||||
origin_tech = list(TECH_ENGINEERING = 3)
|
||||
|
||||
/obj/item/bodybag/cryobag/robobag/attack_self(mob/user)
|
||||
var/obj/structure/closet/body_bag/cryobag/robobag/R = new /obj/structure/closet/body_bag/cryobag/robobag(user.loc)
|
||||
R.add_fingerprint(user)
|
||||
if(syringe)
|
||||
R.syringe = syringe
|
||||
syringe = null
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/closet/body_bag/cryobag/robobag
|
||||
name = "synthmorph bag"
|
||||
desc = "A reusable polymer bag designed to slow down synthetic functions such as data corruption and coolant flow, \
|
||||
especially useful if short on time or in a hostile enviroment."
|
||||
icon = 'icons/obj/robobag.dmi'
|
||||
item_path = /obj/item/bodybag/cryobag/robobag
|
||||
tank_type = /obj/item/weapon/tank/stasis/nitro_cryo
|
||||
stasis_level = 2 // Lower than the normal cryobag, because it's not made for meat that dies. It's made for robots and is freezing.
|
||||
var/obj/item/clothing/accessory/badge/corptag // The tag on the bag.
|
||||
|
||||
/obj/structure/closet/body_bag/cryobag/robobag/examine(mob/user)
|
||||
..()
|
||||
if(Adjacent(user) && corptag)
|
||||
to_chat(user, "<span class='notice'>\The [src] has a [corptag] attached to it.</span>")
|
||||
|
||||
/obj/structure/closet/body_bag/cryobag/robobag/update_icon()
|
||||
overlays.Cut()
|
||||
..()
|
||||
if(corptag)
|
||||
var/corptag_icon_state = "tag_blank"
|
||||
if(istype(corptag,/obj/item/clothing/accessory/badge/holo/detective) || istype(corptag,/obj/item/clothing/accessory/badge/holo/detective) || istype(corptag, /obj/item/clothing/accessory/badge/holo/hos) || istype(corptag, /obj/item/clothing/accessory/badge/old) || istype(corptag, /obj/item/clothing/accessory/badge/sheriff))
|
||||
corptag_icon_state = "tag_badge_gold"
|
||||
else if(istype(corptag, /obj/item/clothing/accessory/badge/holo/warden))
|
||||
corptag_icon_state = "tag_badge_silver"
|
||||
else if(istype(corptag, /obj/item/clothing/accessory/badge/holo))
|
||||
corptag_icon_state = "tag_badge_blue"
|
||||
else if(istype(corptag, /obj/item/clothing/accessory/badge/corporate_tag))
|
||||
corptag_icon_state = corptag.icon_state
|
||||
|
||||
var/image/I = image(icon, corptag_icon_state)
|
||||
overlays += I
|
||||
|
||||
/obj/structure/closet/body_bag/cryobag/robobag/AltClick(mob/user)
|
||||
if(!Adjacent(user))
|
||||
..()
|
||||
if(corptag)
|
||||
corptag.forceMove(get_turf(user))
|
||||
to_chat(user, "<span class='notice'>You remove \the [corptag] from \the [src].</span>")
|
||||
corptag = null
|
||||
update_icon()
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/structure/closet/body_bag/cryobag/robobag/Destroy()
|
||||
if(corptag && get_turf(src))
|
||||
var/turf/T = get_turf(src)
|
||||
corptag.forceMove(T)
|
||||
corptag = null
|
||||
else
|
||||
QDEL_NULL(corptag)
|
||||
return ..()
|
||||
|
||||
/obj/structure/closet/body_bag/cryobag/robobag/Entered(atom/movable/AM)
|
||||
..()
|
||||
if(ishuman(AM))
|
||||
var/mob/living/carbon/human/H = AM
|
||||
if(H.isSynthetic())
|
||||
if(H.getToxLoss() == 0) // We don't exactly care about the bag being 'used' when containing a synth, unless it's got work.
|
||||
used = FALSE
|
||||
else
|
||||
H.add_modifier(/datum/modifier/fbp_debug/robobag)
|
||||
|
||||
/obj/structure/closet/body_bag/cryobag/robobag/attackby(obj/item/W, mob/user)
|
||||
if(opened)
|
||||
..()
|
||||
else //Allows the bag to respond to a cyborg analyzer and tag.
|
||||
if(istype(W,/obj/item/device/robotanalyzer))
|
||||
var/obj/item/device/robotanalyzer/analyzer = W
|
||||
for(var/mob/living/L in contents)
|
||||
analyzer.attack(L,user)
|
||||
|
||||
else if(istype(W, /obj/item/clothing/accessory/badge))
|
||||
if(corptag)
|
||||
var/old_tag = corptag
|
||||
corptag.forceMove(get_turf(src))
|
||||
corptag = W
|
||||
user.unEquip(corptag)
|
||||
corptag.loc = null
|
||||
to_chat(user, "<span class='notice'>You swap \the [old_tag] for \the [corptag].</span>")
|
||||
else
|
||||
corptag = W
|
||||
user.unEquip(corptag)
|
||||
corptag.loc = null
|
||||
to_chat(user, "<span class='notice'>You attach \the [corptag] to \the [src].</span>")
|
||||
update_icon()
|
||||
|
||||
else
|
||||
..()
|
||||
|
||||
/datum/modifier/fbp_debug
|
||||
name = "defragmenting"
|
||||
desc = "Your software is being debugged."
|
||||
mob_overlay_state = "signal_blue"
|
||||
|
||||
on_created_text = "<span class='notice'>You feel something pour over your senses.</span>"
|
||||
on_expired_text = "<span class='notice'>Your mind is clear once more.</span>"
|
||||
stacks = MODIFIER_STACK_FORBID
|
||||
|
||||
/datum/modifier/fbp_debug/tick()
|
||||
if(holder.getToxLoss())
|
||||
holder.adjustToxLoss(rand(-1,-5))
|
||||
|
||||
/datum/modifier/fbp_debug/can_apply(mob/living/L)
|
||||
if(!L.isSynthetic())
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/modifier/fbp_debug/check_if_valid()
|
||||
..()
|
||||
if(!holder.getToxLoss())
|
||||
src.expire()
|
||||
|
||||
/datum/modifier/fbp_debug/robobag/check_if_valid()
|
||||
..()
|
||||
if(!istype(holder.loc, /obj/structure/closet/body_bag/cryobag/robobag))
|
||||
src.expire()
|
||||
@@ -218,3 +218,15 @@
|
||||
if(..(user, 0) && air_contents.gas["nitrogen"] < 10)
|
||||
to_chat(user, text("<span class='danger'>The meter on \the [src] indicates you are almost out of nitrogen!</span>"))
|
||||
//playsound(user, 'sound/effects/alert.ogg', 50, 1)
|
||||
|
||||
/obj/item/weapon/tank/stasis/nitro_cryo // Synthmorph bags need to have initial pressure within safe bounds for human atmospheric pressure, but low temperature to stop unwanted degredation.
|
||||
name = "stasis cryogenic nitrogen tank"
|
||||
desc = "Cryogenic Nitrogen tank included in most synthmorph bag designs."
|
||||
icon_state = "emergency_double_nitro"
|
||||
gauge_icon = "indicator_emergency_double"
|
||||
volume = 10
|
||||
|
||||
/obj/item/weapon/tank/stasis/nitro_cryo/Initialize()
|
||||
..()
|
||||
src.air_contents.adjust_gas_temp("nitrogen", (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*TN60C), TN60C)
|
||||
return
|
||||
|
||||
@@ -148,3 +148,66 @@
|
||||
new /obj/item/clothing/accessory/badge/holo/cord(src)
|
||||
..()
|
||||
return
|
||||
|
||||
// Synthmorph bag / Corporation badges. Primarily used on the robobag, but can be worn. Default is NT.
|
||||
|
||||
/obj/item/clothing/accessory/badge/corporate_tag
|
||||
name = "NanoTrasen Badge"
|
||||
desc = "A plain metallic plate that might denote the wearer as a member of NanoTrasen."
|
||||
icon_state = "tag_nt"
|
||||
item_state = "badge"
|
||||
badge_string = "NanoTrasen"
|
||||
|
||||
/obj/item/clothing/accessory/badge/corporate_tag/morpheus
|
||||
name = "Morpheus Badge"
|
||||
desc = "A plain metallic plate that might denote the wearer as a member of Morpheus Cyberkinetics."
|
||||
icon_state = "tag_blank"
|
||||
badge_string = "Morpheus"
|
||||
|
||||
/obj/item/clothing/accessory/badge/corporate_tag/wardtaka
|
||||
name = "Ward-Takahashi Badge"
|
||||
desc = "A plain metallic plate that might denote the wearer as a member of Ward-Takahashi."
|
||||
icon_state = "tag_ward"
|
||||
badge_string = "Ward-Takahashi"
|
||||
|
||||
/obj/item/clothing/accessory/badge/corporate_tag/zenghu
|
||||
name = "Zeng-Hu Badge"
|
||||
desc = "A plain metallic plate that might denote the wearer as a member of Zeng-Hu."
|
||||
icon_state = "tag_zeng"
|
||||
badge_string = "Zeng-Hu"
|
||||
|
||||
/obj/item/clothing/accessory/badge/corporate_tag/gilthari
|
||||
name = "Gilthari Badge"
|
||||
desc = "An opulent metallic plate that might denote the wearer as a member of Gilthari."
|
||||
icon_state = "tag_gil"
|
||||
badge_string = "Gilthari"
|
||||
|
||||
/obj/item/clothing/accessory/badge/corporate_tag/veymed
|
||||
name = "Vey-Medical Badge"
|
||||
desc = "A plain metallic plate that might denote the wearer as a member of Vey-Medical."
|
||||
icon_state = "tag_vey"
|
||||
badge_string = "Vey-Medical"
|
||||
|
||||
/obj/item/clothing/accessory/badge/corporate_tag/hephaestus
|
||||
name = "Hephaestus Badge"
|
||||
desc = "A rugged metallic plate that might denote the wearer as a member of Hephaestus."
|
||||
icon_state = "tag_heph"
|
||||
badge_string = "Hephaestus"
|
||||
|
||||
/obj/item/clothing/accessory/badge/corporate_tag/grayson
|
||||
name = "Grayson Badge"
|
||||
desc = "A rugged metallic plate that might denote the wearer as a member of Grayson."
|
||||
icon_state = "tag_grayson"
|
||||
badge_string = "Grayson"
|
||||
|
||||
/obj/item/clothing/accessory/badge/corporate_tag/xion
|
||||
name = "Xion Badge"
|
||||
desc = "A rugged metallic plate that might denote the wearer as a member of Xion."
|
||||
icon_state = "tag_xion"
|
||||
badge_string = "Xion"
|
||||
|
||||
/obj/item/clothing/accessory/badge/corporate_tag/bishop
|
||||
name = "Bishop Badge"
|
||||
desc = "A sleek metallic plate that might denote the wearer as a member of Bishop."
|
||||
icon_state = "tag_bishop"
|
||||
badge_string = "Bishop"
|
||||
|
||||
@@ -368,4 +368,85 @@
|
||||
id = "borg_language_module"
|
||||
req_tech = list(TECH_DATA = 6, TECH_MATERIAL = 6)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 25000, "glass" = 3000, "gold" = 350)
|
||||
build_path = /obj/item/borg/upgrade/language
|
||||
build_path = /obj/item/borg/upgrade/language
|
||||
|
||||
// Synthmorph Bags.
|
||||
|
||||
/datum/design/item/prosfab/synthmorphbag
|
||||
name = "Synthmorph Storage Bag"
|
||||
desc = "Used to store or slowly defragment an FBP."
|
||||
id = "misc_synth_bag"
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 250, "glass" = 250, "plastic" = 2000)
|
||||
build_path = /obj/item/bodybag/cryobag/robobag
|
||||
|
||||
/datum/design/item/prosfab/badge_nt
|
||||
name = "NanoTrasen Tag"
|
||||
desc = "Used to identify an empty NanoTrasen FBP."
|
||||
id = "misc_synth_bag_tag_nt"
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 500, "plastic" = 1000)
|
||||
build_path = /obj/item/clothing/accessory/badge/corporate_tag
|
||||
|
||||
/datum/design/item/prosfab/badge_morph
|
||||
name = "Morpheus Tag"
|
||||
desc = "Used to identify an empty Morpheus FBP."
|
||||
id = "misc_synth_bag_tag_morph"
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 500, "plastic" = 1000)
|
||||
build_path = /obj/item/clothing/accessory/badge/corporate_tag/morpheus
|
||||
|
||||
/datum/design/item/prosfab/badge_wardtaka
|
||||
name = "Ward-Takahashi Tag"
|
||||
desc = "Used to identify an empty Ward-Takahashi FBP."
|
||||
id = "misc_synth_bag_tag_wardtaka"
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 500, "plastic" = 1000)
|
||||
build_path = /obj/item/clothing/accessory/badge/corporate_tag/wardtaka
|
||||
|
||||
/datum/design/item/prosfab/badge_zenghu
|
||||
name = "Zeng-Hu Tag"
|
||||
desc = "Used to identify an empty Zeng-Hu FBP."
|
||||
id = "misc_synth_bag_tag_zenghu"
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 500, "plastic" = 1000)
|
||||
build_path = /obj/item/clothing/accessory/badge/corporate_tag/zenghu
|
||||
|
||||
/datum/design/item/prosfab/badge_gilthari
|
||||
name = "Gilthari Tag"
|
||||
desc = "Used to identify an empty Gilthari FBP."
|
||||
id = "misc_synth_bag_tag_gilthari"
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 500, "gold" = 1000)
|
||||
build_path = /obj/item/clothing/accessory/badge/corporate_tag/gilthari
|
||||
req_tech = list(TECH_MATERIAL = 4, TECH_ILLEGAL = 2, TECH_PHORON = 2)
|
||||
|
||||
/datum/design/item/prosfab/badge_veymed
|
||||
name = "Vey-Medical Tag"
|
||||
desc = "Used to identify an empty Vey-Medical FBP."
|
||||
id = "misc_synth_bag_tag_veymed"
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 500, "plastic" = 1000)
|
||||
build_path = /obj/item/clothing/accessory/badge/corporate_tag/veymed
|
||||
req_tech = list(TECH_MATERIAL = 3, TECH_ILLEGAL = 1, TECH_BIO = 4)
|
||||
|
||||
/datum/design/item/prosfab/badge_hephaestus
|
||||
name = "Hephaestus Tag"
|
||||
desc = "Used to identify an empty Hephaestus FBP."
|
||||
id = "misc_synth_bag_tag_heph"
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 500, "plastic" = 1000)
|
||||
build_path = /obj/item/clothing/accessory/badge/corporate_tag/hephaestus
|
||||
|
||||
/datum/design/item/prosfab/badge_grayson
|
||||
name = "Grayson Tag"
|
||||
desc = "Used to identify an empty Grayson FBP."
|
||||
id = "misc_synth_bag_tag_grayson"
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 500, "plastic" = 1000)
|
||||
build_path = /obj/item/clothing/accessory/badge/corporate_tag/grayson
|
||||
|
||||
/datum/design/item/prosfab/badge_xion
|
||||
name = "Xion Tag"
|
||||
desc = "Used to identify an empty Xion FBP."
|
||||
id = "misc_synth_bag_tag_xion"
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 500, "plastic" = 1000)
|
||||
build_path = /obj/item/clothing/accessory/badge/corporate_tag/xion
|
||||
|
||||
/datum/design/item/prosfab/badge_bishop
|
||||
name = "Bishop Tag"
|
||||
desc = "Used to identify an empty Bishop FBP."
|
||||
id = "misc_synth_bag_tag_bishop"
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 2000, "plastic" = 500)
|
||||
build_path = /obj/item/clothing/accessory/badge/corporate_tag/bishop
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
################################
|
||||
# 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
|
||||
#################################
|
||||
|
||||
# Your name.
|
||||
author: Mechoid
|
||||
|
||||
# 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: "Adds Robobags and Corp-Tags to Robotics."
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 41 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.6 KiB |
@@ -971,6 +971,7 @@
|
||||
#include "code\game\objects\items\latexballoon.dm"
|
||||
#include "code\game\objects\items\paintkit.dm"
|
||||
#include "code\game\objects\items\poi_items.dm"
|
||||
#include "code\game\objects\items\robobag.dm"
|
||||
#include "code\game\objects\items\shooting_range.dm"
|
||||
#include "code\game\objects\items\toys.dm"
|
||||
#include "code\game\objects\items\trash.dm"
|
||||
|
||||
Reference in New Issue
Block a user