Merge branch 'master' of https://github.com/rathena/rathena
This commit is contained in:
commit
060f33408d
@ -157,7 +157,7 @@
|
|||||||
2485,0xe7, , 0, 2,2000,enemy, 0x8098 //GN_DEMONIC_FIRE
|
2485,0xe7, , 0, 2,2000,enemy, 0x8098 //GN_DEMONIC_FIRE
|
||||||
2487,0xe8, , 2, 0, -1,enemy, 0x2000 //GN_FIRE_EXPANSION_SMOKE_POWDER
|
2487,0xe8, , 2, 0, -1,enemy, 0x2000 //GN_FIRE_EXPANSION_SMOKE_POWDER
|
||||||
2488,0xe9, , 2, 0, -1,enemy, 0x2000 //GN_FIRE_EXPANSION_TEAR_GAS
|
2488,0xe9, , 2, 0, -1,enemy, 0x2000 //GN_FIRE_EXPANSION_TEAR_GAS
|
||||||
2490,0xea, , 0, 1,1000,enemy, 0x8002 //GN_HELLS_PLANT
|
2490,0xea, , 0, 1,1000,enemy, 0xC002 //GN_HELLS_PLANT
|
||||||
|
|
||||||
2555,0x104, , 0, 1:2:2:3:3,500,enemy,0x6 //RL_B_TRAP
|
2555,0x104, , 0, 1:2:2:3:3,500,enemy,0x6 //RL_B_TRAP
|
||||||
2567,0x105, , -1, 0,1000,enemy, 0x98 //RL_FIRE_RAIN
|
2567,0x105, , -1, 0,1000,enemy, 0x98 //RL_FIRE_RAIN
|
||||||
|
@ -159,7 +159,7 @@
|
|||||||
2485,0xe7, , 0, 2,2000,enemy, 0x8098 //GN_DEMONIC_FIRE
|
2485,0xe7, , 0, 2,2000,enemy, 0x8098 //GN_DEMONIC_FIRE
|
||||||
2487,0xe8, , 2, 0, -1,enemy, 0x2000 //GN_FIRE_EXPANSION_SMOKE_POWDER
|
2487,0xe8, , 2, 0, -1,enemy, 0x2000 //GN_FIRE_EXPANSION_SMOKE_POWDER
|
||||||
2488,0xe9, , 2, 0, -1,enemy, 0x2000 //GN_FIRE_EXPANSION_TEAR_GAS
|
2488,0xe9, , 2, 0, -1,enemy, 0x2000 //GN_FIRE_EXPANSION_TEAR_GAS
|
||||||
2490,0xea, , 0, 1,1000,enemy, 0x8002 //GN_HELLS_PLANT
|
2490,0xea, , 0, 1,1000,enemy, 0xC002 //GN_HELLS_PLANT
|
||||||
|
|
||||||
2555,0x104, , 0, 1:2:2:3:3,500,enemy,0x6 //RL_B_TRAP
|
2555,0x104, , 0, 1:2:2:3:3,500,enemy,0x6 //RL_B_TRAP
|
||||||
2567,0x105, , -1, 0,1000,enemy, 0x98 //RL_FIRE_RAIN
|
2567,0x105, , -1, 0,1000,enemy, 0x98 //RL_FIRE_RAIN
|
||||||
|
@ -4323,12 +4323,8 @@ struct Damage battle_attack_sc_bonus(struct Damage wd, struct block_list *src, s
|
|||||||
ATK_ADD(wd.equipAtk, wd.equipAtk2, sc->data[SC_IMPOSITIO]->val2);
|
ATK_ADD(wd.equipAtk, wd.equipAtk2, sc->data[SC_IMPOSITIO]->val2);
|
||||||
if (sc->data[SC_VOLCANO])
|
if (sc->data[SC_VOLCANO])
|
||||||
ATK_ADD(wd.equipAtk, wd.equipAtk2, sc->data[SC_VOLCANO]->val2);
|
ATK_ADD(wd.equipAtk, wd.equipAtk2, sc->data[SC_VOLCANO]->val2);
|
||||||
if (sc->data[SC_DRUMBATTLE]) {
|
if (sc->data[SC_DRUMBATTLE])
|
||||||
if (tstatus->size == SZ_SMALL) {
|
|
||||||
ATK_ADD(wd.equipAtk, wd.equipAtk2, sc->data[SC_DRUMBATTLE]->val2);
|
ATK_ADD(wd.equipAtk, wd.equipAtk2, sc->data[SC_DRUMBATTLE]->val2);
|
||||||
} else if (tstatus->size == SZ_MEDIUM)
|
|
||||||
ATK_ADD(wd.equipAtk, wd.equipAtk2, 10 * sc->data[SC_DRUMBATTLE]->val1);
|
|
||||||
}
|
|
||||||
if (sc->data[SC_MADNESSCANCEL])
|
if (sc->data[SC_MADNESSCANCEL])
|
||||||
ATK_ADD(wd.equipAtk, wd.equipAtk2, 100);
|
ATK_ADD(wd.equipAtk, wd.equipAtk2, 100);
|
||||||
if (sc->data[SC_GATLINGFEVER]) {
|
if (sc->data[SC_GATLINGFEVER]) {
|
||||||
|
@ -10076,10 +10076,11 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
|||||||
case GN_MANDRAGORA:
|
case GN_MANDRAGORA:
|
||||||
if( flag&1 ) {
|
if( flag&1 ) {
|
||||||
int rate = 25 + (10 * skill_lv) - (tstatus->vit + tstatus->luk) / 5;
|
int rate = 25 + (10 * skill_lv) - (tstatus->vit + tstatus->luk) / 5;
|
||||||
|
|
||||||
if (rate < 10)
|
if (rate < 10)
|
||||||
rate = 10;
|
rate = 10;
|
||||||
if (bl->type == BL_MOB)
|
if (bl->type == BL_MOB || (tsc && tsc->data[type]))
|
||||||
break;
|
break; // Don't activate if target is a monster or zap SP if target already has Mandragora active.
|
||||||
if (rnd()%100 < rate) {
|
if (rnd()%100 < rate) {
|
||||||
sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv));
|
sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv));
|
||||||
status_zap(bl,0,status_get_max_sp(bl) * (25 + 5 * skill_lv) / 100);
|
status_zap(bl,0,status_get_max_sp(bl) * (25 + 5 * skill_lv) / 100);
|
||||||
@ -10742,8 +10743,9 @@ static int8 skill_castend_id_check(struct block_list *src, struct block_list *ta
|
|||||||
if (inf && battle_check_target(src, target, inf) <= 0)
|
if (inf && battle_check_target(src, target, inf) <= 0)
|
||||||
return USESKILL_FAIL_LEVEL;
|
return USESKILL_FAIL_LEVEL;
|
||||||
|
|
||||||
//Fogwall makes all offensive-type targetted skills fail at 75%
|
// Fogwall makes all offensive-type targetted skills fail at 75%
|
||||||
if (inf&BCT_ENEMY && tsc && tsc->data[SC_FOGWALL] && rnd() % 100 < 75)
|
// Jump Kick can still fail even though you can jump to friendly targets.
|
||||||
|
if ((inf&BCT_ENEMY || skill_id == TK_JUMPKICK) && tsc && tsc->data[SC_FOGWALL] && rnd() % 100 < 75)
|
||||||
return USESKILL_FAIL_LEVEL;
|
return USESKILL_FAIL_LEVEL;
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
@ -16932,7 +16934,7 @@ static int skill_cell_overlap(struct block_list *bl, va_list ap)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
//It deletes everything except traps and barriers
|
//It deletes everything except traps and barriers
|
||||||
if( (!(skill_get_inf2(unit->group->skill_id)&(INF2_TRAP)) && !(skill_get_inf3(unit->group->skill_id)&(INF3_NOLP)) ) || unit->group->skill_id == WZ_FIREPILLAR ) {
|
if ((!(skill_get_inf2(unit->group->skill_id)&(INF2_TRAP)) && !(skill_get_inf3(unit->group->skill_id)&(INF3_NOLP))) || unit->group->skill_id == WZ_FIREPILLAR || unit->group->skill_id == GN_HELLS_PLANT) {
|
||||||
skill_delunit(unit);
|
skill_delunit(unit);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -1933,7 +1933,7 @@ bool status_check_skilluse(struct block_list *src, struct block_list *target, ui
|
|||||||
if (sc->data[SC_ALL_RIDING])
|
if (sc->data[SC_ALL_RIDING])
|
||||||
return false; //You can't use skills while in the new mounts (The client doesn't let you, this is to make cheat-safe)
|
return false; //You can't use skills while in the new mounts (The client doesn't let you, this is to make cheat-safe)
|
||||||
|
|
||||||
if ((sc->data[SC_ASH] && rnd()%2)) {
|
if (sc->data[SC_ASH] && rnd()%2 && !(status->mode&MD_BOSS)) {
|
||||||
if (src->type == BL_PC)
|
if (src->type == BL_PC)
|
||||||
clif_skill_fail((TBL_PC*)src,skill_id,USESKILL_FAIL_LEVEL,0);
|
clif_skill_fail((TBL_PC*)src,skill_id,USESKILL_FAIL_LEVEL,0);
|
||||||
return false;
|
return false;
|
||||||
@ -8573,6 +8573,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
|||||||
case SC_DEEPSLEEP:
|
case SC_DEEPSLEEP:
|
||||||
case SC_NETHERWORLD:
|
case SC_NETHERWORLD:
|
||||||
case SC_CRYSTALIZE:
|
case SC_CRYSTALIZE:
|
||||||
|
case SC_MANDRAGORA:
|
||||||
case SC_DEFSET:
|
case SC_DEFSET:
|
||||||
case SC_MDEFSET:
|
case SC_MDEFSET:
|
||||||
case SC_NORECOVER_STATE:
|
case SC_NORECOVER_STATE:
|
||||||
@ -10146,13 +10147,16 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
|||||||
sc_start2(src, bl,SC_STUN,100,val1,bl->id,(1000*status_get_lv(src))/50+500*val1);
|
sc_start2(src, bl,SC_STUN,100,val1,bl->id,(1000*status_get_lv(src))/50+500*val1);
|
||||||
break;
|
break;
|
||||||
case SC_ASH:
|
case SC_ASH:
|
||||||
val2 = 50; // hit % reduc
|
val2 = 0; // hit % reduc
|
||||||
val3 = 0; // def % reduc
|
val3 = 0; // def % reduc
|
||||||
val4 = 0; // atk flee & reduc
|
val4 = 0; // atk flee & reduc
|
||||||
if(status_get_race(bl) == RC_PLANT) // plant type
|
if (!(status_get_mode(bl)&MD_BOSS)) {
|
||||||
|
val2 = 50;
|
||||||
|
if (status_get_race(bl) == RC_PLANT) // plant type
|
||||||
val3 = 50;
|
val3 = 50;
|
||||||
if(status_get_element(bl) == ELE_WATER) // defense water type
|
if (status_get_element(bl) == ELE_WATER) // defense water type
|
||||||
val4 = 50;
|
val4 = 50;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case SC_FULL_THROTTLE:
|
case SC_FULL_THROTTLE:
|
||||||
val2 = ( val1 == 1 ? 6 : 6 - val1 );
|
val2 = ( val1 == 1 ? 6 : 6 - val1 );
|
||||||
|
Loading…
x
Reference in New Issue
Block a user