投掷物,持有上限+1

This commit is contained in:
aozhiwei 2021-06-29 11:58:03 +00:00
parent d1f5070371
commit 5954ead5b5
5 changed files with 22 additions and 2 deletions

View File

@ -57,6 +57,7 @@ enum BuffEffectType_e
kBET_ShotCharge = 39, //射击蓄力 kBET_ShotCharge = 39, //射击蓄力
kBET_SelectTargetWithSelfPos = 40, //已自己坐标为中心范围内选取目标,并且批量添加buff kBET_SelectTargetWithSelfPos = 40, //已自己坐标为中心范围内选取目标,并且批量添加buff
kBET_CondAddBuff = 41, //条件添加buff kBET_CondAddBuff = 41, //条件添加buff
kBET_AddInventory = 42, //扩充库存
kBET_FollowMaster = 49, //跟随主人 kBET_FollowMaster = 49, //跟随主人
kBET_ThroughWall = 50, //穿墙 kBET_ThroughWall = 50, //穿墙

View File

@ -991,6 +991,13 @@ void Creature::ProcBuffEffect(Creature* caster, Buff* buff)
list_add_tail(&buff->cond_entry, &cond_buffs_[buff->meta->int_param1]); list_add_tail(&buff->cond_entry, &cond_buffs_[buff->meta->int_param1]);
} }
break; break;
case kBET_AddInventory:
{
if (IsValidSlotId(buff->meta->int_param1)) {
buff_inventory_[buff->meta->int_param1].num += buff->meta->int_param2;
}
}
break;
default: default:
{ {
} }

View File

@ -231,6 +231,7 @@ protected:
long long cell_flags_ = 0; long long cell_flags_ = 0;
CircleCollider* self_collider_ = nullptr; CircleCollider* self_collider_ = nullptr;
Entity* last_collision_door_ = nullptr; Entity* last_collision_door_ = nullptr;
std::array<Inventory, IS_END> buff_inventory_ = {};
private: private:
CreatureWeakPtr weak_ptr_; CreatureWeakPtr weak_ptr_;

View File

@ -3144,7 +3144,18 @@ void Human::OnBuffRemove(Buff& buff)
buff.ProcRemovePassenger(); buff.ProcRemovePassenger();
} }
break; break;
case kBET_AddInventory:
{
if (IsValidSlotId(buff.meta->int_param1)) {
buff_inventory_[buff.meta->int_param1].num -= buff.meta->int_param2;
buff_inventory_[buff.meta->int_param1].num =
std::max(0, buff_inventory_[buff.meta->int_param1].num);
}
}
break;
default: default:
{
}
break; break;
} }
if (!buff.meta->i->only_server()) { if (!buff.meta->i->only_server()) {

View File

@ -197,8 +197,8 @@ void RoomObstacle::SpecExplosion()
} }
int total_explosion_times = meta->i->explosion_times(); int total_explosion_times = meta->i->explosion_times();
if (context_ability && context_ability->GetAttrAbs(kHAT_WeaponExplosionTime) > 0.001f) { if (context_ability && context_ability->GetAttrAbs(kHAT_WeaponExplosionTime) > 0.001f) {
total_explosion_times + = context_ability->GetAttrAbs(kHAT_WeaponExplosionTime) / total_explosion_times += context_ability->GetAttrAbs(kHAT_WeaponExplosionTime) /
obstacle->meta->i->explosion_interval(); meta->i->explosion_interval();
} }
if (explosion_times_ >= total_explosion_times) { if (explosion_times_ >= total_explosion_times) {
room->xtimer.DeleteTimer(room->xtimer.GetRunningTimer()); room->xtimer.DeleteTimer(room->xtimer.GetRunningTimer());