添加免疫眩晕
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) {
|
for (int buff_id : gun_meta->hit_buff_list) {
|
||||||
MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(buff_id);
|
MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(buff_id);
|
||||||
if (buff_meta) {
|
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(
|
int buff_uniid = c->AddBuff(
|
||||||
sender.Get(),
|
sender.Get(),
|
||||||
buff_meta,
|
buff_meta,
|
||||||
|
@ -307,21 +307,28 @@ void Skill::ProcSJXY()
|
|||||||
Creature* target = std::any_cast<Creature*>(params.at(1));
|
Creature* target = std::any_cast<Creature*>(params.at(1));
|
||||||
int rnd = rand();
|
int rnd = rand();
|
||||||
bool is_hit = false;
|
bool is_hit = false;
|
||||||
|
bool is_immune = false;
|
||||||
if (shot_times % meta->number_meta->int_ratio == 0) {
|
if (shot_times % meta->number_meta->int_ratio == 0) {
|
||||||
if ((rnd % 100) < meta->number_meta->float_probability * 100) {
|
if ((rnd % 100) < meta->number_meta->float_probability * 100) {
|
||||||
auto itr = hited_objs.find(target->GetUniId());
|
if (target->GetAbility()->GetImmuneVertigoTimes() > 0) {
|
||||||
if (itr == hited_objs.end()) {
|
is_immune = true;
|
||||||
hited_objs[target->GetUniId()] = owner->room->GetFrameNo();
|
|
||||||
is_hit = true;
|
|
||||||
} else {
|
} else {
|
||||||
if ((owner->room->GetFrameNo() - itr->second) >=
|
auto itr = hited_objs.find(target->GetUniId());
|
||||||
meta->number_meta->float_cd * SERVER_FRAME_RATE) {
|
if (itr == hited_objs.end()) {
|
||||||
itr->second = owner->room->GetFrameNo();
|
hited_objs[target->GetUniId()] = owner->room->GetFrameNo();
|
||||||
is_hit = true;
|
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
|
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(),
|
meta->i->skill_id(),
|
||||||
shot_times,
|
shot_times,
|
||||||
@ -337,7 +344,8 @@ void Skill::ProcSJXY()
|
|||||||
rnd % 100,
|
rnd % 100,
|
||||||
meta->number_meta->float_probability,
|
meta->number_meta->float_probability,
|
||||||
meta->number_meta->float_time,
|
meta->number_meta->float_time,
|
||||||
is_hit ? 1 :0
|
is_hit ? 1 : 0,
|
||||||
|
is_immune ? 1 : 0
|
||||||
});
|
});
|
||||||
owner->SendDebugMsg(dbg_msg);
|
owner->SendDebugMsg(dbg_msg);
|
||||||
a8::XPrintf("%s\n", {dbg_msg});
|
a8::XPrintf("%s\n", {dbg_msg});
|
||||||
@ -492,7 +500,12 @@ void Skill::ProcSWZB()
|
|||||||
}
|
}
|
||||||
int buff_id = SkillHelper::GetSwzbBuffId(skill_meta);
|
int buff_id = SkillHelper::GetSwzbBuffId(skill_meta);
|
||||||
float buff_time = SkillHelper::GetSwzbBuffTime(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) {
|
if (c->dead) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (c->GetAbility()->GetImmuneVertigoTimes() > 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
float dmg = SkillHelper::GetCmxdDmg(sender.Get(), skill_meta);
|
float dmg = SkillHelper::GetCmxdDmg(sender.Get(), skill_meta);
|
||||||
c->DecHP(dmg,
|
c->DecHP(dmg,
|
||||||
VP_Explosion,
|
VP_Explosion,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user