Taekwon Kick Damage, Sprint, Flying Kick (fixes #1991)
* Taekwon Kicks no longer get a percentual damage increase from learning Sprint * Counter Kick, Heel Drop, Storm Kick and Counter Kick now get a +10 ATK bonus per level of Sprint -- This bonus is on top of the normal +10 ATK bonus from Sprint for fists * Using Flying Kick as a counter will now deal 4%*baselevel damage * Using Flying Kick while running will now deal 4%*baselevel damage regardless of skill level used -- When having the spurt buff on top, it will deal 8%*baselevel damage instead * Tumbling is now properly removed on logout * Fixed a problem that sometimes caused Tumbling to become unusable
This commit is contained in:
parent
da23d877d1
commit
40f6b7f44a
@ -3625,21 +3625,23 @@ static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *s
|
||||
break;
|
||||
case TK_DOWNKICK:
|
||||
case TK_STORMKICK:
|
||||
skillratio += 60 + 20 * skill_lv + 10 * pc_checkskill(sd,TK_RUN); //+Dmg (to Kick skills, %)
|
||||
skillratio += 60 + 20 * skill_lv;
|
||||
break;
|
||||
case TK_TURNKICK:
|
||||
case TK_COUNTER:
|
||||
skillratio += 90 + 30 * skill_lv + 10 * pc_checkskill(sd,TK_RUN);
|
||||
skillratio += 90 + 30 * skill_lv;
|
||||
break;
|
||||
case TK_JUMPKICK:
|
||||
skillratio += -70 + 10 * skill_lv + 10 * pc_checkskill(sd,TK_RUN);
|
||||
//Different damage formulas depending on damage trigger
|
||||
if (sc && sc->data[SC_COMBO] && sc->data[SC_COMBO]->val1 == skill_id)
|
||||
skillratio += 10 * status_get_lv(src) / 3; //Tumble bonus
|
||||
if (wd.miscflag) {
|
||||
skillratio += 10 * status_get_lv(src) / 3; //Running bonus (TODO: What is the real bonus?)
|
||||
if (sc && sc->data[SC_SPURT]) // Spurt bonus
|
||||
skillratio += -100 + 4 * status_get_lv(src); //Tumble formula [4%*baselevel]
|
||||
else if (wd.miscflag) {
|
||||
skillratio += -100 + 4 * status_get_lv(src); //Running formula [4%*baselevel]
|
||||
if (sc && sc->data[SC_SPURT]) //Spurt formula [8%*baselevel]
|
||||
skillratio *= 2;
|
||||
}
|
||||
else
|
||||
skillratio += -70 + 10 * skill_lv;
|
||||
break;
|
||||
case GS_TRIPLEACTION:
|
||||
skillratio += 50 * skill_lv;
|
||||
@ -5375,19 +5377,8 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl
|
||||
case TK_STORMKICK:
|
||||
case TK_TURNKICK:
|
||||
case TK_COUNTER:
|
||||
case TK_JUMPKICK:
|
||||
if(sd && pc_checkskill(sd,TK_RUN)) {
|
||||
uint8 i;
|
||||
uint16 skill = pc_checkskill(sd,TK_RUN);
|
||||
|
||||
switch(skill) {
|
||||
case 1: case 4: case 7: case 10: i = 1; break;
|
||||
case 2: case 5: case 8: i = 2; break;
|
||||
default: i = 0; break;
|
||||
}
|
||||
if(sd->weapontype1 == W_FIST && sd->weapontype2 == W_FIST)
|
||||
ATK_ADD(wd.damage, wd.damage2, 10 * skill - i);
|
||||
}
|
||||
if(sd && sd->weapontype1 == W_FIST && sd->weapontype2 == W_FIST)
|
||||
ATK_ADD(wd.damage, wd.damage2, 10 * pc_checkskill(sd, TK_RUN));
|
||||
break;
|
||||
case SR_TIGERCANNON:
|
||||
// (Tiger Cannon skill level x 240) + (Target Base Level x 40)
|
||||
|
@ -2033,6 +2033,7 @@ int map_quit(struct map_session_data *sd) {
|
||||
status_change_end(&sd->bl, SC_READYDOWN, INVALID_TIMER);
|
||||
status_change_end(&sd->bl, SC_READYTURN, INVALID_TIMER);
|
||||
status_change_end(&sd->bl, SC_READYCOUNTER, INVALID_TIMER);
|
||||
status_change_end(&sd->bl, SC_DODGE, INVALID_TIMER);
|
||||
status_change_end(&sd->bl, SC_CBC, INVALID_TIMER);
|
||||
status_change_end(&sd->bl, SC_EQC, INVALID_TIMER);
|
||||
status_change_end(&sd->bl, SC_SPRITEMABLE, INVALID_TIMER);
|
||||
|
@ -2695,7 +2695,7 @@ int skill_is_combo(uint16 skill_id) {
|
||||
/*
|
||||
* Combo handler, start stop combo status
|
||||
*/
|
||||
void skill_combo_toogle_inf(struct block_list* bl, uint16 skill_id, int inf){
|
||||
void skill_combo_toggle_inf(struct block_list* bl, uint16 skill_id, int inf){
|
||||
TBL_PC *sd = BL_CAST(BL_PC, bl);
|
||||
switch (skill_id) {
|
||||
case MH_MIDNIGHT_FRENZY:
|
||||
|
@ -2134,7 +2134,7 @@ int skill_changematerial(struct map_session_data *sd, int n, unsigned short *ite
|
||||
int skill_get_elemental_type(uint16 skill_id, uint16 skill_lv);
|
||||
|
||||
int skill_is_combo(uint16 skill_id);
|
||||
void skill_combo_toogle_inf(struct block_list* bl, uint16 skill_id, int inf);
|
||||
void skill_combo_toggle_inf(struct block_list* bl, uint16 skill_id, int inf);
|
||||
void skill_combo(struct block_list* src,struct block_list *dsrc, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int tick);
|
||||
|
||||
void skill_reveal_trap_inarea(struct block_list *src, int range, int x, int y);
|
||||
|
@ -11314,19 +11314,23 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
||||
case SC_COMBO:
|
||||
switch(sce->val1) {
|
||||
case TK_STORMKICK:
|
||||
skill_combo_toggle_inf(bl, TK_JUMPKICK, 0);
|
||||
clif_skill_nodamage(bl,bl,TK_READYSTORM,1,1);
|
||||
break;
|
||||
case TK_DOWNKICK:
|
||||
skill_combo_toggle_inf(bl, TK_JUMPKICK, 0);
|
||||
clif_skill_nodamage(bl,bl,TK_READYDOWN,1,1);
|
||||
break;
|
||||
case TK_TURNKICK:
|
||||
skill_combo_toggle_inf(bl, TK_JUMPKICK, 0);
|
||||
clif_skill_nodamage(bl,bl,TK_READYTURN,1,1);
|
||||
break;
|
||||
case TK_COUNTER:
|
||||
skill_combo_toggle_inf(bl, TK_JUMPKICK, 0);
|
||||
clif_skill_nodamage(bl,bl,TK_READYCOUNTER,1,1);
|
||||
break;
|
||||
default: // Rest just toogle inf to enable autotarget
|
||||
skill_combo_toogle_inf(bl,sce->val1,INF_SELF_SKILL);
|
||||
default: // Rest just toggle inf to enable autotarget
|
||||
skill_combo_toggle_inf(bl,sce->val1,INF_SELF_SKILL);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@ -11840,7 +11844,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
|
||||
}
|
||||
break;
|
||||
case SC_COMBO:
|
||||
skill_combo_toogle_inf(bl,sce->val1,0);
|
||||
skill_combo_toggle_inf(bl,sce->val1,0);
|
||||
break;
|
||||
case SC_MARIONETTE:
|
||||
case SC_MARIONETTE2: // Marionette target
|
||||
|
Loading…
x
Reference in New Issue
Block a user