mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-20 12:35:33 +01:00
[MIRROR] Arconomy expansion pack 1: Convenience and Luxury goods [MDB IGNORE] (#14410)
* Arconomy expansion pack 1: Convenience and Luxury goods (#67417) * Arconomy expansion pack 1: Convenience and Luxury goods Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
This commit is contained in:
@@ -21,3 +21,4 @@
|
||||
#define LANGUAGE_SOFTWARE "software"
|
||||
#define LANGUAGE_STONER "stoner"
|
||||
#define LANGUAGE_VOICECHANGE "voicechange"
|
||||
#define LANGUAGE_RADIOKEY "radiokey"
|
||||
|
||||
@@ -14,18 +14,27 @@ SUBSYSTEM_DEF(research)
|
||||
var/datum/design/error_design/error_design
|
||||
|
||||
//ERROR LOGGING
|
||||
var/list/invalid_design_ids = list() //associative id = number of times
|
||||
var/list/invalid_node_ids = list() //associative id = number of times
|
||||
var/list/invalid_node_boost = list() //associative id = error message
|
||||
///associative id = number of times
|
||||
var/list/invalid_design_ids = list()
|
||||
///associative id = number of times
|
||||
var/list/invalid_node_ids = list()
|
||||
///associative id = error message
|
||||
var/list/invalid_node_boost = list()
|
||||
|
||||
var/list/obj/machinery/rnd/server/servers = list()
|
||||
|
||||
var/list/techweb_nodes_starting = list() //associative id = TRUE
|
||||
var/list/techweb_categories = list() //category name = list(node.id = TRUE)
|
||||
var/list/techweb_boost_items = list() //associative double-layer path = list(id = list(point_type = point_discount))
|
||||
var/list/techweb_nodes_hidden = list() //Node ids that should be hidden by default.
|
||||
var/list/techweb_nodes_experimental = list() //Node ids that are exclusive to the BEPIS.
|
||||
var/list/techweb_point_items = list( //path = list(point type = value)
|
||||
///associative id = TRUE
|
||||
var/list/techweb_nodes_starting = list()
|
||||
///category name = list(node.id = TRUE)
|
||||
var/list/techweb_categories = list()
|
||||
///associative double-layer path = list(id = list(point_type = point_discount))
|
||||
var/list/techweb_boost_items = list()
|
||||
///Node ids that should be hidden by default.
|
||||
var/list/techweb_nodes_hidden = list()
|
||||
///Node ids that are exclusive to the BEPIS.
|
||||
var/list/techweb_nodes_experimental = list()
|
||||
///path = list(point type = value)
|
||||
var/list/techweb_point_items = list(
|
||||
/obj/item/assembly/signaler/anomaly = list(TECHWEB_POINT_TYPE_GENERIC = 10000)
|
||||
)
|
||||
var/list/errored_datums = list()
|
||||
|
||||
@@ -4,14 +4,19 @@
|
||||
icon = 'icons/obj/radio.dmi'
|
||||
icon_state = "cypherkey"
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
/// Can this radio key access the binary radio channel?
|
||||
var/translate_binary = FALSE
|
||||
/// Decrypts Syndicate radio transmissions.
|
||||
var/syndie = FALSE
|
||||
/// If true, the radio can say/hear on the special CentCom channel.
|
||||
var/independent = FALSE
|
||||
/// What channels does this encryption key grant to the parent headset.
|
||||
var/list/channels = list()
|
||||
var/datum/language/translated_language
|
||||
|
||||
/obj/item/encryptionkey/Initialize(mapload)
|
||||
. = ..()
|
||||
if(!channels.len && !translate_binary)
|
||||
if(!channels.len && !translate_binary && !translated_language)
|
||||
desc += " Has no special codes in it. You should probably tell a coder!"
|
||||
|
||||
/obj/item/encryptionkey/examine(mob/user)
|
||||
@@ -30,12 +35,13 @@
|
||||
name = "syndicate encryption key"
|
||||
icon_state = "syn_cypherkey"
|
||||
channels = list(RADIO_CHANNEL_SYNDICATE = 1)
|
||||
syndie = TRUE//Signifies that it de-crypts Syndicate transmissions
|
||||
syndie = TRUE
|
||||
|
||||
/obj/item/encryptionkey/binary
|
||||
name = "binary translator key"
|
||||
icon_state = "bin_cypherkey"
|
||||
translate_binary = TRUE
|
||||
translated_language = /datum/language/machine
|
||||
|
||||
/obj/item/encryptionkey/headset_sec
|
||||
name = "security radio encryption key"
|
||||
@@ -143,3 +149,33 @@
|
||||
|
||||
/obj/item/encryptionkey/secbot
|
||||
channels = list(RADIO_CHANNEL_AI_PRIVATE = 1, RADIO_CHANNEL_SECURITY = 1)
|
||||
|
||||
/obj/item/encryptionkey/moth
|
||||
name = "\improper Moffic translation key"
|
||||
desc = "An encryption key that automatically encodes moffic heard through the radio into common. The signal's a little fuzzy."
|
||||
icon_state = "translation_cypherkey"
|
||||
translated_language = /datum/language/moffic
|
||||
|
||||
/obj/item/encryptionkey/tiziran
|
||||
name = "\improper Tiziran translation key"
|
||||
desc = "An encryption key that automatically encodes draconic heard through the radio into common. The signal's not quite to scale."
|
||||
icon_state = "translation_cypherkey"
|
||||
translated_language = /datum/language/draconic
|
||||
|
||||
/obj/item/encryptionkey/plasmaman
|
||||
name = "\improper Calcic translation key"
|
||||
desc = "An encryption key that automatically encodes calcic heard through the radio into common. The signal lacks a bit of teeth."
|
||||
icon_state = "translation_cypherkey"
|
||||
translated_language = /datum/language/calcic
|
||||
|
||||
/obj/item/encryptionkey/ethereal
|
||||
name = "\improper Ethereal translation key"
|
||||
desc = "An encryption key that automatically encodes ethereal heard through the radio into common. The signal's overpowering."
|
||||
icon_state = "translation_cypherkey"
|
||||
translated_language = /datum/language/voltaic
|
||||
|
||||
/obj/item/encryptionkey/felinid
|
||||
name = "\improper Felinid translation key"
|
||||
desc = "An encryption key that automatically encodes nekomimetic heard through the radio into common. The signal's rather scratchy."
|
||||
icon_state = "translation_cypherkey"
|
||||
translated_language = /datum/language/nekomimetic
|
||||
|
||||
@@ -63,6 +63,8 @@ GLOBAL_LIST_INIT(channel_tokens, list(
|
||||
set_listening(TRUE)
|
||||
recalculateChannels()
|
||||
possibly_deactivate_in_loc()
|
||||
RegisterSignal(src, COMSIG_ITEM_EQUIPPED, .proc/learn_language)
|
||||
RegisterSignal(src, COMSIG_ITEM_POST_UNEQUIP, .proc/unlearn_language)
|
||||
|
||||
/obj/item/radio/headset/proc/possibly_deactivate_in_loc()
|
||||
if(ismob(loc))
|
||||
@@ -88,6 +90,34 @@ GLOBAL_LIST_INIT(channel_tokens, list(
|
||||
return attack_self(headset_user)
|
||||
return ..()
|
||||
|
||||
/obj/item/radio/headset/proc/learn_language()
|
||||
SIGNAL_HANDLER
|
||||
if(!istype(loc, /mob/living/carbon))
|
||||
return
|
||||
var/list/language_list = list()
|
||||
if(keyslot?.translated_language)
|
||||
language_list += keyslot.translated_language
|
||||
if(keyslot2?.translated_language)
|
||||
language_list += keyslot2.translated_language
|
||||
|
||||
var/mob/living/carbon/person = loc
|
||||
for(var/language in language_list)
|
||||
person.grant_language(language, understood = TRUE, spoken = FALSE, source = LANGUAGE_RADIOKEY)
|
||||
|
||||
/obj/item/radio/headset/proc/unlearn_language()
|
||||
SIGNAL_HANDLER
|
||||
if(!istype(loc, /mob/living/carbon))
|
||||
return
|
||||
var/list/language_list = list()
|
||||
if(keyslot?.translated_language)
|
||||
language_list += keyslot.translated_language
|
||||
if(keyslot2?.translated_language)
|
||||
language_list += keyslot2.translated_language
|
||||
|
||||
var/mob/living/carbon/person = loc
|
||||
for(var/language in language_list)
|
||||
person.remove_language(language, understood = TRUE, spoken = FALSE, source = LANGUAGE_RADIOKEY)
|
||||
|
||||
/obj/item/radio/headset/syndicate //disguised to look like a normal headset for stealth ops
|
||||
|
||||
/obj/item/radio/headset/syndicate/alt //undisguised bowman with flash protection
|
||||
|
||||
@@ -70,7 +70,7 @@ GLOBAL_LIST_INIT(department_order_cooldowns, list(
|
||||
)
|
||||
supply_data += list(target_group)
|
||||
//skip packs we should not show, even if we should show the group
|
||||
if((pack.hidden && !(obj_flags & EMAGGED)) || (pack.special && !pack.special_enabled) || pack.DropPodOnly || pack.goody)
|
||||
if((pack.hidden && !(obj_flags & EMAGGED)) || (pack.special && !pack.special_enabled) || pack.drop_pod_only || pack.goody)
|
||||
continue
|
||||
//finally the pack data itself
|
||||
target_group["packs"] += list(list(
|
||||
@@ -119,7 +119,7 @@ GLOBAL_LIST_INIT(department_order_cooldowns, list(
|
||||
if(!pack)
|
||||
say("Something went wrong!")
|
||||
CRASH("requested supply pack id \"[id]\" not found!")
|
||||
if(pack.hidden || pack.DropPodOnly || pack.special)
|
||||
if(pack.hidden || pack.drop_pod_only || pack.special)
|
||||
return
|
||||
var/name = "*None Provided*"
|
||||
var/rank = "*None Provided*"
|
||||
|
||||
@@ -169,6 +169,48 @@
|
||||
cost = PAYCHECK_CREW * 2
|
||||
contains = list(/obj/item/food/ready_donk)
|
||||
|
||||
/datum/supply_pack/goody/pill_mutadone
|
||||
name = "Emergency Mutadone Pill"
|
||||
desc = "A single pill for curing genetic defects. Useful for when you can't procure one from medbay."
|
||||
cost = PAYCHECK_CREW * 2.5
|
||||
contains = list(/obj/item/reagent_containers/pill/mutadone)
|
||||
|
||||
/datum/supply_pack/goody/rapid_lighting_device
|
||||
name = "Rapid Lighting Device (RLD)"
|
||||
desc = "A device used to rapidly provide lighting sources to an area. Reload with iron, plasteel, glass or compressed matter cartridges."
|
||||
cost = PAYCHECK_CREW * 10
|
||||
contains = list(/obj/item/construction/rld)
|
||||
|
||||
/datum/supply_pack/goody/moth_encryption_key
|
||||
name = "Moffic radio encryption key"
|
||||
desc = "A hi-tech radio encryption key that allows the wearer to understand moffic when the radio is worn."
|
||||
cost = PAYCHECK_CREW * 12
|
||||
contains = list(/obj/item/encryptionkey/moth)
|
||||
|
||||
/datum/supply_pack/goody/lizard_encryption_key
|
||||
name = "Draconic radio encryption key"
|
||||
desc = "A hi-tech radio encryption key that allows the wearer to understand draconic when the radio is worn."
|
||||
cost = PAYCHECK_CREW * 12
|
||||
contains = list(/obj/item/encryptionkey/tiziran)
|
||||
|
||||
/datum/supply_pack/goody/plasmaman_encryption_key
|
||||
name = "Calcic radio encryption key"
|
||||
desc = "A hi-tech radio encryption key that allows the wearer to understand calcic when the radio is worn."
|
||||
cost = PAYCHECK_CREW * 12
|
||||
contains = list(/obj/item/encryptionkey/plasmaman)
|
||||
|
||||
/datum/supply_pack/goody/ethereal_encryption_key
|
||||
name = "Voltaic radio encryption key"
|
||||
desc = "A hi-tech radio encryption key that allows the wearer to understand voltaic when the radio is worn."
|
||||
cost = PAYCHECK_CREW * 12
|
||||
contains = list(/obj/item/encryptionkey/ethereal)
|
||||
|
||||
/datum/supply_pack/goody/felinid_encryption_key
|
||||
name = "Felinid radio encryption key"
|
||||
desc = "A hi-tech radio encryption key that allows the wearer to understand nekomimetic when the radio is worn."
|
||||
cost = PAYCHECK_CREW * 12
|
||||
contains = list(/obj/item/encryptionkey/felinid)
|
||||
|
||||
/datum/supply_pack/goody/fishing_toolbox
|
||||
name = "Fishing toolbox"
|
||||
desc = "Complete toolbox set for your fishing adventure. Advanced hooks and lines sold separetely."
|
||||
|
||||
@@ -150,7 +150,7 @@
|
||||
"name" = P.group,
|
||||
"packs" = list()
|
||||
)
|
||||
if((P.hidden && !(obj_flags & EMAGGED)) || (P.contraband && !contraband) || (P.special && !P.special_enabled) || P.DropPodOnly)
|
||||
if((P.hidden && !(obj_flags & EMAGGED)) || (P.contraband && !contraband) || (P.special && !P.special_enabled) || P.drop_pod_only)
|
||||
continue
|
||||
data["supplies"][P.group]["packs"] += list(list(
|
||||
"name" = P.name,
|
||||
@@ -210,7 +210,7 @@
|
||||
var/datum/supply_pack/pack = SSshuttle.supply_packs[id]
|
||||
if(!istype(pack))
|
||||
CRASH("Unknown supply pack id given by order console ui. ID: [params["id"]]")
|
||||
if((pack.hidden && !(obj_flags & EMAGGED)) || (pack.contraband && !contraband) || pack.DropPodOnly || (pack.special && !pack.special_enabled))
|
||||
if((pack.hidden && !(obj_flags & EMAGGED)) || (pack.contraband && !contraband) || pack.drop_pod_only || (pack.special && !pack.special_enabled))
|
||||
return
|
||||
|
||||
var/name = "*None Provided*"
|
||||
|
||||
@@ -1,25 +1,44 @@
|
||||
/datum/supply_pack
|
||||
/// The name of the supply pack, as listed on th cargo purchasing UI.
|
||||
var/name = "Crate"
|
||||
/// The group that the supply pack is sorted into within the cargo purchasing UI.
|
||||
var/group = ""
|
||||
/// Is this cargo supply pack visible to the cargo purchasing UI.
|
||||
var/hidden = FALSE
|
||||
/// Is this supply pack purchasable outside of the standard purchasing band? Contraband is available by multitooling the cargo purchasing board.
|
||||
var/contraband = FALSE
|
||||
/// Cost of the crate. DO NOT GO ANY LOWER THAN X1.4 the "CARGO_CRATE_VALUE" value if using regular crates, or infinite profit will be possible!
|
||||
var/cost = CARGO_CRATE_VALUE * 1.4
|
||||
/// What access is required to open the crate when spawned?
|
||||
var/access = FALSE
|
||||
/// Who can view this supply_pack and with what access.
|
||||
var/access_view = FALSE
|
||||
/// If someone with any of the following accesses in a list can open this cargo pack crate.
|
||||
var/access_any = FALSE
|
||||
/// A list of items that are spawned in the crate of the supply pack.
|
||||
var/list/contains = null
|
||||
/// What is the name of the crate that is spawned with the crate's contents??
|
||||
var/crate_name = "crate"
|
||||
/// When spawning a gas canistor, what kind of gas type are we spawning?
|
||||
var/id
|
||||
var/desc = ""//no desc by default
|
||||
/// The description shown on the cargo purchasing UI. No desc by default.
|
||||
var/desc = ""
|
||||
/// What typepath of crate do you spawn?
|
||||
var/crate_type = /obj/structure/closet/crate
|
||||
var/dangerous = FALSE // Should we message admins?
|
||||
var/special = FALSE //Event/Station Goals/Admin enabled packs
|
||||
/// Should we message admins?
|
||||
var/dangerous = FALSE
|
||||
/// Event/Station Goals/Admin enabled packs
|
||||
var/special = FALSE
|
||||
/// When a cargo pack can be unlocked by special events (as seen in special), this toggles if it's been enabled in the round yet (For example, after the station alert, we can now enable buying the station goal pack).
|
||||
var/special_enabled = FALSE
|
||||
var/DropPodOnly = FALSE //only usable by the Bluespace Drop Pod via the express cargo console
|
||||
var/special_pod //If this pack comes shipped in a specific pod when launched from the express console
|
||||
/// Only usable by the Bluespace Drop Pod via the express cargo console
|
||||
var/drop_pod_only = FALSE
|
||||
/// If this pack comes shipped in a specific pod when launched from the express console
|
||||
var/special_pod
|
||||
/// Was this spawned through an admin proc?
|
||||
var/admin_spawned = FALSE
|
||||
var/goody = FALSE //Goodies can only be purchased by private accounts and can have coupons apply to them. They also come in a lockbox instead of a full crate, so the 700 min doesn't apply
|
||||
/// Goodies can only be purchased by private accounts and can have coupons apply to them. They also come in a lockbox instead of a full crate, so the 700 min doesn't apply
|
||||
var/goody = FALSE
|
||||
|
||||
/datum/supply_pack/New()
|
||||
id = type
|
||||
@@ -2170,7 +2189,7 @@
|
||||
access_view = ACCESS_HOS
|
||||
contains = list(/mob/living/simple_animal/crab)
|
||||
crate_name = "look sir free crabs"
|
||||
DropPodOnly = TRUE
|
||||
drop_pod_only = TRUE
|
||||
|
||||
/datum/supply_pack/critter/crab/generate()
|
||||
. = ..()
|
||||
@@ -2723,7 +2742,7 @@
|
||||
desc = "Presenting the New Nanotrasen-Brand Bluespace Supplypod! Transport cargo with grace and ease! Call today and we'll shoot over a demo unit for just 300 credits!"
|
||||
cost = CARGO_CRATE_VALUE * 0.6 //Empty pod, so no crate refund
|
||||
contains = list()
|
||||
DropPodOnly = TRUE
|
||||
drop_pod_only = TRUE
|
||||
crate_type = null
|
||||
special_pod = /obj/structure/closet/supplypod/bluespacepod
|
||||
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
"name" = P.group,
|
||||
"packs" = list()
|
||||
)
|
||||
if((P.hidden && (P.contraband && !contraband) || (P.special && !P.special_enabled) || P.DropPodOnly))
|
||||
if((P.hidden && (P.contraband && !contraband) || (P.special && !P.special_enabled) || P.drop_pod_only))
|
||||
continue
|
||||
data["supplies"][P.group]["packs"] += list(list(
|
||||
"name" = P.name,
|
||||
@@ -194,7 +194,7 @@
|
||||
var/datum/supply_pack/pack = SSshuttle.supply_packs[id]
|
||||
if(!istype(pack))
|
||||
return
|
||||
if(pack.hidden || pack.contraband || pack.DropPodOnly || (pack.special && !pack.special_enabled))
|
||||
if(pack.hidden || pack.contraband || pack.drop_pod_only || (pack.special && !pack.special_enabled))
|
||||
return
|
||||
|
||||
var/name = "*None Provided*"
|
||||
|
||||
@@ -314,3 +314,13 @@
|
||||
volume = 15
|
||||
amount_per_transfer_from_this = 15
|
||||
list_reagents = list(/datum/reagent/medicine/epinephrine = 5, /datum/reagent/medicine/coagulant = 2.5, /datum/reagent/iron = 3.5, /datum/reagent/medicine/salglu_solution = 4)
|
||||
|
||||
/obj/item/reagent_containers/hypospray/medipen/mutadone
|
||||
name = "mutadone autoinjector"
|
||||
desc = "An mutadone medipen to assist in curing genetic errors in one single injector."
|
||||
icon_state = "penacid"
|
||||
inhand_icon_state = "penacid"
|
||||
base_icon_state = "penacid"
|
||||
volume = 15
|
||||
amount_per_transfer_from_this = 15
|
||||
list_reagents = list(/datum/reagent/medicine/mutadone = 15)
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 4.5 KiB |
Reference in New Issue
Block a user