diff --git a/server/gameserver/trigger.cc b/server/gameserver/trigger.cc index b291117..292149b 100644 --- a/server/gameserver/trigger.cc +++ b/server/gameserver/trigger.cc @@ -141,25 +141,27 @@ void Trigger::HpChg() [this] (Buff* buff, bool& stop) { bool match = false; - switch (buff->meta->int_param3) { + switch (buff->meta->int_param2) { case kHpOptLeAbs: { - match = owner_->GetHP() < buff->meta->int_param2; + match = owner_->GetHP() < buff->meta->int_param3; } break; case kHpOptLeRate: { - match = (owner_->GetHP() / owner_->GetMaxHP() * 100) < buff->meta->int_param2; + //match = (owner_->GetHP() / owner_->GetMaxHP() * 100) < buff->meta->int_param3; + match = owner_->GetHP() / owner_->GetMaxHP() < buff->meta->param3; } break; case kHpOptGeAbs: { - match = owner_->GetHP() > buff->meta->int_param2; + match = owner_->GetHP() > buff->meta->int_param3; } break; case kHpOptGeRate: { - match = (owner_->GetHP() / owner_->GetMaxHP() * 100) > buff->meta->int_param2; + //match = (owner_->GetHP() / owner_->GetMaxHP() * 100) > buff->meta->int_param3; + match = owner_->GetHP() / owner_->GetMaxHP() > buff->meta->param3; } break; default: @@ -169,6 +171,8 @@ void Trigger::HpChg() } if (match) { TryAddBuffs(buff->meta->int_param1, buff->meta->param4_int_list); + } else { + RemoveBuffs(buff->meta->int_param1, buff->meta->param4_int_list); } }); }