diff --git a/code/modules/mob/living/carbon/human/emote_vr.dm b/code/modules/mob/living/carbon/human/emote_vr.dm index 48d3c95a737..561a67a0247 100644 --- a/code/modules/mob/living/carbon/human/emote_vr.dm +++ b/code/modules/mob/living/carbon/human/emote_vr.dm @@ -8,10 +8,35 @@ message = "awoos loudly. AwoooOOOOoooo!" m_type = 2 if ("flip") - message = "does a flip!" - if(!src.sleeping || !src.resting || !src.buckled || !src.restrained()) + var/danger = 1 //Base 1% chance to break something. + var/list/involved_parts = list(BP_L_LEG, BP_R_LEG, BP_L_FOOT, BP_R_FOOT) + for(var/organ_name in involved_parts) + var/obj/item/organ/external/E = get_organ(organ_name) + if(!E || E.is_stump() || E.splinted || (E.status & ORGAN_BROKEN)) + involved_parts -= organ_name + danger += 2 + + //Taurs are harder to flip + if(istype(tail_style, /datum/sprite_accessory/tail/taur)) + danger += 1 + + //Check if they are physically capable + if(src.sleeping || src.resting || src.buckled || src.weakened || src.restrained() || involved_parts.len < 2) + src << "You can't *flip in your current state!" + return 1 + else src.SpinAnimation(7,1) - m_type = 1 + message = "does a flip!" + m_type = 1 + + world.log << "[src] *flip with danger [danger]%" + if(prob(danger)) + spawn(10) //Stick the landing. + var/breaking = pick(involved_parts) + var/obj/item/organ/external/E = get_organ(breaking) + src.Weaken(5) + E.fracture() + log_and_message_admins("broke their [breaking] with *flip, ahahah.", src) if (message) log_emote("[name]/[key] : [message]")