1
This commit is contained in:
parent
e8f951e4d5
commit
3611c08daf
@ -8,6 +8,7 @@
|
||||
#include "room.h"
|
||||
#include "human.h"
|
||||
#include "ability.h"
|
||||
#include "collision.h"
|
||||
|
||||
#include "mt/Buff.h"
|
||||
#include "mt/Skill.h"
|
||||
@ -153,8 +154,8 @@ void SprintBuff::Check(Position& pre_pos, Position& src_pos, std::map<int, long
|
||||
}
|
||||
},
|
||||
&xtimer_attacher);
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@ -179,8 +180,8 @@ void SprintBuff::Check(Position& pre_pos, Position& src_pos, std::map<int, long
|
||||
}
|
||||
auto itr = hited_objects.find(enemy->GetUniId());
|
||||
if (itr != hited_objects.end()) {
|
||||
if ((owner->room->GetFrameNo() - itr->second) * FRAME_RATE_MS <
|
||||
meta->_int_buff_param5) {
|
||||
if (owner->room->GetFrameNo() - itr->second <
|
||||
meta->_int_buff_param5 * SERVER_FRAME_RATE) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
@ -194,7 +195,7 @@ void SprintBuff::Check(Position& pre_pos, Position& src_pos, std::map<int, long
|
||||
void SprintBuff::OnEnemyHit(Creature* enemy)
|
||||
{
|
||||
for (int buff_id : meta->_buff_param3_int_list) {
|
||||
enemy->TryAddBuff(owner, buff_id);
|
||||
enemy->TryAddBuff(owner, buff_id, skill_meta);
|
||||
}
|
||||
if (skill_meta) {
|
||||
switch (skill_meta->GetMagicId()) {
|
||||
@ -249,4 +250,25 @@ void SprintBuff::ProcXiongHun()
|
||||
{
|
||||
owner->TryAddBuff(owner, 209016);
|
||||
owner->GetAbility()->DelSpeedAddition(skill_meta->_number_meta->_float_speed);
|
||||
owner->room->grid_service->TraverseCreatures
|
||||
(owner->room->GetRoomIdx(),
|
||||
owner->GetGridList(),
|
||||
[this] (Creature* c, bool& stop)
|
||||
{
|
||||
if (c->dead) {
|
||||
return;
|
||||
}
|
||||
if (!owner->IsProperTarget(c)) {
|
||||
return;
|
||||
}
|
||||
if (Collision::CheckCC(owner,
|
||||
skill_meta->_number_meta->_float_range3,
|
||||
c,
|
||||
c->GetHitRadius())) {
|
||||
c->TryAddBuffAndSetTime(owner,
|
||||
kVertigoEffectBuffId,
|
||||
skill_meta->_number_meta->_float_time * SERVER_FRAME_RATE);
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
@ -27,9 +27,13 @@ bool Collision::CheckCC(Creature* a, Creature* b)
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Collision::CheckCC(Creature* a, float radius, Creature* b, float radis)
|
||||
bool Collision::CheckCC(Creature* a, float a_radius, Creature* b, float b_radius)
|
||||
{
|
||||
return false;
|
||||
return a8::IntersectCylinderCylinder
|
||||
(
|
||||
a->GetPos().ToGlmVec3(), a_radius, 10,
|
||||
b->GetPos().ToGlmVec3(), b_radius, 10
|
||||
);
|
||||
}
|
||||
|
||||
bool Collision::CheckCB(Creature* c, Obstacle* b)
|
||||
|
@ -1820,7 +1820,7 @@ void Creature::GetHitEnemys(std::set<Creature*>& enemys, const glm::vec3 center,
|
||||
[this, &enemys, center, radius, &min_distance] (Creature* c, bool& stop)
|
||||
{
|
||||
if (IsProperTarget(c)) {
|
||||
float distance = GetPos().DistanceGlmVec3(center);
|
||||
float distance = c->GetPos().DistanceGlmVec3(center);
|
||||
min_distance = std::min(min_distance, distance);
|
||||
if (distance < radius) {
|
||||
enemys.insert(c);
|
||||
|
Loading…
x
Reference in New Issue
Block a user