diff options
author | Jesusalva Jesusalva <jesusalva@themanaworld.org> | 2022-10-24 23:33:34 +0000 |
---|---|---|
committer | Jesusalva Jesusalva <jesusalva@themanaworld.org> | 2022-10-24 23:33:34 +0000 |
commit | 886182e8757ae133df1b00f4650a9b48e0a3c3e0 (patch) | |
tree | 9e9c0cb3cca49cd5080f5ae2ed361c4e98165efb /src/map/skill.cpp | |
parent | 9a3566484f2345db599552a6c18311978a0071ea (diff) | |
parent | d3942a51238f34ae7807e5747f6569b55924e0d1 (diff) | |
download | tmwa-886182e8757ae133df1b00f4650a9b48e0a3c3e0.tar.gz tmwa-886182e8757ae133df1b00f4650a9b48e0a3c3e0.tar.bz2 tmwa-886182e8757ae133df1b00f4650a9b48e0a3c3e0.tar.xz tmwa-886182e8757ae133df1b00f4650a9b48e0a3c3e0.zip |
Merge branch 'sc_cooldown' into 'master'
Sc cooldown added frillyar and kaflosh status symbols and <1s fix
See merge request legacy/tmwa!236
Diffstat (limited to 'src/map/skill.cpp')
-rw-r--r-- | src/map/skill.cpp | 57 |
1 files changed, 34 insertions, 23 deletions
diff --git a/src/map/skill.cpp b/src/map/skill.cpp index 4207b93..b90207f 100644 --- a/src/map/skill.cpp +++ b/src/map/skill.cpp @@ -662,11 +662,13 @@ int skill_castcancel(dumb_ptr<block_list> bl, int) /*---------------------------------------------------------------------------- * ステータス異常 + * Status anomalies *---------------------------------------------------------------------------- */ /*========================================== * ステータス異常終了 + * Abnormal end of status *------------------------------------------ */ int skill_status_change_active(dumb_ptr<block_list> bl, StatusChange type) @@ -732,26 +734,30 @@ void skill_status_change_end(dumb_ptr<block_list> bl, StatusChange type, TimerDa assert (!sc_data[type].timer); switch (type) - { /* 異常の種類ごとの処理 */ - case StatusChange::SC_SPEEDPOTION0: /* 増速ポーション */ + { /* 異常の種類ごとの処理 | Processing by type of anomaly */ + case StatusChange::SC_SPEEDPOTION0: /* 増速ポーション | Speed Increasing Potion */ case StatusChange::SC_ATKPOT: /* attack potion [Valaris] */ case StatusChange::SC_MATKPOT: /* magic attack potion [Valaris] */ case StatusChange::SC_PHYS_SHIELD: case StatusChange::SC_HASTE: + calc_flag = 1; + break; + case StatusChange::SC_COOLDOWN: case StatusChange::SC_COOLDOWN_MG: case StatusChange::SC_COOLDOWN_MT: - calc_flag = 1; + case StatusChange::SC_COOLDOWN_R: + case StatusChange::SC_COOLDOWN_AR: break; /* option2 */ - case StatusChange::SC_POISON: /* 毒 */ + case StatusChange::SC_POISON: /* 毒 | poison */ calc_flag = 1; break; } if (bl->bl_type == BL::PC && type < StatusChange::SC_SENDMAX) - clif_status_change(bl, type, 0); /* アイコン消去 */ + clif_status_change(bl, type, 0); /* アイコン消去 | Icon Clearing */ switch (type) { @@ -778,11 +784,11 @@ void skill_status_change_end(dumb_ptr<block_list> bl, StatusChange type, TimerDa break; } - if (opt_flag) /* optionの変更を伝える */ + if (opt_flag) /* optionの変更を伝える | Communicate option changes */ clif_changeoption(bl); if (bl->bl_type == BL::PC && calc_flag) - pc_calcstatus(bl->is_player(), 0); /* ステータス再計算 */ + pc_calcstatus(bl->is_player(), 0); /* ステータス再計算 | Status Recalculation */ } int skill_update_heal_animation(dumb_ptr<map_session_data> sd) @@ -806,6 +812,7 @@ int skill_update_heal_animation(dumb_ptr<map_session_data> sd) /*========================================== * ステータス異常終了タイマー + * Status abnormal end timer *------------------------------------------ */ void skill_status_change_timer(TimerData *tid, tick_t tick, BlockId id, StatusChange type) @@ -816,7 +823,7 @@ void skill_status_change_timer(TimerData *tid, tick_t tick, BlockId id, StatusCh if ((bl = map_id2bl(id)) == nullptr) return; - //該当IDがすでに消滅しているというのはいかにもありそうなのでスルーしてみる + // 該当IDがすでに消滅しているというのはいかにもありそうなのでスルーしてみる | It seems that the corresponding ID has already disappeared, so let's go through it sc_data = battle_get_sc_data(bl); if (not sc_data) return; @@ -870,7 +877,7 @@ void skill_status_change_timer(TimerData *tid, tick_t tick, BlockId id, StatusCh // If you manually reschedule the timer, you MUST skip the // call to skill_status_change_end below. - /* 時間切れ無し?? */ + /* 時間切れ無し?? | No time out? ? */ case StatusChange::SC_WEIGHT50: case StatusChange::SC_WEIGHT90: sc_data[type].timer = Timer(tick + 10_min, @@ -889,6 +896,7 @@ void skill_status_change_timer(TimerData *tid, tick_t tick, BlockId id, StatusCh /*========================================== * ステータス異常開始 + * Abnormal status start *------------------------------------------ */ int skill_status_change_start(dumb_ptr<block_list> bl, StatusChange type, @@ -948,7 +956,7 @@ int skill_status_effect(dumb_ptr<block_list> bl, StatusChange type, } if (sc_data[type].timer) - { /* すでに同じ異常になっている場合タイマ解除 */ + { /* すでに同じ異常になっている場合タイマ解除 | Cancel the timer if the same error has already occurred */ if (sc_data[type].val1 > val1 && type != StatusChange::SC_SPEEDPOTION0 && type != StatusChange::SC_ATKPOT @@ -957,7 +965,7 @@ int skill_status_effect(dumb_ptr<block_list> bl, StatusChange type, if (type == StatusChange::SC_POISON) return 0; - /* 継ぎ足しができない状態異常である時は状態異常を行わない */ + /* 継ぎ足しができない状態異常である時は状態異常を行わない | If the status ailment cannot be replenished, the status ailment will not be applied. */ { sc_data[type].timer.cancel(); } @@ -965,13 +973,13 @@ int skill_status_effect(dumb_ptr<block_list> bl, StatusChange type, switch (type) { - /* 異常の種類ごとの処理 */ + /* 異常の種類ごとの処理 | Actions by type of anomaly */ case StatusChange::SC_SLOWPOISON: if (!sc_data[StatusChange::SC_POISON].timer) return 0; break; - case StatusChange::SC_SPEEDPOTION0: /* 増速ポーション */ + case StatusChange::SC_SPEEDPOTION0: /* 増速ポーション | speed boost potion */ *opt2 |= Opt2::_speedpotion0; calc_flag = 1; // val2 = 5*(2+type-StatusChange::SC_SPEEDPOTION0); @@ -986,7 +994,7 @@ int skill_status_effect(dumb_ptr<block_list> bl, StatusChange type, break; /* option2 */ - case StatusChange::SC_POISON: /* 毒 */ + case StatusChange::SC_POISON: /* 毒 | poison */ calc_flag = 1; { int sc_def = @@ -1006,13 +1014,15 @@ int skill_status_effect(dumb_ptr<block_list> bl, StatusChange type, case StatusChange::SC_HASTE: case StatusChange::SC_PHYS_SHIELD: case StatusChange::SC_MBARRIER: - case StatusChange::SC_COOLDOWN: - case StatusChange::SC_COOLDOWN_MG: - case StatusChange::SC_COOLDOWN_MT: calc_flag = 1; break; case StatusChange::SC_HALT_REGENERATE: case StatusChange::SC_HIDE: + case StatusChange::SC_COOLDOWN: + case StatusChange::SC_COOLDOWN_MG: + case StatusChange::SC_COOLDOWN_MT: + case StatusChange::SC_COOLDOWN_R: + case StatusChange::SC_COOLDOWN_AR: break; case StatusChange::SC_FLYING_BACKPACK: updateflag = SP::WEIGHT; @@ -1024,9 +1034,9 @@ int skill_status_effect(dumb_ptr<block_list> bl, StatusChange type, } if (bl->bl_type == BL::PC && type < StatusChange::SC_SENDMAX) - clif_status_change(bl, type, 1); /* アイコン表示 */ + clif_status_change(bl, type, 1); /* アイコン表示 | Icon display */ - /* optionの変更 */ + /* optionの変更 | Changing an Option */ switch (type) { case StatusChange::SC_POISON: @@ -1044,27 +1054,28 @@ int skill_status_effect(dumb_ptr<block_list> bl, StatusChange type, break; } - if (opt_flag) /* optionの変更 */ + if (opt_flag) /* optionの変更 | Changing an Option */ clif_changeoption(bl); sc_data[type].val1 = val1; - /* タイマー設定 */ + /* タイマー設定 | timer setting */ sc_data[type].timer = Timer(gettick() + tick, std::bind(skill_status_change_timer, ph::_1, ph::_2, bl->bl_id, type)); if (bl->bl_type == BL::PC && calc_flag) - pc_calcstatus(sd, 0); /* ステータス再計算 */ + pc_calcstatus(sd, 0); /* ステータス再計算 | Status recalculation */ if (bl->bl_type == BL::PC && updateflag != SP::ZERO) - clif_updatestatus(sd, updateflag); /* ステータスをクライアントに送る */ + clif_updatestatus(sd, updateflag); /* ステータスをクライアントに送る | Send status to client */ return 0; } /*========================================== * ステータス異常全解除 + * Remove all status abnormalities *------------------------------------------ */ int skill_status_change_clear(dumb_ptr<block_list> bl, int type) |