1
This commit is contained in:
parent
46bd001cfd
commit
413e8b769e
@ -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()
|
||||
|
@ -18,8 +18,7 @@ void UseSkillBuff::Activate()
|
||||
skill->meta->skill_id(),
|
||||
owner->GetUniId(),
|
||||
owner->GetAttackDir(),
|
||||
0,
|
||||
owner->target_pos
|
||||
0
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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_;
|
||||
|
@ -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;
|
||||
|
@ -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:
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user