1`
This commit is contained in:
parent
386fa81684
commit
66f6e7429f
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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_;
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user