Core/Unit: fix nasty, ugly, silly, idiotic SPIN bug with advFlying
- who knew that looking at DB2 files you could still miss important info - db2 holds degrees but they need converted to radians - restore cvars to their default values
This commit is contained in:
@@ -9350,16 +9350,18 @@ void Unit::UpdateAdvFlyingSpeed(AdvFlyingRateTypeRange speedType, bool clientUpd
|
||||
if (!flightCapabilityEntry)
|
||||
flightCapabilityEntry = sFlightCapabilityStore.AssertEntry(1);
|
||||
|
||||
// FlightCapability.db2 stores banking/pitching rates in degrees, but the client expects
|
||||
// radians on the wire (retail sniffs: 1.5708 = 90deg, 2.4435 = 140deg, 6.2832 = 360deg).
|
||||
auto [opcode, min, max, rateAura] = [&]
|
||||
{
|
||||
switch (speedType)
|
||||
{
|
||||
case ADV_FLYING_BANKING_RATE:
|
||||
return std::tuple(SMSG_MOVE_SET_ADV_FLYING_BANKING_RATE, flightCapabilityEntry->BankingRateMin, flightCapabilityEntry->BankingRateMax, SPELL_AURA_MOD_ADV_FLYING_BANKING_RATE);
|
||||
return std::tuple(SMSG_MOVE_SET_ADV_FLYING_BANKING_RATE, G3D::toRadians(flightCapabilityEntry->BankingRateMin), G3D::toRadians(flightCapabilityEntry->BankingRateMax), SPELL_AURA_MOD_ADV_FLYING_BANKING_RATE);
|
||||
case ADV_FLYING_PITCHING_RATE_DOWN:
|
||||
return std::tuple(SMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_DOWN, flightCapabilityEntry->PitchingRateDownMin, flightCapabilityEntry->PitchingRateDownMax, SPELL_AURA_MOD_ADV_FLYING_PITCHING_RATE_DOWN);
|
||||
return std::tuple(SMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_DOWN, G3D::toRadians(flightCapabilityEntry->PitchingRateDownMin), G3D::toRadians(flightCapabilityEntry->PitchingRateDownMax), SPELL_AURA_MOD_ADV_FLYING_PITCHING_RATE_DOWN);
|
||||
case ADV_FLYING_PITCHING_RATE_UP:
|
||||
return std::tuple(SMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_UP, flightCapabilityEntry->PitchingRateUpMin, flightCapabilityEntry->PitchingRateUpMax, SPELL_AURA_MOD_ADV_FLYING_PITCHING_RATE_UP);
|
||||
return std::tuple(SMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_UP, G3D::toRadians(flightCapabilityEntry->PitchingRateUpMin), G3D::toRadians(flightCapabilityEntry->PitchingRateUpMax), SPELL_AURA_MOD_ADV_FLYING_PITCHING_RATE_UP);
|
||||
case ADV_FLYING_TURN_VELOCITY_THRESHOLD:
|
||||
return std::tuple(SMSG_MOVE_SET_ADV_FLYING_TURN_VELOCITY_THRESHOLD, flightCapabilityEntry->TurnVelocityThresholdMin, flightCapabilityEntry->TurnVelocityThresholdMax, SPELL_AURA_NONE);
|
||||
default:
|
||||
|
||||
@@ -203,10 +203,12 @@ void WorldSession::SendFeatureSystemStatusGlueScreen()
|
||||
{ "housingEnableMoveHouse"sv, "1"sv },
|
||||
{ "housingEnableCreateCharterNeighborhood"sv, "0"sv },
|
||||
{ "housingEnableCreateGuildNeighborhood"sv, "0"sv },
|
||||
// Advanced flying keyboard turn factors - client defaults (5.0/8.0) multiply the
|
||||
// banking turn rate and make A/D snap-turn during skyriding; 1.0 is the sane base.
|
||||
{ "advFlyKeyboardMinTurnFactor"sv, "1"sv },
|
||||
{ "advFlyKeyboardMaxTurnFactor"sv, "1"sv },
|
||||
// Advanced flying keyboard factors - retail sends no advFly MirrorVars and uses these
|
||||
// client defaults; pushed explicitly to undo previously synced non-default values.
|
||||
{ "advFlyKeyboardMinTurnFactor"sv, "5"sv },
|
||||
{ "advFlyKeyboardMaxTurnFactor"sv, "8"sv },
|
||||
{ "advFlyKeyboardMinPitchFactor"sv, "2.5"sv },
|
||||
{ "advFlyKeyboardMaxPitchFactor"sv, "5"sv },
|
||||
};
|
||||
|
||||
// shop2 endpoint advertisement. The client reaches the modern store over HTTPS at whatever host
|
||||
|
||||
Reference in New Issue
Block a user