This commit is contained in:
aozhiwei 2022-08-15 14:18:46 +08:00
parent 386fa81684
commit 66f6e7429f
3 changed files with 19 additions and 1 deletions

View File

@ -893,7 +893,7 @@ bool Creature::CanUseSkill(int skill_id)
if (IsHuman() && AsHuman()->downed) {
return false;
}
return skill->GetCurrTimes() > 0;
return skill->GetCurrTimes() > 0 || skill->GetMinorType() != SMT_NONE;
}
void Creature::DoSkill(int skill_id,
@ -904,6 +904,10 @@ void Creature::DoSkill(int skill_id,
{
Skill* skill = GetSkill(skill_id);
if (skill && CanUseSkill(skill_id)) {
if (skill->GetMinorType()) {
skill->DoMinorMode();
return;
}
DoSkillPreProc(skill_id, target_id, target_pos);
ResetSkill();
skill_target_id_ = target_id;

View File

@ -70,6 +70,7 @@ void Skill::FillMFSkill(cs::MFSkill* skill_pb)
skill_pb->set_max_times(GetMaxTimes());
if (minor_type_) {
skill_pb->set_minor_type(minor_type_);
skill_pb->set_minor_cd_time(minor_cd_time_);
}
}
@ -194,5 +195,16 @@ void Skill::AddMinorMode(
{
minor_type_ = minor_type;
minor_cd_time_ = minor_cd_time;
minor_frameno_ = owner->room->GetFrameNo();
minor_cb_ = cb;
}
void Skill::DoMinorMode()
{
if (GetMinorType() != SMT_NONE) {
minor_cb_();
minor_type_ = SMT_NONE;
minor_cd_time_ = 0;
minor_cb_ = nullptr;
}
}

View File

@ -47,6 +47,7 @@ class Skill
int minor_cd_time,
std::function<void()> cb
);
void DoMinorMode();
void ClearPassiveSkillBuff();
void AddPassiveSkillBuff();
@ -60,5 +61,6 @@ private:
int curr_exp_ = 0;
int minor_type_ = 0;
int minor_cd_time_ = 0;
long long minor_frameno_ = 0;
std::function<void()> minor_cb_;
};