This commit is contained in:
aozhiwei 2023-05-19 11:17:31 +08:00
parent 716bc32f24
commit 0cf71b1d25
3 changed files with 24 additions and 3 deletions

View File

@ -11,12 +11,13 @@ class Compose
~Compose();
void Init();
void IncNum();
int GetNum() { return num_; }
private:
void Clear();
void TakeOnWeapon(Weapon* weapon);
void IncNum();
private:
Creature* owner_ = nullptr;

View File

@ -353,6 +353,7 @@ class Creature : public MoveableEntity
bool CanShot(bool try_reload);
void AdjustPos();
void OnLand();
std::shared_ptr<Compose> GetCompose() { return compose_; }
protected:
virtual void OnBuffRemove(Buff& buff);

View File

@ -43,6 +43,7 @@
#include "stats.h"
#include "hero.h"
#include "guide.h"
#include "compose.h"
#include "buff/sprint.h"
@ -2636,9 +2637,27 @@ void Human::ProcLootWeaponNew(AddItemDTO& dto)
if (GetCurrWeapon()->weapon_idx == GUN_SLOT1 ||
GetCurrWeapon()->weapon_idx == GUN_SLOT2) {
if (GetCurrWeapon()->weapon_id == dto.item_meta->id()) {
if (GetCompose()->GetNum() >= 9) {
return;
}
GetCompose()->IncNum();
MarkSyncActivePlayer(__FILE__, __LINE__, __func__);
SyncAroundPlayers(__FILE__, __LINE__, __func__);
dto.handled = true;
} else {
int old_weapon_idx = GetCurrWeapon()->weapon_idx;
DropWeapon(GetCurrWeapon()->weapon_idx, 1);
Weapon* weapon = &weapons[old_weapon_idx];
weapon->weapon_id = dto.item_id;
weapon->meta = dto.item_meta;
weapon->ammo = 0;
weapon->Recalc();
weapon->ammo = weapon->GetClipVolume(this);
AutoLoadingBullet();
SetCurrWeapon(weapon);
MarkSyncActivePlayer(__FILE__, __LINE__, __func__);
SyncAroundPlayers(__FILE__, __LINE__, __func__);
dto.handled = true;
}
}
}