diff options
Diffstat (limited to 'src/map')
-rw-r--r-- | src/map/battle.c | 15 | ||||
-rw-r--r-- | src/map/pc.c | 3 | ||||
-rw-r--r-- | src/map/skill.c | 5 | ||||
-rw-r--r-- | src/map/status.c | 3 |
4 files changed, 17 insertions, 9 deletions
diff --git a/src/map/battle.c b/src/map/battle.c index c8e822a63..fc88611dd 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -2189,12 +2189,6 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list break; default: { - if (skill_num == NPC_EARTHQUAKE) { - if (sstatus->rhw.atk2 > sstatus->rhw.atk) - MATK_ADD(sstatus->rhw.atk + rand()%(1+sstatus->rhw.atk2-sstatus->rhw.atk)) - else - MATK_ADD(sstatus->rhw.atk); - } else if (sstatus->matk_max > sstatus->matk_min) { MATK_ADD(sstatus->matk_min+rand()%(1+sstatus->matk_max-sstatus->matk_min)); } else { @@ -2287,7 +2281,7 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list skillratio += 100*skill_lv; break; case NPC_EARTHQUAKE: - skillratio += 400 + 500*skill_lv; + skillratio += 100 +100*skill_lv +100*(skill_lv/2); break; } @@ -2326,8 +2320,6 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list //mdef2-= mdef2* i/100; } } - if (skill_num == NPC_EARTHQUAKE) - mdef>>=1; //Halves MDEF (stupid overpowered skill) if(battle_config.magic_defense_type) ad.damage = ad.damage - mdef*battle_config.magic_defense_type - mdef2; else @@ -2346,6 +2338,11 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list ad.damage = 0; } } + + if (skill_num == NPC_EARTHQUAKE) + { //Adds atk2 to the damage, should be influenced by number of hits and skill-ratio, but not mdef reductions. [Skotlex] + ad.damage+= sstatus->rhw.atk2*skillratio/100; + } if(ad.damage<1) ad.damage=1; diff --git a/src/map/pc.c b/src/map/pc.c index 2a9299658..7a863ad1b 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -6593,7 +6593,10 @@ int pc_checkitem(struct map_session_data *sd) | (map[sd->bl.m].flag.pvp?1:0) | (map_flag_gvg(sd->bl.m)?2:0); if (flag && !pc_isAllowedCardOn(sd,it->slot,i,flag)) + { + sd->status.inventory[i].equip=0; calc_flag = 1; + } } } } diff --git a/src/map/skill.c b/src/map/skill.c index 3855891a9..11acaa106 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -528,6 +528,11 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int if (!tsc->data[skill]) sc_start(bl,skill,100,skilllv,skill_get_time2(skillid, skilllv)); break; + + case WZ_FIREPILLAR: + unit_set_walkdelay(bl, tick, skill_get_time2(skillid, skilllv), 1); + break; + case MG_FROSTDIVER: case WZ_FROSTNOVA: sc_start(bl,SC_FREEZE,skilllv*3+35,skilllv,skill_get_time2(skillid,skilllv)); diff --git a/src/map/status.c b/src/map/status.c index eae8805e4..11198f28f 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -6594,7 +6594,10 @@ int status_change_end(struct block_list* bl, enum sc_type type, int tid) break; case SC_INCATKRATE: //Simulated Explosion spirits effect. if (bl->type != BL_MOB) + { + opt_flag = 0; break; + } case SC_EXPLOSIONSPIRITS: sc->opt3 &= ~0x8; opt_flag = 0; |