whole lotta stuff

This commit is contained in:
Metis
2024-09-12 23:53:35 -04:00
parent f268e5655f
commit 8fd779ef02
232 changed files with 8793 additions and 0 deletions
@@ -0,0 +1,29 @@
/obj/effect/spawner/chocoslime_delivery
name = "choco slime delivery"
icon = 'GainStation13/icons/mob/candymonster.dmi'
icon_state = "a_c_slime"
var/announcement_time = 2
/obj/effect/spawner/chocoslime_delivery/Initialize(mapload)
..()
var/turf/T = get_turf(src)
new /mob/living/simple_animal/hostile/feed/chocolate_slime(T)
new /obj/effect/temp_visual/gravpush(T)
playsound(T, 'sound/items/party_horn.ogg', 50, 1, -1)
message_admins("A choco slime has been delivered to [ADMIN_VERBOSEJMP(T)].")
log_game("A choco slime has been delivered to [AREACOORD(T)]")
var/message = "Attention [station_name()], we have entrusted you with a research specimen in [get_area_name(T, TRUE)]. Remember to follow all safety precautions when dealing with the specimen."
SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(addtimer), CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(print_command_report), message), announcement_time))
return INITIALIZE_HINT_QDEL
// spawner object used for mapping
/obj/effect/spawner/lootdrop/fiftypercent_chocoslimespawn
name = "50% Chocolate Slime Spawn"
loot = list(
/obj/item/reagent_containers/food/snacks/chocolatebar = 70,
/obj/effect/spawner/chocoslime_delivery = 30)
@@ -0,0 +1,47 @@
/datum/design/arcd
name = "Advanced Rapid Construction Device (ARCD)"
desc = "A tool that can construct and deconstruct walls, airlocks and floors on the fly. This model works at a distance."
id = "arcd_design"
build_type = PROTOLATHE
materials = list(MAT_METAL = MINERAL_MATERIAL_AMOUNT, MAT_GLASS = MINERAL_MATERIAL_AMOUNT, MAT_DIAMOND = 500, MAT_BLUESPACE = 500) // costs more than what it did in the autolathe, this one comes loaded.
build_path = /obj/item/construction/rcd/arcd
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
/datum/techweb_node/blue_construct
id = "blue_construct"
display_name = "Bluespace Construction"
description = "Augument rapid construction designs using bluespace tech for ranged operations"
prereq_ids = list("adv_engi", "adv_bluespace")
design_ids = list("arcd_design")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 7000)
export_price = 7000
/obj/item/borg/upgrade/arcd
name = "cyborg ARCD"
desc = "A cybord RCG upgrade module to an ARCD model."
icon_state = "cyborg_upgrade3"
require_module = 1
module_type = /obj/item/robot_module/engineering
/obj/item/borg/upgrade/arcd/action(mob/living/silicon/robot/R, user = usr)
. = ..()
if(.)
var/obj/item/construction/rcd/arcd/S = new(R.module)
R.module.basic_modules += S
R.module.add_module(S, FALSE, TRUE)
/obj/item/borg/upgrade/arcd/deactivate(mob/living/silicon/robot/R, user = usr)
. = ..()
if (.)
var/obj/item/construction/rcd/arcd/S = locate() in R.module
R.module.remove_module(S, TRUE)
/datum/design/borg_arcd
name = "Cyborg ARCD"
id = "borg_arcd"
build_type = MECHFAB
build_path = /obj/item/borg/upgrade/arcd
materials = list(MAT_METAL = MINERAL_MATERIAL_AMOUNT, MAT_GLASS = MINERAL_MATERIAL_AMOUNT, MAT_DIAMOND = 500, MAT_BLUESPACE = 500)
construction_time = 100
category = list("Cyborg Upgrade Modules")
@@ -0,0 +1,134 @@
/obj/item/implant/docile
name = "docility implant"
activated = FALSE
/// What fatness level does the target need to be for the implant to work?
var/required_fatness = FATNESS_LEVEL_BLOB
/// What traits do we want to give the implanted mob?
var/list/traits_list = list(
TRAIT_WEIGHT_LOSS_IMMUNE,
TRAIT_PACIFISM,
TRAIT_CLUMSY,
TRAIT_FAT_GOOD,
TRAIT_HEAVY_SLEEPER,
TRAIT_DOCILE,
)
/obj/item/implant/docile/can_be_implanted_in(mob/living/target)
var/mob/living/carbon/human/target_human = target
if(!istype(target_human) || (target_human.fatness_real < required_fatness))
return FALSE
if(HAS_TRAIT(target_human, TRAIT_DOCILE))
return FALSE //They probably already have an implant, they likely don't need this.
return target?.client?.prefs?.fatness_vulnerable
/obj/item/implant/docile/implant(mob/living/target, mob/user, silent = FALSE)
. = ..()
if(!.)
return
var/mob/living/carbon/human/target_human = target
if(!istype(target_human))
return
for(var/trait in traits_list)
ADD_TRAIT(target, trait, src)
target_human.nutri_mult += 1
return TRUE
/obj/item/implant/docile/removed(mob/living/source, silent = FALSE, special = 0)
. = ..()
if(!.)
return
var/mob/living/carbon/human/target_human = source
if(!istype(target_human))
return
for(var/trait in traits_list)
REMOVE_TRAIT(target_human, trait, src)
target_human.nutri_mult -= 1
return TRUE
/obj/item/implant/docile/livestock
name = "livestock implant"
traits_list = list(
TRAIT_WEIGHT_LOSS_IMMUNE,
TRAIT_PACIFISM,
TRAIT_CLUMSY,
TRAIT_FAT_GOOD,
TRAIT_HEAVY_SLEEPER,
TRAIT_DOCILE,
TRAIT_LIVESTOCK,
TRAIT_NO_MISC,
TRAIT_NORUNNING,
)
/// What is the name of the mob before we change it?
var/stored_name = ""
/// What name do we want to give the mob before adding the randomized number
var/name_to_give = "Livestock"
/// How much do we want to modifiy the productivity stats of the mob's current sex organs by?
var/productivity_mult = 4
/obj/item/implant/docile/livestock/can_be_implanted_in(mob/living/target)
. = ..()
if(!.)
return FALSE
return target?.client?.prefs?.extreme_fatness_vulnerable
/obj/item/implant/docile/livestock/implant(mob/living/target, mob/user, silent)
. = ..()
if(!.)
return
var/mob/living/carbon/human/target_human = target
stored_name = target_human.real_name
var/new_name = "[name_to_give] ([rand(0,999)])"
target_human.real_name = new_name
target_human.name = new_name
if(target_human?.getorganslot("testicles"))
var/obj/item/organ/genital/testicles/balls = target_human?.getorganslot("testicles")
balls.fluid_mult = balls.fluid_mult * productivity_mult
balls.fluid_max_volume = balls.fluid_max_volume * productivity_mult
if(target_human?.getorganslot("breasts"))
var/obj/item/organ/genital/breasts/boobs = target_human?.getorganslot("breasts")
boobs.fluid_mult = boobs.fluid_mult * productivity_mult
boobs.fluid_max_volume = boobs.fluid_max_volume * productivity_mult
/obj/item/implant/docile/livestock/removed(mob/living/source, silent, special)
. = ..()
if(!.)
return FALSE
var/mob/living/carbon/human/target_human = source
target_human.real_name = stored_name
target_human.name = stored_name
if(target_human?.getorganslot("testicles"))
var/obj/item/organ/genital/testicles/balls = target_human?.getorganslot("testicles")
balls.fluid_mult = balls.fluid_mult / productivity_mult
balls.fluid_max_volume = balls.fluid_max_volume / productivity_mult
if(target_human?.getorganslot("breasts"))
var/obj/item/organ/genital/breasts/boobs = target_human?.getorganslot("breasts")
boobs.fluid_mult = boobs.fluid_mult / productivity_mult
boobs.fluid_max_volume = boobs.fluid_max_volume / productivity_mult
/obj/item/implantcase/docile
name = "implant case - 'Docility'"
desc = "A glass case containing a docility implant. Used to make those at high weights docile."
imp_type = /obj/item/implant/docile
/obj/item/implantcase/docile/livestock
name = "implant case - 'Livestock'"
desc = "A glass case containing a livestock implant. Functions similar to the docility implant, but changes the implantee's name and makes them even more helpless. cannot be combined with the docility implant."
imp_type = /obj/item/implant/docile/livestock
@@ -0,0 +1,48 @@
/obj/item/storage/bag/tray/holding
name = "serving tray of holding"
desc = "A tray for food, now featuring bluesapce technology. Don't ask."
/obj/item/storage/bag/tray/holding/ComponentInitialize()
. = ..()
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
STR.max_combined_w_class = INFINITY
STR.max_items = 50
/datum/design/tray_holding
name = "Serving Tray of Holding"
desc = "A serving tray for food, now somehow using bluespace to hold more stuff."
id = "tray_holding"
build_type = PROTOLATHE
materials = list(MAT_GOLD = 250, MAT_URANIUM = 500)
build_path =/obj/item/storage/bag/tray/holding
category = list("Bluespace Designs")
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
/obj/item/borg/upgrade/tray_hold
name = "cyborg tray of holding"
desc = "A tray of holding replacement for service borg's tray."
icon_state = "cyborg_upgrade3"
require_module = 1
module_type = /obj/item/robot_module/butler
/obj/item/borg/upgrade/tray_hold/action(mob/living/silicon/robot/R, user = usr)
. = ..()
if(.)
var/obj/item/storage/bag/tray/holding/S = new(R.module)
R.module.basic_modules += S
R.module.add_module(S, FALSE, TRUE)
/obj/item/borg/upgrade/tray_hold/deactivate(mob/living/silicon/robot/R, user = usr)
. = ..()
if (.)
var/obj/item/storage/bag/tray/holding/S = locate() in R.module
R.module.remove_module(S, TRUE)
/datum/design/borg_tray_hold
name = "Cyborg Tray of Holding"
id = "borg_tray_hold"
build_type = MECHFAB
build_path = /obj/item/borg/upgrade/tray_hold
materials = list(MAT_GOLD = 250, MAT_URANIUM = 500)
construction_time = 100
category = list("Cyborg Upgrade Modules")