Adds Robobags (#6059)

* Adds Robobags

* Finishes robobags

* FixFix
This commit is contained in:
Mechoid
2019-04-17 21:39:36 -08:00
committed by Atermonera
parent 24b2df4b9b
commit 13db58a51c
9 changed files with 331 additions and 3 deletions
+3 -2
View File
@@ -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..."
+134
View File
@@ -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"
+82 -1
View File
@@ -357,4 +357,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
+36
View File
@@ -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

+1
View File
@@ -881,6 +881,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"