diff --git a/code/modules/mob/living/living_movement.dm b/code/modules/mob/living/living_movement.dm index 8f9a5c0f31..064f52d156 100644 --- a/code/modules/mob/living/living_movement.dm +++ b/code/modules/mob/living/living_movement.dm @@ -112,14 +112,14 @@ default behaviour is: //VOREstation Edit - End forceMove(tmob.loc) - //VOREstation Edit - Begin + //CHOMPSTATION Edit - Making macro/micro step mechanics mandatory again for balance, but removing the fetish aspects if pref denied. + //There's nothing fetishistic about politely stepping past someone. // In case of micros, we don't swap positions; instead occupying the same square! - if(step_mechanics_pref && tmob.step_mechanics_pref) - if(handle_micro_bump_helping(tmob)) - now_pushing = 0 - return + if(handle_micro_bump_helping(tmob)) + now_pushing = 0 + return // TODO - Check if we need to do something about the slime.UpdateFeed() we are skipping below. - // VOREStation Edit - End + // CHOMPSTATION Edit - End tmob.forceMove(oldloc) now_pushing = 0 return @@ -145,10 +145,13 @@ default behaviour is: H.Weaken(5) now_pushing = 0 return + //CHOMPSTATION edit - bringing back mandatory step mechanics, fetish stuff removed if no prefs // Handle grabbing, stomping, and such of micros! if(step_mechanics_pref && tmob.step_mechanics_pref) if(handle_micro_bump_other(tmob)) return - // VOREStation Edit - End + else + if(handle_micro_bump_other(tmob,1)) return + // CHOMPSTATION edit end if(istype(tmob, /mob/living/carbon/human) && (FAT in tmob.mutations)) if(prob(40) && !(FAT in src.mutations)) to_chat(src, "You fail to push [tmob]'s fat ass out of the way.") diff --git a/code/modules/vore/resizing/resize_vr.dm b/code/modules/vore/resizing/resize_vr.dm index 083e12a544..644e5bba6c 100644 --- a/code/modules/vore/resizing/resize_vr.dm +++ b/code/modules/vore/resizing/resize_vr.dm @@ -144,9 +144,7 @@ var/new_size = input(nagmessage, "Pick a Size") as num|null if(size_range_check(new_size)) resize(new_size/100, uncapped = has_large_resize_bounds(), ignore_prefs = TRUE) - // I'm not entirely convinced that `src ? ADMIN_JMP(src) : "null"` here does anything - // but just in case it does, I'm leaving the null-src checking - message_admins("[key_name(src)] used the resize command in-game to be [new_size]% size. [src ? ADMIN_JMP(src) : "null"]") + //CHOMPEDIT - I don't need to be informed every time a prommie changes sizes /* //Add the set_size() proc to usable verbs. By commenting this out, we can leave the proc and hand it to species that need it. @@ -241,7 +239,7 @@ * * @return false if normal code should continue, 1 to prevent normal code. */ -/mob/living/proc/handle_micro_bump_other(mob/living/tmob) +/mob/living/proc/handle_micro_bump_other(mob/living/tmob, nofetish = 0) //CHOMPEDIT - changed a lot in this whole proc tbh, to bring back micro combat balance ASSERT(istype(tmob)) //If we're flying, don't do any special interactions. if(flying) @@ -271,25 +269,27 @@ // We need to be above a certain size ratio in order to do anything to the prey. // For DISARM and HURT intent, this is >=0.75, for GRAB it is >=0.5 var/size_ratio = get_effective_size() - tmob.get_effective_size() - if(a_intent == I_GRAB && size_ratio < 0.5) + if((a_intent == I_GRAB || a_intent == I_DISARM) && size_ratio < 0.5) //CHOMPEDIT - more step changes return FALSE - if((a_intent == I_DISARM || a_intent == I_HURT) && size_ratio < 0.75) + if(a_intent == I_HURT && size_ratio < 0.75) return FALSE if(a_intent == I_HELP) // Theoretically not possible, but just in case. return FALSE - if(tmob.a_intent != I_HELP && prob(35)) - to_chat(pred, "[prey] dodges out from under your foot!") - to_chat(prey, "You narrowly avoid [pred]'s foot!") - return FALSE - + //CHOMPEdit - removed chance to dodge steppies. Get rng out of my combat. now_pushing = 0 forceMove(tmob.loc) - if(a_intent == I_GRAB || a_intent == I_DISARM) - if(tmob.a_intent == I_HELP) - tmob.resting = 1 - else - tmob.Weaken(1) + if(a_intent != I_HELP) + if(tmob.size_multiplier >= 1 && nofetish) //So we can stun micros with step mechanics off, but prevent macros from stunning regular heights + to_chat(pred, "You pass over [tmob.name].") + to_chat(prey, "[src.name] passes over you.") + return FALSE + tmob.resting = 1 + tmob.Weaken(3) //CHOMPEdit - do both regardless of intent, dummy + if(nofetish) + to_chat(pred, "You casually knock [tmob.name] over.") + to_chat(prey, "[src.name] casually knocks you over.") + return TRUE var/size_damage_multiplier = size_multiplier - tmob.size_multiplier // This technically means that I_GRAB will set this value to the same as I_HARM, but @@ -306,71 +306,71 @@ var/datum/sprite_accessory/tail/taur/tail = null if(istaurtail(pred.tail_style)) tail = pred.tail_style + if(!nofetish) //CHOMPedit - Brings back mandatory step mechanics, circumvents the fetish stuff if no pref match + if(a_intent == I_GRAB) + // You can only grab prey if you have no shoes on. And both of you are cool with it. + if(pred.shoes || !(pred.pickup_pref && prey.pickup_pref)) + message_pred = "You step down onto [prey], squishing them and forcing them down to the ground!" + message_prey = "[pred] steps down and squishes you with their foot, forcing you down to the ground!" + if(tail) + message_pred = STEP_TEXT_OWNER(tail.msg_owner_grab_fail) + message_prey = STEP_TEXT_PREY(tail.msg_prey_grab_fail) + add_attack_logs(pred, prey,"Grabbed underfoot ([tail ? "taur" : "nontaur"], shoes)") + else + message_pred = "You pin [prey] down onto the floor with your foot and curl your toes up around their body, trapping them inbetween them!" + message_prey = "[pred] pins you down to the floor with their foot and curls their toes up around your body, trapping you inbetween them!" + if(tail) + message_pred = STEP_TEXT_OWNER(tail.msg_owner_grab_success) + message_prey = STEP_TEXT_PREY(tail.msg_prey_grab_success) + equip_to_slot_if_possible(prey.get_scooped(pred), slot_shoes, 0, 1) + add_attack_logs(pred, prey, "Grabbed underfoot ([tail ? "taur" : "nontaur"], no shoes)") - if(a_intent == I_GRAB) - // You can only grab prey if you have no shoes on. And both of you are cool with it. - if(pred.shoes || !(pred.pickup_pref && prey.pickup_pref)) - message_pred = "You step down onto [prey], squishing them and forcing them down to the ground!" - message_prey = "[pred] steps down and squishes you with their foot, forcing you down to the ground!" - if(tail) - message_pred = STEP_TEXT_OWNER(tail.msg_owner_grab_fail) - message_prey = STEP_TEXT_PREY(tail.msg_prey_grab_fail) - add_attack_logs(pred, prey,"Grabbed underfoot ([tail ? "taur" : "nontaur"], shoes)") + if(m_intent == "run") + switch(a_intent) + if(I_DISARM) + message_pred = "You quickly push [prey] to the ground with your foot!" + message_prey = "[pred] pushes you down to the ground with their foot!" + if(tail) + message_pred = STEP_TEXT_OWNER(tail.msg_owner_disarm_run) + message_prey = STEP_TEXT_PREY(tail.msg_prey_disarm_run) + add_attack_logs(pred, prey, "Pinned underfoot (run, no halloss)") + if(I_HURT) + message_pred = "You carelessly step down onto [prey], crushing them!" + message_prey = "[pred] steps carelessly on your body, crushing you!" + if(tail) + message_pred = STEP_TEXT_OWNER(tail.msg_owner_harm_run) + message_prey = STEP_TEXT_PREY(tail.msg_prey_harm_run) + + for(var/obj/item/organ/external/I in prey.organs) + I.take_damage(calculated_damage, 0) // 5 damage min, 26.25 damage max, depending on size & RNG. If they're only stepped on once, the damage will (probably not...) heal over time. + prey.drip(0.1) + add_attack_logs(pred, prey, "Crushed underfoot (run, about [calculated_damage] damage)") else - message_pred = "You pin [prey] down onto the floor with your foot and curl your toes up around their body, trapping them inbetween them!" - message_prey = "[pred] pins you down to the floor with their foot and curls their toes up around your body, trapping you inbetween them!" - if(tail) - message_pred = STEP_TEXT_OWNER(tail.msg_owner_grab_success) - message_prey = STEP_TEXT_PREY(tail.msg_prey_grab_success) - equip_to_slot_if_possible(prey.get_scooped(pred), slot_shoes, 0, 1) - add_attack_logs(pred, prey, "Grabbed underfoot ([tail ? "taur" : "nontaur"], no shoes)") + switch(a_intent) + if(I_DISARM) + message_pred = "You firmly push your foot down on [prey], painfully but harmlessly pinning them to the ground!" + message_prey = "[pred] firmly pushes their foot down on you, quite painfully but harmlessly pinning you to the ground!" + if(tail) + message_pred = STEP_TEXT_OWNER(tail.msg_owner_disarm_walk) + message_prey = STEP_TEXT_PREY(tail.msg_prey_disarm_walk) + add_attack_logs(pred, prey, "Pinned underfoot (walk, about [damage] halloss)") + tmob.Weaken(2) //Removed halloss because it was being abused + if(I_HURT) + message_pred = "You methodically place your foot down upon [prey]'s body, slowly applying pressure, crushing them against the floor below!" + message_prey = "[pred] methodically places their foot upon your body, slowly applying pressure, crushing you against the floor below!" + if(tail) + message_pred = STEP_TEXT_OWNER(tail.msg_owner_harm_walk) + message_prey = STEP_TEXT_PREY(tail.msg_prey_harm_walk) + // Multiplies the above damage by 3.5. This means a min of 1.75 damage, or a max of 9.1875. damage to each limb, depending on size and RNG. + calculated_damage *= 3.5 + for(var/obj/item/organ/I in prey.organs) + I.take_damage(calculated_damage, 0) + prey.drip(3) + add_attack_logs(pred, prey, "Crushed underfoot (walk, about [calculated_damage] damage)") - if(m_intent == "run") - switch(a_intent) - if(I_DISARM) - message_pred = "You quickly push [prey] to the ground with your foot!" - message_prey = "[pred] pushes you down to the ground with their foot!" - if(tail) - message_pred = STEP_TEXT_OWNER(tail.msg_owner_disarm_run) - message_prey = STEP_TEXT_PREY(tail.msg_prey_disarm_run) - add_attack_logs(pred, prey, "Pinned underfoot (run, no halloss)") - if(I_HURT) - message_pred = "You carelessly step down onto [prey], crushing them!" - message_prey = "[pred] steps carelessly on your body, crushing you!" - if(tail) - message_pred = STEP_TEXT_OWNER(tail.msg_owner_harm_run) - message_prey = STEP_TEXT_PREY(tail.msg_prey_harm_run) - - for(var/obj/item/organ/external/I in prey.organs) - I.take_damage(calculated_damage, 0) // 5 damage min, 26.25 damage max, depending on size & RNG. If they're only stepped on once, the damage will (probably not...) heal over time. - prey.drip(0.1) - add_attack_logs(pred, prey, "Crushed underfoot (run, about [calculated_damage] damage)") - else - switch(a_intent) - if(I_DISARM) - message_pred = "You firmly push your foot down on [prey], painfully but harmlessly pinning them to the ground!" - message_prey = "[pred] firmly pushes their foot down on you, quite painfully but harmlessly pinning you to the ground!" - if(tail) - message_pred = STEP_TEXT_OWNER(tail.msg_owner_disarm_walk) - message_prey = STEP_TEXT_PREY(tail.msg_prey_disarm_walk) - add_attack_logs(pred, prey, "Pinned underfoot (walk, about [damage] halloss)") - tmob.Weaken(2) //Removed halloss because it was being abused - if(I_HURT) - message_pred = "You methodically place your foot down upon [prey]'s body, slowly applying pressure, crushing them against the floor below!" - message_prey = "[pred] methodically places their foot upon your body, slowly applying pressure, crushing you against the floor below!" - if(tail) - message_pred = STEP_TEXT_OWNER(tail.msg_owner_harm_walk) - message_prey = STEP_TEXT_PREY(tail.msg_prey_harm_walk) - // Multiplies the above damage by 3.5. This means a min of 1.75 damage, or a max of 9.1875. damage to each limb, depending on size and RNG. - calculated_damage *= 3.5 - for(var/obj/item/organ/I in prey.organs) - I.take_damage(calculated_damage, 0) - prey.drip(3) - add_attack_logs(pred, prey, "Crushed underfoot (walk, about [calculated_damage] damage)") - - to_chat(pred, "[message_pred]") - to_chat(prey, "[message_prey]") - return TRUE + to_chat(pred, "[message_pred]") + to_chat(prey, "[message_prey]") + return TRUE /mob/living/verb/toggle_pickups() set name = "Toggle Micro Pick-up"