diff --git a/server/gameserver/buff.cc b/server/gameserver/buff.cc index b6c8861..041f67f 100644 --- a/server/gameserver/buff.cc +++ b/server/gameserver/buff.cc @@ -808,7 +808,8 @@ void Buff::ProcInWater() return; } Human* hum = buff->owner->AsHuman(); - if (hum->GetOxygen() < MetaMgr::Instance()->dive_oxygen_total) { + if (!hum->HasBuffEffect(kBET_Dive) && + hum->GetOxygen() < MetaMgr::Instance()->dive_oxygen_total) { hum->AddOxygen(MetaMgr::Instance()->inwater_oxygen_recover); hum->room->frame_event.AddPropChg(hum->GetWeakPtrRef(), kPropDive, diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 788e346..6915bc0 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -3835,6 +3835,10 @@ void Human::DoDive() if (HasBuffEffect(kBET_Dive)) { return; } + if (HasBuffEffect(kBET_Driver) || + HasBuffEffect(kBET_Passenger)) { + return; + } if (HasBuffEffect(kBET_Camouflage) ) { RemoveBuffByEffectId(kBET_Camouflage); }