This commit is contained in:
aozhiwei 2021-07-06 15:45:12 +08:00
parent 5431630556
commit cf5be3c47f
3 changed files with 27 additions and 14 deletions

View File

@ -1012,10 +1012,15 @@ void Creature::ProcBuffEffect(Creature* caster, Buff* buff)
break; break;
case kBET_AddInventory: case kBET_AddInventory:
{ {
if (IsValidSlotId(buff->meta->int_param1)) { for (int slot : buff->meta->param2_int_list) {
buff_inventory_[buff->meta->int_param1].num += buff->meta->int_param2; if (IsValidSlotId(slot)) {
need_sync_active_player = true; buff_inventory_[slot].num += buff->meta->int_param1;
}
} }
if (IsHuman()) {
AsHuman()->RecalcVolume();
}
need_sync_active_player = true;
} }
break; break;
default: default:

View File

@ -1321,9 +1321,11 @@ void Human::FillMFGasData(cs::MFGasData* gas_data)
void Human::RecalcVolume() void Human::RecalcVolume()
{ {
MetaData::Equip* backpack_meta = MetaMgr::Instance()->GetEquip(backpack); MetaData::Equip* backpack_meta = MetaMgr::Instance()->GetEquip(backpack);
if (backpack_meta) { for (size_t i = 0; i < IS_END; ++i) {
for (size_t i = 0; i < backpack_meta->volume.size(); ++i) { volume_[i] = meta->volume[i];
volume_[i] = meta->volume[i] + backpack_meta->volume[i]; volume_[i] += buff_inventory_[i].num;
if (backpack_meta) {
volume_[i] += backpack_meta->volume[i];
} }
} }
} }
@ -3160,12 +3162,15 @@ void Human::OnBuffRemove(Buff& buff)
break; break;
case kBET_AddInventory: case kBET_AddInventory:
{ {
if (IsValidSlotId(buff.meta->int_param1)) { for (int slot : buff.meta->param2_int_list) {
buff_inventory_[buff.meta->int_param1].num -= buff.meta->int_param2; if (IsValidSlotId(slot)) {
buff_inventory_[buff.meta->int_param1].num = buff_inventory_[slot].num -= buff.meta->int_param1;
std::max(0, buff_inventory_[buff.meta->int_param1].num); buff_inventory_[slot].num =
need_sync_active_player = true; std::max(0, buff_inventory_[slot].num);
}
} }
RecalcVolume();
need_sync_active_player = true;
} }
break; break;
default: default:

View File

@ -753,7 +753,7 @@ namespace MetaData
for (int buff_id : buff_list) { for (int buff_id : 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 1 #if 0
return; return;
#else #else
abort(); abort();
@ -809,14 +809,17 @@ namespace MetaData
} }
{ {
std::vector<std::string> strings; std::vector<std::string> strings;
a8::Split(i->buff_param2(), strings, ':'); a8::Split(i->buff_param2(), strings, '|');
if (i->buff_param2().find(":") != std::string::npos) {
abort();
}
for (auto& str : strings) { for (auto& str : strings) {
param2_int_list.push_back(a8::XValue(str).GetInt()); param2_int_list.push_back(a8::XValue(str).GetInt());
} }
} }
{ {
std::vector<std::string> strings; std::vector<std::string> strings;
a8::Split(i->buff_param3(), strings, ':'); a8::Split(i->buff_param3(), strings, '|');
for (auto& str : strings) { for (auto& str : strings) {
param3_int_list.push_back(a8::XValue(str).GetInt()); param3_int_list.push_back(a8::XValue(str).GetInt());
} }