Massively refactors martial arts, ports New Sleeping Carp

This commit is contained in:
necromanceranne
2020-03-10 20:09:31 +11:00
parent bd2aa5f54b
commit f41f78b162
8 changed files with 170 additions and 222 deletions
@@ -45,31 +45,11 @@
if(spec_return)
return spec_return
if(mind)
if (mind.martial_art && mind.martial_art.dodge_chance)
if(!lying && dna && !dna.check_mutation(HULK))
if(prob(mind.martial_art.dodge_chance))
var/static/dodgemessages = list("dodges under",0,-4,"dodges to the right of",-4,0,"dodges to the left of",4,0,"jumps over",0,4)
var/pick = pick(1,4,7,10)
var/oldx = pixel_x
var/oldy = pixel_y
animate(src,pixel_x = pixel_x + dodgemessages[pick+1],pixel_y = pixel_y + dodgemessages[pick+2],time=3)
animate(src,pixel_x = oldx,pixel_y = oldy,time=2)
visible_message("<span class='danger'>[src] [dodgemessages[pick]] the projectile!</span>", "<span class='userdanger'>You dodge the projectile!</span>")
return BULLET_ACT_FORCE_PIERCE
if(mind.martial_art && !incapacitated(FALSE, TRUE) && mind.martial_art.can_use(src) && mind.martial_art.deflection_chance) //Some martial arts users can deflect projectiles!
if(prob(mind.martial_art.deflection_chance))
if(!lying && dna && !dna.check_mutation(HULK)) //But only if they're not lying down, and hulks can't do it
if(mind.martial_art.deflection_chance >= 100) //if they can NEVER be hit, lets clue sec in ;)
visible_message("<span class='danger'>[src] deflects the projectile; [p_they()] can't be hit with ranged weapons!</span>", "<span class='userdanger'>You deflect the projectile!</span>")
else
visible_message("<span class='danger'>[src] deflects the projectile!</span>", "<span class='userdanger'>You deflect the projectile!</span>")
playsound(src, pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg'), 75, 1)
if(mind.martial_art.reroute_deflection)
P.firer = src
P.setAngle(rand(0, 360))//SHING
return BULLET_ACT_FORCE_PIERCE
if(mind) //martial art stuff
if(mind.martial_art && mind.martial_art.can_use(src)) //Some martial arts users can deflect projectiles!
var/martial_art_result = mind.martial_art.on_projectile_hit(src, P, def_zone)
if(!(martial_art_result == BULLET_ACT_HIT))
return martial_art_result
return ..()
/mob/living/carbon/human/check_reflect(def_zone)
@@ -123,7 +123,7 @@ Difficulty: Very Hard
if(ishuman(L))
var/mob/living/carbon/human/H = L
if(H.mind)
if(H.mind.martial_art && prob(H.mind.martial_art.deflection_chance))
if(istype(H.mind.martial_art, /datum/martial_art/the_sleeping_carp) & istype(H.mind.martial_art, /datum/martial_art/the_rising_bass))
. = TRUE
/mob/living/simple_animal/hostile/megafauna/colossus/proc/alternating_dir_shots()