修复技能skill_pos问题

This commit is contained in:
aozhiwei 2024-02-15 17:02:04 +08:00
parent 62d85a9148
commit 4cd39d4af0
3 changed files with 29 additions and 3 deletions

View File

@ -1006,6 +1006,7 @@ void Creature::DoSkill(int skill_id,
curr_skill_ = skill;
playing_skill = true;
skill_pos = GetPos().ToGlmVec3();
skill->skill_pos = skill_pos;
context_dir = skill_dir_;
context_pos = GetPos();
context_pos.AddGlmVec3(skill_dir_ * skill_distance_);

View File

@ -169,7 +169,15 @@ public:
{
double result = 0.0f;
if (context_.buff->GetCaster().Get()) {
result = context_.buff->GetCaster().Get()->skill_pos.x;
if (context_.buff->GetCaster().Get() && context_.buff->skill_meta) {
Skill* skill = context_.buff->GetCaster().Get()->GetSkill
(context_.buff->skill_meta->skill_id());
if (skill) {
result = skill->skill_pos.x;
}
} else {
result = context_.buff->GetCaster().Get()->skill_pos.x;
}
}
return std::make_shared<a8::lisp::Value>(a8::lisp::Atom(result));
});
@ -180,7 +188,15 @@ public:
{
double result = 0.0f;
if (context_.buff->GetCaster().Get()) {
result = context_.buff->GetCaster().Get()->skill_pos.y;
if (context_.buff->GetCaster().Get() && context_.buff->skill_meta) {
Skill* skill = context_.buff->GetCaster().Get()->GetSkill
(context_.buff->skill_meta->skill_id());
if (skill) {
result = skill->skill_pos.y;
}
} else {
result = context_.buff->GetCaster().Get()->skill_pos.y;
}
}
return std::make_shared<a8::lisp::Value>(a8::lisp::Atom(result));
});
@ -191,7 +207,15 @@ public:
{
double result = 0.0f;
if (context_.buff->GetCaster().Get()) {
result = context_.buff->GetCaster().Get()->skill_pos.z;
if (context_.buff->GetCaster().Get() && context_.buff->skill_meta) {
Skill* skill = context_.buff->GetCaster().Get()->GetSkill
(context_.buff->skill_meta->skill_id());
if (skill) {
result = skill->skill_pos.z;
}
} else {
result = context_.buff->GetCaster().Get()->skill_pos.z;
}
}
return std::make_shared<a8::lisp::Value>(a8::lisp::Atom(result));
});

View File

@ -26,6 +26,7 @@ class Skill
long long last_use_frameno = 0;
a8::Attacher xtimer_attacher;
int force_use_times = 0;
glm::vec3 skill_pos = glm::vec3(0.0f, 0.0f, 0.0f);
void Initialzie();
void SetMeta(const mt::Skill* meta);