This commit is contained in:
aozhiwei 2020-07-30 22:06:02 +08:00
parent e8ebf682d3
commit 8b34ab2de8
3 changed files with 62 additions and 8 deletions

View File

@ -2376,14 +2376,16 @@ void Human::GenZbModeBattleReportData(a8::MutableXObject* params)
void Human::DeadDrop()
{
for (auto& weapon : weapons) {
if (weapon.weapon_id != 0 && weapon.weapon_id != default_weapon.weapon_id) {
a8::Vec2 drop_pos = GetPos();
room->DropItem(drop_pos, weapon.weapon_id, 1, weapon.weapon_lv);
if (GetRace() == kHumanRace && !HasBuffEffect(kBET_Terminator)) {
for (auto& weapon : weapons) {
if (weapon.weapon_id != 0 && weapon.weapon_id != default_weapon.weapon_id) {
a8::Vec2 drop_pos = GetPos();
room->DropItem(drop_pos, weapon.weapon_id, 1, weapon.weapon_lv);
}
}
{
curr_weapon = &weapons[0];
}
}
{
curr_weapon = &weapons[0];
}
{
Skin* old_skin = GetSkinByIdx(kSkinSlot_HAT);
@ -3031,6 +3033,7 @@ void Human::ProcBuffEffect(Human* caster, Buff* buff)
meta != MetaMgr::Instance()->terminator_meta) {
WinExp(this, MetaMgr::Instance()->terminator_meta->i->exp() + 1);
room->NotifySysPiao("终结者出现", a8::MkRgb(255, 0, 0), 3);
OnChgToTerminator();
}
}
break;
@ -3799,3 +3802,51 @@ void Human::OnMetaChange()
AddPassiveSkill(passive_skill_meta);
}
}
void Human::OnChgToTerminator()
{
Buff* buff = GetBuffByEffectId(kBET_Terminator);
if (buff) {
std::vector<std::string> strings;
a8::Split(buff->meta->i->buff_param1(), strings, ':');
if (strings.size() >= 3) {
for (size_t i = 0; i < strings.size(); ++i) {
int weapon_id = a8::XValue(strings[i]);
MetaData::Equip* weapon_meta = MetaMgr::Instance()->GetEquip(weapon_id);
if (weapon_meta) {
Weapon* weapon = nullptr;
switch (i) {
case 0:
{
weapon = &weapons[0];
}
break;
case 1:
{
weapon = &weapons[GUN_SLOT1];
}
break;
case 2:
{
weapon = &weapons[GUN_SLOT2];
}
break;
default:
{
}
break;
}
weapon->weapon_idx = 0;
weapon->weapon_id = weapon_meta->i->id();
weapon->weapon_lv = 1;
weapon->ammo = 1;
weapon->meta = weapon_meta;
weapon->Recalc();
if (i == 0) {
default_weapon = *weapon;
}
}
}
}
}
}

View File

@ -327,6 +327,7 @@ private:
void ClearPassiveSkillBuff(MetaData::Skill* skill_meta);
void AddPassiveSkillBuff(MetaData::Skill* skill_meta);
void OnMetaChange();
void OnChgToTerminator();
protected:
int level_ = 0;

View File

@ -1001,7 +1001,9 @@ void Player::_CMMove(f8::MsgHdr& hdr, const cs::CMMove& msg)
void Player::UpdateDropWeapon()
{
if (drop_weapon_idx >= 0 && drop_weapon_idx < weapons.size()) {
if (drop_weapon_idx >= 0 &&
drop_weapon_idx < weapons.size() &&
!HasBuffEffect(kBET_Terminator)) {
bool drop_ok = false;
Weapon* weapon = &weapons[drop_weapon_idx];
int weapon_id = weapon->weapon_id;