Skip to content

Commit

Permalink
Augments Tab (#387)
Browse files Browse the repository at this point in the history
* teshari augs

* grr naming

* fix legs

* emp nerf

* var

* make it all work

* fixes

* I am so stupid

* Organs are now stored inside their bodyparts.

* This might be better

* remove skrell, clean up code

* amputation

* need to redo some ear code but this is good

* IMPLANTS

* update screenshot tests

* qdel replaced organs
  • Loading branch information
Kapu1178 committed Jun 26, 2023
1 parent 3f32b93 commit fec1505
Show file tree
Hide file tree
Showing 88 changed files with 1,068 additions and 815 deletions.
22 changes: 10 additions & 12 deletions code/__DEFINES/DNA.dm
Original file line number Diff line number Diff line change
Expand Up @@ -55,17 +55,16 @@
#define DNA_MUSHROOM_CAPS_BLOCK 14
#define DNA_MONKEY_TAIL_BLOCK 15
#define DNA_POD_HAIR_BLOCK 16
#define DNA_HEADTAILS_BLOCK 17
#define DNA_MUTANT_COLOR_BLOCK_2 18
#define DNA_MUTANT_COLOR_BLOCK_3 19
#define DNA_TESHARI_FEATHERS_BLOCK 20
#define DNA_TESHARI_EARS_BLOCK 21
#define DNA_TESHARI_BODY_FEATHERS_BLOCK 22
#define DNA_TESHARI_TAIL_BLOCK 23
#define DNA_VOX_HAIR_BLOCK 24
#define DNA_VOX_FACIAL_HAIR_BLOCK 25
#define DNA_VOX_TAIL_BLOCK 26
#define DNA_VOX_SNOUT_BLOCK 27
#define DNA_MUTANT_COLOR_BLOCK_2 17
#define DNA_MUTANT_COLOR_BLOCK_3 18
#define DNA_TESHARI_FEATHERS_BLOCK 19
#define DNA_TESHARI_EARS_BLOCK 20
#define DNA_TESHARI_BODY_FEATHERS_BLOCK 21
#define DNA_TESHARI_TAIL_BLOCK 22
#define DNA_VOX_HAIR_BLOCK 23
#define DNA_VOX_FACIAL_HAIR_BLOCK 24
#define DNA_VOX_TAIL_BLOCK 25
#define DNA_VOX_SNOUT_BLOCK 26

#define DNA_SEQUENCE_LENGTH 4
#define DNA_MUTATION_BLOCKS 8
Expand Down Expand Up @@ -149,7 +148,6 @@
#define ORGAN_SLOT_EXTERNAL_POD_HAIR "pod_hair"
#define ORGAN_SLOT_EXTERNAL_VOX_HAIR "vox_hair"
#define ORGAN_SLOT_EXTERNAL_VOX_FACIAL_HAIR "vox_facial_hair"
#define ORGAN_SLOT_EXTERNAL_HEADTAILS "headtails"
#define ORGAN_SLOT_EXTERNAL_TESHARI_FEATHERS "teshari_feathers"
#define ORGAN_SLOT_EXTERNAL_TESHARI_EARS "teshari_ears"
#define ORGAN_SLOT_EXTERNAL_TESHARI_BODY_FEATHERS "teshari_body_feathers"
Expand Down
26 changes: 26 additions & 0 deletions code/__DEFINES/augments.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#define AUGMENT_CATEGORY_NONE "ERROR"
#define AUGMENT_SLOT_NONE "ERROR"

//ALL OF THOSE DEFINES NEED TO BE UNIQUE!!!
//Limbs
#define AUGMENT_CATEGORY_BODYPARTS "Limbs"
#define AUGMENT_SLOT_HEAD "Head"
#define AUGMENT_SLOT_CHEST "Chest"
#define AUGMENT_SLOT_L_ARM "Left Arm"
#define AUGMENT_SLOT_R_ARM "Right Arm"
#define AUGMENT_SLOT_L_LEG "Left Leg"
#define AUGMENT_SLOT_R_LEG "Right Leg"

//Organs
#define AUGMENT_CATEGORY_ORGANS "Organs"
#define AUGMENT_SLOT_HEART "Heart"
#define AUGMENT_SLOT_LUNGS "Lungs"
#define AUGMENT_SLOT_LIVER "Liver"
#define AUGMENT_SLOT_STOMACH "Stomach"
#define AUGMENT_SLOT_EYES "Eyes"
#define AUGMENT_SLOT_TONGUE "Tongue"

//Implants
#define AUGMENT_CATEGORY_IMPLANTS "Implants"
#define AUGMENT_SLOT_IMPLANTS "Code Reasons"

4 changes: 0 additions & 4 deletions code/__DEFINES/external_organs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,3 @@
#define ORGAN_COLOR_STATIC (1<<3)
///Uses the mutcolor list
#define ORGAN_COLOR_INHERIT_ALL (1<<4)

///Tail wagging
#define WAG_ABLE (1<<0)
#define WAG_WAGGING (1<<1)
1 change: 0 additions & 1 deletion code/__DEFINES/is_helpers.dm
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,6 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list(
#define isdullahan(A) (is_species(A, /datum/species/dullahan))
#define ismonkey(A) (is_species(A, /datum/species/monkey))
#define isandroid(A) (is_species(A, /datum/species/android))
#define isskrell(A) (is_species(A, /datum/species/skrell))
#define isteshari(A) (is_species(A, /datum/species/teshari))

//More carbon mobs
Expand Down
11 changes: 4 additions & 7 deletions code/__DEFINES/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -80,16 +80,14 @@
#define BODYTYPE_MONKEY (1<<4)
///The limb is snouted.
#define BODYTYPE_SNOUTED (1<<5)
///The limb has skrelly bits
#define BODYTYPE_SKRELL (1<<6)
///The limb is voxed
#define BODYTYPE_VOX_BEAK (1<<7)
#define BODYTYPE_VOX_BEAK (1<<6)
///The limb is in the shape of a vox leg.
#define BODYTYPE_VOX_LEGS (1<<8)
#define BODYTYPE_VOX_LEGS (1<<7)
///Vox limb that isnt a head or legs.
#define BODYTYPE_VOX_OTHER (1<<9)
#define BODYTYPE_VOX_OTHER (1<<8)
///The limb is small and feathery
#define BODYTYPE_TESHARI (1<<10)
#define BODYTYPE_TESHARI (1<<9)

//Defines for Species IDs
///A placeholder bodytype for xeno larva, so their limbs cannot be attached to anything.
Expand Down Expand Up @@ -120,7 +118,6 @@
#define SPECIES_PODPERSON "pod"
#define SPECIES_SHADOW "shadow"
#define SPECIES_SKELETON "skeleton"
#define SPECIES_SKRELL "skrell"
#define SPECIES_SNAIL "snail"
#define SPECIES_TESHARI "teshari"
#define SPECIES_VAMPIRE "vampire"
Expand Down
2 changes: 2 additions & 0 deletions code/__DEFINES/preferences.dm
Original file line number Diff line number Diff line change
Expand Up @@ -120,3 +120,5 @@
#define PLAYTIME_HARDCORE_RANDOM 120 // 2 hours
/// The time needed to unlock the gamer cloak in preferences
#define PLAYTIME_VETERAN 300000 // 5,000 hours

#define SPRITE_ACCESSORY_NONE "None"
2 changes: 2 additions & 0 deletions code/__DEFINES/traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -842,6 +842,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define ORBITING_TRAIT "orbiting"
/// From the item_scaling element
#define ITEM_SCALING_TRAIT "item_scaling"
/// From EMPs
#define EMP_TRAIT "emp"

/**
* Trait granted by [/mob/living/carbon/Initialize] and
Expand Down
49 changes: 36 additions & 13 deletions code/__HELPERS/global_lists.dm
Original file line number Diff line number Diff line change
Expand Up @@ -14,35 +14,40 @@
//socks
init_sprite_accessory_subtypes(/datum/sprite_accessory/socks, GLOB.socks_list)
//bodypart accessories (blizzard intensifies)

//Snowflakes
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails, GLOB.tails_list, add_blank = TRUE)
init_sprite_accessory_subtypes(/datum/sprite_accessory/ears, GLOB.ears_list, add_blank = TRUE)
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/human, GLOB.tails_list_human, add_blank = TRUE)
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/lizard, GLOB.tails_list_lizard, add_blank = TRUE)
init_sprite_accessory_subtypes(/datum/sprite_accessory/snouts, GLOB.snouts_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/horns,GLOB.horns_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/ears, GLOB.ears_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/wings, GLOB.wings_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/wings_open, GLOB.wings_open_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/frills, GLOB.frills_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/spines, GLOB.spines_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/spines_animated, GLOB.animated_spines_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/legs, GLOB.legs_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/caps, GLOB.caps_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/pod_hair, GLOB.pod_hair_list)

// Lizadhs
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/lizard, GLOB.tails_list_lizard)
init_sprite_accessory_subtypes(/datum/sprite_accessory/snouts, GLOB.snouts_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/horns,GLOB.horns_list, add_blank = TRUE)
init_sprite_accessory_subtypes(/datum/sprite_accessory/frills, GLOB.frills_list, add_blank = TRUE)
init_sprite_accessory_subtypes(/datum/sprite_accessory/spines, GLOB.spines_list, add_blank = TRUE)
init_sprite_accessory_subtypes(/datum/sprite_accessory/legs, GLOB.legs_list)
// Moths
init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_wings, GLOB.moth_wings_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_antennae, GLOB.moth_antennae_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_markings, GLOB.moth_markings_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/pod_hair, GLOB.pod_hair_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/headtails, GLOB.headtails_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_hair, GLOB.moth_hairstyles_list)

// Teshari
init_sprite_accessory_subtypes(/datum/sprite_accessory/teshari_feathers, GLOB.teshari_feathers_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/teshari_ears, GLOB.teshari_ears_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/teshari_body_feathers, GLOB.teshari_body_feathers_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/teshari, GLOB.teshari_tails_list)

init_sprite_accessory_subtypes(/datum/sprite_accessory/vox_hair, GLOB.vox_hair_list)
//Vox
init_sprite_accessory_subtypes(/datum/sprite_accessory/vox_hair, GLOB.vox_hair_list, add_blank = TRUE)
init_sprite_accessory_subtypes(/datum/sprite_accessory/facial_vox_hair, GLOB.vox_facial_hair_list, add_blank = TRUE)
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/vox, GLOB.tails_list_vox)
init_sprite_accessory_subtypes(/datum/sprite_accessory/vox_snouts, GLOB.vox_snouts_list)
//Moths have a whitelist
init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_hair, GLOB.moth_hairstyles_list)

//Species
for(var/spath in subtypesof(/datum/species))
Expand Down Expand Up @@ -70,6 +75,7 @@

init_crafting_recipes(GLOB.crafting_recipes)
init_loadout_references()
init_augment_references()

/// Inits the crafting recipe list, sorting crafting recipe requirements in the process.
/proc/init_crafting_recipes(list/crafting_recipes)
Expand Down Expand Up @@ -169,3 +175,20 @@ GLOBAL_LIST_INIT(WALLITEMS_EXTERIOR, typecacheof(list(
for(var/category as anything in GLOB.loadout_category_to_subcategory_to_items)
for(var/subcategory as anything in GLOB.loadout_category_to_subcategory_to_items[category])
GLOB.loadout_category_to_subcategory_to_items[category][subcategory] = sortTim(GLOB.loadout_category_to_subcategory_to_items[category][subcategory], GLOBAL_PROC_REF(cmp_loadout_name))

/proc/init_augment_references()
// Here we build the global loadout lists
for(var/path in subtypesof(/datum/augment_item))
var/datum/augment_item/L = path
if(!initial(L.path))
continue

L = new path()
GLOB.augment_items[L.type] = L

if(!GLOB.augment_slot_to_items[L.slot])
GLOB.augment_slot_to_items[L.slot] = list()
if(!GLOB.augment_categories_to_slots[L.category])
GLOB.augment_categories_to_slots[L.category] = list()
GLOB.augment_categories_to_slots[L.category] += L.slot
GLOB.augment_slot_to_items[L.slot] += L.type
7 changes: 3 additions & 4 deletions code/__HELPERS/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@
if(!GLOB.horns_list.len)
init_sprite_accessory_subtypes(/datum/sprite_accessory/horns, GLOB.horns_list)
if(!GLOB.ears_list.len)
init_sprite_accessory_subtypes(/datum/sprite_accessory/ears, GLOB.horns_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/ears, GLOB.ears_list)
if(!GLOB.frills_list.len)
init_sprite_accessory_subtypes(/datum/sprite_accessory/frills, GLOB.frills_list)
if(!GLOB.spines_list.len)
Expand All @@ -87,8 +87,6 @@
init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_markings, GLOB.moth_markings_list)
if(!GLOB.pod_hair_list.len)
init_sprite_accessory_subtypes(/datum/sprite_accessory/pod_hair, GLOB.pod_hair_list)
if(!GLOB.headtails_list.len)
init_sprite_accessory_subtypes(/datum/sprite_accessory/headtails, GLOB.headtails_list)
if(!GLOB.teshari_feathers_list.len)
init_sprite_accessory_subtypes(/datum/sprite_accessory/teshari_feathers, GLOB.teshari_feathers_list)
if(!GLOB.teshari_ears_list.len)
Expand Down Expand Up @@ -125,7 +123,6 @@
"moth_markings" = pick(GLOB.moth_markings_list),
"tail_monkey" = "None",
"pod_hair" = pick(GLOB.pod_hair_list),
"headtails" = (pick(GLOB.headtails_list)),
"vox_snout" = pick(GLOB.vox_snouts_list),
"tail_vox" = pick(GLOB.tails_list_vox),
"vox_hair" = pick(GLOB.vox_hair_list),
Expand Down Expand Up @@ -790,6 +787,8 @@ GLOBAL_LIST_EMPTY(species_list)
return BODY_ZONE_CHEST
if(BODY_ZONE_PRECISE_EYES)
return BODY_ZONE_HEAD
if(BODY_ZONE_PRECISE_MOUTH)
return BODY_ZONE_HEAD
if(BODY_ZONE_PRECISE_R_HAND)
return BODY_ZONE_R_ARM
if(BODY_ZONE_PRECISE_L_HAND)
Expand Down
1 change: 0 additions & 1 deletion code/_globalvars/lists/flavor_misc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@ GLOBAL_LIST_EMPTY(moth_antennae_list)
GLOBAL_LIST_EMPTY(moth_markings_list)
GLOBAL_LIST_EMPTY(caps_list)
GLOBAL_LIST_EMPTY(pod_hair_list)
GLOBAL_LIST_EMPTY(headtails_list)
GLOBAL_LIST_EMPTY(teshari_feathers_list)
GLOBAL_LIST_EMPTY(teshari_ears_list)
GLOBAL_LIST_EMPTY(teshari_body_feathers_list)
Expand Down
2 changes: 0 additions & 2 deletions code/datums/components/tackle.dm
Original file line number Diff line number Diff line change
Expand Up @@ -291,8 +291,6 @@
var/obj/item/organ/tail/el_tail = T.getorganslot(ORGAN_SLOT_EXTERNAL_TAIL)
if(!el_tail) // lizards without tails are off-balance
defense_mod -= 1
else if(el_tail.wag_flags & WAG_WAGGING) // lizard tail wagging is robust and can swat away assailants!
defense_mod += 1

// OF-FENSE
var/mob/living/carbon/sacker = parent
Expand Down
12 changes: 11 additions & 1 deletion code/datums/diseases/_MobProcs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -146,4 +146,14 @@
return !is_mouth_covered()

/mob/living/carbon/CanSpreadAirborneDisease()
return !((head && (head.flags_cover & HEADCOVERSMOUTH) && (head.returnArmor().getRating(BIO) >= 25)) || (wear_mask && (wear_mask.flags_cover & MASKCOVERSMOUTH) && (wear_mask.returnArmor().getRating(BIO) >= 25)))
if(head && (head.flags_cover & HEADCOVERSMOUTH) && head.returnArmor().getRating(BIO) >= 25)
return FALSE

if(wear_mask && (wear_mask.flags_cover & MASKCOVERSMOUTH) && wear_mask.returnArmor().getRating(BIO) >= 25)
return FALSE

var/obj/item/bodypart/head/realhead = get_bodypart(BODY_ZONE_HEAD)
if(realhead && realhead.returnArmor().getRating(BIO) >= 100)
return FALSE

return TRUE
6 changes: 0 additions & 6 deletions code/datums/dna.dm
Original file line number Diff line number Diff line change
Expand Up @@ -227,8 +227,6 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block())
L[DNA_MUSHROOM_CAPS_BLOCK] = construct_block(GLOB.caps_list.Find(features["caps"]), GLOB.caps_list.len)
if(features["pod_hair"])
L[DNA_POD_HAIR_BLOCK] = construct_block(GLOB.pod_hair_list.Find(features["pod_hair"]), GLOB.pod_hair_list.len)
if(features["headtails"])
L[DNA_HEADTAILS_BLOCK] = construct_block(GLOB.headtails_list.Find(features["headtails"]), GLOB.headtails_list.len)
if(features["teshari_feathers"])
L[DNA_TESHARI_FEATHERS_BLOCK] = construct_block(GLOB.teshari_feathers_list.Find(features["teshari_feathers"]), GLOB.teshari_feathers_list.len)
if(features["teshari_ears"])
Expand Down Expand Up @@ -380,8 +378,6 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block())
set_uni_feature_block(blocknumber, construct_block(GLOB.caps_list.Find(features["caps"]), GLOB.caps_list.len))
if(DNA_POD_HAIR_BLOCK)
set_uni_feature_block(blocknumber, construct_block(GLOB.pod_hair_list.Find(features["pod_hair"]), GLOB.pod_hair_list.len))
if(DNA_HEADTAILS_BLOCK)
set_uni_feature_block(blocknumber, construct_block(GLOB.headtails_list.Find(features["headtails"]), GLOB.headtails_list.len))
if(DNA_TESHARI_FEATHERS_BLOCK)
set_uni_feature_block(blocknumber, construct_block(GLOB.teshari_feathers_list.Find(features["teshari_feathers"]), GLOB.teshari_feathers_list.len))
if(DNA_TESHARI_EARS_BLOCK)
Expand Down Expand Up @@ -680,8 +676,6 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block())
dna.features["caps"] = GLOB.caps_list[deconstruct_block(get_uni_feature_block(features, DNA_MUSHROOM_CAPS_BLOCK), GLOB.caps_list.len)]
if(dna.features["pod_hair"])
dna.features["pod_hair"] = GLOB.pod_hair_list[deconstruct_block(get_uni_feature_block(features, DNA_POD_HAIR_BLOCK), GLOB.pod_hair_list.len)]
if(dna.features["headtails"])
dna.features["headtails"] = GLOB.headtails_list[deconstruct_block(get_uni_feature_block(features, DNA_HEADTAILS_BLOCK), GLOB.headtails_list.len)]
if(dna.features["teshari_feathers"])
dna.features["teshari_feathers"] = GLOB.teshari_feathers_list[deconstruct_block(get_uni_feature_block(features, DNA_TESHARI_FEATHERS_BLOCK), GLOB.teshari_feathers_list.len)]
if(dna.features["teshari_ears"])
Expand Down
36 changes: 0 additions & 36 deletions code/datums/quirks/negative.dm
Original file line number Diff line number Diff line change
Expand Up @@ -424,42 +424,6 @@
medical_record_text = "Patient suffers from prosopagnosia and cannot recognize faces."
hardcore_value = 5

/datum/quirk/prosthetic_limb
name = "Prosthetic Limb"
desc = "An accident caused you to lose one of your limbs. Because of this, you now have a random prosthetic!"
icon = "tg-prosthetic-leg"
value = -4
var/slot_string = "limb"
medical_record_text = "During physical examination, patient was found to have a prosthetic limb."
hardcore_value = 3
quirk_flags = QUIRK_HUMAN_ONLY|QUIRK_CHANGES_APPEARANCE

/datum/quirk/prosthetic_limb/add_unique(client/client_source)
var/limb_slot = pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)
var/mob/living/carbon/human/human_holder = quirk_holder
var/obj/item/bodypart/old_part = human_holder.get_bodypart(limb_slot)
var/obj/item/bodypart/prosthetic
switch(limb_slot)
if(BODY_ZONE_L_ARM)
prosthetic = new/obj/item/bodypart/arm/left/robot/surplus(quirk_holder)
slot_string = "left arm"
if(BODY_ZONE_R_ARM)
prosthetic = new/obj/item/bodypart/arm/right/robot/surplus(quirk_holder)
slot_string = "right arm"
if(BODY_ZONE_L_LEG)
prosthetic = new/obj/item/bodypart/leg/left/robot/surplus(quirk_holder)
slot_string = "left leg"
if(BODY_ZONE_R_LEG)
prosthetic = new/obj/item/bodypart/leg/right/robot/surplus(quirk_holder)
slot_string = "right leg"
prosthetic.replace_limb(human_holder)
qdel(old_part)
human_holder.regenerate_icons()

/datum/quirk/prosthetic_limb/post_add()
to_chat(quirk_holder, "<span class='boldannounce'>Your [slot_string] has been replaced with a surplus prosthetic. It is fragile and will easily come apart under duress. Additionally, \
you need to use a welding tool and cables to repair it, instead of bruise packs and ointment.</span>")

/datum/quirk/pushover
name = "Pushover"
desc = "Your first instinct is always to let people push you around. Resisting out of grabs will take conscious effort."
Expand Down
2 changes: 1 addition & 1 deletion code/game/atoms.dm
Original file line number Diff line number Diff line change
Expand Up @@ -684,7 +684,7 @@
if(desc)
. += desc

if(z && user.z != z)
if(z && user.z && user.z != z)
var/diff = abs(user.z - z)
. += span_notice("<b>[p_theyre(TRUE)] [diff] level\s below you.</b>")

Expand Down
15 changes: 14 additions & 1 deletion code/game/objects/items/crayons.dm
Original file line number Diff line number Diff line change
Expand Up @@ -797,16 +797,29 @@
return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN

if(istype(target, /obj/item/bodypart) && actually_paints)

var/obj/item/bodypart/limb = target
if(!(limb.bodytype & BODYTYPE_HUMANOID))
to_chat(user, span_notice("You can't think of anything to change about [src]."))
return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN

if(!IS_ORGANIC_LIMB(limb))
var/list/skins = list()
var/static/list/style_list_icons = list("standard" = 'icons/mob/augmentation/augments.dmi', "engineer" = 'icons/mob/augmentation/augments_engineer.dmi', "security" = 'icons/mob/augmentation/augments_security.dmi', "mining" = 'icons/mob/augmentation/augments_mining.dmi')
var/static/list/style_list_icons = list(
"standard" = 'icons/mob/augmentation/augments.dmi',
"engineer" = 'icons/mob/augmentation/augments_engineer.dmi',
"security" = 'icons/mob/augmentation/augments_security.dmi',
"mining" = 'icons/mob/augmentation/augments_mining.dmi'
)

for(var/skin_option in style_list_icons)
var/image/part_image = image(icon = style_list_icons[skin_option], icon_state = "[limb.limb_id]_[limb.body_zone]")
if(limb.aux_zone) //Hands
part_image.overlays += image(icon = style_list_icons[skin_option], icon_state = "[limb.limb_id]_[limb.aux_zone]")
skins += list("[skin_option]" = part_image)

var/choice = show_radial_menu(user, src, skins, require_near = TRUE)

if(choice && (use_charges(user, 5, requires_full = FALSE) == 5))
playsound(user.loc, 'sound/effects/spray.ogg', 5, TRUE, 5)
limb.change_appearance(style_list_icons[choice], greyscale = FALSE)
Expand Down
1 change: 0 additions & 1 deletion code/game/objects/structures/crates_lockers/crates.dm
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,6 @@
new /obj/item/reagent_containers/blood/o_plus(src)
new /obj/item/reagent_containers/blood/lizard(src)
new /obj/item/reagent_containers/blood/ethereal(src)
new /obj/item/reagent_containers/blood/skrell(src)
for(var/i in 1 to 3)
new /obj/item/reagent_containers/blood/random(src)

Expand Down
Loading

0 comments on commit fec1505

Please sign in to comment.