* Fixed a mistake that was causing Ruwach to only work in PvP and PvM
* Updated code for Joint Beat git-svn-id: https://svn.code.sf.net/p/rathena/svn/branches/stable@1023 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
b99eedf204
commit
d5b829dbfb
@ -1,5 +1,9 @@
|
||||
Date Added
|
||||
|
||||
02/03
|
||||
* Fixed a mistake that was causing Ruwach to only work in PvP and PvM [celest]
|
||||
* Added DracoRPG's code for Joint Beat effects, thanks! [celest]
|
||||
|
||||
02/02
|
||||
* Added checks to prevent some crashes in skill.c
|
||||
[Full credit to shinomori] [SVN 1022: Ajarn]
|
||||
|
@ -551,7 +551,7 @@ gvg_magic_attack_damage_rate: 50
|
||||
// Misc damage adjustments for WoE battles (Guild Vs Guild) (Note 2)
|
||||
gvg_misc_attack_damage_rate: 60
|
||||
|
||||
// When the empelium is broken with WoE mode on, How Long Before The Declaration Of Castle Owner
|
||||
// When the emperium is broken with WoE mode on, How Long Before The Declaration Of Castle Owner
|
||||
// and Removal of Monsters/Players from Castle. (in milliseconds)
|
||||
gvg_eliminate_time: 7000
|
||||
|
||||
|
@ -281,7 +281,7 @@
|
||||
396,0,0,1,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //CG_MARIONETTE#マリオネットコントロ?ル#
|
||||
397,0,0,18:21:23:25:28,0,0,0,4:05,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //LK_SPIRALPIERCE#スパイラルピア?ス#
|
||||
398,0,0,23,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //LK_HEADCRUSH#ヘッドクラッシュ#
|
||||
399,0,0,22:24:26:28:30:32:34:36:38:40,0,0,0,4:05,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //LK_JOINTBEAT#ジョイントビ?ト#
|
||||
399,0,0,12:12:14:14:16:16:18:18:20:20,0,0,0,4:05,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //LK_JOINTBEAT#ジョイントビ?ト#
|
||||
400,0,0,10:25:40:55:70,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //HW_NAPALMVULCAN#ナパ?ムバルカン#
|
||||
401,0,0,20,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //CH_SOULCOLLECT#狂?功#
|
||||
402,0,0,4:5:6:7:8:9:10:11:12:13,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //PF_MINDBREAKER#マインドブレ?カ?#
|
||||
|
@ -689,8 +689,13 @@ static struct Damage battle_calc_pet_weapon_attack(
|
||||
if(cri < 1)
|
||||
cri = 1;
|
||||
}
|
||||
if(t_sc_data != NULL && t_sc_data[SC_SLEEP].timer!=-1 )
|
||||
cri <<=1;
|
||||
if(t_sc_data) {
|
||||
if (t_sc_data[SC_SLEEP].timer!=-1)
|
||||
cri <<=1;
|
||||
if(t_sc_data[SC_JOINTBEAT].timer != -1 &&
|
||||
t_sc_data[SC_JOINTBEAT].val2 == 6) // Always take crits with Neck broken by Joint Beat [DracoRPG]
|
||||
cri = 1000;
|
||||
}
|
||||
|
||||
if(skill_num == 0 && battle_config.enemy_critical && (rand() % 1000) < cri)
|
||||
{
|
||||
@ -1155,8 +1160,13 @@ static struct Damage battle_calc_mob_weapon_attack(
|
||||
if(cri < 1)
|
||||
cri = 1;
|
||||
}
|
||||
if(t_sc_data != NULL && t_sc_data[SC_SLEEP].timer!=-1 ) // 睡眠中はクリティカルが倍に
|
||||
cri <<=1;
|
||||
if(t_sc_data) {
|
||||
if (t_sc_data[SC_SLEEP].timer!=-1 ) // 睡眠中はクリティカルが倍に
|
||||
cri <<=1;
|
||||
if(t_sc_data[SC_JOINTBEAT].timer != -1 &&
|
||||
t_sc_data[SC_JOINTBEAT].val2 == 6) // Always take crits with Neck broken by Joint Beat [DracoRPG]
|
||||
cri = 1000;
|
||||
}
|
||||
|
||||
if(ac_flag) cri = 1000;
|
||||
|
||||
@ -1767,8 +1777,13 @@ static struct Damage battle_calc_pc_weapon_attack(
|
||||
// カタールの場合、クリティカルを倍に
|
||||
cri <<=1;
|
||||
cri -= status_get_luk(target) * 3;
|
||||
if(t_sc_data != NULL && t_sc_data[SC_SLEEP].timer!=-1 ) // 睡眠中はクリティカルが倍に
|
||||
cri <<=1;
|
||||
if(t_sc_data) {
|
||||
if (t_sc_data[SC_SLEEP].timer!=-1 ) // 睡眠中はクリティカルが倍に
|
||||
cri <<=1;
|
||||
if(t_sc_data[SC_JOINTBEAT].timer != -1 &&
|
||||
t_sc_data[SC_JOINTBEAT].val2 == 6) // Always take crits with Neck broken by Joint Beat [DracoRPG]
|
||||
cri = 1000;
|
||||
}
|
||||
if(ac_flag) cri = 1000;
|
||||
|
||||
if(skill_num == KN_AUTOCOUNTER) {
|
||||
|
@ -1238,7 +1238,7 @@ int skill_additional_effect( struct block_list* src, struct block_list *bl,int s
|
||||
break;
|
||||
case LK_JOINTBEAT: /* ジョイントビ?ト */
|
||||
//?件が良く分からないので適?に
|
||||
if( rand()%100 < (2*skilllv+10)*sc_def_vit/100 )
|
||||
if( rand()%100 < (5*skilllv+5)*sc_def_vit/100 )
|
||||
status_change_start(bl,SC_JOINTBEAT,skilllv,0,0,0,skill_get_time2(skillid,skilllv),0);
|
||||
break;
|
||||
case PF_SPIDERWEB: /* スパイダ?ウェッブ */
|
||||
|
@ -1007,6 +1007,28 @@ int status_calc_pc(struct map_session_data* sd,int first)
|
||||
if(sd->sc_data[SC_BARRIER].timer!=-1)
|
||||
sd->mdef = 100;
|
||||
|
||||
if(sd->sc_data[SC_JOINTBEAT].timer!=-1) { // Random break [DracoRPG]
|
||||
switch(sd->sc_data[SC_JOINTBEAT].val2) {
|
||||
case 1: //Ankle break
|
||||
sd->speed_rate += 50;
|
||||
break;
|
||||
case 2: //Wrist break
|
||||
sd->aspd_rate += 25;
|
||||
break;
|
||||
case 3: //Knee break
|
||||
sd->speed_rate += 30;
|
||||
sd->aspd_rate += 10;
|
||||
break;
|
||||
case 4: //Shoulder break
|
||||
sd->def2 -= sd->def2*50/100;
|
||||
break;
|
||||
case 5: //Waist break
|
||||
sd->def2 -= sd->def2*50/100;
|
||||
sd->base_atk -= sd->base_atk*25/100;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(sd->sc_data[SC_GOSPEL].timer!=-1) {
|
||||
if (sd->sc_data[SC_GOSPEL].val4 == BCT_PARTY){
|
||||
switch (sd->sc_data[SC_GOSPEL].val3)
|
||||
@ -2023,6 +2045,12 @@ int status_get_def(struct block_list *bl)
|
||||
sc_data[SC_GOSPEL].val3 == 5)
|
||||
def = 0;
|
||||
}
|
||||
if(sc_data[SC_JOINTBEAT].timer!=-1) {
|
||||
if (sc_data[SC_JOINTBEAT].val2 == 4)
|
||||
def -= def*50/100;
|
||||
else if (sc_data[SC_JOINTBEAT].val2 == 5)
|
||||
def -= def*25/100;
|
||||
}
|
||||
}
|
||||
}
|
||||
//詠唱中は詠唱時減算率に基づいて減算
|
||||
@ -2194,6 +2222,12 @@ int status_get_speed(struct block_list *bl)
|
||||
sc_data[SC_GOSPEL].val4 == BCT_ENEMY &&
|
||||
sc_data[SC_GOSPEL].val3 == 8)
|
||||
speed = speed*125/100;
|
||||
if(sc_data[SC_JOINTBEAT].timer!=-1) {
|
||||
if (sc_data[SC_JOINTBEAT].val2 == 1)
|
||||
speed = speed*150/100;
|
||||
else if (sc_data[SC_JOINTBEAT].val2 == 3)
|
||||
speed = speed*130/100;
|
||||
}
|
||||
}
|
||||
if(speed < 1) speed = 1;
|
||||
return speed;
|
||||
@ -2258,6 +2292,12 @@ int status_get_adelay(struct block_list *bl)
|
||||
sc_data[SC_GOSPEL].val4 == BCT_ENEMY &&
|
||||
sc_data[SC_GOSPEL].val3 == 8)
|
||||
aspd_rate = aspd_rate*125/100;
|
||||
if(sc_data[SC_JOINTBEAT].timer!=-1) {
|
||||
if (sc_data[SC_JOINTBEAT].val2 == 2)
|
||||
aspd_rate = aspd_rate*125/100;
|
||||
else if (sc_data[SC_JOINTBEAT].val2 == 3)
|
||||
aspd_rate = aspd_rate*110/100;
|
||||
}
|
||||
}
|
||||
if(aspd_rate != 100)
|
||||
adelay = adelay*aspd_rate/100;
|
||||
@ -3295,7 +3335,7 @@ int status_change_start(struct block_list *bl,int type,int val1,int val2,int val
|
||||
case SC_PARRYING: /* パリイング */
|
||||
// case SC_ASSUMPTIO: /* */
|
||||
case SC_HEADCRUSH: /* ヘッドクラッシュ */
|
||||
case SC_JOINTBEAT: /* ƒWƒ‡ƒCƒ“ƒgƒr?ƒg */
|
||||
// case SC_JOINTBEAT: /* ƒWƒ‡ƒCƒ“ƒgƒr?ƒg */
|
||||
// case SC_MARIONETTE: /* マリオネットコントロ?ル */
|
||||
|
||||
//とりあえず手?き
|
||||
@ -3330,6 +3370,12 @@ int status_change_start(struct block_list *bl,int type,int val1,int val2,int val
|
||||
calc_flag = 1;
|
||||
val2 = (val1 / 2); //Flee上昇率
|
||||
break;
|
||||
|
||||
case SC_JOINTBEAT: // Random break [DracoRPG]
|
||||
calc_flag = 1;
|
||||
val2 = rand()%6 + 1;
|
||||
if (val2 == 6) status_change_start(bl,SC_BLEEDING,val1,0,0,0,skill_get_time2(type,val1),0);
|
||||
break;
|
||||
|
||||
case SC_BERSERK: /* バ?サ?ク */
|
||||
if(sd){
|
||||
@ -4549,15 +4595,14 @@ int status_change_timer_sub(struct block_list *bl, va_list ap )
|
||||
break;
|
||||
case SC_RUWACH: /* ルアフ */
|
||||
if( (*status_get_option(bl))&6 ){
|
||||
if(battle_check_target( src,bl, BCT_ENEMY ) > 0) {
|
||||
struct status_change *sc_data = status_get_sc_data(bl); // check whether the target is hiding/cloaking [celest]
|
||||
if (sc_data && (sc_data[SC_HIDING].timer != -1 || // if the target is using a special hiding, i.e not using normal hiding/cloaking, don't bother
|
||||
sc_data[SC_CLOAKING].timer != -1)) {
|
||||
status_change_end( bl, SC_HIDING, -1);
|
||||
status_change_end( bl, SC_CLOAKING, -1);
|
||||
skill_attack(BF_MAGIC,src,src,bl,AL_RUWACH,sc_data[type].val1,tick,0);
|
||||
}
|
||||
struct status_change *sc_data = status_get_sc_data(bl); // check whether the target is hiding/cloaking [celest]
|
||||
if (sc_data && (sc_data[SC_HIDING].timer != -1 || // if the target is using a special hiding, i.e not using normal hiding/cloaking, don't bother
|
||||
sc_data[SC_CLOAKING].timer != -1)) {
|
||||
status_change_end( bl, SC_HIDING, -1);
|
||||
status_change_end( bl, SC_CLOAKING, -1);
|
||||
}
|
||||
if(battle_check_target( src,bl, BCT_ENEMY ) > 0)
|
||||
skill_attack(BF_MAGIC,src,src,bl,AL_RUWACH,sc_data[type].val1,tick,0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user