处理翻滚

This commit is contained in:
aozhiwei 2021-04-28 15:36:56 +08:00
parent d8fe3ecd20
commit 0c0bc77fa7
7 changed files with 15 additions and 4 deletions

View File

@ -379,7 +379,9 @@ const int ZOMBIE_RACE_META_START_ID = 6001;
const int TERMINATOR_BUFF_ID = 1033; const int TERMINATOR_BUFF_ID = 1033;
#if 0
const int TURN_OVER_SKILL_ID = 41001; const int TURN_OVER_SKILL_ID = 41001;
#endif
const int HUNLUAN_BUFFID = 6001; const int HUNLUAN_BUFFID = 6001;

View File

@ -549,7 +549,11 @@ void Creature::DoSkill(int skill_id,
RemoveBuffByEffectId(kBET_Camouflage); RemoveBuffByEffectId(kBET_Camouflage);
} }
DoSkillPostProc(true, skill_id, target_id, target_pos); DoSkillPostProc(true, skill_id, target_id, target_pos);
#if 0
if (skill_id != TURN_OVER_SKILL_ID) { if (skill_id != TURN_OVER_SKILL_ID) {
#else
{
#endif
CreatureWeakPtr ptr; CreatureWeakPtr ptr;
ptr.Attach(this); ptr.Attach(this);
room->frame_event.AddPlaySkill(ptr, skill_id); room->frame_event.AddPlaySkill(ptr, skill_id);
@ -935,7 +939,7 @@ void Creature::ClearSkill()
{ {
Skill* reserve_skill = nullptr; Skill* reserve_skill = nullptr;
for (auto& pair : skill_hash_) { for (auto& pair : skill_hash_) {
if (pair.second->meta->i->skill_id() == TURN_OVER_SKILL_ID) { if (pair.second->meta->IsTurnOverSkill()) {
reserve_skill = pair.second; reserve_skill = pair.second;
} else { } else {
delete pair.second; delete pair.second;

View File

@ -544,6 +544,11 @@ namespace MetaData
} }
} }
bool Skill::IsTurnOverSkill()
{
return !phases.empty() && phases[0].func_id == kSkill_TurnOver;
}
void Buff::Init() void Buff::Init()
{ {
param1 = a8::XValue(i->buff_param1()).GetDouble(); param1 = a8::XValue(i->buff_param1()).GetDouble();

View File

@ -203,6 +203,7 @@ namespace MetaData
std::set<int> buff_list; std::set<int> buff_list;
std::map<int, std::set<MetaData::Buff*>> trigger_type_buffs; std::map<int, std::set<MetaData::Buff*>> trigger_type_buffs;
std::vector<MetaData::SkillPhase> phases; std::vector<MetaData::SkillPhase> phases;
bool IsTurnOverSkill();
}; };
struct Dress struct Dress

View File

@ -36,7 +36,6 @@ void Player::Initialize()
{ {
Human::Initialize(); Human::Initialize();
max_energy_shield = energy_shield; max_energy_shield = energy_shield;
AddSkill(TURN_OVER_SKILL_ID);
RecalcBaseAttr(); RecalcBaseAttr();
} }

View File

@ -136,7 +136,7 @@ void Skill::NotifySkillState()
void Skill::ResetSkillCd() void Skill::ResetSkillCd()
{ {
if (meta->i->skill_id() != TURN_OVER_SKILL_ID) { if (!meta->IsTurnOverSkill()) {
curr_times_ = 0; curr_times_ = 0;
if (inc_times_timer_) { if (inc_times_timer_) {
owner->room->xtimer.ModifyTimer(inc_times_timer_, GetCd() / FRAME_RATE_MS); owner->room->xtimer.ModifyTimer(inc_times_timer_, GetCd() / FRAME_RATE_MS);

View File

@ -196,7 +196,7 @@ void ZombieModeAI::UpdateAttack()
if (distance > GetAttackRange()) { if (distance > GetAttackRange()) {
Skill* skill = myself->SelectSkill(); Skill* skill = myself->SelectSkill();
if (myself->CanUseSkill(skill->meta->i->skill_id()) && if (myself->CanUseSkill(skill->meta->i->skill_id()) &&
skill->meta->i->skill_id() != TURN_OVER_SKILL_ID && skill->meta->IsTurnOverSkill() &&
distance < skill->meta->i->skill_distance()) { distance < skill->meta->i->skill_distance()) {
DoSkill(skill->meta->i->skill_id()); DoSkill(skill->meta->i->skill_id());
} else if (node_->ai_meta->i->pursuit_radius() <= 0) { } else if (node_->ai_meta->i->pursuit_radius() <= 0) {