添加免疫眩晕
This commit is contained in:
parent
4fe82c41d5
commit
8f14b1c91b
@ -921,6 +921,23 @@ void Bullet::TriggerHitBuff(Entity* e)
|
||||
for (int buff_id : gun_meta->hit_buff_list) {
|
||||
MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(buff_id);
|
||||
if (buff_meta) {
|
||||
if (c->GetAbility()->GetImmuneVertigoTimes() > 0 &&
|
||||
buff_meta->i->buff_effect() == kBET_Vertigo) {
|
||||
#ifdef DEBUG
|
||||
{
|
||||
std::string dbg_msg = a8::Format
|
||||
(
|
||||
"免疫眩晕 target_uniid:%d ImmuneVertigoTimes:%d",
|
||||
{
|
||||
c->GetUniId(),
|
||||
c->GetAbility()->GetImmuneVertigoTimes()
|
||||
});
|
||||
sender.Get()->SendDebugMsg(dbg_msg);
|
||||
a8::XPrintf("%s\n", {dbg_msg});
|
||||
}
|
||||
#endif
|
||||
continue;
|
||||
}
|
||||
int buff_uniid = c->AddBuff(
|
||||
sender.Get(),
|
||||
buff_meta,
|
||||
|
@ -307,21 +307,28 @@ void Skill::ProcSJXY()
|
||||
Creature* target = std::any_cast<Creature*>(params.at(1));
|
||||
int rnd = rand();
|
||||
bool is_hit = false;
|
||||
bool is_immune = false;
|
||||
if (shot_times % meta->number_meta->int_ratio == 0) {
|
||||
if ((rnd % 100) < meta->number_meta->float_probability * 100) {
|
||||
auto itr = hited_objs.find(target->GetUniId());
|
||||
if (itr == hited_objs.end()) {
|
||||
hited_objs[target->GetUniId()] = owner->room->GetFrameNo();
|
||||
is_hit = true;
|
||||
if (target->GetAbility()->GetImmuneVertigoTimes() > 0) {
|
||||
is_immune = true;
|
||||
} else {
|
||||
if ((owner->room->GetFrameNo() - itr->second) >=
|
||||
meta->number_meta->float_cd * SERVER_FRAME_RATE) {
|
||||
itr->second = owner->room->GetFrameNo();
|
||||
auto itr = hited_objs.find(target->GetUniId());
|
||||
if (itr == hited_objs.end()) {
|
||||
hited_objs[target->GetUniId()] = owner->room->GetFrameNo();
|
||||
is_hit = true;
|
||||
} else {
|
||||
if ((owner->room->GetFrameNo() - itr->second) >=
|
||||
meta->number_meta->float_cd * SERVER_FRAME_RATE) {
|
||||
itr->second = owner->room->GetFrameNo();
|
||||
is_hit = true;
|
||||
}
|
||||
}//endif itr
|
||||
if (is_hit) {
|
||||
target->TryAddBuffAndSetTime(owner,
|
||||
kVertigoBuffId,
|
||||
meta->number_meta->float_time * 1000);
|
||||
}
|
||||
}//endif itr
|
||||
if (is_hit) {
|
||||
target->TryAddBuffAndSetTime(owner, kVertigoBuffId, meta->number_meta->float_time * 1000);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -329,7 +336,7 @@ void Skill::ProcSJXY()
|
||||
{
|
||||
std::string dbg_msg = a8::Format
|
||||
(
|
||||
"skill_id:%d 射击 shot_times:%d ratio:%d rand:%d probability:%f time:%f 是否眩晕:%d",
|
||||
"skill_id:%d 射击 shot_times:%d ratio:%d rand:%d probability:%f time:%f 是否眩晕:%d 是否被免疫:%d",
|
||||
{
|
||||
meta->i->skill_id(),
|
||||
shot_times,
|
||||
@ -337,7 +344,8 @@ void Skill::ProcSJXY()
|
||||
rnd % 100,
|
||||
meta->number_meta->float_probability,
|
||||
meta->number_meta->float_time,
|
||||
is_hit ? 1 :0
|
||||
is_hit ? 1 : 0,
|
||||
is_immune ? 1 : 0
|
||||
});
|
||||
owner->SendDebugMsg(dbg_msg);
|
||||
a8::XPrintf("%s\n", {dbg_msg});
|
||||
@ -492,7 +500,12 @@ void Skill::ProcSWZB()
|
||||
}
|
||||
int buff_id = SkillHelper::GetSwzbBuffId(skill_meta);
|
||||
float buff_time = SkillHelper::GetSwzbBuffTime(skill_meta);
|
||||
c->TryAddBuffAndSetTime(sender.Get(), buff_id, buff_time);
|
||||
MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(buff_id);
|
||||
if (c->GetAbility()->GetImmuneVertigoTimes() > 0 &&
|
||||
buff_meta->i->buff_effect() == kBET_Vertigo) {
|
||||
} else {
|
||||
c->TryAddBuffAndSetTime(sender.Get(), buff_id, buff_time);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -553,6 +566,9 @@ void Skill::ProcCMXD()
|
||||
if (c->dead) {
|
||||
return;
|
||||
}
|
||||
if (c->GetAbility()->GetImmuneVertigoTimes() > 0) {
|
||||
return;
|
||||
}
|
||||
float dmg = SkillHelper::GetCmxdDmg(sender.Get(), skill_meta);
|
||||
c->DecHP(dmg,
|
||||
VP_Explosion,
|
||||
|
Loading…
x
Reference in New Issue
Block a user