This commit is contained in:
aozhiwei 2020-05-27 20:57:18 +08:00
parent 0a15ec3288
commit 1ac96fa95f
2 changed files with 37 additions and 29 deletions

View File

@ -1180,6 +1180,7 @@ void Player::_CMRevive(f8::MsgHdr& hdr, const cs::CMRevive& msg)
} }
} }
#endif #endif
InternalAdOk();
} }
} }
@ -1239,13 +1240,34 @@ void Player::_CMAdEnd(f8::MsgHdr& hdr, const cs::CMAdEnd& msg)
if (GetBuffByEffectId(kBET_LordMode)) { if (GetBuffByEffectId(kBET_LordMode)) {
return; return;
} }
InternalAdOk();
}
void Player::InternalAdCancel()
{
if (GetBuffByEffectId(kBET_AdPlaying)) { if (GetBuffByEffectId(kBET_AdPlaying)) {
RemoveBuffByEffectId(kBET_AdPlaying);
if (ad_timer_) {
room->xtimer.DeleteTimer(ad_timer_);
ad_timer_ = nullptr;
}
}
if (GetBuffByEffectId(kBET_LordMode)) {
return;
}
}
void Player::InternalAdOk()
{
if (a8::HasBitFlag(status, HS_AlreadyLordMode)) {
return;
}
MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(ADPLAY_BUFFID); MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(ADPLAY_BUFFID);
if (buff_meta) { if (buff_meta) {
MetaData::Buff* lord_buff_meta = nullptr; MetaData::Buff* lord_buff_meta = nullptr;
if (msg.param() == 1) { if (rand() % 2 < 1) {
lord_buff_meta = MetaMgr::Instance()->GetBuff(buff_meta->param1); lord_buff_meta = MetaMgr::Instance()->GetBuff(buff_meta->param1);
} else if (msg.param() == 2) { } else {
lord_buff_meta = MetaMgr::Instance()->GetBuff(buff_meta->param2); lord_buff_meta = MetaMgr::Instance()->GetBuff(buff_meta->param2);
} }
if (lord_buff_meta) { if (lord_buff_meta) {
@ -1268,18 +1290,3 @@ void Player::_CMAdEnd(f8::MsgHdr& hdr, const cs::CMAdEnd& msg)
ad_timer_ = nullptr; ad_timer_ = nullptr;
} }
} }
}
void Player::InternalAdCancel()
{
if (GetBuffByEffectId(kBET_AdPlaying)) {
RemoveBuffByEffectId(kBET_AdPlaying);
if (ad_timer_) {
room->xtimer.DeleteTimer(ad_timer_);
ad_timer_ = nullptr;
}
}
if (GetBuffByEffectId(kBET_LordMode)) {
return;
}
}

View File

@ -98,4 +98,5 @@ class Player : public Human
private: private:
void InternalAdCancel(); void InternalAdCancel();
void InternalAdOk();
}; };