1
This commit is contained in:
parent
c2fb7b3371
commit
1e87d4adc1
@ -14,7 +14,7 @@ float Ability::GetAttrAbs(int attr_id)
|
|||||||
if (owner.Get()) {
|
if (owner.Get()) {
|
||||||
Buff* buff = owner.Get()->GetBuffByEffectId(kBET_Car);
|
Buff* buff = owner.Get()->GetBuffByEffectId(kBET_Car);
|
||||||
if (buff) {
|
if (buff) {
|
||||||
const mt::Equip* equip_meta = mt::Equip::GetById(buff->meta->_param4);
|
const mt::Equip* equip_meta = mt::Equip::GetById(buff->meta->_buff_param4);
|
||||||
if (equip_meta) {
|
if (equip_meta) {
|
||||||
switch (attr_id) {
|
switch (attr_id) {
|
||||||
case kHAT_Atk:
|
case kHAT_Atk:
|
||||||
|
@ -97,7 +97,7 @@ void Buff::InternalTimerAddBuff()
|
|||||||
receiver->context_dir = receiver->GetAttackDir();
|
receiver->context_dir = receiver->GetAttackDir();
|
||||||
receiver->context_pos = receiver->GetPos();
|
receiver->context_pos = receiver->GetPos();
|
||||||
|
|
||||||
int buff_id = meta->_int_param2;
|
int buff_id = meta->_int_buff_param2;
|
||||||
const mt::Buff* buff_meta = mt::Buff::GetById(buff_id);
|
const mt::Buff* buff_meta = mt::Buff::GetById(buff_id);
|
||||||
if (buff_meta) {
|
if (buff_meta) {
|
||||||
SkillCasterState old_caster_state;
|
SkillCasterState old_caster_state;
|
||||||
@ -119,7 +119,7 @@ void Buff::InternalTimerAddBuff()
|
|||||||
{
|
{
|
||||||
owner->room->xtimer.SetTimeoutEx
|
owner->room->xtimer.SetTimeoutEx
|
||||||
(
|
(
|
||||||
meta->_param1 * SERVER_FRAME_RATE,
|
meta->_buff_param1 * SERVER_FRAME_RATE,
|
||||||
timer_func,
|
timer_func,
|
||||||
&xtimer_attacher
|
&xtimer_attacher
|
||||||
);
|
);
|
||||||
@ -129,7 +129,7 @@ void Buff::InternalTimerAddBuff()
|
|||||||
{
|
{
|
||||||
owner->room->xtimer.SetIntervalEx
|
owner->room->xtimer.SetIntervalEx
|
||||||
(
|
(
|
||||||
meta->_param1 / FRAME_RATE_MS,
|
meta->_buff_param1 / FRAME_RATE_MS,
|
||||||
timer_func,
|
timer_func,
|
||||||
&xtimer_attacher
|
&xtimer_attacher
|
||||||
);
|
);
|
||||||
@ -245,7 +245,7 @@ void Buff::PreProcess()
|
|||||||
switch (meta->buff_effect()) {
|
switch (meta->buff_effect()) {
|
||||||
case kBET_CallFunc:
|
case kBET_CallFunc:
|
||||||
{
|
{
|
||||||
switch (meta->_int_param1) {
|
switch (meta->_int_buff_param1) {
|
||||||
case 1:
|
case 1:
|
||||||
{
|
{
|
||||||
event_handlers_.push_back
|
event_handlers_.push_back
|
||||||
@ -284,11 +284,11 @@ void Buff::PreProcess()
|
|||||||
if (meta->buff_id() == 8042) {
|
if (meta->buff_id() == 8042) {
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
{
|
{
|
||||||
a8::XPrintf("添加减速%f", {meta->_param3});
|
a8::XPrintf("添加减速%f", {meta->_buff_param3});
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if (owner->GetAbility()->GetSpeedRuduceTimes() <= 0) {
|
if (owner->GetAbility()->GetSpeedRuduceTimes() <= 0) {
|
||||||
owner->GetAbility()->AddSpeedRuduce(-meta->_param3/100.0f);
|
owner->GetAbility()->AddSpeedRuduce(-meta->_buff_param3/100.0f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -296,16 +296,16 @@ void Buff::PreProcess()
|
|||||||
|
|
||||||
void Buff::ProcSputteringFunc(Bullet* bullet)
|
void Buff::ProcSputteringFunc(Bullet* bullet)
|
||||||
{
|
{
|
||||||
const mt::Equip* weapon_meta = mt::Equip::GetById(meta->_int_param2);
|
const mt::Equip* weapon_meta = mt::Equip::GetById(meta->_int_buff_param2);
|
||||||
if (!weapon_meta) {
|
if (!weapon_meta) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < meta->_param4_int_list.size(); ++i) {
|
for (int i = 0; i < meta->_buff_param4_int_list.size(); ++i) {
|
||||||
glm::vec3 bullet_dir = GlmHelper::UP;
|
glm::vec3 bullet_dir = GlmHelper::UP;
|
||||||
GlmHelper::RotateY(bullet_dir, meta->_param4_int_list[i] / 180.f);
|
GlmHelper::RotateY(bullet_dir, meta->_buff_param4_int_list[i] / 180.f);
|
||||||
Position bullet_born_pos = owner->GetPos();
|
Position bullet_born_pos = owner->GetPos();
|
||||||
bullet_born_pos.AddGlmVec3(bullet_dir * meta->_param3);
|
bullet_born_pos.AddGlmVec3(bullet_dir * meta->_buff_param3);
|
||||||
int bullet_uniid = owner->room->AllocUniid();
|
int bullet_uniid = owner->room->AllocUniid();
|
||||||
owner->room->frame_event.AddBullet
|
owner->room->frame_event.AddBullet
|
||||||
(bullet_uniid,
|
(bullet_uniid,
|
||||||
@ -346,7 +346,7 @@ void Buff::Activate()
|
|||||||
{
|
{
|
||||||
owner->RecalcBuffAttr();
|
owner->RecalcBuffAttr();
|
||||||
if (meta->buff_effect() == kBET_Car) {
|
if (meta->buff_effect() == kBET_Car) {
|
||||||
const mt::Equip* equip_meta = mt::Equip::GetById(meta->_param4);
|
const mt::Equip* equip_meta = mt::Equip::GetById(meta->_buff_param4);
|
||||||
if (equip_meta &&
|
if (equip_meta &&
|
||||||
equip_meta->equip_type() == EQUIP_TYPE_CAR &&
|
equip_meta->equip_type() == EQUIP_TYPE_CAR &&
|
||||||
equip_meta->equip_subtype() == 1
|
equip_meta->equip_subtype() == 1
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
void AddCarBuff::Activate()
|
void AddCarBuff::Activate()
|
||||||
{
|
{
|
||||||
if (owner->IsHuman() && owner->AsHuman()->GetCar()) {
|
if (owner->IsHuman() && owner->AsHuman()->GetCar()) {
|
||||||
owner->AsHuman()->GetCar()->TryAddBuff(owner, meta->_int_param1);
|
owner->AsHuman()->GetCar()->TryAddBuff(owner, meta->_int_buff_param1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,9 +9,9 @@
|
|||||||
|
|
||||||
void AddInventoryBuff::Activate()
|
void AddInventoryBuff::Activate()
|
||||||
{
|
{
|
||||||
for (int slot : meta->_param2_int_list) {
|
for (int slot : meta->_buff_param2_int_list) {
|
||||||
if (IsValidSlotId(slot)) {
|
if (IsValidSlotId(slot)) {
|
||||||
owner->buff_inventory_[slot].num += meta->_int_param1;
|
owner->buff_inventory_[slot].num += meta->_int_buff_param1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (owner->IsHuman()) {
|
if (owner->IsHuman()) {
|
||||||
@ -23,9 +23,9 @@ void AddInventoryBuff::Activate()
|
|||||||
void AddInventoryBuff::Deactivate()
|
void AddInventoryBuff::Deactivate()
|
||||||
{
|
{
|
||||||
if (owner->IsHuman()) {
|
if (owner->IsHuman()) {
|
||||||
for (int slot : meta->_param2_int_list) {
|
for (int slot : meta->_buff_param2_int_list) {
|
||||||
if (IsValidSlotId(slot)) {
|
if (IsValidSlotId(slot)) {
|
||||||
owner->AsHuman()->buff_inventory_[slot].num -= meta->_int_param1;
|
owner->AsHuman()->buff_inventory_[slot].num -= meta->_int_buff_param1;
|
||||||
owner->AsHuman()->buff_inventory_[slot].num =
|
owner->AsHuman()->buff_inventory_[slot].num =
|
||||||
std::max(0, owner->AsHuman()->buff_inventory_[slot].num);
|
std::max(0, owner->AsHuman()->buff_inventory_[slot].num);
|
||||||
}
|
}
|
||||||
|
@ -13,10 +13,10 @@ void BeatBackBuff::Activate()
|
|||||||
if (caster_.Get()) {
|
if (caster_.Get()) {
|
||||||
if (std::abs(caster_.Get()->context_dir.x) > FLT_EPSILON ||
|
if (std::abs(caster_.Get()->context_dir.x) > FLT_EPSILON ||
|
||||||
std::abs(caster_.Get()->context_dir.x) > FLT_EPSILON) {
|
std::abs(caster_.Get()->context_dir.x) > FLT_EPSILON) {
|
||||||
if (std::abs(meta->_int_param1) > 0) {
|
if (std::abs(meta->_int_buff_param1) > 0) {
|
||||||
glm::vec3 old_move_dir = owner->GetMoveDir();
|
glm::vec3 old_move_dir = owner->GetMoveDir();
|
||||||
owner->SetMoveDir(caster_.Get()->context_dir);
|
owner->SetMoveDir(caster_.Get()->context_dir);
|
||||||
owner->ForwardMove(meta->_param1);
|
owner->ForwardMove(meta->_buff_param1);
|
||||||
owner->SetMoveDir(old_move_dir);
|
owner->SetMoveDir(old_move_dir);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
void BecomeBuff::Activate()
|
void BecomeBuff::Activate()
|
||||||
{
|
{
|
||||||
hold_curr_weapon_idx_ = caster_.Get()->GetCurrWeapon()->weapon_idx;
|
hold_curr_weapon_idx_ = caster_.Get()->GetCurrWeapon()->weapon_idx;
|
||||||
if (caster_.Get()->IsHuman() && meta->_param2 > 0.01) {
|
if (caster_.Get()->IsHuman() && meta->_buff_param2 > 0.01) {
|
||||||
std::vector<std::string> strings;
|
std::vector<std::string> strings;
|
||||||
a8::Split(meta->buff_param2(), strings, ':');
|
a8::Split(meta->buff_param2(), strings, ':');
|
||||||
for (size_t i = 0; i < strings.size(); ++i) {
|
for (size_t i = 0; i < strings.size(); ++i) {
|
||||||
|
@ -17,7 +17,7 @@ void BePullBuff::Activate()
|
|||||||
owner->SetPos(caster_.Get()->GetPos());
|
owner->SetPos(caster_.Get()->GetPos());
|
||||||
owner->target_pos = caster_.Get()->GetPos();
|
owner->target_pos = caster_.Get()->GetPos();
|
||||||
} else {
|
} else {
|
||||||
if (target_distance <= meta->_param3) {
|
if (target_distance <= meta->_buff_param3) {
|
||||||
owner->SetPos(caster_.Get()->GetPos());
|
owner->SetPos(caster_.Get()->GetPos());
|
||||||
owner->target_pos = caster_.Get()->GetPos();
|
owner->target_pos = caster_.Get()->GetPos();
|
||||||
} else {
|
} else {
|
||||||
@ -25,7 +25,7 @@ void BePullBuff::Activate()
|
|||||||
GlmHelper::Normalize(move_dir);
|
GlmHelper::Normalize(move_dir);
|
||||||
owner->SetMoveDir(move_dir);
|
owner->SetMoveDir(move_dir);
|
||||||
owner->target_pos = owner->GetPos();
|
owner->target_pos = owner->GetPos();
|
||||||
owner->target_pos.AddGlmVec3(owner->GetMoveDir() * (target_distance - meta->_param3));
|
owner->target_pos.AddGlmVec3(owner->GetMoveDir() * (target_distance - meta->_buff_param3));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -10,14 +10,14 @@
|
|||||||
|
|
||||||
void CallFuncBuff::Activate()
|
void CallFuncBuff::Activate()
|
||||||
{
|
{
|
||||||
switch (meta->_int_param1) {
|
switch (meta->_int_buff_param1) {
|
||||||
case 1:
|
case 1:
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
{
|
{
|
||||||
owner->GetAbility()->AddSpeedRuduce(meta->_param2);
|
owner->GetAbility()->AddSpeedRuduce(meta->_buff_param2);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
@ -34,7 +34,7 @@ void CallFuncBuff::Activate()
|
|||||||
|
|
||||||
void CallFuncBuff::Deactivate()
|
void CallFuncBuff::Deactivate()
|
||||||
{
|
{
|
||||||
switch (meta->_int_param1) {
|
switch (meta->_int_buff_param1) {
|
||||||
case 1:
|
case 1:
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -42,7 +42,7 @@ void CallFuncBuff::Deactivate()
|
|||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
{
|
{
|
||||||
owner->GetAbility()->DelSpeedRuduce(meta->_param2);
|
owner->GetAbility()->DelSpeedRuduce(meta->_buff_param2);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -56,7 +56,7 @@ void CallFuncBuff::ProcIntervalRangeAddBuffFunc()
|
|||||||
{
|
{
|
||||||
owner->room->xtimer.SetIntervalEx
|
owner->room->xtimer.SetIntervalEx
|
||||||
(
|
(
|
||||||
meta->_param4 / FRAME_RATE_MS,
|
meta->_buff_param4 / FRAME_RATE_MS,
|
||||||
[this] (int event, const a8::Args* args)
|
[this] (int event, const a8::Args* args)
|
||||||
{
|
{
|
||||||
if (a8::TIMER_EXEC_EVENT == event) {
|
if (a8::TIMER_EXEC_EVENT == event) {
|
||||||
@ -74,8 +74,8 @@ void CallFuncBuff::ProcIntervalRangeAddBuffFunc()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (GetCaster().Get()->team_id != c->team_id) {
|
if (GetCaster().Get()->team_id != c->team_id) {
|
||||||
if (owner->GetPos().Distance2D2(c->GetPos()) < meta->_param2) {
|
if (owner->GetPos().Distance2D2(c->GetPos()) < meta->_buff_param2) {
|
||||||
c->TryAddBuff(GetCaster().Get(), meta->_int_param3, skill_meta);
|
c->TryAddBuff(GetCaster().Get(), meta->_int_buff_param3, skill_meta);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -11,15 +11,15 @@
|
|||||||
void CamouflageAdditionBuff::Activate()
|
void CamouflageAdditionBuff::Activate()
|
||||||
{
|
{
|
||||||
Buff* camouflage_buff = owner->GetBuffByEffectId(kBET_Camouflage);
|
Buff* camouflage_buff = owner->GetBuffByEffectId(kBET_Camouflage);
|
||||||
if (camouflage_buff && !camouflage_buff->remover_timer.expired() && meta->_int_param1 > 0) {
|
if (camouflage_buff && !camouflage_buff->remover_timer.expired() && meta->_int_buff_param1 > 0) {
|
||||||
int remain_time = owner->room->xtimer.GetRemainTime(camouflage_buff->remover_timer) * FRAME_RATE_MS;
|
int remain_time = owner->room->xtimer.GetRemainTime(camouflage_buff->remover_timer) * FRAME_RATE_MS;
|
||||||
remain_time += meta->_int_param1;
|
remain_time += meta->_int_buff_param1;
|
||||||
owner->room->xtimer.ModifyTime(camouflage_buff->remover_timer, remain_time / FRAME_RATE_MS);
|
owner->room->xtimer.ModifyTime(camouflage_buff->remover_timer, remain_time / FRAME_RATE_MS);
|
||||||
}
|
}
|
||||||
if (meta->_int_param2 != 0) {
|
if (meta->_int_buff_param2 != 0) {
|
||||||
++owner->camouflage_move_addition_;
|
++owner->camouflage_move_addition_;
|
||||||
}
|
}
|
||||||
if (meta->_int_param3 != 0) {
|
if (meta->_int_buff_param3 != 0) {
|
||||||
++owner->camouflage_aiming_addition_;
|
++owner->camouflage_aiming_addition_;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -27,10 +27,10 @@ void CamouflageAdditionBuff::Activate()
|
|||||||
void CamouflageAdditionBuff::Deactivate()
|
void CamouflageAdditionBuff::Deactivate()
|
||||||
{
|
{
|
||||||
if (owner->AsHuman()) {
|
if (owner->AsHuman()) {
|
||||||
if (meta->_int_param2 != 0) {
|
if (meta->_int_buff_param2 != 0) {
|
||||||
--owner->AsHuman()->camouflage_move_addition_;
|
--owner->AsHuman()->camouflage_move_addition_;
|
||||||
}
|
}
|
||||||
if (meta->_int_param3 != 0) {
|
if (meta->_int_buff_param3 != 0) {
|
||||||
--owner->AsHuman()->camouflage_aiming_addition_;
|
--owner->AsHuman()->camouflage_aiming_addition_;
|
||||||
}
|
}
|
||||||
owner->AsHuman()->camouflage_move_addition_ = std::max(owner->AsHuman()->camouflage_move_addition_, 0);
|
owner->AsHuman()->camouflage_move_addition_ = std::max(owner->AsHuman()->camouflage_move_addition_, 0);
|
||||||
|
@ -8,10 +8,10 @@
|
|||||||
|
|
||||||
void CondAddBuff::Activate()
|
void CondAddBuff::Activate()
|
||||||
{
|
{
|
||||||
if (!IsValidCondBuff(meta->_int_param1)) {
|
if (!IsValidCondBuff(meta->_int_buff_param1)) {
|
||||||
A8_ABORT();
|
A8_ABORT();
|
||||||
}
|
}
|
||||||
list_add_tail(&cond_entry, &owner->cond_buffs_[meta->_int_param1]);
|
list_add_tail(&cond_entry, &owner->cond_buffs_[meta->_int_buff_param1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CondAddBuff::Deactivate()
|
void CondAddBuff::Deactivate()
|
||||||
|
@ -13,7 +13,7 @@ void DisperseBuff::Activate()
|
|||||||
(
|
(
|
||||||
[this, &del_buffs] (Buff* buff, bool& stop)
|
[this, &del_buffs] (Buff* buff, bool& stop)
|
||||||
{
|
{
|
||||||
for (int tag : meta->_param1_int_set) {
|
for (int tag : meta->_buff_param1_int_set) {
|
||||||
if (buff->meta->_tags.find(tag) != buff->meta->_tags.end()) {
|
if (buff->meta->_tags.find(tag) != buff->meta->_tags.end()) {
|
||||||
del_buffs.push_back(buff->buff_uniid);
|
del_buffs.push_back(buff->buff_uniid);
|
||||||
break;
|
break;
|
||||||
@ -24,7 +24,7 @@ void DisperseBuff::Activate()
|
|||||||
owner->RemoveBuffByUniId(buff_uniid);
|
owner->RemoveBuffByUniId(buff_uniid);
|
||||||
}
|
}
|
||||||
if (!del_buffs.empty()) {
|
if (!del_buffs.empty()) {
|
||||||
owner->TryAddBuff(owner, meta->_int_param2);
|
owner->TryAddBuff(owner, meta->_int_buff_param2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
void FlashMoveBuff::Activate()
|
void FlashMoveBuff::Activate()
|
||||||
{
|
{
|
||||||
if (meta->_int_param1 == 0) {
|
if (meta->_int_buff_param1 == 0) {
|
||||||
owner->SpecDirMove(owner->skill_dir_, std::max(owner->skill_distance_, 300.0f));
|
owner->SpecDirMove(owner->skill_dir_, std::max(owner->skill_distance_, 300.0f));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,14 +9,14 @@
|
|||||||
|
|
||||||
void ImmuneBuff::Activate()
|
void ImmuneBuff::Activate()
|
||||||
{
|
{
|
||||||
for (int tag : meta->_param1_int_list) {
|
for (int tag : meta->_buff_param1_int_list) {
|
||||||
owner->GetAbility()->IncImmuneTimes(tag);
|
owner->GetAbility()->IncImmuneTimes(tag);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImmuneBuff::Deactivate()
|
void ImmuneBuff::Deactivate()
|
||||||
{
|
{
|
||||||
for (int tag : meta->_param1_int_list) {
|
for (int tag : meta->_buff_param1_int_list) {
|
||||||
owner->GetAbility()->DecImmuneTimes(tag);
|
owner->GetAbility()->DecImmuneTimes(tag);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,7 @@ void JumpToBuff::Activate()
|
|||||||
owner->SetPos(entity->GetPos());
|
owner->SetPos(entity->GetPos());
|
||||||
owner->target_pos = entity->GetPos();
|
owner->target_pos = entity->GetPos();
|
||||||
} else {
|
} else {
|
||||||
if (target_distance <= meta->_param3) {
|
if (target_distance <= meta->_buff_param3) {
|
||||||
owner->SetPos(entity->GetPos());
|
owner->SetPos(entity->GetPos());
|
||||||
owner->target_pos = entity->GetPos();
|
owner->target_pos = entity->GetPos();
|
||||||
} else {
|
} else {
|
||||||
@ -25,7 +25,7 @@ void JumpToBuff::Activate()
|
|||||||
owner->SetMoveDir(move_dir);
|
owner->SetMoveDir(move_dir);
|
||||||
owner->skill_dir_ = owner->GetMoveDir();
|
owner->skill_dir_ = owner->GetMoveDir();
|
||||||
owner->target_pos = owner->GetPos();
|
owner->target_pos = owner->GetPos();
|
||||||
owner->target_pos.AddGlmVec3(owner->GetMoveDir() * (target_distance - meta->_param3));
|
owner->target_pos.AddGlmVec3(owner->GetMoveDir() * (target_distance - meta->_buff_param3));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,7 +22,7 @@ void OnceChgAttrBuff::InternalProcOnceChgAttr()
|
|||||||
if (owner->dead) {
|
if (owner->dead) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
switch (meta->_int_param1) {
|
switch (meta->_int_buff_param1) {
|
||||||
case kHAT_Hp:
|
case kHAT_Hp:
|
||||||
{
|
{
|
||||||
int real_killer_id = 0;
|
int real_killer_id = 0;
|
||||||
@ -31,13 +31,13 @@ void OnceChgAttrBuff::InternalProcOnceChgAttr()
|
|||||||
real_killer_id = caster_.Get()->GetUniId();
|
real_killer_id = caster_.Get()->GetUniId();
|
||||||
real_killer_name = caster_.Get()->GetName();
|
real_killer_name = caster_.Get()->GetName();
|
||||||
}
|
}
|
||||||
if (meta->_int_param2 == 1) {
|
if (meta->_int_buff_param2 == 1) {
|
||||||
//绝对值
|
//绝对值
|
||||||
if (meta->_param3 > 0) {
|
if (meta->_buff_param3 > 0) {
|
||||||
owner->AddHp(meta->_param3);
|
owner->AddHp(meta->_buff_param3);
|
||||||
} else if (meta->_param3 < 0) {
|
} else if (meta->_buff_param3 < 0) {
|
||||||
owner->over_delay_time = 100;
|
owner->over_delay_time = 100;
|
||||||
owner->DecHP(std::abs(meta->_param3),
|
owner->DecHP(std::abs(meta->_buff_param3),
|
||||||
VP_Buff,
|
VP_Buff,
|
||||||
"",
|
"",
|
||||||
meta->buff_id(),
|
meta->buff_id(),
|
||||||
@ -45,9 +45,9 @@ void OnceChgAttrBuff::InternalProcOnceChgAttr()
|
|||||||
real_killer_name);
|
real_killer_name);
|
||||||
owner->over_delay_time = 0;
|
owner->over_delay_time = 0;
|
||||||
}
|
}
|
||||||
} else if (meta->_int_param2 == 2) {
|
} else if (meta->_int_buff_param2 == 2) {
|
||||||
//百分比
|
//百分比
|
||||||
float chg_hp = owner->GetHP() * meta->_param3;
|
float chg_hp = owner->GetHP() * meta->_buff_param3;
|
||||||
if (chg_hp > 0.0001f) {
|
if (chg_hp > 0.0001f) {
|
||||||
owner->AddHp(chg_hp);
|
owner->AddHp(chg_hp);
|
||||||
} else if (chg_hp < 0.0001f) {
|
} else if (chg_hp < 0.0001f) {
|
||||||
@ -66,8 +66,8 @@ void OnceChgAttrBuff::InternalProcOnceChgAttr()
|
|||||||
std::string dbg_msg = a8::Format
|
std::string dbg_msg = a8::Format
|
||||||
("buff扣血 type:%s val:%f",
|
("buff扣血 type:%s val:%f",
|
||||||
{
|
{
|
||||||
meta->_int_param2,
|
meta->_int_buff_param2,
|
||||||
meta->_int_param3,
|
meta->_int_buff_param3,
|
||||||
});
|
});
|
||||||
owner->room->BroadcastDebugMsg(dbg_msg);
|
owner->room->BroadcastDebugMsg(dbg_msg);
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
void RemoveCarBuff::Activate()
|
void RemoveCarBuff::Activate()
|
||||||
{
|
{
|
||||||
if (owner->IsHuman() && owner->AsHuman()->GetCar()) {
|
if (owner->IsHuman() && owner->AsHuman()->GetCar()) {
|
||||||
owner->AsHuman()->GetCar()->RemoveBuffById(meta->_int_param1);
|
owner->AsHuman()->GetCar()->RemoveBuffById(meta->_int_buff_param1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,8 +34,8 @@ void ReverseBuff::Activate()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (meta->_param1 > 0.001) {
|
if (meta->_buff_param1 > 0.001) {
|
||||||
owner->ForwardMove(meta->_param1);
|
owner->ForwardMove(meta->_buff_param1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,8 +13,8 @@ void SelectTargetWithSelfPosBuff::Activate()
|
|||||||
(
|
(
|
||||||
[this, &targets] (Creature* c, bool& stop)
|
[this, &targets] (Creature* c, bool& stop)
|
||||||
{
|
{
|
||||||
if (owner->GetPos().Distance2D2(c->GetPos()) < meta->_int_param3) {
|
if (owner->GetPos().Distance2D2(c->GetPos()) < meta->_int_buff_param3) {
|
||||||
switch (meta->_int_param1) {
|
switch (meta->_int_buff_param1) {
|
||||||
case kBST_All:
|
case kBST_All:
|
||||||
{
|
{
|
||||||
targets.push_back(c);
|
targets.push_back(c);
|
||||||
@ -64,7 +64,7 @@ void SelectTargetWithSelfPosBuff::Activate()
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
for (auto& target : targets) {
|
for (auto& target : targets) {
|
||||||
for (int buff_id : meta->_param2_int_list) {
|
for (int buff_id : meta->_buff_param2_int_list) {
|
||||||
target->TryAddBuff(caster_.Get(), buff_id);
|
target->TryAddBuff(caster_.Get(), buff_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
void SprintBuff::Activate()
|
void SprintBuff::Activate()
|
||||||
{
|
{
|
||||||
if (meta->_int_param5) {
|
if (meta->_int_buff_param5) {
|
||||||
owner->IncDisableMoveDirTimes();
|
owner->IncDisableMoveDirTimes();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -26,7 +26,7 @@ void SprintBuff::Activate()
|
|||||||
|
|
||||||
void SprintBuff::Deactivate()
|
void SprintBuff::Deactivate()
|
||||||
{
|
{
|
||||||
if (meta->_int_param5) {
|
if (meta->_int_buff_param5) {
|
||||||
owner->DecDisableMoveDirTimes();
|
owner->DecDisableMoveDirTimes();
|
||||||
}
|
}
|
||||||
if (owner->AsHuman()) {
|
if (owner->AsHuman()) {
|
||||||
@ -94,7 +94,7 @@ void SprintBuff::CoCollisionCheck()
|
|||||||
(int event, const a8::Args* args) mutable
|
(int event, const a8::Args* args) mutable
|
||||||
{
|
{
|
||||||
if (a8::TIMER_EXEC_EVENT == event) {
|
if (a8::TIMER_EXEC_EVENT == event) {
|
||||||
if (!meta->_param3_int_list.empty() || skill_meta) {
|
if (!meta->_buff_param3_int_list.empty() || skill_meta) {
|
||||||
Check(pre_pos, hited_objects);
|
Check(pre_pos, hited_objects);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -116,7 +116,7 @@ void SprintBuff::Check(Position& pre_pos, std::map<int, long long>& hited_object
|
|||||||
for (int i = 0; i < (distance + 6); i += 5) {
|
for (int i = 0; i < (distance + 6); i += 5) {
|
||||||
glm::vec3 center = owner->GetPos().ToGlmVec3() + dir * (float)i;
|
glm::vec3 center = owner->GetPos().ToGlmVec3() + dir * (float)i;
|
||||||
std::set<Creature*> enemys;
|
std::set<Creature*> enemys;
|
||||||
owner->GetHitEnemys(enemys, center, meta->_param4);
|
owner->GetHitEnemys(enemys, center, meta->_buff_param4);
|
||||||
for (auto& enemy : enemys) {
|
for (auto& enemy : enemys) {
|
||||||
if (enemy->IsEntityType(ET_Car)) {
|
if (enemy->IsEntityType(ET_Car)) {
|
||||||
continue;
|
continue;
|
||||||
@ -124,7 +124,7 @@ void SprintBuff::Check(Position& pre_pos, std::map<int, long long>& hited_object
|
|||||||
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) * FRAME_RATE_MS <
|
||||||
meta->_int_param5) {
|
meta->_int_buff_param5) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -137,7 +137,7 @@ void SprintBuff::Check(Position& pre_pos, std::map<int, long long>& hited_object
|
|||||||
|
|
||||||
void SprintBuff::OnEnemyHit(Creature* enemy)
|
void SprintBuff::OnEnemyHit(Creature* enemy)
|
||||||
{
|
{
|
||||||
for (int buff_id : meta->_param3_int_list) {
|
for (int buff_id : meta->_buff_param3_int_list) {
|
||||||
enemy->TryAddBuff(owner, buff_id);
|
enemy->TryAddBuff(owner, buff_id);
|
||||||
}
|
}
|
||||||
if (skill_meta) {
|
if (skill_meta) {
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
void SummonObstacleBuff::Activate()
|
void SummonObstacleBuff::Activate()
|
||||||
{
|
{
|
||||||
if (!owner->dead || meta->dead_valid() != 0) {
|
if (!owner->dead || meta->dead_valid() != 0) {
|
||||||
owner->SummonObstacle(this, meta->_param1, owner->context_pos);
|
owner->SummonObstacle(this, meta->_buff_param1, owner->context_pos);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@ void TurnOverBuff::Activate()
|
|||||||
}
|
}
|
||||||
float moved_distance = owner->GetPos().Distance2D2(old_pos);
|
float moved_distance = owner->GetPos().Distance2D2(old_pos);
|
||||||
moved_distance = std::min(moved_distance, 200.0f);
|
moved_distance = std::min(moved_distance, 200.0f);
|
||||||
if (!meta->_param1_int_list.empty() && moved_distance > 2.0f) {
|
if (!meta->_buff_param1_int_list.empty() && moved_distance > 2.0f) {
|
||||||
std::set<Creature*> target_list;
|
std::set<Creature*> target_list;
|
||||||
owner->TraverseCreatures
|
owner->TraverseCreatures
|
||||||
(
|
(
|
||||||
@ -75,14 +75,14 @@ void TurnOverBuff::Activate()
|
|||||||
target_list.erase(target);
|
target_list.erase(target);
|
||||||
target->room->xtimer.SetTimeoutEx
|
target->room->xtimer.SetTimeoutEx
|
||||||
(
|
(
|
||||||
meta->_int_param4 / FRAME_RATE_MS * (i / moved_distance),
|
meta->_int_buff_param4 / FRAME_RATE_MS * (i / moved_distance),
|
||||||
[this, target] (int event, const a8::Args* args) mutable
|
[this, target] (int event, const a8::Args* args) mutable
|
||||||
{
|
{
|
||||||
Creature* c = target;
|
Creature* c = target;
|
||||||
const mt::Buff* buff_meta = meta;
|
const mt::Buff* buff_meta = meta;
|
||||||
Entity* caster = c->room->GetEntityByUniId(owner->GetUniId());
|
Entity* caster = c->room->GetEntityByUniId(owner->GetUniId());
|
||||||
if (caster && caster->IsCreature(c->room)) {
|
if (caster && caster->IsCreature(c->room)) {
|
||||||
for (int buff_id : buff_meta->_param1_int_list) {
|
for (int buff_id : buff_meta->_buff_param1_int_list) {
|
||||||
c->TryAddBuff((Creature*)caster, buff_id);
|
c->TryAddBuff((Creature*)caster, buff_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -95,10 +95,10 @@ void TurnOverBuff::Activate()
|
|||||||
Global::Instance()->verify_set_pos = 0;
|
Global::Instance()->verify_set_pos = 0;
|
||||||
owner->room->grid_service->MoveCreature(owner);
|
owner->room->grid_service->MoveCreature(owner);
|
||||||
}
|
}
|
||||||
if (!meta->_param2_int_list.empty()) {
|
if (!meta->_buff_param2_int_list.empty()) {
|
||||||
owner->room->xtimer.SetTimeoutEx
|
owner->room->xtimer.SetTimeoutEx
|
||||||
(
|
(
|
||||||
meta->_int_param4 / FRAME_RATE_MS,
|
meta->_int_buff_param4 / FRAME_RATE_MS,
|
||||||
[this] (int event, const a8::Args* args) mutable
|
[this] (int event, const a8::Args* args) mutable
|
||||||
{
|
{
|
||||||
Creature* c = owner;
|
Creature* c = owner;
|
||||||
@ -107,8 +107,8 @@ void TurnOverBuff::Activate()
|
|||||||
(
|
(
|
||||||
[c, buff_meta] (Creature* target, bool& stop)
|
[c, buff_meta] (Creature* target, bool& stop)
|
||||||
{
|
{
|
||||||
if (c->GetPos().Distance2D2(target->GetPos()) < buff_meta->_int_param3) {
|
if (c->GetPos().Distance2D2(target->GetPos()) < buff_meta->_int_buff_param3) {
|
||||||
for (int buff_id : buff_meta->_param2_int_list) {
|
for (int buff_id : buff_meta->_buff_param2_int_list) {
|
||||||
target->TryAddBuffWithTarget(c, buff_id);
|
target->TryAddBuffWithTarget(c, buff_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
void UseSkillBuff::Activate()
|
void UseSkillBuff::Activate()
|
||||||
{
|
{
|
||||||
Skill* skill = owner->GetSkill(meta->_int_param1);
|
Skill* skill = owner->GetSkill(meta->_int_buff_param1);
|
||||||
if (skill) {
|
if (skill) {
|
||||||
++skill->force_use_times;
|
++skill->force_use_times;
|
||||||
Position target_pos = owner->GetPos();
|
Position target_pos = owner->GetPos();
|
||||||
|
@ -267,11 +267,11 @@ int Creature::AddBuff(Creature* caster,
|
|||||||
buff_meta->buff_id(),
|
buff_meta->buff_id(),
|
||||||
buff_meta->buff_effect(),
|
buff_meta->buff_effect(),
|
||||||
buff_meta->name(),
|
buff_meta->name(),
|
||||||
buff_meta->_int_param1,
|
buff_meta->_int_buff_param1,
|
||||||
buff_meta->_int_param2,
|
buff_meta->_int_buff_param2,
|
||||||
buff_meta->_int_param3,
|
buff_meta->_int_buff_param3,
|
||||||
buff_meta->_int_param4,
|
buff_meta->_int_buff_param4,
|
||||||
buff_meta->_int_param5,
|
buff_meta->_int_buff_param5,
|
||||||
buff->buff_uniid,
|
buff->buff_uniid,
|
||||||
room->xtimer.GetRemainTime(buff->remover_timer)
|
room->xtimer.GetRemainTime(buff->remover_timer)
|
||||||
}));
|
}));
|
||||||
@ -506,18 +506,18 @@ void Creature::RecalcBuffAttr()
|
|||||||
if (buff->meta->buff_effect() == kBET_ChgAttr ||
|
if (buff->meta->buff_effect() == kBET_ChgAttr ||
|
||||||
buff->meta->buff_effect() == kBET_Car ||
|
buff->meta->buff_effect() == kBET_Car ||
|
||||||
buff->meta->buff_effect() == kBET_CrazyMode) {
|
buff->meta->buff_effect() == kBET_CrazyMode) {
|
||||||
int attr_type = (int)buff->meta->_param1;
|
int attr_type = (int)buff->meta->_buff_param1;
|
||||||
int calc_type = (int)buff->meta->_param2;
|
int calc_type = (int)buff->meta->_buff_param2;
|
||||||
if (IsValidHumanAttr(attr_type)) {
|
if (IsValidHumanAttr(attr_type)) {
|
||||||
if (calc_type == 1) {
|
if (calc_type == 1) {
|
||||||
float* p = ability_->GetBuffAttrAbsPtr(attr_type);
|
float* p = ability_->GetBuffAttrAbsPtr(attr_type);
|
||||||
if (p) {
|
if (p) {
|
||||||
*p += buff->meta->_param3;
|
*p += buff->meta->_buff_param3;
|
||||||
}
|
}
|
||||||
} else if (calc_type == 2) {
|
} else if (calc_type == 2) {
|
||||||
float* p = ability_->GetBuffAttrRatePtr(attr_type);
|
float* p = ability_->GetBuffAttrRatePtr(attr_type);
|
||||||
if (p) {
|
if (p) {
|
||||||
*p += buff->meta->_param3;
|
*p += buff->meta->_buff_param3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -583,11 +583,11 @@ void Creature::OnBuffRemove(Buff& buff)
|
|||||||
#if 999
|
#if 999
|
||||||
if (buff.meta->buff_id() == 8042) {
|
if (buff.meta->buff_id() == 8042) {
|
||||||
if (GetAbility()->GetSpeedRuduceTimes() > 0) {
|
if (GetAbility()->GetSpeedRuduceTimes() > 0) {
|
||||||
GetAbility()->DelSpeedRuduce(-buff.meta->_param3/100.0f);
|
GetAbility()->DelSpeedRuduce(-buff.meta->_buff_param3/100.0f);
|
||||||
}
|
}
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
{
|
{
|
||||||
a8::XPrintf("移除减速%f\nad", {buff.meta->_param3});
|
a8::XPrintf("移除减速%f\nad", {buff.meta->_buff_param3});
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -1431,8 +1431,8 @@ void Creature::CheckSpecObject(int new_poly_flags)
|
|||||||
|
|
||||||
void Creature::SummonObstacle(Buff* buff, int id, const Position& target_pos)
|
void Creature::SummonObstacle(Buff* buff, int id, const Position& target_pos)
|
||||||
{
|
{
|
||||||
if (buff->meta->_int_param2 > 0) {
|
if (buff->meta->_int_buff_param2 > 0) {
|
||||||
RemoveSurplusObstacle(buff->meta->buff_id(), id, buff->meta->_int_param2);
|
RemoveSurplusObstacle(buff->meta->buff_id(), id, buff->meta->_int_buff_param2);
|
||||||
}
|
}
|
||||||
float *p_rotate = nullptr;
|
float *p_rotate = nullptr;
|
||||||
float rotate = 0.0f;
|
float rotate = 0.0f;
|
||||||
@ -2643,7 +2643,7 @@ void Creature::CheckBulletHitHoldShield(IBullet* bullet, bool& eat)
|
|||||||
Buff* hold_shield_buff = GetBuffByEffectId(kBET_HoldShield);
|
Buff* hold_shield_buff = GetBuffByEffectId(kBET_HoldShield);
|
||||||
if (hold_shield_buff && !bullet->IsBomb() && !dead && this != bullet->GetSender().Get()) {
|
if (hold_shield_buff && !bullet->IsBomb() && !dead && this != bullet->GetSender().Get()) {
|
||||||
//param2是距离 param4是宽度
|
//param2是距离 param4是宽度
|
||||||
glm::vec3 shield_pos = GetPos().ToGlmVec3() + GetAttackDir() * hold_shield_buff->meta->_param2;
|
glm::vec3 shield_pos = GetPos().ToGlmVec3() + GetAttackDir() * hold_shield_buff->meta->_buff_param2;
|
||||||
bool ret = Collision::Check2dRotationRectangle
|
bool ret = Collision::Check2dRotationRectangle
|
||||||
(GetPos().x,
|
(GetPos().x,
|
||||||
GetPos().y,
|
GetPos().y,
|
||||||
@ -2651,7 +2651,7 @@ void Creature::CheckBulletHitHoldShield(IBullet* bullet, bool& eat)
|
|||||||
bullet->GetGunMeta()->bullet_rad(),
|
bullet->GetGunMeta()->bullet_rad(),
|
||||||
shield_pos.x,
|
shield_pos.x,
|
||||||
shield_pos.y,
|
shield_pos.y,
|
||||||
hold_shield_buff->meta->_param4,
|
hold_shield_buff->meta->_buff_param4,
|
||||||
mt::Param::s().bullet_planck_step_length,
|
mt::Param::s().bullet_planck_step_length,
|
||||||
GetAttackDirRotate() * 180.0f
|
GetAttackDirRotate() * 180.0f
|
||||||
);
|
);
|
||||||
|
@ -418,13 +418,13 @@ float Human::GetSpeed()
|
|||||||
{
|
{
|
||||||
Buff* buff = GetBuffByEffectId(kBET_JumpTo);
|
Buff* buff = GetBuffByEffectId(kBET_JumpTo);
|
||||||
if (buff) {
|
if (buff) {
|
||||||
return buff->meta->_param2;
|
return buff->meta->_buff_param2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
Buff* buff = GetBuffByEffectId(kBET_HoldShield);
|
Buff* buff = GetBuffByEffectId(kBET_HoldShield);
|
||||||
if (buff) {
|
if (buff) {
|
||||||
return buff->meta->_param1;
|
return buff->meta->_buff_param1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
@ -436,13 +436,13 @@ float Human::GetSpeed()
|
|||||||
{
|
{
|
||||||
Buff* buff = GetBuffByEffectId(kBET_BePull);
|
Buff* buff = GetBuffByEffectId(kBET_BePull);
|
||||||
if (buff) {
|
if (buff) {
|
||||||
return buff->meta->_param2;
|
return buff->meta->_buff_param2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
Buff* buff = GetBuffByEffectId(kBET_Sprint);
|
Buff* buff = GetBuffByEffectId(kBET_Sprint);
|
||||||
if (buff) {
|
if (buff) {
|
||||||
return buff->meta->_param2;
|
return buff->meta->_buff_param2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
float speed = 1.0;
|
float speed = 1.0;
|
||||||
@ -599,7 +599,7 @@ void Human::DecHP(float dec_hp, int killer_id, const std::string& killer_name, i
|
|||||||
{
|
{
|
||||||
Buff* buff = GetBuffByEffectId(kBET_Shield);
|
Buff* buff = GetBuffByEffectId(kBET_Shield);
|
||||||
if (buff) {
|
if (buff) {
|
||||||
dec_hp = std::max((float)1.0, dec_hp - buff->meta->_param2);
|
dec_hp = std::max((float)1.0, dec_hp - buff->meta->_buff_param2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (HasBuffEffect(kBET_Invincible)) {
|
if (HasBuffEffect(kBET_Invincible)) {
|
||||||
@ -1853,8 +1853,8 @@ void Human::AdjustDecHp(float old_health, float& new_health)
|
|||||||
{
|
{
|
||||||
Buff* buff = GetBuffByEffectId(kBET_NewProtect);
|
Buff* buff = GetBuffByEffectId(kBET_NewProtect);
|
||||||
if (buff) {
|
if (buff) {
|
||||||
if (new_health < GetMaxHP() * buff->meta->_param1) {
|
if (new_health < GetMaxHP() * buff->meta->_buff_param1) {
|
||||||
new_health = std::max(GetMaxHP() * buff->meta->_param1, (float)0);
|
new_health = std::max(GetMaxHP() * buff->meta->_buff_param1, (float)0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2331,7 +2331,7 @@ void Human::OnBulletHit(IBullet* bullet)
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
Buff* buff = GetBuffByEffectId(kBET_Camouflage);
|
Buff* buff = GetBuffByEffectId(kBET_Camouflage);
|
||||||
if (buff && buff->meta->_int_param2 == 1) {
|
if (buff && buff->meta->_int_buff_param2 == 1) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,16 +10,16 @@ namespace mt
|
|||||||
|
|
||||||
void Buff::Init1()
|
void Buff::Init1()
|
||||||
{
|
{
|
||||||
_param1 = a8::XValue(buff_param1()).GetDouble();
|
_buff_param1 = a8::XValue(buff_param1()).GetDouble();
|
||||||
_param2 = a8::XValue(buff_param2()).GetDouble();
|
_buff_param2 = a8::XValue(buff_param2()).GetDouble();
|
||||||
_param3 = a8::XValue(buff_param3()).GetDouble();
|
_buff_param3 = a8::XValue(buff_param3()).GetDouble();
|
||||||
_param4 = a8::XValue(buff_param4()).GetDouble();
|
_buff_param4 = a8::XValue(buff_param4()).GetDouble();
|
||||||
_param5 = a8::XValue(buff_param5()).GetDouble();
|
_buff_param5 = a8::XValue(buff_param5()).GetDouble();
|
||||||
_int_param1 = a8::XValue(buff_param1());
|
_int_buff_param1 = a8::XValue(buff_param1());
|
||||||
_int_param2 = a8::XValue(buff_param2());
|
_int_buff_param2 = a8::XValue(buff_param2());
|
||||||
_int_param3 = a8::XValue(buff_param3());
|
_int_buff_param3 = a8::XValue(buff_param3());
|
||||||
_int_param4 = a8::XValue(buff_param4());
|
_int_buff_param4 = a8::XValue(buff_param4());
|
||||||
_int_param5 = a8::XValue(buff_param5());
|
_int_buff_param5 = a8::XValue(buff_param5());
|
||||||
{
|
{
|
||||||
std::vector<std::string> strings;
|
std::vector<std::string> strings;
|
||||||
a8::Split(child_buff(), strings, '|');
|
a8::Split(child_buff(), strings, '|');
|
||||||
@ -38,8 +38,8 @@ namespace mt
|
|||||||
std::vector<std::string> strings;
|
std::vector<std::string> strings;
|
||||||
a8::Split(buff_param1(), strings, '|');
|
a8::Split(buff_param1(), strings, '|');
|
||||||
for (auto& str : strings) {
|
for (auto& str : strings) {
|
||||||
_param1_int_list.push_back(a8::XValue(str).GetInt());
|
_buff_param1_int_list.push_back(a8::XValue(str).GetInt());
|
||||||
_param1_int_set.insert(a8::XValue(str).GetInt());
|
_buff_param1_int_set.insert(a8::XValue(str).GetInt());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
@ -49,22 +49,22 @@ namespace mt
|
|||||||
A8_ABORT();
|
A8_ABORT();
|
||||||
}
|
}
|
||||||
for (auto& str : strings) {
|
for (auto& str : strings) {
|
||||||
_param2_int_list.push_back(a8::XValue(str).GetInt());
|
_buff_param2_int_list.push_back(a8::XValue(str).GetInt());
|
||||||
_param2_int_set.insert(a8::XValue(str).GetInt());
|
_buff_param2_int_set.insert(a8::XValue(str).GetInt());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
std::vector<std::string> strings;
|
std::vector<std::string> strings;
|
||||||
a8::Split(buff_param3(), strings, '|');
|
a8::Split(buff_param3(), strings, '|');
|
||||||
for (auto& str : strings) {
|
for (auto& str : strings) {
|
||||||
_param3_int_list.push_back(a8::XValue(str).GetInt());
|
_buff_param3_int_list.push_back(a8::XValue(str).GetInt());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
std::vector<std::string> strings;
|
std::vector<std::string> strings;
|
||||||
a8::Split(buff_param4(), strings, '|');
|
a8::Split(buff_param4(), strings, '|');
|
||||||
for (auto& str : strings) {
|
for (auto& str : strings) {
|
||||||
_param4_int_list.push_back(a8::XValue(str).GetInt());
|
_buff_param4_int_list.push_back(a8::XValue(str).GetInt());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
@ -204,7 +204,7 @@ namespace mt
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (buff_effect() == kBET_CondAddBuff) {
|
if (buff_effect() == kBET_CondAddBuff) {
|
||||||
if (!IsValidCondBuff(_int_param1)) {
|
if (!IsValidCondBuff(_int_buff_param1)) {
|
||||||
A8_ABORT();
|
A8_ABORT();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -215,8 +215,8 @@ namespace mt
|
|||||||
switch (buff_effect()) {
|
switch (buff_effect()) {
|
||||||
case kBET_ChgAttr:
|
case kBET_ChgAttr:
|
||||||
{
|
{
|
||||||
assert(_int_param2 == 1 || _int_param2 == 2);
|
assert(_int_buff_param2 == 1 || _int_buff_param2 == 2);
|
||||||
if (_int_param2 == 2) {
|
if (_int_buff_param2 == 2) {
|
||||||
if (buff_param3().find('.') != std::string::npos) {
|
if (buff_param3().find('.') != std::string::npos) {
|
||||||
A8_ABORT();
|
A8_ABORT();
|
||||||
}
|
}
|
||||||
@ -236,16 +236,16 @@ namespace mt
|
|||||||
break;
|
break;
|
||||||
case kBET_DelayAddBuff:
|
case kBET_DelayAddBuff:
|
||||||
{
|
{
|
||||||
assert(_param1 < duration_time());
|
assert(_buff_param1 < duration_time());
|
||||||
if (!mt::Buff::GetById(_int_param2)) {
|
if (!mt::Buff::GetById(_int_buff_param2)) {
|
||||||
A8_ABORT();
|
A8_ABORT();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case kBET_IntervalAddBuff:
|
case kBET_IntervalAddBuff:
|
||||||
{
|
{
|
||||||
assert(_int_param1 < duration_time() * 1000);
|
assert(_int_buff_param1 < duration_time() * 1000);
|
||||||
if (!mt::Buff::GetById(_int_param2)) {
|
if (!mt::Buff::GetById(_int_buff_param2)) {
|
||||||
A8_ABORT();
|
A8_ABORT();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,22 +17,22 @@ namespace mt
|
|||||||
bool IsImmuneBuffEffect(int buff_effect) const;
|
bool IsImmuneBuffEffect(int buff_effect) const;
|
||||||
bool Match(CondAddBuff_e cond, int val) const;
|
bool Match(CondAddBuff_e cond, int val) const;
|
||||||
|
|
||||||
float _param1 = 0.0f;
|
float _buff_param1 = 0.0f;
|
||||||
float _param2 = 0.0f;
|
float _buff_param2 = 0.0f;
|
||||||
float _param3 = 0.0f;
|
float _buff_param3 = 0.0f;
|
||||||
float _param4 = 0.0f;
|
float _buff_param4 = 0.0f;
|
||||||
float _param5 = 0.0f;
|
float _buff_param5 = 0.0f;
|
||||||
int _int_param1 = 0;
|
int _int_buff_param1 = 0;
|
||||||
int _int_param2 = 0;
|
int _int_buff_param2 = 0;
|
||||||
int _int_param3 = 0;
|
int _int_buff_param3 = 0;
|
||||||
int _int_param4 = 0;
|
int _int_buff_param4 = 0;
|
||||||
int _int_param5 = 0;
|
int _int_buff_param5 = 0;
|
||||||
std::vector<int> _param1_int_list;
|
std::vector<int> _buff_param1_int_list;
|
||||||
std::vector<int> _param2_int_list;
|
std::vector<int> _buff_param2_int_list;
|
||||||
std::set<int> _param1_int_set;
|
std::set<int> _buff_param1_int_set;
|
||||||
std::set<int> _param2_int_set;
|
std::set<int> _buff_param2_int_set;
|
||||||
std::vector<int> _param3_int_list;
|
std::vector<int> _buff_param3_int_list;
|
||||||
std::vector<int> _param4_int_list;
|
std::vector<int> _buff_param4_int_list;
|
||||||
std::vector<std::tuple<int, std::vector<std::tuple<int, int>>>> _batch_add_list;
|
std::vector<std::tuple<int, std::vector<std::tuple<int, int>>>> _batch_add_list;
|
||||||
std::vector<std::tuple<int, std::vector<int>>> _post_remove_action;
|
std::vector<std::tuple<int, std::vector<int>>> _post_remove_action;
|
||||||
std::set<int> _immune_buffeffect;
|
std::set<int> _immune_buffeffect;
|
||||||
|
@ -607,7 +607,7 @@ void Skill::ProcCMXD()
|
|||||||
20,
|
20,
|
||||||
target_pos.x,
|
target_pos.x,
|
||||||
target_pos.y,
|
target_pos.y,
|
||||||
shield_buff_meta->_param4,
|
shield_buff_meta->_buff_param4,
|
||||||
SkillHelper::GetCmxdRange(this_skill_meta),
|
SkillHelper::GetCmxdRange(this_skill_meta),
|
||||||
sender.Get()->GetAttackDirRotate() * 180.0f
|
sender.Get()->GetAttackDirRotate() * 180.0f
|
||||||
);
|
);
|
||||||
|
@ -46,13 +46,13 @@ void Trigger::TakeonWeapon(Weapon* old_weapon, Weapon* new_weapon)
|
|||||||
[this, cond, weapon_meta] (Buff* buff, bool& stop)
|
[this, cond, weapon_meta] (Buff* buff, bool& stop)
|
||||||
{
|
{
|
||||||
if (weapon_meta->Match((CondAddBuff_e)cond,
|
if (weapon_meta->Match((CondAddBuff_e)cond,
|
||||||
buff->meta->_int_param3,
|
buff->meta->_int_buff_param3,
|
||||||
buff->meta->_int_param5)) {
|
buff->meta->_int_buff_param5)) {
|
||||||
switch (buff->meta->_int_param2) {
|
switch (buff->meta->_int_buff_param2) {
|
||||||
case kWeaponOptTakeoff:
|
case kWeaponOptTakeoff:
|
||||||
case kWeaponOptKeep:
|
case kWeaponOptKeep:
|
||||||
{
|
{
|
||||||
RemoveBuffs(buff->meta->_int_param1, buff->meta->_param4_int_list);
|
RemoveBuffs(buff->meta->_int_buff_param1, buff->meta->_buff_param4_int_list);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -74,17 +74,17 @@ void Trigger::TakeonWeapon(Weapon* old_weapon, Weapon* new_weapon)
|
|||||||
[this, cond, weapon_meta] (Buff* buff, bool& stop)
|
[this, cond, weapon_meta] (Buff* buff, bool& stop)
|
||||||
{
|
{
|
||||||
if (weapon_meta->Match((CondAddBuff_e)cond,
|
if (weapon_meta->Match((CondAddBuff_e)cond,
|
||||||
buff->meta->_int_param3,
|
buff->meta->_int_buff_param3,
|
||||||
buff->meta->_int_param5)) {
|
buff->meta->_int_buff_param5)) {
|
||||||
switch (buff->meta->_int_param2) {
|
switch (buff->meta->_int_buff_param2) {
|
||||||
case kWeaponOptTakeon:
|
case kWeaponOptTakeon:
|
||||||
{
|
{
|
||||||
AddBuffs(buff->meta->_int_param1, buff->meta->_param4_int_list);
|
AddBuffs(buff->meta->_int_buff_param1, buff->meta->_buff_param4_int_list);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case kWeaponOptKeep:
|
case kWeaponOptKeep:
|
||||||
{
|
{
|
||||||
TryAddBuffs(buff->meta->_int_param1, buff->meta->_param4_int_list);
|
TryAddBuffs(buff->meta->_int_buff_param1, buff->meta->_buff_param4_int_list);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -107,18 +107,18 @@ void Trigger::Shot(const mt::Equip* weapon_meta)
|
|||||||
[this, cond, weapon_meta] (Buff* buff, bool& stop)
|
[this, cond, weapon_meta] (Buff* buff, bool& stop)
|
||||||
{
|
{
|
||||||
if (weapon_meta->Match((CondAddBuff_e)cond,
|
if (weapon_meta->Match((CondAddBuff_e)cond,
|
||||||
buff->meta->_int_param2,
|
buff->meta->_int_buff_param2,
|
||||||
buff->meta->_int_param5)) {
|
buff->meta->_int_buff_param5)) {
|
||||||
AddBuffs(buff->meta->_int_param1, buff->meta->_param4_int_list);
|
AddBuffs(buff->meta->_int_buff_param1, buff->meta->_buff_param4_int_list);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
Buff* buff = owner_->GetBuffByEffectId(kBET_MachineGun);
|
Buff* buff = owner_->GetBuffByEffectId(kBET_MachineGun);
|
||||||
if (buff && buff->meta->_int_param2 == 1) {
|
if (buff && buff->meta->_int_buff_param2 == 1) {
|
||||||
auto buff_uniid = buff->buff_uniid;
|
auto buff_uniid = buff->buff_uniid;
|
||||||
owner_->room->xtimer.SetTimeoutEx
|
owner_->room->xtimer.SetTimeoutEx
|
||||||
(buff->meta->_int_param3 / FRAME_RATE_MS,
|
(buff->meta->_int_buff_param3 / FRAME_RATE_MS,
|
||||||
[this, buff_uniid] (int event, const a8::Args* args)
|
[this, buff_uniid] (int event, const a8::Args* args)
|
||||||
{
|
{
|
||||||
if (a8::TIMER_EXEC_EVENT == event) {
|
if (a8::TIMER_EXEC_EVENT == event) {
|
||||||
@ -151,8 +151,8 @@ void Trigger::Kill(Creature* target, int weapon_id)
|
|||||||
(kCondBuffKillTarget,
|
(kCondBuffKillTarget,
|
||||||
[this] (Buff* buff, bool& stop)
|
[this] (Buff* buff, bool& stop)
|
||||||
{
|
{
|
||||||
if (buff->meta->_int_param2 > 0 && (kill_num_ % buff->meta->_int_param2) == 0) {
|
if (buff->meta->_int_buff_param2 > 0 && (kill_num_ % buff->meta->_int_buff_param2) == 0) {
|
||||||
AddBuffs(buff->meta->_int_param1, buff->meta->_param4_int_list);
|
AddBuffs(buff->meta->_int_buff_param1, buff->meta->_buff_param4_int_list);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
DispatchEvent(kKillEvent, {kill_num_, target, weapon_id});
|
DispatchEvent(kKillEvent, {kill_num_, target, weapon_id});
|
||||||
@ -164,8 +164,8 @@ void Trigger::UseItemAction(int slot_id)
|
|||||||
(kCondBuffEatDrug,
|
(kCondBuffEatDrug,
|
||||||
[this, slot_id] (Buff* buff, bool& stop)
|
[this, slot_id] (Buff* buff, bool& stop)
|
||||||
{
|
{
|
||||||
if (buff->meta->_param2_int_set.find(slot_id) != buff->meta->_param2_int_set.end()) {
|
if (buff->meta->_buff_param2_int_set.find(slot_id) != buff->meta->_buff_param2_int_set.end()) {
|
||||||
AddBuffs(buff->meta->_int_param1, buff->meta->_param4_int_list);
|
AddBuffs(buff->meta->_int_buff_param1, buff->meta->_buff_param4_int_list);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -176,8 +176,8 @@ void Trigger::UseSkill(Skill* skill)
|
|||||||
(kCondBuffUseSkill,
|
(kCondBuffUseSkill,
|
||||||
[this, skill] (Buff* buff, bool& stop)
|
[this, skill] (Buff* buff, bool& stop)
|
||||||
{
|
{
|
||||||
if (buff->meta->_int_param2 == skill->meta->skill_id()) {
|
if (buff->meta->_int_buff_param2 == skill->meta->skill_id()) {
|
||||||
AddBuffs(buff->meta->_int_param1, buff->meta->_param4_int_list);
|
AddBuffs(buff->meta->_int_buff_param1, buff->meta->_buff_param4_int_list);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
DispatchEvent(kUseSkillEvent, {skill});
|
DispatchEvent(kUseSkillEvent, {skill});
|
||||||
@ -190,27 +190,27 @@ void Trigger::HpChg()
|
|||||||
[this] (Buff* buff, bool& stop)
|
[this] (Buff* buff, bool& stop)
|
||||||
{
|
{
|
||||||
bool match = false;
|
bool match = false;
|
||||||
switch (buff->meta->_int_param2) {
|
switch (buff->meta->_int_buff_param2) {
|
||||||
case kHpOptLeAbs:
|
case kHpOptLeAbs:
|
||||||
{
|
{
|
||||||
match = owner_->GetHP() < buff->meta->_int_param3;
|
match = owner_->GetHP() < buff->meta->_int_buff_param3;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case kHpOptLeRate:
|
case kHpOptLeRate:
|
||||||
{
|
{
|
||||||
//match = (owner_->GetHP() / owner_->GetMaxHP() * 100) < buff->meta->_int_param3;
|
//match = (owner_->GetHP() / owner_->GetMaxHP() * 100) < buff->meta->_int_param3;
|
||||||
match = owner_->GetHP() / owner_->GetMaxHP() < buff->meta->_param3;
|
match = owner_->GetHP() / owner_->GetMaxHP() < buff->meta->_buff_param3;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case kHpOptGeAbs:
|
case kHpOptGeAbs:
|
||||||
{
|
{
|
||||||
match = owner_->GetHP() > buff->meta->_int_param3;
|
match = owner_->GetHP() > buff->meta->_int_buff_param3;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case kHpOptGeRate:
|
case kHpOptGeRate:
|
||||||
{
|
{
|
||||||
//match = (owner_->GetHP() / owner_->GetMaxHP() * 100) > buff->meta->_int_param3;
|
//match = (owner_->GetHP() / owner_->GetMaxHP() * 100) > buff->meta->_int_param3;
|
||||||
match = owner_->GetHP() / owner_->GetMaxHP() > buff->meta->_param3;
|
match = owner_->GetHP() / owner_->GetMaxHP() > buff->meta->_buff_param3;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -219,9 +219,9 @@ void Trigger::HpChg()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (match) {
|
if (match) {
|
||||||
TryAddBuffs(buff->meta->_int_param1, buff->meta->_param4_int_list);
|
TryAddBuffs(buff->meta->_int_buff_param1, buff->meta->_buff_param4_int_list);
|
||||||
} else {
|
} else {
|
||||||
RemoveBuffs(buff->meta->_int_param1, buff->meta->_param4_int_list);
|
RemoveBuffs(buff->meta->_int_buff_param1, buff->meta->_buff_param4_int_list);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -304,7 +304,7 @@ void Trigger::TriggeCondBuffAll(int cond)
|
|||||||
(cond,
|
(cond,
|
||||||
[this, cond] (Buff* buff, bool& stop)
|
[this, cond] (Buff* buff, bool& stop)
|
||||||
{
|
{
|
||||||
AddBuffs(cond, buff->meta->_param4_int_list);
|
AddBuffs(cond, buff->meta->_buff_param4_int_list);
|
||||||
});
|
});
|
||||||
owner_->context_dir = old_context_dir;
|
owner_->context_dir = old_context_dir;
|
||||||
owner_->context_pos = old_context_pos;
|
owner_->context_pos = old_context_pos;
|
||||||
@ -318,16 +318,16 @@ void Trigger::ActiveBuff(const mt::Buff* buff_meta)
|
|||||||
(cond,
|
(cond,
|
||||||
[this, cond, buff_meta] (Buff* buff, bool& stop)
|
[this, cond, buff_meta] (Buff* buff, bool& stop)
|
||||||
{
|
{
|
||||||
if (buff_meta->Match((CondAddBuff_e)cond, buff->meta->_int_param3)) {
|
if (buff_meta->Match((CondAddBuff_e)cond, buff->meta->_int_buff_param3)) {
|
||||||
switch (buff->meta->_int_param2) {
|
switch (buff->meta->_int_buff_param2) {
|
||||||
case kBuffOptActive:
|
case kBuffOptActive:
|
||||||
{
|
{
|
||||||
AddBuffs(buff->meta->_int_param1, buff->meta->_param4_int_list);
|
AddBuffs(buff->meta->_int_buff_param1, buff->meta->_buff_param4_int_list);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case kBuffOptKeep:
|
case kBuffOptKeep:
|
||||||
{
|
{
|
||||||
TryAddBuffs(buff->meta->_int_param1, buff->meta->_param4_int_list);
|
TryAddBuffs(buff->meta->_int_buff_param1, buff->meta->_buff_param4_int_list);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -347,12 +347,12 @@ void Trigger::DeactiveBuff(const mt::Buff* buff_meta)
|
|||||||
(cond,
|
(cond,
|
||||||
[this, cond, buff_meta] (Buff* buff, bool& stop)
|
[this, cond, buff_meta] (Buff* buff, bool& stop)
|
||||||
{
|
{
|
||||||
if (buff_meta->Match((CondAddBuff_e)cond, buff->meta->_int_param3)) {
|
if (buff_meta->Match((CondAddBuff_e)cond, buff->meta->_int_buff_param3)) {
|
||||||
switch (buff->meta->_int_param2) {
|
switch (buff->meta->_int_buff_param2) {
|
||||||
case kBuffOptDeactive:
|
case kBuffOptDeactive:
|
||||||
case kBuffOptKeep:
|
case kBuffOptKeep:
|
||||||
{
|
{
|
||||||
RemoveBuffs(buff->meta->_int_param1, buff->meta->_param4_int_list);
|
RemoveBuffs(buff->meta->_int_buff_param1, buff->meta->_buff_param4_int_list);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user