Port Bay's survival boxes

Includes some tweaks to items that usually come in the boxes to make them more similar to the Bay implementation.
This commit is contained in:
Arokha Sieyes
2018-02-15 05:04:40 -06:00
parent 76fa2f82bf
commit f4d0ec3fb8
16 changed files with 94 additions and 66 deletions

View File

@@ -83,15 +83,15 @@
var/datum/language/species_language = all_languages[default_language]
return species_language.get_random_name(gender)
/datum/species/vox/equip_survival_gear(var/mob/living/carbon/human/H)
/datum/species/vox/equip_survival_gear(var/mob/living/carbon/human/H, var/extendedtank = 0,var/comprehensive = 0)
. = ..()
H.equip_to_slot_or_del(new /obj/item/clothing/mask/breath(H), slot_wear_mask)
if(H.backbag == 1)
H.equip_to_slot_or_del(new /obj/item/weapon/tank/vox(H), slot_back)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/vox(H), slot_r_hand)
H.internal = H.back
else
H.equip_to_slot_or_del(new /obj/item/weapon/tank/vox(H), slot_r_hand)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/vox(H.back), slot_in_backpack)
H.internal = H.r_hand
H.internal = locate(/obj/item/weapon/tank) in H.contents
if(istype(H.internal,/obj/item/weapon/tank) && H.internals)

View File

@@ -233,20 +233,39 @@
/datum/species/proc/sanitize_name(var/name, var/robot = 0)
return sanitizeName(name, MAX_NAME_LEN, robot)
/datum/species/proc/equip_survival_gear(var/mob/living/carbon/human/H,var/extendedtank = 1)
/datum/species/proc/equip_survival_gear(var/mob/living/carbon/human/H,var/extendedtank = 0,var/comprehensive = 0)
var/boxtype = /obj/item/weapon/storage/box/survival //Default survival box
if(H.isSynthetic())
boxtype = /obj/item/weapon/storage/box //Empty box for synths
else if(extendedtank)
boxtype = /obj/item/weapon/storage/box/engineer //Special box for engineers
//Special box for engineers
if(comprehensive)
boxtype = /obj/item/weapon/storage/box/survival/comp
//Create the box
var/obj/item/weapon/storage/box/box = new boxtype(H)
//Create a tank (if such a thing exists for this species)
var/tanktext = "/obj/item/weapon/tank/emergency/" + "[breath_type]"
var/obj/item/weapon/tank/emergency/tankpath //Will force someone to come look here if they ever alter this path.
if(extendedtank)
tankpath = text2path(tanktext + "/engi")
if(!tankpath) //Is it just that there's no /engi?
tankpath = text2path(tanktext + "/double")
if(!tankpath)
tankpath = text2path(tanktext)
if(tankpath)
new tankpath(box)
box.calibrate_size()
if(H.backbag == 1)
if (extendedtank) H.equip_to_slot_or_del(new boxtype(H), slot_r_hand)
else H.equip_to_slot_or_del(new boxtype(H), slot_r_hand)
H.equip_to_slot_or_del(box, slot_r_hand)
else
if (extendedtank) H.equip_to_slot_or_del(new boxtype(H.back), slot_in_backpack)
else H.equip_to_slot_or_del(new boxtype(H.back), slot_in_backpack)
H.equip_to_slot_or_del(box, slot_in_backpack)
/datum/species/proc/create_organs(var/mob/living/carbon/human/H) //Handles creation of mob organs.

View File

@@ -15,8 +15,6 @@
flags = OPENCONTAINER
slot_flags = SLOT_BELT
preserve_item = 1
var/reusable = 1
var/used = 0
var/filled = 0
var/list/filled_reagents = list()
@@ -64,9 +62,6 @@
admin_inject_log(user, M, src, contained, trans)
to_chat(user, "<span class='notice'>[trans] units injected. [reagents.total_volume] units remaining in \the [src].</span>")
if(!reusable && !used)
used = !used
return
//A vial-loaded hypospray. Cartridge-based!
/obj/item/weapon/reagent_containers/hypospray/vial
@@ -122,11 +117,10 @@
/obj/item/weapon/reagent_containers/hypospray/autoinjector
name = "autoinjector"
desc = "A rapid and safe way to administer small amounts of drugs by untrained or trained personnel."
icon_state = "autoinjector"
item_state = "autoinjector"
icon_state = "blue"
item_state = "blue"
amount_per_transfer_from_this = 5
volume = 5
reusable = 0
filled = 1
filled_reagents = list("inaprovaline" = 5)
preserve_item = 0
@@ -139,33 +133,35 @@
filled = 0
filled_reagents = list()
/obj/item/weapon/reagent_containers/hypospray/autoinjector/used
used = 1
filled_reagents = list()
/obj/item/weapon/reagent_containers/hypospray/autoinjector/used/New()
..()
flags &= ~OPENCONTAINER
icon_state = "[initial(icon_state)]0"
/obj/item/weapon/reagent_containers/hypospray/autoinjector/attack(mob/M as mob, mob/user as mob)
..()
if(used) //Prevents autoinjectors to be refilled.
if(reagents.total_volume <= 0) //Prevents autoinjectors to be refilled.
flags &= ~OPENCONTAINER
update_icon()
return
/obj/item/weapon/reagent_containers/hypospray/autoinjector/update_icon()
if(!used && reagents.reagent_list.len)
if(reagents.total_volume > 0)
icon_state = "[initial(icon_state)]1"
else if(used)
icon_state = "[initial(icon_state)]0"
else
icon_state = "[initial(icon_state)]2"
icon_state = "[initial(icon_state)]0"
/obj/item/weapon/reagent_containers/hypospray/autoinjector/examine(mob/user)
..(user)
. = ..(user)
if(reagents && reagents.reagent_list.len)
user << "<span class='notice'>It is currently loaded.</span>"
else if(used)
user << "<span class='notice'>It is spent.</span>"
to_chat(user, "<span class='notice'>It is currently loaded.</span>")
else
user << "<span class='notice'>It is currently unloaded.</span>"
to_chat(user, "<span class='notice'>It is spent.</span>")
/obj/item/weapon/reagent_containers/hypospray/autoinjector/detox
name = "autoinjector (antitox)"
icon_state = "green"
filled_reagents = list("anti_toxin" = 5)
/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/clotting
name = "clotting agent"