mirror of
https://github.com/mangosfour/server.git
synced 2025-12-15 19:37:02 +00:00
[9583] Fixed speed recalculation at remove .mod speed rate while mounted/etc.
This commit is contained in:
parent
547919e249
commit
996a523302
4 changed files with 33 additions and 38 deletions
|
|
@ -1106,9 +1106,9 @@ bool ChatHandler::HandleModifyASpeedCommand(const char* args)
|
||||||
if (!*args)
|
if (!*args)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
float ASpeed = (float)atof((char*)args);
|
float modSpeed = (float)atof((char*)args);
|
||||||
|
|
||||||
if (ASpeed > 10 || ASpeed < 0.1)
|
if (modSpeed > 10 || modSpeed < 0.1)
|
||||||
{
|
{
|
||||||
SendSysMessage(LANG_BAD_VALUE);
|
SendSysMessage(LANG_BAD_VALUE);
|
||||||
SetSentErrorMessage(true);
|
SetSentErrorMessage(true);
|
||||||
|
|
@ -1136,15 +1136,15 @@ bool ChatHandler::HandleModifyASpeedCommand(const char* args)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
PSendSysMessage(LANG_YOU_CHANGE_ASPEED, ASpeed, chrNameLink.c_str());
|
PSendSysMessage(LANG_YOU_CHANGE_ASPEED, modSpeed, chrNameLink.c_str());
|
||||||
if (needReportToTarget(chr))
|
if (needReportToTarget(chr))
|
||||||
ChatHandler(chr).PSendSysMessage(LANG_YOURS_ASPEED_CHANGED, GetNameLink().c_str(), ASpeed);
|
ChatHandler(chr).PSendSysMessage(LANG_YOURS_ASPEED_CHANGED, GetNameLink().c_str(), modSpeed);
|
||||||
|
|
||||||
chr->SetSpeedRate(MOVE_WALK, ASpeed,true);
|
chr->UpdateSpeed(MOVE_WALK, true, modSpeed);
|
||||||
chr->SetSpeedRate(MOVE_RUN, ASpeed,true);
|
chr->UpdateSpeed(MOVE_RUN, true, modSpeed);
|
||||||
chr->SetSpeedRate(MOVE_SWIM, ASpeed,true);
|
chr->UpdateSpeed(MOVE_SWIM, true, modSpeed);
|
||||||
//chr->SetSpeed(MOVE_TURN, ASpeed,true);
|
//chr->UpdateSpeed(MOVE_TURN, true, modSpeed);
|
||||||
chr->SetSpeedRate(MOVE_FLIGHT, ASpeed,true);
|
chr->UpdateSpeed(MOVE_FLIGHT, true, modSpeed);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1154,9 +1154,9 @@ bool ChatHandler::HandleModifySpeedCommand(const char* args)
|
||||||
if (!*args)
|
if (!*args)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
float Speed = (float)atof((char*)args);
|
float modSpeed = (float)atof((char*)args);
|
||||||
|
|
||||||
if (Speed > 10 || Speed < 0.1)
|
if (modSpeed > 10 || modSpeed < 0.1)
|
||||||
{
|
{
|
||||||
SendSysMessage(LANG_BAD_VALUE);
|
SendSysMessage(LANG_BAD_VALUE);
|
||||||
SetSentErrorMessage(true);
|
SetSentErrorMessage(true);
|
||||||
|
|
@ -1184,11 +1184,11 @@ bool ChatHandler::HandleModifySpeedCommand(const char* args)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
PSendSysMessage(LANG_YOU_CHANGE_SPEED, Speed, chrNameLink.c_str());
|
PSendSysMessage(LANG_YOU_CHANGE_SPEED, modSpeed, chrNameLink.c_str());
|
||||||
if (needReportToTarget(chr))
|
if (needReportToTarget(chr))
|
||||||
ChatHandler(chr).PSendSysMessage(LANG_YOURS_SPEED_CHANGED, GetNameLink().c_str(), Speed);
|
ChatHandler(chr).PSendSysMessage(LANG_YOURS_SPEED_CHANGED, GetNameLink().c_str(), modSpeed);
|
||||||
|
|
||||||
chr->SetSpeedRate(MOVE_RUN,Speed,true);
|
chr->UpdateSpeed(MOVE_RUN, true, modSpeed);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -1199,9 +1199,9 @@ bool ChatHandler::HandleModifySwimCommand(const char* args)
|
||||||
if (!*args)
|
if (!*args)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
float Swim = (float)atof((char*)args);
|
float modSpeed = (float)atof((char*)args);
|
||||||
|
|
||||||
if (Swim > 10.0f || Swim < 0.01f)
|
if (modSpeed > 10.0f || modSpeed < 0.01f)
|
||||||
{
|
{
|
||||||
SendSysMessage(LANG_BAD_VALUE);
|
SendSysMessage(LANG_BAD_VALUE);
|
||||||
SetSentErrorMessage(true);
|
SetSentErrorMessage(true);
|
||||||
|
|
@ -1229,11 +1229,11 @@ bool ChatHandler::HandleModifySwimCommand(const char* args)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
PSendSysMessage(LANG_YOU_CHANGE_SWIM_SPEED, Swim, chrNameLink.c_str());
|
PSendSysMessage(LANG_YOU_CHANGE_SWIM_SPEED, modSpeed, chrNameLink.c_str());
|
||||||
if (needReportToTarget(chr))
|
if (needReportToTarget(chr))
|
||||||
ChatHandler(chr).PSendSysMessage(LANG_YOURS_SWIM_SPEED_CHANGED, GetNameLink().c_str(), Swim);
|
ChatHandler(chr).PSendSysMessage(LANG_YOURS_SWIM_SPEED_CHANGED, GetNameLink().c_str(), modSpeed);
|
||||||
|
|
||||||
chr->SetSpeedRate(MOVE_SWIM,Swim,true);
|
chr->UpdateSpeed(MOVE_SWIM, true, modSpeed);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -1244,9 +1244,9 @@ bool ChatHandler::HandleModifyBWalkCommand(const char* args)
|
||||||
if (!*args)
|
if (!*args)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
float BSpeed = (float)atof((char*)args);
|
float modSpeed = (float)atof((char*)args);
|
||||||
|
|
||||||
if (BSpeed > 10.0f || BSpeed < 0.1f)
|
if (modSpeed > 10.0f || modSpeed < 0.1f)
|
||||||
{
|
{
|
||||||
SendSysMessage(LANG_BAD_VALUE);
|
SendSysMessage(LANG_BAD_VALUE);
|
||||||
SetSentErrorMessage(true);
|
SetSentErrorMessage(true);
|
||||||
|
|
@ -1274,11 +1274,11 @@ bool ChatHandler::HandleModifyBWalkCommand(const char* args)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
PSendSysMessage(LANG_YOU_CHANGE_BACK_SPEED, BSpeed, chrNameLink.c_str());
|
PSendSysMessage(LANG_YOU_CHANGE_BACK_SPEED, modSpeed, chrNameLink.c_str());
|
||||||
if (needReportToTarget(chr))
|
if (needReportToTarget(chr))
|
||||||
ChatHandler(chr).PSendSysMessage(LANG_YOURS_BACK_SPEED_CHANGED, GetNameLink().c_str(), BSpeed);
|
ChatHandler(chr).PSendSysMessage(LANG_YOURS_BACK_SPEED_CHANGED, GetNameLink().c_str(), modSpeed);
|
||||||
|
|
||||||
chr->SetSpeedRate(MOVE_RUN_BACK,BSpeed,true);
|
chr->UpdateSpeed(MOVE_RUN_BACK, true, modSpeed);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -1289,9 +1289,9 @@ bool ChatHandler::HandleModifyFlyCommand(const char* args)
|
||||||
if (!*args)
|
if (!*args)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
float FSpeed = (float)atof((char*)args);
|
float modSpeed = (float)atof((char*)args);
|
||||||
|
|
||||||
if (FSpeed > 10.0f || FSpeed < 0.1f)
|
if (modSpeed > 10.0f || modSpeed < 0.1f)
|
||||||
{
|
{
|
||||||
SendSysMessage(LANG_BAD_VALUE);
|
SendSysMessage(LANG_BAD_VALUE);
|
||||||
SetSentErrorMessage(true);
|
SetSentErrorMessage(true);
|
||||||
|
|
@ -1310,11 +1310,11 @@ bool ChatHandler::HandleModifyFlyCommand(const char* args)
|
||||||
if (HasLowerSecurity(chr, 0))
|
if (HasLowerSecurity(chr, 0))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
PSendSysMessage(LANG_YOU_CHANGE_FLY_SPEED, FSpeed, GetNameLink(chr).c_str());
|
PSendSysMessage(LANG_YOU_CHANGE_FLY_SPEED, modSpeed, GetNameLink(chr).c_str());
|
||||||
if (needReportToTarget(chr))
|
if (needReportToTarget(chr))
|
||||||
ChatHandler(chr).PSendSysMessage(LANG_YOURS_FLY_SPEED_CHANGED, GetNameLink().c_str(), FSpeed);
|
ChatHandler(chr).PSendSysMessage(LANG_YOURS_FLY_SPEED_CHANGED, GetNameLink().c_str(), modSpeed);
|
||||||
|
|
||||||
chr->SetSpeedRate(MOVE_FLIGHT,FSpeed,true);
|
chr->UpdateSpeed(MOVE_FLIGHT, true, modSpeed);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8641,11 +8641,6 @@ void Unit::SetPet(Pet* pet)
|
||||||
|
|
||||||
if(pet && GetTypeId() == TYPEID_PLAYER)
|
if(pet && GetTypeId() == TYPEID_PLAYER)
|
||||||
((Player*)this)->SendPetGUIDs();
|
((Player*)this)->SendPetGUIDs();
|
||||||
|
|
||||||
// FIXME: hack, speed must be set only at follow
|
|
||||||
if(pet && GetTypeId()==TYPEID_PLAYER)
|
|
||||||
for(int i = 0; i < MAX_MOVE_TYPE; ++i)
|
|
||||||
pet->SetSpeedRate(UnitMoveType(i), m_speed_rate[i], true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Unit::SetCharm(Unit* pet)
|
void Unit::SetCharm(Unit* pet)
|
||||||
|
|
@ -10727,7 +10722,7 @@ void Unit::UpdateWalkMode(Unit* source, bool self)
|
||||||
CallForAllControlledUnits(UpdateWalkModeHelper(source), false, true, true);
|
CallForAllControlledUnits(UpdateWalkModeHelper(source), false, true, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Unit::UpdateSpeed(UnitMoveType mtype, bool forced)
|
void Unit::UpdateSpeed(UnitMoveType mtype, bool forced, float ratio)
|
||||||
{
|
{
|
||||||
// not in combat pet have same speed as owner
|
// not in combat pet have same speed as owner
|
||||||
switch(mtype)
|
switch(mtype)
|
||||||
|
|
@ -10837,7 +10832,7 @@ void Unit::UpdateSpeed(UnitMoveType mtype, bool forced)
|
||||||
if (speed < min_speed)
|
if (speed < min_speed)
|
||||||
speed = min_speed;
|
speed = min_speed;
|
||||||
}
|
}
|
||||||
SetSpeedRate(mtype, speed, forced);
|
SetSpeedRate(mtype, speed * ratio, forced);
|
||||||
}
|
}
|
||||||
|
|
||||||
float Unit::GetSpeed( UnitMoveType mtype ) const
|
float Unit::GetSpeed( UnitMoveType mtype ) const
|
||||||
|
|
|
||||||
|
|
@ -1739,7 +1739,7 @@ class MANGOS_DLL_SPEC Unit : public WorldObject
|
||||||
void CalcAbsorbResist(Unit *pVictim, SpellSchoolMask schoolMask, DamageEffectType damagetype, const uint32 damage, uint32 *absorb, uint32 *resist, bool canReflect = false);
|
void CalcAbsorbResist(Unit *pVictim, SpellSchoolMask schoolMask, DamageEffectType damagetype, const uint32 damage, uint32 *absorb, uint32 *resist, bool canReflect = false);
|
||||||
|
|
||||||
void UpdateWalkMode(Unit* source, bool self = true);
|
void UpdateWalkMode(Unit* source, bool self = true);
|
||||||
void UpdateSpeed(UnitMoveType mtype, bool forced);
|
void UpdateSpeed(UnitMoveType mtype, bool forced, float ratio = 1.0f);
|
||||||
float GetSpeed( UnitMoveType mtype ) const;
|
float GetSpeed( UnitMoveType mtype ) const;
|
||||||
float GetSpeedRate( UnitMoveType mtype ) const { return m_speed_rate[mtype]; }
|
float GetSpeedRate( UnitMoveType mtype ) const { return m_speed_rate[mtype]; }
|
||||||
void SetSpeedRate(UnitMoveType mtype, float rate, bool forced = false);
|
void SetSpeedRate(UnitMoveType mtype, float rate, bool forced = false);
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "9582"
|
#define REVISION_NR "9583"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue