This commit is contained in:
aozhiwei 2023-01-02 12:49:22 +08:00
parent 46bd001cfd
commit 413e8b769e
7 changed files with 19 additions and 26 deletions

View File

@ -14,22 +14,21 @@ void JumpToBuff::Activate()
float target_distance = entity->GetPos().Distance2D2(owner->GetPos());
if (target_distance <= 0.000001f) {
owner->SetPos(entity->GetPos());
owner->skill_target_pos_ = entity->GetPos();
owner->target_pos = entity->GetPos();
} else {
if (target_distance <= meta->_param3) {
owner->SetPos(entity->GetPos());
owner->skill_target_pos_ = entity->GetPos();
owner->target_pos = entity->GetPos();
} else {
glm::vec3 move_dir = owner->GetPos().CalcDir(entity->GetPos());
GlmHelper::Normalize(move_dir);
owner->SetMoveDir(move_dir);
owner->skill_dir_ = owner->GetMoveDir();
owner->skill_target_pos_ = owner->GetPos();
owner->skill_target_pos_.AddGlmVec3(owner->GetMoveDir() * (target_distance - meta->_param3));
owner->target_pos = owner->GetPos();
owner->target_pos.AddGlmVec3(owner->GetMoveDir() * (target_distance - meta->_param3));
}
}
}
owner->target_pos = owner->skill_target_pos_;
}
void JumpToBuff::Deactivate()

View File

@ -18,8 +18,7 @@ void UseSkillBuff::Activate()
skill->meta->skill_id(),
owner->GetUniId(),
owner->GetAttackDir(),
0,
owner->target_pos
0
);
}
}

View File

@ -770,8 +770,8 @@ bool Creature::CanUseSkill(int skill_id)
void Creature::DoSkill(int skill_id,
int target_id,
const glm::vec3& skill_dir,
float skill_distance,
const Position& target_pos)
float skill_distance
)
{
Skill* skill = GetSkill(skill_id);
if (skill && CanUseSkill(skill_id)) {
@ -793,10 +793,9 @@ void Creature::DoSkill(int skill_id,
},
&xtimer_attacher);
}
DoSkillPreProc(skill_id, target_id, target_pos);
DoSkillPreProc(skill_id, target_id);
ResetSkill();
skill_target_id_ = target_id;
skill_target_pos_ = target_pos;
skill_dir_ = skill_dir;
skill_distance_ = skill_distance;
curr_skill_ = skill;
@ -829,7 +828,6 @@ void Creature::DoSkill(int skill_id,
if (entity && entity->IsCreature(room)) {
Creature* c = (Creature*)entity;
std::set<Creature*> target_list;
skill_target_pos_ = c->GetPos();
SelectSkillTargets(CurrentSkill(), c->GetPos(), target_list);
if (!CurrentSkill()->meta->_phases.empty() &&
CurrentSkill()->meta->_phases[0].time_offset <= 0) {
@ -863,7 +861,7 @@ void Creature::DoSkill(int skill_id,
RemoveBuffByEffectId(kBET_Camouflage);
}
GetTrigger()->UseSkill(skill);
DoSkillPostProc(true, skill_id, target_id, target_pos);
DoSkillPostProc(true, skill_id, target_id);
if (IsHuman()) {
++AsHuman()->stats.use_skill_times;
}
@ -879,11 +877,11 @@ void Creature::DoSkill(int skill_id,
}
}
void Creature::DoSkillPreProc(int skill_id, int target_id, const Position& target_pos)
void Creature::DoSkillPreProc(int skill_id, int target_id)
{
}
void Creature::DoSkillPostProc(bool used, int skill_id, int target_id, const Position& target_pos)
void Creature::DoSkillPostProc(bool used, int skill_id, int target_id)
{
}
@ -892,7 +890,6 @@ void Creature::ResetSkill()
curr_skill_ = nullptr;
curr_skill_phase = 0;
skill_dir_ = GlmHelper::ZERO;
skill_target_pos_ = Position();
skill_param1 = 0.0f;
playing_skill = false;
}

View File

@ -173,8 +173,7 @@ class Creature : public MoveableEntity
void DoSkill(int skill_id,
int target_id,
const glm::vec3& skill_dir,
float skill_distance,
const Position& target_pos
float skill_distance
);
void ResetSkill();
Skill* CurrentSkill();
@ -297,8 +296,8 @@ protected:
private:
virtual void AddBuffPostProc(Creature* caster, Buff* buff);
virtual void DoSkillPreProc(int skill_id, int target_id, const Position& target_pos);
virtual void DoSkillPostProc(bool used, int skill_id, int target_id, const Position& target_pos);
virtual void DoSkillPreProc(int skill_id, int target_id);
virtual void DoSkillPostProc(bool used, int skill_id, int target_id);
void ProcSkillPhase(const mt::SkillPhase* phase);
void TriggerOneObjectBuff(Skill* skill, Creature* target, BuffTriggerType_e trigger_type);
@ -366,7 +365,6 @@ private:
size_t curr_skill_phase = 0;
Skill* curr_skill_ = nullptr;
int skill_target_id_ = 0;
Position skill_target_pos_;
float skill_distance_ = 0.0f;
std::map<int, std::shared_ptr<Skill>> skill_hash_;
std::map<int, std::shared_ptr<Skill>> passive_skill_hash_;

View File

@ -2230,7 +2230,7 @@ void Human::DoGetOnWithCar(Car* car)
car->GetOn(this);
}
void Human::DoSkillPreProc(int skill_id, int target_id, const Position& target_pos)
void Human::DoSkillPreProc(int skill_id, int target_ids)
{
if (action_type == AT_Reload ||
action_type == AT_UseItem
@ -2239,7 +2239,7 @@ void Human::DoSkillPreProc(int skill_id, int target_id, const Position& target_p
}
}
void Human::DoSkillPostProc(bool used, int skill_id, int target_id, const Position& target_pos)
void Human::DoSkillPostProc(bool used, int skill_id, int target_id)
{
if (used) {
++stats.skill_times;

View File

@ -432,8 +432,8 @@ private:
int real_killer_id, const std::string& real_killer_name);
virtual void AddBuffPostProc(Creature* caster, Buff* buff) override;
virtual void OnBuffRemove(Buff& buff) override;
virtual void DoSkillPreProc(int skill_id, int target_id, const Position& target_pos) override;
virtual void DoSkillPostProc(bool used, int skill_id, int target_id, const Position& target_pos) override;
virtual void DoSkillPreProc(int skill_id, int target_id) override;
virtual void DoSkillPostProc(bool used, int skill_id, int target_id) override;
void FillMFSettlement(cs::SMGameOver* msg, cs::MFSettlement* settlement);
protected:

View File

@ -552,7 +552,7 @@ void Player::UpdateSwitchSeat()
void Player::UpdateUseSkill()
{
DoSkill(use_skill_id, skill_target_id, skill_dir, skill_distance, Position());
DoSkill(use_skill_id, skill_target_id, skill_dir, skill_distance);
use_skill = false;
}