1
This commit is contained in:
parent
e8f951e4d5
commit
3611c08daf
@ -8,6 +8,7 @@
|
|||||||
#include "room.h"
|
#include "room.h"
|
||||||
#include "human.h"
|
#include "human.h"
|
||||||
#include "ability.h"
|
#include "ability.h"
|
||||||
|
#include "collision.h"
|
||||||
|
|
||||||
#include "mt/Buff.h"
|
#include "mt/Buff.h"
|
||||||
#include "mt/Skill.h"
|
#include "mt/Skill.h"
|
||||||
@ -153,8 +154,8 @@ void SprintBuff::Check(Position& pre_pos, Position& src_pos, std::map<int, long
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
&xtimer_attacher);
|
&xtimer_attacher);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
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());
|
auto itr = hited_objects.find(enemy->GetUniId());
|
||||||
if (itr != hited_objects.end()) {
|
if (itr != hited_objects.end()) {
|
||||||
if ((owner->room->GetFrameNo() - itr->second) * FRAME_RATE_MS <
|
if (owner->room->GetFrameNo() - itr->second <
|
||||||
meta->_int_buff_param5) {
|
meta->_int_buff_param5 * SERVER_FRAME_RATE) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -194,7 +195,7 @@ void SprintBuff::Check(Position& pre_pos, Position& src_pos, std::map<int, long
|
|||||||
void SprintBuff::OnEnemyHit(Creature* enemy)
|
void SprintBuff::OnEnemyHit(Creature* enemy)
|
||||||
{
|
{
|
||||||
for (int buff_id : meta->_buff_param3_int_list) {
|
for (int buff_id : meta->_buff_param3_int_list) {
|
||||||
enemy->TryAddBuff(owner, buff_id);
|
enemy->TryAddBuff(owner, buff_id, skill_meta);
|
||||||
}
|
}
|
||||||
if (skill_meta) {
|
if (skill_meta) {
|
||||||
switch (skill_meta->GetMagicId()) {
|
switch (skill_meta->GetMagicId()) {
|
||||||
@ -249,4 +250,25 @@ void SprintBuff::ProcXiongHun()
|
|||||||
{
|
{
|
||||||
owner->TryAddBuff(owner, 209016);
|
owner->TryAddBuff(owner, 209016);
|
||||||
owner->GetAbility()->DelSpeedAddition(skill_meta->_number_meta->_float_speed);
|
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;
|
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)
|
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)
|
[this, &enemys, center, radius, &min_distance] (Creature* c, bool& stop)
|
||||||
{
|
{
|
||||||
if (IsProperTarget(c)) {
|
if (IsProperTarget(c)) {
|
||||||
float distance = GetPos().DistanceGlmVec3(center);
|
float distance = c->GetPos().DistanceGlmVec3(center);
|
||||||
min_distance = std::min(min_distance, distance);
|
min_distance = std::min(min_distance, distance);
|
||||||
if (distance < radius) {
|
if (distance < radius) {
|
||||||
enemys.insert(c);
|
enemys.insert(c);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user