添加烟雾弹混乱逻辑判断

This commit is contained in:
aozhiwei 2020-12-11 10:40:28 +08:00
parent a6d0aed3a2
commit fc1ce18681
4 changed files with 32 additions and 2 deletions

View File

@ -207,6 +207,7 @@ void Bullet::ProcSmokeBomb()
task->room = room;
task->bomb_pos = GetPos();
task->buff_meta = buff_meta;
task->gun_meta = gun_meta;
room->xtimer.AddRepeatTimerAndAttach
(SERVER_FRAME_RATE / 2,
a8::XParams()
@ -229,6 +230,7 @@ void Bullet::ProcSmokeBomb()
[] (const a8::XParams& param)
{
SmokeMiTask* task = (SmokeMiTask*)param.sender.GetUserData();
task->Done();
delete task;
}
);
@ -237,6 +239,9 @@ void Bullet::ProcSmokeBomb()
bool Bullet::IsBomb()
{
#if 0
((metatable::Equip*)meta->i)->set__inventory_slot(6);
#endif
return
meta->i->_inventory_slot() == 4 ||
meta->i->_inventory_slot() == 5 ||

View File

@ -3032,6 +3032,13 @@ void Human::AddBuff(Human* caster,
);
}
ProcBuffEffect(caster, buff);
#ifdef DEBUG
SendDebugMsg(a8::Format("添加buff_id:%d buff_effect:%d",
{
buff_meta->i->buff_id(),
buff_meta->i->buff_effect()
}));
#endif
}
bool Human::IsImmuneBuffEffect(int buff_effect)
@ -3057,6 +3064,12 @@ void Human::RemoveBuffById(int buff_id)
}
}
RecalcBuffAttr();
#ifdef DEBUG
SendDebugMsg(a8::Format("移除buff_id:%d",
{
buff_id
}));
#endif
}
void Human::RemoveBuffByEffectId(int buff_effect_id)

View File

@ -3,13 +3,14 @@
#include "smoke_mitask.h"
#include "room.h"
#include "player.h"
#include "metadata.h"
void SmokeMiTask::Check()
{
{
std::list<Player*> deleted_hums;
for (auto& hum : player_set) {
if (bomb_pos.Distance(hum->GetPos()) > 0.0001) {
if (bomb_pos.Distance(hum->GetPos()) > gun_meta->i->bullet_rad() + hum->meta->i->radius()) {
hum->RemoveBuffByEffectId(kBET_HunLuan);
deleted_hums.push_back(hum);
}
@ -22,11 +23,19 @@ void SmokeMiTask::Check()
(a8::XParams(),
[this] (Player* hum, a8::XParams&) -> bool
{
if (bomb_pos.Distance(hum->GetPos()) < 0.0001) {
if (bomb_pos.Distance(hum->GetPos()) < gun_meta->i->bullet_rad() + hum->meta->i->radius()) {
if (!hum->HasBuffEffect(kBET_HunLuan)) {
hum->AddBuff(nullptr, buff_meta, 1, nullptr);
player_set.insert(hum);
}
}
return true;
});
}
void SmokeMiTask::Done()
{
for (auto& hum : player_set) {
hum->RemoveBuffByEffectId(kBET_HunLuan);
}
}

View File

@ -6,6 +6,7 @@ const int HUNLUAN_BUFFID = 6001;
namespace MetaData
{
struct Buff;
struct Equip;
}
class Room;
@ -17,6 +18,8 @@ class SmokeMiTask : public MicroTask
a8::Vec2 bomb_pos;
std::set<Player*> player_set;
MetaData::Buff* buff_meta = nullptr;
MetaData::Equip* gun_meta = nullptr;
void Check();
void Done();
};