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());
|
float target_distance = entity->GetPos().Distance2D2(owner->GetPos());
|
||||||
if (target_distance <= 0.000001f) {
|
if (target_distance <= 0.000001f) {
|
||||||
owner->SetPos(entity->GetPos());
|
owner->SetPos(entity->GetPos());
|
||||||
owner->skill_target_pos_ = entity->GetPos();
|
owner->target_pos = entity->GetPos();
|
||||||
} else {
|
} else {
|
||||||
if (target_distance <= meta->_param3) {
|
if (target_distance <= meta->_param3) {
|
||||||
owner->SetPos(entity->GetPos());
|
owner->SetPos(entity->GetPos());
|
||||||
owner->skill_target_pos_ = entity->GetPos();
|
owner->target_pos = entity->GetPos();
|
||||||
} else {
|
} else {
|
||||||
glm::vec3 move_dir = owner->GetPos().CalcDir(entity->GetPos());
|
glm::vec3 move_dir = owner->GetPos().CalcDir(entity->GetPos());
|
||||||
GlmHelper::Normalize(move_dir);
|
GlmHelper::Normalize(move_dir);
|
||||||
owner->SetMoveDir(move_dir);
|
owner->SetMoveDir(move_dir);
|
||||||
owner->skill_dir_ = owner->GetMoveDir();
|
owner->skill_dir_ = owner->GetMoveDir();
|
||||||
owner->skill_target_pos_ = owner->GetPos();
|
owner->target_pos = owner->GetPos();
|
||||||
owner->skill_target_pos_.AddGlmVec3(owner->GetMoveDir() * (target_distance - meta->_param3));
|
owner->target_pos.AddGlmVec3(owner->GetMoveDir() * (target_distance - meta->_param3));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
owner->target_pos = owner->skill_target_pos_;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void JumpToBuff::Deactivate()
|
void JumpToBuff::Deactivate()
|
||||||
|
@ -18,8 +18,7 @@ void UseSkillBuff::Activate()
|
|||||||
skill->meta->skill_id(),
|
skill->meta->skill_id(),
|
||||||
owner->GetUniId(),
|
owner->GetUniId(),
|
||||||
owner->GetAttackDir(),
|
owner->GetAttackDir(),
|
||||||
0,
|
0
|
||||||
owner->target_pos
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -770,8 +770,8 @@ bool Creature::CanUseSkill(int skill_id)
|
|||||||
void Creature::DoSkill(int skill_id,
|
void Creature::DoSkill(int skill_id,
|
||||||
int target_id,
|
int target_id,
|
||||||
const glm::vec3& skill_dir,
|
const glm::vec3& skill_dir,
|
||||||
float skill_distance,
|
float skill_distance
|
||||||
const Position& target_pos)
|
)
|
||||||
{
|
{
|
||||||
Skill* skill = GetSkill(skill_id);
|
Skill* skill = GetSkill(skill_id);
|
||||||
if (skill && CanUseSkill(skill_id)) {
|
if (skill && CanUseSkill(skill_id)) {
|
||||||
@ -793,10 +793,9 @@ void Creature::DoSkill(int skill_id,
|
|||||||
},
|
},
|
||||||
&xtimer_attacher);
|
&xtimer_attacher);
|
||||||
}
|
}
|
||||||
DoSkillPreProc(skill_id, target_id, target_pos);
|
DoSkillPreProc(skill_id, target_id);
|
||||||
ResetSkill();
|
ResetSkill();
|
||||||
skill_target_id_ = target_id;
|
skill_target_id_ = target_id;
|
||||||
skill_target_pos_ = target_pos;
|
|
||||||
skill_dir_ = skill_dir;
|
skill_dir_ = skill_dir;
|
||||||
skill_distance_ = skill_distance;
|
skill_distance_ = skill_distance;
|
||||||
curr_skill_ = skill;
|
curr_skill_ = skill;
|
||||||
@ -829,7 +828,6 @@ void Creature::DoSkill(int skill_id,
|
|||||||
if (entity && entity->IsCreature(room)) {
|
if (entity && entity->IsCreature(room)) {
|
||||||
Creature* c = (Creature*)entity;
|
Creature* c = (Creature*)entity;
|
||||||
std::set<Creature*> target_list;
|
std::set<Creature*> target_list;
|
||||||
skill_target_pos_ = c->GetPos();
|
|
||||||
SelectSkillTargets(CurrentSkill(), c->GetPos(), target_list);
|
SelectSkillTargets(CurrentSkill(), c->GetPos(), target_list);
|
||||||
if (!CurrentSkill()->meta->_phases.empty() &&
|
if (!CurrentSkill()->meta->_phases.empty() &&
|
||||||
CurrentSkill()->meta->_phases[0].time_offset <= 0) {
|
CurrentSkill()->meta->_phases[0].time_offset <= 0) {
|
||||||
@ -863,7 +861,7 @@ void Creature::DoSkill(int skill_id,
|
|||||||
RemoveBuffByEffectId(kBET_Camouflage);
|
RemoveBuffByEffectId(kBET_Camouflage);
|
||||||
}
|
}
|
||||||
GetTrigger()->UseSkill(skill);
|
GetTrigger()->UseSkill(skill);
|
||||||
DoSkillPostProc(true, skill_id, target_id, target_pos);
|
DoSkillPostProc(true, skill_id, target_id);
|
||||||
if (IsHuman()) {
|
if (IsHuman()) {
|
||||||
++AsHuman()->stats.use_skill_times;
|
++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_ = nullptr;
|
||||||
curr_skill_phase = 0;
|
curr_skill_phase = 0;
|
||||||
skill_dir_ = GlmHelper::ZERO;
|
skill_dir_ = GlmHelper::ZERO;
|
||||||
skill_target_pos_ = Position();
|
|
||||||
skill_param1 = 0.0f;
|
skill_param1 = 0.0f;
|
||||||
playing_skill = false;
|
playing_skill = false;
|
||||||
}
|
}
|
||||||
|
@ -173,8 +173,7 @@ class Creature : public MoveableEntity
|
|||||||
void DoSkill(int skill_id,
|
void DoSkill(int skill_id,
|
||||||
int target_id,
|
int target_id,
|
||||||
const glm::vec3& skill_dir,
|
const glm::vec3& skill_dir,
|
||||||
float skill_distance,
|
float skill_distance
|
||||||
const Position& target_pos
|
|
||||||
);
|
);
|
||||||
void ResetSkill();
|
void ResetSkill();
|
||||||
Skill* CurrentSkill();
|
Skill* CurrentSkill();
|
||||||
@ -297,8 +296,8 @@ protected:
|
|||||||
private:
|
private:
|
||||||
|
|
||||||
virtual void AddBuffPostProc(Creature* caster, Buff* buff);
|
virtual void AddBuffPostProc(Creature* caster, Buff* buff);
|
||||||
virtual void DoSkillPreProc(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, const Position& target_pos);
|
virtual void DoSkillPostProc(bool used, int skill_id, int target_id);
|
||||||
|
|
||||||
void ProcSkillPhase(const mt::SkillPhase* phase);
|
void ProcSkillPhase(const mt::SkillPhase* phase);
|
||||||
void TriggerOneObjectBuff(Skill* skill, Creature* target, BuffTriggerType_e trigger_type);
|
void TriggerOneObjectBuff(Skill* skill, Creature* target, BuffTriggerType_e trigger_type);
|
||||||
@ -366,7 +365,6 @@ private:
|
|||||||
size_t curr_skill_phase = 0;
|
size_t curr_skill_phase = 0;
|
||||||
Skill* curr_skill_ = nullptr;
|
Skill* curr_skill_ = nullptr;
|
||||||
int skill_target_id_ = 0;
|
int skill_target_id_ = 0;
|
||||||
Position skill_target_pos_;
|
|
||||||
float skill_distance_ = 0.0f;
|
float skill_distance_ = 0.0f;
|
||||||
std::map<int, std::shared_ptr<Skill>> skill_hash_;
|
std::map<int, std::shared_ptr<Skill>> skill_hash_;
|
||||||
std::map<int, std::shared_ptr<Skill>> passive_skill_hash_;
|
std::map<int, std::shared_ptr<Skill>> passive_skill_hash_;
|
||||||
|
@ -2230,7 +2230,7 @@ void Human::DoGetOnWithCar(Car* car)
|
|||||||
car->GetOn(this);
|
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 ||
|
if (action_type == AT_Reload ||
|
||||||
action_type == AT_UseItem
|
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) {
|
if (used) {
|
||||||
++stats.skill_times;
|
++stats.skill_times;
|
||||||
|
@ -432,8 +432,8 @@ private:
|
|||||||
int real_killer_id, const std::string& real_killer_name);
|
int real_killer_id, const std::string& real_killer_name);
|
||||||
virtual void AddBuffPostProc(Creature* caster, Buff* buff) override;
|
virtual void AddBuffPostProc(Creature* caster, Buff* buff) override;
|
||||||
virtual void OnBuffRemove(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 DoSkillPreProc(int skill_id, int target_id) override;
|
||||||
virtual void DoSkillPostProc(bool used, int skill_id, int target_id, const Position& target_pos) override;
|
virtual void DoSkillPostProc(bool used, int skill_id, int target_id) override;
|
||||||
void FillMFSettlement(cs::SMGameOver* msg, cs::MFSettlement* settlement);
|
void FillMFSettlement(cs::SMGameOver* msg, cs::MFSettlement* settlement);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@ -552,7 +552,7 @@ void Player::UpdateSwitchSeat()
|
|||||||
|
|
||||||
void Player::UpdateUseSkill()
|
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;
|
use_skill = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user