1
This commit is contained in:
parent
b4b27d56e5
commit
da8a0b1937
@ -299,20 +299,7 @@ void Buff::ProcRemoveDriver()
|
|||||||
void Buff::ProcPassenger()
|
void Buff::ProcPassenger()
|
||||||
{
|
{
|
||||||
hold_curr_weapon_idx_ = caster_.Get()->GetCurrWeapon()->weapon_idx;
|
hold_curr_weapon_idx_ = caster_.Get()->GetCurrWeapon()->weapon_idx;
|
||||||
if (caster_.Get()->IsHuman()) {
|
CalcPassengerShotOffset();
|
||||||
Human* hum = (Human*)caster_.Get();
|
|
||||||
if (hum->GetCar() && hum->GetCar()->GetCurrWeapon()) {
|
|
||||||
hold_weapons_.push_back(hum->weapons[hum->GetCar()->GetCurrWeapon()->weapon_idx]);
|
|
||||||
hum->weapons[hum->GetCar()->GetCurrWeapon()->weapon_idx] = *hum->GetCar()->GetCurrWeapon();
|
|
||||||
hum->SetCurrWeapon(&hum->weapons[hum->GetCar()->GetCurrWeapon()->weapon_idx]);
|
|
||||||
if (hum->GetCar()->meta &&
|
|
||||||
hum->GetSeat() < hum->GetCar()->meta->shoot_offsets.size() &&
|
|
||||||
std::get<0>(hum->GetCar()->meta->shoot_offsets[hum->GetSeat()])
|
|
||||||
) {
|
|
||||||
hum->shoot_offset = std::get<1>(hum->GetCar()->meta->shoot_offsets[hum->GetSeat()]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
caster_.Get()->need_sync_active_player = true;
|
caster_.Get()->need_sync_active_player = true;
|
||||||
caster_.Get()->SyncAroundPlayers(__FILE__, __LINE__, __func__);
|
caster_.Get()->SyncAroundPlayers(__FILE__, __LINE__, __func__);
|
||||||
}
|
}
|
||||||
@ -653,3 +640,21 @@ void Buff::ProcAISeting()
|
|||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Buff::CalcPassengerShotOffset()
|
||||||
|
{
|
||||||
|
if (meta->i->buff_effect() == kBET_Passenger && caster_.Get()->IsHuman()) {
|
||||||
|
Human* hum = (Human*)caster_.Get();
|
||||||
|
if (hum->GetCar() && hum->GetCar()->GetCurrWeapon()) {
|
||||||
|
hold_weapons_.push_back(hum->weapons[hum->GetCar()->GetCurrWeapon()->weapon_idx]);
|
||||||
|
hum->weapons[hum->GetCar()->GetCurrWeapon()->weapon_idx] = *hum->GetCar()->GetCurrWeapon();
|
||||||
|
hum->SetCurrWeapon(&hum->weapons[hum->GetCar()->GetCurrWeapon()->weapon_idx]);
|
||||||
|
if (hum->GetCar()->meta &&
|
||||||
|
hum->GetSeat() < hum->GetCar()->meta->shoot_offsets.size() &&
|
||||||
|
std::get<0>(hum->GetCar()->meta->shoot_offsets[hum->GetSeat()])
|
||||||
|
) {
|
||||||
|
hum->shoot_offset = std::get<1>(hum->GetCar()->meta->shoot_offsets[hum->GetSeat()]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -74,6 +74,8 @@ class Buff
|
|||||||
void ProcDisperse();
|
void ProcDisperse();
|
||||||
void ProcAISeting();
|
void ProcAISeting();
|
||||||
|
|
||||||
|
void CalcPassengerShotOffset();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void InternalTimerAddBuff();
|
void InternalTimerAddBuff();
|
||||||
void RecoverHoldWeapons();
|
void RecoverHoldWeapons();
|
||||||
|
@ -213,6 +213,10 @@ void Car::SwitchSeat(Human* passenger, int seat)
|
|||||||
driver_ = nullptr;
|
driver_ = nullptr;
|
||||||
passenger->RemoveBuffByEffectId(kBET_Driver);
|
passenger->RemoveBuffByEffectId(kBET_Driver);
|
||||||
passenger->MustBeAddBuff(passenger, PASSENGER_BUFFID);
|
passenger->MustBeAddBuff(passenger, PASSENGER_BUFFID);
|
||||||
|
} else {
|
||||||
|
Buff* buff = passenger->GetBuffByEffectId(kBET_Passenger);
|
||||||
|
buff->CalcPassengerShotOffset();
|
||||||
|
passenger->need_sync_active_player = true;
|
||||||
}
|
}
|
||||||
room->frame_event.AddCarChg(passenger->GetWeakPtrRef());
|
room->frame_event.AddCarChg(passenger->GetWeakPtrRef());
|
||||||
SyncAroundPlayers(__FILE__, __LINE__, __func__);
|
SyncAroundPlayers(__FILE__, __LINE__, __func__);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user