Arconomy expansion pack 1: Convenience and Luxury goods (#67417)

This commit is contained in:
ArcaneMusic
2022-06-19 12:24:46 -04:00
committed by GitHub
parent 09a6ce98db
commit 7f52ff0e39
11 changed files with 172 additions and 25 deletions
+1
View File
@@ -21,3 +21,4 @@
#define LANGUAGE_SOFTWARE "software"
#define LANGUAGE_STONER "stoner"
#define LANGUAGE_VOICECHANGE "voicechange"
#define LANGUAGE_RADIOKEY "radiokey"
+18 -9
View File
@@ -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
@@ -58,6 +58,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))
@@ -83,6 +85,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
+2 -2
View File
@@ -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(
@@ -120,7 +120,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*"
+42
View File
@@ -168,6 +168,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."
+2 -2
View File
@@ -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*"
+27 -8
View File
@@ -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
@@ -2154,7 +2173,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()
. = ..()
@@ -2706,7 +2725,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