BRING BACK MICRO PUNISH

This commit is contained in:
BlackMajor
2022-02-19 20:40:22 +13:00
parent a1f480932b
commit 54c9bb63f7
2 changed files with 88 additions and 85 deletions
+10 -7
View File
@@ -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, "<span class='danger'>You fail to push [tmob]'s fat ass out of the way.</span>")
+78 -78
View File
@@ -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, "<span class='danger'>[prey] dodges out from under your foot!</span>")
to_chat(prey, "<span class='danger'>You narrowly avoid [pred]'s foot!</span>")
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, "<span class='danger'>You pass over [tmob.name].</span>")
to_chat(prey, "<span class='danger'>[src.name] passes over you.</span>")
return FALSE
tmob.resting = 1
tmob.Weaken(3) //CHOMPEdit - do both regardless of intent, dummy
if(nofetish)
to_chat(pred, "<span class='danger'>You casually knock [tmob.name] over.</span>")
to_chat(prey, "<span class='danger'>[src.name] casually knocks you over.</span>")
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, "<span class='danger'>[message_pred]</span>")
to_chat(prey, "<span class='danger'>[message_prey]</span>")
return TRUE
to_chat(pred, "<span class='danger'>[message_pred]</span>")
to_chat(prey, "<span class='danger'>[message_prey]</span>")
return TRUE
/mob/living/verb/toggle_pickups()
set name = "Toggle Micro Pick-up"