Merge branch 'master' into upstream-merge-12560
@@ -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)
|
||||
@@ -471,7 +471,7 @@ so as to remain in compliance with the most up-to-date laws."
|
||||
return
|
||||
if(master)
|
||||
return usr.client.Click(master, location, control, params)
|
||||
..() // CHOMPStation Edit: Pass through to click_vr
|
||||
..() // VOREStation Edit: Pass through to click_vr
|
||||
|
||||
/obj/screen/alert/Destroy()
|
||||
..()
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
name = "Low Power"
|
||||
desc = "Your battery is very low! Low power mode makes all movements slower."
|
||||
|
||||
// CHOMPEdit Start
|
||||
/obj/screen/alert/xenochimera/reconstitution
|
||||
name = "Reconstructing Form"
|
||||
desc = "You're still rebuilding your body! Click the alert to find out how long you have left."
|
||||
@@ -51,5 +50,4 @@
|
||||
if(istype(H) && istype(H.species, /datum/species/xenochimera)) // If you're somehow able to click this while not a chimera, this should prevent weird runtimes. Will need changing if regeneration is ever opened to non-chimera using the same alert.
|
||||
if(H.revive_ready == REVIVING_DONE) // Sanity check.
|
||||
H.hatch() // Hatch.
|
||||
// CHOMPEdit Finish
|
||||
*/
|
||||
@@ -45,14 +45,15 @@
|
||||
var/turf/T = get_turf(H)
|
||||
if(T.get_lumcount() <= 0.1)
|
||||
to_chat(usr, "<span class='notice'>You are slowly calming down in darkness' safety...</span>")
|
||||
else if(isbelly(H.loc)) // CHOMPEdit: Safety message for if inside a belly.
|
||||
|
||||
else if(isbelly(H.loc)) // Safety message for if inside a belly.
|
||||
to_chat(usr, "<span class='notice'>You are slowly calming down within the darkness of something's belly, listening to their body as it moves around you. ...safe...</span>")
|
||||
else
|
||||
to_chat(usr, "<span class='notice'>You are slowly calming down... But safety of darkness is much preferred.</span>")
|
||||
else
|
||||
if(H.nutrition < 150)
|
||||
to_chat(usr, "<span class='warning'>Your hunger is slowly making you unstable.</span>")
|
||||
if("Reconstructing Form") // CHOMPEdit: Allow Viewing Reconstruction Timer + Hatching for 'chimera
|
||||
if("Reconstructing Form") // Allow Viewing Reconstruction Timer + Hatching for 'chimera
|
||||
var/mob/living/carbon/human/H = usr
|
||||
if(istype(H) && istype(H.species, /datum/species/xenochimera)) // If you're somehow able to click this while not a chimera, this should prevent weird runtimes. Will need changing if regeneration is ever opened to non-chimera using the same alert.
|
||||
if(H.revive_ready == REVIVING_NOW)
|
||||
@@ -60,7 +61,7 @@
|
||||
else if(H.revive_ready == REVIVING_DONE)
|
||||
to_chat(usr, "<span class='warning'>You should have a notification + alert for this! Bug report that this is still here!</span>")
|
||||
|
||||
if("Ready to Hatch") // CHOMPEdit: Allow Viewing Reconstruction Timer + Hatching for 'chimera
|
||||
if("Ready to Hatch") // Allow Viewing Reconstruction Timer + Hatching for 'chimera
|
||||
var/mob/living/carbon/human/H = usr
|
||||
if(istype(H) && istype(H.species, /datum/species/xenochimera)) // If you're somehow able to click this while not a chimera, this should prevent weird runtimes. Will need changing if regeneration is ever opened to non-chimera using the same alert.
|
||||
if(H.revive_ready == REVIVING_DONE) // Sanity check.
|
||||
|
||||
@@ -502,9 +502,11 @@
|
||||
M.updatehealth()
|
||||
apply_brain_damage(M)
|
||||
M.adjustHalLoss(40) // CHOMPEdit: Moderate amount of halloss for EVERYONE being defibbed. Defibs feel like being kicked in the chest by a mule. Shit hurts if you're awake.
|
||||
if(istype(M.species, /datum/species/xenochimera)) // Only do the following to Xenochimera. Handwave this however you want, this is to balance defibs on an alien race. CHOMPEdit
|
||||
// VOREStation Edits Start: Defib pain
|
||||
if(istype(M.species, /datum/species/xenochimera)) // Only do the following to Xenochimera. Handwave this however you want, this is to balance defibs on an alien race.
|
||||
M.adjustHalLoss(220) // This hurts a LOT, stacks on top of the previous halloss.
|
||||
M.feral += 100 // If they somehow weren't already feral, force them feral by increasing ferality var directly, to avoid any messy checks. handle_feralness() will immediately set our feral properly according to halloss anyhow.
|
||||
// VOREStation Edits End
|
||||
// SSgame_master.adjust_danger(-20) // VOREStation Edit - We don't use SSgame_master yet.
|
||||
|
||||
/obj/item/weapon/shockpaddles/proc/apply_brain_damage(mob/living/carbon/human/H)
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -278,7 +278,7 @@ HALOGEN COUNTER - Radcount on mobs
|
||||
else
|
||||
dat += "<span class='notice'>Blood Level Normal: [blood_percent]% [blood_volume]cl. Type: [blood_type]</span><br>"
|
||||
dat += "<span class='notice'>Subject's pulse: <font color='[H.pulse == PULSE_THREADY || H.pulse == PULSE_NONE ? "red" : "blue"]'>[H.get_pulse(GETPULSE_TOOL)] bpm.</font></span>"
|
||||
if(istype(H.species, /datum/species/xenochimera)) // CHOMPEdit Start: Visible feedback for medmains on Xenochimera.
|
||||
if(istype(H.species, /datum/species/xenochimera)) // VOREStation Edit Start: Visible feedback for medmains on Xenochimera.
|
||||
if(H.stat == DEAD && H.revive_ready == REVIVING_READY && !H.hasnutriment())
|
||||
dat += "<span class='danger'>WARNING: Protein levels low. Subject incapable of reconstitution.</span>"
|
||||
else if(H.revive_ready == REVIVING_NOW)
|
||||
@@ -289,7 +289,7 @@ HALOGEN COUNTER - Radcount on mobs
|
||||
dat+= "<span class='danger'>WARNING: Defib will cause extreme pain and set subject feral. Sedation recommended prior to defibrillation.</span>"
|
||||
else // If they bop them and they're not dead or reviving, give 'em a little notice.
|
||||
dat += "<span class='notice'>Subject is a Xenochimera. Treat accordingly.</span>"
|
||||
// CHOMPEdit End
|
||||
// VOREStation Edit End
|
||||
user.show_message(dat, 1)
|
||||
|
||||
/obj/item/device/healthanalyzer/verb/toggle_mode()
|
||||
|
||||
@@ -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()
|
||||
evolve_and_reproduce()
|
||||
@@ -146,6 +143,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.
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
//This file has been disabled in the dme now that the below is actually ported upstream
|
||||
/*
|
||||
/decl/emote/audible/coyawoo
|
||||
key = "coyawoo"
|
||||
emote_message_3p = "lets out a scraggly awoo."
|
||||
emote_sound = 'sound/voice/coyoteawoo.ogg'
|
||||
*/
|
||||
|
||||
@@ -179,3 +179,28 @@
|
||||
else
|
||||
emote_sound = pick(smolsound)
|
||||
. = ..()
|
||||
|
||||
/decl/emote/audible/coyawoo
|
||||
key = "coyawoo"
|
||||
emote_message_3p = "lets out a scraggly awoo."
|
||||
emote_sound = 'sound/voice/coyoteawoo.ogg'
|
||||
|
||||
/decl/emote/audible/coyawoo2
|
||||
key = "coyawoo2"
|
||||
emote_message_3p = "lets out a pronounced, scraggly awoo."
|
||||
emote_sound = 'sound/voice/coyoteawoo2.ogg'
|
||||
|
||||
/decl/emote/audible/coyawoo3
|
||||
key = "coyawoo3"
|
||||
emote_message_3p = "yaps and lets out a scraggly awoo."
|
||||
emote_sound = 'sound/voice/coyoteawoo3.ogg'
|
||||
|
||||
/decl/emote/audible/coyawoo4
|
||||
key = "coyawoo4"
|
||||
emote_message_3p = "yaps several times, and lets out a short, scraggly awoo."
|
||||
emote_sound = 'sound/voice/coyoteawoo4.ogg'
|
||||
|
||||
/decl/emote/audible/coyawoo5
|
||||
key = "coyawoo5"
|
||||
emote_message_3p = "lets out a scraggly, whine-awoo."
|
||||
emote_sound = 'sound/voice/coyoteawoo5.ogg'
|
||||
@@ -137,10 +137,12 @@ var/list/_human_default_emotes = list(
|
||||
/decl/emote/audible/prbt,
|
||||
/decl/emote/audible/gyoh,
|
||||
/decl/emote/audible/rumble,
|
||||
/decl/emote/audible/coyawoo,
|
||||
/decl/emote/audible/coyawoo2,
|
||||
/decl/emote/audible/coyawoo3,
|
||||
/decl/emote/audible/coyawoo4,
|
||||
/decl/emote/audible/coyawoo5
|
||||
//VOREStation Add End
|
||||
//CHOMPStation Add Start
|
||||
/decl/emote/audible/coyawoo
|
||||
//CHOMPStation End Start
|
||||
)
|
||||
|
||||
//VOREStation Add Start
|
||||
|
||||
@@ -34,14 +34,14 @@
|
||||
//Scary spawnerization.
|
||||
revive_ready = REVIVING_NOW
|
||||
revive_finished = (world.time + time SECONDS) // When do we finish reviving? Allows us to find out when we're done, called by the alert currently.
|
||||
throw_alert("regen", /obj/screen/alert/xenochimera/reconstitution) // CHOMPEdit: Regen
|
||||
throw_alert("regen", /obj/screen/alert/xenochimera/reconstitution)
|
||||
spawn(time SECONDS)
|
||||
// Was dead, now not dead.
|
||||
if(stat != DEAD)
|
||||
to_chat(src, "<span class='notice'>Your body has recovered from its ordeal, ready to regenerate itself again.</span>")
|
||||
revive_ready = REVIVING_READY //reset their cooldown
|
||||
clear_alert("regen") // CHOMPEdit: Regen
|
||||
throw_alert("hatch", /obj/screen/alert/xenochimera/readytohatch) // CHOMPEdit: Regen
|
||||
clear_alert("regen")
|
||||
throw_alert("hatch", /obj/screen/alert/xenochimera/readytohatch)
|
||||
|
||||
// Was dead, still dead.
|
||||
else
|
||||
@@ -49,8 +49,8 @@
|
||||
verbs |= /mob/living/carbon/human/proc/hatch
|
||||
revive_ready = REVIVING_DONE
|
||||
src << sound('sound/effects/mob_effects/xenochimera/hatch_notification.ogg',0,0,0,30)
|
||||
clear_alert("regen") // CHOMPEdit: Regen
|
||||
throw_alert("hatch", /obj/screen/alert/xenochimera/readytohatch) // CHOMPEdit: Regen
|
||||
clear_alert("regen")
|
||||
throw_alert("hatch", /obj/screen/alert/xenochimera/readytohatch)
|
||||
|
||||
//Dead until nutrition injected.
|
||||
else
|
||||
@@ -63,7 +63,7 @@
|
||||
//Waiting for regen after being alive
|
||||
revive_ready = REVIVING_NOW
|
||||
revive_finished = (world.time + time SECONDS) // When do we finish reviving? Allows us to find out when we're done, called by the alert currently.
|
||||
throw_alert("regen", /obj/screen/alert/xenochimera/reconstitution) // CHOMPEdit: Regen
|
||||
throw_alert("regen", /obj/screen/alert/xenochimera/reconstitution)
|
||||
spawn(time SECONDS)
|
||||
|
||||
//If they're still alive after regenning.
|
||||
@@ -72,8 +72,8 @@
|
||||
verbs |= /mob/living/carbon/human/proc/hatch
|
||||
revive_ready = REVIVING_DONE
|
||||
src << sound('sound/effects/mob_effects/xenochimera/hatch_notification.ogg',0,0,0,30)
|
||||
clear_alert("regen") // CHOMPEdit: Regen
|
||||
throw_alert("hatch", /obj/screen/alert/xenochimera/readytohatch) // CHOMPEdit: Regen
|
||||
clear_alert("regen")
|
||||
throw_alert("hatch", /obj/screen/alert/xenochimera/readytohatch)
|
||||
|
||||
//Was alive, now dead
|
||||
else if(hasnutriment())
|
||||
@@ -81,14 +81,14 @@
|
||||
verbs |= /mob/living/carbon/human/proc/hatch
|
||||
revive_ready = REVIVING_DONE
|
||||
src << sound('sound/effects/mob_effects/xenochimera/hatch_notification.ogg',0,0,0,30)
|
||||
clear_alert("regen") // CHOMPEdit: Regen
|
||||
throw_alert("hatch", /obj/screen/alert/xenochimera/readytohatch) // CHOMPEdit: Regen
|
||||
clear_alert("regen")
|
||||
throw_alert("hatch", /obj/screen/alert/xenochimera/readytohatch)
|
||||
|
||||
//Dead until nutrition injected.
|
||||
else
|
||||
to_chat(src, "<span class='warning'>Your body was unable to regenerate, what few living cells remain require additional nutrients to complete the process.</span>")
|
||||
revive_ready = REVIVING_READY //reset their cooldown
|
||||
clear_alert("regen") // CHOMPEdit: Regen
|
||||
clear_alert("regen")
|
||||
|
||||
/mob/living/carbon/human/proc/hasnutriment()
|
||||
if (bloodstr.has_reagent("nutriment", 30) || src.bloodstr.has_reagent("protein", 15)) //protein needs half as much. For reference, a steak contains 9u protein.
|
||||
@@ -117,7 +117,7 @@
|
||||
chimera_hatch()
|
||||
adjustBrainLoss(10) // if they're reviving from dead, they come back with 10 brainloss on top of whatever's unhealed.
|
||||
visible_message("<span class='danger'><p><font size=4>The lifeless husk of [src] bursts open, revealing a new, intact copy in the pool of viscera.</font></p></span>") //Bloody hell...
|
||||
clear_alert("hatch") // CHOMPEdit: Regen
|
||||
clear_alert("hatch")
|
||||
return
|
||||
|
||||
//Don't have nutriment to hatch! Or you somehow died in between completing your revive and hitting hatch.
|
||||
@@ -125,13 +125,13 @@
|
||||
to_chat(src, "Your body was unable to regenerate, what few living cells remain require additional nutrients to complete the process.")
|
||||
verbs -= /mob/living/carbon/human/proc/hatch
|
||||
revive_ready = REVIVING_READY //reset their cooldown they can try again when they're given a kickstart
|
||||
clear_alert("hatch") // CHOMPEdit: Regen
|
||||
clear_alert("hatch")
|
||||
|
||||
//Alive when hatching
|
||||
else
|
||||
chimera_hatch()
|
||||
visible_message("<span class='danger'><p><font size=4>The dormant husk of [src] bursts open, revealing a new, intact copy in the pool of viscera.</font></p></span>") //Bloody hell...
|
||||
clear_alert("hatch") // CHOMPEdit: Regen
|
||||
clear_alert("hatch")
|
||||
|
||||
/mob/living/carbon/human/proc/chimera_hatch()
|
||||
verbs -= /mob/living/carbon/human/proc/hatch
|
||||
@@ -166,7 +166,6 @@
|
||||
playsound(T, 'sound/effects/mob_effects/xenochimera/hatch.ogg', 50)
|
||||
|
||||
revive_ready = world.time + 10 MINUTES //set the cooldown CHOMPEdit: Reduced this to 10 minutes, you're playing with fire if you're reviving that often.
|
||||
// CHOMPEdit End
|
||||
|
||||
/mob/living/carbon/human/proc/revivingreset() // keep this as a debug proc or potential future use
|
||||
revive_ready = REVIVING_READY
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
//primitive_form = "Farwa"
|
||||
|
||||
spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED | SPECIES_WHITELIST_SELECTABLE//Whitelisted as restricted is broken.
|
||||
flags = NO_SCAN | NO_INFECT // | NO_DEFIB // Dying as a chimera is, quite literally, a death sentence. Well, if it wasn't for their revive, that is. CHOMPEdit: Leaving NO_DEFIB there for the future. // CHOMPEdit: Adds flags
|
||||
flags = NO_SCAN | NO_INFECT // | NO_DEFIB // Dying as a chimera is, quite literally, a death sentence. Well, if it wasn't for their revive, that is. Leaving NO_DEFIB there for the future/in case reversion to old 'chimera no-defib.
|
||||
appearance_flags = HAS_HAIR_COLOR | HAS_LIPS | HAS_UNDERWEAR | HAS_SKIN_COLOR | HAS_EYE_COLOR
|
||||
|
||||
genders = list(MALE, FEMALE, PLURAL, NEUTER)
|
||||
@@ -88,11 +88,10 @@
|
||||
H.weakened = 5
|
||||
H.canmove = 0
|
||||
H.does_not_breathe = TRUE
|
||||
var/regen_sounds = H.regen_sounds // CHOMPEdit Start: Regen sounds/etc
|
||||
var/regen_sounds = H.regen_sounds
|
||||
if(prob(2)) // 2% chance of playing squelchy noise while reviving, which is run roughly every 2 seconds/tick while regenerating.
|
||||
playsound(H, pick(regen_sounds), 30)
|
||||
H.visible_message("<span class='danger'><p><font size=4>[H.name]'s motionless form shudders grotesquely, rippling unnaturally.</font></p></span>")
|
||||
// CHOMPEdit End
|
||||
|
||||
//Cold/pressure effects when not regenerating
|
||||
else
|
||||
@@ -213,7 +212,7 @@
|
||||
else
|
||||
feral = max(0,--feral)
|
||||
|
||||
// Being in a belly or in the darkness decreases stress further. :9
|
||||
// Being in a belly or in the darkness decreases stress further. Helps mechanically reward players for staying in darkness + RP'ing appropriately. :9
|
||||
var/turf/T = get_turf(H)
|
||||
if(feral && (isbelly(H.loc) || T.get_lumcount() <= 0.1))
|
||||
feral = max(0,--feral)
|
||||
@@ -233,7 +232,7 @@
|
||||
H.shock_stage = max(H.shock_stage-(feral/20), 0)
|
||||
|
||||
//Handle light/dark areas
|
||||
// var/turf/T = get_turf(H) // CHOMPEdit: Moved up to before the in-belly/dark combined check, should still safely reach here just fine.
|
||||
// var/turf/T = get_turf(H) // Moved up to before the in-belly/dark combined check, should still safely reach here just fine.
|
||||
if(!T)
|
||||
update_xenochimera_hud(H, danger, feral_state)
|
||||
return //Nullspace
|
||||
@@ -246,7 +245,7 @@
|
||||
var/list/nearby = H.living_mobs(world.view)
|
||||
|
||||
//Not in the dark, or a belly, and out in the open.
|
||||
if(!darkish && isturf(H.loc) && !isbelly(H.loc)) // CHOMPEdit: added specific check for if in belly
|
||||
if(!darkish && isturf(H.loc) && !isbelly(H.loc)) // Added specific check for if in belly
|
||||
|
||||
//Always handle feral if nobody's around and not in the dark.
|
||||
if(!nearby.len)
|
||||
@@ -260,8 +259,8 @@
|
||||
update_xenochimera_hud(H, danger, feral_state)
|
||||
return
|
||||
|
||||
// In the darkness, "hidden", or in a belly. No need for custom scene-protection checks as it's just an occational infomessage.
|
||||
if(darkish || !isturf(H.loc) || isbelly(H.loc)) // CHOMPEdit: added specific check for if in belly
|
||||
// In the darkness, or "hidden", or in a belly. No need for custom scene-protection checks as it's just an occational infomessage.
|
||||
if(darkish || !isturf(H.loc) || isbelly(H.loc)) // Specific check for if in belly. !isturf should do this, but JUST in case.
|
||||
// If hurt, tell 'em to heal up
|
||||
if (shock)
|
||||
to_chat(H,"<span class='info'>This place seems safe, secure, hidden, a place to lick your wounds and recover...</span>")
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
|
||||
/datum/trait/negative/endurance_low
|
||||
name = "Low Endurance"
|
||||
desc = "Reduces your maximum total hitpoints to 75."
|
||||
desc = "Reduces your maximum total hitpoints to 75. You require only 150 damage in total to die, compared to 200 normally. You will go into crit after losing 75 HP, compared to crit at 100 HP." // CHOMPEdit: Clarity for players' sake.
|
||||
cost = -4 //Chompedit makes you a lot squishier, should not be only 2 points. (based on the brute and burn vulnerability costs)
|
||||
var_changes = list("total_health" = 75)
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
|
||||
/datum/trait/negative/endurance_very_low
|
||||
name = "Low Endurance, Major"
|
||||
desc = "Reduces your maximum total hitpoints to 50."
|
||||
desc = "Reduces your maximum total hitpoints to 50. You require only 100 damage in total to die, compared to 200 normally. You will go into crit after losing 50 HP, compared to crit at 100 HP." // CHOMPEdit: Clarity for players' sake.
|
||||
cost = -8 //Teshari HP. This makes the person a lot more suseptable to getting stunned, killed, etc. //Chompedit: Has no business being only 3 points, while others that function similarly but are nowhere near as crippling are 3 as well.
|
||||
var_changes = list("total_health" = 50)
|
||||
|
||||
@@ -82,9 +82,9 @@
|
||||
var_changes = list("burn_mod" = 1.5)
|
||||
|
||||
//YW ADDITIONS START
|
||||
/datum/trait/negative/reduced_biocompat
|
||||
name = "Reduced Biocompatibility"
|
||||
desc = "For whatever reason, you're one of the unlucky few who don't get as much benefit from modern-day chemicals. Remember to note this down in your medical records!"
|
||||
/datum/trait/negative/reduced_biocompat_minor // CHOMPEdit: Changed name of trait + desc.
|
||||
name = "Reduced Biocompatibility, Minor"
|
||||
desc = "For whatever reason, you're one of the unlucky few who don't get as much benefit from modern-day chemicals. Remember to note this down in your medical records! Chems are only 80% as effective on you!"
|
||||
cost = -1
|
||||
var_changes = list("chem_strength_heal" = 0.8)
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
var_changes = list("grab_resist_divisor_victims" = 0.5, "grab_resist_divisor_self" = 3, "grab_power_victims" = 1, "grab_power_self" = -1)
|
||||
|
||||
/datum/trait/negative/extreme_slowdown
|
||||
name = "Extreme slowdown"
|
||||
name = "Slowdown, Extreme"
|
||||
desc = "You move EXTREMELY slower than baseline"
|
||||
cost = -8
|
||||
var_changes = list("slowdown" = 4.0)
|
||||
@@ -376,3 +376,25 @@
|
||||
if(ms != "")
|
||||
to_chat(H, ms)
|
||||
H.next_loneliness_time = world.time+500
|
||||
|
||||
/datum/trait/negative/endurance_glass // Glass Cannon
|
||||
name = "Glass Endurance"
|
||||
desc = "Your body is very fragile. Reduces your maximum hitpoints to 25. Beware sneezes. You require only 50 damage in total to die, compared to 200 normally. You will go into crit after losing 25 HP, compared to crit at 100 HP."
|
||||
cost = -12 // Similar to Very Low Endurance, this straight up will require you NEVER getting in a fight. This is extremely crippling. I salute the madlad that takes this.
|
||||
var_changes = list("total_health" = 25)
|
||||
|
||||
/datum/trait/negative/endurance_glass/apply(var/datum/species/S,var/mob/living/carbon/human/H)
|
||||
..(S,H)
|
||||
H.setMaxHealth(S.total_health)
|
||||
|
||||
/datum/trait/negative/reduced_biocompat
|
||||
name = "Reduced Biocompatibility"
|
||||
desc = "For whatever reason, you're one of the unlucky few who don't get as much benefit from modern-day chemicals. Remember to note this down in your medical records! Chems are only 60% as effective on you!"
|
||||
cost = -4
|
||||
var_changes = list("chem_strength_heal" = 0.6)
|
||||
|
||||
/datum/trait/negative/reduced_biocompat_extreme
|
||||
name = "Reduced Biocompatibility, Major"
|
||||
desc = "For whatever reason, you're one of the unlucky few who don't get as much benefit from modern-day chemicals. Remember to note this down in your medical records! Chems are only 30% as effective on you!"
|
||||
cost = -8
|
||||
var_changes = list("chem_strength_heal" = 0.3)
|
||||
@@ -5,7 +5,7 @@
|
||||
name = "Haste"
|
||||
desc = "Allows you to move faster on average than baseline."
|
||||
cost = 4 //CHOMPEdit
|
||||
var_changes = list("slowdown" = -0.5)
|
||||
var_changes = list("slowdown" = -0.45)
|
||||
excludes = list(/datum/trait/positive/hardy,/datum/trait/positive/hardy_extreme,/datum/trait/positive/hardy_plus,/datum/trait/positive/speed_fast_minor)
|
||||
|
||||
//ChompEdit
|
||||
@@ -45,8 +45,8 @@
|
||||
|
||||
/datum/trait/positive/endurance_high
|
||||
name = "High Endurance"
|
||||
desc = "Increases your maximum total hitpoints to 125"
|
||||
cost = 2
|
||||
desc = "Increases your maximum total hitpoints to 125. You require 250 damage in total to die, compared to 200 normally. You will still go into crit after losing 125 HP, compared to crit at 100 HP." // CHOMPEdit: Clarity for players' sake.
|
||||
cost = 3 // CHOMPEdit
|
||||
var_changes = list("total_health" = 125)
|
||||
|
||||
/datum/trait/positive/endurance_high/apply(var/datum/species/S,var/mob/living/carbon/human/H)
|
||||
@@ -55,13 +55,13 @@
|
||||
|
||||
/datum/trait/positive/nonconductive
|
||||
name = "Non-Conductive"
|
||||
desc = "Decreases your susceptibility to electric shocks by a 25% amount." //CHOMP Edit
|
||||
desc = "Decreases your susceptibility to electric shocks by 25%." //CHOMP Edit - GRAMMAR PLS.
|
||||
cost = 2 //This effects tasers!
|
||||
var_changes = list("siemens_coefficient" = 0.75) //CHOMP Edit
|
||||
|
||||
/datum/trait/positive/nonconductive_plus
|
||||
name = "Non-Conductive, Major"
|
||||
desc = "Decreases your susceptibility to electric shocks by a 50% amount." //CHOMP Edit
|
||||
desc = "Decreases your susceptibility to electric shocks by 50%." //CHOMP Edit - GRAMMAR PLS.
|
||||
cost = 3 //Let us not forget this effects tasers!
|
||||
var_changes = list("siemens_coefficient" = 0.5) //CHOMP Edit
|
||||
/* //Chompedit, moving to Positive_ch.dm so it wont be messed with from upstream
|
||||
@@ -128,8 +128,8 @@
|
||||
cost = 2
|
||||
var_changes = list("chem_strength_heal" = 1.2)
|
||||
|
||||
/datum/trait/positive/pain_tolerance_advanced
|
||||
name = "High Pain Tolerance"
|
||||
/datum/trait/positive/pain_tolerance // CHOMPEdit: There is no "basic" pain tolerance, so I'm reducing this to regular pain tolerance.
|
||||
name = "Increased Pain Tolerance"
|
||||
desc = "You are noticeably more resistant to pain than most, and experience 20% less pain from all sources."
|
||||
cost = 2
|
||||
var_changes = list("pain_mod" = 0.8)
|
||||
@@ -173,9 +173,8 @@
|
||||
cost = 1 //CHOMP Edit
|
||||
var_changes = list("flags" = NO_MINOR_CUT) //Checked the flag is only used by shard stepping.
|
||||
|
||||
//CHOMPStation Removal Start
|
||||
/*
|
||||
|
||||
// CHOMPEdit: This has been removed for two years, since Jan 2020, pending "review". Uncommenting as per tankiness increase PR.
|
||||
/datum/trait/positive/antiseptic_saliva
|
||||
name = "Antiseptic Saliva"
|
||||
desc = "Your saliva has especially strong antiseptic properties that can be used to heal small wounds."
|
||||
@@ -184,8 +183,7 @@
|
||||
/datum/trait/positive/antiseptic_saliva/apply(var/datum/species/S,var/mob/living/carbon/human/H)
|
||||
..()
|
||||
H.verbs |= /mob/living/carbon/human/proc/lick_wounds
|
||||
*/
|
||||
//CHOMPStation Removal End
|
||||
|
||||
|
||||
/datum/trait/positive/traceur
|
||||
name = "Traceur"
|
||||
|
||||
@@ -110,19 +110,21 @@
|
||||
|
||||
/datum/trait/positive/endurance_high
|
||||
cost = 3
|
||||
excludes = list(/datum/trait/positive/brute_resist, /datum/trait/positive/minor_brute_resist, /datum/trait/positive/minor_burn_resist, /datum/trait/positive/burn_resist)
|
||||
excludes = list(/datum/trait/positive/endurance_very_high) // CHOMPEdit: Increased Endurance.
|
||||
// excludes = list(/datum/trait/positive/brute_resist, /datum/trait/positive/minor_brute_resist, /datum/trait/positive/minor_burn_resist, /datum/trait/positive/burn_resist)
|
||||
// Tankiness at the cost of severe downsides should be allowed - we have a large number of negatives that hurt hard, but you can't take many positives.
|
||||
|
||||
/datum/trait/positive/brute_resist
|
||||
excludes = list(/datum/trait/positive/minor_brute_resist, /datum/trait/positive/burn_resist, /datum/trait/positive/endurance_high)
|
||||
excludes = list(/datum/trait/positive/minor_brute_resist, /datum/trait/positive/brute_resist_plus) // Tankiness at the cost of severe downsides should be allowed - we have a large number of negatives that hurt hard, but you can't take many positives.
|
||||
|
||||
/datum/trait/positive/minor_brute_resist
|
||||
excludes = list(/datum/trait/positive/brute_resist, /datum/trait/positive/endurance_high)
|
||||
excludes = list(/datum/trait/positive/brute_resist, /datum/trait/positive/brute_resist_plus) // Tankiness at the cost of severe downsides should be allowed - we have a large number of negatives that hurt hard, but you can't take many positives.
|
||||
|
||||
/datum/trait/positive/burn_resist
|
||||
excludes = list(/datum/trait/positive/minor_burn_resist, /datum/trait/positive/brute_resist, /datum/trait/positive/endurance_high)
|
||||
excludes = list(/datum/trait/positive/minor_burn_resist, /datum/trait/positive/burn_resist_plus) // Tankiness at the cost of severe downsides should be allowed - we have a large number of negatives that hurt hard, but you can't take many positives.
|
||||
|
||||
/datum/trait/positive/minor_burn_resist
|
||||
excludes = list(/datum/trait/positive/burn_resist, /datum/trait/positive/endurance_high)
|
||||
excludes = list(/datum/trait/positive/burn_resist, /datum/trait/positive/burn_resist_plus) // Tankiness at the cost of severe downsides should be allowed - we have a large number of negatives that hurt hard, but you can't take many positives.
|
||||
|
||||
/datum/trait/positive/absorbent/handle_environment_special(var/mob/living/carbon/human/H)
|
||||
var/turf/T = get_turf(H)
|
||||
@@ -249,3 +251,45 @@
|
||||
..(S,H)
|
||||
H.verbs |= /mob/living/proc/insect_sting
|
||||
|
||||
// TANKINESS LETS GOOOOOOOOO
|
||||
/datum/trait/positive/burn_resist_plus // Equivalent to Burn Weakness Major, cannot be taken at the same time.
|
||||
name = "Major Burn Resist"
|
||||
desc = "Adds 40% resistance to burn damage sources."
|
||||
cost = 3 // Exact Opposite of Burn Weakness Major, except Weakness Major is 50% incoming, this is -40% incoming.
|
||||
var_changes = list("burn_mod" = 0.6)
|
||||
excludes = list(/datum/trait/positive/burn_resist, /datum/trait/positive/minor_burn_resist)
|
||||
|
||||
/datum/trait/positive/brute_resist_plus // Equivalent to Brute Weakness Major, cannot be taken at the same time.
|
||||
name = "Major Brute Resist"
|
||||
desc = "Adds 40% resistance to brute damage sources."
|
||||
cost = 3 // Exact Opposite of Brute Weakness Major, except Weakness Major is 50% incoming, this is -40% incoming.
|
||||
var_changes = list("brute_mod" = 0.6)
|
||||
excludes = list(/datum/trait/positive/brute_resist, /datum/trait/positive/minor_brute_resist)
|
||||
|
||||
/datum/trait/positive/endurance_very_high
|
||||
name = "Very High Endurance"
|
||||
desc = "Increases your maximum total hitpoints to 150. You require 300 damage in total to die, compared to 200 normally. You will still go into crit after losing 150 HP, compared to crit at 100 HP."
|
||||
cost = 6 // This should cost a LOT, because your total health becomes 300 to be fully dead, rather than 200 normally, or 250 for High Endurance. HE costs 2, double it here.
|
||||
var_changes = list("total_health" = 150)
|
||||
excludes = list(/datum/trait/positive/endurance_high)
|
||||
|
||||
/datum/trait/positive/endurance_very_high/apply(var/datum/species/S,var/mob/living/carbon/human/H)
|
||||
..(S,H)
|
||||
H.setMaxHealth(S.total_health)
|
||||
|
||||
|
||||
/datum/trait/positive/endurance_extremely_high
|
||||
name = "Extremely High Endurance"
|
||||
desc = "Increases your maximum total hitpoints to 175"
|
||||
cost = 9 // This should cost a LOT, because your total health becomes 350 to be fully dead, rather than 200 normally, or 250 for High Endurance. HE costs 2, this costs 3x it.
|
||||
var_changes = list("total_health" = 175)
|
||||
|
||||
/datum/trait/positive/endurance_extremely_high/apply(var/datum/species/S,var/mob/living/carbon/human/H)
|
||||
..(S,H)
|
||||
H.setMaxHealth(S.total_health)
|
||||
|
||||
/datum/trait/positive/pain_tolerance_advanced // High Pain Intolerance is 50% incoming pain, but this is 40% reduced incoming pain.
|
||||
name = "Increased Pain Tolerance"
|
||||
desc = "You are noticeably more resistant to pain than most, and experience 40% less pain from all sources."
|
||||
cost = 3 // Equivalent to High Pain Intolerance, but less pain resisted for balance reasons.
|
||||
var_changes = list("pain_mod" = 0.6)
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/carbon/human/proc/lick_wounds(var/mob/living/carbon/M) //YWedit, originally, living/carbon/M in living_mobs(1), However, living_mobs does not include src as possible target.
|
||||
/mob/living/carbon/human/proc/lick_wounds(var/mob/living/carbon/M) // Allows the user to lick themselves. Given how rarely this trait is used, I don't see an issue with a slight buff.
|
||||
set name = "Lick Wounds"
|
||||
set category = "Abilities"
|
||||
set desc = "Disinfect and heal small wounds with your saliva."
|
||||
@@ -11,6 +11,10 @@
|
||||
to_chat(src, "<span class='warning'>You need to be closer to do that.</span>") // CHOMPEdit - don't use src << unless you have to.
|
||||
return
|
||||
|
||||
if (get_dist(src,M) >= 2)
|
||||
to_chat(src, "<span class='warning'>You need to be closer to do that.</span>")
|
||||
return
|
||||
|
||||
if ( ! (istype(src, /mob/living/carbon/human) || \
|
||||
istype(src, /mob/living/silicon)) )
|
||||
to_chat(src, "<span class='warning'>If you even have a tongue, it doesn't work that way.</span>")
|
||||
|
||||
@@ -1,3 +1,29 @@
|
||||
/mob/living/simple_mob
|
||||
//vars for vore_icons toggle control
|
||||
var/vore_icons_toggle = 1 // on by default, as is legacy
|
||||
var/vore_icons_cache = 0 // 0 by default. Going from ON to OFF should store vore_icons val here.
|
||||
|
||||
mob/living/simple_mob/verb/toggle_vore_icons()
|
||||
|
||||
set name = "Toggle Vore Sprite"
|
||||
set desc = "Toggle visibility of changed mob sprite when you have eaten other things."
|
||||
set category = "Abilities"
|
||||
|
||||
if(!vore_icons && !vore_icons_cache)
|
||||
to_chat(src,"<span class='warning'>This simplemob has no vore sprite.</span>")
|
||||
else if(vore_icons_toggle)
|
||||
vore_icons_cache = vore_icons
|
||||
vore_icons = 0
|
||||
vore_icons_toggle = 0
|
||||
to_chat(src,"<span class='warning'>Vore sprite disabled.</span>")
|
||||
else
|
||||
vore_icons = vore_icons_cache
|
||||
vore_icons_toggle = 1
|
||||
to_chat(src,"<span class='warning'>Vore sprite enabled.</span>")
|
||||
|
||||
update_icon()
|
||||
|
||||
|
||||
// a unique named update_transforms override to allow simplemobs going horizontal on lay/stun.
|
||||
// This will not make the mob horizontal if the mob has a icon_rest != null
|
||||
// To use this, add an override in your simplemob subtype of update_transforms with NO . = ..()
|
||||
|
||||
@@ -278,3 +278,113 @@
|
||||
/obj/item/weapon/holder/catslug/Initialize(mapload, mob/held)
|
||||
. = ..()
|
||||
color = held.color
|
||||
|
||||
/datum/category_item/catalogue/fauna/catslug/spaceslug
|
||||
name = "Alien Wildlife - Catslug - Miros"
|
||||
desc = "This catslug serves as the Fuel Depots resident attendant,\
|
||||
despite the facility being fully automated and self-serve. - \
|
||||
The Catslug is an omnivorous terrestrial creature.\
|
||||
Exhibiting properties of both a cat and a slug (hence its name)\
|
||||
it moves somewhat awkwardly. However, the unique qualities of\
|
||||
its body make it exceedingly flexible and smooth, allowing it to\
|
||||
wiggle into and move effectively in even extremely tight spaces.\
|
||||
Additionally, it has surprisingly capable hands, and moves quite\
|
||||
well on two legs or four. Caution is advised when interacting\
|
||||
with these creatures, they are quite intelligent, and proficient\
|
||||
tool users."
|
||||
value = CATALOGUER_REWARD_MEDIUM //Should offer a measure of incentive for people to visit the depot more often.
|
||||
|
||||
/mob/living/simple_mob/vore/alienanimals/catslug/spaceslug
|
||||
name = "Miros"
|
||||
desc = "Looks like catslugs can into space after all! This little chap seems to have gotten their mitts on a tiny spacesuit, there's a nametag on it that reads \"Miros\" alongside the Aether Atmospherics logo."
|
||||
tt_desc = "Mollusca Felis Stellaris"
|
||||
icon_state = "spaceslug"
|
||||
icon_living = "spaceslug"
|
||||
icon_rest = "spaceslug_rest"
|
||||
icon_dead = "spaceslug_dead"
|
||||
digestable = 0
|
||||
catalogue_data = list(/datum/category_item/catalogue/fauna/catslug/spaceslug)
|
||||
holder_type = /obj/item/weapon/holder/catslug/spaceslug
|
||||
makes_dirt = 0
|
||||
say_list_type = /datum/say_list/catslug/spaceslug
|
||||
|
||||
minbodytemp = 0 // Shamelessly stolen temp & atmos tolerances from the space cat.
|
||||
maxbodytemp = 900
|
||||
heat_damage_per_tick = 3
|
||||
cold_damage_per_tick = 2
|
||||
|
||||
min_oxy = 0
|
||||
max_oxy = 0
|
||||
min_tox = 0
|
||||
max_tox = 0
|
||||
min_co2 = 0
|
||||
max_co2 = 0
|
||||
min_n2 = 0
|
||||
max_n2 = 0
|
||||
|
||||
player_msg = "You are an intelligent creature capable of more than most think, clad in a spacesuit that protects you from the ravages of vacuum and hostile atmospheres alike. You can pick up and use many things, and even carry some of them with you into the vents, which you can use to move around quickly. You're quiet and capable, you speak with your hands and your deeds! <br>- - - - -<br> <span class='notice'>Keep in mind, your goal should generally be to survive. You're expected to follow the same rules as everyone else, so don't go self antagging without permission from the staff team, but you are able and capable of defending yourself from those who would attack you for no reason.</span>"
|
||||
|
||||
has_langs = list("Sign Language")
|
||||
|
||||
/datum/say_list/catslug/spaceslug
|
||||
speak = list("Have any porl?", "What is that?", "What kind of ship is that?", "What are you doing?", "How did you get here?", "Don't take off your helmet.", "SPAAAAAACE!", "WAOW!", "Nice weather we're having, isn't it?")
|
||||
|
||||
/mob/living/simple_mob/vore/alienanimals/catslug/spaceslug/Initialize()
|
||||
. = ..()
|
||||
verbs += /mob/living/proc/ventcrawl
|
||||
verbs += /mob/living/proc/hide
|
||||
verbs -= /mob/living/simple_mob/vore/alienanimals/catslug/proc/catslug_color //I don't even want to imagine what the colour change proc would do to their sprite, not to mention ghosts would need to be forced into the catslug so this is more just a safety net than anything
|
||||
|
||||
/mob/living/simple_mob/vore/alienanimals/catslug/spaceslug/attack_hand(mob/living/carbon/human/M as mob)
|
||||
|
||||
if(stat == DEAD)
|
||||
return ..()
|
||||
if(M.a_intent != I_HELP)
|
||||
return ..()
|
||||
playsound(src, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
|
||||
if(resting)
|
||||
M.visible_message("<span class='notice'>\The [M.name] shakes \the [src] awake from their nap.</span>","<span class='notice'>You shake \the [src] awake!</span>")
|
||||
lay_down()
|
||||
ai_holder.go_wake()
|
||||
return
|
||||
if(M.zone_sel.selecting == BP_HEAD)
|
||||
M.visible_message( \
|
||||
"<span class='notice'>[M] pats \the [src] on their helmet.</span>", \
|
||||
"<span class='notice'>You pat \the [src] on their helmet.</span>", )
|
||||
if(client)
|
||||
return
|
||||
if(prob(10))
|
||||
visible_message("<span class='notice'>\The [src] purrs and leans into [M]'s hand.</span>")
|
||||
else if(M.zone_sel.selecting == BP_R_HAND || M.zone_sel.selecting == BP_L_HAND)
|
||||
M.visible_message( \
|
||||
"<span class='notice'>[M] shakes \the [src]'s hand.</span>", \
|
||||
"<span class='notice'>You shake \the [src]'s hand.</span>", )
|
||||
if(client)
|
||||
return
|
||||
if(prob(10))
|
||||
visible_message("<span class='notice'>\The [src]'s looks a little confused and bonks their helmet's faceplate against [M]'s hand experimentally, attempting to nibble at it.</span>")
|
||||
else if(M.zone_sel.selecting == "mouth")
|
||||
M.visible_message( \
|
||||
"<span class='notice'>[M] attempts to boop \the [src]'s nose, defeated only by the helmet they wear.</span>", \
|
||||
"<span class='notice'>You attempt to boop \the [src] on the nose, stopped only by that helmet they wear.</span>", )
|
||||
if(client)
|
||||
return
|
||||
if(prob(10))
|
||||
visible_message("<span class='notice'>\The [src]'s eyes widen as they stare at [M]. After a moment they rub at the faint mark [M]'s digit left upon the surface of their helmet's faceplate.</span>")
|
||||
else if(M.zone_sel.selecting == BP_GROIN)
|
||||
M.visible_message( \
|
||||
"<span class='notice'>[M] rubs \the [src]'s tummy...</span>", \
|
||||
"<span class='notice'>You rub \the [src]'s tummy, accidently pressing a few of the buttons on their chestpiece in the process... You feel the danger.</span>", )
|
||||
if(client)
|
||||
return
|
||||
visible_message("<span class='notice'>\The [src] pushes [M]'s hand away from their tummy and furrows their brow, frantically pressing at the buttons [M] so carelessly pushed!</span>")
|
||||
if(prob(5))
|
||||
ai_holder.target = M
|
||||
ai_holder.track_target_position()
|
||||
ai_holder.set_stance(STANCE_FIGHT)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/holder/catslug/spaceslug
|
||||
item_state = "spaceslug"
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -11,6 +11,9 @@
|
||||
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.
|
||||
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/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.
|
||||
var/list/slime_mutation = list(
|
||||
/mob/living/simple_mob/slime/xenobio/orange,
|
||||
/mob/living/simple_mob/slime/xenobio/metal,
|
||||
@@ -54,7 +57,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 +109,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 +159,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 +232,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 +269,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()
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ var/list/organ_cache = list()
|
||||
|
||||
// Damage vars.
|
||||
var/min_bruised_damage = 10 // Damage before considered bruised
|
||||
var/min_broken_damage = 30 // Damage before becoming broken
|
||||
var/min_broken_damage = 60 // Damage before becoming broken CHOMPEdit: Flat doubling of all min_broken_damage
|
||||
var/max_damage // Damage cap
|
||||
var/can_reject = 1 // Can this organ reject?
|
||||
var/rejecting // Is this organ already being rejected?
|
||||
@@ -361,7 +361,7 @@ var/list/organ_cache = list()
|
||||
robotize()
|
||||
robotic = ORGAN_ASSISTED
|
||||
min_bruised_damage = 15
|
||||
min_broken_damage = 35
|
||||
min_broken_damage = 60 // CHOMPEdit: Flat doubling of all min_broken_damage
|
||||
butcherable = FALSE
|
||||
|
||||
/obj/item/organ/proc/digitize() //Used to make the circuit-brain. On this level in the event more circuit-organs are added/tweaks are wanted.
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
/obj/item/organ/external
|
||||
name = "external"
|
||||
min_broken_damage = 30
|
||||
min_broken_damage = 60 // CHOMPEdit: Flat doubling of all min_broken_damage
|
||||
max_damage = 0
|
||||
dir = SOUTH
|
||||
organ_tag = "limb"
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
organ_tag = BP_TORSO
|
||||
icon_name = "torso"
|
||||
max_damage = 100
|
||||
min_broken_damage = 35
|
||||
min_broken_damage = 60 // CHOMPEdit: Increase all min_broken_damage (Ribs should take more force to break)
|
||||
w_class = ITEMSIZE_HUGE
|
||||
body_part = UPPER_TORSO
|
||||
vital = 1
|
||||
@@ -59,7 +59,7 @@
|
||||
organ_tag = BP_GROIN
|
||||
icon_name = "groin"
|
||||
max_damage = 100
|
||||
min_broken_damage = 35
|
||||
min_broken_damage = 50 // CHOMPEdit: Increase all min_broken_damage
|
||||
w_class = ITEMSIZE_LARGE
|
||||
body_part = LOWER_TORSO
|
||||
vital = 1
|
||||
@@ -89,7 +89,7 @@
|
||||
name = "left arm"
|
||||
icon_name = "l_arm"
|
||||
max_damage = 80
|
||||
min_broken_damage = 30
|
||||
min_broken_damage = 40 // CHOMPEdit: Flat doubling of all min_broken_damage
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
body_part = ARM_LEFT
|
||||
parent_organ = BP_TORSO
|
||||
@@ -129,7 +129,7 @@
|
||||
name = "left leg"
|
||||
icon_name = "l_leg"
|
||||
max_damage = 80
|
||||
min_broken_damage = 30
|
||||
min_broken_damage = 40 // CHOMPEdit: Increase all min_broken_damage
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
body_part = LEG_LEFT
|
||||
icon_position = LEFT
|
||||
@@ -168,7 +168,7 @@
|
||||
name = "left foot"
|
||||
icon_name = "l_foot"
|
||||
max_damage = 50
|
||||
min_broken_damage = 15
|
||||
min_broken_damage = 30 // CHOMPEdit: Increase all min_broken_damage
|
||||
w_class = ITEMSIZE_SMALL
|
||||
body_part = FOOT_LEFT
|
||||
icon_position = LEFT
|
||||
@@ -213,7 +213,7 @@
|
||||
name = "left hand"
|
||||
icon_name = "l_hand"
|
||||
max_damage = 50
|
||||
min_broken_damage = 15
|
||||
min_broken_damage = 30 // CHOMPEdit: Increase all min_broken_damage
|
||||
w_class = ITEMSIZE_SMALL
|
||||
body_part = HAND_LEFT
|
||||
parent_organ = BP_L_ARM
|
||||
@@ -262,7 +262,7 @@
|
||||
name = "head"
|
||||
slot_flags = SLOT_BELT
|
||||
max_damage = 75
|
||||
min_broken_damage = 35
|
||||
min_broken_damage = 50 // CHOMPEdit: Increase all min_broken_damage
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
body_part = HEAD
|
||||
vital = 1
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
/obj/item/organ/external/chest/unathi
|
||||
max_damage = 100
|
||||
min_broken_damage = 40
|
||||
min_broken_damage = 80 // CHOMPEdit: Flat doubling of all min_broken_damage
|
||||
encased = "upper ribplates"
|
||||
|
||||
/obj/item/organ/external/groin/unathi
|
||||
max_damage = 100
|
||||
min_broken_damage = 40
|
||||
min_broken_damage = 80 // CHOMPEdit: Flat doubling of all min_broken_damage
|
||||
encased = "lower ribplates"
|
||||
|
||||
/obj/item/organ/external/head/unathi
|
||||
max_damage = 75
|
||||
min_broken_damage = 35
|
||||
min_broken_damage = 70 // CHOMPEdit: Flat doubling of all min_broken_damage
|
||||
eye_icon = "eyes_s"
|
||||
force = 5
|
||||
throwforce = 10
|
||||
|
||||
@@ -204,242 +204,17 @@
|
||||
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///////
|
||||
///////////////////////////////
|
||||
/decl/chemical_reaction/instant/slime_food
|
||||
name = "Slime Bork"
|
||||
id = "m_tele2"
|
||||
result = null
|
||||
required_reagents = list("phoron" = 10, "slimejelly" = 5, "nutriment" = 20)
|
||||
result_amount = 1
|
||||
|
||||
/decl/chemical_reaction/instant/slime_food/on_reaction(var/datum/reagents/holder)
|
||||
var/list/borks = subtypesof(/obj/item/weapon/reagent_containers/food/snacks)
|
||||
|
||||
|
||||
playsound(holder.my_atom, 'sound/effects/phasein.ogg', 100, 1)
|
||||
|
||||
for(var/i = 1, i <= 4 + rand(1,2), i++)
|
||||
var/chosen = pick(borks)
|
||||
var/obj/B = new chosen
|
||||
if(B)
|
||||
B.loc = get_turf(holder.my_atom)
|
||||
if(prob(50))
|
||||
for(var/j = 1, j <= rand(1, 3), j++)
|
||||
step(B, pick(NORTH,SOUTH,EAST,WEST))
|
||||
|
||||
/decl/chemical_reaction/instant/materials
|
||||
name = "Slime materials"
|
||||
id = "slimematerial"
|
||||
result = null
|
||||
required_reagents = list("phoron" = 20, "slimejelly" = 40, "aluminum" = 20) //Woah there! You have the possibility of making diamonds! 8 ground up slimes required for one of these, and you still have a 10% chance for it to fail.
|
||||
result_amount = 1
|
||||
|
||||
/decl/chemical_reaction/instant/materials/on_reaction(var/datum/reagents/holder)
|
||||
var/fail_chance = rand(1,1000)
|
||||
if(fail_chance == 1) // 0.1% chance of exploding, so scientists don't exclusively abuse this to obtain materials.
|
||||
for(var/mob/O in viewers(get_turf(holder.my_atom), null))
|
||||
O.show_message(text("<span class='warning'>The solution begins to vibrate violently!</span>"), 1) // It was at this moment, the Xenobiologist knew... he fucked up.
|
||||
sleep(30)
|
||||
playsound(holder.my_atom, 'sound/items/Welder2.ogg', 100, 1)
|
||||
for(var/mob/O in viewers(get_turf(holder.my_atom), null))
|
||||
O.show_message(text("<span class='warning'>The reaction begins to rapidly sizzle and swell outwards!</span>"), 1)
|
||||
sleep(20)
|
||||
explosion(get_turf(holder.my_atom), 0 ,4, 8) //Enough to cause severe damage in the area, but not so much that it'll instantly gib the person.
|
||||
empulse(get_turf(holder.my_atom), 3, 7) //Uh oh, it produced some uranium, too! EMP blast!
|
||||
return
|
||||
|
||||
if(fail_chance < 101) // 10% chance of it not working at all.
|
||||
playsound(holder.my_atom, 'sound/items/Welder.ogg', 100, 1)
|
||||
for(var/mob/O in viewers(get_turf(holder.my_atom), null))
|
||||
O.show_message(text("<span class='warning'>The slime core fizzles disappointingly.</span>"), 1)
|
||||
return
|
||||
|
||||
var/blocked = list(
|
||||
/obj/item/stack/material, //Technical stacks
|
||||
/obj/item/stack/hairlesshide, //Useless leather production steps
|
||||
/obj/item/stack/wetleather,
|
||||
/obj/item/stack/material/algae/ten) //Why is this one even a separate thing
|
||||
blocked += typesof(/obj/item/stack/material/cyborg) //Borg matter synths, should only exist in borgs
|
||||
blocked += typesof(/obj/item/stack/animalhide) //Hides which are only used for leather production anyway
|
||||
|
||||
var/rare_types = list(
|
||||
/obj/item/stack/material/morphium, //Complex materials requiring Particle Smasher to create
|
||||
/obj/item/stack/material/morphium/hull,
|
||||
/obj/item/stack/material/valhollide,
|
||||
/obj/item/stack/material/supermatter)
|
||||
|
||||
var/list/material = typesof(/obj/item/stack/material) - blocked
|
||||
|
||||
playsound(holder.my_atom, 'sound/effects/phasein.ogg', 100, 1)
|
||||
|
||||
var/spawn_amount = rand(1,50)
|
||||
var/chosen = pick(material)
|
||||
if(chosen in rare_types)
|
||||
spawn_amount = rand(1,15)
|
||||
new chosen(get_turf(holder.my_atom), spawn_amount)
|
||||
|
||||
/decl/chemical_reaction/instant/slimelight
|
||||
name = "Slime Glow"
|
||||
id = "m_glow"
|
||||
result = null
|
||||
required_reagents = list("phoron" = 5, "slimejelly" = 5, "water" = 10) //Takes 10 water so it doesn't mess with the frost oil.
|
||||
result_amount = 1
|
||||
|
||||
/decl/chemical_reaction/instant/slimelight/on_reaction(var/datum/reagents/holder)
|
||||
for(var/mob/O in viewers(get_turf(holder.my_atom), null))
|
||||
O.show_message(text("<span class='warning'> The contents of the slime core harden and begin to emit a warm, bright light.</span>"), 1)
|
||||
var/obj/item/device/flashlight/slime/F = new /obj/item/device/flashlight/slime
|
||||
F.loc = get_turf(holder.my_atom)
|
||||
|
||||
|
||||
/decl/chemical_reaction/instant/slimephoron
|
||||
name = "Slime Phoron"
|
||||
id = "m_plasma"
|
||||
result = null
|
||||
required_reagents = list("phoron" = 20, "uranium" = 20, "slimejelly" = 20)
|
||||
result_amount = 1
|
||||
|
||||
/decl/chemical_reaction/instant/slimephoron/on_reaction(var/datum/reagents/holder)
|
||||
new /obj/item/stack/material/phoron(get_turf(holder.my_atom), 10)
|
||||
|
||||
/decl/chemical_reaction/instant/slimefreeze
|
||||
name = "Slime Freeze"
|
||||
id = "m_freeze"
|
||||
result = null
|
||||
required_reagents = list("phoron" = 10, "coolant" = 10, "slimejelly" = 10)
|
||||
result_amount = 1
|
||||
|
||||
/decl/chemical_reaction/instant/slimefreeze/on_reaction(var/datum/reagents/holder)
|
||||
for(var/mob/O in viewers(get_turf(holder.my_atom), null))
|
||||
O.show_message(text("<span class='warning'>The slime extract begins to vibrate violently!</span>"), 1)
|
||||
sleep(50)
|
||||
playsound(holder.my_atom, 'sound/effects/phasein.ogg', 100, 1)
|
||||
for(var/mob/living/M in range (get_turf(holder.my_atom), 7))
|
||||
M.bodytemperature -= 140
|
||||
to_chat(M, "<span class='notice'> You suddenly feel a chill!</span>")
|
||||
|
||||
/decl/chemical_reaction/instant/slimefrost
|
||||
name = "Slime Frost Oil"
|
||||
id = "m_frostoil"
|
||||
result = "frostoil"
|
||||
required_reagents = list("phoron" = 5, "slimejelly" = 5, "water" = 5, "coolant" = 5)
|
||||
result_amount = 10
|
||||
|
||||
/decl/chemical_reaction/instant/slimefire
|
||||
name = "Slime fire"
|
||||
id = "m_fire"
|
||||
result = null
|
||||
required_reagents = list("phoron" = 60, "slimejelly" = 30, "potassium" = 30)
|
||||
result_amount = 1
|
||||
|
||||
/decl/chemical_reaction/instant/slimefire/on_reaction(var/datum/reagents/holder)
|
||||
for(var/mob/O in viewers(get_turf(holder.my_atom), null))
|
||||
O.show_message(text("<span class='warning'>The slime extract begins to vibrate violently!</span>"), 1)
|
||||
sleep(50)
|
||||
var/turf/location = get_turf(holder.my_atom.loc)
|
||||
for(var/turf/simulated/floor/target_tile in range(0,location))
|
||||
target_tile.assume_gas("phoron", 25, 1400)
|
||||
spawn (0) target_tile.hotspot_expose(700, 400)
|
||||
|
||||
/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.
|
||||
result_amount = 1
|
||||
|
||||
/decl/chemical_reaction/instant/slimeheal //A slime healing mixture. Why not.
|
||||
name = "Slime Health"
|
||||
id = "slimeheal"
|
||||
result = "null"
|
||||
required_reagents = list("phoron" = 10, "bicaridine" = 10, "kelotane" = 10, "inaprovaline" = 10, "slimejelly" = 10)
|
||||
|
||||
/decl/chemical_reaction/instant/slimeheal/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
for (var/mob/living/carbon/C in viewers(get_turf(holder.my_atom), null))
|
||||
to_chat(C, "<span class='notice'>A wave of energy suddenly invigorates you.</span>")
|
||||
C.adjustBruteLoss(-25)
|
||||
C.adjustFireLoss(-25)
|
||||
C.adjustToxLoss(-25)
|
||||
C.adjustOxyLoss(-25)
|
||||
C.adjustBrainLoss(-25)
|
||||
C.adjustCloneLoss(-25)
|
||||
C.updatehealth()
|
||||
|
||||
/decl/chemical_reaction/instant/slimejelly
|
||||
name = "Slime Jam"
|
||||
id = "m_jam"
|
||||
result = "slimejelly"
|
||||
required_reagents = list("phoron" = 20, "sugar" = 50, "lithium" = 50) //In case a xenobiologist is impatient and is willing to drain their dispenser resources, along with plasma!
|
||||
result_amount = 5
|
||||
|
||||
/decl/chemical_reaction/instant/slimevore
|
||||
name = "Slime Vore" // Hostile vore mobs only
|
||||
id = "m_tele"
|
||||
result = null
|
||||
required_reagents = list("phoron" = 20, "nutriment" = 20, "sugar" = 20, "mutationtoxin" = 20) //Can't do slime jelly as it'll conflict with another, but mutation toxin will do.
|
||||
result_amount = 1
|
||||
|
||||
/decl/chemical_reaction/instant/slimevore/on_reaction(var/datum/reagents/holder)
|
||||
var/mob_path = /mob/living/simple_mob
|
||||
var/blocked = list( //List of things we do NOT want to spawn
|
||||
/mob/living/simple_mob, //Technical parent mobs
|
||||
/mob/living/simple_mob/animal,
|
||||
/mob/living/simple_mob/animal/passive,
|
||||
/mob/living/simple_mob/animal/space,
|
||||
/mob/living/simple_mob/blob,
|
||||
/mob/living/simple_mob/mechanical,
|
||||
/mob/living/simple_mob/mechanical/mecha,
|
||||
/mob/living/simple_mob/slime,
|
||||
/mob/living/simple_mob/vore,
|
||||
/mob/living/simple_mob/vore/aggressive,
|
||||
/mob/living/simple_mob/illusion, //Other technical mobs
|
||||
/mob/living/simple_mob/animal/passive/crab/Coffee, //Unique pets/named mobs
|
||||
/mob/living/simple_mob/animal/passive/cat/runtime,
|
||||
/mob/living/simple_mob/animal/passive/cat/bones,
|
||||
/mob/living/simple_mob/animal/passive/cat/tabiranth,
|
||||
/mob/living/simple_mob/animal/passive/dog/corgi/puppy/Bockscar,
|
||||
/mob/living/simple_mob/animal/passive/dog/corgi/Ian,
|
||||
/mob/living/simple_mob/animal/passive/dog/corgi/Lisa,
|
||||
/mob/living/simple_mob/animal/passive/dog/tamaskan/Spice,
|
||||
/mob/living/simple_mob/animal/passive/fox/renault,
|
||||
/mob/living/simple_mob/animal/passive/bird/azure_tit/tweeter,
|
||||
/mob/living/simple_mob/animal/passive/bird/parrot/poly,
|
||||
/mob/living/simple_mob/animal/sif/fluffy,
|
||||
/mob/living/simple_mob/animal/sif/fluffy/silky,
|
||||
/mob/living/simple_mob/animal/passive/snake/python/noodle,
|
||||
/mob/living/simple_mob/slime/xenobio/rainbow/kendrick,
|
||||
/mob/living/simple_mob/animal/space/space_worm, //Space Worm parts that aren't proper heads
|
||||
/mob/living/simple_mob/animal/space/space_worm/head/severed,
|
||||
/mob/living/simple_mob/animal/borer, //Event/player-control-only mobs
|
||||
/mob/living/simple_mob/vore/hostile/morph
|
||||
)//exclusion list for things you don't want the reaction to create.
|
||||
blocked += typesof(/mob/living/simple_mob/mechanical/ward) //Wards that should be created with ward items, are mobs mostly on technicalities
|
||||
blocked += typesof(/mob/living/simple_mob/construct) //Should only exist
|
||||
blocked += typesof(/mob/living/simple_mob/vore/demon) //as player-controlled
|
||||
blocked += typesof(/mob/living/simple_mob/shadekin) //and/or event things
|
||||
blocked += typesof(/mob/living/simple_mob/horror)
|
||||
var/list/voremobs = typesof(mob_path) - blocked // list of possible hostile mobs
|
||||
|
||||
playsound(holder.my_atom, 'sound/effects/phasein.ogg', 100, 1)
|
||||
var/spawn_count = rand(1,3)
|
||||
for(var/i = 1, i <= spawn_count, i++)
|
||||
var/chosen = pick(voremobs)
|
||||
var/mob/living/simple_mob/C = new chosen
|
||||
C.faction = "slimesummon"
|
||||
C.loc = get_turf(holder.my_atom)
|
||||
if(prob(50))
|
||||
for(var/j = 1, j <= rand(1, 3), j++)
|
||||
step(C, pick(NORTH,SOUTH,EAST,WEST))
|
||||
|
||||
/decl/chemical_reaction/instant/slime/sapphire_mutation
|
||||
name = "Slime Mutation Toxins"
|
||||
id = "slime_mutation_tox"
|
||||
result = "mutationtoxin"
|
||||
required_reagents = list("blood" = 5)
|
||||
result_amount = 30
|
||||
required = /obj/item/slime_extract/sapphire
|
||||
|
||||
/decl/chemical_reaction/instant/biomass
|
||||
result_amount = 6 // Roughly 120u per phoron sheet
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
var/vore_egg_type = "egg" // Default egg type.
|
||||
var/feral = 0 // How feral the mob is, if at all. Does nothing for non xenochimera at the moment.
|
||||
var/revive_ready = REVIVING_READY // Only used for creatures that have the xenochimera regen ability, so far.
|
||||
var/revive_finished = 0 // CHOMPEdit: Only used for xenochimera regen, allows us to find out when the regen will finish.
|
||||
var/revive_finished = 0 // Only used for xenochimera regen, allows us to find out when the regen will finish.
|
||||
var/metabolism = 0.0015
|
||||
var/vore_taste = null // What the character tastes like
|
||||
var/vore_smell = null // What the character smells like
|
||||
@@ -45,11 +45,10 @@
|
||||
var/regen_sounds = list(
|
||||
'sound/effects/mob_effects/xenochimera/regen_1.ogg',
|
||||
'sound/effects/mob_effects/xenochimera/regen_2.ogg',
|
||||
'sound/effects/mob_effects/xenochimera/regen_3.ogg',
|
||||
'sound/effects/mob_effects/xenochimera/regen_4.ogg',
|
||||
'sound/effects/mob_effects/xenochimera/regen_3.ogg',
|
||||
'sound/effects/mob_effects/xenochimera/regen_5.ogg'
|
||||
)
|
||||
// CHOMPEdit: Regen Sounds
|
||||
|
||||
//
|
||||
// Hook for generic creation of stuff on new creatures
|
||||
|
||||
@@ -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
@@ -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))
|
||||
|
||||
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 123 KiB After Width: | Height: | Size: 124 KiB |
|
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 74 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 26 KiB |
BIN
icons/mob/slimes_vr.dmi
Normal file
|
After Width: | Height: | Size: 480 B |
@@ -1294,7 +1294,15 @@
|
||||
icon_state = "1-4"
|
||||
},
|
||||
/turf/simulated/shuttle/plating/airless,
|
||||
<<<<<<< HEAD
|
||||
/area/sc_away/fueldepot)
|
||||
=======
|
||||
/area/tether_away/fueldepot)
|
||||
"ow" = (
|
||||
/obj/machinery/vending/weeb,
|
||||
/turf/simulated/floor/tiled/techmaint/airless,
|
||||
/area/tether_away/fueldepot)
|
||||
>>>>>>> bd65b8dc0f... Merge pull request #12551 from BonniePandora/spaceslug
|
||||
"rE" = (
|
||||
/obj/machinery/atmospherics/pipe/manifold/visible/aux{
|
||||
dir = 1
|
||||
@@ -1339,7 +1347,15 @@
|
||||
/obj/structure/table/rack/shelf/steel,
|
||||
/obj/random/powercell,
|
||||
/turf/simulated/floor/tiled/techmaint/airless,
|
||||
<<<<<<< HEAD
|
||||
/area/sc_away/fueldepot)
|
||||
=======
|
||||
/area/tether_away/fueldepot)
|
||||
"Gh" = (
|
||||
/obj/machinery/vending/fitness,
|
||||
/turf/simulated/floor/tiled/techmaint/airless,
|
||||
/area/tether_away/fueldepot)
|
||||
>>>>>>> bd65b8dc0f... Merge pull request #12551 from BonniePandora/spaceslug
|
||||
"IR" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/visible/aux{
|
||||
dir = 8
|
||||
@@ -1365,14 +1381,36 @@
|
||||
/obj/structure/table/rack/steel,
|
||||
/obj/item/weapon/storage/toolbox/mechanical,
|
||||
/turf/simulated/floor/tiled/techmaint/airless,
|
||||
<<<<<<< HEAD
|
||||
/area/sc_away/fueldepot)
|
||||
=======
|
||||
/area/tether_away/fueldepot)
|
||||
"QY" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/visible/universal{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/catwalk,
|
||||
/mob/living/simple_mob/vore/alienanimals/catslug/spaceslug,
|
||||
/turf/simulated/shuttle/plating/airless,
|
||||
/area/tether_away/fueldepot)
|
||||
>>>>>>> bd65b8dc0f... Merge pull request #12551 from BonniePandora/spaceslug
|
||||
"Vy" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "2-8"
|
||||
},
|
||||
/obj/structure/catwalk,
|
||||
/turf/simulated/shuttle/plating/airless,
|
||||
<<<<<<< HEAD
|
||||
/area/sc_away/fueldepot)
|
||||
=======
|
||||
/area/tether_away/fueldepot)
|
||||
"XR" = (
|
||||
/obj/machinery/vending/foodfast{
|
||||
dir = 0
|
||||
},
|
||||
/turf/simulated/floor/tiled/techmaint/airless,
|
||||
/area/tether_away/fueldepot)
|
||||
>>>>>>> bd65b8dc0f... Merge pull request #12551 from BonniePandora/spaceslug
|
||||
"Ys" = (
|
||||
/obj/structure/table/steel_reinforced,
|
||||
/turf/simulated/floor/tiled/techmaint/airless,
|
||||
@@ -11246,7 +11284,7 @@ ao
|
||||
aS
|
||||
bc
|
||||
bo
|
||||
bC
|
||||
QY
|
||||
rE
|
||||
cc
|
||||
cn
|
||||
@@ -11954,12 +11992,12 @@ aa
|
||||
aG
|
||||
aa
|
||||
aF
|
||||
aG
|
||||
Gh
|
||||
aG
|
||||
bz
|
||||
IR
|
||||
aG
|
||||
aG
|
||||
XR
|
||||
aF
|
||||
aa
|
||||
aG
|
||||
@@ -12238,7 +12276,7 @@ aD
|
||||
aM
|
||||
aa
|
||||
aF
|
||||
aG
|
||||
ow
|
||||
bs
|
||||
bz
|
||||
bN
|
||||
|
||||
BIN
sound/voice/coyoteawoo2.ogg
Normal file
BIN
sound/voice/coyoteawoo3.ogg
Normal file
BIN
sound/voice/coyoteawoo4.ogg
Normal file
BIN
sound/voice/coyoteawoo5.ogg
Normal file
@@ -2291,7 +2291,6 @@
|
||||
#include "code\modules\emotes\definitions\audible.dm"
|
||||
#include "code\modules\emotes\definitions\audible_belch.dm"
|
||||
#include "code\modules\emotes\definitions\audible_cough.dm"
|
||||
#include "code\modules\emotes\definitions\audible_furry_ch.dm"
|
||||
#include "code\modules\emotes\definitions\audible_furry_vr.dm"
|
||||
#include "code\modules\emotes\definitions\audible_scream.dm"
|
||||
#include "code\modules\emotes\definitions\audible_scream_ch.dm"
|
||||
@@ -4378,9 +4377,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"
|
||||
|
||||