mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 02:09:41 +00:00
Makes Xenobio Great Again
This commit is contained in:
@@ -590,3 +590,252 @@ var/global/list/remainless_species = list(SPECIES_PROMETHEAN,
|
||||
|
||||
var/global/list/weavable_structures = list()
|
||||
var/global/list/weavable_items = list()
|
||||
|
||||
|
||||
var/global/list/xenobio_metal_materials_normal = list(
|
||||
/obj/item/stack/material/steel = 20,
|
||||
/obj/item/stack/material/glass = 15,
|
||||
/obj/item/stack/material/plastic = 12,
|
||||
/obj/item/stack/material/wood = 12,
|
||||
/obj/item/stack/material/cardboard = 6,
|
||||
/obj/item/stack/material/sandstone = 5,
|
||||
/obj/item/stack/material/log = 5,
|
||||
/obj/item/stack/material/lead = 5,
|
||||
/obj/item/stack/material/iron = 5,
|
||||
/obj/item/stack/material/graphite = 5,
|
||||
/obj/item/stack/material/copper = 4,
|
||||
/obj/item/stack/material/tin = 4,
|
||||
/obj/item/stack/material/bronze = 4,
|
||||
/obj/item/stack/material/aluminium = 4)
|
||||
|
||||
var/global/list/xenobio_metal_materials_adv = list(
|
||||
/obj/item/stack/material/glass/reinforced = 15,
|
||||
/obj/item/stack/material/marble = 10,
|
||||
/obj/item/stack/material/plasteel = 10,
|
||||
/obj/item/stack/material/glass/phoronglass = 10,
|
||||
/obj/item/stack/material/wood/sif = 5,
|
||||
/obj/item/stack/material/wood/hard = 5,
|
||||
/obj/item/stack/material/log/sif = 5,
|
||||
/obj/item/stack/material/log/hard = 5,
|
||||
/obj/item/stack/material/glass/phoronrglass = 5,
|
||||
/obj/item/stack/material/glass/titanium = 3,
|
||||
/obj/item/stack/material/glass/plastitanium = 3,
|
||||
/obj/item/stack/material/durasteel = 2,
|
||||
/obj/item/stack/material/painite = 1,
|
||||
/obj/item/stack/material/void_opal = 1,
|
||||
/obj/item/stack/material/quartz = 1)
|
||||
|
||||
var/global/list/xenobio_metal_materials_weird = list(
|
||||
/obj/item/stack/material/cloth = 10,
|
||||
/obj/item/stack/material/leather = 5,
|
||||
/obj/item/stack/material/fiber = 5,
|
||||
/obj/item/stack/material/fur/wool = 7,
|
||||
/obj/item/stack/material/snow = 3,
|
||||
/obj/item/stack/material/snowbrick = 3,
|
||||
/obj/item/stack/material/flint = 3,
|
||||
/obj/item/stack/material/stick = 3,
|
||||
/obj/item/stack/material/chitin = 1)
|
||||
|
||||
var/global/list/xenobio_silver_materials_basic = list(
|
||||
/obj/item/stack/material/silver = 10,
|
||||
/obj/item/stack/material/uranium = 8,
|
||||
/obj/item/stack/material/gold = 6,
|
||||
/obj/item/stack/material/titanium = 4,
|
||||
/obj/item/stack/material/phoron = 1)
|
||||
|
||||
var/global/list/xenobio_silver_materials_adv = list(
|
||||
/obj/item/stack/material/deuterium = 5,
|
||||
/obj/item/stack/material/tritium = 5,
|
||||
/obj/item/stack/material/osmium = 5,
|
||||
/obj/item/stack/material/mhydrogen = 3,
|
||||
/obj/item/stack/material/diamond = 2,
|
||||
/obj/item/stack/material/verdantium = 1)
|
||||
|
||||
var/global/list/xenobio_silver_materials_special = list(
|
||||
/obj/item/stack/material/valhollide = 1,
|
||||
/obj/item/stack/material/morphium = 1,
|
||||
/obj/item/stack/material/supermatter = 1)
|
||||
|
||||
var/global/list/xenobio_gold_mobs_hostile = list(
|
||||
/mob/living/simple_mob/vore/alienanimals/space_jellyfish,
|
||||
/mob/living/simple_mob/vore/alienanimals/skeleton,
|
||||
/mob/living/simple_mob/vore/alienanimals/space_ghost,
|
||||
/mob/living/simple_mob/vore/alienanimals/startreader,
|
||||
/mob/living/simple_mob/animal/passive/mouse/operative,
|
||||
/mob/living/simple_mob/animal/giant_spider,
|
||||
/mob/living/simple_mob/animal/giant_spider/frost,
|
||||
/mob/living/simple_mob/animal/giant_spider/electric,
|
||||
/mob/living/simple_mob/animal/giant_spider/hunter,
|
||||
/mob/living/simple_mob/animal/giant_spider/lurker,
|
||||
/mob/living/simple_mob/animal/giant_spider/pepper,
|
||||
/mob/living/simple_mob/animal/giant_spider/thermic,
|
||||
/mob/living/simple_mob/animal/giant_spider/tunneler,
|
||||
/mob/living/simple_mob/animal/giant_spider/webslinger,
|
||||
/mob/living/simple_mob/animal/giant_spider/phorogenic,
|
||||
/mob/living/simple_mob/animal/giant_spider/carrier,
|
||||
/mob/living/simple_mob/animal/giant_spider/nurse,
|
||||
/mob/living/simple_mob/animal/giant_spider/ion,
|
||||
/mob/living/simple_mob/animal/giant_spider/nurse/queen,
|
||||
/mob/living/simple_mob/animal/sif/diyaab,
|
||||
/mob/living/simple_mob/animal/sif/duck,
|
||||
/mob/living/simple_mob/animal/sif/frostfly,
|
||||
/mob/living/simple_mob/animal/sif/glitterfly,
|
||||
/mob/living/simple_mob/animal/sif/hooligan_crab,
|
||||
/mob/living/simple_mob/animal/sif/kururak,
|
||||
/mob/living/simple_mob/animal/sif/leech,
|
||||
/mob/living/simple_mob/animal/sif/tymisian,
|
||||
/mob/living/simple_mob/animal/sif/sakimm,
|
||||
/mob/living/simple_mob/animal/sif/savik,
|
||||
/mob/living/simple_mob/animal/sif/shantak,
|
||||
/mob/living/simple_mob/animal/sif/siffet,
|
||||
/mob/living/simple_mob/animal/space/alien,
|
||||
/mob/living/simple_mob/animal/space/alien/drone,
|
||||
/mob/living/simple_mob/animal/space/alien/sentinel,
|
||||
/mob/living/simple_mob/animal/space/alien/sentinel/praetorian,
|
||||
/mob/living/simple_mob/animal/space/alien/queen,
|
||||
/mob/living/simple_mob/animal/space/alien/queen/empress,
|
||||
/mob/living/simple_mob/animal/space/alien/queen/empress/mother,
|
||||
/mob/living/simple_mob/animal/space/bats,
|
||||
/mob/living/simple_mob/animal/space/bear,
|
||||
/mob/living/simple_mob/animal/space/carp,
|
||||
/mob/living/simple_mob/animal/space/carp/large,
|
||||
/mob/living/simple_mob/animal/space/carp/large/huge,
|
||||
/mob/living/simple_mob/animal/space/goose,
|
||||
/mob/living/simple_mob/creature,
|
||||
/mob/living/simple_mob/faithless,
|
||||
/mob/living/simple_mob/tomato,
|
||||
/mob/living/simple_mob/animal/space/tree,
|
||||
/mob/living/simple_mob/vore/aggressive/corrupthound,
|
||||
/mob/living/simple_mob/vore/aggressive/corrupthound/prettyboi,
|
||||
/mob/living/simple_mob/vore/aggressive/deathclaw,
|
||||
/mob/living/simple_mob/vore/aggressive/dino,
|
||||
/mob/living/simple_mob/vore/aggressive/dragon,
|
||||
/mob/living/simple_mob/vore/aggressive/frog,
|
||||
/mob/living/simple_mob/otie,
|
||||
/mob/living/simple_mob/otie/red,
|
||||
/mob/living/simple_mob/vore/aggressive/panther,
|
||||
/mob/living/simple_mob/vore/aggressive/rat,
|
||||
/mob/living/simple_mob/vore/aggressive/giant_snake,
|
||||
/mob/living/simple_mob/vore/sect_drone,
|
||||
/mob/living/simple_mob/vore/sect_queen,
|
||||
/mob/living/simple_mob/vore/weretiger,
|
||||
/mob/living/simple_mob/animal/wolf,
|
||||
/mob/living/simple_mob/vore/xeno_defanged)
|
||||
|
||||
var/global/list/xenobio_gold_mobs_bosses = list(
|
||||
/mob/living/simple_mob/animal/giant_spider/broodmother,
|
||||
/mob/living/simple_mob/vore/leopardmander,
|
||||
/mob/living/simple_mob/vore/leopardmander/blue,
|
||||
/mob/living/simple_mob/vore/leopardmander/exotic,
|
||||
/mob/living/simple_mob/vore/greatwolf,
|
||||
/mob/living/simple_mob/vore/greatwolf/black,
|
||||
/mob/living/simple_mob/vore/greatwolf/grey,
|
||||
/mob/living/simple_mob/vore/bigdragon)
|
||||
|
||||
var/global/list/xenobio_gold_mobs_safe = list(
|
||||
/mob/living/simple_mob/vore/alienanimals/dustjumper,
|
||||
/mob/living/simple_mob/vore/alienanimals/teppi,
|
||||
/mob/living/simple_mob/animal/passive/chicken,
|
||||
/mob/living/simple_mob/animal/passive/cow,
|
||||
/mob/living/simple_mob/animal/goat,
|
||||
/mob/living/simple_mob/animal/passive/crab,
|
||||
/mob/living/simple_mob/animal/passive/mouse/jerboa,
|
||||
/mob/living/simple_mob/animal/passive/lizard,
|
||||
/mob/living/simple_mob/animal/passive/lizard/large,
|
||||
/mob/living/simple_mob/animal/passive/yithian,
|
||||
/mob/living/simple_mob/animal/passive/tindalos,
|
||||
/mob/living/simple_mob/animal/passive/mouse,
|
||||
/mob/living/simple_mob/animal/passive/penguin,
|
||||
/mob/living/simple_mob/animal/passive/opossum,
|
||||
/mob/living/simple_mob/animal/passive/cat,
|
||||
/mob/living/simple_mob/animal/passive/dog/corgi,
|
||||
/mob/living/simple_mob/animal/passive/dog/void_puppy,
|
||||
/mob/living/simple_mob/animal/passive/dog/bullterrier,
|
||||
/mob/living/simple_mob/animal/passive/dog/tamaskan,
|
||||
/mob/living/simple_mob/animal/passive/dog/brittany,
|
||||
/mob/living/simple_mob/animal/passive/fox,
|
||||
/mob/living/simple_mob/animal/passive/fox/syndicate,
|
||||
/mob/living/simple_mob/animal/passive/hare,
|
||||
/mob/living/simple_mob/animal/passive/pillbug,
|
||||
/mob/living/simple_mob/animal/passive/gaslamp,
|
||||
/mob/living/simple_mob/animal/passive/snake,
|
||||
/mob/living/simple_mob/animal/passive/snake/red,
|
||||
/mob/living/simple_mob/animal/passive/snake/python,
|
||||
/mob/living/simple_mob/vore/bee,
|
||||
/mob/living/simple_mob/vore/fennec,
|
||||
/mob/living/simple_mob/vore/fennix,
|
||||
/mob/living/simple_mob/vore/hippo,
|
||||
/mob/living/simple_mob/vore/horse,
|
||||
/mob/living/simple_mob/animal/space/jelly,
|
||||
/mob/living/simple_mob/vore/oregrub,
|
||||
/mob/living/simple_mob/vore/oregrub/lava,
|
||||
/mob/living/simple_mob/vore/rabbit,
|
||||
/mob/living/simple_mob/vore/redpanda,
|
||||
/mob/living/simple_mob/vore/sheep,
|
||||
/mob/living/simple_mob/vore/solargrub)
|
||||
|
||||
var/global/list/xenobio_gold_mobs_birds = list(/mob/living/simple_mob/animal/passive/bird/black_bird,
|
||||
/mob/living/simple_mob/animal/passive/bird/azure_tit,
|
||||
/mob/living/simple_mob/animal/passive/bird/european_robin,
|
||||
/mob/living/simple_mob/animal/passive/bird/goldcrest,
|
||||
/mob/living/simple_mob/animal/passive/bird/ringneck_dove,
|
||||
/mob/living/simple_mob/animal/passive/bird/parrot,
|
||||
/mob/living/simple_mob/animal/passive/bird/parrot/kea,
|
||||
/mob/living/simple_mob/animal/passive/bird/parrot/eclectus,
|
||||
/mob/living/simple_mob/animal/passive/bird/parrot/grey_parrot,
|
||||
/mob/living/simple_mob/animal/passive/bird/parrot/black_headed_caique,
|
||||
/mob/living/simple_mob/animal/passive/bird/parrot/white_caique,
|
||||
/mob/living/simple_mob/animal/passive/bird/parrot/budgerigar,
|
||||
/mob/living/simple_mob/animal/passive/bird/parrot/budgerigar/blue,
|
||||
/mob/living/simple_mob/animal/passive/bird/parrot/budgerigar/bluegreen,
|
||||
/mob/living/simple_mob/animal/passive/bird/parrot/cockatiel,
|
||||
/mob/living/simple_mob/animal/passive/bird/parrot/cockatiel/white,
|
||||
/mob/living/simple_mob/animal/passive/bird/parrot/cockatiel/yellowish,
|
||||
/mob/living/simple_mob/animal/passive/bird/parrot/cockatiel/grey,
|
||||
/mob/living/simple_mob/animal/passive/bird/parrot/sulphur_cockatoo,
|
||||
/mob/living/simple_mob/animal/passive/bird/parrot/white_cockatoo,
|
||||
/mob/living/simple_mob/animal/passive/bird/parrot/pink_cockatoo) //There's too dang many
|
||||
|
||||
var/global/list/xenobio_cerulean_potions = list(
|
||||
/obj/item/slimepotion/enhancer,
|
||||
/obj/item/slimepotion/stabilizer,
|
||||
/obj/item/slimepotion/mutator,
|
||||
/obj/item/slimepotion/docility,
|
||||
/obj/item/slimepotion/steroid,
|
||||
/obj/item/slimepotion/unity,
|
||||
/obj/item/slimepotion/loyalty,
|
||||
/obj/item/slimepotion/friendship,
|
||||
/obj/item/slimepotion/feeding,
|
||||
/obj/item/slimepotion/infertility,
|
||||
/obj/item/slimepotion/fertility,
|
||||
/obj/item/slimepotion/shrink,
|
||||
/obj/item/slimepotion/death,
|
||||
/obj/item/slimepotion/ferality,
|
||||
/obj/item/slimepotion/reinvigoration,
|
||||
/obj/item/slimepotion/mimic,
|
||||
/obj/item/slimepotion/sapience,
|
||||
/obj/item/slimepotion/obedience)
|
||||
|
||||
var/global/list/xenobio_rainbow_extracts = list(
|
||||
/obj/item/slime_extract/grey = 2,
|
||||
/obj/item/slime_extract/metal = 3,
|
||||
/obj/item/slime_extract/blue = 3,
|
||||
/obj/item/slime_extract/purple = 1,
|
||||
/obj/item/slime_extract/orange = 3,
|
||||
/obj/item/slime_extract/yellow = 3,
|
||||
/obj/item/slime_extract/gold = 3,
|
||||
/obj/item/slime_extract/silver = 3,
|
||||
/obj/item/slime_extract/dark_purple = 2,
|
||||
/obj/item/slime_extract/dark_blue = 3,
|
||||
/obj/item/slime_extract/red = 3,
|
||||
/obj/item/slime_extract/green = 3,
|
||||
/obj/item/slime_extract/pink = 3,
|
||||
/obj/item/slime_extract/oil = 3,
|
||||
/obj/item/slime_extract/bluespace = 3,
|
||||
/obj/item/slime_extract/cerulean = 1,
|
||||
/obj/item/slime_extract/amber = 3,
|
||||
/obj/item/slime_extract/sapphire = 3,
|
||||
/obj/item/slime_extract/ruby = 3,
|
||||
/obj/item/slime_extract/emerald = 3,
|
||||
/obj/item/slime_extract/light_pink = 1,
|
||||
/obj/item/slime_extract/rainbow = 1)
|
||||
@@ -486,30 +486,3 @@
|
||||
light_range = 8
|
||||
light_power = 0.1
|
||||
light_color = "#49F37C"
|
||||
|
||||
/*
|
||||
* Slime Extract
|
||||
*/
|
||||
|
||||
/obj/item/device/flashlight/slime
|
||||
gender = PLURAL
|
||||
name = "glowing slime extract"
|
||||
desc = "A slimy ball that appears to be glowing from bioluminesence."
|
||||
icon = 'icons/obj/lighting.dmi'
|
||||
icon_state = "floor1" //not a slime extract sprite but... something close enough!
|
||||
item_state = "slime"
|
||||
light_color = "#FFF423"
|
||||
w_class = ITEMSIZE_TINY
|
||||
light_range = 6
|
||||
on = 1 //Bio-luminesence has one setting, on.
|
||||
power_use = 0
|
||||
|
||||
/obj/item/device/flashlight/slime/New()
|
||||
..()
|
||||
set_light(light_range, light_power, light_color)
|
||||
|
||||
/obj/item/device/flashlight/slime/update_brightness()
|
||||
return
|
||||
|
||||
/obj/item/device/flashlight/slime/attack_self(mob/user)
|
||||
return //Bio-luminescence does not toggle.
|
||||
|
||||
@@ -76,6 +76,10 @@
|
||||
if(amount > 0)
|
||||
if(rabid)
|
||||
return
|
||||
if(my_slime.untamable)
|
||||
holder.say("Grrr...")
|
||||
holder.add_modifier(/datum/modifier/berserk, 30 SECONDS)
|
||||
enrage()
|
||||
var/justified = my_slime.is_justified_to_discipline() // This will also consider the AI-side of that proc.
|
||||
remove_target() // Stop attacking.
|
||||
|
||||
@@ -95,13 +99,6 @@
|
||||
discipline = between(0, discipline + amount, 10)
|
||||
my_slime.update_mood()
|
||||
|
||||
// This slime always enrages if disciplined.
|
||||
/datum/ai_holder/simple_mob/xenobio_slime/red/adjust_discipline(amount, silent)
|
||||
if(amount > 0 && !rabid)
|
||||
holder.say("Grrr...")
|
||||
holder.add_modifier(/datum/modifier/berserk, 30 SECONDS)
|
||||
enrage()
|
||||
|
||||
/datum/ai_holder/simple_mob/xenobio_slime/handle_special_strategical()
|
||||
discipline_decay()
|
||||
|
||||
@@ -145,6 +142,16 @@
|
||||
my_slime.update_mood()
|
||||
my_slime.visible_message(span("danger", "\The [my_slime] enrages!"))
|
||||
|
||||
// Called to relax from being rabid (when blue slime core was used).
|
||||
/datum/ai_holder/simple_mob/xenobio_slime/proc/relax()
|
||||
var/mob/living/simple_mob/slime/xenobio/my_slime = holder
|
||||
if(my_slime.harmless)
|
||||
return
|
||||
if(rabid)
|
||||
rabid = FALSE
|
||||
my_slime.update_mood()
|
||||
my_slime.visible_message(span("danger", "\The [my_slime] calms down."))
|
||||
|
||||
// Called when using a pacification agent (or it's Kendrick being initalized).
|
||||
/datum/ai_holder/simple_mob/xenobio_slime/proc/pacify()
|
||||
remove_target() // So it stops trying to kill them.
|
||||
|
||||
@@ -491,6 +491,7 @@
|
||||
slime_color = "red"
|
||||
coretype = /obj/item/slime_extract/red
|
||||
movement_cooldown = 0 // See above.
|
||||
untamable = TRUE // Will enrage if disciplined.
|
||||
|
||||
description_info = "This slime is faster than the others. Attempting to discipline this slime will always cause it to go rabid and berserk."
|
||||
|
||||
@@ -501,7 +502,7 @@
|
||||
/mob/living/simple_mob/slime/xenobio/orange
|
||||
)
|
||||
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/xenobio_slime/red // Will enrage if disciplined.
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/xenobio_slime
|
||||
|
||||
|
||||
/mob/living/simple_mob/slime/xenobio/green
|
||||
|
||||
@@ -10,7 +10,14 @@
|
||||
var/power_charge = 0 // Disarm attacks can shock someone if high/lucky enough.
|
||||
var/mob/living/victim = null // the person the slime is currently feeding on
|
||||
var/rainbow_core_candidate = TRUE // If false, rainbow cores cannot make this type randomly.
|
||||
<<<<<<< HEAD
|
||||
var/mutation_chance = 30 // CHOMPedit Odds of spawning as a new color when reproducing. Can be modified by certain xenobio products. Carried across generations of slimes.
|
||||
=======
|
||||
var/mutation_chance = 25 // Odds of spawning as a new color when reproducing. Can be modified by certain xenobio products. Carried across generations of slimes.
|
||||
var/split_amount = 4 // Amount of children we will normally have. Half of that for dead adult slimes. Is NOT carried across generations.
|
||||
var/untamable = FALSE //Makes slime untamable via discipline.
|
||||
var/untamable_inheirit = FALSE //Makes slime inheirit its untamability.
|
||||
>>>>>>> ed28fbac1a... Merge pull request #12552 from Heroman3003/xenobio-rework
|
||||
var/list/slime_mutation = list(
|
||||
/mob/living/simple_mob/slime/xenobio/orange,
|
||||
/mob/living/simple_mob/slime/xenobio/metal,
|
||||
@@ -54,7 +61,6 @@
|
||||
AI.resentment = max(previous_AI.resentment - 1, 0)
|
||||
AI.rabid = previous_AI.rabid
|
||||
|
||||
|
||||
/mob/living/simple_mob/slime/xenobio/update_icon()
|
||||
icon_living = "[icon_state_override ? "[icon_state_override] slime" : "slime"] [is_adult ? "adult" : "baby"][victim ? " eating" : ""]"
|
||||
icon_dead = "[icon_state_override ? "[icon_state_override] slime" : "slime"] [is_adult ? "adult" : "baby"] dead"
|
||||
@@ -107,6 +113,21 @@
|
||||
update_icon()
|
||||
update_name()
|
||||
|
||||
/mob/living/simple_mob/slime/xenobio/proc/make_baby()
|
||||
if(!is_adult)
|
||||
return
|
||||
|
||||
is_adult = FALSE
|
||||
melee_damage_lower = round(melee_damage_lower / 2) // 20
|
||||
melee_damage_upper = round(melee_damage_upper / 2) // 30
|
||||
maxHealth = initial(maxHealth)
|
||||
health = clamp(health, 0, maxHealth)
|
||||
max_nutrition = initial(max_nutrition)
|
||||
nutrition = 400
|
||||
amount_grown = 0
|
||||
update_icon()
|
||||
update_name()
|
||||
|
||||
/mob/living/simple_mob/slime/xenobio/proc/update_name()
|
||||
if(harmless) // Docile slimes are generally named, so we shouldn't mess with it.
|
||||
return
|
||||
@@ -142,6 +163,13 @@
|
||||
var/datum/ai_holder/simple_mob/xenobio_slime/AI = ai_holder
|
||||
AI.enrage()
|
||||
|
||||
/mob/living/simple_mob/slime/xenobio/proc/relax()
|
||||
if(harmless)
|
||||
return
|
||||
if(has_AI())
|
||||
var/datum/ai_holder/simple_mob/xenobio_slime/AI = ai_holder
|
||||
AI.relax()
|
||||
|
||||
/mob/living/simple_mob/slime/xenobio/proc/pacify()
|
||||
harmless = TRUE
|
||||
if(has_AI())
|
||||
@@ -208,12 +236,12 @@
|
||||
if(free)
|
||||
free_tiles++
|
||||
|
||||
if(free_tiles < 3) // Three free tiles are needed, as four slimes are made and the 4th tile is from the center tile that the current slime occupies.
|
||||
if(free_tiles < split_amount-1) // Three free tiles are needed, as four slimes are made and the 4th tile is from the center tile that the current slime occupies.
|
||||
to_chat(src, span("warning", "It is too cramped here to reproduce..."))
|
||||
return
|
||||
|
||||
var/list/babies = list()
|
||||
for(var/i = 1 to 4)
|
||||
for(var/i = 1 to split_amount)
|
||||
babies.Add(make_new_slime())
|
||||
|
||||
var/mob/living/simple_mob/slime/new_slime = pick(babies)
|
||||
@@ -245,6 +273,9 @@
|
||||
|
||||
if(!istype(baby, /mob/living/simple_mob/slime/xenobio/rainbow))
|
||||
baby.unity = unity
|
||||
if(untamable_inheirit)
|
||||
baby.untamable = untamable
|
||||
baby.untamable_inheirit = untamable_inheirit
|
||||
baby.faction = faction
|
||||
baby.friends = friends.Copy()
|
||||
|
||||
|
||||
@@ -204,9 +204,15 @@
|
||||
required_reagents = list("plantcolony" = 5, "virusfood" = 5)
|
||||
result_amount = 60
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
/// Upstream Adjustments
|
||||
/decl/chemical_reaction/instant/biomass
|
||||
result_amount = 6 // Roughly 120u per phoron sheet
|
||||
|
||||
///////////////////////////////
|
||||
//SLIME CORES BELOW HERE///////
|
||||
//SLIME-RELATED BELOW HERE///////
|
||||
///////////////////////////////
|
||||
<<<<<<< HEAD
|
||||
/decl/chemical_reaction/instant/slime_food
|
||||
name = "Slime Bork"
|
||||
id = "m_tele2"
|
||||
@@ -343,11 +349,14 @@
|
||||
target_tile.assume_gas("phoron", 25, 1400)
|
||||
spawn (0) target_tile.hotspot_expose(700, 400)
|
||||
|
||||
=======
|
||||
>>>>>>> ed28fbac1a... Merge pull request #12552 from Heroman3003/xenobio-rework
|
||||
/decl/chemical_reaction/instant/slimeify
|
||||
name = "Advanced Mutation Toxin"
|
||||
id = "advmutationtoxin2"
|
||||
result = "advmutationtoxin"
|
||||
required_reagents = list("phoron" = 15, "slimejelly" = 15, "mutationtoxin" = 15) //In case a xenobiologist wants to become a fully fledged slime person.
|
||||
<<<<<<< HEAD
|
||||
result_amount = 1
|
||||
|
||||
/decl/chemical_reaction/instant/slimeheal //A slime healing mixture. Why not.
|
||||
@@ -443,3 +452,6 @@
|
||||
|
||||
/decl/chemical_reaction/instant/biomass
|
||||
result_amount = 6 // Roughly 120u per phoron sheet
|
||||
=======
|
||||
result_amount = 1
|
||||
>>>>>>> ed28fbac1a... Merge pull request #12552 from Heroman3003/xenobio-rework
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//VOREStation Note - we use different xenobio balance in extracts_vr, keep this unticked.
|
||||
|
||||
// Base
|
||||
/obj/item/slime_extract
|
||||
name = "slime extract"
|
||||
|
||||
1661
code/modules/xenobio/items/extracts_vr.dm
Normal file
1661
code/modules/xenobio/items/extracts_vr.dm
Normal file
File diff suppressed because it is too large
Load Diff
@@ -67,7 +67,6 @@
|
||||
qdel(src)
|
||||
|
||||
|
||||
|
||||
// More or less functionally identical to the telecrystal tele.
|
||||
/obj/item/slime_crystal
|
||||
name = "lesser slime cystal"
|
||||
@@ -101,6 +100,7 @@
|
||||
safe_blink(AM, 14)
|
||||
qdel(src)
|
||||
|
||||
|
||||
/obj/item/weapon/disposable_teleporter/slime
|
||||
name = "greater slime crystal"
|
||||
desc = "A larger, gooier crystal."
|
||||
@@ -112,7 +112,6 @@
|
||||
origin_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 4)
|
||||
|
||||
|
||||
|
||||
// Very filling food.
|
||||
/obj/item/weapon/reagent_containers/food/snacks/slime
|
||||
name = "slimy clump"
|
||||
@@ -126,3 +125,94 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/slime/Initialize()
|
||||
. = ..()
|
||||
bitesize = 5
|
||||
|
||||
|
||||
//Flashlight
|
||||
|
||||
/obj/item/device/flashlight/slime
|
||||
gender = PLURAL
|
||||
name = "glowing slime extract"
|
||||
desc = "A slimy ball that appears to be glowing from bioluminesence."
|
||||
icon = 'icons/obj/lighting.dmi'
|
||||
icon_state = "floor1" //not a slime extract sprite but... something close enough!
|
||||
item_state = "slime"
|
||||
light_color = "#FFF423"
|
||||
w_class = ITEMSIZE_TINY
|
||||
light_range = 6
|
||||
on = 1 //Bio-luminesence has one setting, on.
|
||||
power_use = 0
|
||||
|
||||
/obj/item/device/flashlight/slime/New()
|
||||
..()
|
||||
set_light(light_range, light_power, light_color)
|
||||
|
||||
/obj/item/device/flashlight/slime/update_brightness()
|
||||
return
|
||||
|
||||
/obj/item/device/flashlight/slime/attack_self(mob/user)
|
||||
return //Bio-luminescence does not toggle.
|
||||
|
||||
|
||||
//Radiation Emitter
|
||||
|
||||
/obj/item/slime_irradiator
|
||||
name = "glowing slime extract"
|
||||
desc = "A slimy ball that appears to be glowing from bioluminesence."
|
||||
icon = 'icons/mob/slimes_vr.dmi'
|
||||
icon_state = "irradiator"
|
||||
light_color = "#00FF00"
|
||||
light_power = 0.4
|
||||
light_range = 2
|
||||
w_class = ITEMSIZE_TINY
|
||||
|
||||
/obj/item/slime_irradiator/New()
|
||||
START_PROCESSING(SSobj, src)
|
||||
set_light(light_range, light_power, light_color)
|
||||
return ..()
|
||||
|
||||
/obj/item/slime_irradiator/process()
|
||||
SSradiation.radiate(src, 5)
|
||||
|
||||
/obj/item/slime_irradiator/Destroy()
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
return ..()
|
||||
|
||||
|
||||
//BS Pouch
|
||||
/obj/item/weapon/storage/backpack/holding/slime
|
||||
name = "bluespace slime pouch"
|
||||
desc = "A slimy pouch that opens into a localized pocket of bluespace."
|
||||
icon_state = "slimepouch"
|
||||
|
||||
|
||||
|
||||
//Slime Chems
|
||||
|
||||
/datum/reagent/myelamine/slime
|
||||
name = "Agent A"
|
||||
id = "slime_bleed_fixer"
|
||||
description = "A slimy liquid which appears to rapidly clot internal hemorrhages by increasing the effectiveness of platelets at low quantities. Toxic in high quantities."
|
||||
taste_description = "slime"
|
||||
overdose = 5
|
||||
|
||||
/datum/reagent/osteodaxon/slime
|
||||
name = "Agent B"
|
||||
id = "slime_bone_fixer"
|
||||
description = "A slimy liquid which can be used to heal bone fractures at low quantities. Toxic in high quantities."
|
||||
taste_description = "slime"
|
||||
overdose = 5
|
||||
|
||||
/datum/reagent/peridaxon/slime
|
||||
name = "Agent C"
|
||||
id = "slime_organ_fixer"
|
||||
description = "A slimy liquid which is used to encourage recovery of internal organs and nervous systems in low quantities. Toxic in high quantities."
|
||||
taste_description = "slime"
|
||||
overdose = 5
|
||||
|
||||
/datum/reagent/nutriment/glucose/slime
|
||||
name = "Slime Goop"
|
||||
id = "slime_goop"
|
||||
description = "A slimy liquid, with very compelling smell. Extremely nutritious."
|
||||
color = "#FABA3A"
|
||||
nutriment_factor = 30
|
||||
taste_description = "slimy nectar"
|
||||
@@ -11,7 +11,7 @@
|
||||
/obj/item/slimepotion/enhancer
|
||||
name = "extract enhancer agent"
|
||||
desc = "A potent chemical mix that will give a slime extract an additional two uses."
|
||||
icon_state = "potpurple"
|
||||
icon_state = "potcyan"
|
||||
description_info = "This will even work on inert slime extracts, if it wasn't enhanced before. Extracts enhanced cannot be enhanced again."
|
||||
|
||||
// Makes slimes less likely to mutate.
|
||||
@@ -64,7 +64,7 @@
|
||||
|
||||
// Makes the slime friendly forever.
|
||||
/obj/item/slimepotion/docility
|
||||
name = "docility agent"
|
||||
name = "slime docility agent"
|
||||
desc = "A potent chemical mix that nullifies a slime's hunger, causing it to become docile and tame. It might also work on other creatures?"
|
||||
icon_state = "potlightpink"
|
||||
description_info = "The target needs to be alive, not already passive, and be an animal or slime type entity."
|
||||
@@ -178,7 +178,7 @@
|
||||
desc = "A potent chemical mix that makes an animal deeply loyal to the species of whoever applies this, and will attack threats to them."
|
||||
description_info = "The slime or other animal needs to be alive for this to work. The slime this is applied to will have their 'faction' change to \
|
||||
the user's faction, which means the slime will attack things that are hostile to the user's faction, such as carp, spiders, and other slimes."
|
||||
icon_state = "potred"
|
||||
icon_state = "potlightpink"
|
||||
|
||||
/obj/item/slimepotion/loyalty/attack(mob/living/simple_mob/M, mob/user)
|
||||
if(!istype(M))
|
||||
@@ -247,7 +247,7 @@
|
||||
name = "slime feeding agent"
|
||||
desc = "A potent chemical mix that will instantly sediate the slime."
|
||||
description_info = "The slime needs to be alive for this to work. It will instantly grow the slime enough to reproduce."
|
||||
icon_state = "potyellow"
|
||||
icon_state = "potorange"
|
||||
|
||||
/obj/item/slimepotion/feeding/attack(mob/living/simple_mob/slime/xenobio/M, mob/user)
|
||||
if(!istype(M))
|
||||
|
||||
189
code/modules/xenobio/items/slimepotions_vr.dm
Normal file
189
code/modules/xenobio/items/slimepotions_vr.dm
Normal file
@@ -0,0 +1,189 @@
|
||||
/obj/item/slimepotion/attackby(obj/item/O, mob/user)
|
||||
if(istype(O, /obj/item/slimepotion/mimic))
|
||||
to_chat(user, "<span class='notice'>You apply the mimic to the slime potion as it copies it's effects.</span>")
|
||||
playsound(src, 'sound/effects/bubbles.ogg', 50, 1)
|
||||
var/newtype = src.type
|
||||
new newtype(get_turf(src))
|
||||
qdel(O)
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/slimepotion/infertility
|
||||
name = "slime infertility agent"
|
||||
desc = "A potent chemical mix that will reduce the amount of offspring this slime will have."
|
||||
icon_state = "potpurple"
|
||||
description_info = "The slime needs to be alive for this to work. It will reduce the amount of slime babies by 2 (to minimum of 2)."
|
||||
|
||||
/obj/item/slimepotion/infertility/attack(mob/living/simple_mob/slime/xenobio/M, mob/user)
|
||||
if(!istype(M))
|
||||
to_chat(user, "<span class='warning'>The agent only works on slimes!</span>")
|
||||
return ..()
|
||||
if(M.stat == DEAD)
|
||||
to_chat(user, "<span class='warning'>The slime is dead!</span>")
|
||||
return ..()
|
||||
if(M.split_amount <= 2)
|
||||
to_chat(user, "<span class='warning'>The slime cannot get any less fertile!</span>")
|
||||
return ..()
|
||||
|
||||
to_chat(user, "<span class='notice'>You feed the slime the infertility agent. It will now have less offspring.</span>")
|
||||
M.split_amount = between(2, M.split_amount - 2, 6)
|
||||
playsound(src, 'sound/effects/bubbles.ogg', 50, 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/slimepotion/fertility
|
||||
name = "slime fertility agent"
|
||||
desc = "A potent chemical mix that will increase the amount of offspring this slime will have."
|
||||
icon_state = "potpurple"
|
||||
description_info = "The slime needs to be alive for this to work. It will increase the amount of slime babies by 2 (to maximum of 6)."
|
||||
|
||||
/obj/item/slimepotion/fertility/attack(mob/living/simple_mob/slime/xenobio/M, mob/user)
|
||||
if(!istype(M))
|
||||
to_chat(user, "<span class='warning'>The agent only works on slimes!</span>")
|
||||
return ..()
|
||||
if(M.stat == DEAD)
|
||||
to_chat(user, "<span class='warning'>The slime is dead!</span>")
|
||||
return ..()
|
||||
if(M.split_amount >= 6)
|
||||
to_chat(user, "<span class='warning'>The slime cannot get any more fertile!</span>")
|
||||
return ..()
|
||||
|
||||
to_chat(user, "<span class='notice'>You feed the slime the infertility agent. It will now have less offspring.</span>")
|
||||
M.split_amount = between(2, M.split_amount + 2, 6)
|
||||
playsound(src, 'sound/effects/bubbles.ogg', 50, 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/slimepotion/shrink
|
||||
name = "slime shrinking agent"
|
||||
desc = "A potent chemical mix that will turn adult slime into a baby one."
|
||||
icon_state = "potpurple"
|
||||
description_info = "The slime needs to be alive for this to work."
|
||||
|
||||
/obj/item/slimepotion/shrink/attack(mob/living/simple_mob/slime/xenobio/M, mob/user)
|
||||
if(!istype(M))
|
||||
to_chat(user, "<span class='warning'>The agent only works on slimes!</span>")
|
||||
return ..()
|
||||
if(M.stat == DEAD)
|
||||
to_chat(user, "<span class='warning'>The slime is dead!</span>")
|
||||
return ..()
|
||||
if(!(M.is_adult))
|
||||
to_chat(user, "<span class='warning'>The slime is already a baby!</span>")
|
||||
return ..()
|
||||
|
||||
to_chat(user, "<span class='notice'>You feed the slime the shrinking agent. It is now back to being a baby.</span>")
|
||||
M.make_baby()
|
||||
playsound(src, 'sound/effects/bubbles.ogg', 50, 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/slimepotion/death
|
||||
name = "slime death agent"
|
||||
desc = "A potent chemical mix that will instantly kill a slime."
|
||||
icon_state = "potblue"
|
||||
description_info = "The slime needs to be alive for this to work."
|
||||
|
||||
/obj/item/slimepotion/death/attack(mob/living/simple_mob/slime/xenobio/M, mob/user)
|
||||
if(!istype(M))
|
||||
to_chat(user, "<span class='warning'>The agent only works on slimes!</span>")
|
||||
return ..()
|
||||
if(M.stat == DEAD)
|
||||
to_chat(user, "<span class='warning'>The slime is already dead!</span>")
|
||||
return ..()
|
||||
|
||||
to_chat(user, "<span class='notice'>You feed the slime the death agent. Its face flashes pain of betrayal before it goes still.</span>")
|
||||
M.adjustToxLoss(500)
|
||||
playsound(src, 'sound/effects/bubbles.ogg', 50, 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/slimepotion/ferality
|
||||
name = "slime ferality agent"
|
||||
desc = "A potent chemical mix that will make a slime untamable."
|
||||
icon_state = "potred"
|
||||
description_info = "The slime needs to be alive for this to work."
|
||||
|
||||
/obj/item/slimepotion/ferality/attack(mob/living/simple_mob/slime/xenobio/M, mob/user)
|
||||
if(!istype(M))
|
||||
to_chat(user, "<span class='warning'>The agent only works on slimes!</span>")
|
||||
return ..()
|
||||
if(M.stat == DEAD)
|
||||
to_chat(user, "<span class='warning'>The slime is already dead!</span>")
|
||||
return ..()
|
||||
if(M.untamable && M.untamable_inheirit)
|
||||
to_chat(user, "<span class='warning'>The slime is already untamable!</span>")
|
||||
return ..()
|
||||
|
||||
to_chat(user, "<span class='notice'>You feed the slime the death agent. It will now only get angrier at taming attempts.</span>")
|
||||
M.untamable = TRUE
|
||||
M.untamable_inheirit = TRUE
|
||||
playsound(src, 'sound/effects/bubbles.ogg', 50, 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/slimepotion/reinvigoration
|
||||
name = "extract reinvigoration agent"
|
||||
desc = "A potent chemical mix that will create a slime of appropriate type out of an extract."
|
||||
icon_state = "potcyan"
|
||||
description_info = "This will even work on inert extracts. Extract is destroyed in process."
|
||||
|
||||
/obj/item/slimepotion/mimic
|
||||
name = "mimic agent"
|
||||
desc = "A potent chemical mix that will mimic effects of other slime-produced agents."
|
||||
icon_state = "potsilver"
|
||||
description_info = "Warning: avoid combining multiple doses of mimic agent."
|
||||
|
||||
/obj/item/slimepotion/mimic/attackby(obj/item/O, mob/user)
|
||||
if(istype(O, /obj/item/slimepotion/mimic))
|
||||
to_chat(user, "<span class='warning'>You apply the mimic to the mimic, resulting a mimic that copies a mimic that copies a mimic that copies a mimic that-</span>")
|
||||
var/location = get_turf(src)
|
||||
playsound(location, 'sound/weapons/gauss_shoot.ogg', 50, 1)
|
||||
var/datum/effect/effect/system/grav_pull/s = new /datum/effect/effect/system/grav_pull
|
||||
s.set_up(3, 3, location)
|
||||
s.start()
|
||||
qdel(O)
|
||||
qdel(src)
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/slimepotion/sapience
|
||||
name = "slime sapience agent"
|
||||
desc = "A potent chemical mix that makes an animal capable of developing more advanced, sapient thought."
|
||||
description_info = "The slime or other animal needs to be alive for this to work. The development is not always immedeate and may take indeterminate time before effects show."
|
||||
icon_state = "potblue"
|
||||
|
||||
/obj/item/slimepotion/sapience/attack(mob/living/simple_mob/M, mob/user)
|
||||
if(!istype(M))
|
||||
to_chat(user, "<span class='warning'>The agent only works on creatures!</span>")
|
||||
return ..()
|
||||
if(M.stat == DEAD)
|
||||
to_chat(user, "<span class='warning'>The creature is dead!</span>")
|
||||
return ..()
|
||||
if(M.ghostjoin)
|
||||
to_chat(user, "<span class='warning'>The creature is already developing sapience.</span>")
|
||||
return ..()
|
||||
if(M.ckey)
|
||||
to_chat(user, "<span class='warning'>The creature is already sapient!</span>")
|
||||
return ..()
|
||||
|
||||
to_chat(user, "<span class='notice'>You feed \the [M] the agent. It may now eventually develop proper sapience.</span>")
|
||||
M.ghostjoin = 1
|
||||
active_ghost_pods |= M
|
||||
M.ghostjoin_icon()
|
||||
log_and_message_admins("[key_name_admin(user)] used a sapience potion on a simple mob: [M]. [ADMIN_FLW(src)]")
|
||||
playsound(src, 'sound/effects/bubbles.ogg', 50, 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/slimepotion/obedience
|
||||
name = "slime obedience agent"
|
||||
desc = "A potent chemical mix that makes slime extremely obedient."
|
||||
icon_state = "potlightpink"
|
||||
description_info = "The target needs to be alive and currently misbehaving. Effect is equivalent to very strong discipline."
|
||||
|
||||
/obj/item/slimepotion/obedience/attack(mob/living/simple_mob/slime/xenobio/M, mob/user)
|
||||
if(!istype(M))
|
||||
to_chat(user, "<span class='warning'>The agent only works on slimes!</span>")
|
||||
return ..()
|
||||
if(M.stat == DEAD)
|
||||
to_chat(user, "<span class='warning'>The slime is dead!</span>")
|
||||
return ..()
|
||||
|
||||
to_chat(user, "<span class='notice'>You feed the slime the agent. It has been disciplined, for better or worse...</span>")
|
||||
M.adjust_discipline(10)
|
||||
playsound(src, 'sound/effects/bubbles.ogg', 50, 1)
|
||||
qdel(src)
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 27 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 123 KiB After Width: | Height: | Size: 124 KiB |
BIN
icons/mob/slimes_vr.dmi
Normal file
BIN
icons/mob/slimes_vr.dmi
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 480 B |
@@ -4378,9 +4378,10 @@
|
||||
#include "code\modules\xenoarcheaology\tools\tools_pickaxe.dm"
|
||||
#include "code\modules\xenoarcheaology\tools\tools_pickaxe_vr.dm"
|
||||
#include "code\modules\xenoarcheaology\tools\tools_vr.dm"
|
||||
#include "code\modules\xenobio\items\extracts.dm"
|
||||
#include "code\modules\xenobio\items\extracts_vr.dm"
|
||||
#include "code\modules\xenobio\items\slime_objects.dm"
|
||||
#include "code\modules\xenobio\items\slimepotions.dm"
|
||||
#include "code\modules\xenobio\items\slimepotions_vr.dm"
|
||||
#include "code\modules\xenobio\items\weapons.dm"
|
||||
#include "code\modules\xenobio\machinery\processor.dm"
|
||||
#include "code\modules\xgm\xgm_gas_data.dm"
|
||||
|
||||
Reference in New Issue
Block a user