1
This commit is contained in:
parent
1dec9d2c26
commit
16068a237e
@ -260,7 +260,8 @@ void Creature::RecalcBuffAttr()
|
||||
buff_attr_rate_ = {};
|
||||
for (auto& buff : buff_list_) {
|
||||
if (buff.meta->i->buff_effect() == kBET_ChgAttr ||
|
||||
buff.meta->i->buff_effect() == kBET_Car) {
|
||||
buff.meta->i->buff_effect() == kBET_Car ||
|
||||
buff.meta->i->buff_effect() == kBET_CrazyMode) {
|
||||
int attr_type = (int)buff.meta->param1;
|
||||
int calc_type = (int)buff.meta->param2;
|
||||
if (IsValidHumanAttr(attr_type)) {
|
||||
@ -635,6 +636,7 @@ void Creature::ProcBuffEffect(Creature* caster, Buff* buff)
|
||||
switch (buff->meta->i->buff_effect()) {
|
||||
case kBET_ChgAttr:
|
||||
case kBET_Car:
|
||||
case kBET_CrazyMode:
|
||||
{
|
||||
RecalcBuffAttr();
|
||||
if (buff->meta->i->buff_effect() == kBET_Car) {
|
||||
@ -787,7 +789,7 @@ void Creature::ProcBuffEffect(Creature* caster, Buff* buff)
|
||||
.SetSender(this)
|
||||
.SetParam1(caster)
|
||||
.SetParam2(buff->meta->param2)
|
||||
.SetParam3(((Human*)caster)->CurrentSkill()->meta),
|
||||
.SetParam3(((Creature*)caster)->CurrentSkill()->meta),
|
||||
[] (const a8::XParams& param)
|
||||
{
|
||||
Human* hum = (Human*)param.sender.GetUserData();
|
||||
@ -805,7 +807,28 @@ void Creature::ProcBuffEffect(Creature* caster, Buff* buff)
|
||||
break;
|
||||
case kBET_IntervalAddBuff:
|
||||
{
|
||||
|
||||
room->xtimer.AddRepeatTimerAndAttach
|
||||
(
|
||||
FRAME_RATE_MS / buff->meta->param1,
|
||||
a8::XParams()
|
||||
.SetSender(this)
|
||||
.SetParam1(caster)
|
||||
.SetParam2(buff->meta)
|
||||
.SetParam3(((Creature*)caster)->CurrentSkill()->meta),
|
||||
[] (const a8::XParams& param)
|
||||
{
|
||||
Human* hum = (Human*)param.sender.GetUserData();
|
||||
Human* caster = (Human*)param.param1.GetUserData();
|
||||
MetaData::Buff* mother_buff_meta = (MetaData::Buff*)param.param2.GetUserData();
|
||||
MetaData::Skill* skill = (MetaData::Skill*)param.param3.GetUserData();
|
||||
for (int buff_id : mother_buff_meta->param2_int_list) {
|
||||
MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(buff_id);
|
||||
if (buff_meta && skill == caster->CurrentSkill()->meta && caster) {
|
||||
hum->AddBuff(caster, buff_meta, 1, skill);
|
||||
}
|
||||
}
|
||||
},
|
||||
&buff->xtimer_attacher.timer_list_);
|
||||
}
|
||||
break;
|
||||
case kBET_SummonHero:
|
||||
@ -821,11 +844,6 @@ void Creature::ProcBuffEffect(Creature* caster, Buff* buff)
|
||||
case kBET_Hide:
|
||||
{
|
||||
|
||||
}
|
||||
break;
|
||||
case kBET_CrazyMode:
|
||||
{
|
||||
|
||||
}
|
||||
break;
|
||||
case kBET_ShockWave:
|
||||
|
@ -169,6 +169,7 @@ namespace MetaData
|
||||
float param2 = 0.0f;
|
||||
float param3 = 0.0f;
|
||||
float param4 = 0.0f;
|
||||
std::vector<int> param2_int_list;
|
||||
std::set<int> immune_buffeffect;
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user