Merge branch 'master' into protean-rework

This commit is contained in:
BlackMajor
2022-09-12 23:40:01 +12:00
committed by GitHub
358 changed files with 167589 additions and 233144 deletions

View File

@@ -0,0 +1,19 @@
/obj/item/clothing/shoes/MouseDrop_T(mob/living/target, mob/living/user)
if(!istype(user)) return ..() // If the user passed in isn't a living mob, exit
if(target != user) return ..() // If the user didn't drag themselves, exit
if(user.incapacitated() || user.buckled) return ..() // If user is incapacitated or buckled, exit
if(get_holder_of_type(src, /mob/living/carbon/human) == user) return ..() // No jumping into your own equipment
if(ishuman(user) && user.get_effective_size() > 0.25) return ..() // Only micro characters
var/full = 0
for(var/mob/M in src)
if(istype(M,/mob/living/voice)) //Don't count voices as people!
continue
full++
if(full >= 2)
to_chat(user, "<span class='warning'>It doesn't seem like there is room in \the [src]!</span>")
else
to_chat(user, "<span class='warning'>You crawl into \the [src]!</span>")
user.forceMove(src)
return ..()

View File

@@ -0,0 +1,16 @@
/datum/supply_pack/supply/capcrystal
name = "Capture Crystal crate"
contains = list(/obj/item/capture_crystal)
cost = 500
containertype = /obj/structure/closet/crate
containername = "Capture Crystal crate"
contraband = 1
/datum/supply_pack/supply/chemistrykitbundle
name = "gender and size chemistry bundle kit"
contains = list(/obj/item/selectable_item/chemistrykit/size = 3,
/obj/item/selectable_item/chemistrykit/gender = 3)
cost = 100
containertype = /obj/structure/closet/crate
containername = "gender and size chemistry bundle crate"
contraband = 1

View File

@@ -0,0 +1,6 @@
/datum/supply_pack/eng/engine/rotary_wheel
contains = list(/obj/item/weapon/circuitboard/machine/reg_c)
name = "c-type rotary electric generator board"
containertype = /obj/structure/closet/crate/focalpoint
containername = "c-type rotary board crate"
access = access_engine

View File

@@ -0,0 +1,18 @@
/datum/supply_pack/hydro/teppi
name = "Teppi crate"
cost = 60 //considering a corgi crate is 50, and you get two fennecs
containertype = /obj/structure/largecrate/animal/teppi
containername = "Teppi crate"
/datum/supply_pack/hydro/sheep
name = "Sheep crate"
cost = 25
containertype = /obj/structure/largecrate/animal/sheep
containername = "Goat crate"
access = access_hydroponics
/datum/supply_pack/hydro/woofdog
name = "Dog crate"
cost = 50
containertype = /obj/structure/largecrate/animal/woofdog
containername = "Dog carrier"

View File

@@ -3,4 +3,11 @@
contains = list(/obj/item/weapon/backup_implanter = 4)
cost = 50
containertype = /obj/structure/closet/crate/medical
containername = "Spare backup implanters"
containername = "Spare backup implanters"
/datum/supply_pack/med/decrotizer
name = "Commercial Denecrotizer "
contains = list(/obj/item/device/denecrotizer/medical)
cost = 40
containertype = /obj/structure/closet/crate/secure
containername = "commercial denecrotizer crate"

View File

@@ -0,0 +1,7 @@
/datum/supply_pack/sci/pred_sect
name = "EXTREMELY Dangerous Bug"
cost = 200
containertype = /obj/structure/largecrate/animal/bugsect
containername = "EXTREMELY Dangerous Bug crate"
contraband = 1
access = access_xenobiology

View File

@@ -0,0 +1,296 @@
//////////////////CHOMP//////////////////////////
/datum/reagent/ethanol/cloverclub
glass_icon_state = "cloverclub"
glass_icon_source = 'modular_chomp/icons/obj/drinks.dmi'
glass_center_of_mass = list("x"=16, "y"=8)
/datum/reagent/ethanol/spiderdrink
glass_icon_state = "glassofspiders"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/drink/tea/minttea
glass_icon_state = "bigteacup"
/datum/reagent/drink/tea/lemontea
glass_icon_state = "bigteacup"
/datum/reagent/drink/tea/limetea
glass_icon_state = "bigteacup"
/datum/reagent/drink/tea/orangetea
glass_icon_state = "bigteacup"
/datum/reagent/drink/tea/berrytea
glass_icon_state = "bigteacup"
/datum/reagent/drink/tea/cherrytea
glass_icon_state = "bigteacup"
/datum/reagent/drink/tea/watermelontea
glass_icon_state = "bigteacup"
/datum/reagent/drink/bubbleteawatermelon
glass_icon_state = "bubbleteawatermelonglass"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
glass_center_of_mass = list("x"=16, "y"=9)
/datum/reagent/drink/bubbleteastrawberry
glass_icon_state = "bubbleteastrawberryglass"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
glass_center_of_mass = list("x"=16, "y"=9)
/datum/reagent/drink/bubbleteacherry
glass_icon_state = "bubbleteacherryglass"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
glass_center_of_mass = list("x"=16, "y"=9)
/datum/reagent/drink/bubbleteacoffee
glass_icon_state = "bubbleteacoffeeglass"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
glass_center_of_mass = list("x"=16, "y"=9)
/datum/reagent/drink/bubbleteabanana
glass_icon_state = "bubbleteabananaglass"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
glass_center_of_mass = list("x"=16, "y"=9)
/datum/reagent/drink/tea/matcha_latte
glass_icon_state = "bigteacup"
/datum/reagent/drink/horchata
glass_icon_state = "horchata"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
glass_center_of_mass = list("x"=16, "y"=7)
/datum/reagent/toxin/bluetrain
glass_icon_state = "bluetrain"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
glass_center_of_mass = list("x"=16, "y"=8)
/datum/reagent/drink/lovepotion
glass_icon_state = "lovepotion"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/drink/lowpower
glass_icon_state = "lowpower"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/coffee/jackbrew
glass_icon_state = "jackbrew"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/bookwyrm
glass_icon_state = "bookwyrm"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/drink/highpower
glass_icon_state = "highpower"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/flapper
glass_icon_state = "flapper"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/toxin/oilslide
glass_icon_state = "oilslide"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/sitonmyface
glass_icon_state = "sitonmyface"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/hachi
glass_icon_state = "hachi"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/mojito
glass_icon_state = "mojito"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/slimedrink
glass_icon_state = "slimedrink"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/arachnidslammer
glass_icon_state = "arachnidslammer"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/drink/pilk
glass_icon_state = "whiskeyglass"
//Visual Updates of existing drinks
/datum/reagent/ethanol/gintonic
glass_icon_state = "gintonicglass"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/coffee/kahlua
glass_icon_state = "kahluaglass"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/wine
glass_icon_state = "wineglass"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/cognac
glass_icon_state = "cognacglass"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/cuba_libre
glass_icon_state = "cubalibreglass"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/manly_dorf
glass_icon_state = "manlydorfglass"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/tequilla_sunrise
glass_icon_state = "tequilasunriseglass"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/screwdrivercocktail
glass_icon_state = "screwdriverglass"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/bloody_mary
glass_icon_state = "bloodymaryglass"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/coffee/brave_bull
glass_icon_state = "bravebullglass"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/drink/doctor_delight
glass_icon_state = "doctorsdelightglass"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/drink/soda/space_up
glass_icon_state = "space-up_glass"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/vodkatonic
glass_icon_state = "vodkatonicglass"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/manhattan
glass_icon_state = "manhattanglass"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/manhattan_proj
glass_icon_state = "proj_manhattanglass"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/ginfizz
glass_icon_state = "ginfizzglass"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/longislandicedtea
glass_icon_state = "longislandicedteaglass"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/threemileisland
glass_icon_state = "threemileislandglass"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/margarita
glass_icon_state = "margaritaglass"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/drink/soda/spacemountainwind
glass_icon_state = "Space_mountain_wind_glass"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/thirteenloko
glass_icon_state = "thirteen_loko_glass"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/drink/soda/dr_gibb
glass_icon_state = "dr_gibb_glass"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/adminordrazine
glass_icon_state = "golden_cup"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/singulo
glass_icon_state = "singulo"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/silencer
glass_icon_state = "silencerglass"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/snowwhite
glass_icon_state = "snowwhite"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/antifreeze
glass_icon_state = "antifreeze"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/barefoot
glass_icon_state = "b&p"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/booger
glass_icon_state = "booger"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/devilskiss
glass_icon_state = "devilskiss"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/syndicatebomb
glass_icon_state = "syndicatebomb"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/narsour
glass_icon_state = "narsour"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/cogchamp
glass_icon_state = "cogchamp"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/alliescocktail
glass_icon_state = "alliescocktail"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/erikasurprise
glass_icon_state = "erikasurprise"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
//Ported drinks
/datum/reagent/ethanol/fetching_fizz
glass_icon_state = "fetching_fizz"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/hearty_punch
glass_icon_state = "hearty_punch"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/squirt_cider
glass_icon_state = "squirt_cider"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/fringe_weaver
glass_icon_state = "fringe_weaver"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/crevice_spike
glass_icon_state = "crevice_spike"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/duplex
glass_icon_state = "duplex"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/mauna_loa
glass_icon_state = "mauna_loa"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'
/datum/reagent/ethanol/hiveminderaser
glass_icon_state = "hiveminderaser"
glass_icon_file = 'modular_chomp/icons/obj/drinks.dmi'

View File

@@ -0,0 +1,10 @@
/obj/item/weapon/reagent_containers/food/drinks/bottle/snaps
name = "Akvavit"
desc = "This could go well with lunch."
icon = 'modular_chomp/icons/obj/drinks.dmi'
icon_state = "snapsbottle"
center_of_mass = list("x"=17, "y"=3)
/obj/item/weapon/reagent_containers/food/drinks/bottle/snaps/Initialize()
. = ..()
reagents.add_reagent("snaps", 100)

View File

@@ -0,0 +1,125 @@
// Unique areas were requested for each superpose map for future use. The plain superpose area is for future varedits to all superpose submaps.
/area/survivalpod/superpose
/area/survivalpod/superpose/CrashedInfestedShip
/area/survivalpod/superpose/CrashedQurantineShip
/area/survivalpod/superpose/CultShip
/area/survivalpod/superpose/DemonPool
/area/survivalpod/superpose/Dinner
/area/survivalpod/superpose/ExplorerHome
/area/survivalpod/superpose/Farm
/area/survivalpod/superpose/FieldLab
/area/survivalpod/superpose/HellCave
/area/survivalpod/superpose/HydroCave
/area/survivalpod/superpose/LargeAlienShip
/area/survivalpod/superpose/LoneHome
/area/survivalpod/superpose/MechFabShip
/area/survivalpod/superpose/MechStorageFab
/area/survivalpod/superpose/MercShip
/area/survivalpod/superpose/MethLab
/area/survivalpod/superpose/OldHotel
/area/survivalpod/superpose/ScienceShip
/area/survivalpod/superpose/SmallCombatShip
/area/survivalpod/superpose/SurvivalBarracks
/area/survivalpod/superpose/SurvivalCargo
/area/survivalpod/superpose/SurvivalDIY_11x11
/area/survivalpod/superpose/SurvivalDIY_7x7
/area/survivalpod/superpose/SurvivalDIY_9x9
/area/survivalpod/superpose/SurvivalDinner
/area/survivalpod/superpose/SurvivalEngineering
/area/survivalpod/superpose/SurvivalHome
/area/survivalpod/superpose/SurvivalHydro
/area/survivalpod/superpose/SurvivalJanitor
/area/survivalpod/superpose/SurvivalLeisure
/area/survivalpod/superpose/SurvivalLuxuryBar
/area/survivalpod/superpose/SurvivalLuxuryHome
/area/survivalpod/superpose/SurvivalMedical
/area/survivalpod/superpose/SurvivalPool
/area/survivalpod/superpose/SurvivalQuarters
/area/survivalpod/superpose/SurvivalScience
/area/survivalpod/superpose/SurvivalSecurity
/area/survivalpod/superpose/TinyCombatShip
/area/survivalpod/superpose/TradingShip
/area/survivalpod/superpose/WoodenCamp
/obj/item/device/survivalcapsule/superpose
name = "superposed surfluid shelter capsule"
desc = "A proprietary hyperstructure of many three-dimensional spaces superposed around a supermatter nano crystal; use a pen to reach the reset button. There's a license for use printed on the bottom."
description_info = "The capsule contains pockets of compressed space in a super position stabilized by a miniscule supermatter crystal. \
NanoTrasen stresses the safety of this model over previous prototypes but assumes no liability for sub-kiloton explosions."
template_id = null
var/list/template_ids = list()
var/pod_initialized = FALSE
// Override since the parent proc has a sanity check to delete the capsule if no template is found, which doesn't exactly work with this item considering examining calls this proc.
/obj/item/device/survivalcapsule/superpose/get_template()
if(template)
return
template = SSmapping.shelter_templates[template_id]
if(!template)
template = null
/obj/item/device/survivalcapsule/superpose/attack_self()
if(!pod_initialized) // Populate list after round start as map templates might not exist when this item is created.
for(var/datum/map_template/shelter/superpose/shelter_type as anything in subtypesof(/datum/map_template/shelter))
if(!(initial(shelter_type.mappath)) || !(initial(shelter_type.superpose))) // Limits map templates to those marked for the superpose capsule.
continue
template_ids += initial(shelter_type.shelter_id)
pod_initialized = TRUE
if(!template_id)
var/answer = tgui_input_list(usr, "Which template would you like to load?","Available Templates", template_ids)
if(!answer)
return
else
src.template_id = answer
return // Return here or the pod will activate as soon as a selection is made.
// Now we call super to run the rest of the parent proc since the choice has been handled.
..()
// Allows resetting the capsule if the wrong template is chosen.
/obj/item/device/survivalcapsule/superpose/attackby(obj/item/W, mob/user)
if(istype(W, /obj/item/weapon/pen) && !used)
template_id = null
template = null // Important to reset both, otherwise the template cannot be reset once the pod has been deployed.
to_chat(user, "<span class='notice'>You reset the pod's selection.</span>")
..()

View File

@@ -0,0 +1,249 @@
/datum/map_template/shelter
var/superpose = FALSE
// Subtype to mark maps for use with the superpose capsule. This is mostly to prevent automatic additions from upstream changes.
/datum/map_template/shelter/superpose
superpose = TRUE
name = "ERROR: string 'name' cannot be null!"
description = "ERROR: string 'description' cannot be null!"
mappath = null
/datum/map_template/shelter/superpose/CrashedInfestedShip
shelter_id = "CrashedInfestedShip"
mappath = "modular_chomp/maps/submaps/shelters/CrashedInfestedShip-60x29.dmm"
name = "Crashed infested ship."
description = "A large alien ship that is heavily damaged, there is signs of xeno infestation."
/datum/map_template/shelter/superpose/CrashedQurantineShip
shelter_id = "CrashedQurantineShip"
mappath = "modular_chomp/maps/submaps/shelters/CrashedQurantineShip-25x25.dmm"
name = "Crashed Qurantine Ship."
description = "A white medical ship that is heavily damaged, there is signs of a viral outbreak."
/datum/map_template/shelter/superpose/CultShip
shelter_id = "CultShip"
mappath = "modular_chomp/maps/submaps/shelters/CultShip-28x17.dmm"
name = "Cultist ship."
description = "A medium size cult themed ship, it has some basic cultist gear."
/datum/map_template/shelter/superpose/DemonPool
shelter_id = "DemonPool"
mappath = "modular_chomp/maps/submaps/shelters/DemonPool-21x21.dmm"
name = "Demon pool."
description = "A large redspace corruption with lava, flesh tiles and a small cultist room in the middle."
/datum/map_template/shelter/superpose/Dinner
shelter_id = "Dinner"
mappath = "modular_chomp/maps/submaps/shelters/Dinner-25x25.dmm"
name = "Local diner."
description = "A medium size diner with all kitchen appliances and food."
/datum/map_template/shelter/superpose/ExplorerHome
shelter_id = "ExplorerHome"
mappath = "modular_chomp/maps/submaps/shelters/ExplorerHome-17x20.dmm"
name = "Explorer home."
description = "A small wooden home with various hunting prizes and the basics to survive in the wilderness."
/datum/map_template/shelter/superpose/Farm
shelter_id = "Farm"
mappath = "modular_chomp/maps/submaps/shelters/Farm-32x32.dmm"
name = "Farm."
description = "A medium size farm with all the needs to grow food!"
/datum/map_template/shelter/superpose/FieldLab
shelter_id = "FieldLab"
mappath = "modular_chomp/maps/submaps/shelters/FieldLab-20x20.dmm"
name = "Field laboratory."
description = "A compact laboratory with various science machines and equipment."
/datum/map_template/shelter/superpose/HellCave
shelter_id = "HellCave"
mappath = "modular_chomp/maps/submaps/shelters/HellCave-40x25.dmm"
name = "Hell cave."
description = "A small cave corrupted by redspace, filled with various cultist items."
/datum/map_template/shelter/superpose/HydroCave
shelter_id = "HydroCave"
mappath = "modular_chomp/maps/submaps/shelters/HydroCave-40x40.dmm"
name = "Hydroponics cave."
description = "A burried hydroponics facility with various living quarters needs and equipment."
/datum/map_template/shelter/superpose/LargeAlienShip
shelter_id = "LargeAlienShip"
mappath = "modular_chomp/maps/submaps/shelters/LargeAlienShip-60x29.dmm"
name = "Large alien ship."
description = "A large alien ship filled with various alien machines and items."
/datum/map_template/shelter/superpose/LoneHome
shelter_id = "LoneHome"
mappath = "modular_chomp/maps/submaps/shelters/LoneHome-20x25.dmm"
name = "Lonely home."
description = "An old very worn down wooden house, with enough materials and tools to refurnish and repair it."
/datum/map_template/shelter/superpose/MechFabShip
shelter_id = "MechFabShip"
mappath = "modular_chomp/maps/submaps/shelters/MechFabShip-27x24.dmm"
name = "Mech fabrication ship."
description = "A medium size ship equiped with mech fabrication machines."
/datum/map_template/shelter/superpose/MechStorageFab
shelter_id = "MechStorageFab"
mappath = "modular_chomp/maps/submaps/shelters/MechStorageFab-32x24.dmm"
name = "Mech storage facility."
description = "An old abandoned mech fabrication facility, most of the facility seems functional."
/datum/map_template/shelter/superpose/MercShip
shelter_id = "MercShip"
mappath = "modular_chomp/maps/submaps/shelters/MercShip-60x29.dmm"
name = "Mercenary ship."
description = "A old mercenery ship filled with various trading goods."
/datum/map_template/shelter/superpose/MethLab
shelter_id = "MethLab"
mappath = "modular_chomp/maps/submaps/shelters/MethLab-20x20.dmm"
name = "Meth laboratory."
description = "A old worn down chemical lab used to produce illegal goods."
/datum/map_template/shelter/superpose/OldHotel
shelter_id = "OldHotel"
mappath = "modular_chomp/maps/submaps/shelters/OldHotel-25x25.dmm"
name = "Old hotel."
description = "An old worn down wooden hotel, heavily damaged but with enough materials to patch it up."
/datum/map_template/shelter/superpose/ScienceShip
shelter_id = "ScienceShip"
mappath = "modular_chomp/maps/submaps/shelters/ScienceShip-25x33.dmm"
name = "Science ship."
description = "An expedition science ship with all the needs to host a small team."
/datum/map_template/shelter/superpose/SmallCombatShip
shelter_id = "SmallCombatShip"
mappath = "modular_chomp/maps/submaps/shelters/SmallCombatShip-9x11.dmm"
name = "Small combat ship."
description = "A small combat ship with the bear minimum needs for survival."
/datum/map_template/shelter/superpose/SurvivalBarracks
shelter_id = "SurvivalBarracks"
mappath = "modular_chomp/maps/submaps/shelters/SurvivalBarracks-11x11.dmm"
name = "Survival barracks."
description = "NT pantented living quarters survival pod, all the needs to host 4 crew-mates."
/datum/map_template/shelter/superpose/SurvivalCargo
shelter_id = "SurvivalCargo"
mappath = "modular_chomp/maps/submaps/shelters/SurvivalCargo-11x11.dmm"
name = "Survival cargo dep."
description = "NT pantented cargo department survival pod, loaded with mining, crates and cargo gear."
/datum/map_template/shelter/superpose/SurvivalDIY_11x11
shelter_id = "SurvivalDIY_11x11"
mappath = "modular_chomp/maps/submaps/shelters/SurvivalDIY-11x11.dmm"
name = "Survival DIY large."
description = "NT pantented Do-it-yourself survival pod, a large inflatable building filled with building materials. It even has a RCD and a cargo vehicle."
/datum/map_template/shelter/superpose/SurvivalDIY_7x7
shelter_id = "SurvivalDIY_7x7"
mappath = "modular_chomp/maps/submaps/shelters/SurvivalDIY-7x7.dmm"
name = "Survival DIY medium."
description = "NT pantented Do-it-yourself survival pod, a medium inflatable building filled with building materials. It even has a RCD and a quad-bike."
/datum/map_template/shelter/superpose/SurvivalDIY_9x9
shelter_id = "SurvivalDIY_9x9"
mappath = "modular_chomp/maps/submaps/shelters/SurvivalDIY-9x9.dmm"
name = "Survival DIY small."
description = "NT pantented Do-it-yourself survival pod, a small inflatable building filled with building materials. It even has a RCD."
/datum/map_template/shelter/superpose/SurvivalDinner
shelter_id = "SurvivalDinner"
mappath = "modular_chomp/maps/submaps/shelters/SurvivalDinner-11x11.dmm"
name = "Survival mess hall."
description = "NT pantented mess hall and kitchen survival pod, it has all a kitchen requires to cook food. Bathroom included!"
/datum/map_template/shelter/superpose/SurvivalEngineering
shelter_id = "SurvivalEngineering"
mappath = "modular_chomp/maps/submaps/shelters/SurvivalEngineering-9x9.dmm"
name = "Survival engineering dep."
description = "NT pantented engineering survival pod, loaded with tools, machines and materials to patch and fix any facility."
/datum/map_template/shelter/superpose/SurvivalHome
shelter_id = "SurvivalHome"
mappath = "modular_chomp/maps/submaps/shelters/SurvivalHome-9x9.dmm"
name = "Survival home pod."
description = "A medium survival pod that can host a small team, has some basic survival gear."
/datum/map_template/shelter/superpose/SurvivalHydro
shelter_id = "SurvivalHydro"
mappath = "modular_chomp/maps/submaps/shelters/SurvivalHydro-9x9.dmm"
name = "Survival hydroponics bay. "
description = "NT pantented hydroponics survival pod, loaded with everything you need to start growing food."
/datum/map_template/shelter/superpose/SurvivalJanitor
shelter_id = "SurvivalJanitor"
mappath = "modular_chomp/maps/submaps/shelters/SurvivalJanitor-7x7.dmm"
name = "Survival janitor pod."
description = "NT pantented janitor survival pod, loaded with enough cleaning supplies to clean any mess."
/datum/map_template/shelter/superpose/SurvivalLeisure
shelter_id = "SurvivalLeisure"
mappath = "modular_chomp/maps/submaps/shelters/SurvivalLeisure-9x9.dmm"
name = "Survival leisure pod."
description = "NT pantented leisure survival pod, loaded with various recreational goods to stave off boredom."
/datum/map_template/shelter/superpose/SurvivalLuxuryBar
shelter_id = "SurvivalLuxuryBar"
mappath = "modular_chomp/maps/submaps/shelters/SurvivalLuxuryBar-11x11.dmm"
name = "Survival luxury bar."
description = "A luxurious bar pod, includes a large selection of liquors, bathroom and even a strip room!"
/datum/map_template/shelter/superpose/SurvivalLuxuryHome
shelter_id = "SurvivalLuxuryHome"
mappath = "modular_chomp/maps/submaps/shelters/SurvivalLuxuryHome-11x11.dmm"
name = "Survival luxury home."
description = "A luxurious pod filled with various home amenities, is a home away from home!"
/datum/map_template/shelter/superpose/SurvivalMedical
shelter_id = "SurvivalMedical"
mappath = "modular_chomp/maps/submaps/shelters/SurvivalMedical-9x9.dmm"
name = "Survival medical dep."
description = "NT pantented medical survival pod, loaded with medical equipment, scanner, sleeper and a surgery table."
/datum/map_template/shelter/superpose/SurvivalPool
shelter_id = "SurvivalPool"
mappath = "modular_chomp/maps/submaps/shelters/SurvivalPool-11x11.dmm"
name = "Survival pool pod."
description = "NT pantented leisure pool survival pod, a leisure structure for crew to workout and relax."
/datum/map_template/shelter/superpose/SurvivalQuarters
shelter_id = "SurvivalQuarters"
mappath = "modular_chomp/maps/submaps/shelters/SurvivalQuarters-9x9.dmm"
name = "Survival living quarters."
description = "NT pantented survival quarters pod, loaded with survival equipment and enough beds for 4 crewmates."
/datum/map_template/shelter/superpose/SurvivalScience
shelter_id = "SurvivalScience"
mappath = "modular_chomp/maps/submaps/shelters/SurvivalScience-9x9.dmm"
name = "Survival science dep."
description = "NT pantented science survival pod, loaded with research terminals, mech fabricator, autolathe and everything to do field research."
/datum/map_template/shelter/superpose/SurvivalSecurity
shelter_id = "SurvivalSecurity"
mappath = "modular_chomp/maps/submaps/shelters/SurvivalSecurity-9x9.dmm"
name = "Survival security dep."
description = "NT pantented security survival pod, a high security brig with and some security equipment."
/datum/map_template/shelter/superpose/TinyCombatShip
shelter_id = "TinyCombatShip"
mappath = "modular_chomp/maps/submaps/shelters/TinyCombatShip-9x7.dmm"
name = "Tiny combat ship."
description = "A very small combat ship with the bare minimum of survival gear."
/datum/map_template/shelter/superpose/TradingShip
shelter_id = "TradingShip"
mappath = "modular_chomp/maps/submaps/shelters/TradingShip-40x22.dmm"
name = "Trading ship."
description = "A trading ship stocked with various goods."
/datum/map_template/shelter/superpose/WoodenCamp
shelter_id = "WoodenCamp"
mappath = "modular_chomp/maps/submaps/shelters/WoodenCamp-10x10.dmm"
name = "Wooden camp."
description = "A very small camping lodge, a quick emergency hut to stave off the planets weather."

View File

@@ -1,9 +1,10 @@
// Expand shoe layer to allow changing the icon for digi legs
// For some reason, suit and uniform already has this funcitonality, but shoes do not.
#define SHOES_LAYER_ALT 8 //Shoe-slot item (when set to be under uniform via verb)
#define SHOES_LAYER 11 //Shoe-slot item
#define VORE_BELLY_LAYER 31 //Should be the same that it is in update_icons.dm
//Duplicate defines so the code below can compile. See non-modular update_icons.dm for proper placement.
#define SHOES_LAYER_ALT 9 //Shoe-slot item (when set to be under uniform via verb)
#define SHOES_LAYER 12 //Shoe-slot item
#define VORE_BELLY_LAYER 32 //Should be the same that it is in update_icons.dm
/mob/living/carbon/human/update_inv_shoes()
//. = ..()

View File

@@ -0,0 +1,2 @@
/mob/living/simple_mob/vore/alienanimals/teppi/baby
mob_size = MOB_MEDIUM

View File

@@ -0,0 +1,148 @@
/datum/sprite_accessory/marking
var/hide_body_parts = list()
/datum/sprite_accessory/marking/ch/anthrovirus_ra
name = "Anthro Virus (Right Arm)"
icon_state = "anthrovirus"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_R_ARM,BP_R_HAND)
hide_body_parts = list(BP_R_ARM,BP_R_HAND)
/datum/sprite_accessory/marking/ch/anthrovirus_la
name = "Anthro Virus (Left Arm)"
icon_state = "anthrovirus"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_ARM,BP_L_HAND)
hide_body_parts = list(BP_L_ARM,BP_L_HAND)
/datum/sprite_accessory/marking/ch/anthrovirus_rl
name = "Anthro Virus (Right Leg)"
icon_state = "anthrovirus"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_R_LEG)
hide_body_parts = list(BP_R_LEG)
/datum/sprite_accessory/marking/ch/anthrovirus_ll
name = "Anthro Virus (Left Leg)"
icon_state = "anthrovirus"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_LEG)
hide_body_parts = list(BP_L_LEG)
/datum/sprite_accessory/marking/ch/anthrovirus_rf
name = "Anthro Virus (Right Foot)"
icon_state = "anthrovirus"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_R_FOOT)
hide_body_parts = list(BP_R_FOOT)
/datum/sprite_accessory/marking/ch/anthrovirus_lf
name = "Anthro Virus (Left Foot)"
icon_state = "anthrovirus"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_FOOT)
hide_body_parts = list(BP_L_FOOT)
/datum/sprite_accessory/marking/ch/anthrovirus_t
name = "Anthro Virus (Torso)"
icon_state = "anthrovirus"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_TORSO,BP_GROIN)
hide_body_parts = list(BP_TORSO,BP_GROIN)
/datum/sprite_accessory/marking/ch/anthrovirus_h
name = "Anthro Virus (Head)"
icon_state = "anthrovirus"
body_parts = list(BP_HEAD)
color_blend_mode = ICON_MULTIPLY
hide_body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/ch/virus_ra
name = "Bacteriophage (Right Arm)"
icon_state = "virus"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_R_ARM,BP_R_HAND)
hide_body_parts = list(BP_R_ARM,BP_R_HAND)
/datum/sprite_accessory/marking/ch/virus_la
name = "Bacteriophage (Left Arm)"
icon_state = "virus"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_ARM,BP_L_HAND)
hide_body_parts = list(BP_L_ARM,BP_L_HAND)
/datum/sprite_accessory/marking/ch/virus_rl
name = "Bacteriophage (Right Leg)"
icon_state = "virus"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_R_LEG,BP_R_FOOT)
hide_body_parts = list(BP_R_LEG,BP_R_FOOT)
/datum/sprite_accessory/marking/ch/virus_ll
name = "Bacteriophage (Left Leg)"
icon_state = "virus"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_LEG,BP_L_FOOT)
hide_body_parts = list(BP_L_LEG,BP_L_FOOT)
/datum/sprite_accessory/marking/ch/virus_t
name = "Bacteriophage (Torso)"
icon_state = "virus"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_TORSO,BP_GROIN)
hide_body_parts = list(BP_TORSO,BP_GROIN)
/datum/sprite_accessory/marking/ch/virus_g
name = "Bacteriophage (Groin)"
icon_state = "virusgroin" //this is separate so that the groin region can be hidden by the torso.
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_GROIN)
//hide_body_parts = list(BP_GROIN) this IS pretty low, even for the groin body part.
/datum/sprite_accessory/marking/ch/virus_h
name = "Bacteriophage (Head)"
icon_state = "virus"
body_parts = list(BP_HEAD)
color_blend_mode = ICON_MULTIPLY
hide_body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/ch/tyranid
name = "Tyranid Bodytype (Use with Armor)"
icon_state = "tyranid"
color_blend_mode = ICON_MULTIPLY
hide_body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO,BP_HEAD)
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO,BP_HEAD)
/datum/sprite_accessory/marking/ch/tyranid_armor
name = "Tyranid Bodytype (Armor)"
icon_state = "tyranidarmor"
color_blend_mode = ICON_MULTIPLY
hide_body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO,BP_HEAD)
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO,BP_HEAD)
/datum/sprite_accessory/marking/ch/tyranid_legs
name = "Tyranid Legs (Use with Armor)"
icon_state = "tyranid"
color_blend_mode = ICON_MULTIPLY
hide_body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG)
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_GROIN)
/datum/sprite_accessory/marking/ch/tyranid_legs_armor
name = "Tyranid Legs (Armor)"
icon_state = "tyranidarmor"
color_blend_mode = ICON_MULTIPLY
hide_body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG)
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_GROIN)
/datum/sprite_accessory/marking/ch/sect_drone
name = "Sect Drone Bodytype"
icon_state = "sectdrone"
color_blend_mode = ICON_MULTIPLY
hide_body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO,BP_HEAD)
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO,BP_HEAD)
/datum/sprite_accessory/marking/ch/sect_drone_eyes
name = "Sect Drone Eyes"
icon_state = "sectdrone_eyes"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)

View File

@@ -0,0 +1,22 @@
/datum/sprite_accessory/tail/anthrovirus_tail
name = "Anthro Virus Tail"
icon = 'icons/mob/vore/tails_ch.dmi'
icon_state = "anthrovirustail_mark"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "anthrovirustail"
/datum/sprite_accessory/tail/tyranid_tail
name = "Tyranid"
icon = 'icons/mob/vore/tails_ch.dmi'
icon_state = "tyranid"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/tail/sectdrone_tail
name = "Sect Drone Tail (To use with bodytype-marking)"
icon = 'icons/mob/vore/tails_ch.dmi'
icon_state = "sectdrone_tail"
extra_overlay = "sectdrone_tail_mark"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY

View File

@@ -4,3 +4,10 @@
/datum/sprite_accessory/tail/taur/wolf
vore_tail_sprite_variant = "N"
/datum/sprite_accessory/tail/taur/ch/longvirus
name = "Long Virus (Taur)"
icon_state = "longvirus_s"
extra_overlay = "longvirus_markings"
icon_sprite_tag = "virus"
//suit_sprites = 'icons/mob/taursuits_noodle.dmi' Aye, I've gotta sprite that shit.

View File

@@ -0,0 +1,7 @@
/datum/sprite_accessory/wing/sect_drone //We should some day make a variable to make some wings not be able to fly
name = "Sect drone wings (To use with bodytype marking)"
desc = ""
icon = 'icons/mob/vore/wings_ch.dmi'
icon_state = "sectdrone_wing"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY

View File

@@ -0,0 +1,14 @@
//new function to check for markings
/obj/item/organ/external/proc/is_hidden_by_markings()
//code that checked all limbs.
/*
for(var/obj/item/organ/external/organ in owner.organs)
for(var/M in organ.markings)
var/datum/sprite_accessory/marking/mark_style = organ.markings[M]["datum"]
if (mark_style.hide_body_parts && (organ_tag in mark_style.hide_body_parts))
return 1
*/
for(var/M in markings)
var/datum/sprite_accessory/marking/mark_style = markings[M]["datum"]
if(istype(mark_style,/datum/sprite_accessory/marking/ch) && (organ_tag in mark_style.hide_body_parts))
return 1

View File

@@ -0,0 +1,173 @@
/obj/item/organ/external/get_icon(var/skeletal)
var/digitigrade = 0
// preferentially take digitigrade value from owner if available, THEN DNA.
// this allows limbs to be set properly when being printed in the bioprinter without an owner
// this also allows the preview mannequin to update properly because customisation topic calls don't call a DNA check
if(owner)
digitigrade = owner.digitigrade
else if(dna)
digitigrade = dna.digitigrade
if( !model && ( istype(src,/obj/item/organ/external/leg) || istype(src,/obj/item/organ/external/foot) ) ) //All leg icons go through here now.
var/gender = "m"
if(owner && owner.gender == FEMALE)
gender = "f"
if(!force_icon_key)
icon_cache_key = "[icon_name]_[species ? species.get_bodytype() : SPECIES_HUMAN]" //VOREStation Edit
else
icon_cache_key = "[icon_name]_[force_icon_key]"
if(force_icon)
mob_icon = new /icon(force_icon, "[icon_name][gendered_icon ? "_[gender]" : ""]")
else
if(!dna)
mob_icon = new /icon('icons/mob/human_races/r_human.dmi', "[icon_name][gendered_icon ? "_[gender]" : ""]")
else
if(!gendered_icon)
gender = null
else
if(dna.GetUIState(DNA_UI_GENDER))
gender = "f"
else
gender = "m"
if(skeletal)
mob_icon = new /icon('icons/mob/human_races/r_skeleton.dmi', "[icon_name][gender ? "_[gender]" : ""]")
else if (robotic >= ORGAN_ROBOT)
mob_icon = new /icon('icons/mob/human_races/robotic.dmi', "[icon_name][gender ? "_[gender]" : ""]")
apply_colouration(mob_icon)
else
if(is_hidden_by_markings())
mob_icon = new /icon('icons/mob/human_races/r_blank.dmi', "[icon_name][gender ? "_[gender]" : ""]")
else
//Use digi icon if digitigrade, otherwise use regular icon. Ternary operator is based.
mob_icon = new /icon(digitigrade ? species.icodigi : species.get_icobase(owner, (status & ORGAN_MUTATED)), "[icon_name][gender ? "_[gender]" : ""]")
apply_colouration(mob_icon)
//Code here is copied from organ_icon.dm line 118 at time of writing (9/20/21), VOREStation edits are left in intentionally, because I think it's worth keeping track of the fact that the code is from Virgo's edits.
//Body markings, actually does not include head this time. Done separately above.
if(!istype(src,/obj/item/organ/external/head))
for(var/M in markings)
var/datum/sprite_accessory/marking/mark_style = markings[M]["datum"]
var/isdigitype = istype(mark_style,/datum/sprite_accessory/marking/digi)
if(!(digitigrade ^ isdigitype)) //Equivalent to XNOR; this code will only run if either both digitigrade and isdigitype are true, or if both are false.
var/icon/mark_s = new/icon("icon" = mark_style.icon, "icon_state" = "[mark_style.icon_state]-[organ_tag]")
mark_s.Blend(markings[M]["color"], mark_style.color_blend_mode) // VOREStation edit
add_overlay(mark_s) //So when it's not on your body, it has icons
mob_icon.Blend(mark_s, ICON_OVERLAY) //So when it's on your body, it has icons
icon_cache_key += "[M][markings[M]["color"]]"
if(body_hair && islist(h_col) && h_col.len >= 3)
var/cache_key = "[body_hair]-[icon_name]-[h_col[1]][h_col[2]][h_col[3]]"
if(!limb_icon_cache[cache_key])
var/icon/I = icon(species.get_icobase(owner), "[icon_name]_[body_hair]")
I.Blend(rgb(h_col[1],h_col[2],h_col[3]), ICON_MULTIPLY) //VOREStation edit
limb_icon_cache[cache_key] = I
mob_icon.Blend(limb_icon_cache[cache_key], ICON_OVERLAY)
// VOREStation edit start
if(nail_polish)
var/icon/I = new(nail_polish.icon, nail_polish.icon_state)
I.Blend(nail_polish.color, ICON_MULTIPLY)
add_overlay(I)
mob_icon.Blend(I, ICON_OVERLAY)
icon_cache_key += "_[nail_polish.icon]_[nail_polish.icon_state]_[nail_polish.color]"
// VOREStation edit end
dir = EAST
icon = mob_icon
return mob_icon
else
//. = ..()
//due to the wierd fact that this calls the old code, and defining it here makes a duplicate procedure error, i'm gonna have to bring the whole code here and modify it. if there is a more condensed way, it is appreciated.
var/gender = "m"
if(owner && owner.gender == FEMALE)
gender = "f"
if(!force_icon_key)
icon_cache_key = "[icon_name]_[species ? species.get_bodytype() : SPECIES_HUMAN]" //VOREStation Edit
else
icon_cache_key = "[icon_name]_[force_icon_key]"
if(force_icon)
mob_icon = new /icon(force_icon, "[icon_name][gendered_icon ? "_[gender]" : ""]")
else
if(!dna)
mob_icon = new /icon('icons/mob/human_races/r_human.dmi', "[icon_name][gendered_icon ? "_[gender]" : ""]")
else
if(!gendered_icon)
gender = null
else
if(dna.GetUIState(DNA_UI_GENDER))
gender = "f"
else
gender = "m"
if(skeletal)
mob_icon = new /icon('icons/mob/human_races/r_skeleton.dmi', "[icon_name][gender ? "_[gender]" : ""]")
else if (robotic >= ORGAN_ROBOT)
mob_icon = new /icon('icons/mob/human_races/robotic.dmi', "[icon_name][gender ? "_[gender]" : ""]")
apply_colouration(mob_icon)
else
if(is_hidden_by_markings())
mob_icon = new /icon('icons/mob/human_races/r_blank.dmi', "[icon_name][gender ? "_[gender]" : ""]")
else
//Use digi icon if digitigrade, otherwise use regular icon. Ternary operator is based.
mob_icon = new /icon(species.get_icobase(owner, (status & ORGAN_MUTATED)), "[icon_name][gender ? "_[gender]" : ""]")
apply_colouration(mob_icon)
//Body markings, actually does not include head this time. Done separately above.
if(!istype(src,/obj/item/organ/external/head))
for(var/M in markings)
var/datum/sprite_accessory/marking/mark_style = markings[M]["datum"]
var/icon/mark_s = new/icon("icon" = mark_style.icon, "icon_state" = "[mark_style.icon_state]-[organ_tag]")
mark_s.Blend(markings[M]["color"], mark_style.color_blend_mode) // VOREStation edit
add_overlay(mark_s) //So when it's not on your body, it has icons
mob_icon.Blend(mark_s, ICON_OVERLAY) //So when it's on your body, it has icons
icon_cache_key += "[M][markings[M]["color"]]"
if(body_hair && islist(h_col) && h_col.len >= 3)
var/cache_key = "[body_hair]-[icon_name]-[h_col[1]][h_col[2]][h_col[3]]"
if(!limb_icon_cache[cache_key])
var/icon/I = icon(species.get_icobase(owner), "[icon_name]_[body_hair]")
I.Blend(rgb(h_col[1],h_col[2],h_col[3]), ICON_MULTIPLY) //VOREStation edit
limb_icon_cache[cache_key] = I
mob_icon.Blend(limb_icon_cache[cache_key], ICON_OVERLAY)
// VOREStation edit start
if(nail_polish)
var/icon/I = new(nail_polish.icon, nail_polish.icon_state)
I.Blend(nail_polish.color, ICON_MULTIPLY)
add_overlay(I)
mob_icon.Blend(I, ICON_OVERLAY)
icon_cache_key += "_[nail_polish.icon]_[nail_polish.icon_state]_[nail_polish.color]"
// VOREStation edit end
if(model)
icon_cache_key += "_model_[model]"
apply_colouration(mob_icon)
if(owner && owner.synth_markings)
for(var/M in markings)
var/datum/sprite_accessory/marking/mark_style = markings[M]["datum"]
var/icon/mark_s = new/icon("icon" = mark_style.icon, "icon_state" = "[mark_style.icon_state]-[organ_tag]")
mark_s.Blend(markings[M]["color"], mark_style.color_blend_mode) // VOREStation edit
add_overlay(mark_s) //So when it's not on your body, it has icons
mob_icon.Blend(mark_s, ICON_OVERLAY) //So when it's on your body, it has icons
icon_cache_key += "[M][markings[M]["color"]]"
if(body_hair && islist(h_col) && h_col.len >= 3)
var/cache_key = "[body_hair]-[icon_name]-[h_col[1]][h_col[2]][h_col[3]]"
if(!limb_icon_cache[cache_key])
var/icon/I = icon(species.get_icobase(owner), "[icon_name]_[body_hair]")
I.Blend(rgb(h_col[1],h_col[2],h_col[3]), ICON_MULTIPLY) //VOREStation edit
limb_icon_cache[cache_key] = I
mob_icon.Blend(limb_icon_cache[cache_key], ICON_OVERLAY)
// VOREStation edit ends here
dir = EAST
icon = mob_icon
return mob_icon

View File

@@ -0,0 +1,399 @@
/decl/chemical_reaction/instant/drinks/minttea
name = "Mint Tea"
id = "minttea"
result = "minttea"
required_reagents = list("tea" = 5, "mint" = 1)
result_amount = 6
/decl/chemical_reaction/instant/drinks/lemontea
name = "Lemon Tea"
id = "lemontea"
result = "lemontea"
required_reagents = list("tea" = 5, "lemonjuice" = 1)
result_amount = 6
/decl/chemical_reaction/instant/drinks/limetea
name = "Lime Tea"
id = "limetea"
result = "limetea"
required_reagents = list("tea" = 5, "limejuice" = 1)
result_amount = 6
/decl/chemical_reaction/instant/drinks/orangetea
name = "Orange Tea"
id = "orangetea"
result = "orangetea"
required_reagents = list("tea" = 5, "orangejuice" = 1)
result_amount = 6
/decl/chemical_reaction/instant/drinks/berrytea
name = "Berry Tea"
id = "berrytea"
result = "berrytea"
required_reagents = list("tea" = 5, "berryjuice" = 1)
result_amount = 6
/decl/chemical_reaction/instant/drinks/cherrytea
name = "Cherry Tea"
id = "cherrytea"
result = "cherrytea"
required_reagents = list("tea" = 5, "cherryjelly" = 1)
result_amount = 6
/decl/chemical_reaction/instant/drinks/watermelontea
name = "Watermelon Tea"
id = "watermelontea"
result = "watermelontea"
required_reagents = list("tea" = 5, "watermelonjuice" = 1)
result_amount = 6
/decl/chemical_reaction/instant/tea/matcha_latte
id = "matcha_latte"
result = "matcha_latte"
required_reagents = list ("matchapowder" = 1, "milk" = 5)
result_amount = 5
/decl/chemical_reaction/instant/freshtea/green
id = "freshteagreen"
result = "freshteagreen"
required_reagents = list ("tealeavesgreen" = 1, "hotwater" = 9)
result_amount = 10
/decl/chemical_reaction/instant/instantteapowder/green
id = "instantteapowdergreen"
result = "instantteapowdergreen"
required_reagents = list ("teamush" = 10, "frostoil" = 1)
result_amount = 10
/decl/chemical_reaction/instant/instanttea/green
id = "instantteagreen"
result = "instantteagreen"
required_reagents = list ("instantteapowdergreen" = 1, "water" = 9)
result_amount = 10
/decl/chemical_reaction/instant/matcha
id = "matcha"
result = "matcha"
required_reagents = list ("matchapowder" = 1, "hotwater" = 2)
result_amount = 2
/decl/chemical_reaction/instant/drinks/spiderdrink
name = "Brimming glass of spiders"
id = "spiderdrink"
result = "spiderdrink"
required_reagents = list("spidertoxin" = 1, "clonexadone" = 5, "absinthe" = 4)
result_amount = 10
/decl/chemical_reaction/instant/drinks/bubbleteawatermelon
name = "Watermelon bubble tea"
id = "bubbleteawatermelon"
result = "bubbleteawatermelon"
required_reagents = list("gelatin" = 2, "watermelontea" = 6, "milk" = 2)
result_amount = 10
/decl/chemical_reaction/instant/drinks/bubbleteastrawberry
name = "Strawberry bubble tea"
id = "bubbleteastrawberry"
result = "bubbleteastrawberry"
required_reagents = list("gelatin" = 2, "berrytea" = 6, "milk" = 2)
result_amount = 10
/decl/chemical_reaction/instant/drinks/bubbleteacherry
name = "Cherry bubble tea"
id = "bubbleteacherry"
result = "bubbleteacherry"
required_reagents = list("gelatin" = 2, "cherrytea" = 6, "milk" = 2)
result_amount = 10
/decl/chemical_reaction/instant/drinks/bubbleteacoffee
name = "Coffee bubble tea"
id = "bubbleteacoffee"
result = "bubbleteacoffee"
required_reagents = list("gelatin" = 2, "tea" = 5, "cafe_latte" = 3)
result_amount = 10
/decl/chemical_reaction/instant/drinks/bubbleteabanana
name = "Banana bubble tea"
id = "bubbleteabanana"
result = "bubbleteabanana"
required_reagents = list("gelatin" = 2, "tea" = 5, "banana" = 1, "milk" = 2)
result_amount = 10
/decl/chemical_reaction/instant/drinks/horchata
name = "Horchata"
id = "horchata"
result = "horchata"
required_reagents = list("milk" = 1, "sugar" = 2, "rice" = 2)
result_amount = 5
/decl/chemical_reaction/instant/drinks/bluetrain
name = "Blue train"
id = "bluetrain"
result = "bluetrain"
required_reagents = list("coolant" = 2, "ethanol" = 2, "nutriment" = 1)
result_amount = 5
/decl/chemical_reaction/instant/drinks/lowpower
name = "The low power"
id = "lowpower"
result = "lowpower"
required_reagents = list("lemonade" = 1, "cream" = 1, "limejuice" = 1)
result_amount = 3
/decl/chemical_reaction/instant/drinks/jackbrew
name = "Jack's brew"
id = "jackbrew"
result = "jackbrew"
required_reagents = list("irishcoffee" = 1, "hyperzine" = 1)
result_amount = 2
/decl/chemical_reaction/instant/drinks/bookwyrm
name = "Bookwyrm's bite"
id = "bookwyrm"
result = "bookwyrm"
required_reagents = list("coldfront" = 1, "limejuice" = 1, "stoxin" = 1)
result_amount = 3
/decl/chemical_reaction/instant/drinks/highpower
name = "The high power"
id = "highpower"
result = "highpower"
required_reagents = list("lowpower" = 1, "iron" = 1, "uranium" = 1)
result_amount = 3
/decl/chemical_reaction/instant/drinks/flapper
name = "Flapper"
id = "flapper"
result = "flapper"
required_reagents = list("whiskey" = 1, "blood" = 1, "ice" = 1)
result_amount = 3
/decl/chemical_reaction/instant/toxin/oilslide
name = "Oil slide"
id = "oilslide"
result = "oilslide"
required_reagents = list("moonshine" = 1, "lube" = 1, "fuel" = 1)
result_amount = 3
/decl/chemical_reaction/instant/drinks/sitonmyface
name = "Sit on my face"
id = "sitonmyface"
result = "sitonmyface"
required_reagents = list("kahlua" = 1, "irishcream" = 1, "peanutbutter" = 1)
result_amount = 3
/decl/chemical_reaction/instant/drinks/hachi
name = "Hachi"
id = "hachi"
result = "hachi"
required_reagents = list("burbon" = 2, "sake" = 1, "lemonjuice" = 1, "mushroom" = 1) //Whoever coded this never made a mushroom reagent so this can't be created.
result_amount = 5
/decl/chemical_reaction/instant/drinks/narsour
name = "Nar'sour"
id = "narsour"
result = "narsour"
required_reagents = list("blood" = 1, "lemonjuice" = 1, "demonsblood" = 1)
mix_message = "The mixture develops a sinister glow."
reaction_sound = 'sound/effects/singlebeat.ogg'
result_amount = 3
/decl/chemical_reaction/instant/drinks/cogchamp
name = "CogChamp"
id = "cogchamp"
result = "cogchamp"
required_reagents = list("cognac" = 1, "fuel" = 1, "screwdrivercocktail" = 1)
mix_message = "You hear faint sounds of gears turning as the mixture gives off virulent plumes of steam."
reaction_sound = 'sound/machines/clockcult/steam_whoosh.ogg'
result_amount = 3
//thirteen loko possible to make now, so easier to make arachnid slammer - Jack
/decl/chemical_reaction/instant/drinks/thirteenloko
name = "Thirteen Loko"
id = "thirteenloko"
result = "thirteenloko"
required_reagents = list("beer" = 1, "tequilla" = 1, "coffee" = 1)
result_amount = 3
//Arachnid slammer reactions - Jack
/decl/chemical_reaction/instant/drinks/arachnidslammer
name = "Arachnid Slammer"
id = "arachnidslammer"
result = "arachnidslammer"
required_reagents = list("ale" = 1, "thirteenloko" = 1, "hyperzine" = 1)
mix_message = "The concortion of ale, energy drink and stimulants starts to heavily foam and fizzle, even sparkle a little."
result_amount = 3
/decl/chemical_reaction/instant/drinks/enragedarachnidslammer
name = "Enraged Arachnid Slammer"
id = "enragedarachnidslammer"
result = "enragedarachnidslammer"
required_reagents = list("infusedarachnidslammer" = 1, "spidertoxin" = 1)
mix_message = "The dormant Arachnid Slammer bubbles and fizzles loudly as it gets enraged by the spider toxin and breaks it down!"
result_amount = 5
/decl/chemical_reaction/instant/drinks/enragedarachnidslammer1
name = "Enraged Arachnid Slammer"
id = "enragedarachnidslammer"
required_reagents = list("enragedarachnidslammer" = 1, "cyanide" = 1)
result = "enragedarachnidslammer"
result_amount = 0.1
/decl/chemical_reaction/instant/drinks/enragedarachnidslammer2
name = "Enraged Arachnid Slammer"
id = "enragedarachnidslammer"
required_reagents = list("enragedarachnidslammer" = 1, "chloralhydrate" = 1)
result = "enragedarachnidslammer"
result_amount = 0.1
/decl/chemical_reaction/instant/drinks/enragedarachnidslammer3
name = "Enraged Arachnid Slammer"
id = "enragedarachnidslammer"
required_reagents = list("enragedarachnidslammer" = 1, "stimm" = 1)
result = "enragedarachnidslammer"
result_amount = 0.1
/decl/chemical_reaction/instant/drinks/enragedarachnidslammer4
name = "Enraged Arachnid Slammer"
id = "enragedarachnidslammer"
required_reagents = list("enragedarachnidslammer" = 1, "cryotoxin" = 1)
result = "enragedarachnidslammer"
result_amount = 0.1
/decl/chemical_reaction/instant/drinks/enragedarachnidslammer5
name = "Enraged Arachnid Slammer"
id = "enragedarachnidslammer"
required_reagents = list("enragedarachnidslammer" = 1, "cryptobiolin" = 1)
result = "enragedarachnidslammer"
result_amount = 0.1
/decl/chemical_reaction/instant/drinks/enragedarachnidslammer6
name = "Enraged Arachnid Slammer"
id = "enragedarachnidslammer"
required_reagents = list("enragedarachnidslammer" = 1, "stoxin" = 1)
result = "enragedarachnidslammer"
result_amount = 0.1
/decl/chemical_reaction/instant/drinks/enragedarachnidslammer7
name = "Enraged Arachnid Slammer"
id = "enragedarachnidslammer"
required_reagents = list("enragedarachnidslammer" = 1, "condensedcapsaicin_v" = 1)
result = "enragedarachnidslammer"
result_amount = 0.1
/decl/chemical_reaction/instant/drinks/enragedarachnidslammer8
name = "Enraged Arachnid Slammer"
id = "enragedarachnidslammer"
required_reagents = list("enragedarachnidslammer" = 1, "phoron" = 1)
result = "enragedarachnidslammer"
result_amount = 0.1
/decl/chemical_reaction/instant/drinks/enragedarachnidslammer9
name = "Enraged Arachnid Slammer"
id = "enragedarachnidslammer"
required_reagents = list("enragedarachnidslammer" = 1, "thermite_v" = 1)
result = "enragedarachnidslammer"
result_amount = 0.1
/decl/chemical_reaction/instant/drinks/enragedarachnidslammer10
name = "Enraged Arachnid Slammer"
id = "enragedarachnidslammer"
required_reagents = list("enragedarachnidslammer" = 1, "serotrotium_v" = 1)
result = "enragedarachnidslammer"
result_amount = 0.1
/decl/chemical_reaction/instant/drinks/pilk
name = "Pilk"
id = "pilk"
result = "pilk"
required_reagents = list("milk" = 1, "cola" = 1)
result_amount = 2
// Drinks from Horizon
/decl/chemical_reaction/instant/drinks/alliescocktail
name = "Allies Cocktail"
id = "alliescocktail"
result = "alliescocktail"
required_reagents = list("martini" = 1, "vodka" = 1)
result_amount = 2
/decl/chemical_reaction/instant/drinks/fetching_fizz
name = "Fetching Fizz"
id = "fetching_fizz"
result = "fetching_fizz"
required_reagents = list("nuka_cola" = 1, "iron" = 1)
result_amount = 3
/decl/chemical_reaction/instant/drinks/hearty_punch
name = "Hearty Punch"
id = "hearty_punch"
result = "hearty_punch"
required_reagents = list("bravebull" = 5, "syndicatebomb" = 5, "absinthe" = 5)
result_amount = 1
/decl/chemical_reaction/instant/drinks/squirt_cider
name = "Squirt Cider"
id = "squirt_cider"
result = "squirt_cider"
required_reagents = list("water" = 1, "tomatojuice" = 1, "nutriment" = 1)
result_amount = 3
/decl/chemical_reaction/instant/drinks/fringe_weaver
name = "Fringe Weaver"
id = "fringe_weaver"
result = "fringe_weaver"
required_reagents = list("ethanol" = 9, "sugar" = 1)
result_amount = 10
/decl/chemical_reaction/instant/drinks/crevice_spike
name = "Crevice Spike"
id = "crevice_spike"
result = "crevice_spike"
required_reagents = list("limejuice" = 2, "capsaicin" = 4)
result_amount = 6
/decl/chemical_reaction/instant/drinks/duplex
name = "Duplex"
id = "duplex"
result = "duplex"
required_reagents = list("cider" = 2, "applejuice" = 1, "berryjuice" = 1)
result_amount = 4
/decl/chemical_reaction/instant/drinks/mauna_loa
name = "Mauna Loa"
id = "mauna_loa"
result = "mauna_loa"
required_reagents = list("capsaicin" = 2, "kahlua" = 1, "bahama_mama" = 2)
result_amount = 5
/decl/chemical_reaction/instant/drinks/hiveminderaser
name = "Hivemind Eraser"
id = "hiveminderaser"
result = "hiveminderaser"
required_reagents = list("blackrussian" = 2, "thirteenloko" = 1, "grenadine" = 1)
result_amount = 4
/decl/chemical_reaction/instant/drinks/erikasurprise
name = "Erika Surprise"
id = "erikasurprise"
result = "erikasurprise"
required_reagents = list("ale" = 2, "limejuice" = 1, "whiskey" = 1, "banana" = 1, "ice" = 1)
result_amount = 6
//YW drinks
/decl/chemical_reaction/instant/drinks/lovepotion_yw
name = "Strawberry Love Potion"
id = "strawberrylovepotion"
result = "strawberrylovepotion"
required_reagents = list("cream" = 1, "berryjuice" = 1, "sugar" = 1)
result_amount = 3
/decl/chemical_reaction/instant/drinks/wormblood
name = "Wormblood"
id = "wormblood"
result = "wormblood"
required_reagents = list("booger" = 1, "psilocybin" = 1)
result_amount = 2

View File

@@ -0,0 +1,728 @@
////////////////////////////////////////////////
/////////DRINKS////////////////////////////////
//////////////////////////////////////////////
/datum/reagent/drink/tea/cherrytea
name = "Cherry Tea"
id = "cherrytea"
description = "A tasty mixture of cherries and tea. It's apparently good for you!"
color = "#c15962"
taste_description = "black tea with lots of cherries"
glass_name = "cherry tea"
glass_desc = "A tasty mixture of cherries and tea. It's apparently good for you!"
cup_name = "cup of cherry tea"
cup_desc = "A tasty mixture of cherries and tea. It's apparently good for you!"
/datum/reagent/drink/tea/watermelontea
name = "Watermelon Tea"
id = "watermelontea"
description = "A tasty mixture of watermelon and tea. It's apparently good for you!"
color = "#9f2c2c"
taste_description = "black tea with sweet watermelon for flavouring"
glass_name = "watermelon tea"
glass_desc = "A tasty mixture of watermelon and tea. It's apparently good for you!"
cup_name = "cup of watermelon tea"
cup_desc = "A tasty mixture of watermelon and tea. It's apparently good for you!"
/datum/reagent/drink/tea/matcha_latte //Putting this as tea to inherit tea variables. Should not have the same toxloss as matcha so it can be placed in a dispenser without breaking balance.
name = "Matcha latte"
id = "matcha_latte"
description = "A nice and tasty beverage to enjoy while studying."
taste_description = "creamy, vegetal sweetness"
color = "#b1c48c"
adj_temp = 5
glass_name = "matcha latte"
glass_desc = "A nice and refreshing beverage while you are studying."
cup_icon_state = "cup_latte"
cup_name = "cup of matcha latte"
cup_desc = "A nice and refreshing beverage while you are studying."
/datum/reagent/drink/tea/dyloteane
name = "The Anti-Irish"
id = "dyloteane"
glass_name = "Medicinal tea cup"
glass_desc = "Goes perfectly with alcohol poisoning!"
taste_description = "The sweet taste of multidepartment cooperation!"
cup_desc = "Goes perfectly with alcohol poisoning!"
cup_name = "Medicinal tea cup"
color = "#00FF00"
/datum/reagent/drink/tea/dyloteane/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_DIONA)
return
if(M.ingested)
for(var/datum/reagent/R in M.ingested.reagent_list)
if(istype(R, /datum/reagent/ethanol))
R.remove_self(removed * 3)
if(M.bloodstr)
for(var/datum/reagent/R in M.bloodstr.reagent_list)
if(istype(R, /datum/reagent/ethanol))
R.remove_self(removed * 10)
/datum/reagent/drink/tea/dyloteane/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
var/chem_effective = 1
if(alien != IS_DIONA)
M.drowsyness = max(0, M.drowsyness - 6 * removed * chem_effective)
M.hallucination = max(0, M.hallucination - 9 * removed * chem_effective)
M.adjustToxLoss(-1 * removed * chem_effective)
/datum/reagent/slimedrink
name = "Slime"
id = "slimedrink"
description = "A gooey semi-liquid produced from your fellow slimey crew members."
taste_description = "jiggly"
taste_mult = 1.3
reagent_state = LIQUID
color = "#8bdce5"
glass_name = "Slime"
glass_desc = "Slime thats safe to drink (relatively)"
/datum/reagent/drink/soda
ingest_met = REM * 5 //Makes it so soda metabolizes faster, since without this increase, the nutrients it currently gives does nothing. Also, metabolises faster then normal nutrients due to being soda.
/datum/reagent/ethanol/spiderdrink
name = "Brimming glass of spiders"
id = "spiderdrink"
description = "A fresh drink consisting of cloned spiderlings who are intoxicated by a healthy dose of absinthe."
taste_description = "TOO MANY LEGS"
color = "#526062" // rgb(82, 96, 98)
strength = 15
glass_name = "Brimming glass of spiders"
glass_desc = "A glass filled to the brim with tiny drunk spiderlings. Lets hope they dont escape."
/datum/reagent/ethanol/snaps
name = "Akvavit"
id = "snaps"
description = "Burns the nose and throat and soothes it with a herby aftertaste...Barely."
taste_description = "strong spirit and a little dill"
color = "e6d670" // rgb: 230, 214, 112
strength = 15
glass_name = "akvavit"
glass_desc = "Burns the nose and throat, and soothes it with a herby aftertaste...Barely."
/datum/reagent/ethanol/bluetrain
name = "blue train"
id = "bluetrain"
description = "A drink only a fool or a very desperate creature would consume."
taste_description = "someone who decided to pour ice cold motor oil down your throat and finish it off with a large shot of burning pure alcohol."
color = "#c8a5dc"
adj_temp = -10
targ_temp = 220
strength = 10
glass_name = "blue train"
glass_desc = "A glass of what can only be described as the bastard child between coolant and alcohol made by a madman."
/datum/reagent/drink/lowpower
name = "The low power"
id = "lowpower"
description = "Smells, and tastes like lemon.. with a hint of Ozone, for whatever reason. It glows softly."
taste_description = "creamy lemonade, with some zest"
color = "#5d8d39"
glass_name = "lowpower"
glass_desc = "Smells, and tastes like lemon.. with a hint of Ozone, for whatever reason. It glows softly."
/datum/reagent/drink/lowpower/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
..()
if(alien == IS_DIONA)
return
M.adjustToxLoss(-0.5 * removed)
/datum/reagent/drink/highpower
name = "The High power"
id = "highpower"
description = "A strange, softly crackling drink, smelling just like lightning's just struck, twice. It's rather difficult to make this without busting the lights."
taste_description = "copper, ozone, and pain"
color = "#a2f563"
glass_name = "highpower"
glass_desc = "A strange, softly crackling drink, smelling just like lightning's just struck, twice. It's rather difficult to make this without busting the lights."
/datum/reagent/drink/highpower/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_DIONA)
return
if(prob(5))
M.say("!skin's crackles with energy and seems to be in pain.")
M.custom_pain("You feel painful electricity running through your body, like adrenaline, and like your blood's boiling!",30)
M.AdjustWeakened(3) //Getting sapped makes the victim fall
M.Stun(3)
M.add_chemical_effect(CE_SPEEDBOOST, 1)
/datum/reagent/ethanol/coffee/jackbrew
name = "Rush hour"
id = "jackbrew"
description = "Irish coffee, and hyperzine. A common mix for panicked drinkers, EMTS, Paramedics, and CMOs alone on the job."
taste_description = "wishing you could give up on the day"
color = "#4C3100"
strength = 15
glass_name = "Rush hour"
glass_desc = "Irish coffee, and hyperzine. A common mix for panicked drinkers, EMTS, Paramedics, and CMOs alone on the job."
/datum/reagent/ethanol/coffee/jackbrew/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_TAJARA)
removed *= 1.25
if(alien == IS_SLIME)
M.make_jittery(4) //Hyperactive fluid pumping results in unstable 'skeleton', resulting in vibration.
if(dose >= 5)
M.nutrition = (M.nutrition - (removed * 2)) //Sadly this movement starts burning food in higher doses.
..()
if(prob(5))
M.emote(pick("twitch", "blink_r", "shiver", "weh", "weh", "weh")) // weh - Jack
M.add_chemical_effect(CE_SPEEDBOOST, 1)
/datum/reagent/ethanol/bookwyrm
name = "Bookwyrm's bite"
id = "bookwyrm"
description = "You'd probably fancy a nice nap by the fireplace after drinking this."
taste_description = "Mint, lime and a cold cozy nap"
color = "#5678c3"
strength = 20
adj_temp = -10
targ_temp = 273 //Dilluted cold front wont be the death of anyone who cant handle sipping liquid nitrogen.
glass_name = "Bookwyrm's bite"
glass_desc = "A cold lime mint drink. Dont drink to much or you might fall asleep."
/datum/reagent/ethanol/bookwyrm/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_DIONA)
return
var/threshold = 1
if(alien == IS_SKRELL)
threshold = 1.2
if(alien == IS_SLIME)
threshold = 6 //Evens to 3 due to the fact they are considered 'small' for flaps.
var/effective_dose = dose
if(issmall(M))
effective_dose *= 2
if(effective_dose < 1 * threshold)
if(effective_dose == metabolism * 2 || prob(5))
M.emote("yawn")
else if(effective_dose < 1.5 * threshold)
M.eye_blurry = max(M.eye_blurry, 10)
else if(effective_dose < 5 * threshold)
if(prob(50))
M.Weaken(2)
M.drowsyness = max(M.drowsyness, 20)
else
if(alien == IS_SLIME) //They don't have eyes, and they don't really 'sleep'. Fumble their general senses.
M.eye_blurry = max(M.eye_blurry, 30)
if(prob(20))
M.ear_deaf = max(M.ear_deaf, 4)
M.Confuse(2)
else
M.Weaken(2)
else
M.sleeping = max(M.sleeping, 20)
M.drowsyness = max(M.drowsyness, 60)
/datum/reagent/ethanol/flapper
name = "Flapper"
id = "flapper"
description = "A common drink among blood-drinkers, and those who just wanna drink. Tinnibat be damned."
taste_description = "a bloody good time"
color = "#763424"
strength = 15
glass_name = "flapper"
glass_desc = "A common drink among blood-drinkers, and those who just wanna drink. Tinnibat be damned."
/datum/reagent/toxin/oilslide
name = "Oil slide"
id = "oilslide"
description = "Tasty, if you're a synth, not so much for organics."
taste_description = "oil, slime, and fuel! Tastes also like synthetic backwash"
color = "#331a1a"
glass_name = "oilslide"
glass_desc = "Tasty, if you're a synth, not so much for organics."
/datum/reagent/ethanol/sitonmyface
name = "Sit on my face"
id = "sitonmyface"
description = "A drink made of irish coffee and nuts, mostly known for its vulgar name. Makes for a great pickup line though!"
taste_description = "creamy coffee and alcohol, and nuts"
color = "#896750"
strength = 15
glass_name = "Sit on my face"
glass_desc = "A drink made of irish coffee and nuts, mostly known for its vulgar name. Makes for a great pickup line though!"
/datum/reagent/ethanol/hachi
name = "Hachi"
id = "hachi"
description = "An unusual fusion of bourbon and sake infused with lemon juice, and mushrooms. Sweet, savory, but mostly weird."
taste_description = "sweet lemons, black pepper, and savory mushroom"
color = "#DC971D"
strength = 20
/datum/reagent/drink/freshtea
name = "Green tea"
id = "freshtea" //Not meant to be obtainable, this is to define effects for teas made from grown teas.
description = "Tasty green tea, it has antioxidants, it's good for you! Fresh means it's even healthier!"
taste_description = "green tea"
color = "#cac162"
adj_dizzy = -4
adj_drowsy = -1
adj_sleepy = -3
adj_temp = 20
glass_name = "green tea"
glass_desc = "Tasty green tea, it has antioxidants, it's good for you!"
cup_icon_state = "cup_tea"
cup_name = "cup of tea"
cup_desc = "Tasty green tea, it has antioxidants, it's good for you!"
/datum/reagent/drink/freshtea/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
..()
if(alien == IS_DIONA)
return
M.adjustToxLoss(-2 * removed) //Higher toxin removal than other tea to reflect difficulty in preparing, still worse than dylovene.
/datum/reagent/drink/freshtea/green
name = "Green tea"
id = "freshteagreen"
description = "Floral green tea, it has antioxidants, it's good for you! Fresh means it's even healthier!"
taste_description = "floral with vegetal notes and a slightly bitter aftertaste"
color = "#cac162"
glass_name = "green tea"
glass_desc = "Floral green tea, it has antioxidants, it's fresh and good for you!"
cup_icon_state = "cup_tea"
cup_name = "cup of tea"
cup_desc = "Floral green tea, it has antioxidants, it's fresh and good for you!"
/datum/reagent/drink/tealeavesgreen
name = "Green tea leaves"
id = "tealeavesgreen"
description = "Prepared green tea, just waiting for hot water."
taste_description = "overwhelmingly bitter with faint floral notes"
color = "#56761d"
glass_name = "tea leaves"
glass_desc = "Dry tea leaves in a cup. Just add hot water!"
/datum/reagent/drink/teamush
name = "Tea mush"
id = "teamush"
description = "Mashed tea leaves, a bit like grass clippings. You can't make proper tea out of this now."
taste_description = "overwhelmingly bitter plant"
color = "#7db72d"
glass_name = "blended plant"
glass_desc = "Chunky, mashed up plant of some sort. Looks kinda gross."
/datum/reagent/drink/instantteapowdergreen
name = "Instant green tea powder"
id = "instantteapowdergreen"
description = "Green tea powder missing all the goodness of green tea." //Heathen.
taste_description = "strong bitterness with a subtle chemical aftertaste"
color = "#56761d"
glass_name = "tea powder"
glass_desc = "Instant green tea powder. Just add water for imitation green tea!"
/datum/reagent/drink/instantteagreen
name = "Instant green tea"
id = "instantteagreen"
description = "Convenient green tea missing all the goodness of actual green tea." //It's not even hot.
taste_description = "bitterness with a subtle chemical aftertaste"
color = "#cac162"
glass_name = "green tea"
glass_desc = "Green tea. It smells a bit off."
cup_icon_state = "cup_tea"
cup_name = "cup of tea"
cup_desc = "Green tea. It smells a bit off."
/datum/reagent/drink/matchapowder
name = "Matcha powder"
id = "matchapowder"
description = "Finely ground green tea. This is about the highest quality matcha you can prepare without traditional methods."
taste_description = "heavy bitterness"
color = "#86a443"
glass_name = "matcha powder"
glass_desc = "Matcha powder, waiting for brewing."
/datum/reagent/drink/matcha
name = "Matcha"
id = "matcha"
description = "A form of green tea where the leaf is ground and suspended in water rather than steeped. This is considered cooking grade."
taste_description = "floral, full-bodied bitterness with a subtle, earthy sweetness"
color = "#9bc265"
adj_dizzy = -4
adj_drowsy = -1
adj_sleepy = -3
adj_temp = 20
glass_name = "matcha"
glass_desc = "Heavenly matcha. Good for body and spirit."
cup_icon_state = "cup_tea"
cup_name = "cup of matcha"
cup_desc = "Heavenly matcha. Good for body and spirit."
/datum/reagent/drink/matcha/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
..()
if(alien == IS_DIONA)
return
M.adjustToxLoss(-3 * removed) //Almost on par with dylovene despite being harder to obtain in bulk. Nerf if this causes problems.
/datum/reagent/drink/juice/gelatin
name = "Gelatin"
id = "gelatin"
description = "It doesnt taste like anything."
taste_description = "nothing"
nutrition = 0
color = "#aaabcf"
glass_name = "Gelatin"
glass_desc = "It's like flavourless slime."
/datum/reagent/drink/bubbleteawatermelon
name = "Watermelon bubble tea"
id = "bubbleteawatermelon"
description = "A tea with milk and watermelon in it and gelatin balls as well."
taste_description = "creamy tea and watermelon"
color = "#b83333"
glass_name = "watermelon bubble tea"
glass_desc = "A sweet tea with tasty little flavoured gelatin balls in it, this one is with watermelon."
/datum/reagent/drink/bubbleteastrawberry
name = "Strawberry bubble tea"
id = "bubbleteastrawberry"
description = "A tea with milk and strawberry in it and gelatin balls as well."
taste_description = "creamy tea and strawberry"
color = "#eb6c77"
glass_name = "strawberry bubble tea"
glass_desc = "A sweet tea with tasty little flavoured gelatin balls in it, this one is with strawberry."
/datum/reagent/drink/bubbleteacherry
name = "Cherry bubble tea"
id = "bubbleteacherry"
description = "A tea with milk and cherry in it and gelatin balls as well."
taste_description = "creamy tea and cherry"
color = "#801e28"
glass_name = "cherry bubble tea"
glass_desc = "A sweet tea with tasty little flavoured gelatin balls in it, this one is with cherry."
/datum/reagent/drink/bubbleteacoffee
name = "Coffee bubble tea"
id = "bubbleteacoffee"
description = "A tea with milk and coffee in it and gelatin balls as well."
taste_description = "creamy tea and coffee"
color = "#482910"
glass_name = "coffee bubble tea"
glass_desc = "A sweet tea with tasty little flavoured gelatin balls in it, this one is with coffee."
/datum/reagent/drink/bubbleteabanana
name = "Banana bubble tea"
id = "bubbleteabanana"
description = "A tea with milk and banana in it and gelatin balls as well."
taste_description = "creamy tea and banana"
color = "#c3af00"
glass_name = "banana bubble tea"
glass_desc = "A sweet tea with tasty little flavoured gelatin balls in it, this one is with banana."
/datum/reagent/drink/horchata
name = "Horchata"
id = "horchata"
description = "A sweet and cold rice milk beverage."
taste_description = "sweet rice milk and cinnamon"
color = "#ebcdc1"
adj_temp = -5
glass_name = "horchata"
glass_desc = "A sweet and cold rice milk beverage."
/datum/reagent/ethanol/snaps
name = "Akvavit"
id = "snaps"
description = "Burns the nose and throat and soothes it with a herby aftertaste...Barely."
taste_description = "strong spirit and a little dill"
color = "e6d670" // rgb: 230, 214, 112
strength = 15
glass_name = "akvavit"
glass_desc = "Burns the nose and throat, and soothes it with a herby aftertaste...Barely."
/datum/reagent/ethanol/narsour
name = "Nar'Sour"
id = "narsour"
description = "Side effects include self-mutilation and hoarding plasteel."
taste_description = "blood and runes"
color = "#7D1717"
strength = 10
glass_icon_state = "narsour"
glass_name = "Nar'Sour"
glass_desc = "A new hit cocktail inspired by THE ARM Breweries will have you shouting Fuu ma'jin in no time!"
/datum/reagent/ethanol/cogchamp
name = "CogChamp"
id = "cogchamp"
description = "Now you can fill yourself with the power of Ratvar!"
taste_description = "brass taste with a hint of oil"
color = rgb(255, 201, 49)
strength = 10
glass_icon_state = "cogchamp"
glass_name = "CogChamp"
glass_desc = "Not even Ratvar's Four Generals could withstand this! Qevax Jryy!"
//Arachnid slammer states - Jack
/datum/reagent/ethanol/arachnidslammer
name = "Arachnid Slammer"
id = "arachnidslammer"
description = "An adventurous mix of a cheap, powerful ale with an equally cheap, powerful energy drink and combat drugs. The result should have been undrikable, and yet it sure does put a spring in your step."
taste_description = "hearty barley ale, almost illegal energy drink, combat stimulants, and the urge to go mine and wrestle a spider"
color = "#594219"
strength = 30
nutriment_factor = 1
glass_name = "arachnid slammer"
glass_desc = "A freezing pint of delicious Araching Slammer, it foams constantly with the air crisp around it."
allergen_type = ALLERGEN_GRAINS //Barley is grain
/datum/reagent/ethanol/arachnidslammer/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
.=..()
M.reagents.add_reagent("infusedarachnidslammer", removed * 5)
/datum/reagent/ethanol/arachnidslammer/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
.=..()
M.reagents.add_reagent("infusedarachnidslammer", removed * 5)
/datum/reagent/infusedarachnidslammer
name = "Infused Arachnid Slammer"
id = "infusedarachnidslammer"
description = "When Arachnid Slammer is metabolized you get a concortion of chemicals that breaks down slower. While the alcohol is burned off, the new compounds seems dormant, like they're waiting for some malicious toxin.."
taste_description = "flat watered down Arachnid Slammer and a brewing tempest"
reagent_state = LIQUID
color = "#8040FF"
scannable = 1
metabolism = REM
ingest_met = REM
glass_name = "infused arachnid slammer"
glass_desc = "A pint of metabolized Arachnid Slammer. Even if its flat it still somehow foams and sparkles as well as bubbles more actively when spiders are nearby."
/datum/reagent/infusedarachnidslammer/enragedarachnidslammer
name = "Enraged Arachnid Slammer"
id = "enragedarachnidslammer"
description = "The best term to scientifically describe this concortion is that the compounds of the Arachnid Slammer are going into a raging frenzy from spider toxin. Its now functioning like a form of potent chemical-based white blood cells that aims to break down harmful compounds and repair the body."
taste_description = "cold burning liquid rage and the urge to destroy any spider you see"
glass_name = "enraged arachnid slammer"
glass_desc = "A pint of Enraged Arachnid Slammer. It bubbles and sparkles fiercly as if it was in a berserking state!"
/datum/reagent/infusedarachnidslammer/enragedarachnidslammer/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
var/chem_effective = 1 * M.species.chem_strength_heal
M.adjustOxyLoss(-1.5 * removed * chem_effective)
M.adjustToxLoss(-1.5 * removed * chem_effective)
M.heal_organ_damage(1.5 * removed, 1.5 * removed * chem_effective)
M.add_chemical_effect(CE_PAINKILLER, 80 * chem_effective)
M.add_chemical_effect(CE_SPEEDBOOST, 0)
/datum/reagent/drink/pilk
name = "Pilk"
id = "pilk"
description = "A forbidden mixture that dates back to the early days of space civilization, its creation is known to have caused at least one or two massacres."
taste_description = "heresy"
color = "#4C3100"
glass_name = "Pilk"
glass_desc = "Why would you do this to yourself?"
cup_name = "glass of Pilk"
cup_desc = "A glass of regret."
//Ported Drinks
/datum/reagent/ethanol/alliescocktail
name = "Allies Cocktail"
id = "alliescocktail"
description = "A drink made from your allies. Not as sweet as those made from your enemies."
taste_description = "bitter yet free"
color = "#60f8f8" // rgb(96, 248, 248)
strength = 45
glass_name = "Allies cocktail"
glass_desc = "A drink made from your allies."
/datum/reagent/ethanol/fetching_fizz
name = "Fetching Fizz"
id = "fetching_fizz"
description = "Cola/iron/uranium mixture resulting in a highly magnetic slurry. Mild alcohol content."
taste_description = "charged metal"
color = "#FF5B0F" // rgb(255, 91, 15)
strength = 90
glass_name = "Fetching Fizz"
glass_desc = "Induces magnetism in the imbiber. Started as a barroom prank but evolved to become popular with miners and scrappers. Metallic aftertaste."
/datum/reagent/ethanol/fetching_fizz/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
for(var/obj/item/weapon/ore/O in orange(3, M))
step_towards(O, get_turf(M))
/datum/reagent/ethanol/hearty_punch
name = "Hearty Punch"
id = "hearty_punch"
description = "Brave bull/syndicate bomb/absinthe mixture resulting in an energizing beverage. Mild alcohol content."
taste_description = "bravado in the face of disaster"
color = "#8C0000" // rgb(140, 0, 0)
strength = 90
glass_name = "Hearty Punch"
glass_desc = "Aromatic beverage served piping hot. According to folk tales it can almost wake the dead."
/datum/reagent/ethanol/hearty_punch/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
if(M.health<=0)
M.adjustBruteLoss(-3 * removed)
M.adjustFireLoss(-3 * removed)
M.adjustCloneLoss(-5 * removed)
M.adjustOxyLoss(-4 * removed)
M.adjustToxLoss(-3 * removed)
/datum/reagent/ethanol/squirt_cider
name = "Squirt Cider"
id = "squirt_cider"
description = "Fermented squirt extract with a nose of stale bread and ocean water. Whatever a squirt is."
taste_description = "stale bread with a staler aftertaste"
color = "#FF0000" // rgb(255, 0, 0)
strength = 40
glass_name = "Squirt Cider"
glass_desc = "Squirt cider will toughen you right up. Too bad about the musty aftertaste."
nutriment_factor = 2
/datum/reagent/ethanol/fringe_weaver
name = "Fringe Weaver"
id = "fringe_weaver"
description = "Bubbly, classy, and undoubtedly strong - a Glitch City classic."
taste_description = "ethylic alcohol with a hint of sugar"
color = "#FFEAC4" // rgb(255, 234, 197)
strength = 10
glass_name = "Fringe Weaver"
glass_desc = "It's a wonder it doesn't spill out of the glass."
/datum/reagent/ethanol/crevice_spike
name = "Crevice Spike"
id = "crevice_spike"
description = "Sour, bitter, and smashingly sobering."
taste_description = "a bitter SPIKE with a sour aftertaste"
color = "#5BD231" // rgb(91, 210, 49)
strength = 200
glass_name = "Crevice Spike"
glass_desc = "It'll either knock the drunkenness out of you or knock you out cold. Both, probably."
/datum/reagent/ethanol/crevice_spike/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
M.adjustBruteLoss(50 * removed)
for(var/datum/reagent/R in M.ingested.reagent_list)
if(istype(R, /datum/reagent/ethanol))
R.remove_self(50 * removed)
/datum/reagent/ethanol/duplex
name = "Duplex"
id = "duplex"
description = "An inseparable combination of two fruity drinks."
taste_description = "green apples and blue raspberries"
color = "#50e5cf" // rgb(80, 229, 207)
strength = 50
glass_name = "Duplex"
glass_desc = "To imbibe one component separately from the other is consider a great faux pas."
/datum/reagent/ethanol/mauna_loa
name = "Mauna Loa"
id = "mauna_loa"
description = "Extremely hot; not for the faint of heart!"
taste_description = "fiery, with an aftertaste of burnt flesh"
color = "#fe8308" // rgb(254, 131, 8)
strength = 50
glass_name = "Mauna Loa"
glass_desc = "Lava in a drink... mug... volcano... thing."
/datum/reagent/ethanol/mauna_loa/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
if(prob(10))
M.adjust_fire_stacks(5*removed)
M.IgniteMob()
/datum/reagent/ethanol/hiveminderaser
name = "Hivemind Eraser"
id = "hiveminderaser"
description = "A vessel of pure flavor."
taste_description = "psychic links"
color = "#FF80FC" // rgb(255, 128, 252)
strength = 50
glass_name = "Hivemind Eraser"
glass_desc = "For when even mindshields can't save you."
/datum/reagent/ethanol/erikasurprise
name = "Erika Surprise"
id = "erikasurprise"
description = "The surprise is, it's green!"
taste_description = "tartness and bananas"
color = "#2E6671" // rgb(46, 102, 113)
strength = 75
glass_name = "Erika Surprise"
glass_desc = "The surprise is, it's green!"
////////////////////////////////////////////////
/////////FOODSTUFF/////////////////////////////
//////////////////////////////////////////////
/datum/reagent/cinnamonpowder
name = "ground cinnamon"
id = "cinnamonpowder"
description = "Cinnamon, a spice made from tree bark, ground into a fine powder. Probably not a good idea to eat on its own!"
taste_description= "sweet spice with a hint of wood"
color = "#a96622"
glass_name = "ground cinnamon"
glass_desc = "A glass of ground cinnamon. Dare you take the challenge?"
//YW drinks
/datum/reagent/drink/lovepotion_yw
name = "Strawberry Love Potion"
id = "strawberrylovepotion"
description = "Creamy strawberries and sugar, simple and sweet."
taste_description = "strawberries and cream"
color = "#fc8a8a" // rgb(252, 138, 138)
glass_name = "Love Potion"
glass_desc = "Love me tender, love me sweet."
/datum/reagent/ethanol/wormblood
name = "Worm Blood"
id = "wormblood"
description = "Who had the grand idea to bottle THE BLOOD OF A WORM."
taste_description = "Wriggly cave fungus"
color = "#827A00"
strength = 30
druggy = 10
glass_name = "Worm blood"
glass_desc = "Who had the grand idea to bottle THE BLOOD OF A WORM."
glass_icon_state = "wormblood"
glass_center_of_mass = list("x"=16, "y"=8)
glass_icon_file = 'icons/obj/drinks_yw.dmi'

View File

@@ -0,0 +1,264 @@
//
// Belly Export Panel
//
/datum/vore_look/export_panel/proc/open_export_panel(mob/user)
tgui_interact(user)
/datum/vore_look/export_panel/tgui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "VorePanelExport", "Vore Export Panel")
ui.open()
ui.set_autoupdate(FALSE)
/datum/vore_look/export_panel/tgui_fallback(payload)
if(..())
return TRUE
//var/mob/living/host = usr
//host.vorebelly_printout(TRUE)
/datum/vore_look/export_panel/tgui_act(action, params)
if(..())
return TRUE
/datum/vore_look/export_panel/tgui_data(mob/user)
var/list/data = list()
var/mob/living/host = user
data["db_version"] = "0.1"
data["db_repo"] = "chompstation"
data["mob_name"] = host.real_name
for(var/belly in host.vore_organs)
if(isbelly(belly))
var/obj/belly/B = belly
var/belly_data = list()
// General Information
belly_data["name"] = B.name
belly_data["desc"] = B.desc
belly_data["absorbed_desc"] = B.absorbed_desc
belly_data["vore_verb"] = B.vore_verb
belly_data["release_verb"] = B.release_verb
// Controls
belly_data["mode"] = B.digest_mode
var/list/addons = list()
for(var/flag_name in B.mode_flag_list)
if(B.mode_flags & B.mode_flag_list[flag_name])
addons.Add(flag_name)
belly_data["addons"] = addons
belly_data["item_mode"] = B.item_digest_mode
// Messages
belly_data["struggle_messages_outside"] = list()
for(var/msg in B.struggle_messages_outside)
belly_data["struggle_messages_outside"] += msg
belly_data["struggle_messages_inside"] = list()
for(var/msg in B.struggle_messages_inside)
belly_data["struggle_messages_inside"] += msg
belly_data["absorbed_struggle_messages_outside"] = list()
for(var/msg in B.absorbed_struggle_messages_outside)
belly_data["absorbed_struggle_messages_outside"] += msg
belly_data["absorbed_struggle_messages_inside"] = list()
for(var/msg in B.absorbed_struggle_messages_inside)
belly_data["absorbed_struggle_messages_inside"] += msg
belly_data["digest_messages_owner"] = list()
for(var/msg in B.digest_messages_owner)
belly_data["digest_messages_owner"] += msg
belly_data["digest_messages_prey"] = list()
for(var/msg in B.digest_messages_prey)
belly_data["digest_messages_prey"] += msg
belly_data["absorb_messages_owner"] = list()
for(var/msg in B.absorb_messages_owner)
belly_data["absorb_messages_owner"] += msg
belly_data["absorb_messages_prey"] = list()
for(var/msg in B.absorb_messages_prey)
belly_data["absorb_messages_prey"] += msg
belly_data["unabsorb_messages_owner"] = list()
for(var/msg in B.unabsorb_messages_owner)
belly_data["unabsorb_messages_owner"] += msg
belly_data["unabsorb_messages_prey"] = list()
for(var/msg in B.unabsorb_messages_prey)
belly_data["unabsorb_messages_prey"] += msg
belly_data["examine_messages"] = list()
for(var/msg in B.examine_messages)
belly_data["examine_messages"] += msg
belly_data["examine_messages_absorbed"] = list()
for(var/msg in B.examine_messages_absorbed)
belly_data["examine_messages_absorbed"] += msg
//belly_data["emote_list"] = list()
//for(var/EL in B.emote_lists)
// for(var/msg in B.emote_lists[EL])
// msg_list += msg
//
// belly_data["emote_lists"] += list(EL, msg_list)
// I will use this first before the code above gets fixed
belly_data["emotes_digest"] = list()
for(var/msg in B.emote_lists[DM_DIGEST])
belly_data["emotes_digest"] += msg
belly_data["emotes_hold"] = list()
for(var/msg in B.emote_lists[DM_HOLD])
belly_data["emotes_hold"] += msg
belly_data["emotes_holdabsorbed"] = list()
for(var/msg in B.emote_lists[DM_HOLD_ABSORBED])
belly_data["emotes_holdabsorbed"] += msg
belly_data["emotes_absorb"] = list()
for(var/msg in B.emote_lists[DM_ABSORB])
belly_data["emotes_absorb"] += msg
belly_data["emotes_heal"] = list()
for(var/msg in B.emote_lists[DM_HEAL])
belly_data["emotes_heal"] += msg
belly_data["emotes_drain"] = list()
for(var/msg in B.emote_lists[DM_DRAIN])
belly_data["emotes_drain"] += msg
belly_data["emotes_steal"] = list()
for(var/msg in B.emote_lists[DM_SIZE_STEAL])
belly_data["emotes_steal"] += msg
belly_data["emotes_egg"] = list()
for(var/msg in B.emote_lists[DM_EGG])
belly_data["emotes_egg"] += msg
belly_data["emotes_shrink"] = list()
for(var/msg in B.emote_lists[DM_SHRINK])
belly_data["emotes_shrink"] += msg
belly_data["emotes_grow"] = list()
for(var/msg in B.emote_lists[DM_GROW])
belly_data["emotes_grow"] += msg
belly_data["emotes_unabsorb"] = list()
for(var/msg in B.emote_lists[DM_UNABSORB])
belly_data["emotes_unabsorb"] += msg
// Options
belly_data["digest_brute"] = B.digest_brute
belly_data["digest_burn"] = B.digest_burn
belly_data["digest_oxy"] = B.digest_oxy
belly_data["can_taste"] = B.can_taste
belly_data["contaminates"] = B.contaminates
belly_data["contamination_flavor"] = B.contamination_flavor
belly_data["contamination_color"] = B.contamination_color
belly_data["nutrition_percent"] = B.nutrition_percent
belly_data["bulge_size"] = B.bulge_size
belly_data["display_absorbed_examine"] = B.display_absorbed_examine
belly_data["save_digest_mode"] = B.save_digest_mode
belly_data["emote_active"] = B.emote_active
belly_data["emote_time"] = B.emote_time
belly_data["shrink_grow_size"] = B.shrink_grow_size
belly_data["vorespawn_blacklist"] = B.vorespawn_blacklist
belly_data["egg_type"] = B.egg_type
belly_data["selective_preference"] = B.selective_preference
// Sounds
belly_data["is_wet"] = B.is_wet
belly_data["wet_loop"] = B.wet_loop
belly_data["fancy_vore"] = B.fancy_vore
belly_data["vore_sound"] = B.vore_sound
belly_data["release_sound"] = B.release_sound
// Visuals
belly_data["affects_vore_sprites"] = B.affects_vore_sprites
belly_data["count_absorbed_prey_for_sprite"] = B.count_absorbed_prey_for_sprite
belly_data["resist_triggers_animation"] = B.resist_triggers_animation
belly_data["size_factor_for_sprite"] = B.size_factor_for_sprite
belly_data["belly_sprite_to_affect"] = B.belly_sprite_to_affect
// Visuals (Belly Fullscreens Preview and Coloring)
belly_data["belly_fullscreen_color"] = B.belly_fullscreen_color
// Visuals (Vore FX)
belly_data["disable_hud"] = B.disable_hud
// Interactions
belly_data["escapable"] = B.escapable
belly_data["escapechance"] = B.escapechance
belly_data["escapetime"] = B.escapetime
belly_data["transferchance"] = B.transferchance
belly_data["transferlocation"] = B.transferlocation
belly_data["transferchance_secondary"] = B.transferchance_secondary
belly_data["transferlocation_secondary"] = B.transferlocation_secondary
belly_data["absorbchance"] = B.absorbchance
belly_data["digestchance"] = B.digestchance
// Interactions (Auto-Transfer)
belly_data["autotransferchance"] = B.autotransferchance
belly_data["autotransferwait"] = B.autotransferwait
belly_data["autotransferlocation"] = B.autotransferlocation
belly_data["autotransfer_enabled"] = B.autotransfer_enabled
belly_data["autotransfer_min_amount"] = B.autotransfer_min_amount
belly_data["autotransfer_max_amount"] = B.autotransfer_max_amount
// Liquid Options
belly_data["show_liquids"] = B.show_liquids
belly_data["reagentbellymode"] = B.reagentbellymode
belly_data["reagent_chosen"] = B.reagent_chosen
belly_data["reagent_name"] = B.reagent_name
belly_data["reagent_transfer_verb"] = B.reagent_transfer_verb
belly_data["gen_time_display"] = B.gen_time_display
belly_data["custom_max_volume"] = B.custom_max_volume
belly_data["vorefootsteps_sounds"] = B.vorefootsteps_sounds
var/list/reagent_flags = list()
for(var/flag_name in B.reagent_mode_flag_list)
if(B.reagent_mode_flags & B.reagent_mode_flag_list[flag_name])
reagent_flags.Add(flag_name)
belly_data["reagent_mode_flag_list"] = reagent_flags
data["bellies"] += list(belly_data)
// Liquid Messages
belly_data["liquid_fullness1_messages"] = B.liquid_fullness1_messages
belly_data["liquid_fullness2_messages"] = B.liquid_fullness2_messages
belly_data["liquid_fullness3_messages"] = B.liquid_fullness3_messages
belly_data["liquid_fullness4_messages"] = B.liquid_fullness4_messages
belly_data["liquid_fullness5_messages"] = B.liquid_fullness5_messages
belly_data["fullness1_messages"] = list()
for(var/msg in B.fullness1_messages)
belly_data["fullness1_messages"] += msg
belly_data["fullness2_messages"] = list()
for(var/msg in B.fullness2_messages)
belly_data["fullness2_messages"] += msg
belly_data["fullness3_messages"] = list()
for(var/msg in B.fullness3_messages)
belly_data["fullness3_messages"] += msg
belly_data["fullness4_messages"] = list()
for(var/msg in B.fullness4_messages)
belly_data["fullness4_messages"] += msg
belly_data["fullness5_messages"] = list()
for(var/msg in B.fullness5_messages)
belly_data["fullness5_messages"] += msg
return data

View File

@@ -0,0 +1,49 @@
//To help streamline virology work. Would be broken if put in Xenobio so maybe perhaps don't do that.
//Or do. I'm just a dev, not your boss.
/obj/machinery/processor/monkey
name = "monkey processor"
desc = "An industrial grinder used to automate the process of monkey recycling."
description_info = "Clickdrag dead monkeys to it to insert them. It will make a new monkey cube for every monkey it processes."
/obj/item/weapon/circuitboard/processor/monkey
name = T_BOARD("monkey processor")
build_path = /obj/machinery/processor/monkey
origin_tech = list(TECH_DATA = 2, TECH_BIO = 2)
/obj/machinery/processor/monkey/begin_processing()
if(processing)
return // Already doing it.
processing = TRUE
playsound(src, 'sound/machines/juicer.ogg', 50, 1)
for(var/atom/movable/AM in to_be_processed)
extract(AM)
sleep(1 SECONDS)
while(monkeys_recycled >= 1)
new /obj/item/weapon/reagent_containers/food/snacks/monkeycube(get_turf(src))
playsound(src, 'sound/effects/splat.ogg', 50, 1)
monkeys_recycled -= 1
sleep(1 SECOND)
processing = FALSE
playsound(src, 'sound/machines/ding.ogg', 50, 1)
/obj/machinery/processor/monkey/extract(var/atom/movable/AM)
if(istype(AM, /mob/living/carbon/human))
var/mob/living/carbon/human/M = AM
playsound(src, 'sound/effects/splat.ogg', 50, 1)
to_be_processed.Remove(M)
qdel(M)
monkeys_recycled++
sleep(1 SECOND)
/obj/machinery/processor/monkey/can_insert(var/atom/movable/AM)
if(istype(AM, /mob/living/carbon/human))
var/mob/living/carbon/human/H = AM
if(!istype(H.species, /datum/species/monkey))
return FALSE
if(H.stat != DEAD)
return FALSE
return TRUE
return FALSE