[MIRROR-FIX] Upstream merge 15464 (#7176)

Co-authored-by: Heroman3003 <31296024+Heroman3003@users.noreply.github.com>
This commit is contained in:
Selis
2023-11-07 13:33:44 +01:00
committed by GitHub
co-authored by Heroman3003
parent 58d26cc799
commit 2ba38d60af
40 changed files with 272 additions and 332 deletions
@@ -1,52 +0,0 @@
// Chomp additions to character load/save logic
// /datum/category_item/player_setup_item/general/body/content cannot be overridden here easily as the proc creates a list of html data
// perhaps one could get that list here, and sort through sections to rewrite it's content...? that seems inefficent having to loop through the list.
//copy_to_mob setup proc for spawning mob from prefs
/datum/category_item/player_setup_item/general/body/copy_to_mob(var/mob/living/carbon/human/character)
. = ..()
if(character.species.digi_allowed)
character.digitigrade = pref.digitigrade
else
character.digitigrade = 0
//sanity check
if(character.digitigrade == null)
character.digitigrade = 0
pref.digitigrade = 0 // given above code, if character.digi is null, pref.digi also has to be.
// ontopic, the proc for clicking an option in the body customisation panel
/datum/category_item/player_setup_item/general/body/OnTopic(var/href,var/list/href_list, var/mob/user)
if(href_list["digitigrade"])
pref.digitigrade = !pref.digitigrade
return TOPIC_REFRESH_UPDATE_PREVIEW
. = ..()
// Savefile additions
// Be careful here
// This will add chomp-custom data to the body customisaiton page, below 'body color', above 'genetics settings'
/datum/category_item/player_setup_item/general/body/proc/chomp_custom_additions_body(var/mob/user, var/datum/species/mob_species)
. += "<h2>ChompStation Settings</h2>"
if(mob_species.digi_allowed)
. += "<br><b>Digitigrade?:</b> <a href='?src=\ref[src];digitigrade=1'><b>[pref.digitigrade ? "Yes" : "No"]</b></a><br>"
return .
/datum/category_item/player_setup_item/general/body/load_character(var/savefile/S)
. = ..()
S["digitigrade"] >> pref.digitigrade //CHOMPEdit
/datum/category_item/player_setup_item/general/body/save_character(var/savefile/S)
. = ..()
S["digitigrade"] << pref.digitigrade //CHOMPEdit
/datum/category_item/player_setup_item/general/body/sanitize_character(var/savefile/S)
. = ..()
pref.digitigrade = sanitize_integer(pref.digitigrade, 0, 1, initial(pref.digitigrade))
@@ -1,6 +1,4 @@
/datum/preferences
var/digitigrade = 0 // 0 = no digi, 1 = default, 2+ = digi styles... (Not used yet)
var/job_other_low = 0
var/job_other_med = 0
var/job_other_high = 0
@@ -1,17 +1,5 @@
/obj/item/clothing
matter = list(MAT_FIBERS = 50)
var/update_icon_define_orig = null // temp storage for original update_icon_define (if it exists)
var/update_icon_define_digi = null
var/fit_for_digi = FALSE // flag for if clothing has already been reskinned to digitigrade
/obj/item/clothing/shoes
update_icon_define_digi = "modular_chomp/icons/inventory/feet/mob_digi.dmi"
/obj/item/clothing/suit
update_icon_define_digi = "modular_chomp/icons/inventory/suit/mob_digi.dmi"
/obj/item/clothing/under
update_icon_define_digi = "modular_chomp/icons/inventory/uniform/mob_digi.dmi"
/obj/item/clothing/shoes/MouseDrop_T(mob/living/target, mob/living/user)
if(!istype(user)) return ..() // If the user passed in isn't a living mob, exit
@@ -33,57 +21,6 @@
return ..()
/obj/item/clothing/proc/handle_digitigrade(var/mob/user)
if(ishuman(user))
var/mob/living/carbon/human/H = user
// if digitigrade-use flag is set
if(H.digitigrade)
// figure out what slot we care about
if(!update_icon_define_digi)
return
// Don't reset if already set
if(!fit_for_digi)
fit_for_digi = TRUE // set flag even if no icon_state exists, so we don't repeat checks
//if update_icon_define is already set to something, place it in a var to hold it temporarily
if(update_icon_define)
update_icon_define_orig = update_icon_define
// only override icon if a corresponding digitigrade replacement icon_state exists
// otherwise, keep the old non-digi icon_define (or nothing)
if(icon_state && icon_states(update_icon_define_digi).Find(icon_state))
update_icon_define = update_icon_define_digi
// if not-digitigrade, only act if the clothing was previously fit for a digitigrade char
else
if(fit_for_digi)
fit_for_digi = FALSE
//either reset update_icon_define to it's old value
// or reset update_icon_define to null
if(update_icon_define_orig)
update_icon_define = update_icon_define_orig
update_icon_define_orig = null
else
update_icon_define = null
/obj/item/clothing/shoes/equipped(var/mob/user, var/slot)
. = ..()
handle_digitigrade(user)
/obj/item/clothing/suit/equipped(var/mob/user, var/slot)
. = ..()
handle_digitigrade(user)
/obj/item/clothing/under/equipped(var/mob/user, var/slot)
. = ..()
handle_digitigrade(user)
//In shoe steppies!
/obj/item/clothing/shoes/proc/handle_inshoe_stepping(var/mob/living/carbon/human/pred, var/mob/living/carbon/human/prey)
if(!istype(pred)) return //Sorry, inshoe steppies only for carbon/human/ for now. Based on the regular stepping mechanics
@@ -1,6 +1,6 @@
/obj/item/clothing/shoes/apply_blood(var/image/standing)
if(blood_DNA && blood_sprite_state && ishuman(loc))
var/mob/living/carbon/human/H = loc
var/image/bloodsies = image(icon = H.digitigrade ? 'modular_chomp/icons/mob/human_races/masks/blood_digitigrade.dmi' : H.species.get_blood_mask(H), icon_state = blood_sprite_state)
var/image/bloodsies = image(icon = H.digitigrade ? 'icons/mob/human_races/masks/blood_digitigrade.dmi' : H.species.get_blood_mask(H), icon_state = blood_sprite_state)
bloodsies.color = blood_color
standing.add_overlay(bloodsies)
@@ -2,7 +2,6 @@
var/gender_change_cooldown = 0 // A cooldown for gender and gender indentify changing procs to make it easy to avoid spam of gender change
var/loneliness_stage = 0
var/next_loneliness_time = 0
var/digitigrade = 0 // 0 = no digi, 1 = default, 2+ = digi styles... (Not used yet)
vore_capacity = 3
vore_capacity_ex = list("stomach" = 3, "taur belly" = 3)
vore_fullness_ex = list("stomach" = 0, "taur belly" = 0)
@@ -15,8 +15,6 @@
var/grab_power_self = 0
var/waking_speed = 1
var/mudking = FALSE
var/icodigi = 'modular_chomp/icons/mob/human_races/r_digi.dmi'
var/digi_allowed = FALSE
var/vanity_base_fit //when shapeshifting using vanity_copy_to, this allows you to have add something so they can go back to their original species fit
// Handles non-standard eyes when using a species that utilizes a custom base icon set.
@@ -12,6 +12,7 @@
selects_bodytype = SELECTS_BODYTYPE_SHAPESHIFTER
base_species = SPECIES_HUMAN
digi_allowed = TRUE
blood_color = "#505050" //This is the same as the 80,80,80 below, but in hex
flesh_color = "#505050"
@@ -45,39 +45,11 @@
*/
//Can use digitigrade flags
/datum/species/custom
digi_allowed = TRUE
/datum/species/shapeshifter/promethean
digi_allowed = TRUE
/datum/species/unathi
digi_allowed = TRUE
vore_belly_default_variant = "L"
/datum/species/tajaran
digi_allowed = TRUE
/datum/species/hi_zoxxen
digi_allowed = TRUE
/datum/species/sergal
digi_allowed = TRUE
/datum/species/akula
digi_allowed = TRUE
/datum/species/nevrean
digi_allowed = TRUE
/datum/species/vulpkanin
digi_allowed = TRUE
/datum/species/xenohybrid
digi_allowed = TRUE
/datum/species/xenochimera
digi_allowed = TRUE
/datum/species/protean
digi_allowed = TRUE
@@ -53,8 +53,8 @@
/datum/species/xenomorph_hybrid
name = SPECIES_XENOMORPH_HYBRID
name_plural = "Xenomorph Hybrids"
icobase = 'modular_chomp/icons/mob/human_races/r_xenomorph_hybrid.dmi'
deform = 'modular_chomp/icons/mob/human_races/r_xenomorph_hybrid.dmi'
icobase = 'icons/mob/human_races/r_xenomorph_hybrid.dmi'
deform = 'icons/mob/human_races/r_xenomorph_hybrid.dmi'
tail = "tail"
icobase_tail = 1
unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws, /datum/unarmed_attack/bite/sharp) // Innate claws and bite.
@@ -102,7 +102,7 @@
move_trail = /obj/effect/decal/cleanable/blood/tracks/claw
digi_allowed = TRUE
icodigi = 'modular_chomp/icons/mob/human_races/r_digi_xeno.dmi'
icodigi = 'icons/mob/human_races/r_digi_xeno.dmi'
species_sounds = "Xeno"
gender_specific_species_sounds = FALSE
@@ -294,4 +294,4 @@
/obj/item/organ/internal/xenos/plasmavessel/weak
name = "hybrid plasma vessel"
stored_plasma = 250 // Starts with max plasma.
max_plasma = 250 // Maximum of 250 plasma stored at any one time. Drones normally have 500.
max_plasma = 250 // Maximum of 250 plasma stored at any one time. Drones normally have 500.
@@ -237,14 +237,14 @@
/datum/sprite_accessory/marking/ch/xenomorph/digi_r_leg
name = "Xenomorph right leg (digitigrade)"
icon = 'icons/mob/human_races/markings_digi_ch.dmi'
icon = 'icons/mob/human_races/markings_digi.dmi'
icon_state = "xeno_digi"
digitigrade_acceptance = MARKING_DIGITIGRADE_ONLY
body_parts = list(BP_R_LEG, BP_R_FOOT)
/datum/sprite_accessory/marking/ch/xenomorph/digi_r_leg_hidden
name = "Xenomorph right leg (digitigrade, hide)"
icon = 'icons/mob/human_races/markings_digi_ch.dmi'
icon = 'icons/mob/human_races/markings_digi.dmi'
icon_state = "xeno_digi"
digitigrade_acceptance = MARKING_DIGITIGRADE_ONLY
body_parts = list(BP_R_LEG, BP_R_FOOT)
@@ -252,14 +252,14 @@
/datum/sprite_accessory/marking/ch/xenomorph/digi_l_leg
name = "Xenomorph left leg (digitigrade)"
icon = 'icons/mob/human_races/markings_digi_ch.dmi'
icon = 'icons/mob/human_races/markings_digi.dmi'
icon_state = "xeno_digi"
digitigrade_acceptance = MARKING_DIGITIGRADE_ONLY
body_parts = list(BP_L_LEG, BP_L_FOOT)
/datum/sprite_accessory/marking/ch/xenomorph/digi_l_leg_hidden
name = "Xenomorph left leg (digitigrade, hide)"
icon = 'icons/mob/human_races/markings_digi_ch.dmi'
icon = 'icons/mob/human_races/markings_digi.dmi'
icon_state = "xeno_digi"
digitigrade_acceptance = MARKING_DIGITIGRADE_ONLY
body_parts = list(BP_L_LEG, BP_L_FOOT)
@@ -302,4 +302,4 @@
name = "Xenomorph headcrest (hollywood)"
icon_state = "xeno_hollywood"
body_parts = list(BP_HEAD)
hide_body_parts = list(BP_HEAD)
hide_body_parts = list(BP_HEAD)
@@ -1,18 +0,0 @@
/obj/item/organ/external
var/skip_robo_icon = FALSE //CHOMPStation edit - to force it to use the normal species icon
var/digi_prosthetic = FALSE //is it a prosthetic that can be digitigrade
//new function to check for markings
/obj/item/organ/external/proc/is_hidden_by_markings()
//code that checked all limbs.
/*
for(var/obj/item/organ/external/organ in owner.organs)
for(var/M in organ.markings)
var/datum/sprite_accessory/marking/mark_style = organ.markings[M]["datum"]
if (mark_style.hide_body_parts && (organ_tag in mark_style.hide_body_parts))
return 1
*/
for(var/M in markings)
var/datum/sprite_accessory/marking/mark_style = markings[M]["datum"]
if(istype(mark_style,/datum/sprite_accessory/marking/ch) && (organ_tag in mark_style.hide_body_parts))
return 1
@@ -1,11 +0,0 @@
/obj/machinery/clonepod/transhuman/growclone(var/datum/transhuman/body_record/current_project)
. = ..()
//Extra clonepod behavior
var/mob/living/carbon/human/H = occupant
var/datum/dna2/record/R = current_project.mydna
H.digitigrade = R.dna.digitigrade // ensure clone mob has digitigrade var set appropriately
if(H.dna.digitigrade <> R.dna.digitigrade)
H.dna.digitigrade = R.dna.digitigrade // ensure cloned DNA is set appropriately from record??? for some reason it doesn't get set right despite the override to datum/dna/Clone()
H.update_icons_body()