1
This commit is contained in:
parent
e8ebf682d3
commit
8b34ab2de8
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user