添加多把武器支持

This commit is contained in:
aozhiwei 2020-08-14 14:15:37 +08:00
parent 8f7ce4afee
commit 5587ef56b9
4 changed files with 27 additions and 14 deletions

View File

@ -135,7 +135,12 @@ void Human::Initialize()
RecalcSelfCollider();
volume_ = meta->volume;
observers_.insert(this);
ability.hp = meta->i->health() + (spec_weapon.meta ? spec_weapon.GetAttrValue(kHAT_MaxHp) : 0);
ability.hp = meta->i->health();
for (auto& weapon : spec_weapons) {
if (weapon.meta) {
ability.hp += (weapon.meta ? weapon.GetAttrValue(kHAT_MaxHp) : 0);
}
}
}
float Human::GetSpeed()
@ -3943,7 +3948,12 @@ void Human::OnMetaChange()
curr_weapon = &weapons[0];
}
}
ability.hp = meta->i->health() + (spec_weapon.meta ? spec_weapon.GetAttrValue(kHAT_MaxHp) : 0);
ability.hp = meta->i->health();
for (auto& weapon : spec_weapons) {
if (weapon.meta) {
ability.hp += (weapon.meta ? weapon.GetAttrValue(kHAT_MaxHp) : 0);
}
}
room->frame_event.AddHpChg(this);
RecalcBaseAttr();
skill_meta_ = MetaMgr::Instance()->GetSkill(meta->i->active_skill());

View File

@ -128,7 +128,7 @@ class Human : public MoveableEntity
long long send_msg_times = 0;
Weapon spec_weapon;
std::list<Weapon> spec_weapons;
Weapon grow_weapon;
std::map<int, int> weapon_configs;
std::map<int, int> skin_configs;

View File

@ -873,22 +873,24 @@ void Player::ProcPrepareItems(const ::google::protobuf::RepeatedField< ::google:
curr_weapon->ammo = add_num;
}
}
if (spec_weapon.weapon_id != 0) {
for (auto& spec_weapon : spec_weapons) {
MetaData::Equip* item_meta = MetaMgr::Instance()->GetEquip(spec_weapon.weapon_id);
if (item_meta &&
item_meta->i->equip_type() == EQUIP_TYPE_WEAPON) {
if (item_meta->i->equip_subtype() != 1) {
Weapon* weapon = &weapons[GUN_SLOT1];
weapon->weapon_idx = GUN_SLOT1;
if (curr_weapon != &weapons[GUN_SLOT2]) {
curr_weapon = &weapons[GUN_SLOT1];
int weapon_idx = GUN_SLOT1;
if (weapons[weapon_idx].weapon_id != 0) {
weapon_idx = GUN_SLOT2;
}
if (weapon) {
if (weapons[weapon_idx].weapon_id == 0) {
Weapon* weapon = &weapons[weapon_idx];
weapon->weapon_idx = weapon_idx;
weapon->weapon_id = spec_weapon.weapon_id;
weapon->weapon_lv = spec_weapon.weapon_lv;
weapon->ammo = spec_weapon.ammo;
weapon->meta = item_meta;
weapon->Recalc();
curr_weapon = &weapons[GUN_SLOT1];
}
}
}

View File

@ -82,11 +82,12 @@ Player* PlayerMgr::CreatePlayerByCMJoin(Player* hum,
MetaData::Equip* equip_meta = MetaMgr::Instance()->GetEquip(weapon.weapon_id());
if (equip_meta) {
hum->weapon_configs[weapon.weapon_id()] = weapon.weapon_lv();
hum->spec_weapon.weapon_id = weapon.weapon_id();
hum->spec_weapon.weapon_lv = weapon.weapon_lv();
hum->spec_weapon.ammo = weapon.ammo();
hum->spec_weapon.meta = equip_meta;
hum->spec_weapon.Recalc();
Weapon& spec_weapon = a8::FastAppend(hum->spec_weapons);
spec_weapon.weapon_id = weapon.weapon_id();
spec_weapon.weapon_lv = weapon.weapon_lv();
spec_weapon.ammo = weapon.ammo();
spec_weapon.meta = equip_meta;
spec_weapon.Recalc();
}
}
}