summaryrefslogtreecommitdiff
path: root/src/map
diff options
context:
space:
mode:
Diffstat (limited to 'src/map')
-rw-r--r--src/map/battle.c16
-rw-r--r--src/map/pc.c10
-rw-r--r--src/map/skill.c28
3 files changed, 39 insertions, 15 deletions
diff --git a/src/map/battle.c b/src/map/battle.c
index 7aabcc39a..0c1fe65d2 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -257,8 +257,9 @@ int battle_get_agi(struct block_list *bl)
if(sc_data[SC_QUAGMIRE].timer!=-1 ) { // クァグマイア
//agi >>= 1;
- int agib = agi*(sc_data[SC_QUAGMIRE].val1*10)/100;
- agi -= agib > 50 ? 50 : agib;
+ //int agib = agi*(sc_data[SC_QUAGMIRE].val1*10)/100;
+ //agi -= agib > 50 ? 50 : agib;
+ agi -= (bl->type == BL_PC) ? sc_data[SC_QUAGMIRE].val1*5 : sc_data[SC_QUAGMIRE].val1*10;
}
if(sc_data[SC_TRUESIGHT].timer!=-1 && bl->type != BL_PC) // トゥルーサイト
agi += 5;
@@ -367,8 +368,9 @@ int battle_get_dex(struct block_list *bl)
if(sc_data[SC_QUAGMIRE].timer!=-1 ) { // クァグマイア
// dex >>= 1;
- int dexb = dex*(sc_data[SC_QUAGMIRE].val1*10)/100;
- dex -= dexb > 50 ? 50 : dexb;
+ //int dexb = dex*(sc_data[SC_QUAGMIRE].val1*10)/100;
+ //dex -= dexb > 50 ? 50 : dexb;
+ dex -= (bl->type == BL_PC) ? sc_data[SC_QUAGMIRE].val1*5 : sc_data[SC_QUAGMIRE].val1*10;
}
if(sc_data[SC_TRUESIGHT].timer!=-1 && bl->type != BL_PC) // トゥルーサイト
dex += 5;
@@ -556,9 +558,7 @@ int battle_get_baseatk(struct block_list *bl)
if(sc_data[SC_CURSE].timer!=-1 ) //呪われていたら
batk -= batk*25/100; //base_atkが25%減少
if(sc_data[SC_CONCENTRATION].timer!=-1 && bl->type != BL_PC) //コンセントレーション
- batk += batk*(5*sc_data[SC_CONCENTRATION].val1)/100;
- if(sc_data[SC_EDP].timer != -1) // [Celest]
- batk += batk*(50+50*sc_data[SC_EDP].val1)/100;
+ batk += batk*(5*sc_data[SC_CONCENTRATION].val1)/100;
}
if(batk < 1) batk = 1; //base_atkは最低でも1
return batk;
@@ -3553,7 +3553,7 @@ static struct Damage battle_calc_pc_weapon_attack(
// 状態異常中のダメージ追加でクリティカルにも有効なスキル
if (sc_data) {
// エンチャントデッドリーポイズン
- if(sc_data[SC_EDP].timer != -1) {
+ if(sc_data[SC_EDP].timer != -1 && skill_num != ASC_BREAKER && skill_num != ASC_METEORASSAULT) {
damage += damage * (150 + sc_data[SC_EDP].val1 * 50) / 100;
damage2 += damage2 * (150 + sc_data[SC_EDP].val1 * 50) / 100;
no_cardfix = 1;
diff --git a/src/map/pc.c b/src/map/pc.c
index 72fa48646..c9083ce03 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -1517,10 +1517,12 @@ int pc_calcstatus(struct map_session_data* sd,int first)
if(sd->sc_data[SC_LOUD].timer!=-1 && sd->sc_data[SC_QUAGMIRE].timer == -1) // ラウドボイス
sd->paramb[0]+= 4;
if(sd->sc_data[SC_QUAGMIRE].timer!=-1){ // クァグマイア
- int agib = (sd->status.agi+sd->paramb[1]+sd->parame[1])*(sd->sc_data[SC_QUAGMIRE].val1*10)/100;
- int dexb = (sd->status.dex+sd->paramb[4]+sd->parame[4])*(sd->sc_data[SC_QUAGMIRE].val1*10)/100;
- sd->paramb[1]-= agib > 50 ? 50 : agib;
- sd->paramb[4]-= dexb > 50 ? 50 : dexb;
+ //int agib = (sd->status.agi+sd->paramb[1]+sd->parame[1])*(sd->sc_data[SC_QUAGMIRE].val1*10)/100;
+ //int dexb = (sd->status.dex+sd->paramb[4]+sd->parame[4])*(sd->sc_data[SC_QUAGMIRE].val1*10)/100;
+ //sd->paramb[1]-= agib > 50 ? 50 : agib;
+ //sd->paramb[4]-= dexb > 50 ? 50 : dexb;
+ sd->paramb[1]-= sd->sc_data[SC_QUAGMIRE].val1*5;
+ sd->paramb[4]-= sd->sc_data[SC_QUAGMIRE].val1*5;
sd->speed = sd->speed*3/2;
}
if(sd->sc_data[SC_TRUESIGHT].timer!=-1){ // トゥル?サイト
diff --git a/src/map/skill.c b/src/map/skill.c
index 30b17f3e3..6cc9e7a8a 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -1270,7 +1270,7 @@ int skill_additional_effect( struct block_list* src, struct block_list *bl,int s
skill_status_change_start(bl,SC_AUTOCOUNTER,skilllv,0,0,0,skill_get_time2(skillid,skilllv),0);
break;
case PF_FOGWALL: /* ホ?リ?クロス */
- if( rand()%100 < 3*skilllv*sc_def_int/100 )
+ if(src!=bl && rand()%100 < 3*skilllv*sc_def_int/100 )
skill_status_change_start(bl,SC_BLIND,skilllv,0,0,0,skill_get_time2(skillid,skilllv),0);
break;
case LK_HEADCRUSH: /* ヘッドクラッシュ */
@@ -5965,7 +5965,7 @@ int skill_unit_onplace(struct skill_unit *src,struct block_list *bl,unsigned int
case 0xae: /* 幸運のキス */
case 0xaf: /* サ?ビスフォ?ユ? */
case 0xb4:
- case 0xb6: /* フォグウォ?ル */
+// case 0xb6: /* フォグウォ?ル */
{
struct skill_unit *unit2;
struct status_change *sc_data=battle_get_sc_data(bl);
@@ -6005,6 +6005,28 @@ int skill_unit_onplace(struct skill_unit *src,struct block_list *bl,unsigned int
}
} break;
+ case 0xb6: /* フォグウォ?ル */
+ {
+ struct skill_unit *unit2;
+ struct status_change *sc_data=battle_get_sc_data(bl);
+ int type=SkillStatusChangeTable[sg->skill_id];
+ if(sc_data) {
+ if (sc_data[type].timer==-1) {
+ skill_status_change_start(bl,type,sg->skill_lv,sg->val1,sg->val2,
+ (int)src,skill_get_time2(sg->skill_id,sg->skill_lv),0);
+ skill_additional_effect(ss,bl,sg->skill_id,sg->skill_lv,BF_MISC,tick);
+ }
+ else if( (unit2=(struct skill_unit *)sc_data[type].val4) && unit2 != src ){
+ if( unit2->group && DIFF_TICK(sg->tick,unit2->group->tick)>0 ) {
+ skill_status_change_start(bl,type,sg->skill_lv,sg->val1,sg->val2,
+ (int)src,skill_get_time2(sg->skill_id,sg->skill_lv),0);
+ skill_additional_effect(ss,bl,sg->skill_id,sg->skill_lv,BF_MISC,tick);
+ }
+// ts->tick-=sg->interval;
+ }
+ }
+ } break;
+
case 0xb1: /* デモンストレ?ション */
skill_attack(BF_WEAPON,ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0);
if(bl->type == BL_PC && rand()%100 < sg->skill_lv && battle_config.equipment_breaking)
@@ -6168,7 +6190,7 @@ int skill_unit_onout(struct skill_unit *src,struct block_list *bl,unsigned int t
sc_data[SC_BLIND].timer = add_timer(
gettick() + 30000, skill_status_change_timer, bl->id, 0);
}
- sg->limit=DIFF_TICK(tick,sg->tick)+1000;
+ //sg->limit=DIFF_TICK(tick,sg->tick)+1000;
}
break;
case 0x9a: /* ボルケ?ノ */