处理翻滚

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;
#if 0
const int TURN_OVER_SKILL_ID = 41001;
#endif
const int HUNLUAN_BUFFID = 6001;

View File

@ -549,7 +549,11 @@ void Creature::DoSkill(int skill_id,
RemoveBuffByEffectId(kBET_Camouflage);
}
DoSkillPostProc(true, skill_id, target_id, target_pos);
#if 0
if (skill_id != TURN_OVER_SKILL_ID) {
#else
{
#endif
CreatureWeakPtr ptr;
ptr.Attach(this);
room->frame_event.AddPlaySkill(ptr, skill_id);
@ -935,7 +939,7 @@ void Creature::ClearSkill()
{
Skill* reserve_skill = nullptr;
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;
} else {
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()
{
param1 = a8::XValue(i->buff_param1()).GetDouble();

View File

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

View File

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

View File

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

View File

@ -196,7 +196,7 @@ void ZombieModeAI::UpdateAttack()
if (distance > GetAttackRange()) {
Skill* skill = myself->SelectSkill();
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()) {
DoSkill(skill->meta->i->skill_id());
} else if (node_->ai_meta->i->pursuit_radius() <= 0) {