添加多把武器支持
This commit is contained in:
parent
8f7ce4afee
commit
5587ef56b9
@ -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());
|
||||
|
@ -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;
|
||||
|
@ -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];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user