whole lotta stuff
This commit is contained in:
@@ -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")
|
||||
Reference in New Issue
Block a user