From de6e8012f3253f779f3fb0ad3fbb0bbdcc149811 Mon Sep 17 00:00:00 2001 From: Seris02 Date: Wed, 26 Feb 2020 17:49:37 +0800 Subject: [PATCH] balances yee --- code/datums/martial/rising_bass.dm | 66 ++++++++++-------- .../mob/living/carbon/carbon_defense.dm | 7 +- .../mob/living/carbon/human/human_defense.dm | 11 ++- icons/mob/actions/actions_items.dmi | Bin 11771 -> 11770 bytes 4 files changed, 50 insertions(+), 34 deletions(-) diff --git a/code/datums/martial/rising_bass.dm b/code/datums/martial/rising_bass.dm index 779428669c..e22f3c9136 100644 --- a/code/datums/martial/rising_bass.dm +++ b/code/datums/martial/rising_bass.dm @@ -1,6 +1,8 @@ -#define SIDE_KICK_COMBO "DH" +#define REPULSE_PUNCH_COMBO "HDHD" #define SHOULDER_FLIP_COMBO "GHDGHH" #define FOOT_SMASH_COMBO "HH" +#define SIDE_KICK_COMBO "skick" +#define DEFT_SWITCH_COMBO "deft" /datum/martial_art/the_rising_bass name = "The Rising Bass" @@ -8,7 +10,7 @@ dodge_chance = 100 allow_temp_override = FALSE help_verb = /mob/living/carbon/human/proc/rising_bass_help - var/datum/action/risingbassmove/repulsepunch = new/datum/action/risingbassmove/repulsepunch() + var/datum/action/risingbassmove/sidekick = new/datum/action/risingbassmove/sidekick() var/datum/action/risingbassmove/deftswitch = new/datum/action/risingbassmove/deftswitch() var/repulsecool = 0 @@ -21,7 +23,7 @@ streak = "" shoulderFlip(A,D) return 1 - if(findtext(streak,"rplse")) + if(findtext(streak,REPULSE_PUNCH_COMBO)) streak = "" repulsePunch(A,D) return 1 @@ -29,7 +31,7 @@ streak = "" footSmash(A,D) return 1 - if(findtext(streak,"deft")) + if(findtext(streak,DEFT_SWITCH_COMBO)) streak = "" deftSwitch(A,D) return 1 @@ -58,42 +60,46 @@ to_chat(H,"You get ready to use the [name] maneuver!") H.mind.martial_art.streak = "[movestreak]" -/datum/action/risingbassmove/repulsepunch - name = "Repulse Punch" - button_icon_state = "repulsepunch" - movestreak = "rplse" +/datum/action/risingbassmove/sidekick + name = "Side Kick" + button_icon_state = "sidekick" + movestreak = "skick" /datum/action/risingbassmove/deftswitch name = "Deft Switch" button_icon_state = "deftswitch" movestreak = "deft" +/datum/martial_art/the_rising_bass/proc/checkfordensity(turf/T) + if (T.density) + return FALSE + for(var/obj/i in T) + if(!istype(i,/mob) && i.density) + return FALSE + return TRUE /datum/martial_art/the_rising_bass/proc/sideKick(mob/living/carbon/human/A, mob/living/carbon/human/D) if(!D.IsKnockdown() || D.lying == 0) - var/turf/H = get_step(D, A.dir & (NORTH | SOUTH) ? pick(EAST, WEST) : pick(NORTH, SOUTH)) + var/dir = A.dir & (NORTH | SOUTH) ? pick(EAST, WEST) : pick(NORTH, SOUTH) + var/oppdir = dir == NORTH ? SOUTH : dir == SOUTH ? NORTH : dir == EAST ? WEST : EAST + var/turf/H = get_step(D, dir) + var/turf/K = get_step(D, oppdir) A.do_attack_animation(D, ATTACK_EFFECT_KICK) D.visible_message("[A] kicks [D] in the side, sliding them over!", \ "[A] kicks you in the side, forcing you to step away!") playsound(get_turf(A), 'sound/weapons/thudswoosh.ogg', 50, 1, -1) D.apply_damage(5, BRUTE, BODY_ZONE_CHEST) D.Knockdown(60) - var/L = H - for(var/obj/i in H.contents) - if(!istype(i,/mob) && i.density == 1) - L = D.loc + var/L = !checkfordensity(H) ? (!checkfordensity(K) ? D.loc : K) : H D.forceMove(L) log_combat(A, D, "side kicked (Rising Bass)") - return 1 + return TRUE return basic_hit(A,D) /datum/martial_art/the_rising_bass/proc/shoulderFlip(mob/living/carbon/human/A, mob/living/carbon/human/D) if(!D.IsKnockdown() || !D.lying) var/turf/H = get_step(A, get_dir(D,A)) - var/L = H - for(var/obj/i in H.contents) - if(!istype(i,/mob) && i.density == 1)//(i.anchored == 1 && i.density == 1) || istype(i,/obj/structure) || istype(i,/turf/closed) - L = A.loc + var/L = checkfordensity(H) ? H : A.loc A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) D.visible_message("[A] flips [D] over their shoulder, slamming them into the ground!", \ "[A] flips you over their shoulder, slamming you into the ground!") @@ -105,11 +111,11 @@ D.Knockdown(300) D.forceMove(L) log_combat(A, D, "shoulder flipped (Rising Bass)") - return 1 + return TRUE return basic_hit(A,D) /datum/martial_art/the_rising_bass/proc/repulsePunch(mob/living/carbon/human/A, mob/living/carbon/human/D) - if(!D.IsKnockdown() || !D.lying || repulsecool > world.time) + if((!D.IsKnockdown() || !D.lying) && repulsecool > world.time) A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) D.visible_message("[A] smashes [D] in the chest, throwing them away!", \ "[A] smashes you in the chest, repelling you away!") @@ -120,7 +126,7 @@ D.Knockdown(90) log_combat(A, D, "repulse punched (Rising Bass)") repulsecool = world.time + 3 SECONDS - return 1 + return TRUE return basic_hit(A,D) /datum/martial_art/the_rising_bass/proc/footSmash(mob/living/carbon/human/A, mob/living/carbon/human/D) @@ -132,7 +138,7 @@ D.apply_damage(5, BRUTE, pick(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)) D.dropItemToGround(D.get_active_held_item()) log_combat(A, D, "foot smashed (Rising Bass)") - return 1 + return TRUE return basic_hit(A,D) /datum/martial_art/the_rising_bass/proc/deftSwitch(mob/living/carbon/human/A, mob/living/carbon/human/D) @@ -144,10 +150,10 @@ D.visible_message("[A] slaps [D]'s hands, taking [G] from them!", \ "[A] slaps you, taking [G] from you!") log_combat(A, D, "deft switched (Rising Bass)") - return 1 + return TRUE else to_chat(A, "[G] can't be taken out of [D]'s hands!") - return 0 + return FALSE /datum/martial_art/the_rising_bass/disarm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) add_to_streak("D",D) @@ -168,7 +174,7 @@ return ..() /datum/martial_art/the_rising_bass/add_to_streak(element,mob/living/carbon/human/D) - if (streak == "deft" || streak == "rplse") + if (streak == DEFT_SWITCH_COMBO || streak == SIDE_KICK_COMBO) return . = ..() @@ -179,24 +185,24 @@ to_chat(usr, "You retreat inward and recall the teachings of the Rising Bass...") - to_chat(usr, "Side Kick: Disarm Harm. Forces opponent to step to the side.") + to_chat(usr, "Side Kick: Forces opponent to step to the side.") to_chat(usr, "Shoulder Flip: Grab Harm Disarm Grab Harm Harm. Flips opponent over your shoulder and stuns.") - to_chat(usr, "Repulse Punch: Grab Harm Grab Harm. Slams the opponent far away from you.") + to_chat(usr, "Repulse Punch: Harm Disarm Harm Disarm. Slams the opponent far away from you.") to_chat(usr, "Foot Smash: Harm Harm. Stuns opponent, minor damage.") - to_chat(usr, "Deft Switch: Grab Disarm Disarm. Switches the opponent's held item for your own. Most useful with nothing in your hand.") + to_chat(usr, "Deft Switch: Switches the opponent's held item for your own. Most useful with nothing in your hand.") /datum/martial_art/the_rising_bass/teach(mob/living/carbon/human/H, make_temporary = FALSE) . = ..() if(!.) return deftswitch.Grant(H) - repulsepunch.Grant(H) + sidekick.Grant(H) ADD_TRAIT(H, TRAIT_NOGUNS, RISING_BASS_TRAIT) ADD_TRAIT(H, TRAIT_AUTO_CATCH_ITEM, RISING_BASS_TRAIT) /datum/martial_art/the_rising_bass/on_remove(mob/living/carbon/human/H) . = ..() deftswitch.Remove(H) - repulsepunch.Remove(H) + sidekick.Remove(H) REMOVE_TRAIT(H, TRAIT_NOGUNS, RISING_BASS_TRAIT) REMOVE_TRAIT(H, TRAIT_AUTO_CATCH_ITEM, RISING_BASS_TRAIT) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 637178ffe6..36524e0ac0 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -52,7 +52,12 @@ . = ..() if(!HAS_TRAIT(src, TRAIT_AUTO_CATCH_ITEM) && !skip_throw_mode_check && !in_throw_mode) return - if(get_active_held_item() || restrained()) + if(restrained()) + return + if (get_active_held_item()) + if (HAS_TRAIT_FROM(src, TRAIT_AUTO_CATCH_ITEM,RISING_BASS_TRAIT)) + visible_message("[src] chops [I] out of the air!") + return TRUE return I.attack_hand(src) if(get_active_held_item() == I) //if our attack_hand() picks up the item... diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 57b8f59780..34f9caedf4 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -49,9 +49,14 @@ if (mind.martial_art && mind.martial_art.dodge_chance) if(!lying && dna && !dna.check_mutation(HULK)) if(prob(mind.martial_art.dodge_chance)) - var/dodgemessage = pick("dodges under the projectile!","dodges to the right of the projectile!","jumps over the projectile!") - visible_message("[src] [dodgemessage]", "You dodge the projectile!") - return BULLET_ACT_BLOCK + var/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("[src] [dodgemessages[pick]] the projectile!", "You dodge the projectile!") + 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 diff --git a/icons/mob/actions/actions_items.dmi b/icons/mob/actions/actions_items.dmi index f5ba86c0fa986b3054636964de2537d4323042e2..8b21c32d6bb53cd5f2ae30e4bf75cf5199491d12 100644 GIT binary patch delta 442 zcmV;r0Y(1%Tl!m&B!8lMR9JLGWpiV4X>fFDZ*Bkpc$}5gO>W#U35xcX2kIytM^U?fx`gwgZm*?xSLo#tRXY>8j z=i$_7F5aBYx39y=gBD+on_R{Mb2bk$#+kQ=;WU$Eb2eXwlYf(O!*TtWMNI4DIdx&c zk{h6aH7=>f$#-R*#%MR5(UreZZp@|YT%g7G*@n!qt9F)xS1Xvt5Z=?Lz?}YB=bU~2 zAs?4H_g{51!LqXp&)s*DDOedP-ngmkQmO0Sm^a;L%#jkrzOmw9HV=e*?z)xY9Po># zwQqA_85h`PEPozibEBd-rZZCDyS?#imv#Y1*hPT;=_`%3(hIbyj;m-X?b_57YF5&X zqS_{I(00oaR?z(B3)H!e ztEesQ>f97+*4ksV+F))_cgzv?7HWT6mc~lx1E&WB&)4A(MnTIGg{Zu0v(N!6EJ%0ZzyJUM delta 443 zcmV;s0Yv`#Tl-s(B!8oNR9JLGWpiV4X>fFDZ*Bkpc$}5iyKdt!5Cza$`U=A7gMFlR z6F68Hi{uvwS-O0zDGo6t#W-KTg@9B^IO!zd@M=hn2D(#^Pk+uY>hydbH*oe8)log% z{}_knm*Uh>{r)u$4&J)5-{dkCsG~aY6c<_#ZpE>gMZ;^#eV(HBIfJtD0N|g z%?%L18f~g^c3qk0De9FLbmc#k3sLDh6TEeOwjxvPs*SkdRWs%(gwOO4h|-7ajM1Mz zAy%>m(-yYA}a67bj0 z*S^h#c(TxTDt`{FbMr;erVCP_o4(L%mv#X~Xv;vq`${9JbPQ>#p~_O~H)(1LH4EwL zqu3^DkXB0(n$iCNN+X$b3|XR~$};FTSz-z`i{O5kqDX3xRY?*0h7be;qBIgy#}MZl zsw}pC6X&K-v()ZKD-EUwam5s&FQN9QWoaaYjv>r6R4-X5{U*#zp=O!f4^gnaAPS5A@KeDvU=>V@s`m@ggD=gOD+^7Hm