1
This commit is contained in:
parent
b810720ac9
commit
837ed5b259
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
},
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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()
|
||||
|
@ -55,7 +55,7 @@ private:
|
||||
void Proc30301XL();
|
||||
void ProcSWZB();
|
||||
void ProcCMXD();
|
||||
void ProcMYXY();
|
||||
void Proc30601DJS();
|
||||
void ProcGZJS();
|
||||
void ProcJYFH();
|
||||
void ProcFH();
|
||||
|
Loading…
x
Reference in New Issue
Block a user