This commit is contained in:
aozhiwei 2023-03-01 19:05:20 +08:00
parent e8f951e4d5
commit 3611c08daf
3 changed files with 33 additions and 7 deletions

View File

@ -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);
}
}
);
}

View File

@ -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)

View File

@ -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);