[MIRROR] Moves species brutemod and burnmod to be handled by bodyparts [MDB IGNORE] (#21903)

* Moves species brutemod and burnmod to be handled by bodyparts

* Fixes compilation issues and updates the brute and burn mods on our own species

* Re-ticks the ashwalker bodyparts

---------

Co-authored-by: ChungusGamer666 <82850673+ChungusGamer666@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
This commit is contained in:
SkyratBot
2023-07-01 15:25:44 -04:00
committed by GitHub
co-authored by ChungusGamer666 GoldenAlpharex
parent 614e401062
commit 90f2ff4854
38 changed files with 267 additions and 120 deletions
+6 -2
View File
@@ -492,6 +492,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define TRAIT_HATED_BY_DOGS "hated_by_dogs"
/// Mobs with this trait will not be immobilized when held up
#define TRAIT_NOFEAR_HOLDUPS "no_fear_holdup"
/// Mob has gotten an armor buff from adamantine extract
#define TRAIT_ADAMANTINE_EXTRACT_ARMOR "adamantine_extract_armor"
/// Mobs with this trait won't be able to dual wield guns.
#define TRAIT_NO_GUN_AKIMBO "no_gun_akimbo"
@@ -957,8 +959,10 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define BEAUTY_ELEMENT_TRAIT "beauty_element"
#define MOOD_DATUM_TRAIT "mood_datum"
#define DRONE_SHY_TRAIT "drone_shy"
/// Pacifism trait given by stabilized light pink extracts.
#define STABILIZED_LIGHT_PINK_TRAIT "stabilized_light_pink"
/// Trait given by stabilized light pink extracts
#define STABILIZED_LIGHT_PINK_EXTRACT_TRAIT "stabilized_light_pink"
/// Trait given by adamantine extracts
#define ADAMANTINE_EXTRACT_TRAIT "adamantine_extract"
/// Given by the multiple_lives component to the previous body of the mob upon death.
#define EXPIRED_LIFE_TRAIT "expired_life"
/// Trait given to an atom/movable when they orbit something.
+2 -2
View File
@@ -891,8 +891,8 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block())
if(3)
to_chat(src, span_notice("Oh, I actually feel quite alright!"))
if(4)
to_chat(src, span_notice("Oh, I actually feel quite alright!")) //you thought
physiology.damage_resistance = -20000
to_chat(src, span_notice("Oh, I actually feel quite alright!"))
physiology.damage_resistance -= 20000 //you thought
if(5)
to_chat(src, span_notice("Oh, I actually feel quite alright!"))
reagents.add_reagent(/datum/reagent/aslimetoxin, 10)
@@ -5,7 +5,6 @@
name = "Nightmare"
id = SPECIES_NIGHTMARE
examine_limb_id = SPECIES_SHADOW
burnmod = 1.5
changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE
no_equip_flags = ITEM_SLOT_MASK | ITEM_SLOT_OCLOTHING | ITEM_SLOT_GLOVES | ITEM_SLOT_FEET | ITEM_SLOT_ICLOTHING | ITEM_SLOT_SUITSTORE
species_traits = list(NO_UNDERWEAR,NO_DNA_COPY,NOTRANSSTING,NOEYESPRITES)
@@ -7,6 +7,8 @@
setup_mood()
// This needs to be called very very early in human init (before organs / species are created at the minimum)
setup_organless_effects()
// Physiology needs to be created before species, as some species modify physiology
setup_physiology()
create_dna()
dna.species.create_fresh_body(src)
@@ -17,8 +19,6 @@
prepare_huds() //Prevents a nasty runtime on human init
physiology = new()
. = ..()
RegisterSignal(src, COMSIG_COMPONENT_CLEAN_FACE_ACT, PROC_REF(clean_face))
@@ -34,6 +34,9 @@
GLOB.human_list += src
SSopposing_force.give_opfor_button(src) //SKYRAT EDIT - OPFOR SYSTEM
/mob/living/carbon/human/proc/setup_physiology()
physiology = new()
/mob/living/carbon/human/proc/setup_mood()
if (CONFIG_GET(flag/disable_human_mood))
return
@@ -57,7 +60,8 @@
/mob/living/carbon/human/Destroy()
QDEL_NULL(physiology)
QDEL_LIST(bioware)
if(biowares)
QDEL_LIST(biowares)
GLOB.human_list -= src
if (mob_mood)
@@ -68,7 +68,7 @@
var/datum/physiology/physiology
var/list/datum/bioware = list()
var/list/datum/bioware/biowares
/// What types of mobs are allowed to ride/buckle to this mob
var/static/list/can_ride_typecache = typecacheof(list(/mob/living/carbon/human, /mob/living/simple_animal/slime, /mob/living/simple_animal/parrot))
@@ -1,5 +1,4 @@
//Stores several modifiers in a way that isn't cleared by changing species
/datum/physiology
var/brute_mod = 1 // % of brute damage taken from all sources
var/burn_mod = 1 // % of burn damage taken from all sources
+28 -28
View File
@@ -33,8 +33,6 @@ GLOBAL_LIST_EMPTY(features_by_species)
///The alpha used by the hair. 255 is completely solid, 0 is invisible.
var/hair_alpha = 255
///Examine text when the person has cellular damage.
var/cellular_damage_desc = DEFAULT_CLONE_EXAMINE_TEXT
///This is used for children, it will determine their default limb ID for use of examine. See [/mob/living/carbon/human/proc/examine].
var/examine_limb_id
///Never, Optional, or Forced digi legs?
@@ -111,12 +109,11 @@ GLOBAL_LIST_EMPTY(features_by_species)
///Multiplier for the race's speed. Positive numbers make it move slower, negative numbers make it move faster.
var/speedmod = 0
///Percentage modifier for overall defense of the race, or less defense, if it's negative.
var/armor = 0
///multiplier for brute damage
var/brutemod = 1
///multiplier for burn damage
var/burnmod = 1
/**
* Percentage modifier for overall defense of the race, or less defense, if it's negative
* THIS MODIFIES ALL DAMAGE TYPES.
**/
var/damage_modifier = 0
///multiplier for damage from cold temperature
var/coldmod = 1
///multiplier for damage from hot temperature
@@ -452,7 +449,7 @@ GLOBAL_LIST_EMPTY(features_by_species)
* * old_species - The species that the carbon used to be before becoming this race, used for regenerating organs.
* * pref_load - Preferences to be loaded from character setup, loads in preferred mutant things like bodyparts, digilegs, skin color, etc.
*/
/datum/species/proc/on_species_gain(mob/living/carbon/C, datum/species/old_species, pref_load)
/datum/species/proc/on_species_gain(mob/living/carbon/human/C, datum/species/old_species, pref_load)
SHOULD_CALL_PARENT(TRUE)
// Drop the items the new species can't wear
if((AGENDER in species_traits))
@@ -466,7 +463,7 @@ GLOBAL_LIST_EMPTY(features_by_species)
C.mob_biotypes = inherent_biotypes
C.mob_respiration_type = inherent_respiration_type
if (old_species.type != type)
if(old_species.type != type)
replace_body(C, src)
regenerate_organs(C, old_species, visual_only = C.visual_only_organs)
@@ -1412,7 +1409,7 @@ GLOBAL_LIST_EMPTY(features_by_species)
/datum/species/proc/apply_damage(damage, damagetype = BRUTE, def_zone = null, blocked, mob/living/carbon/human/H, forced = FALSE, spread_damage = FALSE, wound_bonus = 0, bare_wound_bonus = 0, sharpness = NONE, attack_direction = null, attacking_item)
SEND_SIGNAL(H, COMSIG_MOB_APPLY_DAMAGE, damage, damagetype, def_zone, blocked, wound_bonus, bare_wound_bonus, sharpness, attack_direction, attacking_item)
var/hit_percent = (100-(blocked+armor))/100
var/hit_percent = (100-(damage_modifier+blocked))/100
hit_percent = (hit_percent * (100-H.physiology.damage_resistance))/100
if(!damage || (!forced && hit_percent <= 0))
return 0
@@ -1431,7 +1428,7 @@ GLOBAL_LIST_EMPTY(features_by_species)
switch(damagetype)
if(BRUTE)
H.damageoverlaytemp = 20
var/damage_amount = forced ? damage : damage * hit_percent * brutemod * H.physiology.brute_mod
var/damage_amount = forced ? damage : damage * hit_percent * H.physiology.brute_mod
if(BP)
if(BP.receive_damage(damage_amount, 0, wound_bonus = wound_bonus, bare_wound_bonus = bare_wound_bonus, sharpness = sharpness, attack_direction = attack_direction, damage_source = attacking_item))
H.update_damage_overlays()
@@ -1440,7 +1437,7 @@ GLOBAL_LIST_EMPTY(features_by_species)
INVOKE_ASYNC(H, TYPE_PROC_REF(/mob/living/carbon/human, adjust_pain), damage_amount) // SKYRAT EDIT ADDITION - ERP Pain
if(BURN)
H.damageoverlaytemp = 20
var/damage_amount = forced ? damage : damage * hit_percent * burnmod * H.physiology.burn_mod
var/damage_amount = forced ? damage : damage * hit_percent * H.physiology.burn_mod
if(BP)
if(BP.receive_damage(0, damage_amount, wound_bonus = wound_bonus, bare_wound_bonus = bare_wound_bonus, sharpness = sharpness, attack_direction = attack_direction, damage_source = attacking_item))
H.update_damage_overlays()
@@ -2020,10 +2017,13 @@ GLOBAL_LIST_EMPTY(features_by_species)
* Returns a list containing perks, or an empty list.
*/
/datum/species/proc/create_pref_damage_perks()
// We use the chest to figure out brute and burn mod perks
var/obj/item/bodypart/chest/fake_chest = bodypart_overrides[BODY_ZONE_CHEST]
var/list/to_add = list()
// Brute related
if(brutemod > 1)
if(initial(fake_chest.brute_modifier) > 1)
to_add += list(list(
SPECIES_PERK_TYPE = SPECIES_NEGATIVE_PERK,
SPECIES_PERK_ICON = "band-aid",
@@ -2031,29 +2031,29 @@ GLOBAL_LIST_EMPTY(features_by_species)
SPECIES_PERK_DESC = "[plural_form] are weak to brute damage.",
))
if(brutemod < 1)
if(initial(fake_chest.brute_modifier) < 1)
to_add += list(list(
SPECIES_PERK_TYPE = SPECIES_POSITIVE_PERK,
SPECIES_PERK_ICON = "shield-alt",
SPECIES_PERK_NAME = "Brutal Resilience",
SPECIES_PERK_DESC = "[plural_form] are resilient to bruising and brute damage.",
SPECIES_PERK_DESC = "[plural_form] are resilient to brute damage.",
))
// Burn related
if(burnmod > 1)
if(initial(fake_chest.burn_modifier) > 1)
to_add += list(list(
SPECIES_PERK_TYPE = SPECIES_NEGATIVE_PERK,
SPECIES_PERK_ICON = "burn",
SPECIES_PERK_NAME = "Fire Weakness",
SPECIES_PERK_DESC = "[plural_form] are weak to fire and burn damage.",
SPECIES_PERK_NAME = "Burn Weakness",
SPECIES_PERK_DESC = "[plural_form] are weak to burn damage.",
))
if(burnmod < 1)
if(initial(fake_chest.burn_modifier) < 1)
to_add += list(list(
SPECIES_PERK_TYPE = SPECIES_POSITIVE_PERK,
SPECIES_PERK_ICON = "shield-alt",
SPECIES_PERK_NAME = "Fire Resilience",
SPECIES_PERK_DESC = "[plural_form] are resilient to flames, and burn damage.",
SPECIES_PERK_NAME = "Burn Resilience",
SPECIES_PERK_DESC = "[plural_form] are resilient to burn damage.",
))
// Shock damage
@@ -2361,25 +2361,25 @@ GLOBAL_LIST_EMPTY(features_by_species)
ignore_digi = TRUE
// SKYRAT EDIT END
var/list/final_bodypart_overrides = new_species.bodypart_overrides.Copy()
if(!ignore_digi && ((new_species.digitigrade_customization == DIGITIGRADE_OPTIONAL && target.dna.features["legs"] == DIGITIGRADE_LEGS) || new_species.digitigrade_customization == DIGITIGRADE_FORCED)) //if((new_species.digitigrade_customization == DIGITIGRADE_OPTIONAL && target.dna.features["legs"] == DIGITIGRADE_LEGS) || new_species.digitigrade_customization == DIGITIGRADE_FORCED) // SKYRAT EDIT - Digitigrade customization - ORIGINAL
/* SKYRAT EDIT - Digitigrade customization - ORIGINAL:
new_species.bodypart_overrides[BODY_ZONE_R_LEG] = /obj/item/bodypart/leg/right/digitigrade
new_species.bodypart_overrides[BODY_ZONE_L_LEG] = /obj/item/bodypart/leg/left/digitigrade
final_bodypart_overrides[BODY_ZONE_R_LEG] = /obj/item/bodypart/leg/right/digitigrade
final_bodypart_overrides[BODY_ZONE_L_LEG] = /obj/item/bodypart/leg/left/digitigrade
*/ // ORIGINAL END - SKYRAT EDIT START:
var/obj/item/bodypart/leg/right/r_leg = new_species.bodypart_overrides[BODY_ZONE_R_LEG]
if(r_leg)
new_species.bodypart_overrides[BODY_ZONE_R_LEG] = initial(r_leg.digitigrade_type)
final_bodypart_overrides[BODY_ZONE_R_LEG] = initial(r_leg.digitigrade_type)
var/obj/item/bodypart/leg/left/l_leg = new_species.bodypart_overrides[BODY_ZONE_L_LEG]
if(l_leg)
new_species.bodypart_overrides[BODY_ZONE_L_LEG] = initial(l_leg.digitigrade_type)
final_bodypart_overrides[BODY_ZONE_L_LEG] = initial(l_leg.digitigrade_type)
// SKYRAT EDIT END
for(var/obj/item/bodypart/old_part as anything in target.bodyparts)
if((old_part.change_exempt_flags & BP_BLOCK_CHANGE_SPECIES) || (old_part.bodypart_flags & BODYPART_IMPLANTED))
continue
var/path = new_species.bodypart_overrides?[old_part.body_zone]
var/path = final_bodypart_overrides?[old_part.body_zone]
var/obj/item/bodypart/new_part
if(path)
new_part = new path()
@@ -9,7 +9,6 @@
exotic_blood = /datum/reagent/consumable/liquidelectricity //Liquid Electricity. fuck you think of something better gamer
exotic_bloodtype = "LE"
siemens_coeff = 0.5 //They thrive on energy
brutemod = 1.25 //They're weak to punches
payday_modifier = 0.75
/* SKYRAT EDIT - ORIGINAL
species_traits = list(
@@ -23,7 +23,7 @@
mutantlungs = null
inherent_biotypes = MOB_HUMANOID|MOB_MINERAL
liked_food = STONE
armor = 10
damage_modifier = 10 //golem is stronk
payday_modifier = 0.75
siemens_coeff = 0
no_equip_flags = ITEM_SLOT_MASK | ITEM_SLOT_OCLOTHING | ITEM_SLOT_GLOVES | ITEM_SLOT_FEET | ITEM_SLOT_ICLOTHING | ITEM_SLOT_SUITSTORE
@@ -99,7 +99,7 @@
/// Remove nutrient value from non-mineral food, wish this was on an organ and not species but such is life
/datum/species/golem/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H, delta_time, times_fired)
if (istype(chem, /datum/reagent/consumable) && !istype(chem, /datum/reagent/consumable/nutriment/mineral))
if(istype(chem, /datum/reagent/consumable) && !istype(chem, /datum/reagent/consumable/nutriment/mineral))
var/datum/reagent/consumable/yummy_chem = chem
yummy_chem.nutriment_factor = 0
return ..()
@@ -31,7 +31,6 @@
toxic_food = NONE
coldmod = 6 // = 3x cold damage
heatmod = 0.5 // = 1/4x heat damage
burnmod = 0.5 // = 1/2x generic burn damage
payday_modifier = 0.75
changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT
inherent_factions = list(FACTION_SLIME)
@@ -182,9 +182,9 @@ Lizard subspecies: SILVER SCALED
TRAIT_WINE_TASTER,
)
mutantlungs = null
damage_modifier = 10 //very light silvery scales soften blows
species_language_holder = /datum/language_holder/lizard //SKYRAT EDIT CHANGE - Enclave pirates - ORIGINAL: species_language_holder = /datum/language_holder/lizard/silver
mutanttongue = /obj/item/organ/internal/tongue/lizard //SKYRAT EDIT CHANGE - Enclave pirates - ORIGINAL: mutanttongue = /obj/item/organ/internal/tongue/lizard/silver
armor = 10 //very light silvery scales soften blows
changesource_flags = MIRROR_BADMIN | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN
examine_limb_id = SPECIES_LIZARD
///stored mutcolor for when we turn back off of a silverscale.
@@ -194,22 +194,19 @@ Lizard subspecies: SILVER SCALED
///See above
var/old_eye_color_right
/datum/species/lizard/silverscale/on_species_gain(mob/living/carbon/new_silverscale, datum/species/old_species, pref_load)
var/mob/living/carbon/human/silverscale = new_silverscale
/datum/species/lizard/silverscale/on_species_gain(mob/living/carbon/human/new_silverscale, datum/species/old_species, pref_load)
old_mutcolor = new_silverscale.dna.features["mcolor"]
old_eye_color_left = silverscale.eye_color_left
old_eye_color_right = silverscale.eye_color_right
old_eye_color_left = new_silverscale.eye_color_left
old_eye_color_right = new_silverscale.eye_color_right
new_silverscale.dna.features["mcolor"] = "#eeeeee"
silverscale.eye_color_left = "#0000a0"
silverscale.eye_color_right = "#0000a0"
..()
silverscale.add_filter("silver_glint", 2, list("type" = "outline", "color" = "#ffffff63", "size" = 2))
new_silverscale.eye_color_left = "#0000a0"
new_silverscale.eye_color_right = "#0000a0"
. = ..()
new_silverscale.add_filter("silver_glint", 2, list("type" = "outline", "color" = "#ffffff63", "size" = 2))
/datum/species/lizard/silverscale/on_species_loss(mob/living/carbon/old_silverscale, datum/species/new_species, pref_load)
var/mob/living/carbon/human/was_silverscale = old_silverscale
/datum/species/lizard/silverscale/on_species_loss(mob/living/carbon/human/was_silverscale, datum/species/new_species, pref_load)
was_silverscale.dna.features["mcolor"] = old_mutcolor
was_silverscale.eye_color_left = old_eye_color_left
was_silverscale.eye_color_right = old_eye_color_right
was_silverscale.remove_filter("silver_glint")
..()
return ..()
@@ -22,7 +22,6 @@
no_equip_flags = ITEM_SLOT_MASK | ITEM_SLOT_OCLOTHING | ITEM_SLOT_GLOVES | ITEM_SLOT_FEET | ITEM_SLOT_ICLOTHING
burnmod = 1.25
heatmod = 1.5
mutanttongue = /obj/item/organ/internal/tongue/mush
@@ -25,9 +25,7 @@
mutantstomach = /obj/item/organ/internal/stomach/bone/plasmaman
mutantappendix = null
mutantheart = null
burnmod = 1.5
heatmod = 1.5
brutemod = 1.5
payday_modifier = 0.75
breathid = GAS_PLASMA
disliked_food = FRUIT | CLOTH
@@ -16,7 +16,6 @@
inherent_biotypes = MOB_ORGANIC | MOB_HUMANOID | MOB_PLANT
inherent_factions = list(FACTION_PLANTS, FACTION_VINES)
burnmod = 1.25
heatmod = 1.5
payday_modifier = 0.75
meat = /obj/item/food/meat/slab/human/mutant/plant
@@ -20,7 +20,6 @@
)
coldmod = 0.5 //snails only come out when its cold and wet
burnmod = 2
speedmod = 6
siemens_coeff = 2 //snails are mostly water
liked_food = VEGETABLES | FRUIT | GROSS | RAW //SKYRAT EDIT - Roundstart Snails - Food Prefs
@@ -89,8 +89,8 @@
name = "Infectious Zombie"
id = SPECIES_ZOMBIE_INFECTIOUS
examine_limb_id = SPECIES_ZOMBIE
armor = 20 // 120 damage to KO a zombie, which kills it
speedmod = 1.6
damage_modifier = 20 // 120 damage to KO a zombie, which kills it
mutanteyes = /obj/item/organ/internal/eyes/zombie
mutantbrain = /obj/item/organ/internal/brain/zombie
changesource_flags = MIRROR_BADMIN | WABBAJACK | ERT_SPAWN
@@ -120,13 +120,13 @@
TRAIT_STABLELIVER, // Not necessary but for consistency with above
)
/datum/species/zombie/infectious/on_species_gain(mob/living/carbon/C, datum/species/old_species)
/datum/species/zombie/infectious/on_species_gain(mob/living/carbon/human/new_zombie, datum/species/old_species)
. = ..()
C.AddComponent(/datum/component/mutant_hands, mutant_hand_path = /obj/item/mutant_hand/zombie)
new_zombie.AddComponent(/datum/component/mutant_hands, mutant_hand_path = /obj/item/mutant_hand/zombie)
/datum/species/zombie/infectious/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load)
/datum/species/zombie/infectious/on_species_loss(mob/living/carbon/human/was_zombie, datum/species/new_species, pref_load)
. = ..()
qdel(C.GetComponent(/datum/component/mutant_hands))
qdel(was_zombie.GetComponent(/datum/component/mutant_hands))
/datum/species/zombie/infectious/check_roundstart_eligible()
return FALSE
@@ -1003,7 +1003,7 @@
/datum/status_effect/stabilized/lightpink/on_apply()
owner.add_movespeed_modifier(/datum/movespeed_modifier/status_effect/lightpink)
ADD_TRAIT(owner, TRAIT_PACIFISM, STABILIZED_LIGHT_PINK_TRAIT)
ADD_TRAIT(owner, TRAIT_PACIFISM, STABILIZED_LIGHT_PINK_EXTRACT_TRAIT)
return ..()
/datum/status_effect/stabilized/lightpink/tick()
@@ -1015,7 +1015,7 @@
/datum/status_effect/stabilized/lightpink/on_remove()
owner.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/lightpink)
REMOVE_TRAIT(owner, TRAIT_PACIFISM, STABILIZED_LIGHT_PINK_TRAIT)
REMOVE_TRAIT(owner, TRAIT_PACIFISM, STABILIZED_LIGHT_PINK_EXTRACT_TRAIT)
/datum/status_effect/stabilized/adamantine
id = "stabilizedadamantine"
@@ -473,12 +473,13 @@
/obj/item/slime_extract/adamantine/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
if(SLIME_ACTIVATE_MINOR)
if(species.armor > 0)
if(HAS_TRAIT(user, TRAIT_ADAMANTINE_EXTRACT_ARMOR))
to_chat(user, span_warning("Your skin is already hardened!"))
return
ADD_TRAIT(user, TRAIT_ADAMANTINE_EXTRACT_ARMOR, ADAMANTINE_EXTRACT_TRAIT)
to_chat(user, span_notice("You feel your skin harden and become more resistant."))
species.armor += 25
addtimer(CALLBACK(src, PROC_REF(reset_armor), species), 1200)
user.physiology.damage_resistance += 25
addtimer(CALLBACK(src, PROC_REF(reset_armor), user), 120 SECONDS)
return 450
if(SLIME_ACTIVATE_MAJOR)
@@ -489,9 +490,9 @@
return
to_chat(user, span_notice("You stop feeding [src], and your body returns to its slimelike state."))
/obj/item/slime_extract/adamantine/proc/reset_armor(datum/species/jelly/luminescent/species)
if(istype(species))
species.armor -= 25
/obj/item/slime_extract/adamantine/proc/reset_armor(mob/living/carbon/human/user)
REMOVE_TRAIT(user, TRAIT_ADAMANTINE_EXTRACT_ARMOR, ADAMANTINE_EXTRACT_TRAIT)
user.physiology.damage_resistance -= 25
/obj/item/slime_extract/bluespace
name = "bluespace slime extract"
@@ -9,16 +9,18 @@
var/can_process = FALSE
var/mod_type = BIOWARE_GENERIC
/datum/bioware/New(mob/living/carbon/human/_owner)
owner = _owner
for(var/datum/bioware/bioware as anything in owner.bioware)
/datum/bioware/New(mob/living/carbon/human/new_owner)
owner = new_owner
for(var/datum/bioware/bioware as anything in owner.biowares)
if(bioware.mod_type == mod_type)
qdel(src)
return
owner.bioware += src
LAZYADD(owner.biowares, src)
on_gain()
/datum/bioware/Destroy()
if(owner)
LAZYREMOVE(owner.biowares, src)
owner = null
if(active)
on_lose()
@@ -7,7 +7,7 @@
return FALSE
if(!istype(target))
return FALSE
for(var/datum/bioware/bioware as anything in target.bioware)
for(var/datum/bioware/bioware as anything in target.biowares)
if(bioware.mod_type == bioware_target)
return FALSE
return TRUE
+9 -4
View File
@@ -89,10 +89,15 @@
///Gradually increases while burning when at full damage, destroys the limb when at 100
var/cremation_progress = 0
//Multiplicative damage modifiers
/// Brute damage gets multiplied by this on receive_damage()
var/brute_modifier = 1
/// Burn damage gets multiplied by this on receive_damage()
var/burn_modifier = 1
// Damage reduction variables for damage handled on the limb level. Handled after worn armor.
///Amount subtracted from brute damage inflicted on the limb.
/// Amount subtracted from brute damage inflicted on the limb.
var/brute_reduction = 0
///Amount subtracted from burn damage inflicted on the limb.
/// Amount subtracted from burn damage inflicted on the limb.
var/burn_reduction = 0
//Coloring and proper item icon update
@@ -464,8 +469,8 @@
return FALSE
var/dmg_multi = CONFIG_GET(number/damage_multiplier) * hit_percent
brute = round(max(brute * dmg_multi, 0),DAMAGE_PRECISION)
burn = round(max(burn * dmg_multi, 0),DAMAGE_PRECISION)
brute = round(max(brute * dmg_multi * brute_modifier, 0), DAMAGE_PRECISION)
burn = round(max(burn * dmg_multi * burn_modifier, 0), DAMAGE_PRECISION)
brute = max(0, brute - brute_reduction)
burn = max(0, burn - burn_reduction)
@@ -6,6 +6,7 @@
attack_type = BURN // bish buzz
unarmed_attack_sound = 'sound/weapons/etherealhit.ogg'
unarmed_miss_sound = 'sound/weapons/etherealmiss.ogg'
brute_modifier = 1.25 //ethereal are weak to brute damage
/obj/item/bodypart/head/ethereal/update_limb(dropping_limb, is_creating)
. = ..()
@@ -19,6 +20,7 @@
limb_id = SPECIES_ETHEREAL
is_dimorphic = FALSE
dmg_overlay_type = null
brute_modifier = 1.25 //ethereal are weak to brute damage
/obj/item/bodypart/chest/ethereal/update_limb(dropping_limb, is_creating)
. = ..()
@@ -35,6 +37,7 @@
unarmed_attack_verb = "burn"
unarmed_attack_sound = 'sound/weapons/etherealhit.ogg'
unarmed_miss_sound = 'sound/weapons/etherealmiss.ogg'
brute_modifier = 1.25 //ethereal are weak to brute damage
/obj/item/bodypart/arm/left/ethereal/update_limb(dropping_limb, is_creating)
. = ..()
@@ -51,6 +54,7 @@
unarmed_attack_verb = "burn"
unarmed_attack_sound = 'sound/weapons/etherealhit.ogg'
unarmed_miss_sound = 'sound/weapons/etherealmiss.ogg'
brute_modifier = 1.25 //ethereal are weak to brute damages
/obj/item/bodypart/arm/right/ethereal/update_limb(dropping_limb, is_creating)
. = ..()
@@ -59,7 +63,6 @@
var/datum/species/ethereal/eth_holder = potato_oc.dna.species
species_color = eth_holder.current_color
/obj/item/bodypart/leg/left/ethereal
icon_greyscale = 'icons/mob/species/ethereal/bodyparts.dmi'
limb_id = SPECIES_ETHEREAL
@@ -67,6 +70,7 @@
attack_type = BURN // bish buzz
unarmed_attack_sound = 'sound/weapons/etherealhit.ogg'
unarmed_miss_sound = 'sound/weapons/etherealmiss.ogg'
brute_modifier = 1.25 //ethereal are weak to brute damage
/obj/item/bodypart/leg/left/ethereal/update_limb(dropping_limb, is_creating)
. = ..()
@@ -82,6 +86,7 @@
attack_type = BURN // bish buzz
unarmed_attack_sound = 'sound/weapons/etherealhit.ogg'
unarmed_miss_sound = 'sound/weapons/etherealmiss.ogg'
brute_modifier = 1.25 //ethereal are weak to brute damage
/obj/item/bodypart/leg/right/ethereal/update_limb(dropping_limb, is_creating)
. = ..()
@@ -3,43 +3,45 @@
biological_state = BIO_FLESH //SKYRAT EDIT - Roundstart Snails - Now invertebrates!
limb_id = SPECIES_SNAIL
is_dimorphic = FALSE
burn_modifier = 2
/obj/item/bodypart/chest/snail
biological_state = BIO_FLESH //SKYRAT EDIT - Roundstart Snails - Now invertebrates!
limb_id = SPECIES_SNAIL
is_dimorphic = FALSE
burn_modifier = 2
/obj/item/bodypart/arm/left/snail
biological_state = BIO_FLESH //SKYRAT EDIT - Roundstart Snails - Now invertebrates!
limb_id = SPECIES_SNAIL
unarmed_attack_verb = "slap"
unarmed_attack_effect = ATTACK_EFFECT_DISARM
//unarmed_damage_high = 0.5
unarmed_damage_low = 1 //SKYRAT EDIT - Roundstart Snails - Lowest possible punch damage. if this is set to 0, punches will always miss.
unarmed_damage_high = 5 //snails are soft and squishy //SKYRAT EDIT - Roundstart Snails - A Bit More Damage. Original = unarmed_damage_high = 0.5
unarmed_damage_high = 5 //snails are soft and squishy //SKYRAT EDIT - Roundstart Snails - A Bit More Damage. - ORIGINAL: unarmed_damage_high = 0.5 //snails are soft and squishy
burn_modifier = 2
/obj/item/bodypart/arm/right/snail
biological_state = BIO_FLESH //SKYRAT EDIT - Roundstart Snails - Now invertebrates!
limb_id = SPECIES_SNAIL
unarmed_attack_verb = "slap"
unarmed_attack_effect = ATTACK_EFFECT_DISARM
//unarmed_damage_high = 0.5
unarmed_damage_low = 1 //SKYRAT EDIT - Roundstart Snails - Lowest possible punch damage. if this is set to 0, punches will always miss.
unarmed_damage_high = 5 //snails are soft and squishy //SKYRAT EDIT - Roundstart Snails - A Bit More Damage. Original = unarmed_damage_high = 0.5
unarmed_damage_high = 5 //snails are soft and squishy //SKYRAT EDIT - Roundstart Snails - A Bit More Damage. - ORIGINAL: unarmed_damage_high = 0.5 //snails are soft and squishy
burn_modifier = 2
/obj/item/bodypart/leg/left/snail
biological_state = BIO_FLESH //SKYRAT EDIT - Roundstart Snails - Now invertebrates!
limb_id = SPECIES_SNAIL
//unarmed_damage_high = 0.5
unarmed_damage_low = 1 //SKYRAT EDIT - Roundstart Snails - Lowest possible punch damage. if this is set to 0, punches will always miss.
unarmed_damage_high = 5 //snails are soft and squishy //SKYRAT EDIT - Roundstart Snails - A Bit More Damage. Original = unarmed_damage_high = 0.5
unarmed_damage_high = 5 //snails are soft and squishy //SKYRAT EDIT - Roundstart Snails - A Bit More Damage. - ORIGINAL: unarmed_damage_high = 0.5 //snails are soft and squishy
burn_modifier = 2
/obj/item/bodypart/leg/right/snail
biological_state = BIO_FLESH //SKYRAT EDIT - Roundstart Snails - Now invertebrates!
limb_id = SPECIES_SNAIL
//unarmed_damage_high = 0.5
unarmed_damage_low = 1 //SKYRAT EDIT - Roundstart Snails - Lowest possible punch damage. if this is set to 0, punches will always miss.
unarmed_damage_high = 5 //snails are soft and squishy //SKYRAT EDIT - Roundstart Snails - A Bit More Damage. Original = unarmed_damage_high = 0.5
unarmed_damage_high = 5 //snails are soft and squishy //SKYRAT EDIT - Roundstart Snails - A Bit More Damage. - ORIGINAL: unarmed_damage_high = 0.5 //snails are soft and squishy
burn_modifier = 2
///ABDUCTOR
/obj/item/bodypart/head/abductor
@@ -82,32 +84,38 @@
limb_id = SPECIES_JELLYPERSON
is_dimorphic = TRUE
dmg_overlay_type = null
burn_modifier = 0.5 // = 1/2x generic burn damage
/obj/item/bodypart/chest/jelly
biological_state = BIO_INORGANIC
limb_id = SPECIES_JELLYPERSON
is_dimorphic = TRUE
dmg_overlay_type = null
burn_modifier = 0.5 // = 1/2x generic burn damage
/obj/item/bodypart/arm/left/jelly
biological_state = BIO_INORGANIC
limb_id = SPECIES_JELLYPERSON
dmg_overlay_type = null
burn_modifier = 0.5 // = 1/2x generic burn damage
/obj/item/bodypart/arm/right/jelly
biological_state = BIO_INORGANIC
limb_id = SPECIES_JELLYPERSON
dmg_overlay_type = null
burn_modifier = 0.5 // = 1/2x generic burn damage
/obj/item/bodypart/leg/left/jelly
biological_state = BIO_INORGANIC
limb_id = SPECIES_JELLYPERSON
dmg_overlay_type = null
burn_modifier = 0.5 // = 1/2x generic burn damage
/obj/item/bodypart/leg/right/jelly
biological_state = BIO_INORGANIC
limb_id = SPECIES_JELLYPERSON
dmg_overlay_type = null
burn_modifier = 0.5 // = 1/2x generic burn damage
///SLIME
/obj/item/bodypart/head/slime
@@ -194,10 +202,12 @@
/obj/item/bodypart/head/pod
limb_id = SPECIES_PODPERSON
is_dimorphic = TRUE
burn_modifier = 1.25
/obj/item/bodypart/chest/pod
limb_id = SPECIES_PODPERSON
is_dimorphic = TRUE
burn_modifier = 1.25
/obj/item/bodypart/arm/left/pod
limb_id = SPECIES_PODPERSON
@@ -205,6 +215,7 @@
unarmed_attack_effect = ATTACK_EFFECT_CLAW
unarmed_attack_sound = 'sound/weapons/slice.ogg'
unarmed_miss_sound = 'sound/weapons/slashmiss.ogg'
burn_modifier = 1.25
/obj/item/bodypart/arm/right/pod
limb_id = SPECIES_PODPERSON
@@ -212,12 +223,15 @@
unarmed_attack_effect = ATTACK_EFFECT_CLAW
unarmed_attack_sound = 'sound/weapons/slice.ogg'
unarmed_miss_sound = 'sound/weapons/slashmiss.ogg'
burn_modifier = 1.25
/obj/item/bodypart/leg/left/pod
limb_id = SPECIES_PODPERSON
burn_modifier = 1.25
/obj/item/bodypart/leg/right/pod
limb_id = SPECIES_PODPERSON
burn_modifier = 1.25
///FLY
/obj/item/bodypart/head/fly
@@ -252,32 +266,38 @@
limb_id = SPECIES_SHADOW
is_dimorphic = FALSE
should_draw_greyscale = FALSE
burn_modifier = 1.5
/obj/item/bodypart/chest/shadow
biological_state = BIO_INORGANIC
limb_id = SPECIES_SHADOW
is_dimorphic = FALSE
should_draw_greyscale = FALSE
burn_modifier = 1.5
/obj/item/bodypart/arm/left/shadow
biological_state = BIO_INORGANIC
limb_id = SPECIES_SHADOW
should_draw_greyscale = FALSE
burn_modifier = 1.5
/obj/item/bodypart/arm/right/shadow
biological_state = BIO_INORGANIC
limb_id = SPECIES_SHADOW
should_draw_greyscale = FALSE
burn_modifier = 1.5
/obj/item/bodypart/leg/left/shadow
biological_state = BIO_INORGANIC
limb_id = SPECIES_SHADOW
should_draw_greyscale = FALSE
burn_modifier = 1.5
/obj/item/bodypart/leg/right/shadow
biological_state = BIO_INORGANIC
limb_id = SPECIES_SHADOW
should_draw_greyscale = FALSE
burn_modifier = 1.5
/obj/item/bodypart/arm/left/shadow/nightmare
bodypart_traits = list(TRAIT_CHUNKYFINGERS)
@@ -328,36 +348,43 @@
/obj/item/bodypart/head/mushroom
limb_id = SPECIES_MUSHROOM
is_dimorphic = TRUE
burn_modifier = 1.25
/obj/item/bodypart/chest/mushroom
limb_id = SPECIES_MUSHROOM
is_dimorphic = TRUE
bodypart_traits = list(TRAIT_NO_JUMPSUIT)
burn_modifier = 1.25
/obj/item/bodypart/arm/left/mushroom
limb_id = SPECIES_MUSHROOM
unarmed_damage_low = 6
unarmed_damage_high = 14
unarmed_stun_threshold = 14
burn_modifier = 1.25
/obj/item/bodypart/arm/right/mushroom
limb_id = SPECIES_MUSHROOM
unarmed_damage_low = 6
unarmed_damage_high = 14
unarmed_stun_threshold = 14
burn_modifier = 1.25
/obj/item/bodypart/leg/left/mushroom
limb_id = SPECIES_MUSHROOM
unarmed_damage_low = 9
unarmed_damage_high = 21
unarmed_stun_threshold = 14
burn_modifier = 1.25
/obj/item/bodypart/leg/right/mushroom
limb_id = SPECIES_MUSHROOM
unarmed_damage_low = 9
unarmed_damage_high = 21
unarmed_stun_threshold = 14
burn_modifier = 1.25
//GOLEM
/obj/item/bodypart/head/golem
icon = 'icons/mob/species/golems.dmi'
icon_static = 'icons/mob/species/golems.dmi'
@@ -7,6 +7,8 @@
is_dimorphic = FALSE
should_draw_greyscale = FALSE
dmg_overlay_type = null
brute_modifier = 1.5 //Plasmemes are weak
burn_modifier = 1.5 //Plasmemes are weak
/obj/item/bodypart/chest/plasmaman
icon = 'icons/mob/species/plasmaman/bodyparts.dmi'
@@ -17,6 +19,8 @@
is_dimorphic = FALSE
should_draw_greyscale = FALSE
dmg_overlay_type = null
brute_modifier = 1.5 //Plasmemes are weak
burn_modifier = 1.5 //Plasmemes are weak
/obj/item/bodypart/arm/left/plasmaman
icon = 'icons/mob/species/plasmaman/bodyparts.dmi'
@@ -26,6 +30,8 @@
limb_id = SPECIES_PLASMAMAN
should_draw_greyscale = FALSE
dmg_overlay_type = null
brute_modifier = 1.5 //Plasmemes are weak
burn_modifier = 1.5 //Plasmemes are weak
/obj/item/bodypart/arm/right/plasmaman
icon = 'icons/mob/species/plasmaman/bodyparts.dmi'
@@ -35,6 +41,8 @@
limb_id = SPECIES_PLASMAMAN
should_draw_greyscale = FALSE
dmg_overlay_type = null
brute_modifier = 1.5 //Plasmemes are weak
burn_modifier = 1.5 //Plasmemes are weak
/obj/item/bodypart/leg/left/plasmaman
icon = 'icons/mob/species/plasmaman/bodyparts.dmi'
@@ -44,6 +52,8 @@
limb_id = SPECIES_PLASMAMAN
should_draw_greyscale = FALSE
dmg_overlay_type = null
brute_modifier = 1.5 //Plasmemes are weak
burn_modifier = 1.5 //Plasmemes are weak
/obj/item/bodypart/leg/right/plasmaman
icon = 'icons/mob/species/plasmaman/bodyparts.dmi'
@@ -53,3 +63,5 @@
limb_id = SPECIES_PLASMAMAN
should_draw_greyscale = FALSE
dmg_overlay_type = null
brute_modifier = 1.5 //Plasmemes are weak
burn_modifier = 1.5 //Plasmemes are weak
@@ -15,25 +15,20 @@
/obj/item/organ/internal/stomach/golem/on_insert(mob/living/carbon/organ_owner, special)
. = ..()
RegisterSignal(owner, COMSIG_CARBON_ATTEMPT_EAT, PROC_REF(try_eating))
if (!ishuman(organ_owner))
if(!ishuman(organ_owner))
return
if (organ_owner.flags_1 & INITIALIZED_1)
setup_physiology(organ_owner)
else
RegisterSignal(owner, COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZE, PROC_REF(setup_physiology))
setup_physiology(organ_owner)
/// Physiology doesn't exist yet if this is added on initialisation of a golem, so we need to wait until it does
/obj/item/organ/internal/stomach/golem/proc/setup_physiology(mob/living/carbon/human/human_owner)
SIGNAL_HANDLER
human_owner.physiology?.hunger_mod *= hunger_mod
UnregisterSignal(human_owner, COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZE)
/obj/item/organ/internal/stomach/golem/on_remove(mob/living/carbon/organ_owner, special)
. = ..()
UnregisterSignal(organ_owner, COMSIG_CARBON_ATTEMPT_EAT)
organ_owner.remove_movespeed_modifier(/datum/movespeed_modifier/golem_hunger)
organ_owner.remove_status_effect(/datum/status_effect/golem_statued)
if (!ishuman(organ_owner))
if(!ishuman(organ_owner))
return
var/mob/living/carbon/human/human_owner = organ_owner
human_owner.physiology?.hunger_mod /= hunger_mod
@@ -41,7 +36,7 @@
/// Reject food, rocks only
/obj/item/organ/internal/stomach/golem/proc/try_eating(mob/living/carbon/source, atom/eating)
SIGNAL_HANDLER
if (istype(eating, /obj/item/food/golem_food))
if(istype(eating, /obj/item/food/golem_food))
return
source.balloon_alert(source, "minerals only!")
return COMSIG_CARBON_BLOCK_EAT
@@ -1,7 +1,13 @@
/datum/species/lizard/ashwalker
mutanteyes = /obj/item/organ/internal/eyes/night_vision/ashwalker
burnmod = 0.8
brutemod = 0.9
bodypart_overrides = list(
BODY_ZONE_HEAD = /obj/item/bodypart/head/lizard/ashwalker,
BODY_ZONE_CHEST = /obj/item/bodypart/chest/lizard/ashwalker,
BODY_ZONE_L_ARM = /obj/item/bodypart/arm/left/lizard/ashwalker,
BODY_ZONE_R_ARM = /obj/item/bodypart/arm/right/lizard/ashwalker,
BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/lizard/ashwalker,
BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/lizard/ashwalker,
)
/datum/species/lizard/ashwalker/on_species_gain(mob/living/carbon/carbon_target, datum/species/old_species)
. = ..()
@@ -68,7 +74,7 @@
ADD_TRAIT(human_target, TRAIT_ASHSTORM_IMMUNE, REF(src))
to_chat(human_target, span_notice("The biting wind seems to sting less..."))
if(2)
species_target.armor += 10
species_target.damage_modifier += 10
to_chat(human_target, span_notice("Your body seems to be sturdier..."))
if(3)
var/obj/item/bodypart/arm/left/left_arm = human_target.get_bodypart(BODY_ZONE_L_ARM)
@@ -0,0 +1,29 @@
#define ASHWALKER_BRUTE_MODIFIER 0.8
#define ASHWALKER_BURN_MODIFIER 0.9
/obj/item/bodypart/head/lizard/ashwalker
brute_modifier = ASHWALKER_BRUTE_MODIFIER
burn_modifier = ASHWALKER_BURN_MODIFIER
/obj/item/bodypart/chest/lizard/ashwalker
brute_modifier = ASHWALKER_BRUTE_MODIFIER
burn_modifier = ASHWALKER_BURN_MODIFIER
/obj/item/bodypart/arm/left/lizard/ashwalker
brute_modifier = ASHWALKER_BRUTE_MODIFIER
burn_modifier = ASHWALKER_BURN_MODIFIER
/obj/item/bodypart/arm/right/lizard/ashwalker
brute_modifier = ASHWALKER_BRUTE_MODIFIER
burn_modifier = ASHWALKER_BURN_MODIFIER
/obj/item/bodypart/leg/left/lizard/ashwalker
brute_modifier = ASHWALKER_BRUTE_MODIFIER
burn_modifier = ASHWALKER_BURN_MODIFIER
/obj/item/bodypart/leg/right/lizard/ashwalker
brute_modifier = ASHWALKER_BRUTE_MODIFIER
burn_modifier = ASHWALKER_BURN_MODIFIER
#undef ASHWALKER_BRUTE_MODIFIER
#undef ASHWALKER_BURN_MODIFIER
@@ -1,8 +1,14 @@
#define GHOUL_BRUTE_MODIFIER 2
#define GHOUL_BURN_MODIFIER 2
// Ghouls!
/obj/item/bodypart/head/mutant/ghoul
icon_greyscale = BODYPART_ICON_GHOUL
is_dimorphic = FALSE
limb_id = SPECIES_GHOUL
brute_modifier = GHOUL_BRUTE_MODIFIER
burn_modifier = GHOUL_BURN_MODIFIER
/obj/item/bodypart/head/mutant/ghoul/Initialize(mapload)
worn_ears_offset = new(
@@ -36,6 +42,9 @@
icon_greyscale = BODYPART_ICON_GHOUL
limb_id = SPECIES_GHOUL
is_dimorphic = FALSE
brute_modifier = GHOUL_BRUTE_MODIFIER
burn_modifier = GHOUL_BURN_MODIFIER
/obj/item/bodypart/chest/mutant/ghoul/Initialize(mapload)
worn_neck_offset = new(
@@ -54,8 +63,8 @@
unarmed_attack_effect = ATTACK_EFFECT_PUNCH
unarmed_attack_sound = 'sound/weapons/punch1.ogg'
unarmed_miss_sound = 'sound/weapons/punchmiss.ogg'
brute_modifier = GHOUL_BRUTE_MODIFIER
burn_modifier = GHOUL_BURN_MODIFIER
/obj/item/bodypart/arm/right/mutant/ghoul
@@ -67,15 +76,23 @@
unarmed_attack_effect = ATTACK_EFFECT_PUNCH
unarmed_attack_sound = 'sound/weapons/punch1.ogg'
unarmed_miss_sound = 'sound/weapons/punchmiss.ogg'
brute_modifier = GHOUL_BRUTE_MODIFIER
burn_modifier = GHOUL_BURN_MODIFIER
/obj/item/bodypart/leg/left/mutant/ghoul
icon_greyscale = BODYPART_ICON_GHOUL
limb_id = SPECIES_GHOUL
brute_modifier = GHOUL_BRUTE_MODIFIER
burn_modifier = GHOUL_BURN_MODIFIER
/obj/item/bodypart/leg/right/mutant/ghoul
icon_greyscale = BODYPART_ICON_GHOUL
limb_id = SPECIES_GHOUL
brute_modifier = GHOUL_BRUTE_MODIFIER
burn_modifier = GHOUL_BURN_MODIFIER
// LIMBS
@@ -122,3 +139,6 @@
. = newMeat // Return MEAT
qdel(src)
#undef GHOUL_BRUTE_MODIFIER
#undef GHOUL_BURN_MODIFIER
@@ -1,24 +1,42 @@
#define SKRELL_BRUTE_MODIFIER 1.70
#define SKRELL_BURN_MODIFIER 0.60
// Skrell!
/obj/item/bodypart/head/mutant/skrell
icon_greyscale = BODYPART_ICON_SKRELL
limb_id = SPECIES_SKRELL
brute_modifier = SKRELL_BRUTE_MODIFIER
burn_modifier = SKRELL_BURN_MODIFIER
/obj/item/bodypart/chest/mutant/skrell
icon_greyscale = BODYPART_ICON_SKRELL
limb_id = SPECIES_SKRELL
brute_modifier = SKRELL_BRUTE_MODIFIER
burn_modifier = SKRELL_BURN_MODIFIER
/obj/item/bodypart/arm/left/mutant/skrell
icon_greyscale = BODYPART_ICON_SKRELL
limb_id = SPECIES_SKRELL
brute_modifier = SKRELL_BRUTE_MODIFIER
burn_modifier = SKRELL_BURN_MODIFIER
/obj/item/bodypart/arm/right/mutant/skrell
icon_greyscale = BODYPART_ICON_SKRELL
limb_id = SPECIES_SKRELL
brute_modifier = SKRELL_BRUTE_MODIFIER
burn_modifier = SKRELL_BURN_MODIFIER
/obj/item/bodypart/leg/left/mutant/skrell
icon_greyscale = BODYPART_ICON_SKRELL
limb_id = SPECIES_SKRELL
brute_modifier = SKRELL_BRUTE_MODIFIER
burn_modifier = SKRELL_BURN_MODIFIER
/obj/item/bodypart/leg/right/mutant/skrell
icon_greyscale = BODYPART_ICON_SKRELL
limb_id = SPECIES_SKRELL
brute_modifier = SKRELL_BRUTE_MODIFIER
burn_modifier = SKRELL_BURN_MODIFIER
#undef SKRELL_BRUTE_MODIFIER
#undef SKRELL_BURN_MODIFIER
@@ -1,11 +1,15 @@
#define TESHARI_PUNCH_LOW 2 // Lower bound punch damage
#define TESHARI_PUNCH_HIGH 6
#define TESHARI_BURN_MODIFIER 1.25 // They take more damage from practically everything
#define TESHARI_BRUTE_MODIFIER 1.2
// teshari!
/obj/item/bodypart/head/mutant/teshari
icon_greyscale = BODYPART_ICON_TESHARI
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM
limb_id = SPECIES_TESHARI
brute_modifier = TESHARI_BRUTE_MODIFIER
burn_modifier = TESHARI_BURN_MODIFIER
/obj/item/bodypart/head/mutant/teshari/Initialize(mapload)
worn_ears_offset = new(
@@ -31,6 +35,8 @@
icon_greyscale = BODYPART_ICON_TESHARI
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM
limb_id = SPECIES_TESHARI
brute_modifier = TESHARI_BRUTE_MODIFIER
burn_modifier = TESHARI_BURN_MODIFIER
/obj/item/bodypart/chest/mutant/teshari/Initialize(mapload)
worn_back_offset = new(
@@ -52,6 +58,8 @@
limb_id = SPECIES_TESHARI
unarmed_damage_low = TESHARI_PUNCH_LOW
unarmed_damage_high = TESHARI_PUNCH_HIGH
brute_modifier = TESHARI_BRUTE_MODIFIER
burn_modifier = TESHARI_BURN_MODIFIER
/obj/item/bodypart/arm/right/mutant/teshari
@@ -60,6 +68,8 @@
limb_id = SPECIES_TESHARI
unarmed_damage_low = TESHARI_PUNCH_LOW
unarmed_damage_high = TESHARI_PUNCH_HIGH
brute_modifier = TESHARI_BRUTE_MODIFIER
burn_modifier = TESHARI_BURN_MODIFIER
/obj/item/bodypart/leg/left/mutant/teshari
@@ -67,22 +77,32 @@
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM
limb_id = SPECIES_TESHARI
digitigrade_type = /obj/item/bodypart/leg/left/digitigrade/teshari
brute_modifier = TESHARI_BRUTE_MODIFIER
burn_modifier = TESHARI_BURN_MODIFIER
/obj/item/bodypart/leg/right/mutant/teshari
icon_greyscale = BODYPART_ICON_TESHARI
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM
limb_id = SPECIES_TESHARI
digitigrade_type = /obj/item/bodypart/leg/right/digitigrade/teshari
brute_modifier = TESHARI_BRUTE_MODIFIER
burn_modifier = TESHARI_BURN_MODIFIER
/obj/item/bodypart/leg/left/digitigrade/teshari
icon_greyscale = BODYPART_ICON_TESHARI
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM
base_limb_id = SPECIES_TESHARI
brute_modifier = TESHARI_BRUTE_MODIFIER
burn_modifier = TESHARI_BURN_MODIFIER
/obj/item/bodypart/leg/right/digitigrade/teshari
icon_greyscale = BODYPART_ICON_TESHARI
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM
base_limb_id = SPECIES_TESHARI
brute_modifier = TESHARI_BRUTE_MODIFIER
burn_modifier = TESHARI_BURN_MODIFIER
#undef TESHARI_PUNCH_LOW
#undef TESHARI_PUNCH_HIGH
#undef TESHARI_BURN_MODIFIER
#undef TESHARI_BRUTE_MODIFIER
@@ -28,9 +28,6 @@
disliked_food = VEGETABLES | FRUIT | CLOTH
liked_food = RAW | MEAT
payday_modifier = 0.75 //-- "Equality"
//armor = -100 //2x more damage
brutemod = 2
burnmod = 2
stunmod = 1.25 //multiplier for stun durations
bodytemp_normal = T20C
changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT
@@ -32,7 +32,6 @@
examine_limb_id = SPECIES_SLIMEPERSON
coldmod = 3
heatmod = 1
burnmod = 1
specific_alpha = 155
markings_alpha = 130 //This is set lower than the other so that the alpha values don't stack on top of each other so much
mutanteyes = /obj/item/organ/internal/eyes
@@ -14,8 +14,6 @@
TRAIT_LITERATE,
)
inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID
brutemod = 1.70
burnmod = 0.60
exotic_blood = /datum/reagent/copper
bodytemp_normal = (BODYTEMP_NORMAL + 70)
bodytemp_heat_damage_limit = FIRE_MINIMUM_TEMPERATURE_TO_SPREAD
@@ -65,7 +65,7 @@
name = "Mutated Abomination"
id = SPECIES_MUTANT_INFECTIOUS
speedmod = 1
armor = 10
damage_modifier = 10
mutanteyes = /obj/item/organ/internal/eyes/zombie
changesource_flags = MIRROR_BADMIN | WABBAJACK | ERT_SPAWN
var/hands_to_give = /obj/item/hnz_mutant_hand
@@ -82,7 +82,7 @@
name = "Fast Mutated Abomination"
id = SPECIES_MUTANT_FAST
hands_to_give = /obj/item/hnz_mutant_hand/fast
armor = 0
damage_modifier = 0
/// The rate the mutants regenerate at
heal_rate = 0.5
speedmod = 0.5
@@ -90,7 +90,7 @@
/datum/species/mutant/infectious/slow
name = "Slow Mutated Abomination"
id = SPECIES_MUTANT_SLOW
armor = 15
damage_modifier = 15
speedmod = 1.5
/// The rate the mutants regenerate at
heal_rate = 1.5
@@ -1,3 +1,6 @@
#define SYNTH_BRUTE_MODIFIER 1.3
#define SYNTH_BURN_MODIFIER 1.3
// Synth bois!
/obj/item/bodypart/head/robot/synth
icon_greyscale = BODYPART_ICON_IPC
@@ -7,6 +10,8 @@
change_exempt_flags = NONE
brute_reduction = 0
burn_reduction = 0
brute_modifier = SYNTH_BRUTE_MODIFIER
burn_modifier = SYNTH_BURN_MODIFIER
/obj/item/bodypart/chest/robot/synth
icon_greyscale = BODYPART_ICON_IPC
@@ -15,6 +20,8 @@
change_exempt_flags = NONE
brute_reduction = 0
burn_reduction = 0
brute_modifier = SYNTH_BRUTE_MODIFIER
burn_modifier = SYNTH_BURN_MODIFIER
/obj/item/bodypart/arm/left/robot/synth
icon_greyscale = BODYPART_ICON_IPC
@@ -23,6 +30,8 @@
change_exempt_flags = NONE
brute_reduction = 0
burn_reduction = 0
brute_modifier = SYNTH_BRUTE_MODIFIER
burn_modifier = SYNTH_BURN_MODIFIER
/obj/item/bodypart/arm/right/robot/synth
icon_greyscale = BODYPART_ICON_IPC
@@ -31,6 +40,8 @@
change_exempt_flags = NONE
brute_reduction = 0
burn_reduction = 0
brute_modifier = SYNTH_BRUTE_MODIFIER
burn_modifier = SYNTH_BURN_MODIFIER
/obj/item/bodypart/leg/left/robot/synth
icon_greyscale = BODYPART_ICON_IPC
@@ -40,6 +51,8 @@
change_exempt_flags = NONE
brute_reduction = 0
burn_reduction = 0
brute_modifier = SYNTH_BRUTE_MODIFIER
burn_modifier = SYNTH_BURN_MODIFIER
/obj/item/bodypart/leg/right/robot/synth
icon_greyscale = BODYPART_ICON_IPC
@@ -49,6 +62,8 @@
change_exempt_flags = NONE
brute_reduction = 0
burn_reduction = 0
brute_modifier = SYNTH_BRUTE_MODIFIER
burn_modifier = SYNTH_BURN_MODIFIER
/obj/item/bodypart/leg/left/robot/digitigrade
icon_greyscale = BODYPART_ICON_SYNTHLIZARD
@@ -59,6 +74,8 @@
change_exempt_flags = NONE
brute_reduction = 0
burn_reduction = 0
brute_modifier = SYNTH_BRUTE_MODIFIER
burn_modifier = SYNTH_BURN_MODIFIER
/obj/item/bodypart/leg/left/robot/digitigrade/update_limb(dropping_limb = FALSE, is_creating = FALSE)
. = ..()
@@ -73,7 +90,12 @@
change_exempt_flags = NONE
brute_reduction = 0
burn_reduction = 0
brute_modifier = SYNTH_BRUTE_MODIFIER
burn_modifier = SYNTH_BURN_MODIFIER
/obj/item/bodypart/leg/right/robot/digitigrade/update_limb(dropping_limb = FALSE, is_creating = FALSE)
. = ..()
check_mutant_compatability()
#undef SYNTH_BRUTE_MODIFIER
#undef SYNTH_BURN_MODIFIER
@@ -63,8 +63,6 @@
BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/robot/synth,
)
digitigrade_customization = DIGITIGRADE_OPTIONAL
burnmod = 1.3 // Every 0.1 is 10% above the base.
brutemod = 1.3
coldmod = 1.2
heatmod = 2 // TWO TIMES DAMAGE FROM BEING TOO HOT?! WHAT?! No wonder lava is literal instant death for us.
siemens_coeff = 1.4 // Not more because some shocks will outright crit you, which is very unfun
@@ -1,6 +1,4 @@
#define TESHARI_TEMP_OFFSET -30 // K, added to comfort/damage limit etc
#define TESHARI_BURNMOD 1.25 // They take more damage from practically everything
#define TESHARI_BRUTEMOD 1.2
#define TESHARI_HEATMOD 1.3
#define TESHARI_COLDMOD 0.67 // Except cold.
@@ -44,8 +42,6 @@
)
coldmod = TESHARI_COLDMOD
heatmod = TESHARI_HEATMOD
brutemod = TESHARI_BRUTEMOD
burnmod = TESHARI_BURNMOD
bodytemp_normal = BODYTEMP_NORMAL + TESHARI_TEMP_OFFSET
bodytemp_heat_damage_limit = (BODYTEMP_HEAT_DAMAGE_LIMIT + TESHARI_TEMP_OFFSET)
bodytemp_cold_damage_limit = (BODYTEMP_COLD_DAMAGE_LIMIT + TESHARI_TEMP_OFFSET)
+1
View File
@@ -5917,6 +5917,7 @@
#include "modular_skyrat\modules\bodyparts\code\_mutant_bodyparts.dm"
#include "modular_skyrat\modules\bodyparts\code\akula_bodyparts.dm"
#include "modular_skyrat\modules\bodyparts\code\aquatic_bodyparts.dm"
#include "modular_skyrat\modules\bodyparts\code\ashwalker_bodyparts.dm"
#include "modular_skyrat\modules\bodyparts\code\ghoul_bodyparts.dm"
#include "modular_skyrat\modules\bodyparts\code\golem_bodyparts.dm"
#include "modular_skyrat\modules\bodyparts\code\human_bodyparts.dm"