[MIRROR] PUN PUN DRIP [MDB IGNORE] (#15155)

* PUN PUN DRIP

* Update inventory.dm

* Fixed a merge conflict

Co-authored-by: 13spacemen <46101244+13spacemen@users.noreply.github.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
This commit is contained in:
SkyratBot
2022-07-24 18:32:03 -07:00
committed by GitHub
co-authored by 13spacemen Zonespace GoldenAlpharex
parent 2c09257db5
commit eb5c8ef3d5
8 changed files with 35 additions and 14 deletions
+8 -6
View File
@@ -157,19 +157,21 @@
#define CLOTHING_DIGITIGRADE_VARIATION (1<<1)
///The sprite works fine for digitigrade legs as-is.
#define CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON (1<<2)
///has a sprite for monkeys
#define CLOTHING_MONKEY_VARIATION (1<<3)
// SKYRAT EDIT ADDITION
/// The sprite works fine for snouts.
#define CLOTHING_SNOUTED_VARIATION (1<<3)
#define CLOTHING_SNOUTED_VARIATION (1<<4)
/// The sprite works fine for snouts as-is.
#define CLOTHING_SNOUTED_VARIATION_NO_NEW_ICON (1<<4)
#define CLOTHING_SNOUTED_VARIATION_NO_NEW_ICON (1<<5)
/// The sprite works fine for vox snouts.
#define CLOTHING_SNOUTED_VOX_VARIATION (1<<5)
#define CLOTHING_SNOUTED_VOX_VARIATION (1<<6)
/// The sprite works fine for vox snouts as is.
#define CLOTHING_SNOUTED_VOX_VARIATION_NO_NEW_ICON (1<<6)
#define CLOTHING_SNOUTED_VOX_VARIATION_NO_NEW_ICON (1<<7)
/// The sprite works fine for vox snouts.
#define CLOTHING_SNOUTED_BETTER_VOX_VARIATION (1<<7)
#define CLOTHING_SNOUTED_BETTER_VOX_VARIATION (1<<8)
/// The sprite works fine for vox snouts as is.
#define CLOTHING_SNOUTED_BETTER_VOX_VARIATION_NO_NEW_ICON (1<<8)
#define CLOTHING_SNOUTED_BETTER_VOX_VARIATION_NO_NEW_ICON (1<<9)
// SKYRAT EDIT END
//flags for covering body parts
+4
View File
@@ -6,6 +6,10 @@
///The dmi for humanoid oversuits
#define DEFAULT_SUIT_FILE 'icons/mob/clothing/suits/default.dmi'
//MONKEY PATHS
///The dmi for monkey uniforms
#define MONKEY_UNIFORM_FILE 'icons/mob/species/monkey/uniform.dmi'
//DIGITIGRADE PATHS
///The dmi containing digitigrade uniforms
#define DIGITIGRADE_UNIFORM_FILE 'modular_skyrat/master_files/icons/mob/clothing/uniform_digi.dmi' // SKYRAT EDIT CHANGE
+1
View File
@@ -30,6 +30,7 @@
desc = "It's a very smart uniform with a special pocket for tip."
icon_state = "waiter"
inhand_icon_state = "waiter"
supports_variations_flags = CLOTHING_MONKEY_VARIATION
/obj/item/clothing/under/suit/blacktwopiece
name = "black two piece suit"
@@ -172,6 +172,9 @@ There are several things that need to be remembered:
icon_file = dna.species.generate_custom_worn_icon(LOADOUT_ITEM_UNIFORM, w_uniform)
// SKYRAT EDIT END
if((dna?.species.bodytype & BODYTYPE_MONKEY) && (uniform.supports_variations_flags & CLOTHING_MONKEY_VARIATION))
icon_file = MONKEY_UNIFORM_FILE
//Female sprites have lower priority than digitigrade sprites
else if(dna.species.sexes && (dna.species.bodytype & BODYTYPE_HUMANOID) && physique == FEMALE && uniform.female_sprite_flags != NO_FEMALE_UNIFORM) //Agggggggghhhhh
woman = TRUE
@@ -76,6 +76,7 @@ GLOBAL_DATUM(the_one_and_only_punpun, /mob/living/carbon/human/species/monkey/pu
equip_to_slot_or_del(new relic_hat, ITEM_SLOT_HEAD)
if(relic_mask)
equip_to_slot_or_del(new relic_mask, ITEM_SLOT_MASK)
equip_to_slot_or_del(new /obj/item/clothing/under/suit/waiter(src), ITEM_SLOT_ICLOTHING)
/mob/living/carbon/human/species/monkey/punpun/Destroy()
if(GLOB.the_one_and_only_punpun == src)
@@ -412,6 +412,12 @@ GLOBAL_LIST_EMPTY(features_by_species)
// organ.Insert will qdel any current organs in that slot, so we don't need to.
replacement.Insert(C, TRUE, FALSE)
/datum/species/proc/worn_items_fit_body_check(mob/living/carbon/wearer)
for(var/obj/item/equipped_item in wearer.get_all_worn_items())
var/equipped_item_slot = wearer.get_slot_by_item(equipped_item)
if(!can_equip(equipped_item, equipped_item_slot, H = wearer, bypass_equip_delay_self = TRUE, ignore_equipped = TRUE))
wearer.dropItemToGround(equipped_item)
/**
* Proc called when a carbon becomes this species.
*
@@ -427,10 +433,6 @@ GLOBAL_LIST_EMPTY(features_by_species)
// Drop the items the new species can't wear
if((AGENDER in species_traits))
C.gender = PLURAL
for(var/slot_id in no_equip)
var/obj/item/thing = C.get_item_by_slot(slot_id)
if(thing && (!thing.species_exception || !is_type_in_list(src,thing.species_exception)))
C.dropItemToGround(thing)
if(C.hud_used)
C.hud_used.update_locked_slots()
@@ -440,6 +442,8 @@ GLOBAL_LIST_EMPTY(features_by_species)
replace_body(C, src)
regenerate_organs(C, old_species, visual_only = C.visual_only_organs)
INVOKE_ASYNC(src, .proc/worn_items_fit_body_check, C)
if(exotic_bloodtype && C.dna.blood_type != exotic_bloodtype)
C.dna.blood_type = exotic_bloodtype
@@ -838,14 +842,15 @@ GLOBAL_LIST_EMPTY(features_by_species)
/datum/species/proc/spec_death(gibbed, mob/living/carbon/human/H)
return
/datum/species/proc/can_equip(obj/item/I, slot, disable_warning, mob/living/carbon/human/H, bypass_equip_delay_self = FALSE)
/datum/species/proc/can_equip(obj/item/I, slot, disable_warning, mob/living/carbon/human/H, bypass_equip_delay_self = FALSE, ignore_equipped = FALSE)
if(slot in no_equip)
if(!I.species_exception || !is_type_in_list(src, I.species_exception))
return FALSE
// if there's an item in the slot we want, fail
if(H.get_item_by_slot(slot))
return FALSE
if(!ignore_equipped)
if(H.get_item_by_slot(slot))
return FALSE
// this check prevents us from equipping something to a slot it doesn't support, WITH the exceptions of storage slots (pockets, suit storage, and backpacks)
// we don't require having those slots defined in the item's slot_flags, so we'll rely on their own checks further down
@@ -913,6 +918,12 @@ GLOBAL_LIST_EMPTY(features_by_species)
return FALSE
return equip_delay_self_check(I, H, bypass_equip_delay_self)
if(ITEM_SLOT_ICLOTHING)
var/obj/item/bodypart/chest = H.get_bodypart(BODY_ZONE_CHEST)
if(chest && (chest.bodytype & BODYTYPE_MONKEY))
if(!(I.supports_variations_flags & CLOTHING_MONKEY_VARIATION))
if(!disable_warning)
to_chat(H, span_warning("[I] doesn't fit your [chest.name]!"))
return FALSE
return equip_delay_self_check(I, H, bypass_equip_delay_self)
if(ITEM_SLOT_ID)
var/obj/item/bodypart/O = H.get_bodypart(BODY_ZONE_CHEST)
@@ -35,7 +35,6 @@
ITEM_SLOT_OCLOTHING,
ITEM_SLOT_GLOVES,
ITEM_SLOT_FEET,
ITEM_SLOT_ICLOTHING,
ITEM_SLOT_SUITSTORE,
)
changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | ERT_SPAWN | SLIME_EXTRACT
Binary file not shown.

After

Width:  |  Height:  |  Size: 546 B