This commit is contained in:
aozhiwei 2023-02-14 17:08:13 +08:00
parent b810720ac9
commit 837ed5b259
5 changed files with 32 additions and 49 deletions

View File

@ -473,6 +473,12 @@ enum PolyExtDataFlag_e
kWater3ExtFlag = 3, //游泳不能射击
};
A8_DECLARE_ENUM(TimerUserEvent_e,
kCheckShotHoldStateTimerEvent = 100,
kShenBaoAddTimeTimerEvent,
kAddDjsHaloRangeTimerEvent
);
const char* const PROJ_NAME_FMT = "game%d_gameserver";
const char* const PROJ_ROOT_FMT = "/data/logs/%s";
@ -530,8 +536,5 @@ const int ANDROID_AI_ID_START = 10001;
const int MAX_SKILL_LV = 15;
const int CHECK_SHOT_HOLD_STATE_TIMER_EVENT = a8::TIMER_USER_EVENT + 1;
const int SHEN_BAO_ADD_TIME_TIMER_EVENT = a8::TIMER_USER_EVENT + 2;
const int kReviveTimeAdd = 12;
const int kSkinNum = 4;

View File

@ -2191,7 +2191,7 @@ void Human::ProcUseItemAction()
+stats.use_medicine_times;
if (!shen_bao_timer.expired()) {
a8::Args args({item_meta->time()});
room->xtimer.FireEvent(shen_bao_timer, SHEN_BAO_ADD_TIME_TIMER_EVENT, &args);
room->xtimer.FireEvent(shen_bao_timer, kShenBaoAddTimeTimerEvent, &args);
} else {
int exec_time = 0;
int total_time = item_meta->time();
@ -2208,7 +2208,7 @@ void Human::ProcUseItemAction()
} else {
AddHp(heal);
}
} else if (SHEN_BAO_ADD_TIME_TIMER_EVENT == event) {
} else if (kShenBaoAddTimeTimerEvent == event) {
total_time += args->Get<int>(0);
}
},

View File

@ -1456,7 +1456,7 @@ void Player::CheckShotHoldState(Weapon* weapon)
}
if (!shot_hold_timer.expired()) {
a8::Args args({weapon->meta->_buff_meta->buff_id()});
room->xtimer.FireEvent(shot_hold_timer, CHECK_SHOT_HOLD_STATE_TIMER_EVENT, &args);
room->xtimer.FireEvent(shot_hold_timer, kCheckShotHoldStateTimerEvent, &args);
}
//second
if (shot_hold_timer.expired()) {
@ -1471,7 +1471,7 @@ void Player::CheckShotHoldState(Weapon* weapon)
if (dead || !shot_hold) {
room->xtimer.Delete(shot_hold_timer);
}
} else if (CHECK_SHOT_HOLD_STATE_TIMER_EVENT == event) {
} else if (kCheckShotHoldStateTimerEvent == event) {
if (args->Get<int>(0) != buff_id) {
room->xtimer.Delete(shot_hold_timer);
}

View File

@ -277,7 +277,7 @@ void Skill::InitPassiveSkill()
break;
case MAGIC_30601_DJS:
{
ProcMYXY();
Proc30601DJS();
}
break;
case MAGIC_30701_BAO:
@ -606,54 +606,34 @@ void Skill::ProcCMXD()
);
}
void Skill::ProcMYXY()
void Skill::Proc30601DJS()
{
float speed_rate = SkillHelper::GetMyxySpeedRate(meta);
float atk_rate = SkillHelper::GetMyxyAtkRate(meta);
std::shared_ptr<int> immune_buff_uniid = std::make_shared<int>(0);
a8::XTimerWp timer = owner->room->xtimer.SetIntervalWpEx
(
GetCd() / FRAME_RATE_MS,
[this] (int event, const a8::Args* args)
{
if (a8::TIMER_EXEC_EVENT == event) {
if (!owner->dead) {
}
}
},
&xtimer_attacher);
owner->GetTrigger()->AddListener
(
kUseSkillEvent,
[this, speed_rate, atk_rate, immune_buff_uniid]
(const a8::Args& args)
[this, timer] (const a8::Args& args) mutable
{
Skill* skill = args.Get<Skill*>(0);
if (skill->meta->GetMagicId() != MAGIC_20201_HX) {
return;
}
owner->GetAbility()->AddSpeedAddition(speed_rate);
if (*immune_buff_uniid) {
owner->RemoveBuffByUniId(*immune_buff_uniid);
*immune_buff_uniid = 0;
}
if (!timer.expired()) {
Skill* skill = args.Get<Skill*>(0);
if (skill->meta->GetMagicId() == MAGIC_20601_DJS) {
owner->TryAddBuff
(owner,
kDispelEffectBuffId,
meta);
*immune_buff_uniid = owner->TryAddBuffAndSetTime
(owner,
kImmuneEffectBuffId,
meta->_number_meta->_float_time * 1000,
meta);
owner->GetAbility()->DelSpeedAddition(speed_rate);
}
}
}
);
#ifdef DEBUG
{
std::string dbg_msg = a8::Format
(
"skill_id:%d 免疫眩晕 攻击力:%f 移动提升:%f",
{
meta->skill_id(),
atk_rate,
speed_rate
});
owner->SendDebugMsg(dbg_msg);
a8::XPrintf("%s\n", {dbg_msg});
}
#endif
}
void Skill::ProcGZJS()

View File

@ -55,7 +55,7 @@ private:
void Proc30301XL();
void ProcSWZB();
void ProcCMXD();
void ProcMYXY();
void Proc30601DJS();
void ProcGZJS();
void ProcJYFH();
void ProcFH();