添加多把武器支持
This commit is contained in:
parent
8f7ce4afee
commit
5587ef56b9
@ -135,7 +135,12 @@ void Human::Initialize()
|
|||||||
RecalcSelfCollider();
|
RecalcSelfCollider();
|
||||||
volume_ = meta->volume;
|
volume_ = meta->volume;
|
||||||
observers_.insert(this);
|
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()
|
float Human::GetSpeed()
|
||||||
@ -3943,7 +3948,12 @@ void Human::OnMetaChange()
|
|||||||
curr_weapon = &weapons[0];
|
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);
|
room->frame_event.AddHpChg(this);
|
||||||
RecalcBaseAttr();
|
RecalcBaseAttr();
|
||||||
skill_meta_ = MetaMgr::Instance()->GetSkill(meta->i->active_skill());
|
skill_meta_ = MetaMgr::Instance()->GetSkill(meta->i->active_skill());
|
||||||
|
@ -128,7 +128,7 @@ class Human : public MoveableEntity
|
|||||||
|
|
||||||
long long send_msg_times = 0;
|
long long send_msg_times = 0;
|
||||||
|
|
||||||
Weapon spec_weapon;
|
std::list<Weapon> spec_weapons;
|
||||||
Weapon grow_weapon;
|
Weapon grow_weapon;
|
||||||
std::map<int, int> weapon_configs;
|
std::map<int, int> weapon_configs;
|
||||||
std::map<int, int> skin_configs;
|
std::map<int, int> skin_configs;
|
||||||
|
@ -873,22 +873,24 @@ void Player::ProcPrepareItems(const ::google::protobuf::RepeatedField< ::google:
|
|||||||
curr_weapon->ammo = add_num;
|
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);
|
MetaData::Equip* item_meta = MetaMgr::Instance()->GetEquip(spec_weapon.weapon_id);
|
||||||
if (item_meta &&
|
if (item_meta &&
|
||||||
item_meta->i->equip_type() == EQUIP_TYPE_WEAPON) {
|
item_meta->i->equip_type() == EQUIP_TYPE_WEAPON) {
|
||||||
if (item_meta->i->equip_subtype() != 1) {
|
if (item_meta->i->equip_subtype() != 1) {
|
||||||
Weapon* weapon = &weapons[GUN_SLOT1];
|
int weapon_idx = GUN_SLOT1;
|
||||||
weapon->weapon_idx = GUN_SLOT1;
|
if (weapons[weapon_idx].weapon_id != 0) {
|
||||||
if (curr_weapon != &weapons[GUN_SLOT2]) {
|
weapon_idx = GUN_SLOT2;
|
||||||
curr_weapon = &weapons[GUN_SLOT1];
|
|
||||||
}
|
}
|
||||||
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_id = spec_weapon.weapon_id;
|
||||||
weapon->weapon_lv = spec_weapon.weapon_lv;
|
weapon->weapon_lv = spec_weapon.weapon_lv;
|
||||||
weapon->ammo = spec_weapon.ammo;
|
weapon->ammo = spec_weapon.ammo;
|
||||||
weapon->meta = item_meta;
|
weapon->meta = item_meta;
|
||||||
weapon->Recalc();
|
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());
|
MetaData::Equip* equip_meta = MetaMgr::Instance()->GetEquip(weapon.weapon_id());
|
||||||
if (equip_meta) {
|
if (equip_meta) {
|
||||||
hum->weapon_configs[weapon.weapon_id()] = weapon.weapon_lv();
|
hum->weapon_configs[weapon.weapon_id()] = weapon.weapon_lv();
|
||||||
hum->spec_weapon.weapon_id = weapon.weapon_id();
|
Weapon& spec_weapon = a8::FastAppend(hum->spec_weapons);
|
||||||
hum->spec_weapon.weapon_lv = weapon.weapon_lv();
|
spec_weapon.weapon_id = weapon.weapon_id();
|
||||||
hum->spec_weapon.ammo = weapon.ammo();
|
spec_weapon.weapon_lv = weapon.weapon_lv();
|
||||||
hum->spec_weapon.meta = equip_meta;
|
spec_weapon.ammo = weapon.ammo();
|
||||||
hum->spec_weapon.Recalc();
|
spec_weapon.meta = equip_meta;
|
||||||
|
spec_weapon.Recalc();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user