From 2e87e5b65a02d8d9f867a0510f039cc319b3ffcb Mon Sep 17 00:00:00 2001 From: Jared Adams Date: Mon, 6 Jul 2009 11:23:10 -0600 Subject: Add a new trade spam system --- src/map/battle.c | 1304 ++++++++++++++++++++++++++++-------------------------- src/map/battle.h | 31 +- src/map/clif.c | 2 +- src/map/map.h | 35 +- src/map/pc.c | 2 + src/map/tmw.c | 33 ++ src/map/tmw.h | 1 + 7 files changed, 740 insertions(+), 668 deletions(-) diff --git a/src/map/battle.c b/src/map/battle.c index 45524e5..343b91b 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -27,8 +27,8 @@ int attr_fix_table[4][10][10]; struct Battle_Config battle_config; /*========================================== - * 二点間の距離を返す - * 戻りは整数で0以上 + * ソスソスソス_ソスヤの具ソスソスソスソスソスソスヤゑソス + * ソス゚ゑソスソスヘ撰ソスソスソスソスソス0ソスネ擾ソス *------------------------------------------ */ static int distance(int x0,int y0,int x1,int y1) @@ -41,8 +41,8 @@ static int distance(int x0,int y0,int x1,int y1) } /*========================================== - * 自分をロックしている対象の数を返す(汎用) - * 戻りは整数で0以上 + * ソスソスソスソスソスソスbソスNソスソスソストゑソスソスソスソスホ象の撰ソスソスソスソスヤゑソス(ソスト用) + * ソス゚ゑソスソスヘ撰ソスソスソスソスソス0ソスネ擾ソス *------------------------------------------ */ int battle_counttargeted(struct block_list *bl,struct block_list *src,int target_lv) @@ -55,8 +55,8 @@ int battle_counttargeted(struct block_list *bl,struct block_list *src,int target return 0; } /*========================================== - * 対象のClassを返す(汎用) - * 戻りは整数で0以上 + * ソスホ象ゑソスClassソスソスソスヤゑソス(ソスト用) + * ソス゚ゑソスソスヘ撰ソスソスソスソスソス0ソスネ擾ソス *------------------------------------------ */ int battle_get_class(struct block_list *bl) @@ -70,8 +70,8 @@ int battle_get_class(struct block_list *bl) return 0; } /*========================================== - * 対象の方向を返す(汎用) - * 戻りは整数で0以上 + * ソスホ象の包ソスソスソスソスソスソスヤゑソス(ソスト用) + * ソス゚ゑソスソスヘ撰ソスソスソスソスソス0ソスネ擾ソス *------------------------------------------ */ int battle_get_dir(struct block_list *bl) @@ -85,8 +85,8 @@ int battle_get_dir(struct block_list *bl) return 0; } /*========================================== - * 対象のレベルを返す(汎用) - * 戻りは整数で0以上 + * ソスホ象のソスソスxソスソスソスソスソスヤゑソス(ソスト用) + * ソス゚ゑソスソスヘ撰ソスソスソスソスソス0ソスネ擾ソス *------------------------------------------ */ int battle_get_lv(struct block_list *bl) @@ -100,8 +100,8 @@ int battle_get_lv(struct block_list *bl) return 0; } /*========================================== - * 対象の射程を返す(汎用) - * 戻りは整数で0以上 + * ソスホ象の射抵ソスソスソスソスヤゑソス(ソスト用) + * ソス゚ゑソスソスヘ撰ソスソスソスソスソス0ソスネ擾ソス *------------------------------------------ */ int battle_get_range(struct block_list *bl) @@ -115,8 +115,8 @@ int battle_get_range(struct block_list *bl) return 0; } /*========================================== - * 対象のHPを返す(汎用) - * 戻りは整数で0以上 + * ソスホ象ゑソスHPソスソスソスヤゑソス(ソスト用) + * ソス゚ゑソスソスヘ撰ソスソスソスソスソス0ソスネ擾ソス *------------------------------------------ */ int battle_get_hp(struct block_list *bl) @@ -130,8 +130,8 @@ int battle_get_hp(struct block_list *bl) return 1; } /*========================================== - * 対象のMHPを返す(汎用) - * 戻りは整数で0以上 + * ソスホ象ゑソスMHPソスソスソスヤゑソス(ソスト用) + * ソス゚ゑソスソスヘ撰ソスソスソスソスソス0ソスネ擾ソス *------------------------------------------ */ int battle_get_max_hp(struct block_list *bl) @@ -164,8 +164,8 @@ int battle_get_max_hp(struct block_list *bl) return 1; } /*========================================== - * 対象のStrを返す(汎用) - * 戻りは整数で0以上 + * ソスホ象ゑソスStrソスソスソスヤゑソス(ソスト用) + * ソス゚ゑソスソスヘ撰ソスソスソスソスソス0ソスネ擾ソス *------------------------------------------ */ int battle_get_str(struct block_list *bl) @@ -183,20 +183,20 @@ int battle_get_str(struct block_list *bl) if(sc_data) { if(sc_data[SC_LOUD].timer!=-1 && sc_data[SC_QUAGMIRE].timer == -1 && bl->type != BL_PC) str += 4; - if( sc_data[SC_BLESSING].timer != -1 && bl->type != BL_PC){ // ブレッシング + if( sc_data[SC_BLESSING].timer != -1 && bl->type != BL_PC){ // ソスuソスソスソスbソスVソスソスソスO int race=battle_get_race(bl); - if(battle_check_undead(race,battle_get_elem_type(bl)) || race==6 ) str >>= 1; // 悪 魔/不死 - else str += sc_data[SC_BLESSING].val1; // その他 + if(battle_check_undead(race,battle_get_elem_type(bl)) || race==6 ) str >>= 1; // ソスソス ソスソス/ソスsソスソス + else str += sc_data[SC_BLESSING].val1; // ソスソスソスフ托ソス } - if(sc_data[SC_TRUESIGHT].timer!=-1 && bl->type != BL_PC) // トゥルーサイト + if(sc_data[SC_TRUESIGHT].timer!=-1 && bl->type != BL_PC) // ソスgソスDソスソスソス[ソスTソスCソスg str += 5; } if(str < 0) str = 0; return str; } /*========================================== - * 対象のAgiを返す(汎用) - * 戻りは整数で0以上 + * ソスホ象ゑソスAgiソスソスソスヤゑソス(ソスト用) + * ソス゚ゑソスソスヘ撰ソスソスソスソスソス0ソスネ擾ソス *------------------------------------------ */ @@ -214,26 +214,26 @@ int battle_get_agi(struct block_list *bl) if(sc_data) { if( sc_data[SC_INCREASEAGI].timer!=-1 && sc_data[SC_QUAGMIRE].timer == -1 && sc_data[SC_DONTFORGETME].timer == -1 && - bl->type != BL_PC) // 速度増加(PCはpc.cで) + bl->type != BL_PC) // ソスソスソスxソスソスソスソス(PCソスソスpc.cソスソス) agi += 2+sc_data[SC_INCREASEAGI].val1; if(sc_data[SC_CONCENTRATE].timer!=-1 && sc_data[SC_QUAGMIRE].timer == -1 && bl->type != BL_PC) agi += agi*(2+sc_data[SC_CONCENTRATE].val1)/100; - if(sc_data[SC_DECREASEAGI].timer!=-1) // 速度減少 + if(sc_data[SC_DECREASEAGI].timer!=-1) // ソスソスソスxソスソスソスソス agi -= 2+sc_data[SC_DECREASEAGI].val1; - if(sc_data[SC_QUAGMIRE].timer!=-1 ) // クァグマイア + if(sc_data[SC_QUAGMIRE].timer!=-1 ) // ソスNソス@ソスOソス}ソスCソスA agi >>= 1; - if(sc_data[SC_TRUESIGHT].timer!=-1 && bl->type != BL_PC) // トゥルーサイト + if(sc_data[SC_TRUESIGHT].timer!=-1 && bl->type != BL_PC) // ソスgソスDソスソスソス[ソスTソスCソスg agi += 5; } if(agi < 0) agi = 0; return agi; } /*========================================== - * 対象のVitを返す(汎用) - * 戻りは整数で0以上 + * ソスホ象ゑソスVitソスソスソスヤゑソス(ソスト用) + * ソス゚ゑソスソスヘ撰ソスソスソスソスソス0ソスネ擾ソス *------------------------------------------ */ int battle_get_vit(struct block_list *bl) @@ -250,7 +250,7 @@ int battle_get_vit(struct block_list *bl) if(sc_data) { if(sc_data[SC_STRIPARMOR].timer != -1 && bl->type!=BL_PC) vit = vit*60/100; - if(sc_data[SC_TRUESIGHT].timer!=-1 && bl->type != BL_PC) // トゥルーサイト + if(sc_data[SC_TRUESIGHT].timer!=-1 && bl->type != BL_PC) // ソスgソスDソスソスソス[ソスTソスCソスg vit += 5; } @@ -258,8 +258,8 @@ int battle_get_vit(struct block_list *bl) return vit; } /*========================================== - * 対象のIntを返す(汎用) - * 戻りは整数で0以上 + * ソスホ象ゑソスIntソスソスソスヤゑソス(ソスト用) + * ソス゚ゑソスソスヘ撰ソスソスソスソスソス0ソスネ擾ソス *------------------------------------------ */ int battle_get_int(struct block_list *bl) @@ -275,22 +275,22 @@ int battle_get_int(struct block_list *bl) int_=((struct map_session_data *)bl)->paramc[3]; if(sc_data) { - if( sc_data[SC_BLESSING].timer != -1 && bl->type != BL_PC){ // ブレッシング + if( sc_data[SC_BLESSING].timer != -1 && bl->type != BL_PC){ // ソスuソスソスソスbソスVソスソスソスO int race=battle_get_race(bl); - if(battle_check_undead(race,battle_get_elem_type(bl)) || race==6 ) int_ >>= 1; // 悪 魔/不死 - else int_ += sc_data[SC_BLESSING].val1; // その他 + if(battle_check_undead(race,battle_get_elem_type(bl)) || race==6 ) int_ >>= 1; // ソスソス ソスソス/ソスsソスソス + else int_ += sc_data[SC_BLESSING].val1; // ソスソスソスフ托ソス } if( sc_data[SC_STRIPHELM].timer != -1 && bl->type != BL_PC) int_ = int_*60/100; - if(sc_data[SC_TRUESIGHT].timer!=-1 && bl->type != BL_PC) // トゥルーサイト + if(sc_data[SC_TRUESIGHT].timer!=-1 && bl->type != BL_PC) // ソスgソスDソスソスソス[ソスTソスCソスg int_ += 5; } if(int_ < 0) int_ = 0; return int_; } /*========================================== - * 対象のDexを返す(汎用) - * 戻りは整数で0以上 + * ソスホ象ゑソスDexソスソスソスヤゑソス(ソスト用) + * ソス゚ゑソスソスヘ撰ソスソスソスソスソス0ソスネ擾ソス *------------------------------------------ */ int battle_get_dex(struct block_list *bl) @@ -309,23 +309,23 @@ int battle_get_dex(struct block_list *bl) if(sc_data[SC_CONCENTRATE].timer!=-1 && sc_data[SC_QUAGMIRE].timer == -1 && bl->type != BL_PC) dex += dex*(2+sc_data[SC_CONCENTRATE].val1)/100; - if( sc_data[SC_BLESSING].timer != -1 && bl->type != BL_PC){ // ブレッシング + if( sc_data[SC_BLESSING].timer != -1 && bl->type != BL_PC){ // ソスuソスソスソスbソスVソスソスソスO int race=battle_get_race(bl); - if(battle_check_undead(race,battle_get_elem_type(bl)) || race==6 ) dex >>= 1; // 悪 魔/不死 - else dex += sc_data[SC_BLESSING].val1; // その他 + if(battle_check_undead(race,battle_get_elem_type(bl)) || race==6 ) dex >>= 1; // ソスソス ソスソス/ソスsソスソス + else dex += sc_data[SC_BLESSING].val1; // ソスソスソスフ托ソス } - if(sc_data[SC_QUAGMIRE].timer!=-1 ) // クァグマイア + if(sc_data[SC_QUAGMIRE].timer!=-1 ) // ソスNソス@ソスOソス}ソスCソスA dex >>= 1; - if(sc_data[SC_TRUESIGHT].timer!=-1 && bl->type != BL_PC) // トゥルーサイト + if(sc_data[SC_TRUESIGHT].timer!=-1 && bl->type != BL_PC) // ソスgソスDソスソスソス[ソスTソスCソスg dex += 5; } if(dex < 0) dex = 0; return dex; } /*========================================== - * 対象のLukを返す(汎用) - * 戻りは整数で0以上 + * ソスホ象ゑソスLukソスソスソスヤゑソス(ソスト用) + * ソス゚ゑソスソスヘ撰ソスソスソスソスソス0ソスネ擾ソス *------------------------------------------ */ int battle_get_luk(struct block_list *bl) @@ -341,11 +341,11 @@ int battle_get_luk(struct block_list *bl) luk=((struct map_session_data *)bl)->paramc[5]; if(sc_data) { - if(sc_data[SC_GLORIA].timer!=-1 && bl->type != BL_PC) // グロリア(PCはpc.cで) + if(sc_data[SC_GLORIA].timer!=-1 && bl->type != BL_PC) // ソスOソスソスソスソスソスA(PCソスソスpc.cソスソス) luk += 30; - if(sc_data[SC_CURSE].timer!=-1 ) // 呪い + if(sc_data[SC_CURSE].timer!=-1 ) // ソスソスソスソス luk=0; - if(sc_data[SC_TRUESIGHT].timer!=-1 && bl->type != BL_PC) // トゥルーサイト + if(sc_data[SC_TRUESIGHT].timer!=-1 && bl->type != BL_PC) // ソスgソスDソスソスソス[ソスTソスCソスg luk += 5; } if(luk < 0) luk = 0; @@ -353,8 +353,8 @@ int battle_get_luk(struct block_list *bl) } /*========================================== - * 対象のFleeを返す(汎用) - * 戻りは整数で1以上 + * ソスホ象ゑソスFleeソスソスソスヤゑソス(ソスト用) + * ソス゚ゑソスソスヘ撰ソスソスソスソスソス1ソスネ擾ソス *------------------------------------------ */ int battle_get_flee(struct block_list *bl) @@ -375,17 +375,17 @@ int battle_get_flee(struct block_list *bl) +(sc_data[SC_WHISTLE].val3>>16))/100; if(sc_data[SC_BLIND].timer!=-1 && bl->type != BL_PC) flee -= flee*25/100; - if(sc_data[SC_WINDWALK].timer!=-1 && bl->type != BL_PC) // ウィンドウォーク + if(sc_data[SC_WINDWALK].timer!=-1 && bl->type != BL_PC) // ソスEソスBソスソスソスhソスEソスHソス[ソスN flee += flee*(sc_data[SC_WINDWALK].val2)/100; - if(sc_data[SC_SPIDERWEB].timer!=-1 && bl->type != BL_PC) //スパイダーウェブ + if(sc_data[SC_SPIDERWEB].timer!=-1 && bl->type != BL_PC) //ソスXソスpソスCソス_ソス[ソスEソスFソスu flee -= flee*50/100; } if(flee < 1) flee = 1; return flee; } /*========================================== - * 対象のHitを返す(汎用) - * 戻りは整数で1以上 + * ソスホ象ゑソスHitソスソスソスヤゑソス(ソスト用) + * ソス゚ゑソスソスヘ撰ソスソスソスソスソス1ソスネ擾ソス *------------------------------------------ */ int battle_get_hit(struct block_list *bl) @@ -404,19 +404,19 @@ int battle_get_hit(struct block_list *bl) if(sc_data[SC_HUMMING].timer!=-1 && bl->type != BL_PC) // hit += hit*(sc_data[SC_HUMMING].val1*2+sc_data[SC_HUMMING].val2 +sc_data[SC_HUMMING].val3)/100; - if(sc_data[SC_BLIND].timer!=-1 && bl->type != BL_PC) // 呪い + if(sc_data[SC_BLIND].timer!=-1 && bl->type != BL_PC) // ソスソスソスソス hit -= hit*25/100; - if(sc_data[SC_TRUESIGHT].timer!=-1 && bl->type != BL_PC) // トゥルーサイト + if(sc_data[SC_TRUESIGHT].timer!=-1 && bl->type != BL_PC) // ソスgソスDソスソスソス[ソスTソスCソスg hit += 3*(sc_data[SC_TRUESIGHT].val1); - if(sc_data[SC_CONCENTRATION].timer!=-1 && bl->type != BL_PC) //コンセントレーション + if(sc_data[SC_CONCENTRATION].timer!=-1 && bl->type != BL_PC) //ソスRソスソスソスZソスソスソスgソスソスソス[ソスVソスソスソスソス hit += (hit*(10*(sc_data[SC_CONCENTRATION].val1)))/100; } if(hit < 1) hit = 1; return hit; } /*========================================== - * 対象の完全回避を返す(汎用) - * 戻りは整数で1以上 + * ソスホ象の奇ソスソスSソスソスソスソスソスソスソスヤゑソス(ソスト用) + * ソス゚ゑソスソスヘ撰ソスソスソスソスソス1ソスネ擾ソス *------------------------------------------ */ int battle_get_flee2(struct block_list *bl) @@ -442,8 +442,8 @@ int battle_get_flee2(struct block_list *bl) return flee2; } /*========================================== - * 対象のクリティカルを返す(汎用) - * 戻りは整数で1以上 + * ソスホ象のクソスソスソスeソスBソスJソスソスソスソスソスヤゑソス(ソスト用) + * ソス゚ゑソスソスヘ撰ソスソスソスソスソス1ソスネ擾ソス *------------------------------------------ */ int battle_get_critical(struct block_list *bl) @@ -466,15 +466,15 @@ int battle_get_critical(struct block_list *bl) +sc_data[SC_FORTUNE].val3)*10; if(sc_data[SC_EXPLOSIONSPIRITS].timer!=-1 && bl->type != BL_PC) critical += sc_data[SC_EXPLOSIONSPIRITS].val2; - if(sc_data[SC_TRUESIGHT].timer!=-1 && bl->type != BL_PC) //トゥルーサイト + if(sc_data[SC_TRUESIGHT].timer!=-1 && bl->type != BL_PC) //ソスgソスDソスソスソス[ソスTソスCソスg critical += critical*sc_data[SC_TRUESIGHT].val1/100; } if(critical < 1) critical = 1; return critical; } /*========================================== - * base_atkの取得 - * 戻りは整数で1以上 + * base_atkソスフ取得 + * ソス゚ゑソスソスヘ撰ソスソスソスソスソス1ソスネ擾ソス *------------------------------------------ */ int battle_get_baseatk(struct block_list *bl) @@ -485,27 +485,27 @@ int battle_get_baseatk(struct block_list *bl) nullpo_retr(1, bl); sc_data=battle_get_sc_data(bl); if(bl->type==BL_PC && (struct map_session_data *)bl) - batk = ((struct map_session_data *)bl)->base_atk; //設定されているbase_atk - else { //それ以外なら + batk = ((struct map_session_data *)bl)->base_atk; //ソスン定さソスソスソストゑソスソスソスbase_atk + else { //ソスソスソスソスソスネ外ソスネゑソス int str,dstr; str = battle_get_str(bl); //STR dstr = str/10; - batk = dstr*dstr + str; //base_atkを計算する - } - if(sc_data) { //状態異常あり - if(sc_data[SC_PROVOKE].timer!=-1 && bl->type != BL_PC) //PCでプロボック(SM_PROVOKE)状態 - batk = batk*(100+2*sc_data[SC_PROVOKE].val1)/100; //base_atk増加 - 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 = dstr*dstr + str; //base_atkソスソスソスvソスZソスソスソスソス + } + if(sc_data) { //ソスソスソスヤ異常あソスソス + if(sc_data[SC_PROVOKE].timer!=-1 && bl->type != BL_PC) //PCソスナプソスソスソス{ソスbソスN(SM_PROVOKE)ソスソスソスソス + batk = batk*(100+2*sc_data[SC_PROVOKE].val1)/100; //base_atkソスソスソスソス + 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) //ソスRソスソスソスZソスソスソスgソスソスソス[ソスVソスソスソスソス batk += batk*(5*sc_data[SC_CONCENTRATION].val1)/100; } - if(batk < 1) batk = 1; //base_atkは最低でも1 + if(batk < 1) batk = 1; //base_atkソスヘ最抵ソスソスナゑソス1 return batk; } /*========================================== - * 対象のAtkを返す(汎用) - * 戻りは整数で0以上 + * ソスホ象ゑソスAtkソスソスソスヤゑソス(ソスト用) + * ソス゚ゑソスソスヘ撰ソスソスソスソスソス0ソスネ擾ソス *------------------------------------------ */ int battle_get_atk(struct block_list *bl) @@ -525,15 +525,15 @@ int battle_get_atk(struct block_list *bl) atk = atk*(100+2*sc_data[SC_PROVOKE].val1)/100; if(sc_data[SC_CURSE].timer!=-1 ) atk -= atk*25/100; - if(sc_data[SC_CONCENTRATION].timer!=-1 && bl->type != BL_PC) //コンセントレーション + if(sc_data[SC_CONCENTRATION].timer!=-1 && bl->type != BL_PC) //ソスRソスソスソスZソスソスソスgソスソスソス[ソスVソスソスソスソス atk += atk*(5*sc_data[SC_CONCENTRATION].val1)/100; } if(atk < 0) atk = 0; return atk; } /*========================================== - * 対象の左手Atkを返す(汎用) - * 戻りは整数で0以上 + * ソスホ象の搾ソスソスソスAtkソスソスソスヤゑソス(ソスト用) + * ソス゚ゑソスソスヘ撰ソスソスソスソスソス0ソスネ擾ソス *------------------------------------------ */ int battle_get_atk_(struct block_list *bl) @@ -550,8 +550,8 @@ int battle_get_atk_(struct block_list *bl) return 0; } /*========================================== - * 対象のAtk2を返す(汎用) - * 戻りは整数で0以上 + * ソスホ象ゑソスAtk2ソスソスソスヤゑソス(ソスト用) + * ソス゚ゑソスソスヘ撰ソスソスソスソスソス0ソスネ擾ソス *------------------------------------------ */ int battle_get_atk2(struct block_list *bl) @@ -577,7 +577,7 @@ int battle_get_atk2(struct block_list *bl) atk2 += sc_data[SC_NIBELUNGEN].val2; if(sc_data[SC_STRIPWEAPON].timer!=-1) atk2 = atk2*90/100; - if(sc_data[SC_CONCENTRATION].timer!=-1) //コンセントレーション + if(sc_data[SC_CONCENTRATION].timer!=-1) //ソスRソスソスソスZソスソスソスgソスソスソス[ソスVソスソスソスソス atk2 += atk2*(5*sc_data[SC_CONCENTRATION].val1)/100; } if(atk2 < 0) atk2 = 0; @@ -586,8 +586,8 @@ int battle_get_atk2(struct block_list *bl) return 0; } /*========================================== - * 対象の左手Atk2を返す(汎用) - * 戻りは整数で0以上 + * ソスホ象の搾ソスソスソスAtk2ソスソスソスヤゑソス(ソスト用) + * ソス゚ゑソスソスヘ撰ソスソスソスソスソス0ソスネ擾ソス *------------------------------------------ */ int battle_get_atk_2(struct block_list *bl) @@ -599,8 +599,8 @@ int battle_get_atk_2(struct block_list *bl) return 0; } /*========================================== - * 対象のMAtk1を返す(汎用) - * 戻りは整数で0以上 + * ソスホ象ゑソスMAtk1ソスソスソスヤゑソス(ソスト用) + * ソス゚ゑソスソスヘ撰ソスソスソスソスソス0ソスネ擾ソス *------------------------------------------ */ int battle_get_matk1(struct block_list *bl) @@ -623,8 +623,8 @@ int battle_get_matk1(struct block_list *bl) return 0; } /*========================================== - * 対象のMAtk2を返す(汎用) - * 戻りは整数で0以上 + * ソスホ象ゑソスMAtk2ソスソスソスヤゑソス(ソスト用) + * ソス゚ゑソスソスヘ撰ソスソスソスソスソス0ソスネ擾ソス *------------------------------------------ */ int battle_get_matk2(struct block_list *bl) @@ -646,8 +646,8 @@ int battle_get_matk2(struct block_list *bl) return 0; } /*========================================== - * 対象のDefを返す(汎用) - * 戻りは整数で0以上 + * ソスホ象ゑソスDefソスソスソスヤゑソス(ソスト用) + * ソス゚ゑソスソスヘ撰ソスソスソスソスソス0ソスネ擾ソス *------------------------------------------ */ int battle_get_def(struct block_list *bl) @@ -670,35 +670,35 @@ int battle_get_def(struct block_list *bl) if(def < 1000000) { if(sc_data) { - //キーピング時はDEF100 + //ソスLソス[ソスsソスソスソスOソスソスソスソスDEF100 if( sc_data[SC_KEEPING].timer!=-1) def = 100; - //プロボック時は減算 + //ソスvソスソスソス{ソスbソスNソスソスソスヘ鯉ソスソスZ if( sc_data[SC_PROVOKE].timer!=-1 && bl->type != BL_PC) def = (def*(100 - 6*sc_data[SC_PROVOKE].val1)+50)/100; - //戦太鼓の響き時は加算 + //ソス太ソスロの具ソスソスソスソスソスソスヘ会ソスZ if( sc_data[SC_DRUMBATTLE].timer!=-1 && bl->type != BL_PC) def += sc_data[SC_DRUMBATTLE].val3; - //毒にかかっている時は減算 + //ソスナにゑソスソスソスソスソストゑソスソス骼橸ソスヘ鯉ソスソスZ if(sc_data[SC_POISON].timer!=-1 && bl->type != BL_PC) def = def*75/100; - //ストリップシールド時は減算 + //ソスXソスgソスソスソスbソスvソスVソス[ソスソスソスhソスソスソスヘ鯉ソスソスZ if(sc_data[SC_STRIPSHIELD].timer!=-1 && bl->type != BL_PC) def = def*85/100; - //シグナムクルシス時は減算 + //ソスVソスOソスiソスソスソスNソスソスソスVソスXソスソスソスヘ鯉ソスソスZ if(sc_data[SC_SIGNUMCRUCIS].timer!=-1 && bl->type != BL_PC) def = def * (100 - sc_data[SC_SIGNUMCRUCIS].val2)/100; - //永遠の混沌時はDEF0になる + //ソスiソスソスソスフ搾ソスソスラ趣ソスソスソスDEF0ソスノなゑソス if(sc_data[SC_ETERNALCHAOS].timer!=-1 && bl->type != BL_PC) def = 0; - //凍結、石化時は右シフト + //ソスソスソスソスソスAソスホ会ソスソスソスソスヘ右ソスVソスtソスg if(sc_data[SC_FREEZE].timer != -1 || (sc_data[SC_STONE].timer != -1 && sc_data[SC_STONE].val2 == 0)) def >>= 1; - //コンセントレーション時は減算 + //ソスRソスソスソスZソスソスソスgソスソスソス[ソスVソスソスソスソスソスソスソスヘ鯉ソスソスZ if( sc_data[SC_CONCENTRATION].timer!=-1 && bl->type != BL_PC) def = (def*(100 - 5*sc_data[SC_CONCENTRATION].val1))/100; } - //詠唱中は詠唱時減算率に基づいて減算 + //ソスrソスソスソスソスソスヘ詠ソスソスソスソスソスソスソスZソスソスソスノ奇ソスソステゑソスソスト鯉ソスソスZ if(skilltimer != -1) { int def_rate = skill_get_castdef(skillid); if(def_rate != 0) @@ -709,8 +709,8 @@ int battle_get_def(struct block_list *bl) return def; } /*========================================== - * 対象のMDefを返す(汎用) - * 戻りは整数で0以上 + * ソスホ象ゑソスMDefソスソスソスヤゑソス(ソスト用) + * ソス゚ゑソスソスヘ撰ソスソスソスソスソス0ソスネ擾ソス *------------------------------------------ */ int battle_get_mdef(struct block_list *bl) @@ -727,7 +727,7 @@ int battle_get_mdef(struct block_list *bl) if(mdef < 1000000) { if(sc_data) { - //バリアー状態時はMDEF100 + //ソスoソスソスソスAソス[ソスソスソスヤ趣ソスソスソスMDEF100 if(mdef < 90 && sc_data[SC_MBARRIER].timer != -1) { mdef += sc_data[SC_MBARRIER].val1; if (mdef > 90) @@ -735,7 +735,7 @@ int battle_get_mdef(struct block_list *bl) } if(sc_data[SC_BARRIER].timer != -1) mdef = 100; - //凍結、石化時は1.25倍 + //ソスソスソスソスソスAソスホ会ソスソスソスソスソス1.25ソス{ if(sc_data[SC_FREEZE].timer != -1 || (sc_data[SC_STONE].timer != -1 && sc_data[SC_STONE].val2 == 0)) mdef = mdef*125/100; if( sc_data[SC_MINDBREAKER].timer!=-1 && bl->type != BL_PC) @@ -746,8 +746,8 @@ int battle_get_mdef(struct block_list *bl) return mdef; } /*========================================== - * 対象のDef2を返す(汎用) - * 戻りは整数で1以上 + * ソスホ象ゑソスDef2ソスソスソスヤゑソス(ソスト用) + * ソス゚ゑソスソスヘ撰ソスソスソスソスソス1ソスネ擾ソス *------------------------------------------ */ int battle_get_def2(struct block_list *bl) @@ -769,7 +769,7 @@ int battle_get_def2(struct block_list *bl) def2 = (def2*(100 - 6*sc_data[SC_PROVOKE].val1)+50)/100; if(sc_data[SC_POISON].timer!=-1 && bl->type != BL_PC) def2 = def2*75/100; - //コンセントレーション時は減算 + //ソスRソスソスソスZソスソスソスgソスソスソス[ソスVソスソスソスソスソスソスソスヘ鯉ソスソスZ if( sc_data[SC_CONCENTRATION].timer!=-1 && bl->type != BL_PC) def2 = def2*(100 - 5*sc_data[SC_CONCENTRATION].val1)/100; } @@ -777,8 +777,8 @@ int battle_get_def2(struct block_list *bl) return def2; } /*========================================== - * 対象のMDef2を返す(汎用) - * 戻りは整数で0以上 + * ソスホ象ゑソスMDef2ソスソスソスヤゑソス(ソスト用) + * ソス゚ゑソスソスヘ撰ソスソスソスソスソス0ソスネ擾ソス *------------------------------------------ */ int battle_get_mdef2(struct block_list *bl) @@ -799,9 +799,9 @@ int battle_get_mdef2(struct block_list *bl) return mdef2; } /*========================================== - * 対象のSpeed(移動速度)を返す(汎用) - * 戻りは整数で1以上 - * Speedは小さいほうが移動速度が速い + * ソスホ象ゑソスSpeed(ソスレ難ソスソスソスソスx)ソスソスソスヤゑソス(ソスト用) + * ソス゚ゑソスソスヘ撰ソスソスソスソスソス1ソスネ擾ソス + * Speedソスヘ擾ソスソスソスソスソスソスルゑソスソスソスソスレ難ソスソスソスソスxソスソスソスソスソスソス *------------------------------------------ */ int battle_get_speed(struct block_list *bl) @@ -816,31 +816,31 @@ int battle_get_speed(struct block_list *bl) speed = ((struct mob_data *)bl)->stats[MOB_SPEED]; if(sc_data) { - //速度増加時は25%減算 + //ソスソスソスxソスソスソスソスソスソスソス25%ソスソスソスZ if(sc_data[SC_INCREASEAGI].timer!=-1 && sc_data[SC_DONTFORGETME].timer == -1) speed -= speed*25/100; - //速度減少時は25%加算 + //ソスソスソスxソスソスソスソスソスソスソスソス25%ソスソスZ if(sc_data[SC_DECREASEAGI].timer!=-1) speed = speed*125/100; - //クァグマイア時は50%加算 + //ソスNソス@ソスOソス}ソスCソスAソスソスソスソス50%ソスソスZ if(sc_data[SC_QUAGMIRE].timer!=-1) speed = speed*3/2; - //私を忘れないで…時は加算 + //ソスソスソスソスソスYソスソスソスネゑソスソスナ…ソスソスソスヘ会ソスZ if(sc_data[SC_DONTFORGETME].timer!=-1) speed = speed*(100+sc_data[SC_DONTFORGETME].val1*2 + sc_data[SC_DONTFORGETME].val2 + (sc_data[SC_DONTFORGETME].val3&0xffff))/100; - //金剛時は25%加算 + //ソスソスソスソスソスソス25%ソスソスZ if(sc_data[SC_STEELBODY].timer!=-1) speed = speed*125/100; - //ディフェンダー時は加算 + //ソスfソスBソスtソスFソスソスソス_ソス[ソスソスソスヘ会ソスZ if(sc_data[SC_DEFENDER].timer!=-1) speed = (speed * (155 - sc_data[SC_DEFENDER].val1*5)) / 100; - //踊り状態は4倍遅い + //ソスxソスソスソスソスソスヤゑソス4ソス{ソスxソスソス if(sc_data[SC_DANCING].timer!=-1 ) speed*=4; - //呪い時は450加算 + //ソスい趣ソスソスソス450ソスソスZ if(sc_data[SC_CURSE].timer!=-1) speed = speed + 450; - //ウィンドウォーク時はLv*2%減算 + //ソスEソスBソスソスソスhソスEソスHソス[ソスNソスソスソスソスLv*2%ソスソスソスZ if(sc_data[SC_WINDWALK].timer!=-1) speed -= (speed*(sc_data[SC_WINDWALK].val1*2))/100; } @@ -851,8 +851,8 @@ int battle_get_speed(struct block_list *bl) return 1000; } /*========================================== - * 対象のaDelay(攻撃時ディレイ)を返す(汎用) - * aDelayは小さいほうが攻撃速度が速い + * ソスホ象ゑソスaDelay(ソスUソスソスソスソスソスfソスBソスソスソスC)ソスソスソスヤゑソス(ソスト用) + * aDelayソスヘ擾ソスソスソスソスソスソスルゑソスソスソスソスUソスソスソスソスソスxソスソスソスソスソスソス *------------------------------------------ */ int battle_get_adelay(struct block_list *bl) @@ -867,41 +867,41 @@ int battle_get_adelay(struct block_list *bl) adelay = ((struct mob_data *)bl)->stats[MOB_ADELAY]; if(sc_data) { - //ツーハンドクイッケン使用時でクァグマイアでも私を忘れないで…でもない時は3割減算 + //ソスcソス[ソスnソスソスソスhソスNソスCソスbソスPソスソスソスgソスpソスソスソスナクソス@ソスOソス}ソスCソスAソスナゑソスソスソスソスYソスソスソスネゑソスソスナ…ソスナゑソスソスネゑソスソスソスソスソス3ソスソスソスソスソスZ if(sc_data[SC_TWOHANDQUICKEN].timer != -1 && sc_data[SC_QUAGMIRE].timer == -1 && sc_data[SC_DONTFORGETME].timer == -1) // 2HQ aspd_rate -= 30; - //アドレナリンラッシュ使用時でツーハンドクイッケンでもクァグマイアでも私を忘れないで…でもない時は + //ソスAソスhソスソスソスiソスソスソスソスソスソスソスbソスVソスソスソスgソスpソスソスソスナツソス[ソスnソスソスソスhソスNソスCソスbソスPソスソスソスナゑソスソスNソス@ソスOソス}ソスCソスAソスナゑソスソスソスソスYソスソスソスネゑソスソスナ…ソスナゑソスソスネゑソスソスソスソスソス if(sc_data[SC_ADRENALINE].timer != -1 && sc_data[SC_TWOHANDQUICKEN].timer == -1 && - sc_data[SC_QUAGMIRE].timer == -1 && sc_data[SC_DONTFORGETME].timer == -1) { // アドレナリンラッシュ - //使用者とパーティメンバーで格差が出る設定でなければ3割減算 + sc_data[SC_QUAGMIRE].timer == -1 && sc_data[SC_DONTFORGETME].timer == -1) { // ソスAソスhソスソスソスiソスソスソスソスソスソスソスbソスVソスソス + //ソスgソスpソスメとパソス[ソスeソスBソスソスソスソスソスoソス[ソスナ格ソスソスソスソスソスoソスソスソスン抵ソスソスナなゑソスソスソスソスソス3ソスソスソスソスソスZ if(sc_data[SC_ADRENALINE].val2 || !battle_config.party_skill_penaly) aspd_rate -= 30; - //そうでなければ2.5割減算 + //ソスソスソスソスソスナなゑソスソスソスソスソス2.5ソスソスソスソスソスZ else aspd_rate -= 25; } - //スピアクィッケン時は減算 + //ソスXソスsソスAソスNソスBソスbソスPソスソスソスソスソスヘ鯉ソスソスZ if(sc_data[SC_SPEARSQUICKEN].timer != -1 && sc_data[SC_ADRENALINE].timer == -1 && - sc_data[SC_TWOHANDQUICKEN].timer == -1 && sc_data[SC_QUAGMIRE].timer == -1 && sc_data[SC_DONTFORGETME].timer == -1) // スピアクィッケン + sc_data[SC_TWOHANDQUICKEN].timer == -1 && sc_data[SC_QUAGMIRE].timer == -1 && sc_data[SC_DONTFORGETME].timer == -1) // ソスXソスsソスAソスNソスBソスbソスPソスソス aspd_rate -= sc_data[SC_SPEARSQUICKEN].val2; - //夕日のアサシンクロス時は減算 - if(sc_data[SC_ASSNCROS].timer!=-1 && // 夕陽のアサシンクロス + //ソス[ソスソスソスフアソスTソスVソスソスソスNソスソスソスXソスソスソスヘ鯉ソスソスZ + if(sc_data[SC_ASSNCROS].timer!=-1 && // ソス[ソスzソスフアソスTソスVソスソスソスNソスソスソスX sc_data[SC_TWOHANDQUICKEN].timer==-1 && sc_data[SC_ADRENALINE].timer==-1 && sc_data[SC_SPEARSQUICKEN].timer==-1 && sc_data[SC_DONTFORGETME].timer == -1) aspd_rate -= 5+sc_data[SC_ASSNCROS].val1+sc_data[SC_ASSNCROS].val2+sc_data[SC_ASSNCROS].val3; - //私を忘れないで…時は加算 - if(sc_data[SC_DONTFORGETME].timer!=-1) // 私を忘れないで + //ソスソスソスソスソスYソスソスソスネゑソスソスナ…ソスソスソスヘ会ソスZ + if(sc_data[SC_DONTFORGETME].timer!=-1) // ソスソスソスソスソスYソスソスソスネゑソスソスソス aspd_rate += sc_data[SC_DONTFORGETME].val1*3 + sc_data[SC_DONTFORGETME].val2 + (sc_data[SC_DONTFORGETME].val3>>16); - //金剛時25%加算 - if(sc_data[SC_STEELBODY].timer!=-1) // 金剛 + //ソスソスソスソス25%ソスソスZ + if(sc_data[SC_STEELBODY].timer!=-1) // ソスソス aspd_rate += 25; - //増速ポーション使用時は減算 + //ソスソスソスソスソス|ソス[ソスVソスソスソスソスソスgソスpソスソスソスヘ鯉ソスソスZ if(sc_data[i=SC_SPEEDPOTION2].timer!=-1 || sc_data[i=SC_SPEEDPOTION1].timer!=-1 || sc_data[i=SC_SPEEDPOTION0].timer!=-1) aspd_rate -= sc_data[i].val1; // Fate's `haste' spell works the same as the above if (sc_data[SC_HASTE].timer != -1) aspd_rate -= sc_data[SC_HASTE].val1; - //ディフェンダー時は加算 + //ソスfソスBソスtソスFソスソスソス_ソス[ソスソスソスヘ会ソスZ if(sc_data[SC_DEFENDER].timer != -1) adelay += (1100 - sc_data[SC_DEFENDER].val1*100); } @@ -928,22 +928,22 @@ int battle_get_amotion(struct block_list *bl) if(sc_data[SC_TWOHANDQUICKEN].timer != -1 && sc_data[SC_QUAGMIRE].timer == -1 && sc_data[SC_DONTFORGETME].timer == -1) // 2HQ aspd_rate -= 30; if(sc_data[SC_ADRENALINE].timer != -1 && sc_data[SC_TWOHANDQUICKEN].timer == -1 && - sc_data[SC_QUAGMIRE].timer == -1 && sc_data[SC_DONTFORGETME].timer == -1) { // アドレナリンラッシュ + sc_data[SC_QUAGMIRE].timer == -1 && sc_data[SC_DONTFORGETME].timer == -1) { // ソスAソスhソスソスソスiソスソスソスソスソスソスソスbソスVソスソス if(sc_data[SC_ADRENALINE].val2 || !battle_config.party_skill_penaly) aspd_rate -= 30; else aspd_rate -= 25; } if(sc_data[SC_SPEARSQUICKEN].timer != -1 && sc_data[SC_ADRENALINE].timer == -1 && - sc_data[SC_TWOHANDQUICKEN].timer == -1 && sc_data[SC_QUAGMIRE].timer == -1 && sc_data[SC_DONTFORGETME].timer == -1) // スピアクィッケン + sc_data[SC_TWOHANDQUICKEN].timer == -1 && sc_data[SC_QUAGMIRE].timer == -1 && sc_data[SC_DONTFORGETME].timer == -1) // ソスXソスsソスAソスNソスBソスbソスPソスソス aspd_rate -= sc_data[SC_SPEARSQUICKEN].val2; - if(sc_data[SC_ASSNCROS].timer!=-1 && // 夕陽のアサシンクロス + if(sc_data[SC_ASSNCROS].timer!=-1 && // ソス[ソスzソスフアソスTソスVソスソスソスNソスソスソスX sc_data[SC_TWOHANDQUICKEN].timer==-1 && sc_data[SC_ADRENALINE].timer==-1 && sc_data[SC_SPEARSQUICKEN].timer==-1 && sc_data[SC_DONTFORGETME].timer == -1) aspd_rate -= 5+sc_data[SC_ASSNCROS].val1+sc_data[SC_ASSNCROS].val2+sc_data[SC_ASSNCROS].val3; - if(sc_data[SC_DONTFORGETME].timer!=-1) // 私を忘れないで + if(sc_data[SC_DONTFORGETME].timer!=-1) // ソスソスソスソスソスYソスソスソスネゑソスソスソス aspd_rate += sc_data[SC_DONTFORGETME].val1*3 + sc_data[SC_DONTFORGETME].val2 + (sc_data[SC_DONTFORGETME].val3>>16); - if(sc_data[SC_STEELBODY].timer!=-1) // 金剛 + if(sc_data[SC_STEELBODY].timer!=-1) // ソスソス aspd_rate += 25; if(sc_data[i=SC_SPEEDPOTION2].timer!=-1 || sc_data[i=SC_SPEEDPOTION1].timer!=-1 || sc_data[i=SC_SPEEDPOTION0].timer!=-1) aspd_rate -= sc_data[i].val1; @@ -993,15 +993,15 @@ int battle_get_element(struct block_list *bl) nullpo_retr(ret, bl); sc_data = battle_get_sc_data(bl); - if(bl->type==BL_MOB && (struct mob_data *)bl) // 10の位=Lv*2、1の位=属性 + if(bl->type==BL_MOB && (struct mob_data *)bl) // 10ソスフ位ソスLv*2ソスAソスPソスフ位ソスソスソスソスソス ret=((struct mob_data *)bl)->def_ele; else if(bl->type==BL_PC && (struct map_session_data *)bl) - ret=20+((struct map_session_data *)bl)->def_ele; // 防御属性Lv1 + ret=20+((struct map_session_data *)bl)->def_ele; // ソスhソス苟ョソスソスLv1 if(sc_data) { - if( sc_data[SC_BENEDICTIO].timer!=-1 ) // 聖体降福 + if( sc_data[SC_BENEDICTIO].timer!=-1 ) // ソスソスソスフ降ソスソス ret=26; - if( sc_data[SC_FREEZE].timer!=-1 ) // 凍結 + if( sc_data[SC_FREEZE].timer!=-1 ) // ソスソスソスソス ret=21; if( sc_data[SC_STONE].timer!=-1 && sc_data[SC_STONE].val2==0) ret=22; @@ -1021,17 +1021,17 @@ int battle_get_attack_element(struct block_list *bl) ret=((struct map_session_data *)bl)->atk_ele; if(sc_data) { - if( sc_data[SC_FROSTWEAPON].timer!=-1) // フロストウェポン + if( sc_data[SC_FROSTWEAPON].timer!=-1) // ソスtソスソスソスXソスgソスEソスFソス|ソスソス ret=1; - if( sc_data[SC_SEISMICWEAPON].timer!=-1) // サイズミックウェポン + if( sc_data[SC_SEISMICWEAPON].timer!=-1) // ソスTソスCソスYソス~ソスbソスNソスEソスFソス|ソスソス ret=2; - if( sc_data[SC_FLAMELAUNCHER].timer!=-1) // フレームランチャー + if( sc_data[SC_FLAMELAUNCHER].timer!=-1) // ソスtソスソスソス[ソスソスソスソスソスソスソス`ソスソスソス[ ret=3; - if( sc_data[SC_LIGHTNINGLOADER].timer!=-1) // ライトニングローダー + if( sc_data[SC_LIGHTNINGLOADER].timer!=-1) // ソスソスソスCソスgソスjソスソスソスOソスソスソス[ソス_ソス[ ret=4; - if( sc_data[SC_ENCPOISON].timer!=-1) // エンチャントポイズン + if( sc_data[SC_ENCPOISON].timer!=-1) // ソスGソスソスソス`ソスソスソスソスソスgソス|ソスCソスYソスソス ret=5; - if( sc_data[SC_ASPERSIO].timer!=-1) // アスペルシオ + if( sc_data[SC_ASPERSIO].timer!=-1) // ソスAソスXソスyソスソスソスVソスI ret=6; } @@ -1045,17 +1045,17 @@ int battle_get_attack_element2(struct block_list *bl) struct status_change *sc_data = ((struct map_session_data *)bl)->sc_data; if(sc_data) { - if( sc_data[SC_FROSTWEAPON].timer!=-1) // フロストウェポン + if( sc_data[SC_FROSTWEAPON].timer!=-1) // ソスtソスソスソスXソスgソスEソスFソス|ソスソス ret=1; - if( sc_data[SC_SEISMICWEAPON].timer!=-1) // サイズミックウェポン + if( sc_data[SC_SEISMICWEAPON].timer!=-1) // ソスTソスCソスYソス~ソスbソスNソスEソスFソス|ソスソス ret=2; - if( sc_data[SC_FLAMELAUNCHER].timer!=-1) // フレームランチャー + if( sc_data[SC_FLAMELAUNCHER].timer!=-1) // ソスtソスソスソス[ソスソスソスソスソスソスソス`ソスソスソス[ ret=3; - if( sc_data[SC_LIGHTNINGLOADER].timer!=-1) // ライトニングローダー + if( sc_data[SC_LIGHTNINGLOADER].timer!=-1) // ソスソスソスCソスgソスjソスソスソスOソスソスソス[ソス_ソス[ ret=4; - if( sc_data[SC_ENCPOISON].timer!=-1) // エンチャントポイズン + if( sc_data[SC_ENCPOISON].timer!=-1) // ソスGソスソスソス`ソスソスソスソスソスgソス|ソスCソスYソスソス ret=5; - if( sc_data[SC_ASPERSIO].timer!=-1) // アスペルシオ + if( sc_data[SC_ASPERSIO].timer!=-1) // ソスAソスXソスyソスソスソスVソスI ret=6; } return ret; @@ -1116,7 +1116,7 @@ int battle_get_mode(struct block_list *bl) if(bl->type==BL_MOB && (struct mob_data *)bl) return mob_db[((struct mob_data *)bl)->class].mode; else - return 0x01; // とりあえず動くということで1 + return 0x01; // ソスニりあソスソスソスソスソスソスソスソスソスニゑソスソスソスソスソスソスニゑソス1 } int battle_get_mexp(struct block_list *bl) @@ -1132,7 +1132,7 @@ int battle_get_mexp(struct block_list *bl) return 0; } -// StatusChange系の所得 +// StatusChangeソスnソスフ擾ソスソスソス struct status_change *battle_get_sc_data(struct block_list *bl) { nullpo_retr(NULL, bl); @@ -1198,7 +1198,7 @@ short *battle_get_option(struct block_list *bl) //------------------------------------------------------------------- -// ダメージの遅延 +// ソス_ソスソスソス[ソスWソスフ遅ソスソス struct battle_delay_damage_ { struct block_list *src,*target; int damage; @@ -1228,7 +1228,7 @@ int battle_delay_damage(unsigned int tick,struct block_list *src,struct block_li return 0; } -// 実際にHPを操作 +// ソスソスロゑソスHPソス操搾ソス int battle_damage(struct block_list *bl,struct block_list *target,int damage,int flag) { struct map_session_data *sd=NULL; @@ -1236,7 +1236,7 @@ int battle_damage(struct block_list *bl,struct block_list *target,int damage,int short *sc_count; int i; - nullpo_retr(0, target); //blはNULLで呼ばれることがあるので他でチェック + nullpo_retr(0, target); //blソスソスNULLソスナ呼ばゑソスソス驍アソスニゑソスソスソスソスソスソスフで托ソスソスナチソスFソスbソスN if(damage==0) return 0; @@ -1256,7 +1256,7 @@ int battle_damage(struct block_list *bl,struct block_list *target,int damage,int return battle_heal(bl,target,-damage,0,flag); if(!flag && (sc_count=battle_get_sc_count(target))!=NULL && *sc_count>0){ - // 凍結、石化、睡眠を消去 + // ソスソスソスソスソスAソスホ会ソスソスAソスソスソスソスソスソスソスソスソス if(sc_data[SC_FREEZE].timer!=-1) skill_status_change_end(target,SC_FREEZE,-1); if(sc_data[SC_STONE].timer!=-1 && sc_data[SC_STONE].val2==0) @@ -1267,7 +1267,7 @@ int battle_damage(struct block_list *bl,struct block_list *target,int damage,int if(target->type==BL_MOB){ // MOB struct mob_data *md=(struct mob_data *)target; - if(md && md->skilltimer!=-1 && md->state.skillcastcancel) // 詠唱妨害 + if(md && md->skilltimer!=-1 && md->state.skillcastcancel) // ソスrソスソスソスWソスQ skill_castcancel(target,0); return mob_damage(bl,md,damage,0); } @@ -1275,7 +1275,7 @@ int battle_damage(struct block_list *bl,struct block_list *target,int damage,int struct map_session_data *tsd=(struct map_session_data *)target; - if(tsd && tsd->sc_data && tsd->sc_data[SC_DEVOTION].val1){ // ディボーションをかけられている + if(tsd && tsd->sc_data && tsd->sc_data[SC_DEVOTION].val1){ // ソスfソスBソス{ソス[ソスVソスソスソスソスソスソスソスソスソスソスソスソストゑソスソスソス struct map_session_data *md = map_id2sd(tsd->sc_data[SC_DEVOTION].val1); if(md && skill_devotion3(&md->bl,target->id)){ skill_devotion(md,target->id); @@ -1291,8 +1291,8 @@ int battle_damage(struct block_list *bl,struct block_list *target,int damage,int } } - if(tsd && tsd->skilltimer!=-1){ // 詠唱妨害 - // フェンカードや妨害されないスキルかの検査 + if(tsd && tsd->skilltimer!=-1){ // ソスrソスソスソスWソスQ + // ソスtソスFソスソスソスJソス[ソスhソスソスソスWソスQソスソスソスソスソスネゑソスソスXソスLソスソスソスソスソスフ鯉ソスソスソス if( (!tsd->special_state.no_castcancel || map[bl->m].flag.gvg) && tsd->state.skillcastcancel && !tsd->special_state.no_castcancel2) skill_castcancel(target,0); @@ -1307,7 +1307,7 @@ int battle_damage(struct block_list *bl,struct block_list *target,int damage,int } int battle_heal(struct block_list *bl,struct block_list *target,int hp,int sp,int flag) { - nullpo_retr(0, target); //blはNULLで呼ばれることがあるので他でチェック + nullpo_retr(0, target); //blソスソスNULLソスナ呼ばゑソスソス驍アソスニゑソスソスソスソスソスソスフで托ソスソスナチソスFソスbソスN if( target->type ==BL_PC && pc_isdead((struct map_session_data *)target) ) return 0; @@ -1324,7 +1324,7 @@ int battle_heal(struct block_list *bl,struct block_list *target,int hp,int sp,in return 0; } -// 攻撃停止 +// ソスUソスソスソスソスソス~ int battle_stopattack(struct block_list *bl) { nullpo_retr(0, bl); @@ -1334,7 +1334,7 @@ int battle_stopattack(struct block_list *bl) return pc_stopattack((struct map_session_data*)bl); return 0; } -// 移動停止 +// ソスレ難ソスソスソスソス~ int battle_stopwalking(struct block_list *bl,int type) { nullpo_retr(0, bl); @@ -1347,7 +1347,7 @@ int battle_stopwalking(struct block_list *bl,int type) /*========================================== - * ダメージの属性修正 + * ソス_ソスソスソス[ソスWソスフ托ソスソスソスソスCソスソス *------------------------------------------ */ int battle_attr_fix(int damage,int atk_elem,int def_elem) @@ -1355,7 +1355,7 @@ int battle_attr_fix(int damage,int atk_elem,int def_elem) int def_type= def_elem%10, def_lv=def_elem/10/2; if( atk_elem<0 || atk_elem>9 || def_type<0 || def_type>9 || - def_lv<1 || def_lv>4){ // 属 性値がおかしいのでとりあえずそのまま返す + def_lv<1 || def_lv>4){ // ソスソス ソスソスソスlソスソスソスソスソスソスソスソスソスソスソスフでとりあソスソスソスソスソスソスソスフまま返ゑソス if(battle_config.error_log) printf("battle_attr_fix: unknown attr type: atk=%d def_type=%d def_lv=%d\n",atk_elem,def_type,def_lv); return damage; @@ -1366,7 +1366,7 @@ int battle_attr_fix(int damage,int atk_elem,int def_elem) /*========================================== - * ダメージ最終計算 + * ソス_ソスソスソス[ソスWソスナ終ソスvソスZ *------------------------------------------ */ int battle_calc_damage(struct block_list *src,struct block_list *bl,int damage,int div_,int skill_num,int skill_lv,int flag) @@ -1389,52 +1389,52 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,int damage,i if(sc_count!=NULL && *sc_count>0){ if(sc_data[SC_SAFETYWALL].timer!=-1 && damage>0 && flag&BF_WEAPON && flag&BF_SHORT && skill_num != NPC_GUIDEDATTACK){ - // セーフティウォール + // ソスZソス[ソスtソスeソスBソスEソスHソス[ソスソス struct skill_unit *unit=(struct skill_unit*)sc_data[SC_SAFETYWALL].val2; if( unit && unit->alive && (--unit->group->val2)<=0 ) skill_delunit(unit); - skill_unit_move(bl,gettick(),1); // 重ね掛けチェック + skill_unit_move(bl,gettick(),1); // ソスdソスヒ掛ソスソスソス`ソスFソスbソスN damage=0; } if(sc_data[SC_PNEUMA].timer!=-1 && damage>0 && flag&BF_WEAPON && flag&BF_LONG && skill_num != NPC_GUIDEDATTACK){ - // ニューマ + // ソスjソスソスソス[ソス} damage=0; } if(sc_data[SC_ROKISWEIL].timer!=-1 && damage>0 && flag&BF_MAGIC ){ - // ニューマ + // ソスjソスソスソス[ソス} damage=0; } - if(sc_data[SC_AETERNA].timer!=-1 && damage>0){ // レックスエーテルナ + if(sc_data[SC_AETERNA].timer!=-1 && damage>0){ // ソスソスソスbソスNソスXソスGソス[ソスeソスソスソスi damage<<=1; skill_status_change_end( bl,SC_AETERNA,-1 ); } - //属性場のダメージ増加 - if(sc_data[SC_VOLCANO].timer!=-1){ // ボルケーノ + //ソスソスソスソスソスソスソスフダソスソスソス[ソスWソスソスソスソス + if(sc_data[SC_VOLCANO].timer!=-1){ // ソス{ソスソスソスPソス[ソスm if(flag&BF_SKILL && skill_get_pl(skill_num)==3) damage += damage*sc_data[SC_VOLCANO].val4/100; else if(!flag&BF_SKILL && battle_get_attack_element(bl)==3) damage += damage*sc_data[SC_VOLCANO].val4/100; } - if(sc_data[SC_VIOLENTGALE].timer!=-1){ // バイオレントゲイル + if(sc_data[SC_VIOLENTGALE].timer!=-1){ // ソスoソスCソスIソスソスソスソスソスgソスQソスCソスソス if(flag&BF_SKILL && skill_get_pl(skill_num)==4) damage += damage*sc_data[SC_VIOLENTGALE].val4/100; else if(!flag&BF_SKILL && battle_get_attack_element(bl)==4) damage += damage*sc_data[SC_VIOLENTGALE].val4/100; } - if(sc_data[SC_DELUGE].timer!=-1){ // デリュージ + if(sc_data[SC_DELUGE].timer!=-1){ // ソスfソスソスソスソスソス[ソスW if(flag&BF_SKILL && skill_get_pl(skill_num)==1) damage += damage*sc_data[SC_DELUGE].val4/100; else if(!flag&BF_SKILL && battle_get_attack_element(bl)==1) damage += damage*sc_data[SC_DELUGE].val4/100; } - if(sc_data[SC_ENERGYCOAT].timer!=-1 && damage>0 && flag&BF_WEAPON){ // エナジーコート + if(sc_data[SC_ENERGYCOAT].timer!=-1 && damage>0 && flag&BF_WEAPON){ // ソスGソスiソスWソス[ソスRソス[ソスg if(sd){ if(sd->status.sp>0){ int per = sd->status.sp * 5 / (sd->status.max_sp + 1); @@ -1450,7 +1450,7 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,int damage,i damage -= damage * (sc_data[SC_ENERGYCOAT].val1 * 6) / 100; } - if(sc_data[SC_KYRIE].timer!=-1 && damage > 0){ // キリエエレイソン + if(sc_data[SC_KYRIE].timer!=-1 && damage > 0){ // ソスLソスソスソスGソスGソスソスソスCソス\ソスソス sc=&sc_data[SC_KYRIE]; sc->val2-=damage; if(flag&BF_WEAPON){ @@ -1462,11 +1462,11 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,int damage,i } if(sc_data[SC_BASILICA].timer!=-1 && damage > 0){ - // ニューマ + // ソスjソスソスソス[ソス} damage=0; } if(sc_data[SC_LANDPROTECTOR].timer!=-1 && damage>0 && flag&BF_MAGIC){ - // ニューマ + // ソスjソスソスソス[ソス} damage=0; } @@ -1488,14 +1488,14 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,int damage,i clif_skill_nodamage(bl,bl,LK_PARRYING,sc_data[SC_PARRYING].val1,1); } } - // リジェクトソード + // ソスソスソスWソスFソスNソスgソス\ソス[ソスh if(sc_data[SC_REJECTSWORD].timer!=-1 && damage > 0 && flag&BF_WEAPON && ((src->type==BL_PC && ((struct map_session_data *)src)->status.weapon == (1 || 2 || 3)) || src->type==BL_MOB )){ - if(MRAND(100) < (10+5*sc_data[SC_REJECTSWORD].val1)){ //反射確率は10+5*Lv + if(MRAND(100) < (10+5*sc_data[SC_REJECTSWORD].val1)){ //ソスソスソスヒ確ソスソスソスソス10+5*Lv damage = damage*50/100; battle_damage(bl,src,damage,0); - //ダメージを与えたのは良いんだが、ここからどうして表示するんだかわかんねぇ - //エフェクトもこれでいいのかわかんねぇ + //ソス_ソスソスソス[ソスWソスソスソス^ソスソスソスソスソスフは良ゑソスソスだゑソスソスAソスソスソスソスソスソスソスソスソスヌゑソスソスソスソスト表ソスソスソスソスソスソスソスだゑソスソスかソスソスソスヒゑソス + //ソスGソスtソスFソスNソスgソスソスソスソスソスナゑソスソスソスソスフゑソスソスかソスソスソスヒゑソス clif_skill_nodamage(bl,bl,ST_REJECTSWORD,sc_data[SC_REJECTSWORD].val1,1); if((--sc_data[SC_REJECTSWORD].val2)<=0) skill_status_change_end(bl, SC_REJECTSWORD, -1); @@ -1515,11 +1515,11 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,int damage,i if(gc && agit_flag==0 && class != 1288) // guardians cannot be damaged during non-woe [Valaris] damage=0; // end woe check [Valaris] if(g == NULL) - damage=0;//ギルド未加入ならダメージ無し + damage=0;//ソスMソスソスソスhソスソスソスソスソスソスネゑソスソス_ソスソスソス[ソスWソスソスソスソス else if((gc != NULL) && guild_isallied(g, gc)) - damage=0;//自占領ギルドのエンペならダメージ無し + damage=0;//ソスソスソスソスソスフギソスソスソスhソスフエソスソスソスyソスネゑソスソス_ソスソスソス[ソスWソスソスソスソス else if(g && guild_checkskill(g,GD_APPROVAL) <= 0) - damage=0;//正規ギルド承認がないとダメージ無し + damage=0;//ソスソスソスKソスMソスソスソスhソスソスソスFソスソスソスネゑソスソスニダソスソスソス[ソスWソスソスソスソス else if (battle_config.guild_max_castles != 0 && guild_checkcastles(g)>=battle_config.guild_max_castles) damage = 0; // [MouseJstr] } @@ -1549,14 +1549,14 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,int damage,i damage = 3; } - if( md!=NULL && md->hp>0 && damage > 0 ) // 反撃などのMOBスキル判定 + if( md!=NULL && md->hp>0 && damage > 0 ) // ソスソスソスソスソスネどゑソスMOBソスXソスLソスソスソスソスソスソス mobskill_event(md,flag); return damage; } /*========================================== - * 修練ダメージ + * ソスCソスソスソス_ソスソスソス[ソスW *------------------------------------------ */ int battle_addmastery(struct map_session_data *sd,struct block_list *target,int dmg,int type) @@ -1568,11 +1568,11 @@ int battle_addmastery(struct map_session_data *sd,struct block_list *target,int nullpo_retr(0, sd); - // デーモンベイン(+3 〜 +30) vs 不死 or 悪魔 (死人は含めない?) + // ソスfソス[ソスソスソスソスソスxソスCソスソス(+3 ソス` +30) vs ソスsソスソス or ソスソスソスソス (ソスソスソスlソスヘ含めなゑソスソスH) if((skill = pc_checkskill(sd,AL_DEMONBANE)) > 0 && (battle_check_undead(race,battle_get_elem_type(target)) || race==6) ) damage += (skill * 3); - // ビーストベイン(+4 〜 +40) vs 動物 or 昆虫 + // ソスrソス[ソスXソスgソスxソスCソスソス(+4 ソス` +40) vs ソスソスソスソス or ソスソスソスソス if((skill = pc_checkskill(sd,HT_BEASTBANE)) > 0 && (race==2 || race==4) ) damage += (skill * 4); @@ -1582,10 +1582,10 @@ int battle_addmastery(struct map_session_data *sd,struct block_list *target,int weapon = sd->weapontype2; switch(weapon) { - case 0x01: // 短剣 (Updated By AppleGirl) + case 0x01: // ソスZソスソス (Updated By AppleGirl) case 0x02: // 1HS { - // 剣修練(+4 〜 +40) 片手剣 短剣含む + // ソスソスソスCソスソス(+4 ソス` +40) ソスミ手剣 ソスZソスソスソスワゑソス if((skill = pc_checkskill(sd,SM_SWORD)) > 0) { damage += (skill * 4); } @@ -1593,7 +1593,7 @@ int battle_addmastery(struct map_session_data *sd,struct block_list *target,int } case 0x03: // 2HS { - // 両手剣修練(+4 〜 +40) 両手剣 + // ソスソスソス闌包ソスCソスソス(+4 ソス` +40) ソスソスソス闌 if((skill = pc_checkskill(sd,SM_TWOHAND)) > 0) { damage += (skill * 4); } @@ -1601,27 +1601,27 @@ int battle_addmastery(struct map_session_data *sd,struct block_list *target,int } case 0x04: // 1HL { - // 槍修練(+4 〜 +40,+5 〜 +50) 槍 + // ソスソスソスCソスソス(+4 ソス` +40,+5 ソス` +50) ソスソス if((skill = pc_checkskill(sd,KN_SPEARMASTERY)) > 0) { if(!pc_isriding(sd)) - damage += (skill * 4); // ペコに乗ってない + damage += (skill * 4); // ソスyソスRソスノ擾ソスソスソストなゑソス else - damage += (skill * 5); // ペコに乗ってる + damage += (skill * 5); // ソスyソスRソスノ擾ソスソスソストゑソス } break; } case 0x05: // 2HL { - // 槍修練(+4 〜 +40,+5 〜 +50) 槍 + // ソスソスソスCソスソス(+4 ソス` +40,+5 ソス` +50) ソスソス if((skill = pc_checkskill(sd,KN_SPEARMASTERY)) > 0) { if(!pc_isriding(sd)) - damage += (skill * 4); // ペコに乗ってない + damage += (skill * 4); // ソスyソスRソスノ擾ソスソスソストなゑソス else - damage += (skill * 5); // ペコに乗ってる + damage += (skill * 5); // ソスyソスRソスノ擾ソスソスソストゑソス } break; } - case 0x06: // 片手斧 + case 0x06: // ソスミ手斧 { if((skill = pc_checkskill(sd,AM_AXEMASTERY)) > 0) { damage += (skill * 3); @@ -1635,24 +1635,24 @@ int battle_addmastery(struct map_session_data *sd,struct block_list *target,int } break; } - case 0x08: // メイス + case 0x08: // ソスソスソスCソスX { - // メイス修練(+3 〜 +30) メイス + // ソスソスソスCソスXソスCソスソス(+3 ソス` +30) ソスソスソスCソスX if((skill = pc_checkskill(sd,PR_MACEMASTERY)) > 0) { damage += (skill * 3); } break; } - case 0x09: // なし? + case 0x09: // ソスネゑソス? break; - case 0x0a: // 杖 + case 0x0a: // ソスソス break; - case 0x0b: // 弓 + case 0x0b: // ソス| break; - case 0x00: // 素手 + case 0x00: // ソスfソスソス case 0x0c: // Knuckles { - // 鉄拳(+3 〜 +30) 素手,ナックル + // ソスSソスソス(+3 ソス` +30) ソスfソスソス,ソスiソスbソスNソスソス if((skill = pc_checkskill(sd,MO_IRONHAND)) > 0) { damage += (skill * 3); } @@ -1660,7 +1660,7 @@ int battle_addmastery(struct map_session_data *sd,struct block_list *target,int } case 0x0d: // Musical Instrument { - // 楽器の練習(+3 〜 +30) 楽器 + // ソスyソスソスソスフ暦ソスソスK(+3 ソス` +30) ソスyソスソス if((skill = pc_checkskill(sd,BA_MUSICALLESSON)) > 0) { damage += (skill * 3); } @@ -1668,7 +1668,7 @@ int battle_addmastery(struct map_session_data *sd,struct block_list *target,int } case 0x0e: // Dance Mastery { - // Dance Lesson Skill Effect(+3 damage for every lvl = +30) 鞭 + // Dance Lesson Skill Effect(+3 damage for every lvl = +30) ソスソス if((skill = pc_checkskill(sd,DC_DANCINGLESSON)) > 0) { damage += (skill * 3); } @@ -1684,9 +1684,9 @@ int battle_addmastery(struct map_session_data *sd,struct block_list *target,int } case 0x10: // Katars { - // カタール修練(+3 〜 +30) カタール + // ソスJソス^ソス[ソスソスソスCソスソス(+3 ソス` +30) ソスJソス^ソス[ソスソス if((skill = pc_checkskill(sd,AS_KATAR)) > 0) { - //ソニックブロー時は別処理(1撃に付き1/8適応) + //ソス\ソスjソスbソスNソスuソスソスソス[ソスソスソスヘ別擾ソスソスソスソスi1ソスソスソスノ付ソスソス1/8ソスKソスソス) damage += (skill * 3); } break; @@ -1714,7 +1714,7 @@ static struct Damage battle_calc_mob_weapon_attack( short *sc_count; short *option, *opt1, *opt2; - //return前の処理があるので情報出力部のみ変更 + //returnソスOソスフ擾ソスソスソスソスソスソスソスソスソスソスフで擾ソスソスソスソスoソスヘ包ソスソスフみ変更 if( src == NULL || target == NULL || md == NULL ){ nullpo_info(NLP_MARK); memset(&wd,0,sizeof(wd)); @@ -1729,7 +1729,7 @@ static struct Damage battle_calc_mob_weapon_attack( opt1=battle_get_opt1(src); opt2=battle_get_opt2(src); - // ターゲット + // ソス^ソス[ソスQソスbソスg if(target->type==BL_PC) tsd=(struct map_session_data *)target; else if(target->type==BL_MOB) @@ -1759,9 +1759,9 @@ static struct Damage battle_calc_mob_weapon_attack( else ac_flag = 1; } } - flag=BF_SHORT|BF_WEAPON|BF_NORMAL; // 攻撃の種類の設定 + flag=BF_SHORT|BF_WEAPON|BF_NORMAL; // ソスUソスソスソスフ趣ソスソズの設抵ソス - // 回避率計算、回避判定は後で + // ソスソスソス率計ソスZソスAソスソスソス判抵ソスソスヘ鯉ソスソスソス flee = battle_get_flee(target); if(battle_config.agi_penaly_type > 0 || battle_config.vit_penaly_type > 0) target_count += battle_counttargeted(target,src,battle_config.agi_penaly_count_lv); @@ -1785,7 +1785,7 @@ static struct Damage battle_calc_mob_weapon_attack( damage = battle_get_baseatk(src); else damage = 0; - if(skill_num==HW_MAGICCRASHER){ /* マジッククラッシャーはMATKで殴る */ + if(skill_num==HW_MAGICCRASHER){ /* ソス}ソスWソスbソスNソスNソスソスソスbソスVソスソスソス[ソスソスMATKソスナ会ソスソスソス */ atkmin = battle_get_matk1(src); atkmax = battle_get_matk2(src); }else{ @@ -1797,7 +1797,7 @@ static struct Damage battle_calc_mob_weapon_attack( if(atkmin > atkmax) atkmin = atkmax; - if(sc_data != NULL && sc_data[SC_MAXIMIZEPOWER].timer!=-1 ){ // マキシマイズパワー + if(sc_data != NULL && sc_data[SC_MAXIMIZEPOWER].timer!=-1 ){ // ソス}ソスLソスVソス}ソスCソスYソスpソスソスソス[ atkmin=atkmax; } @@ -1808,7 +1808,7 @@ 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 ) // 睡眠中はクリティカルが倍に + if(t_sc_data != NULL && t_sc_data[SC_SLEEP].timer!=-1 ) // ソスソスソスソスソスソスソスヘクソスソスソスeソスBソスJソスソスソスソスソス{ソスソス cri <<=1; if(ac_flag) cri = 1000; @@ -1823,8 +1823,8 @@ static struct Damage battle_calc_mob_weapon_attack( if(tsd && tsd->critical_def) cri = cri * (100 - tsd->critical_def) / 100; - if((skill_num == 0 || skill_num == KN_AUTOCOUNTER) && skill_lv >= 0 && battle_config.enemy_critical && (MRAND(1000)) < cri) // 判定(スキルの場合は無視) - // 敵の判定 + if((skill_num == 0 || skill_num == KN_AUTOCOUNTER) && skill_lv >= 0 && battle_config.enemy_critical && (MRAND(1000)) < cri) // ソスソスソスソスソスiソスXソスLソスソスソスフ場合ソスヘ厄ソスソスソスソスj + // ソスGソスフ費ソスソスソス { damage += atkmax; type = 0x0a; @@ -1836,19 +1836,19 @@ static struct Damage battle_calc_mob_weapon_attack( damage += atkmin + MRAND((atkmax-atkmin + 1)); else damage += atkmin ; - // スキル修正1(攻撃力倍化系) - // オーバートラスト(+5% 〜 +25%),他攻撃系スキルの場合ここで補正 - // バッシュ,マグナムブレイク, - // ボーリングバッシュ,スピアブーメラン,ブランディッシュスピア,スピアスタッブ, - // メマーナイト,カートレボリューション - // ダブルストレイフィング,アローシャワー,チャージアロー, - // ソニックブロー - if(sc_data){ //状態異常中のダメージ追加 - if(sc_data[SC_OVERTHRUST].timer!=-1) // オーバートラスト + // ソスXソスLソスソスソスCソスソスソスPソスiソスUソスソスソスヘ倍ソスソスソスnソスj + // ソスIソス[ソスoソス[ソスgソスソスソスXソスg(+5% ソス` +25%),ソスソスソスUソスソスソスnソスXソスLソスソスソスフ場合ソスソスソスソスソスナ補正 + // ソスoソスbソスVソスソス,ソス}ソスOソスiソスソスソスuソスソスソスCソスN, + // ソス{ソス[ソスソスソスソスソスOソスoソスbソスVソスソス,ソスXソスsソスAソスuソス[ソスソスソスソスソスソス,ソスuソスソスソスソスソスfソスBソスbソスVソスソスソスXソスsソスA,ソスXソスsソスAソスXソス^ソスbソスu, + // ソスソスソス}ソス[ソスiソスCソスg,ソスJソス[ソスgソスソスソス{ソスソスソスソスソス[ソスVソスソスソスソス + // ソス_ソスuソスソスソスXソスgソスソスソスCソスtソスBソスソスソスO,ソスAソスソスソス[ソスVソスソスソスソスソス[,ソス`ソスソスソス[ソスWソスAソスソスソス[, + // ソス\ソスjソスbソスNソスuソスソスソス[ + if(sc_data){ //ソスソスソスヤ異常中ソスフダソスソスソス[ソスWソスヌ会ソス + if(sc_data[SC_OVERTHRUST].timer!=-1) // ソスIソス[ソスoソス[ソスgソスソスソスXソスg damage += damage*(5*sc_data[SC_OVERTHRUST].val1)/100; - if(sc_data[SC_TRUESIGHT].timer!=-1) // トゥルーサイト + if(sc_data[SC_TRUESIGHT].timer!=-1) // ソスgソスDソスソスソス[ソスTソスCソスg damage += damage*(2*sc_data[SC_TRUESIGHT].val1)/100; - if(sc_data[SC_BERSERK].timer!=-1) // バーサーク + if(sc_data[SC_BERSERK].timer!=-1) // ソスoソス[ソスTソス[ソスN damage += damage*50/100; } @@ -1859,43 +1859,43 @@ static struct Damage battle_calc_mob_weapon_attack( flag=(flag&~BF_SKILLMASK)|BF_SKILL; switch( skill_num ){ - case SM_BASH: // バッシュ + case SM_BASH: // ソスoソスbソスVソスソス damage = damage*(100+ 30*skill_lv)/100; hitrate = (hitrate*(100+5*skill_lv))/100; break; - case SM_MAGNUM: // マグナムブレイク + case SM_MAGNUM: // ソス}ソスOソスiソスソスソスuソスソスソスCソスN damage = damage*(5*skill_lv +(wflag)?65:115 )/100; break; - case MC_MAMMONITE: // メマーナイト + case MC_MAMMONITE: // ソスソスソス}ソス[ソスiソスCソスg damage = damage*(100+ 50*skill_lv)/100; break; - case AC_DOUBLE: // ダブルストレイフィング + case AC_DOUBLE: // ソス_ソスuソスソスソスXソスgソスソスソスCソスtソスBソスソスソスO damage = damage*(180+ 20*skill_lv)/100; div_=2; flag=(flag&~BF_RANGEMASK)|BF_LONG; break; - case AC_SHOWER: // アローシャワー + case AC_SHOWER: // ソスAソスソスソス[ソスVソスソスソスソスソス[ damage = damage*(75 + 5*skill_lv)/100; flag=(flag&~BF_RANGEMASK)|BF_LONG; break; - case AC_CHARGEARROW: // チャージアロー + case AC_CHARGEARROW: // ソス`ソスソスソス[ソスWソスAソスソスソス[ damage = damage*150/100; flag=(flag&~BF_RANGEMASK)|BF_LONG; break; - case KN_PIERCE: // ピアース + case KN_PIERCE: // ソスsソスAソス[ソスX damage = damage*(100+ 10*skill_lv)/100; hitrate=hitrate*(100+5*skill_lv)/100; div_=t_size+1; damage*=div_; break; - case KN_SPEARSTAB: // スピアスタブ + case KN_SPEARSTAB: // ソスXソスsソスAソスXソス^ソスu damage = damage*(100+ 15*skill_lv)/100; break; - case KN_SPEARBOOMERANG: // スピアブーメラン + case KN_SPEARBOOMERANG: // ソスXソスsソスAソスuソス[ソスソスソスソスソスソス damage = damage*(100+ 50*skill_lv)/100; flag=(flag&~BF_RANGEMASK)|BF_LONG; break; - case KN_BRANDISHSPEAR: // ブランディッシュスピア + case KN_BRANDISHSPEAR: // ソスuソスソスソスソスソスfソスBソスbソスVソスソスソスXソスsソスA damage = damage*(100+ 20*skill_lv)/100; if(skill_lv>3 && wflag==1) damage2+=damage/2; if(skill_lv>6 && wflag==1) damage2+=damage/4; @@ -1906,7 +1906,7 @@ static struct Damage battle_calc_mob_weapon_attack( damage +=damage2; blewcount=0; break; - case KN_BOWLINGBASH: // ボウリングバッシュ + case KN_BOWLINGBASH: // ソス{ソスEソスソスソスソスソスOソスoソスbソスVソスソス damage = damage*(100+ 50*skill_lv)/100; blewcount=0; break; @@ -1917,25 +1917,25 @@ static struct Damage battle_calc_mob_weapon_attack( hitrate = 1000000; flag=(flag&~BF_SKILLMASK)|BF_NORMAL; break; - case AS_SONICBLOW: // ソニックブロウ + case AS_SONICBLOW: // ソス\ソスjソスbソスNソスuソスソスソスE damage = damage*(300+ 50*skill_lv)/100; div_=8; break; - case TF_SPRINKLESAND: // 砂まき + case TF_SPRINKLESAND: // ソスソスソスワゑソス damage = damage*125/100; break; - case MC_CARTREVOLUTION: // カートレボリューション + case MC_CARTREVOLUTION: // ソスJソス[ソスgソスソスソス{ソスソスソスソスソス[ソスVソスソスソスソス damage = (damage*150)/100; break; - // 以下MOB - case NPC_COMBOATTACK: // 多段攻撃 + // ソスネ会ソスMOB + case NPC_COMBOATTACK: // ソスソスソスiソスUソスソス div_=skill_get_num(skill_num,skill_lv); damage *= div_; break; - case NPC_RANDOMATTACK: // ランダムATK攻撃 + case NPC_RANDOMATTACK: // ソスソスソスソスソス_ソスソスATKソスUソスソス damage = damage*(MPRAND(50, 150))/100; break; - // 属性攻撃(適当) + // ソスソスソスソスソスUソスソスソスiソスKソスソスソスj case NPC_WATERATTACK: case NPC_GROUNDATTACK: case NPC_FIREATTACK: @@ -1955,115 +1955,115 @@ static struct Damage battle_calc_mob_weapon_attack( case NPC_PIERCINGATT: flag=(flag&~BF_RANGEMASK)|BF_SHORT; break; - case RG_BACKSTAP: // バックスタブ + case RG_BACKSTAP: // ソスoソスbソスNソスXソス^ソスu damage = damage*(300+ 40*skill_lv)/100; hitrate = 1000000; break; - case RG_RAID: // サプライズアタック + case RG_RAID: // ソスTソスvソスソスソスCソスYソスAソス^ソスbソスN damage = damage*(100+ 40*skill_lv)/100; break; - case RG_INTIMIDATE: // インティミデイト + case RG_INTIMIDATE: // ソスCソスソスソスeソスBソス~ソスfソスCソスg damage = damage*(100+ 30*skill_lv)/100; break; - case CR_SHIELDCHARGE: // シールドチャージ + case CR_SHIELDCHARGE: // ソスVソス[ソスソスソスhソス`ソスソスソス[ソスW damage = damage*(100+ 20*skill_lv)/100; flag=(flag&~BF_RANGEMASK)|BF_SHORT; s_ele = 0; break; - case CR_SHIELDBOOMERANG: // シールドブーメラン + case CR_SHIELDBOOMERANG: // ソスVソス[ソスソスソスhソスuソス[ソスソスソスソスソスソス damage = damage*(100+ 30*skill_lv)/100; flag=(flag&~BF_RANGEMASK)|BF_LONG; s_ele = 0; break; - case CR_HOLYCROSS: // ホーリークロス + case CR_HOLYCROSS: // ソスzソス[ソスソスソス[ソスNソスソスソスX damage = damage*(100+ 35*skill_lv)/100; div_=2; break; case CR_GRANDCROSS: hitrate= 1000000; break; - case AM_DEMONSTRATION: // デモンストレーション + case AM_DEMONSTRATION: // ソスfソスソスソスソスソスXソスgソスソスソス[ソスVソスソスソスソス damage = damage*(100+ 20*skill_lv)/100; damage2 = damage2*(100+ 20*skill_lv)/100; break; - case AM_ACIDTERROR: // アシッドテラー + case AM_ACIDTERROR: // ソスAソスVソスbソスhソスeソスソスソス[ damage = damage*(100+ 40*skill_lv)/100; damage2 = damage2*(100+ 40*skill_lv)/100; break; - case MO_FINGEROFFENSIVE: //指弾 + case MO_FINGEROFFENSIVE: //ソスwソスe damage = damage * (100 + 50 * skill_lv) / 100; div_ = 1; break; - case MO_INVESTIGATE: // 発 勁 + case MO_INVESTIGATE: // ソスソス ソスソス if(def1 < 1000000) damage = damage*(100+ 75*skill_lv)/100 * (def1 + def2)/100; hitrate = 1000000; s_ele = 0; break; - case MO_EXTREMITYFIST: // 阿修羅覇鳳拳 + case MO_EXTREMITYFIST: // ソスソスソスCソスソスソスeソスPソスソス damage = damage * 8 + 250 + (skill_lv * 150); hitrate = 1000000; s_ele = 0; break; - case MO_CHAINCOMBO: // 連打掌 + case MO_CHAINCOMBO: // ソスAソスナ擾ソス damage = damage*(150+ 50*skill_lv)/100; div_=4; break; - case BA_MUSICALSTRIKE: // ミュージカルストライク + case BA_MUSICALSTRIKE: // ソス~ソスソスソス[ソスWソスJソスソスソスXソスgソスソスソスCソスN damage = damage*(100+ 50 * skill_lv)/100; flag=(flag&~BF_RANGEMASK)|BF_LONG; break; - case DC_THROWARROW: // 矢撃ち + case DC_THROWARROW: // ソス撃ソスソス damage = damage*(100+ 50 * skill_lv)/100; flag=(flag&~BF_RANGEMASK)|BF_LONG; break; - case MO_COMBOFINISH: // 猛龍拳 + case MO_COMBOFINISH: // ソスメ暦ソスソスソス damage = damage*(240+ 60*skill_lv)/100; break; - case CH_TIGERFIST: // 伏虎拳 + case CH_TIGERFIST: // ソスソスソスユ鯉ソス damage = damage*(100+ 20*skill_lv)/100; break; - case CH_CHAINCRUSH: // 連柱崩撃 + case CH_CHAINCRUSH: // ソスAソスソスソスソスソスソス damage = damage*(100+ 20*skill_lv)/100; div_=skill_get_num(skill_num,skill_lv); break; - case CH_PALMSTRIKE: // 猛虎硬派山 + case CH_PALMSTRIKE: // ソスメ虎硬ソスhソスR damage = damage*(50+ 100*skill_lv)/100; break; - case LK_SPIRALPIERCE: /* スパイラルピアース */ - damage = damage*(100+ 50*skill_lv)/100; //増加量が分からないので適当に + case LK_SPIRALPIERCE: /* ソスXソスpソスCソスソスソスソスソスsソスAソス[ソスX */ + damage = damage*(100+ 50*skill_lv)/100; //ソスソスソスソスハゑソスソスソスソスソスソスソスソスネゑソスソスフで適ソスソスソスソス div_=5; if(tsd) tsd->canmove_tick = gettick() + 1000; else if(tmd) tmd->canmove_tick = gettick() + 1000; break; - case LK_HEADCRUSH: /* ヘッドクラッシュ */ + case LK_HEADCRUSH: /* ソスwソスbソスhソスNソスソスソスbソスVソスソス */ damage = damage*(100+ 20*skill_lv)/100; break; - case LK_JOINTBEAT: /* ジョイントビート */ + case LK_JOINTBEAT: /* ソスWソスソスソスCソスソスソスgソスrソス[ソスg */ damage = damage*(50+ 10*skill_lv)/100; break; - case ASC_METEORASSAULT: /* メテオアサルト */ + case ASC_METEORASSAULT: /* ソスソスソスeソスIソスAソスTソスソスソスg */ damage = damage*(40+ 40*skill_lv)/100; break; - case SN_SHARPSHOOTING: /* シャープシューティング */ + case SN_SHARPSHOOTING: /* ソスVソスソスソス[ソスvソスVソスソスソス[ソスeソスBソスソスソスO */ damage += damage*(30*skill_lv)/100; break; - case CG_ARROWVULCAN: /* アローバルカン */ + case CG_ARROWVULCAN: /* ソスAソスソスソス[ソスoソスソスソスJソスソス */ damage = damage*(160+40*skill_lv)/100; div_=9; break; - case AS_SPLASHER: /* ベナムスプラッシャー */ + case AS_SPLASHER: /* ソスxソスiソスソスソスXソスvソスソスソスbソスVソスソスソス[ */ damage = damage*(200+20*skill_lv)/100; break; } } if( skill_num!=NPC_CRITICALSLASH ){ - // 対 象の防御力によるダメージの減少 - // ディバインプロテクション(ここでいいのかな?) - if ( skill_num != MO_INVESTIGATE && skill_num != MO_EXTREMITYFIST && skill_num != KN_AUTOCOUNTER && def1 < 1000000) { //DEF, VIT無視 + // ソスソス ソスロの防ソスソスソスヘにゑソスソスソスソス_ソスソスソス[ソスWソスフ鯉ソスソスソス + // ソスfソスBソスoソスCソスソスソスvソスソスソスeソスNソスVソスソスソスソスソスiソスソスソスソスソスナゑソスソスソスソスフゑソスソスネ?ソスj + if ( skill_num != MO_INVESTIGATE && skill_num != MO_EXTREMITYFIST && skill_num != KN_AUTOCOUNTER && def1 < 1000000) { //DEF, VITソスソスソスソス int t_def; target_count = 1 + battle_counttargeted(target,src,battle_config.vit_penaly_count_lv); if(battle_config.vit_penaly_type > 0) { @@ -2099,16 +2099,16 @@ static struct Damage battle_calc_mob_weapon_attack( } } - // 0未満だった場合1に補正 + // 0ソスソスソスソスソスソスソスソスソスソス鼾1ソスノ補正 if(damage<1) damage=1; - // 回避修正 + // ソスソスソスソスソスCソスソス if(hitrate < 1000000) hitrate = ( (hitrate>95)?95: ((hitrate<5)?5:hitrate) ); - if( hitrate < 1000000 && // 必中攻撃 - (t_sc_data != NULL && (t_sc_data[SC_SLEEP].timer!=-1 || // 睡眠は必中 - t_sc_data[SC_STAN].timer!=-1 || // スタンは必中 - t_sc_data[SC_FREEZE].timer!=-1 || (t_sc_data[SC_STONE].timer!=-1 && t_sc_data[SC_STONE].val2==0) ) ) ) // 凍結は必中 + if( hitrate < 1000000 && // ソスKソスソスソスUソスソス + (t_sc_data != NULL && (t_sc_data[SC_SLEEP].timer!=-1 || // ソスソスソスソスソスヘ必ソスソス + t_sc_data[SC_STAN].timer!=-1 || // ソスXソス^ソスソスソスヘ必ソスソス + t_sc_data[SC_FREEZE].timer!=-1 || (t_sc_data[SC_STONE].timer!=-1 && t_sc_data[SC_STONE].val2==0) ) ) ) // ソスソスソスソスソスヘ必ソスソス hitrate = 1000000; if(type == 0 && MRAND(100) >= hitrate) { damage = damage2 = 0; @@ -2119,8 +2119,8 @@ static struct Damage battle_calc_mob_weapon_attack( if(tsd){ int cardfix=100,i; - cardfix=cardfix*(100-tsd->subele[s_ele])/100; // 属 性によるダメージ耐性 - cardfix=cardfix*(100-tsd->subrace[s_race])/100; // 種族によるダメージ耐性 + cardfix=cardfix*(100-tsd->subele[s_ele])/100; // ソスソス ソスソスソスノゑソスソスソスソス_ソスソスソス[ソスWソスマ撰ソス + cardfix=cardfix*(100-tsd->subrace[s_race])/100; // ソス族ソスノゑソスソスソスソス_ソスソスソス[ソスWソスマ撰ソス if(mob_db[md->class].mode & 0x20) cardfix=cardfix*(100-tsd->subrace[10])/100; else @@ -2144,7 +2144,7 @@ static struct Damage battle_calc_mob_weapon_attack( if(cardfix != 100) damage=damage*cardfix/100; } - if(t_sc_data && t_sc_data[SC_ASSUMPTIO].timer != -1){ //アシャンプティオ + if(t_sc_data && t_sc_data[SC_ASSUMPTIO].timer != -1){ //ソスAソスVソスソスソスソスソスvソスeソスBソスI if(!map[target->m].flag.pvp) damage=damage/3; else @@ -2153,19 +2153,19 @@ static struct Damage battle_calc_mob_weapon_attack( if(damage < 0) damage = 0; - // 属 性の適用 + // ソスソス ソスソスソスフ適ソスp if (!((battle_config.mob_ghostring_fix == 1) && (battle_get_element(target) == 8) && (target->type==BL_PC))) // [MouseJstr] if(skill_num != 0 || s_ele != 0 || !battle_config.mob_attack_attr_none) damage=battle_attr_fix(damage, s_ele, battle_get_element(target) ); - if(sc_data && sc_data[SC_AURABLADE].timer!=-1) /* オーラブレード 必中 */ + if(sc_data && sc_data[SC_AURABLADE].timer!=-1) /* ソスIソス[ソスソスソスuソスソスソス[ソスh ソスKソスソス */ damage += sc_data[SC_AURABLADE].val1 * 10; - if(skill_num==PA_PRESSURE) /* プレッシャー 必中? */ + if(skill_num==PA_PRESSURE) /* ソスvソスソスソスbソスVソスソスソス[ ソスKソスソス? */ damage = 700+100*skill_lv; - // インベナム修正 + // ソスCソスソスソスxソスiソスソスソスCソスソス if(skill_num==TF_POISON){ damage = battle_attr_fix(damage + 15*skill_lv, s_ele, battle_get_element(target) ); } @@ -2173,7 +2173,7 @@ static struct Damage battle_calc_mob_weapon_attack( damage = battle_attr_fix(damage, 0, battle_get_element(target) ); } - // 完全回避の判定 + // ソスソスソスSソスソスソスソスソスフ費ソスソスソス if(skill_num == 0 && skill_lv >= 0 && tsd!=NULL && MRAND(1000) < battle_get_flee2(target) ){ damage=0; type=0x0b; @@ -2213,7 +2213,7 @@ static struct Damage battle_calc_mob_weapon_attack( } /* * ========================================================================= - * PCの武器による攻撃 + * PCソスフ包ソスソスソスソスノゑソスソスソスソスUソスソス *------------------------------------------------------------------------- */ static struct Damage battle_calc_pc_weapon_attack( @@ -2233,81 +2233,81 @@ static struct Damage battle_calc_pc_weapon_attack( struct status_change *sc_data,*t_sc_data; short *sc_count; short *option, *opt1, *opt2; - int atkmax_=0, atkmin_=0, s_ele_; //二刀流用 + int atkmax_=0, atkmin_=0, s_ele_; //ソス刀暦ソスソスp int watk,watk_,cardfix,t_ele; int da=0,i,t_class,ac_flag = 0; int idef_flag=0,idef_flag_=0; - //return前の処理があるので情報出力部のみ変更 + //returnソスOソスフ擾ソスソスソスソスソスソスソスソスソスソスフで擾ソスソスソスソスoソスヘ包ソスソスフみ変更 if( src == NULL || target == NULL || sd == NULL ){ nullpo_info(NLP_MARK); memset(&wd,0,sizeof(wd)); return wd; } - // アタッカー - s_race=battle_get_race(src); //種族 - s_ele=battle_get_attack_element(src); //属性 - s_ele_=battle_get_attack_element2(src); //左手属性 - sc_data=battle_get_sc_data(src); //ステータス異常 - sc_count=battle_get_sc_count(src); //ステータス異常の数 - option=battle_get_option(src); //鷹とかペコとかカートとか - opt1=battle_get_opt1(src); //石化、凍結、スタン、睡眠、暗闇 - opt2=battle_get_opt2(src); //毒、呪い、沈黙、暗闇? - - if(skill_num != CR_GRANDCROSS) //グランドクロスでないなら - sd->state.attack_type = BF_WEAPON; //攻撃タイプは武器攻撃 - - // ターゲット - if(target->type==BL_PC) //対象がPCなら - tsd=(struct map_session_data *)target; //tsdに代入(tmdはNULL) - else if(target->type==BL_MOB) //対象がMobなら - tmd=(struct mob_data *)target; //tmdに代入(tsdはNULL) - t_race=battle_get_race( target ); //対象の種族 - t_ele=battle_get_elem_type(target); //対象の属性 - t_size=battle_get_size( target ); //対象のサイズ - t_mode=battle_get_mode( target ); //対象のMode - t_sc_data=battle_get_sc_data( target ); //対象のステータス異常 - -//オートカウンター処理ここから + // ソスAソス^ソスbソスJソス[ + s_race=battle_get_race(src); //ソス族 + s_ele=battle_get_attack_element(src); //ソスソスソスソス + s_ele_=battle_get_attack_element2(src); //ソスソスソス闡ョソスソス + sc_data=battle_get_sc_data(src); //ソスXソスeソス[ソス^ソスXソスル擾ソス + sc_count=battle_get_sc_count(src); //ソスXソスeソス[ソス^ソスXソスル擾ソスソスフ撰ソス + option=battle_get_option(src); //ソスソスソスニゑソスソスyソスRソスニゑソスソスJソス[ソスgソスニゑソス + opt1=battle_get_opt1(src); //ソスホ会ソスソスAソスソスソスソスソスAソスXソス^ソスソスソスAソスソスソスソスソスAソステ茨ソス + opt2=battle_get_opt2(src); //ソスナ、ソスい、ソスソスソスル、ソステ闇? + + if(skill_num != CR_GRANDCROSS) //ソスOソスソスソスソスソスhソスNソスソスソスXソスナなゑソスソスネゑソス + sd->state.attack_type = BF_WEAPON; //ソスUソスソスソス^ソスCソスvソスヘ包ソスソスソスソスUソスソス + + // ソス^ソス[ソスQソスbソスg + if(target->type==BL_PC) //ソスホ象ゑソスPCソスネゑソス + tsd=(struct map_session_data *)target; //tsdソスノ托ソスソスソス(tmdソスソスNULL) + else if(target->type==BL_MOB) //ソスホ象ゑソスMobソスネゑソス + tmd=(struct mob_data *)target; //tmdソスノ托ソスソスソス(tsdソスソスNULL) + t_race=battle_get_race( target ); //ソスホ象の種族 + t_ele=battle_get_elem_type(target); //ソスホ象の托ソスソスソス + t_size=battle_get_size( target ); //ソスホ象のサソスCソスY + t_mode=battle_get_mode( target ); //ソスホ象ゑソスMode + t_sc_data=battle_get_sc_data( target ); //ソスホ象のスソスeソス[ソス^ソスXソスル擾ソス + +//ソスIソス[ソスgソスJソスEソスソスソス^ソス[ソスソスソスソスソスソスソスソスソスソスソスソス if((skill_num == 0 || (target->type == BL_PC && battle_config.pc_auto_counter_type&2) || (target->type == BL_MOB && battle_config.monster_auto_counter_type&2)) && skill_lv >= 0) { - if(skill_num != CR_GRANDCROSS && t_sc_data && t_sc_data[SC_AUTOCOUNTER].timer != -1) { //グランドクロスでなく、対象がオートカウンター状態の場合 + if(skill_num != CR_GRANDCROSS && t_sc_data && t_sc_data[SC_AUTOCOUNTER].timer != -1) { //ソスOソスソスソスソスソスhソスNソスソスソスXソスナなゑソスソスAソスホ象ゑソスソスIソス[ソスgソスJソスEソスソスソス^ソス[ソスソスソスヤの場合 int dir = map_calc_dir(src,target->x,target->y),t_dir = battle_get_dir(target); int dist = distance(src->x,src->y,target->x,target->y); - if(dist <= 0 || map_check_dir(dir,t_dir) ) { //対象との距離が0以下、または対象の正面? + if(dist <= 0 || map_check_dir(dir,t_dir) ) { //ソスホ象との具ソスソスソスソスソス0ソスネ会ソスソスAソスワゑソスソスヘ対象の撰ソスソスハ? memset(&wd,0,sizeof(wd)); t_sc_data[SC_AUTOCOUNTER].val3 = 0; t_sc_data[SC_AUTOCOUNTER].val4 = 1; - if(sc_data && sc_data[SC_AUTOCOUNTER].timer == -1) { //自分がオートカウンター状態 + if(sc_data && sc_data[SC_AUTOCOUNTER].timer == -1) { //ソスソスソスソスソスソスソスIソス[ソスgソスJソスEソスソスソス^ソス[ソスソスソスソス int range = battle_get_range(target); - if((target->type == BL_PC && ((struct map_session_data *)target)->status.weapon != 11 && dist <= range+1) || //対象がPCで武器が弓矢でなく射程内 - (target->type == BL_MOB && range <= 3 && dist <= range+1) ) //または対象がMobで射程が3以下で射程内 + if((target->type == BL_PC && ((struct map_session_data *)target)->status.weapon != 11 && dist <= range+1) || //ソスホ象ゑソスPCソスナ包ソスソスがソス|ソスソスソスナなゑソスソスヒ抵ソスソスソス + (target->type == BL_MOB && range <= 3 && dist <= range+1) ) //ソスワゑソスソスヘ対象ゑソスMobソスナ射抵ソスソスソス3ソスネ会ソスソスナ射抵ソスソスソス t_sc_data[SC_AUTOCOUNTER].val3 = src->id; } - return wd; //ダメージ構造体を返して終了 + return wd; //ソス_ソスソスソス[ソスWソス\ソスソスソスフゑソスソスヤゑソスソスト終ソスソス } else ac_flag = 1; } } -//オートカウンター処理ここまで +//ソスIソス[ソスgソスJソスEソスソスソス^ソス[ソスソスソスソスソスソスソスソスソスワゑソス - flag=BF_SHORT|BF_WEAPON|BF_NORMAL; // 攻撃の種類の設定 + flag=BF_SHORT|BF_WEAPON|BF_NORMAL; // ソスUソスソスソスフ趣ソスソズの設抵ソス - // 回避率計算、回避判定は後で + // ソスソスソス率計ソスZソスAソスソスソス判抵ソスソスヘ鯉ソスソスソス flee = battle_get_flee(target); - if(battle_config.agi_penaly_type > 0 || battle_config.vit_penaly_type > 0) //AGI、VITペナルティ設定が有効 - target_count += battle_counttargeted(target,src,battle_config.agi_penaly_count_lv); //対象の数を算出 + if(battle_config.agi_penaly_type > 0 || battle_config.vit_penaly_type > 0) //AGIソスAVITソスyソスiソスソスソスeソスBソスン定がソスLソスソス + target_count += battle_counttargeted(target,src,battle_config.agi_penaly_count_lv); //ソスホ象の撰ソスソスソスソスZソスo if(battle_config.agi_penaly_type > 0) { - if(target_count >= battle_config.agi_penaly_count) { //ペナルティ設定より対象が多い - if(battle_config.agi_penaly_type == 1) //回避率がagi_penaly_num%ずつ減少 + if(target_count >= battle_config.agi_penaly_count) { //ソスyソスiソスソスソスeソスBソスン抵ソスソスソスソスソスソスホ象ゑソスソスソスソスソス + if(battle_config.agi_penaly_type == 1) //ソスソスソス率ゑソスagi_penaly_num%ソスソスソスツ鯉ソスソスソス flee = (flee * (100 - (target_count - (battle_config.agi_penaly_count - 1))*battle_config.agi_penaly_num))/100; - else if(battle_config.agi_penaly_type == 2) //回避率がagi_penaly_num分減少 + else if(battle_config.agi_penaly_type == 2) //ソスソスソス率ゑソスagi_penaly_numソスソスソスソスソスソス flee -= (target_count - (battle_config.agi_penaly_count - 1))*battle_config.agi_penaly_num; - if(flee < 1) flee = 1; //回避率は最低でも1 + if(flee < 1) flee = 1; //ソスソスソス率は最抵ソスソスナゑソス1 } } - hitrate=battle_get_hit(src) - flee + 80; //命中率計算 + hitrate=battle_get_hit(src) - flee + 80; //ソスソスソスソスソスソスソスvソスZ { // [Fate] Reduce hit chance by distance int dx = abs(src->x - target->x); int dy = abs(src->y - target->y); @@ -2321,31 +2321,31 @@ static struct Damage battle_calc_pc_weapon_attack( dex=battle_get_dex(src); //DEX luk=battle_get_luk(src); //LUK watk = battle_get_atk(src); //ATK - watk_ = battle_get_atk_(src); //ATK左手 + watk_ = battle_get_atk_(src); //ATKソスソスソスソス - if(skill_num==HW_MAGICCRASHER){ /* マジッククラッシャーはMATKで殴る */ - damage = damage2 = battle_get_matk1(src); //damega,damega2初登場、base_atkの取得 + if(skill_num==HW_MAGICCRASHER){ /* ソス}ソスWソスbソスNソスNソスソスソスbソスVソスソスソス[ソスソスMATKソスナ会ソスソスソス */ + damage = damage2 = battle_get_matk1(src); //damega,damega2ソスソスソスoソスソスソスAbase_atkソスフ取得 }else{ - damage = damage2 = battle_get_baseatk(&sd->bl); //damega,damega2初登場、base_atkの取得 + damage = damage2 = battle_get_baseatk(&sd->bl); //damega,damega2ソスソスソスoソスソスソスAbase_atkソスフ取得 } - atkmin = atkmin_ = dex; //最低ATKはDEXで初期化? - sd->state.arrow_atk = 0; //arrow_atk初期化 + atkmin = atkmin_ = dex; //ソスナ抵ソスATKソスソスDEXソスナ擾ソスソスソスソスソスソスH + sd->state.arrow_atk = 0; //arrow_atkソスソスソスソスソスソス if(sd->equip_index[9] >= 0 && sd->inventory_data[sd->equip_index[9]]) atkmin = atkmin*(80 + sd->inventory_data[sd->equip_index[9]]->wlv*20)/100; if(sd->equip_index[8] >= 0 && sd->inventory_data[sd->equip_index[8]]) atkmin_ = atkmin_*(80 + sd->inventory_data[sd->equip_index[8]]->wlv*20)/100; - if(sd->status.weapon == 11) { //武器が弓矢の場合 - atkmin = watk * ((atkminarrow_ele > 0) //属性矢なら属性を矢の属性に変更 + if(sd->status.weapon == 11) { //ソスソスソスがソス|ソスソスソスフ場合 + atkmin = watk * ((atkminarrow_ele > 0) //ソスソスソスソスソスソスソスネら属ソスソスソスソスソスソスソスフ托ソスソスソスソスノ変更 s_ele = sd->arrow_ele; - sd->state.arrow_atk = 1; //arrow_atk有効化 + sd->state.arrow_atk = 1; //arrow_atkソスLソスソスソスソス } - // サイズ修正 - // ペコ騎乗していて、槍で攻撃した場合は中型のサイズ修正を100にする - // ウェポンパーフェクション,ドレイクC - if(((sd->special_state.no_sizefix) || (pc_isriding(sd) && (sd->status.weapon==4 || sd->status.weapon==5) && t_size==1) || skill_num == MO_EXTREMITYFIST)){ //ペコ騎乗していて、槍で中型を攻撃 + // ソスTソスCソスYソスCソスソス + // ソスyソスRソスRソス謔オソストゑソスソスト、ソスソスソスナ攻ソスソスソスソスソスソスソス鼾ソスヘ抵ソスソス^ソスフサソスCソスYソスCソスソスソスソス100ソスノゑソスソスソス + // ソスEソスFソス|ソスソスソスpソス[ソスtソスFソスNソスVソスソスソスソス,ソスhソスソスソスCソスNC + if(((sd->special_state.no_sizefix) || (pc_isriding(sd) && (sd->status.weapon==4 || sd->status.weapon==5) && t_size==1) || skill_num == MO_EXTREMITYFIST)){ //ソスyソスRソスRソス謔オソストゑソスソスト、ソスソスソスナ抵ソスソス^ソスソスソスUソスソス atkmax = watk; atkmax_ = watk_; } else { @@ -2354,26 +2354,26 @@ static struct Damage battle_calc_pc_weapon_attack( atkmax_ = (watk_ * sd->atkmods_[ t_size ]) / 100; atkmin_ = (atkmin_ * sd->atkmods[ t_size ]) / 100; } - if( (sc_data != NULL && sc_data[SC_WEAPONPERFECTION].timer!=-1) || (sd->special_state.no_sizefix)) { // ウェポンパーフェクション || ドレイクカード + if( (sc_data != NULL && sc_data[SC_WEAPONPERFECTION].timer!=-1) || (sd->special_state.no_sizefix)) { // ソスEソスFソス|ソスソスソスpソス[ソスtソスFソスNソスVソスソスソスソス || ソスhソスソスソスCソスNソスJソス[ソスh atkmax = watk; atkmax_ = watk_; } - if(atkmin > atkmax && !(sd->state.arrow_atk)) atkmin = atkmax; //弓は最低が上回る場合あり + if(atkmin > atkmax && !(sd->state.arrow_atk)) atkmin = atkmax; //ソス|ソスヘ最低がソスソスソスソスソスソスソス鼾ソスソスソスソス if(atkmin_ > atkmax_) atkmin_ = atkmax_; - if(sc_data != NULL && sc_data[SC_MAXIMIZEPOWER].timer!=-1 ){ // マキシマイズパワー + if(sc_data != NULL && sc_data[SC_MAXIMIZEPOWER].timer!=-1 ){ // ソス}ソスLソスVソス}ソスCソスYソスpソスソスソス[ atkmin=atkmax; atkmin_=atkmax_; } - //ダブルアタック判定 + //ソス_ソスuソスソスソスAソス^ソスbソスNソスソスソスソス if(sd->weapontype1 == 0x01) { if(skill_num == 0 && skill_lv >= 0 && (skill = pc_checkskill(sd,TF_DOUBLE)) > 0) da = (MRAND(100) < (skill*5)) ? 1:0; } - //三段掌 + //ソスOソスiソスソス if(skill_num == 0 && skill_lv >= 0 && (skill = pc_checkskill(sd,MO_TRIPLEATTACK)) > 0 && sd->status.weapon <= 16 && !sd->state.arrow_atk) { da = (MRAND(100) < (30 - skill)) ? 2:0; } @@ -2381,23 +2381,23 @@ static struct Damage battle_calc_pc_weapon_attack( if(sd->double_rate > 0 && da == 0 && skill_num == 0 && skill_lv >= 0) da = (MRAND(100) < sd->double_rate) ? 1:0; - // 過剰精錬ボーナス + // ソス゚剰精ソスBソス{ソス[ソスiソスX if(sd->overrefine>0 ) damage+=MPRAND(1, sd->overrefine); if(sd->overrefine_>0 ) damage2+=MPRAND(1, sd->overrefine_); - if(da == 0){ //ダブルアタックが発動していない - // クリティカル計算 + if(da == 0){ //ソス_ソスuソスソスソスAソス^ソスbソスNソスソスソスソスソスソスソスソスソストゑソスソスネゑソス + // ソスNソスソスソスeソスBソスJソスソスソスvソスZ cri = battle_get_critical(src); if(sd->state.arrow_atk) cri += sd->arrow_cri; if(sd->status.weapon == 16) - // カタールの場合、クリティカルを倍に + // ソスJソス^ソス[ソスソスソスフ場合ソスAソスNソスソスソスeソスBソスJソスソスソスソスソス{ソスソス cri <<=1; cri -= battle_get_luk(target) * 3; - if(t_sc_data != NULL && t_sc_data[SC_SLEEP].timer!=-1 ) // 睡眠中はクリティカルが倍に + if(t_sc_data != NULL && t_sc_data[SC_SLEEP].timer!=-1 ) // ソスソスソスソスソスソスソスヘクソスソスソスeソスBソスJソスソスソスソスソス{ソスソス cri <<=1; if(ac_flag) cri = 1000; @@ -2415,8 +2415,8 @@ static struct Damage battle_calc_pc_weapon_attack( if(tsd && tsd->critical_def) cri = cri * (100-tsd->critical_def) / 100; - if(da == 0 && (skill_num==0 || skill_num == KN_AUTOCOUNTER || skill_num == SN_SHARPSHOOTING) && skill_lv >= 0 && //ダブルアタックが発動していない - (MRAND(1000)) < cri) // 判定(スキルの場合は無視) + if(da == 0 && (skill_num==0 || skill_num == KN_AUTOCOUNTER || skill_num == SN_SHARPSHOOTING) && skill_lv >= 0 && //ソス_ソスuソスソスソスAソス^ソスbソスNソスソスソスソスソスソスソスソスソストゑソスソスネゑソス + (MRAND(1000)) < cri) // ソスソスソスソスソスiソスXソスLソスソスソスフ場合ソスヘ厄ソスソスソスソスj { damage += atkmax; damage2 += atkmax_; @@ -2512,23 +2512,23 @@ static struct Damage battle_calc_pc_weapon_attack( } } - // スキル修正1(攻撃力倍化系) - // オーバートラスト(+5% 〜 +25%),他攻撃系スキルの場合ここで補正 - // バッシュ,マグナムブレイク, - // ボーリングバッシュ,スピアブーメラン,ブランディッシュスピア,スピアスタッブ, - // メマーナイト,カートレボリューション - // ダブルストレイフィング,アローシャワー,チャージアロー, - // ソニックブロー - if(sc_data){ //状態異常中のダメージ追加 - if(sc_data[SC_OVERTHRUST].timer!=-1){ // オーバートラスト + // ソスXソスLソスソスソスCソスソスソスPソスiソスUソスソスソスヘ倍ソスソスソスnソスj + // ソスIソス[ソスoソス[ソスgソスソスソスXソスg(+5% ソス` +25%),ソスソスソスUソスソスソスnソスXソスLソスソスソスフ場合ソスソスソスソスソスナ補正 + // ソスoソスbソスVソスソス,ソス}ソスOソスiソスソスソスuソスソスソスCソスN, + // ソス{ソス[ソスソスソスソスソスOソスoソスbソスVソスソス,ソスXソスsソスAソスuソス[ソスソスソスソスソスソス,ソスuソスソスソスソスソスfソスBソスbソスVソスソスソスXソスsソスA,ソスXソスsソスAソスXソス^ソスbソスu, + // ソスソスソス}ソス[ソスiソスCソスg,ソスJソス[ソスgソスソスソス{ソスソスソスソスソス[ソスVソスソスソスソス + // ソス_ソスuソスソスソスXソスgソスソスソスCソスtソスBソスソスソスO,ソスAソスソスソス[ソスVソスソスソスソスソス[,ソス`ソスソスソス[ソスWソスAソスソスソス[, + // ソス\ソスjソスbソスNソスuソスソスソス[ + if(sc_data){ //ソスソスソスヤ異常中ソスフダソスソスソス[ソスWソスヌ会ソス + if(sc_data[SC_OVERTHRUST].timer!=-1){ // ソスIソス[ソスoソス[ソスgソスソスソスXソスg damage += damage*(5*sc_data[SC_OVERTHRUST].val1)/100; damage2 += damage2*(5*sc_data[SC_OVERTHRUST].val1)/100; } - if(sc_data[SC_TRUESIGHT].timer!=-1){ // トゥルーサイト + if(sc_data[SC_TRUESIGHT].timer!=-1){ // ソスgソスDソスソスソス[ソスTソスCソスg damage += damage*(2*sc_data[SC_TRUESIGHT].val1)/100; damage2 += damage2*(2*sc_data[SC_TRUESIGHT].val1)/100; } - if(sc_data[SC_BERSERK].timer!=-1){ // バーサーク + if(sc_data[SC_BERSERK].timer!=-1){ // ソスoソス[ソスTソス[ソスN damage += damage*50/100; damage2 += damage2*50/100; } @@ -2541,20 +2541,20 @@ static struct Damage battle_calc_pc_weapon_attack( flag=(flag&~BF_SKILLMASK)|BF_SKILL; switch( skill_num ){ - case SM_BASH: // バッシュ + case SM_BASH: // ソスoソスbソスVソスソス damage = damage*(100+ 30*skill_lv)/100; damage2 = damage2*(100+ 30*skill_lv)/100; hitrate = (hitrate*(100+5*skill_lv))/100; break; - case SM_MAGNUM: // マグナムブレイク + case SM_MAGNUM: // ソス}ソスOソスiソスソスソスuソスソスソスCソスN damage = damage*(5*skill_lv +(wflag)?65:115 )/100; damage2 = damage2*(5*skill_lv +(wflag)?65:115 )/100; break; - case MC_MAMMONITE: // メマーナイト + case MC_MAMMONITE: // ソスソスソス}ソス[ソスiソスCソスg damage = damage*(100+ 50*skill_lv)/100; damage2 = damage2*(100+ 50*skill_lv)/100; break; - case AC_DOUBLE: // ダブルストレイフィング + case AC_DOUBLE: // ソス_ソスuソスソスソスXソスgソスソスソスCソスtソスBソスソスソスO if(!sd->state.arrow_atk && sd->arrow_atk > 0) { int arr = MRAND((sd->arrow_atk+1)); damage += arr; @@ -2570,7 +2570,7 @@ static struct Damage battle_calc_pc_weapon_attack( flag=(flag&~BF_RANGEMASK)|BF_LONG; sd->state.arrow_atk = 1; break; - case AC_SHOWER: // アローシャワー + case AC_SHOWER: // ソスAソスソスソス[ソスVソスソスソスソスソス[ if(!sd->state.arrow_atk && sd->arrow_atk > 0) { int arr = MRAND((sd->arrow_atk+1)); damage += arr; @@ -2585,7 +2585,7 @@ static struct Damage battle_calc_pc_weapon_attack( flag=(flag&~BF_RANGEMASK)|BF_LONG; sd->state.arrow_atk = 1; break; - case AC_CHARGEARROW: // チャージアロー + case AC_CHARGEARROW: // ソス`ソスソスソス[ソスWソスAソスソスソス[ if(!sd->state.arrow_atk && sd->arrow_atk > 0) { int arr = MRAND((sd->arrow_atk+1)); damage += arr; @@ -2600,7 +2600,7 @@ static struct Damage battle_calc_pc_weapon_attack( flag=(flag&~BF_RANGEMASK)|BF_LONG; sd->state.arrow_atk = 1; break; - case KN_PIERCE: // ピアース + case KN_PIERCE: // ソスsソスAソス[ソスX damage = damage*(100+ 10*skill_lv)/100; damage2 = damage2*(100+ 10*skill_lv)/100; hitrate=hitrate*(100+5*skill_lv)/100; @@ -2608,16 +2608,16 @@ static struct Damage battle_calc_pc_weapon_attack( damage*=div_; damage2*=div_; break; - case KN_SPEARSTAB: // スピアスタブ + case KN_SPEARSTAB: // ソスXソスsソスAソスXソス^ソスu damage = damage*(100+ 15*skill_lv)/100; damage2 = damage2*(100+ 15*skill_lv)/100; break; - case KN_SPEARBOOMERANG: // スピアブーメラン + case KN_SPEARBOOMERANG: // ソスXソスsソスAソスuソス[ソスソスソスソスソスソス damage = damage*(100+ 50*skill_lv)/100; damage2 = damage2*(100+ 50*skill_lv)/100; flag=(flag&~BF_RANGEMASK)|BF_LONG; break; - case KN_BRANDISHSPEAR: // ブランディッシュスピア + case KN_BRANDISHSPEAR: // ソスuソスソスソスソスソスfソスBソスbソスVソスソスソスXソスsソスA damage = damage*(100+ 20*skill_lv)/100; damage2 = damage2*(100+ 20*skill_lv)/100; if(skill_lv>3 && wflag==1) damage3+=damage/2; @@ -2636,7 +2636,7 @@ static struct Damage battle_calc_pc_weapon_attack( damage2 +=damage4; blewcount=0; break; - case KN_BOWLINGBASH: // ボウリングバッシュ + case KN_BOWLINGBASH: // ソス{ソスEソスソスソスソスソスOソスoソスbソスVソスソス damage = damage*(100+ 50*skill_lv)/100; damage2 = damage2*(100+ 50*skill_lv)/100; blewcount=0; @@ -2648,17 +2648,17 @@ static struct Damage battle_calc_pc_weapon_attack( hitrate = 1000000; flag=(flag&~BF_SKILLMASK)|BF_NORMAL; break; - case AS_SONICBLOW: // ソニックブロウ + case AS_SONICBLOW: // ソス\ソスjソスbソスNソスuソスソスソスE hitrate+=30; // hitrate +30, thanks to midas damage = damage*(300+ 50*skill_lv)/100; damage2 = damage2*(300+ 50*skill_lv)/100; div_=8; break; - case TF_SPRINKLESAND: // 砂まき + case TF_SPRINKLESAND: // ソスソスソスワゑソス damage = damage*125/100; damage2 = damage2*125/100; break; - case MC_CARTREVOLUTION: // カートレボリューション + case MC_CARTREVOLUTION: // ソスJソス[ソスgソスソスソス{ソスソスソスソスソス[ソスVソスソスソスソス if(sd->cart_max_weight > 0 && sd->cart_weight > 0) { damage = (damage*(150 + pc_checkskill(sd,BS_WEAPONRESEARCH) + (sd->cart_weight*100/sd->cart_max_weight) ) )/100; damage2 = (damage2*(150 + pc_checkskill(sd,BS_WEAPONRESEARCH) + (sd->cart_weight*100/sd->cart_max_weight) ) )/100; @@ -2668,17 +2668,17 @@ static struct Damage battle_calc_pc_weapon_attack( damage2 = (damage2*150)/100; } break; - // 以下MOB - case NPC_COMBOATTACK: // 多段攻撃 + // ソスネ会ソスMOB + case NPC_COMBOATTACK: // ソスソスソスiソスUソスソス div_=skill_get_num(skill_num,skill_lv); damage *= div_; damage2 *= div_; break; - case NPC_RANDOMATTACK: // ランダムATK攻撃 + case NPC_RANDOMATTACK: // ソスソスソスソスソス_ソスソスATKソスUソスソス damage = damage*(MPRAND(50, 150))/100; damage2 = damage2*(MPRAND(50, 150))/100; break; - // 属性攻撃(適当) + // ソスソスソスソスソスUソスソスソスiソスKソスソスソスj case NPC_WATERATTACK: case NPC_GROUNDATTACK: case NPC_FIREATTACK: @@ -2699,7 +2699,7 @@ static struct Damage battle_calc_pc_weapon_attack( case NPC_PIERCINGATT: flag=(flag&~BF_RANGEMASK)|BF_SHORT; break; - case RG_BACKSTAP: // バックスタブ + case RG_BACKSTAP: // ソスoソスbソスNソスXソス^ソスu if(battle_config.backstab_bow_penalty == 1 && sd->status.weapon == 11){ damage = (damage*(300+ 40*skill_lv)/100)/2; damage2 = (damage2*(300+ 40*skill_lv)/100)/2; @@ -2709,27 +2709,27 @@ static struct Damage battle_calc_pc_weapon_attack( } hitrate = 1000000; break; - case RG_RAID: // サプライズアタック + case RG_RAID: // ソスTソスvソスソスソスCソスYソスAソス^ソスbソスN damage = damage*(100+ 40*skill_lv)/100; damage2 = damage2*(100+ 40*skill_lv)/100; break; - case RG_INTIMIDATE: // インティミデイト + case RG_INTIMIDATE: // ソスCソスソスソスeソスBソス~ソスfソスCソスg damage = damage*(100+ 30*skill_lv)/100; damage2 = damage2*(100+ 30*skill_lv)/100; break; - case CR_SHIELDCHARGE: // シールドチャージ + case CR_SHIELDCHARGE: // ソスVソス[ソスソスソスhソス`ソスソスソス[ソスW damage = damage*(100+ 20*skill_lv)/100; damage2 = damage2*(100+ 20*skill_lv)/100; flag=(flag&~BF_RANGEMASK)|BF_SHORT; s_ele = 0; break; - case CR_SHIELDBOOMERANG: // シールドブーメラン + case CR_SHIELDBOOMERANG: // ソスVソス[ソスソスソスhソスuソス[ソスソスソスソスソスソス damage = damage*(100+ 30*skill_lv)/100; damage2 = damage2*(100+ 30*skill_lv)/100; flag=(flag&~BF_RANGEMASK)|BF_LONG; s_ele = 0; break; - case CR_HOLYCROSS: // ホーリークロス + case CR_HOLYCROSS: // ソスzソス[ソスソスソス[ソスNソスソスソスX damage = damage*(100+ 35*skill_lv)/100; damage2 = damage2*(100+ 35*skill_lv)/100; div_=2; @@ -2737,15 +2737,15 @@ static struct Damage battle_calc_pc_weapon_attack( case CR_GRANDCROSS: hitrate= 1000000; break; - case AM_DEMONSTRATION: // デモンストレーション + case AM_DEMONSTRATION: // ソスfソスソスソスソスソスXソスgソスソスソス[ソスVソスソスソスソス damage = damage*(100+ 20*skill_lv)/100; damage2 = damage2*(100+ 20*skill_lv)/100; break; - case AM_ACIDTERROR: // アシッドテラー + case AM_ACIDTERROR: // ソスAソスVソスbソスhソスeソスソスソス[ damage = damage*(100+ 40*skill_lv)/100; damage2 = damage2*(100+ 40*skill_lv)/100; break; - case MO_FINGEROFFENSIVE: //指弾 + case MO_FINGEROFFENSIVE: //ソスwソスe if(battle_config.finger_offensive_type == 0) { damage = damage * (100 + 50 * skill_lv) / 100 * sd->spiritball_old; damage2 = damage2 * (100 + 50 * skill_lv) / 100 * sd->spiritball_old; @@ -2757,7 +2757,7 @@ static struct Damage battle_calc_pc_weapon_attack( div_ = 1; } break; - case MO_INVESTIGATE: // 発 勁 + case MO_INVESTIGATE: // ソスソス ソスソス if(def1 < 1000000) { damage = damage*(100+ 75*skill_lv)/100 * (def1 + def2)/100; damage2 = damage2*(100+ 75*skill_lv)/100 * (def1 + def2)/100; @@ -2766,7 +2766,7 @@ static struct Damage battle_calc_pc_weapon_attack( s_ele = 0; s_ele_ = 0; break; - case MO_EXTREMITYFIST: // 阿修羅覇鳳拳 + case MO_EXTREMITYFIST: // ソスソスソスCソスソスソスeソスPソスソス damage = damage * (8 + ((sd->status.sp)/10)) + 250 + (skill_lv * 150); damage2 = damage2 * (8 + ((sd->status.sp)/10)) + 250 + (skill_lv * 150); sd->status.sp = 0; @@ -2775,16 +2775,16 @@ static struct Damage battle_calc_pc_weapon_attack( s_ele = 0; s_ele_ = 0; break; - case MO_CHAINCOMBO: // 連打掌 + case MO_CHAINCOMBO: // ソスAソスナ擾ソス damage = damage*(150+ 50*skill_lv)/100; damage2 = damage2*(150+ 50*skill_lv)/100; div_=4; break; - case MO_COMBOFINISH: // 猛龍拳 + case MO_COMBOFINISH: // ソスメ暦ソスソスソス damage = damage*(240+ 60*skill_lv)/100; damage2 = damage2*(240+ 60*skill_lv)/100; break; - case BA_MUSICALSTRIKE: // ミュージカルストライク + case BA_MUSICALSTRIKE: // ソス~ソスソスソス[ソスWソスJソスソスソスXソスgソスソスソスCソスN if(!sd->state.arrow_atk && sd->arrow_atk > 0) { int arr = MRAND((sd->arrow_atk+1)); damage += arr; @@ -2799,7 +2799,7 @@ static struct Damage battle_calc_pc_weapon_attack( flag=(flag&~BF_RANGEMASK)|BF_LONG; sd->state.arrow_atk = 1; break; - case DC_THROWARROW: // 矢撃ち + case DC_THROWARROW: // ソス撃ソスソス if(!sd->state.arrow_atk && sd->arrow_atk > 0) { int arr = MRAND((sd->arrow_atk+1)); damage += arr; @@ -2814,50 +2814,50 @@ static struct Damage battle_calc_pc_weapon_attack( flag=(flag&~BF_RANGEMASK)|BF_LONG; sd->state.arrow_atk = 1; break; - case CH_TIGERFIST: // 伏虎拳 + case CH_TIGERFIST: // ソスソスソスユ鯉ソス damage = damage*(100+ 20*skill_lv)/100; damage2 = damage2*(100+ 20*skill_lv)/100; break; - case CH_CHAINCRUSH: // 連柱崩撃 + case CH_CHAINCRUSH: // ソスAソスソスソスソスソスソス damage = damage*(100+ 20*skill_lv)/100; damage2 = damage2*(100+ 20*skill_lv)/100; div_=skill_get_num(skill_num,skill_lv); break; - case CH_PALMSTRIKE: // 猛虎硬派山 + case CH_PALMSTRIKE: // ソスメ虎硬ソスhソスR damage = damage*(50+ 100*skill_lv)/100; damage2 = damage2*(50+ 100*skill_lv)/100; break; - case LK_SPIRALPIERCE: /* スパイラルピアース */ - damage = damage*(100+ 50*skill_lv)/100; //増加量が分からないので適当に - damage2 = damage2*(100+ 50*skill_lv)/100; //増加量が分からないので適当に + case LK_SPIRALPIERCE: /* ソスXソスpソスCソスソスソスソスソスsソスAソス[ソスX */ + damage = damage*(100+ 50*skill_lv)/100; //ソスソスソスソスハゑソスソスソスソスソスソスソスソスネゑソスソスフで適ソスソスソスソス + damage2 = damage2*(100+ 50*skill_lv)/100; //ソスソスソスソスハゑソスソスソスソスソスソスソスソスネゑソスソスフで適ソスソスソスソス div_=5; if(tsd) tsd->canmove_tick = gettick() + 1000; else if(tmd) tmd->canmove_tick = gettick() + 1000; break; - case LK_HEADCRUSH: /* ヘッドクラッシュ */ + case LK_HEADCRUSH: /* ソスwソスbソスhソスNソスソスソスbソスVソスソス */ damage = damage*(100+ 20*skill_lv)/100; damage2 = damage2*(100+ 20*skill_lv)/100; break; - case LK_JOINTBEAT: /* ジョイントビート */ + case LK_JOINTBEAT: /* ソスWソスソスソスCソスソスソスgソスrソス[ソスg */ damage = damage*(50+ 10*skill_lv)/100; damage2 = damage2*(50+ 10*skill_lv)/100; break; - case ASC_METEORASSAULT: /* メテオアサルト */ + case ASC_METEORASSAULT: /* ソスソスソスeソスIソスAソスTソスソスソスg */ damage = damage*(40+ 40*skill_lv)/100; damage2 = damage2*(40+ 40*skill_lv)/100; break; - case SN_SHARPSHOOTING: /* シャープシューティング */ + case SN_SHARPSHOOTING: /* ソスVソスソスソス[ソスvソスVソスソスソス[ソスeソスBソスソスソスO */ damage += damage*(30*skill_lv)/100; damage2 += damage2*(30*skill_lv)/100; break; - case CG_ARROWVULCAN: /* アローバルカン */ + case CG_ARROWVULCAN: /* ソスAソスソスソス[ソスoソスソスソスJソスソス */ damage = damage*(160+40*skill_lv)/100; damage2 = damage2*(160+40*skill_lv)/100; div_=9; break; - case AS_SPLASHER: /* ベナムスプラッシャー */ + case AS_SPLASHER: /* ソスxソスiソスソスソスXソスvソスソスソスbソスVソスソスソス[ */ damage = damage*(200+20*skill_lv+20*pc_checkskill(sd,AS_POISONREACT))/100; damage2 = damage2*(200+20*skill_lv+20*pc_checkskill(sd,AS_POISONREACT))/100; break; @@ -2910,16 +2910,16 @@ static struct Damage battle_calc_pc_weapon_attack( break; } } - if(da == 2) { //三段掌が発動しているか + if(da == 2) { //ソスOソスiソスソスソスソスソスソスソスソスソスソスソストゑソスソス驍ゥ type = 0x08; - div_ = 255; //三段掌用に… + div_ = 255; //ソスOソスiソスソスソスpソスノ… damage = damage * (100 + 20 * pc_checkskill(sd, MO_TRIPLEATTACK)) / 100; } if( skill_num!=NPC_CRITICALSLASH ){ - // 対 象の防御力によるダメージの減少 - // ディバインプロテクション(ここでいいのかな?) - if ( skill_num != MO_INVESTIGATE && skill_num != MO_EXTREMITYFIST && skill_num != KN_AUTOCOUNTER && def1 < 1000000) { //DEF, VIT無視 + // ソスソス ソスロの防ソスソスソスヘにゑソスソスソスソス_ソスソスソス[ソスWソスフ鯉ソスソスソス + // ソスfソスBソスoソスCソスソスソスvソスソスソスeソスNソスVソスソスソスソスソスiソスソスソスソスソスナゑソスソスソスソスフゑソスソスネ?ソスj + if ( skill_num != MO_INVESTIGATE && skill_num != MO_EXTREMITYFIST && skill_num != KN_AUTOCOUNTER && def1 < 1000000) { //DEF, VITソスソスソスソス int t_def; target_count = 1 + battle_counttargeted(target,src,battle_config.vit_penaly_count_lv); if(battle_config.vit_penaly_type > 0) { @@ -2977,8 +2977,8 @@ static struct Damage battle_calc_pc_weapon_attack( } } } - // 精錬ダメージの追加 - if( skill_num != MO_INVESTIGATE && skill_num != MO_EXTREMITYFIST) { //DEF, VIT無視 + // ソスソスソスBソス_ソスソスソス[ソスWソスフ追会ソス + if( skill_num != MO_INVESTIGATE && skill_num != MO_EXTREMITYFIST) { //DEF, VITソスソスソスソス damage += battle_get_atk2(src); damage2 += battle_get_atk_2(src); } @@ -2991,8 +2991,8 @@ static struct Damage battle_calc_pc_weapon_attack( } } } - if(skill_num == LK_SPIRALPIERCE) { /* スパイラルピアース */ - if(sd->equip_index[9] >= 0) { //重量で追加ダメージらしいのでシールドブーメランを参考に追加 + if(skill_num == LK_SPIRALPIERCE) { /* ソスXソスpソスCソスソスソスソスソスsソスAソス[ソスX */ + if(sd->equip_index[9] >= 0) { //ソスdソスハで追会ソス_ソスソスソス[ソスWソス轤オソスソスソスフでシソス[ソスソスソスhソスuソス[ソスソスソスソスソスソスソスソスソスQソスlソスノ追会ソス int index = sd->equip_index[9]; if(sd->inventory_data[index] && sd->inventory_data[index]->type == 4) { damage += (int)(double)(sd->inventory_data[index]->weight*(0.8*skill_lv*4/10)); @@ -3001,13 +3001,13 @@ static struct Damage battle_calc_pc_weapon_attack( } } - // 0未満だった場合1に補正 + // 0ソスソスソスソスソスソスソスソスソスソス鼾1ソスノ補正 if(damage<1) damage=1; if(damage2<1) damage2=1; - // スキル修正2(修練系) - // 修練ダメージ(右手のみ) ソニックブロー時は別処理(1撃に付き1/8適応) - if( skill_num != MO_INVESTIGATE && skill_num != MO_EXTREMITYFIST && skill_num != CR_GRANDCROSS) { //修練ダメージ無視 + // ソスXソスLソスソスソスCソスソスソスQソスiソスCソスソスソスnソスj + // ソスCソスソスソス_ソスソスソス[ソスW(ソスEソスソスソスフゑソス) ソス\ソスjソスbソスNソスuソスソスソス[ソスソスソスヘ別擾ソスソスソスソスi1ソスソスソスノ付ソスソス1/8ソスKソスソス) + if( skill_num != MO_INVESTIGATE && skill_num != MO_EXTREMITYFIST && skill_num != CR_GRANDCROSS) { //ソスCソスソスソス_ソスソスソス[ソスWソスソスソスソス damage = battle_addmastery(sd,target,damage,0); damage2 = battle_addmastery(sd,target,damage2,1); } @@ -3017,12 +3017,12 @@ static struct Damage battle_calc_pc_weapon_attack( hitrate = 1000000; } - // 回避修正 + // ソスソスソスソスソスCソスソス hitrate = (hitrate<5)?5:hitrate; - if( hitrate < 1000000 && // 必中攻撃 - (t_sc_data != NULL && (t_sc_data[SC_SLEEP].timer!=-1 || // 睡眠は必中 - t_sc_data[SC_STAN].timer!=-1 || // スタンは必中 - t_sc_data[SC_FREEZE].timer!=-1 || (t_sc_data[SC_STONE].timer!=-1 && t_sc_data[SC_STONE].val2==0) ) ) ) // 凍結は必中 + if( hitrate < 1000000 && // ソスKソスソスソスUソスソス + (t_sc_data != NULL && (t_sc_data[SC_SLEEP].timer!=-1 || // ソスソスソスソスソスヘ必ソスソス + t_sc_data[SC_STAN].timer!=-1 || // ソスXソス^ソスソスソスヘ必ソスソス + t_sc_data[SC_FREEZE].timer!=-1 || (t_sc_data[SC_STONE].timer!=-1 && t_sc_data[SC_STONE].val2==0) ) ) ) // ソスソスソスソスソスヘ必ソスソス hitrate = 1000000; if(type == 0 && MRAND(100) >= hitrate) { damage = damage2 = 0; @@ -3030,7 +3030,7 @@ static struct Damage battle_calc_pc_weapon_attack( } else { dmg_lv = ATK_DEF; } - // スキル修正3(武器研究) + // ソスXソスLソスソスソスCソスソスソスRソスiソスソスソス研ソスソスソスj if( (skill=pc_checkskill(sd,BS_WEAPONRESEARCH)) > 0) { damage+= skill*2; damage2+= skill*2; @@ -3042,48 +3042,48 @@ static struct Damage battle_calc_pc_weapon_attack( } } -//スキルによるダメージ補正ここまで +//ソスXソスLソスソスソスノゑソスソスソスソス_ソスソスソス[ソスWソス竦ウソスソスソスソスソスワゑソス -//カードによるダメージ追加処理ここから +//ソスJソス[ソスhソスノゑソスソスソスソス_ソスソスソス[ソスWソスヌ会ソスソスソスソスソスソスソスソスソスソスソスソス cardfix=100; - if(!sd->state.arrow_atk) { //弓矢以外 - if(!battle_config.left_cardfix_to_right) { //左手カード補正設定無し - cardfix=cardfix*(100+sd->addrace[t_race])/100; // 種族によるダメージ修正 - cardfix=cardfix*(100+sd->addele[t_ele])/100; // 属性によるダメージ修正 - cardfix=cardfix*(100+sd->addsize[t_size])/100; // サイズによるダメージ修正 + if(!sd->state.arrow_atk) { //ソス|ソスソスソスネ外 + if(!battle_config.left_cardfix_to_right) { //ソスソスソスソスソスJソス[ソスhソス竦ウソスン定無ソスソス + cardfix=cardfix*(100+sd->addrace[t_race])/100; // ソス族ソスノゑソスソスソスソス_ソスソスソス[ソスWソスCソスソス + cardfix=cardfix*(100+sd->addele[t_ele])/100; // ソスソスソスソスソスノゑソスソスソスソス_ソスソスソス[ソスWソスCソスソス + cardfix=cardfix*(100+sd->addsize[t_size])/100; // ソスTソスCソスYソスノゑソスソスソスソス_ソスソスソス[ソスWソスCソスソス } else { - cardfix=cardfix*(100+sd->addrace[t_race]+sd->addrace_[t_race])/100; // 種族によるダメージ修正(左手による追加あり) - cardfix=cardfix*(100+sd->addele[t_ele]+sd->addele_[t_ele])/100; // 属性によるダメージ修正(左手による追加あり) - cardfix=cardfix*(100+sd->addsize[t_size]+sd->addsize_[t_size])/100; // サイズによるダメージ修正(左手による追加あり) + cardfix=cardfix*(100+sd->addrace[t_race]+sd->addrace_[t_race])/100; // ソス族ソスノゑソスソスソスソス_ソスソスソス[ソスWソスCソスソス(ソスソスソスソスソスノゑソスソスソスソスヌ会ソスソスソスソス) + cardfix=cardfix*(100+sd->addele[t_ele]+sd->addele_[t_ele])/100; // ソスソスソスソスソスノゑソスソスソスソス_ソスソスソス[ソスWソスCソスソス(ソスソスソスソスソスノゑソスソスソスソスヌ会ソスソスソスソス) + cardfix=cardfix*(100+sd->addsize[t_size]+sd->addsize_[t_size])/100; // ソスTソスCソスYソスノゑソスソスソスソス_ソスソスソス[ソスWソスCソスソス(ソスソスソスソスソスノゑソスソスソスソスヌ会ソスソスソスソス) } } - else { //弓矢 - cardfix=cardfix*(100+sd->addrace[t_race]+sd->arrow_addrace[t_race])/100; // 種族によるダメージ修正(弓矢による追加あり) - cardfix=cardfix*(100+sd->addele[t_ele]+sd->arrow_addele[t_ele])/100; // 属性によるダメージ修正(弓矢による追加あり) - cardfix=cardfix*(100+sd->addsize[t_size]+sd->arrow_addsize[t_size])/100; // サイズによるダメージ修正(弓矢による追加あり) - } - if(t_mode & 0x20) { //ボス - if(!sd->state.arrow_atk) { //弓矢攻撃以外なら - if(!battle_config.left_cardfix_to_right) //左手カード補正設定無し - cardfix=cardfix*(100+sd->addrace[10])/100; //ボスモンスターに追加ダメージ - else //左手カード補正設定あり - cardfix=cardfix*(100+sd->addrace[10]+sd->addrace_[10])/100; //ボスモンスターに追加ダメージ(左手による追加あり) + else { //ソス|ソスソス + cardfix=cardfix*(100+sd->addrace[t_race]+sd->arrow_addrace[t_race])/100; // ソス族ソスノゑソスソスソスソス_ソスソスソス[ソスWソスCソスソス(ソス|ソスソスソスノゑソスソスソスソスヌ会ソスソスソスソス) + cardfix=cardfix*(100+sd->addele[t_ele]+sd->arrow_addele[t_ele])/100; // ソスソスソスソスソスノゑソスソスソスソス_ソスソスソス[ソスWソスCソスソス(ソス|ソスソスソスノゑソスソスソスソスヌ会ソスソスソスソス) + cardfix=cardfix*(100+sd->addsize[t_size]+sd->arrow_addsize[t_size])/100; // ソスTソスCソスYソスノゑソスソスソスソス_ソスソスソス[ソスWソスCソスソス(ソス|ソスソスソスノゑソスソスソスソスヌ会ソスソスソスソス) + } + if(t_mode & 0x20) { //ソス{ソスX + if(!sd->state.arrow_atk) { //ソス|ソスソスソスUソスソスソスネ外ソスネゑソス + if(!battle_config.left_cardfix_to_right) //ソスソスソスソスソスJソス[ソスhソス竦ウソスン定無ソスソス + cardfix=cardfix*(100+sd->addrace[10])/100; //ソス{ソスXソスソスソスソスソスXソス^ソス[ソスノ追会ソス_ソスソスソス[ソスW + else //ソスソスソスソスソスJソス[ソスhソス竦ウソスン定あソスソス + cardfix=cardfix*(100+sd->addrace[10]+sd->addrace_[10])/100; //ソス{ソスXソスソスソスソスソスXソス^ソス[ソスノ追会ソス_ソスソスソス[ソスW(ソスソスソスソスソスノゑソスソスソスソスヌ会ソスソスソスソス) } - else //弓矢攻撃 - cardfix=cardfix*(100+sd->addrace[10]+sd->arrow_addrace[10])/100; //ボスモンスターに追加ダメージ(弓矢による追加あり) - } - else { //ボスじゃない - if(!sd->state.arrow_atk) { //弓矢攻撃以外 - if(!battle_config.left_cardfix_to_right) //左手カード補正設定無し - cardfix=cardfix*(100+sd->addrace[11])/100; //ボス以外モンスターに追加ダメージ - else //左手カード補正設定あり - cardfix=cardfix*(100+sd->addrace[11]+sd->addrace_[11])/100; //ボス以外モンスターに追加ダメージ(左手による追加あり) + else //ソス|ソスソスソスUソスソス + cardfix=cardfix*(100+sd->addrace[10]+sd->arrow_addrace[10])/100; //ソス{ソスXソスソスソスソスソスXソス^ソス[ソスノ追会ソス_ソスソスソス[ソスW(ソス|ソスソスソスノゑソスソスソスソスヌ会ソスソスソスソス) + } + else { //ソス{ソスXソスソスソスソスソスネゑソス + if(!sd->state.arrow_atk) { //ソス|ソスソスソスUソスソスソスネ外 + if(!battle_config.left_cardfix_to_right) //ソスソスソスソスソスJソス[ソスhソス竦ウソスン定無ソスソス + cardfix=cardfix*(100+sd->addrace[11])/100; //ソス{ソスXソスネ外ソスソスソスソスソスXソス^ソス[ソスノ追会ソス_ソスソスソス[ソスW + else //ソスソスソスソスソスJソス[ソスhソス竦ウソスン定あソスソス + cardfix=cardfix*(100+sd->addrace[11]+sd->addrace_[11])/100; //ソス{ソスXソスネ外ソスソスソスソスソスXソス^ソス[ソスノ追会ソス_ソスソスソス[ソスW(ソスソスソスソスソスノゑソスソスソスソスヌ会ソスソスソスソス) } else - cardfix=cardfix*(100+sd->addrace[11]+sd->arrow_addrace[11])/100; //ボス以外モンスターに追加ダメージ(弓矢による追加あり) + cardfix=cardfix*(100+sd->addrace[11]+sd->arrow_addrace[11])/100; //ソス{ソスXソスネ外ソスソスソスソスソスXソス^ソス[ソスノ追会ソス_ソスソスソス[ソスW(ソス|ソスソスソスノゑソスソスソスソスヌ会ソスソスソスソス) } - //特定Class用補正処理(少女の日記→ボンゴン用?) + //ソスソスソスClassソスpソス竦ウソスソスソスソス(ソスソスソスソスソスフ難ソスソスLソスソスソス{ソスソスソスSソスソスソスpソスH) t_class = battle_get_class(target); for(i=0;iadd_damage_class_count;i++) { if(sd->add_damage_classid[i] == t_class) { @@ -3092,44 +3092,44 @@ static struct Damage battle_calc_pc_weapon_attack( } } if(skill_num != CR_GRANDCROSS || !battle_config.gx_cardfix) - damage=damage*cardfix/100; //カード補正によるダメージ増加 -//カードによるダメージ増加処理ここまで + damage=damage*cardfix/100; //ソスJソス[ソスhソス竦ウソスノゑソスソスソスソス_ソスソスソス[ソスWソスソスソスソス +//ソスJソス[ソスhソスノゑソスソスソスソス_ソスソスソス[ソスWソスソスソスソスソスソスソスソスソスソスソスソスワゑソス -//カードによるダメージ追加処理(左手)ここから +//ソスJソス[ソスhソスノゑソスソスソスソス_ソスソスソス[ソスWソスヌ会ソスソスソスソス(ソスソスソスソス)ソスソスソスソスソスソスソスソス cardfix=100; - if(!battle_config.left_cardfix_to_right) { //左手カード補正設定無し - cardfix=cardfix*(100+sd->addrace_[t_race])/100; // 種族によるダメージ修正左手 - cardfix=cardfix*(100+sd->addele_[t_ele])/100; // 属 性によるダメージ修正左手 - cardfix=cardfix*(100+sd->addsize_[t_size])/100; // サイズによるダメージ修正左手 - if(t_mode & 0x20) //ボス - cardfix=cardfix*(100+sd->addrace_[10])/100; //ボスモンスターに追加ダメージ左手 + if(!battle_config.left_cardfix_to_right) { //ソスソスソスソスソスJソス[ソスhソス竦ウソスン定無ソスソス + cardfix=cardfix*(100+sd->addrace_[t_race])/100; // ソス族ソスノゑソスソスソスソス_ソスソスソス[ソスWソスCソスソスソスソスソスソス + cardfix=cardfix*(100+sd->addele_[t_ele])/100; // ソスソス ソスソスソスノゑソスソスソスソス_ソスソスソス[ソスWソスCソスソスソスソスソスソス + cardfix=cardfix*(100+sd->addsize_[t_size])/100; // ソスTソスCソスYソスノゑソスソスソスソス_ソスソスソス[ソスWソスCソスソスソスソスソスソス + if(t_mode & 0x20) //ソス{ソスX + cardfix=cardfix*(100+sd->addrace_[10])/100; //ソス{ソスXソスソスソスソスソスXソス^ソス[ソスノ追会ソス_ソスソスソス[ソスWソスソスソスソス else - cardfix=cardfix*(100+sd->addrace_[11])/100; //ボス以外モンスターに追加ダメージ左手 + cardfix=cardfix*(100+sd->addrace_[11])/100; //ソス{ソスXソスネ外ソスソスソスソスソスXソス^ソス[ソスノ追会ソス_ソスソスソス[ソスWソスソスソスソス } - //特定Class用補正処理左手(少女の日記→ボンゴン用?) + //ソスソスソスClassソスpソス竦ウソスソスソスソスソスソスソスソス(ソスソスソスソスソスフ難ソスソスLソスソスソス{ソスソスソスSソスソスソスpソスH) for(i=0;iadd_damage_class_count_;i++) { if(sd->add_damage_classid_[i] == t_class) { cardfix=cardfix*(100+sd->add_damage_classrate_[i])/100; break; } } - if(skill_num != CR_GRANDCROSS) damage2=damage2*cardfix/100; //カード補正による左手ダメージ増加 -//カードによるダメージ増加処理(左手)ここまで + if(skill_num != CR_GRANDCROSS) damage2=damage2*cardfix/100; //ソスJソス[ソスhソス竦ウソスノゑソスソス骰カソスソスソス_ソスソスソス[ソスWソスソスソスソス +//ソスJソス[ソスhソスノゑソスソスソスソス_ソスソスソス[ソスWソスソスソスソスソスソスソス(ソスソスソスソス)ソスソスソスソスソスワゑソス // -- moonsoul (cardfix for magic damage portion of ASC_BREAKER) if(skill_num == ASC_BREAKER) damage3 = damage3 * cardfix / 100; -//カードによるダメージ減衰処理ここから - if(tsd){ //対象がPCの場合 +//ソスJソス[ソスhソスノゑソスソスソスソス_ソスソスソス[ソスWソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスソス + if(tsd){ //ソスホ象ゑソスPCソスフ場合 cardfix=100; - cardfix=cardfix*(100-tsd->subrace[s_race])/100; // 種族によるダメージ耐性 - cardfix=cardfix*(100-tsd->subele[s_ele])/100; // 属性によるダメージ耐性 + cardfix=cardfix*(100-tsd->subrace[s_race])/100; // ソス族ソスノゑソスソスソスソス_ソスソスソス[ソスWソスマ撰ソス + cardfix=cardfix*(100-tsd->subele[s_ele])/100; // ソスソスソスソスソスノゑソスソスソスソス_ソスソスソス[ソスWソスマ撰ソス if(battle_get_mode(src) & 0x20) - cardfix=cardfix*(100-tsd->subrace[10])/100; //ボスからの攻撃はダメージ減少 + cardfix=cardfix*(100-tsd->subrace[10])/100; //ソス{ソスXソスソスソスソスソスフ攻ソスソスソスヘダソスソスソス[ソスWソスソスソスソス else - cardfix=cardfix*(100-tsd->subrace[11])/100; //ボス以外からの攻撃はダメージ減少 - //特定Class用補正処理左手(少女の日記→ボンゴン用?) + cardfix=cardfix*(100-tsd->subrace[11])/100; //ソス{ソスXソスネ外ソスソスソスソスソスフ攻ソスソスソスヘダソスソスソス[ソスWソスソスソスソス + //ソスソスソスClassソスpソス竦ウソスソスソスソスソスソスソスソス(ソスソスソスソスソスフ難ソスソスLソスソスソス{ソスソスソスSソスソスソスpソスH) for(i=0;iadd_def_class_count;i++) { if(tsd->add_def_classid[i] == sd->status.class) { cardfix=cardfix*(100-tsd->add_def_classrate[i])/100; @@ -3137,24 +3137,24 @@ static struct Damage battle_calc_pc_weapon_attack( } } if(flag&BF_LONG) - cardfix=cardfix*(100-tsd->long_attack_def_rate)/100; //遠距離攻撃はダメージ減少(ホルンCとか) + cardfix=cardfix*(100-tsd->long_attack_def_rate)/100; //ソスソスソスソスソスソスソスUソスソスソスヘダソスソスソス[ソスWソスソスソスソス(ソスzソスソスソスソスCソスニゑソス) if(flag&BF_SHORT) - cardfix=cardfix*(100-tsd->near_attack_def_rate)/100; //近距離攻撃はダメージ減少(該当無し?) - damage=damage*cardfix/100; //カード補正によるダメージ減少 - damage2=damage2*cardfix/100; //カード補正による左手ダメージ減少 + cardfix=cardfix*(100-tsd->near_attack_def_rate)/100; //ソス゚具ソスソスソスソスUソスソスソスヘダソスソスソス[ソスWソスソスソスソス(ソスYソスソスソスソスソスソスソスH) + damage=damage*cardfix/100; //ソスJソス[ソスhソス竦ウソスノゑソスソスソスソス_ソスソスソス[ソスWソスソスソスソス + damage2=damage2*cardfix/100; //ソスJソス[ソスhソス竦ウソスノゑソスソス骰カソスソスソス_ソスソスソス[ソスWソスソスソスソス } -//カードによるダメージ減衰処理ここまで +//ソスJソス[ソスhソスノゑソスソスソスソス_ソスソスソス[ソスWソスソスソスソスソスソスソスソスソスソスソスソスソスワゑソス -//対象にステータス異常がある場合のダメージ減算処理ここから +//ソスホ象にスソスeソス[ソス^ソスXソスル常がソスソスソスソスソス鼾ソスフダソスソスソス[ソスWソスソスソスZソスソスソスソスソスソスソスソスソスソスソスソス if(t_sc_data) { cardfix=100; - if(t_sc_data[SC_DEFENDER].timer != -1 && flag&BF_LONG) //ディフェンダー状態で遠距離攻撃 - cardfix=cardfix*(100-t_sc_data[SC_DEFENDER].val2)/100; //ディフェンダーによる減衰 + if(t_sc_data[SC_DEFENDER].timer != -1 && flag&BF_LONG) //ソスfソスBソスtソスFソスソスソス_ソス[ソスソスソスヤで会ソスソスソスソスソスソスUソスソス + cardfix=cardfix*(100-t_sc_data[SC_DEFENDER].val2)/100; //ソスfソスBソスtソスFソスソスソス_ソス[ソスノゑソスソス骭クソスソス if(cardfix != 100) { - damage=damage*cardfix/100; //ディフェンダー補正によるダメージ減少 - damage2=damage2*cardfix/100; //ディフェンダー補正による左手ダメージ減少 + damage=damage*cardfix/100; //ソスfソスBソスtソスFソスソスソス_ソス[ソス竦ウソスノゑソスソスソスソス_ソスソスソス[ソスWソスソスソスソス + damage2=damage2*cardfix/100; //ソスfソスBソスtソスFソスソスソス_ソス[ソス竦ウソスノゑソスソス骰カソスソスソス_ソスソスソス[ソスWソスソスソスソス } - if(t_sc_data[SC_ASSUMPTIO].timer != -1){ //アスムプティオ + if(t_sc_data[SC_ASSUMPTIO].timer != -1){ //ソスAソスXソスソスソスvソスeソスBソスI if(!map[target->m].flag.pvp){ damage=damage/3; damage2=damage2/3; @@ -3164,71 +3164,71 @@ static struct Damage battle_calc_pc_weapon_attack( } } } -//対象にステータス異常がある場合のダメージ減算処理ここまで +//ソスホ象にスソスeソス[ソス^ソスXソスル常がソスソスソスソスソス鼾ソスフダソスソスソス[ソスWソスソスソスZソスソスソスソスソスソスソスソスソスワゑソス if(damage < 0) damage = 0; if(damage2 < 0) damage2 = 0; - // 属 性の適用 + // ソスソス ソスソスソスフ適ソスp damage=battle_attr_fix(damage,s_ele, battle_get_element(target) ); damage2=battle_attr_fix(damage2,s_ele_, battle_get_element(target) ); - // 星のかけら、気球の適用 + // ソスソスソスフゑソスソスソスソスソスソスAソスCソスソスソスフ適ソスp damage += sd->star; damage2 += sd->star_; damage += sd->spiritball*3; damage2 += sd->spiritball*3; - if(sc_data && sc_data[SC_AURABLADE].timer!=-1){ /* オーラブレード 必中 */ + if(sc_data && sc_data[SC_AURABLADE].timer!=-1){ /* ソスIソス[ソスソスソスuソスソスソス[ソスh ソスKソスソス */ damage += sc_data[SC_AURABLADE].val1 * 10; damage2 += sc_data[SC_AURABLADE].val1 * 10; } - if(skill_num==PA_PRESSURE){ /* プレッシャー 必中? */ + if(skill_num==PA_PRESSURE){ /* ソスvソスソスソスbソスVソスソスソス[ ソスKソスソス? */ damage = 700+100*skill_lv; damage2 = 700+100*skill_lv; } - // >二刀流の左右ダメージ計算誰かやってくれぇぇぇぇえええ! - // >map_session_data に左手ダメージ(atk,atk2)追加して - // >pc_calcstatus()でやるべきかな? - // map_session_data に左手武器(atk,atk2,ele,star,atkmods)追加して - // pc_calcstatus()でデータを入力しています + // >ソス刀暦ソスソスフ搾ソスソスEソス_ソスソスソス[ソスWソスvソスZソスNソスソスソスソスソスソストゑソスソス黷・ソスソスソスソスソスソスソスソスソスソスソスソスソスI + // >map_session_data ソスノ搾ソスソスソスソス_ソスソスソス[ソスW(atk,atk2)ソスヌ会ソスソスソスソス + // >pc_calcstatus()ソスナゑソスソスソスソスラゑソスソスソスソスネ? + // map_session_data ソスノ搾ソスソス阨撰ソスソス(atk,atk2,ele,star,atkmods)ソスヌ会ソスソスソスソス + // pc_calcstatus()ソスナデソス[ソス^ソスソスソスソスソスヘゑソスソストゑソスソスワゑソス - //左手のみ武器装備 + //ソスソスソスソスソスフみ包ソスソス装ソスソス if(sd->weapontype1 == 0 && sd->weapontype2 > 0) { damage = damage2; damage2 = 0; } - // 右手、左手修練の適用 - if(sd->status.weapon > 16) {// 二刀流か? + // ソスEソスソスソスAソスソスソスソスソスCソスソスソスフ適ソスp + if(sd->status.weapon > 16) {// ソス刀暦ソスソスソス? int dmg = damage, dmg2 = damage2; - // 右手修練(60% 〜 100%) 右手全般 + // ソスEソスソスソスCソスソス(60% ソス` 100%) ソスEソスソスソスSソスソス skill = pc_checkskill(sd,AS_RIGHT); damage = damage * (50 + (skill * 10))/100; if(dmg > 0 && damage < 1) damage = 1; - // 左手修練(40% 〜 80%) 左手全般 + // ソスソスソスソスソスCソスソス(40% ソス` 80%) ソスソスソスソスソスSソスソス skill = pc_checkskill(sd,AS_LEFT); damage2 = damage2 * (30 + (skill * 10))/100; if(dmg2 > 0 && damage2 < 1) damage2 = 1; } - else //二刀流でなければ左手ダメージは0 + else //ソス刀暦ソスソスナなゑソスソスソスソスホ搾ソスソスソスソス_ソスソスソス[ソスWソスソス0 damage2 = 0; - // 右手,短剣のみ - if(da == 1) { //ダブルアタックが発動しているか + // ソスEソスソス,ソスZソスソスソスフゑソス + if(da == 1) { //ソス_ソスuソスソスソスAソス^ソスbソスNソスソスソスソスソスソスソスソスソストゑソスソス驍ゥ div_ = 2; damage += damage; type = 0x08; } if(sd->status.weapon == 16) { - // カタール追撃ダメージ + // ソスJソス^ソス[ソスソスソスヌ鯉ソスソス_ソスソスソス[ソスW skill = pc_checkskill(sd,TF_DOUBLE); damage2 = damage * (1 + (skill * 2))/100; if(damage > 0 && damage2 < 1) damage2 = 1; } - // インベナム修正 + // ソスCソスソスソスxソスiソスソスソスCソスソス if(skill_num==TF_POISON){ damage = battle_attr_fix(damage + 15*skill_lv, s_ele, battle_get_element(target) ); } @@ -3236,14 +3236,14 @@ static struct Damage battle_calc_pc_weapon_attack( damage = battle_attr_fix(damage, 0, battle_get_element(target) ); } - // 完全回避の判定 + // ソスソスソスSソスソスソスソスソスフ費ソスソスソス if(skill_num == 0 && skill_lv >= 0 && tsd!=NULL && div_ < 255 && MRAND(1000) < battle_get_flee2(target) ){ damage=damage2=0; type=0x0b; dmg_lv = ATK_LUCKY; } - // 対象が完全回避をする設定がONなら + // ソスホ象ゑソスソスソスソスSソスソスソスソスソスソスソスソスン定がONソスネゑソス if(battle_config.enemy_perfect_flee) { if(skill_num == 0 && skill_lv >= 0 && tmd!=NULL && div_ < 255 && MRAND(1000) < battle_get_flee2(target) ) { damage=damage2=0; @@ -3252,7 +3252,7 @@ static struct Damage battle_calc_pc_weapon_attack( } } - //MobのModeに頑強フラグが立っているときの処理 + //MobソスソスModeソスノ頑強ソスtソスソスソスOソスソスソスソスソスソストゑソスソスソスソスニゑソスソスフ擾ソスソスソス if(t_mode&0x40){ if(damage > 0) damage = 1; @@ -3260,16 +3260,16 @@ static struct Damage battle_calc_pc_weapon_attack( damage2 = 1; } - //bNoWeaponDamage(設定アイテム無し?)でグランドクロスじゃない場合はダメージが0 + //bNoWeaponDamage(ソスン抵ソスソスAソスCソスeソスソスソスソスソスソスソスH)ソスナグソスソスソスソスソスhソスNソスソスソスXソスソスソスソスソスネゑソスソス鼾ソスヘダソスソスソス[ソスWソスソス0 if( tsd && tsd->special_state.no_weapon_damage && skill_num != CR_GRANDCROSS) damage = damage2 = 0; if(skill_num != CR_GRANDCROSS && (damage > 0 || damage2 > 0) ) { - if(damage2<1) // ダメージ最終修正 + if(damage2<1) // ソス_ソスソスソス[ソスWソスナ終ソスCソスソス damage=battle_calc_damage(src,target,damage,div_,skill_num,skill_lv,flag); - else if(damage<1) // 右手がミス? + else if(damage<1) // ソスEソス閧ェソス~ソスXソスH damage2=battle_calc_damage(src,target,damage2,div_,skill_num,skill_lv,flag); - else { // 両 手/カタールの場合はちょっと計算ややこしい + else { // ソスソス ソスソス/ソスJソス^ソス[ソスソスソスフ場合ソスヘゑソスソスソスソスソスニ計ソスZソスソスソス竄アソスソスソスソス int d1=damage+damage2,d2=damage2; damage=battle_calc_damage(src,target,damage+damage2,div_,skill_num,skill_lv,flag); damage2=(d2*100/d1)*damage/100; @@ -3309,7 +3309,7 @@ static struct Damage battle_calc_pc_weapon_attack( } /*========================================== - * 武器ダメージ計算 + * ソスソスソスソスソス_ソスソスソス[ソスWソスvソスZ *------------------------------------------ */ struct Damage battle_calc_weapon_attack( @@ -3317,7 +3317,7 @@ struct Damage battle_calc_weapon_attack( { struct Damage wd; - //return前の処理があるので情報出力部のみ変更 + //returnソスOソスフ擾ソスソスソスソスソスソスソスソスソスソスフで擾ソスソスソスソスoソスヘ包ソスソスフみ変更 if (src == NULL || target == NULL) { nullpo_info(NLP_MARK); memset(&wd,0,sizeof(wd)); @@ -3365,7 +3365,7 @@ struct Damage battle_calc_weapon_attack( } /*========================================== - * 魔法ダメージ計算 + * ソスソスソス@ソス_ソスソスソス[ソスWソスvソスZ *------------------------------------------ */ struct Damage battle_calc_magic_attack( @@ -3382,7 +3382,7 @@ struct Damage battle_calc_magic_attack( struct mob_data *tmd = NULL; - //return前の処理があるので情報出力部のみ変更 + //returnソスOソスフ擾ソスソスソスソスソスソスソスソスソスソスフで擾ソスソスソスソスoソスヘ包ソスソスフみ変更 if( bl == NULL || target == NULL ){ nullpo_info(NLP_MARK); memset(&md,0,sizeof(md)); @@ -3413,24 +3413,24 @@ struct Damage battle_calc_magic_attack( aflag=BF_MAGIC|BF_LONG|BF_SKILL; if(skill_num > 0){ - switch(skill_num){ // 基本ダメージ計算(スキルごとに処理) - // ヒールor聖体 + switch(skill_num){ // ソスソスソス{ソス_ソスソスソス[ソスWソスvソスZ(ソスXソスLソスソスソスソスソスニに擾ソスソスソス) + // ソスqソス[ソスソスorソスソスソスソス case AL_HEAL: case PR_BENEDICTIO: damage = skill_calc_heal(bl,skill_lv)/2; normalmagic_flag=0; break; - case PR_ASPERSIO: /* アスペルシオ */ - damage = 40; //固定ダメージ + case PR_ASPERSIO: /* ソスAソスXソスyソスソスソスVソスI */ + damage = 40; //ソスナ抵ソスソス_ソスソスソス[ソスW normalmagic_flag=0; break; - case PR_SANCTUARY: // サンクチュアリ + case PR_SANCTUARY: // ソスTソスソスソスNソス`ソスソスソスAソスソス damage = (skill_lv>6)?388:skill_lv*50; normalmagic_flag=0; blewcount|=0x10000; break; case ALL_RESURRECTION: - case PR_TURNUNDEAD: // 攻撃リザレクションとターンアンデッド + case PR_TURNUNDEAD: // ソスUソスソスソスソスソスUソスソスソスNソスVソスソスソスソスソスニタソス[ソスソスソスAソスソスソスfソスbソスh if(target->type != BL_PC && battle_check_undead(t_race,t_ele)){ int hp, mhp, thres; hp = battle_get_hp(target); @@ -3440,16 +3440,16 @@ struct Damage battle_calc_magic_attack( ((200 - hp * 200 / mhp)); if(thres > 700) thres = 700; // if(battle_config.battle_log) -// printf("ターンアンデッド! 確率%d ‰(千分率)\n", thres); - if(MRAND(1000) < thres && !(t_mode&0x20)) // 成功 +// printf("ソス^ソス[ソスソスソスAソスソスソスfソスbソスhソスI ソスmソスソス%d ソスソス(ソス逡ェソスソス)\n", thres); + if(MRAND(1000) < thres && !(t_mode&0x20)) // ソスソスソスソス damage = hp; - else // 失敗 + else // ソスソスソスs damage = battle_get_lv(bl) + battle_get_int(bl) + skill_lv * 10; } normalmagic_flag=0; break; - case MG_NAPALMBEAT: // ナパームビート(分散計算込み) + case MG_NAPALMBEAT: // ソスiソスpソス[ソスソスソスrソス[ソスgソスiソスソスソスUソスvソスZソスソスソスン) MATK_FIX(70+ skill_lv*10,100); if(flag>0){ MATK_FIX(1,flag); @@ -3458,7 +3458,7 @@ struct Damage battle_calc_magic_attack( printf("battle_calc_magic_attack(): napam enemy count=0 !\n"); } break; - case MG_FIREBALL: // ファイヤーボール + case MG_FIREBALL: // ソスtソス@ソスCソスソスソス[ソス{ソス[ソスソス { const int drate[]={100,90,70}; if(flag>2) @@ -3467,9 +3467,9 @@ struct Damage battle_calc_magic_attack( MATK_FIX( (95+skill_lv*5)*drate[flag] ,10000 ); } break; - case MG_FIREWALL: // ファイヤーウォール + case MG_FIREWALL: // ソスtソス@ソスCソスソスソス[ソスEソスHソス[ソスソス /* - if( (t_ele!=3 && !battle_check_undead(t_race,t_ele)) || target->type==BL_PC ) //PCは火属性でも飛ぶ?そもそもダメージ受ける? + if( (t_ele!=3 && !battle_check_undead(t_race,t_ele)) || target->type==BL_PC ) //PCソスヘ火托ソスソスソスソスナゑソスソスソスソスヤ?ソスソスソスソスソスソスソス_ソスソスソス[ソスWソスけゑソスソスH blewcount |= 0x10000; else blewcount = 0; @@ -3480,18 +3480,18 @@ struct Damage battle_calc_magic_attack( blewcount |= 0x10000; MATK_FIX( 1,2 ); break; - case MG_THUNDERSTORM: // サンダーストーム + case MG_THUNDERSTORM: // ソスTソスソスソス_ソス[ソスXソスgソス[ソスソス MATK_FIX( 80,100 ); break; - case MG_FROSTDIVER: // フロストダイバ + case MG_FROSTDIVER: // ソスtソスソスソスXソスgソス_ソスCソスo MATK_FIX( 100+skill_lv*10, 100); break; - case WZ_FROSTNOVA: // フロストダイバ + case WZ_FROSTNOVA: // ソスtソスソスソスXソスgソス_ソスCソスo MATK_FIX( ((100+skill_lv*10)*(2/3)), 100); break; - case WZ_FIREPILLAR: // ファイヤーピラー + case WZ_FIREPILLAR: // ソスtソス@ソスCソスソスソス[ソスsソスソスソス[ if(mdef1 < 1000000) - mdef1=mdef2=0; // MDEF無視 + mdef1=mdef2=0; // MDEFソスソスソスソス MATK_FIX( 1,5 ); matk1+=50; matk2+=50; @@ -3500,26 +3500,26 @@ struct Damage battle_calc_magic_attack( MATK_FIX( 100+skill_lv*20, 100); break; case WZ_METEOR: - case WZ_JUPITEL: // ユピテルサンダー + case WZ_JUPITEL: // ソスソスソスsソスeソスソスソスTソスソスソス_ソス[ break; - case WZ_VERMILION: // ロードオブバーミリオン + case WZ_VERMILION: // ソスソスソス[ソスhソスIソスuソスoソス[ソス~ソスソスソスIソスソス MATK_FIX( skill_lv*20+80, 100 ); break; - case WZ_WATERBALL: // ウォーターボール + case WZ_WATERBALL: // ソスEソスHソス[ソス^ソス[ソス{ソス[ソスソス matk1+= skill_lv*30; matk2+= skill_lv*30; break; - case WZ_STORMGUST: // ストームガスト + case WZ_STORMGUST: // ソスXソスgソス[ソスソスソスKソスXソスg MATK_FIX( skill_lv*40+100 ,100 ); blewcount|=0x10000; break; - case AL_HOLYLIGHT: // ホーリーライト + case AL_HOLYLIGHT: // ソスzソス[ソスソスソス[ソスソスソスCソスg MATK_FIX( 125,100 ); break; case AL_RUWACH: MATK_FIX( 145,100 ); break; - case HW_NAPALMVULCAN: // ナパームビート(分散計算込み) + case HW_NAPALMVULCAN: // ソスiソスpソス[ソスソスソスrソス[ソスgソスiソスソスソスUソスvソスZソスソスソスン) MATK_FIX(70+ skill_lv*10,100); if(flag>0){ MATK_FIX(1,flag); @@ -3531,7 +3531,7 @@ struct Damage battle_calc_magic_attack( } } - if(normalmagic_flag){ // 一般魔法ダメージ計算 + if(normalmagic_flag){ // ソスソスソスハ厄ソスソス@ソス_ソスソスソス[ソスWソスvソスZ int imdef_flag=0; if(matk1>matk2) damage= matk2+MRAND((matk1-matk2+1)); @@ -3583,8 +3583,8 @@ struct Damage battle_calc_magic_attack( if( tsd ){ int s_class = battle_get_class(bl); cardfix=100; - cardfix=cardfix*(100-tsd->subele[ele])/100; // 属 性によるダメージ耐性 - cardfix=cardfix*(100-tsd->subrace[race])/100; // 種族によるダメージ耐性 + cardfix=cardfix*(100-tsd->subele[ele])/100; // ソスソス ソスソスソスノゑソスソスソスソス_ソスソスソス[ソスWソスマ撰ソス + cardfix=cardfix*(100-tsd->subrace[race])/100; // ソス族ソスノゑソスソスソスソス_ソスソスソス[ソスWソスマ撰ソス cardfix=cardfix*(100-tsd->magic_subrace[race])/100; if(battle_get_mode(bl) & 0x20) cardfix=cardfix*(100-tsd->magic_subrace[10])/100; @@ -3601,14 +3601,14 @@ struct Damage battle_calc_magic_attack( } if(damage < 0) damage = 0; - damage=battle_attr_fix(damage, ele, battle_get_element(target) ); // 属 性修正 + damage=battle_attr_fix(damage, ele, battle_get_element(target) ); // ソスソス ソスソスソスCソスソス - if(skill_num == CR_GRANDCROSS) { // グランドクロス + if(skill_num == CR_GRANDCROSS) { // ソスOソスソスソスソスソスhソスNソスソスソスX struct Damage wd; wd=battle_calc_weapon_attack(bl,target,skill_num,skill_lv,flag); damage = (damage + wd.damage) * (100 + 40*skill_lv)/100; - if(battle_config.gx_dupele) damage=battle_attr_fix(damage, ele, battle_get_element(target) ); //属性2回かかる - if(bl==target) damage=damage/2; //反動は半分 + if(battle_config.gx_dupele) damage=battle_attr_fix(damage, ele, battle_get_element(target) ); //ソスソスソスソス2ソスかゑソスソスソス + if(bl==target) damage=damage/2; //ソスソスソスソスソスヘ費ソスソスソス } div_=skill_get_num( skill_num,skill_lv ); @@ -3625,10 +3625,10 @@ struct Damage battle_calc_magic_attack( if ((map[target->m].flag.pvp || map[target->m].flag.gvg) && target->type==BL_PC) damage = (damage * (100 - battle_config.gtb_pvp_only)) / 100; } else - damage=0; // 黄 金蟲カード(魔法ダメージ0) + damage=0; // ソスソス ソスソス蟲カソス[ソスhソスiソスソスソス@ソス_ソスソスソス[ソスWソスOソスj } - damage=battle_calc_damage(bl,target,damage,div_,skill_num,skill_lv,aflag); // 最終修正 + damage=battle_calc_damage(bl,target,damage,div_,skill_num,skill_lv,aflag); // ソスナ終ソスCソスソス /* magic_damage_return by [AppleGirl] and [Valaris] */ if( target->type==BL_PC && tsd && tsd->magic_damage_return > 0 ){ @@ -3652,7 +3652,7 @@ struct Damage battle_calc_magic_attack( } /*========================================== - * その他ダメージ計算 + * ソスソスソスフ托ソスソス_ソスソスソス[ソスWソスvソスZ *------------------------------------------ */ struct Damage battle_calc_misc_attack( @@ -3669,7 +3669,7 @@ struct Damage battle_calc_misc_attack( int aflag=BF_MISC|BF_LONG|BF_SKILL; - //return前の処理があるので情報出力部のみ変更 + //returnソスOソスフ擾ソスソスソスソスソスソスソスソスソスソスフで擾ソスソスソスソスoソスヘ包ソスソスフみ変更 if( bl == NULL || target == NULL ){ nullpo_info(NLP_MARK); memset(&md,0,sizeof(md)); @@ -3686,19 +3686,19 @@ struct Damage battle_calc_misc_attack( switch(skill_num){ - case HT_LANDMINE: // ランドマイン + case HT_LANDMINE: // ソスソスソスソスソスhソス}ソスCソスソス damage=skill_lv*(dex+75)*(100+int_)/100; break; - case HT_BLASTMINE: // ブラストマイン + case HT_BLASTMINE: // ソスuソスソスソスXソスgソス}ソスCソスソス damage=skill_lv*(dex/2+50)*(100+int_)/100; break; - case HT_CLAYMORETRAP: // クレイモアートラップ + case HT_CLAYMORETRAP: // ソスNソスソスソスCソスソスソスAソス[ソスgソスソスソスbソスv damage=skill_lv*(dex/2+75)*(100+int_)/100; break; - case HT_BLITZBEAT: // ブリッツビート + case HT_BLITZBEAT: // ソスuソスソスソスbソスcソスrソス[ソスg if( sd==NULL || (skill = pc_checkskill(sd,HT_STEELCROW)) <= 0) skill=0; damage=(dex/10+int_/2+skill*3+40)*2; @@ -3706,21 +3706,21 @@ struct Damage battle_calc_misc_attack( damage /= flag; break; - case TF_THROWSTONE: // 石投げ + case TF_THROWSTONE: // ソスホ難ソスソスソス damage=30; damagefix=0; break; - case BA_DISSONANCE: // 不協和音 + case BA_DISSONANCE: // ソスsソスソスソスaソスソス damage=(skill_lv)*20+pc_checkskill(sd,BA_MUSICALLESSON)*3; break; - case NPC_SELFDESTRUCTION: // 自爆 + case NPC_SELFDESTRUCTION: // ソスソスソスソス damage=battle_get_hp(bl)-(bl==target?1:0); damagefix=0; break; - case NPC_SMOKING: // タバコを吸う + case NPC_SMOKING: // ソス^ソスoソスRソスソスソスzソスソス damage=3; damagefix=0; break; @@ -3739,7 +3739,7 @@ struct Damage battle_calc_misc_attack( } } break; - case SN_FALCONASSAULT: /* ファルコンアサルト */ + case SN_FALCONASSAULT: /* ソスtソス@ソスソスソスRソスソスソスAソスTソスソスソスg */ skill = pc_checkskill(sd,HT_BLITZBEAT); damage=(100+50*skill_lv+(dex/10+int_/2+skill*3+40)*2); break; @@ -3754,13 +3754,13 @@ struct Damage battle_calc_misc_attack( if( tsd ){ cardfix=100; - cardfix=cardfix*(100-tsd->subele[ele])/100; // 属性によるダメージ耐性 - cardfix=cardfix*(100-tsd->subrace[race])/100; // 種族によるダメージ耐性 + cardfix=cardfix*(100-tsd->subele[ele])/100; // ソスソスソスソスソスノゑソスソスソスソス_ソスソスソス[ソスWソスマ撰ソス + cardfix=cardfix*(100-tsd->subrace[race])/100; // ソス族ソスノゑソスソスソスソス_ソスソスソス[ソスWソスマ撰ソス cardfix=cardfix*(100-tsd->misc_def_rate)/100; damage=damage*cardfix/100; } if(damage < 0) damage = 0; - damage=battle_attr_fix(damage, ele, battle_get_element(target) ); // 属性修正 + damage=battle_attr_fix(damage, ele, battle_get_element(target) ); // ソスソスソスソスソスCソスソス } div_=skill_get_num( skill_num,skill_lv ); @@ -3771,7 +3771,7 @@ struct Damage battle_calc_misc_attack( damage = div_; } - damage=battle_calc_damage(bl,target,damage,div_,skill_num,skill_lv,aflag); // 最終修正 + damage=battle_calc_damage(bl,target,damage,div_,skill_num,skill_lv,aflag); // ソスナ終ソスCソスソス md.damage=damage; md.div_=div_; @@ -3785,7 +3785,7 @@ struct Damage battle_calc_misc_attack( } /*========================================== - * ダメージ計算一括処理用 + * ソス_ソスソスソス[ソスWソスvソスZソス鼕ソスソスソスソスソスp *------------------------------------------ */ struct Damage battle_calc_attack( int attack_type, @@ -3809,7 +3809,7 @@ struct Damage battle_calc_attack( int attack_type, return d; } /*========================================== - * 通常攻撃処理まとめ + * ソスハ擾ソスソスUソスソスソスソスソスソスソスワとゑソス *------------------------------------------ */ int battle_weapon_attack( struct block_list *src,struct block_list *target, @@ -3849,7 +3849,7 @@ int battle_weapon_attack( struct block_list *src,struct block_list *target, ele = battle_get_elem_type(target); if(battle_check_target(src,target,BCT_ENEMY) > 0 && battle_check_range(src,target,0)){ - // 攻撃対象となりうるので攻撃 + // ソスUソスソスソスホ象となりうソスソスソスフで攻ソスソス if(sd && sd->status.weapon == 11) { if(sd->equip_index[10] >= 0) { if(battle_config.arrow_decrement) @@ -3910,12 +3910,12 @@ int battle_weapon_attack( struct block_list *src,struct block_list *target, clif_damage(src,src,tick, wd.amotion,0,rdamage,1,4,0); } - if (wd.div_ == 255 && sd) { //三段掌 + if (wd.div_ == 255 && sd) { //ソスOソスiソスソス int delay = 1000 - 4 * battle_get_agi(src) - 2 * battle_get_dex(src); int skilllv; if(wd.damage+wd.damage2 < battle_get_hp(target)) { if((skilllv = pc_checkskill(sd, MO_CHAINCOMBO)) > 0) - delay += 300 * battle_config.combo_delay_rate /100; //追加ディレイをconfにより調整 + delay += 300 * battle_config.combo_delay_rate /100; //ソスヌ会ソスfソスBソスソスソスCソスソスconfソスノゑソスソス闥イソスソス skill_status_change_start(src,SC_COMBO,MO_TRIPLEATTACK,skilllv,0,0,delay,0); } @@ -3927,7 +3927,7 @@ int battle_weapon_attack( struct block_list *src,struct block_list *target, else { clif_damage(src,target,tick, wd.amotion, wd.dmotion, wd.damage, wd.div_ , wd.type, wd.damage2); - //二刀流左手とカタール追撃のミス表示(無理やり〜) + //ソス刀暦ソスソスソスソスソスソスニカソス^ソス[ソスソスソスヌ鯉ソスソスフミソスXソス\ソスソス(ソスソスソスソスソスソスソスソスソス`) if(sd && sd->status.weapon >= 16 && wd.damage2 == 0) clif_damage(src,target,tick+10, wd.amotion, wd.dmotion,0, 1, 0, 0); } @@ -3972,7 +3972,7 @@ int battle_weapon_attack( struct block_list *src,struct block_list *target, case 0: case 2: f = skill_castend_damage_id(src,target,sc_data[SC_AUTOSPELL].val2,skilllv,tick,flag); break; - case 1:/* 支援系 */ + case 1:/* ソスxソスソスソスn */ if((sc_data[SC_AUTOSPELL].val2==AL_HEAL || (sc_data[SC_AUTOSPELL].val2==ALL_RESURRECTION && target->type != BL_PC)) && battle_check_undead(race,ele)) f = skill_castend_damage_id(src,target,sc_data[SC_AUTOSPELL].val2,skilllv,tick,flag); else @@ -3991,7 +3991,7 @@ int battle_weapon_attack( struct block_list *src,struct block_list *target, case 0: case 2: skill_castend_damage_id(src,target,sc_data[SC_AUTOSPELL].val2,skilllv,tick,flag); break; - case 1:/* 支援系 */ + case 1:/* ソスxソスソスソスn */ if((sc_data[SC_AUTOSPELL].val2==AL_HEAL || (sc_data[SC_AUTOSPELL].val2==ALL_RESURRECTION && target->type != BL_PC)) && battle_check_undead(race,ele)) skill_castend_damage_id(src,target,sc_data[SC_AUTOSPELL].val2,skilllv,tick,flag); else @@ -4017,7 +4017,7 @@ int battle_weapon_attack( struct block_list *src,struct block_list *target, case 0: case 2: f = skill_castend_damage_id(src,target,sd->autospell_id,skilllv,tick,flag); break; - case 1:/* 支援系 */ + case 1:/* ソスxソスソスソスn */ if((sd->autospell_id==AL_HEAL || (sd->autospell_id==ALL_RESURRECTION && target->type != BL_PC)) && battle_check_undead(race,ele)) f = skill_castend_damage_id(src,target,sd->autospell_id,skilllv,tick,flag); else @@ -4067,7 +4067,7 @@ int battle_weapon_attack( struct block_list *src,struct block_list *target, skill_status_change_start(src,SC_BLADESTOP,lv,1,(int)src,(int)target,skill_get_time2(MO_BLADESTOP,lv),0); skill_status_change_start(target,SC_BLADESTOP,lv,2,(int)target,(int)src,skill_get_time2(MO_BLADESTOP,lv),0); } - if(t_sc_data && t_sc_data[SC_SPLASHER].timer!=-1) //殴ったので対象のベナムスプラッシャー状態を解除 + if(t_sc_data && t_sc_data[SC_SPLASHER].timer!=-1) //ソスソスソスソスソスソスフで対象のベソスiソスソスソスXソスvソスソスソスbソスVソスソスソス[ソスソスソスヤゑソスソスソスソスソス skill_status_change_end(target,SC_SPLASHER,-1); map_freeblock_unlock(); @@ -4093,12 +4093,12 @@ int battle_check_undead(int race,int element) } /*========================================== - * 敵味方判定(1=肯定,0=否定,-1=エラー) - * flag&0xf0000 = 0x00000:敵じゃないか判定(ret:1=敵ではない) - * = 0x10000:パーティー判定(ret:1=パーティーメンバ) - * = 0x20000:全て(ret:1=敵味方両方) - * = 0x40000:敵か判定(ret:1=敵) - * = 0x50000:パーティーじゃないか判定(ret:1=パーティでない) + * ソスGソスソスソスソスソスソスソスソス(1=ソスmソスソス,0=ソスロ抵ソス,-1=ソスGソスソスソス[) + * flag&0xf0000 = 0x00000:ソスGソスソスソスソスソスネゑソスソスソスソスソスソスソスソスiret:1ソスソスソスGソスナはなゑソスソスj + * = 0x10000:ソスpソス[ソスeソスBソス[ソスソスソスソスソスiret:1=ソスpソス[ソスeソスBソス[ソスソスソスソスソスo) + * = 0x20000:ソスSソスソス(ret:1=ソスGソスソスソスソスソスソスソスソス) + * = 0x40000:ソスGソスソスソスソスソスソス(ret:1=ソスG) + * = 0x50000:ソスpソス[ソスeソスBソス[ソスソスソスソスソスネゑソスソスソスソスソスソスソス(ret:1=ソスpソス[ソスeソスBソスナなゑソス) *------------------------------------------ */ int battle_check_target( struct block_list *src, struct block_list *target,int flag) @@ -4109,7 +4109,7 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f nullpo_retr(0, src); nullpo_retr(0, target); - if( flag&0x40000 ){ // 反転フラグ + if( flag&0x40000 ){ // ソスソスソス]ソスtソスソスソスO int ret=battle_check_target(src,target,flag&0x30000); if(ret!=-1) return !ret; @@ -4123,7 +4123,7 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f return -1; } - if(src->type == BL_SKILL && target->type == BL_SKILL) // 対象がスキルユニットなら無条件肯定 + if(src->type == BL_SKILL && target->type == BL_SKILL) // ソスホ象ゑソスソスXソスLソスソスソスソスソスjソスbソスgソスネら無ソスソスmソスソス return -1; if(target->type == BL_PC && ((struct map_session_data *)target)->invincible_timer != -1) @@ -4139,7 +4139,7 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f } } - // スキルユニットの場合、親を求める + // ソスXソスLソスソスソスソスソスjソスbソスgソスフ場合ソスAソスeソスソス゚ゑソス if( src->type==BL_SKILL) { int inf2 = skill_get_inf2(((struct skill_unit *)src)->group->skill_id); if( (ss=map_id2bl( ((struct skill_unit *)src)->group->src_id))==NULL ) @@ -4157,19 +4157,19 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f return -1; } } - // Mobでmaster_idがあってspecial_mob_aiなら、召喚主を求める + // Mobソスソスmaster_idソスソスソスソスソスソスソスspecial_mob_aiソスネゑソスソスAソスソスソスソスソスソスソスソス゚ゑソス if( src->type==BL_MOB ){ struct mob_data *md=(struct mob_data *)src; if(md && md->master_id>0){ - if(md->master_id==target->id) // 主なら肯定 + if(md->master_id==target->id) // ソスソスソスネゑソスソスmソスソス return 1; if(md->state.special_mob_ai){ - if(target->type==BL_MOB){ //special_mob_aiで対象がMob + if(target->type==BL_MOB){ //special_mob_aiソスナ対象ゑソスMob struct mob_data *tmd=(struct mob_data *)target; if(tmd){ - if(tmd->master_id != md->master_id) //召喚主が一緒でなければ否定 + if(tmd->master_id != md->master_id) //ソスソスソスソスソス蛯ェソス齒擾ソスナなゑソスソスソスソスホ否抵ソス return 0; - else{ //召喚主が一緒なので肯定したいけど自爆は否定 + else{ //ソスソスソスソスソス蛯ェソス齒擾ソスネので肯ソス閧オソスソスソスソスソスソスソスヌ趣ソスソスソスソスヘ否抵ソス if(md->state.special_mob_ai>2) return 0; else @@ -4183,19 +4183,19 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f } } - if( src==target || ss==target ) // 同じなら肯定 + if( src==target || ss==target ) // ソスソスソスソスソスネゑソスソスmソスソス return 1; if(target->type == BL_PC && pc_isinvisible((struct map_session_data *)target)) return -1; - if( src->prev==NULL || // 死んでるならエラー + if( src->prev==NULL || // ソスソスソスソスソスナゑソスソスネゑソスソスGソスソスソス[ (src->type==BL_PC && pc_isdead((struct map_session_data *)src) ) ) return -1; if( (ss->type == BL_PC && target->type==BL_MOB) || (ss->type == BL_MOB && target->type==BL_PC) ) - return 0; // PCvsMOBなら否定 + return 0; // PCvsMOBソスネゑソスソスロ抵ソス s_p=battle_get_party_id(ss); s_g=battle_get_guild_id(ss); @@ -4204,19 +4204,19 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f t_g=battle_get_guild_id(target); if(flag&0x10000) { - if(s_p && t_p && s_p == t_p) // 同じパーティなら肯定(味方) + if(s_p && t_p && s_p == t_p) // ソスソスソスソスソスpソス[ソスeソスBソスネゑソスソスmソスソスソスiソスソスソスソスソスj return 1; - else // パーティ検索なら同じパーティじゃない時点で否定 + else // ソスpソス[ソスeソスBソスソスソスソスソスネら同ソスソスソスpソス[ソスeソスBソスソスソスソスソスネゑソスソスソスソス_ソスナ否抵ソス return 0; } - if(ss->type == BL_MOB && s_g > 0 && t_g > 0 && s_g == t_g ) // 同じギルド/mobクラスなら肯定(味方) + if(ss->type == BL_MOB && s_g > 0 && t_g > 0 && s_g == t_g ) // ソスソスソスソスソスMソスソスソスh/mobソスNソスソスソスXソスネゑソスソスmソスソスソスiソスソスソスソスソスj return 1; //printf("ss:%d src:%d target:%d flag:0x%x %d %d ",ss->id,src->id,target->id,flag,src->type,target->type); //printf("p:%d %d g:%d %d\n",s_p,t_p,s_g,t_g); - if( ss->type==BL_PC && target->type==BL_PC) { // 両方PVPモードなら否定(敵) + if( ss->type==BL_PC && target->type==BL_PC) { // ソスソスソスソスPVPソスソスソス[ソスhソスネゑソスソスロ抵ソスソスiソスGソスj struct skill_unit *su=NULL; if(src->type==BL_SKILL) su=(struct skill_unit *)src; @@ -4244,9 +4244,9 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f for(i=0;ialliance[i].guild_id > 0 && g->alliance[i].guild_id == t_g) { if(g->alliance[i].opposition) - return 0;//敵対ギルドなら無条件に敵 + return 0;//ソスGソスホギソスソスソスhソスネら無ソスソスノ敵 else - return 1;//同盟ギルドなら無条件に味方 + return 1;//ソスソスソスソスソスMソスソスソスhソスネら無ソスソスノ厄ソスソスソス } } } @@ -4254,10 +4254,10 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f } } - return 1; // 該当しないので無関係人物(まあ敵じゃないので味方) + return 1; // ソスYソスソスソスソスソスネゑソスソスフで厄ソスソスヨ係ソスlソスソスソスiソスワゑソスソスGソスソスソスソスソスネゑソスソスフで厄ソスソスソスソスj } /*========================================== - * 射程判定 + * ソスヒ抵ソスソス *------------------------------------------ */ int battle_check_range(struct block_list *src,struct block_list *bl,int range) @@ -4274,19 +4274,19 @@ int battle_check_range(struct block_list *src,struct block_list *bl,int range) dy=abs(bl->y-src->y); arange=((dx>dy)?dx:dy); - if(src->m != bl->m) // 違うマップ + if(src->m != bl->m) // ソス痰、ソス}ソスbソスv return 0; - if( range>0 && range < arange ) // 遠すぎる + if( range>0 && range < arange ) // ソスソスソスソスソスソスソスソス return 0; - if( arange<2 ) // 同じマスか隣接 + if( arange<2 ) // ソスソスソスソスソス}ソスXソスソスソスラ撰ソス return 1; // if(bl->type == BL_SKILL && ((struct skill_unit *)bl)->group->unit_id == 0x8d) // return 1; - // 障害物判定 + // ソスソスソスQソスソスソスソスソスソス wpd.path_len=0; wpd.path_pos=0; wpd.path_half=0; @@ -4301,7 +4301,7 @@ int battle_check_range(struct block_list *src,struct block_list *bl,int range) /*========================================== * Return numerical value of a switch configuration (modified by [Yor]) - * on/off, english, fran軋is, deutsch, espaol + * on/off, english, franソスais, deutsch, espaソスol *------------------------------------------ */ int battle_config_switch(const char *str) { @@ -4312,7 +4312,7 @@ int battle_config_switch(const char *str) { return atoi(str); } /*========================================== - * 設定ファイルを読み込む + * ソスン抵ソスソスtソス@ソスCソスソスソスソスソスヌみ搾ソスソスソス *------------------------------------------ */ int battle_config_read(const char *cfgName) @@ -4520,6 +4520,11 @@ int battle_config_read(const char *cfgName) battle_config.chat_spam_ban = 1; battle_config.chat_spam_warn = 8; battle_config.chat_maxline = 255; + + battle_config.trade_spam_threshold = 10; + battle_config.trade_spam_flood = 10; + battle_config.trade_spam_ban = 1; + battle_config.trade_spam_warn = 8; } fp = fopen(cfgName,"r"); @@ -4722,12 +4727,16 @@ int battle_config_read(const char *cfgName) { "castrate_dex_scale", &battle_config.castrate_dex_scale }, // added by [MouseJstr] { "area_size", &battle_config.area_size }, // added by [MouseJstr] { "muting_players", &battle_config.muting_players}, // added by [Apple] - { "chat_lame_penalty", &battle_config.chat_lame_penalty }, - { "chat_spam_threshold", &battle_config.chat_spam_threshold }, - { "chat_spam_flood", &battle_config.chat_spam_flood }, - { "chat_spam_ban", &battle_config.chat_spam_ban }, - { "chat_spam_warn", &battle_config.chat_spam_warn }, - { "chat_maxline", &battle_config.chat_maxline } + { "chat_lame_penalty", &battle_config.chat_lame_penalty }, + { "chat_spam_threshold", &battle_config.chat_spam_threshold }, + { "chat_spam_flood", &battle_config.chat_spam_flood }, + { "chat_spam_ban", &battle_config.chat_spam_ban }, + { "chat_spam_warn", &battle_config.chat_spam_warn }, + { "chat_maxline", &battle_config.chat_maxline }, + { "trade_spam_threshold", &battle_config.trade_spam_threshold }, + { "trade_spam_flood", &battle_config.trade_spam_flood }, + { "trade_spam_ban", &battle_config.trade_spam_ban }, + { "trade_spam_warn", &battle_config.trade_spam_warn } }; if (line[0] == '/' && line[1] == '/') @@ -4868,6 +4877,25 @@ int battle_config_read(const char *cfgName) else if (battle_config.chat_maxline > 512) battle_config.chat_maxline = 512; + if (battle_config.trade_spam_ban < 0) + battle_config.trade_spam_ban = 0; + else if (battle_config.trade_spam_ban > 32767) + battle_config.trade_spam_ban = 32767; + + if (battle_config.trade_spam_flood < 0) + battle_config.trade_spam_flood = 0; + else if (battle_config.trade_spam_flood > 32767) + battle_config.trade_spam_flood = 32767; + + if (battle_config.trade_spam_warn < 0) + battle_config.trade_spam_warn = 0; + else if (battle_config.trade_spam_warn > 32767) + battle_config.trade_spam_warn = 32767; + + if (battle_config.trade_spam_threshold < 0) + battle_config.trade_spam_threshold = 0; + else if (battle_config.trade_spam_threshold > 32767) + battle_config.trade_spam_threshold = 32767; // at least 1 client must be accepted if ((battle_config.packet_ver_flag & 63) == 0) // added by [Yor] diff --git a/src/map/battle.h b/src/map/battle.h index 3c46586..3a0c380 100644 --- a/src/map/battle.h +++ b/src/map/battle.h @@ -2,24 +2,24 @@ #ifndef _BATTLE_H_ #define _BATTLE_H_ -// ダメージ +// ソス_ソスソスソス[ソスW struct Damage { int damage,damage2; int type,div_; int amotion,dmotion; int blewcount; int flag; - int dmg_lv; //囲まれ減算計算用 0:スキル攻撃 ATK_LUCKY,ATK_FLEE,ATK_DEF + int dmg_lv; //ソスヘまれ減ソスZソスvソスZソスpソス@0:ソスXソスLソスソスソスUソスソス ATK_LUCKY,ATK_FLEE,ATK_DEF }; -// 属性表(読み込みはpc.c、battle_attr_fixで使用) +// ソスソスソスソスソス\ソスiソスヌみ搾ソスソスンゑソスpc.cソスAbattle_attr_fixソスナ使ソスpソスj extern int attr_fix_table[4][10][10]; struct map_session_data; struct mob_data; struct block_list; -// ダメージ計算 +// ソス_ソスソスソス[ソスWソスvソスZ struct Damage battle_calc_attack( int attack_type, struct block_list *bl,struct block_list *target,int skill_num,int skill_lv,int flag); @@ -30,12 +30,12 @@ struct Damage battle_calc_magic_attack( struct Damage battle_calc_misc_attack( struct block_list *bl,struct block_list *target,int skill_num,int skill_lv,int flag); -// 属性修正計算 +// ソスソスソスソスソスCソスソスソスvソスZ int battle_attr_fix(int damage,int atk_elem,int def_elem); -// ダメージ最終計算 +// ソス_ソスソスソス[ソスWソスナ終ソスvソスZ int battle_calc_damage(struct block_list *src,struct block_list *bl,int damage,int div_,int skill_num,int skill_lv,int flag); -enum { // 最終計算のフラグ +enum { // ソスナ終ソスvソスZソスフフソスソスソスO BF_WEAPON = 0x0001, BF_MAGIC = 0x0002, BF_MISC = 0x0004, @@ -48,20 +48,20 @@ enum { // BF_SKILLMASK= 0x0f00, }; -// 実際にHPを増減 +// ソスソスロゑソスHPソス増鯉ソス int battle_delay_damage(unsigned int tick,struct block_list *src,struct block_list *target,int damage,int flag); int battle_damage(struct block_list *bl,struct block_list *target,int damage,int flag); int battle_heal(struct block_list *bl,struct block_list *target,int hp,int sp,int flag); -// 攻撃や移動を止める +// ソスUソスソスソスソスソスレ難ソスソスソスソス~ソス゚ゑソス int battle_stopattack(struct block_list *bl); int battle_stopwalking(struct block_list *bl,int type); -// 通常攻撃処理まとめ +// ソスハ擾ソスソスUソスソスソスソスソスソスソスワとゑソス int battle_weapon_attack( struct block_list *bl,struct block_list *target, unsigned int tick,int flag); -// 各種パラメータを得る +// ソスeソスソスソスpソスソスソスソスソス[ソス^ソス得ゑソス int battle_counttargeted(struct block_list *bl,struct block_list *src,int target_lv); int battle_get_class(struct block_list *bl); int battle_get_dir(struct block_list *bl); @@ -91,7 +91,7 @@ int battle_get_amotion(struct block_list *bl); int battle_get_dmotion(struct block_list *bl); int battle_get_element(struct block_list *bl); int battle_get_attack_element(struct block_list *bl); -int battle_get_attack_element2(struct block_list *bl); //左手武器属性取得 +int battle_get_attack_element2(struct block_list *bl); //ソスソスソス阨撰ソス属ソスソスソス謫セ #define battle_get_elem_type(bl) (battle_get_element(bl)%10) #define battle_get_elem_level(bl) (battle_get_element(bl)/10/2) int battle_get_party_id(struct block_list *bl); @@ -122,7 +122,7 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f int battle_check_range(struct block_list *src,struct block_list *bl,int range); -// 設定 +// ソスン抵ソス int battle_config_switch(const char *str); // [Valaris] @@ -318,6 +318,11 @@ extern struct Battle_Config { int chat_spam_ban; int chat_spam_warn; int chat_maxline; + + int trade_spam_threshold; + int trade_spam_flood; + int trade_spam_ban; + int trade_spam_warn; int drop_pickup_safety_zone; // [Fate] Max. distance to an object dropped by a kill by self in which dropsteal protection works diff --git a/src/map/clif.c b/src/map/clif.c index d10effb..1f88ed8 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -7084,7 +7084,7 @@ void clif_parse_TradeRequest(int fd,struct map_session_data *sd) nullpo_retv(sd); if(battle_config.basic_skill_check == 0 || pc_checkskill(sd,NV_BASIC) >= 1){ - tmw_CheckChatSpam(sd, NULL); + tmw_CheckTradeSpam(sd); trade_traderequest(sd,RFIFOL(sd->fd,2)); } else clif_skill_fail(sd,1,0,0); diff --git a/src/map/map.h b/src/map/map.h index 7275734..1cdcc2f 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -273,8 +273,8 @@ struct map_session_data { int castrate,hprate,sprate,dsprate; int addele[10],addrace[12],addsize[3],subele[10],subrace[12]; int addeff[10],addeff2[10],reseff[10]; - int watk_,watk_2,atkmods_[3],addele_[10],addrace_[12],addsize_[3]; //二刀流のために追加 - int atk_ele_,star_,overrefine_; //二刀流のために追加 + int watk_,watk_2,atkmods_[3],addele_[10],addrace_[12],addsize_[3]; //ソス刀暦ソスソスフゑソスソス゚に追会ソス + int atk_ele_,star_,overrefine_; //ソス刀暦ソスソスフゑソスソス゚に追会ソス int base_atk,atk_rate; int arrow_atk,arrow_ele,arrow_cri,arrow_hit,arrow_range; int arrow_addele[10],arrow_addrace[12],arrow_addsize[3],arrow_addeff[10],arrow_addeff2[10]; @@ -358,6 +358,9 @@ struct map_session_data { time_t chat_reset_due; int chat_lines_in; char chat_lastmsg[513]; + + time_t trade_reset_due; + int trades_in; }; struct npc_timerevent_list { @@ -400,7 +403,7 @@ struct npc_data { } warp; char *message; // for MESSAGE: only send this message } u; - // ここにメンバを追加してはならない(shop_itemが可変長の為) + // ソスソスソスソスソスノソスソスソスソスoソスソスソスヌ会ソスソスソストはなゑソスソスネゑソス(shop_itemソスソスソスツ変抵ソスソスフ茨ソス) char eventqueue[MAX_EVENTQUEUE][50]; int eventtimer[MAX_EVENTTIMER]; @@ -493,12 +496,12 @@ enum { MS_IDLE,MS_WALK,MS_ATTACK,MS_DEAD,MS_DELAY }; enum { NONE_ATTACKABLE,ATTACKABLE }; -enum { ATK_LUCKY=1,ATK_FLEE,ATK_DEF}; // 囲まれペナルティ計算用 +enum { ATK_LUCKY=1,ATK_FLEE,ATK_DEF}; // ソスヘまゑソスソスyソスiソスソスソスeソスBソスvソスZソスp struct map_data { char name[24]; char alias[24]; // [MouseJstr] - unsigned char *gat; // NULLなら下のmap_data_other_serverとして扱う + unsigned char *gat; // NULLソスネら下ソスソスmap_data_other_serverソスニゑソスソスト茨ソスソスソス struct block_list **block; struct block_list **block_mob; int *block_count,*block_mob_count; @@ -546,7 +549,7 @@ struct map_data { }; struct map_data_other_server { char name[24]; - unsigned char *gat; // NULL固定にして判断 + unsigned char *gat; // NULLソスナ抵ソスソスノゑソスソスト費ソスソスf unsigned long ip; unsigned int port; }; @@ -649,14 +652,14 @@ extern char talkie_mes[]; extern char wisp_server_name[]; -// 鯖全体情報 +// ソスIソスSソスフ擾ソスソスソス void map_setusers(int); int map_getusers(void); -// block削除関連 +// blockソス除ソスヨ連 int map_freeblock( void *bl ); int map_freeblock_lock(void); int map_freeblock_unlock(void); -// block関連 +// blockソスヨ連 int map_addblock(struct block_list *); int map_delblock(struct block_list *); void map_foreachinarea(int (*)(struct block_list*,va_list),int,int,int,int,int,int,...); @@ -664,9 +667,9 @@ void map_foreachinarea(int (*)(struct block_list*,va_list),int,int,int,int,int,i void map_foreachincell(int (*)(struct block_list*,va_list),int,int,int,int,...); void map_foreachinmovearea(int (*)(struct block_list*,va_list),int,int,int,int,int,int,int,int,...); int map_countnearpc(int,int,int); -//block関連に追加 +//blockソスヨ連ソスノ追会ソス int map_count_oncell(int m,int x,int y); -// 一時的object関連 +// ソス齊橸ソスIobjectソスヨ連 int map_addobject(struct block_list *); int map_delobject(int, int type); int map_delobjectnofree(int id, int type); @@ -676,7 +679,7 @@ int map_quit(struct map_session_data *); // npc int map_addnpc(int,struct npc_data *); -// 床アイテム関連 +// ソスソスソスAソスCソスeソスソスソスヨ連 int map_clearflooritem_timer(int,unsigned int,int,int); #define map_clearflooritem(id) map_clearflooritem_timer(0,0,id,1) int map_addflooritem_any(struct item *,int amount,int m,int x,int y, @@ -686,7 +689,7 @@ int map_addflooritem_any(struct item *,int amount,int m,int x,int y, int map_addflooritem(struct item *,int,int,int,int,struct map_session_data *,struct map_session_data *,struct map_session_data *,int); int map_searchrandfreecell(int,int,int,int); -// キャラid=>キャラ名 変換関連 +// ソスLソスソスソスソスidソスソスソスソスソスLソスソスソスソスソスソス ソスマ奇ソスソスヨ連 void map_addchariddb(int charid,char *name); void map_delchariddb(int charid); int map_reqchariddb(struct map_session_data * sd,int charid); @@ -711,15 +714,15 @@ struct map_session_data * map_get_last_session(); struct map_session_data * map_get_next_session(struct map_session_data *current); struct map_session_data * map_get_prev_session(struct map_session_data *current); -// gat関連 +// gatソスヨ連 int map_getcell(int,int,int); int map_setcell(int,int,int,int); -// その他 +// ソスソスソスフ托ソス int map_check_dir(int s_dir,int t_dir); int map_calc_dir( struct block_list *src,int x,int y); -// path.cより +// path.cソスソスソスソス int path_search(struct walkpath_data*,int,int,int,int,int,int); int path_blownpos(int m,int x0,int y0,int dx,int dy,int count); diff --git a/src/map/pc.c b/src/map/pc.c index 630a15b..b3626df 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -815,6 +815,8 @@ int pc_authok(int id, int login_id2, time_t connect_until_time, short tmw_versio sd->chat_reset_due = sd->chat_lines_in = 0; sd->chat_lastmsg[0] = '\0'; + + sd->trade_reset_due = sd->trades_in = 0; // message of the limited time of the account if (connect_until_time != 0) { // don't display if it's unlimited or unknow value diff --git a/src/map/tmw.c b/src/map/tmw.c index ba02189..5d4c991 100644 --- a/src/map/tmw.c +++ b/src/map/tmw.c @@ -116,3 +116,36 @@ void tmw_GmHackMsg(const char *fmt, ...) { intif_wis_message_to_gm(wisp_server_name, battle_config.hack_info_GM_level, outbuf, strlen(outbuf) + 1); } + +int tmw_CheckTradeSpam(struct map_session_data *sd) { + nullpo_retr(1, sd); + time_t now = time(NULL); + + if (pc_isGM(sd)) return 0; + + if (now > sd->trade_reset_due) { + sd->trade_reset_due = now + battle_config.trade_spam_threshold; + sd->trades_in = 0; + } + + sd->trades_in++; + + if (sd->trades_in >= battle_config.trade_spam_flood) { + sd->trades_in = 0; + tmw_GmHackMsg("Trade spam detected from character '%s' (account: %d)", sd->status.name, sd->status.account_id); + + if (battle_config.trade_spam_ban > 0) { + clif_displaymessage(sd->fd, "You have been banned for trade spamming. Please do not trade spam."); + tmw_GmHackMsg("This player has been banned for %d hour(s).", battle_config.trade_spam_ban); + + chrif_char_ask_name(-1, sd->status.name, 2, 0, 0, 0, battle_config.trade_spam_ban, 0, 0); // type: 2 - ban (year, month, day, hour, minute, second) + clif_setwaitclose(sd->fd); + } + } + + if (battle_config.trade_spam_ban && sd->trades_in >= battle_config.trade_spam_warn) { + clif_displaymessage(sd->fd, "WARNING : You are about to be automaticly banned for trade spam!"); + } + + return 0; +} diff --git a/src/map/tmw.h b/src/map/tmw.h index 87066d9..92bcaf4 100644 --- a/src/map/tmw.h +++ b/src/map/tmw.h @@ -5,3 +5,4 @@ int tmw_CheckChatSpam(struct map_session_data *sd, char* message); int tmw_CheckChatLameness(struct map_session_data *sd, char *message); void tmw_GmHackMsg(const char *fmt, ...); +int tmw_CheckTradeSpam(struct map_session_data *sd); -- cgit v1.2.3-70-g09d2