Jump to content

[9910][patch] Warsong Gulch 25 minutes limit


Guest LordJZ

Recommended Posts

According to changes in Patch 3.2, Warsong Gluch battle is now limited to 20 minutes (it morphed into 25 minutes on live). Quoting official patch notes:

There is a now a 20-minute timer on this Battleground. After that time, the team with the most flag captures wins. If this would result in a tie, the team that captured the first flag wins. If neither side has captured a flag, then the game ends in a tie.
A little time after, a hotfix had been applied to change
If this would result in a tie, the team that captured the first flag wins.
To
If this would result in a tie, the team that captured the last flag wins.
(corrected version of 3.2 change can be found here)

Full tested patch containing all hotfixes and changes: http://paste2.org/p/563471

___________

A little more explanations on my solution to new variables.

m_EndTimer is probably named bad (because of existing m_EndTime used to announce when the battleground will be shutdowned after actual BG end)

m_LastCapturedFlagTeam used to determine which side captured the flag last.

m_LastEndTimeMinutes used to calculate WorldStateUpdate time. Though it is not really needed, it decided to create a variable instead of forcing calculations on every update tick to determine whether or not announce World States.

Link to comment
Share on other sites

hello, good to see :)

the m_endtimer is ok i think.. at least i have no idea for a better name

+ uint32 h = GetTeamScore(HORDE);

+ uint32 a = GetTeamScore(ALLIANCE);

should be avoided, please use meaningful variablenames or maybe just replace the variables by the functioncalls

and we can avoid the variable LastEndTimeMinutes

           uint32 old_minutes = GetEndTimeMinutes() ;
           m_EndTimer -= diff;
           if(GetEndTimeMinutes()  != old_minutes)
...

also i would write:

return m_EndTimer / (MINUTE * IN_MILISECONDS);

or is ceiling the result really needed?

i think it's possible to use ceil also on plain integer division without casting it to float first

edit: if (m_EndTimer > 0) should be

if (m_EndTimer - diff > 0)

else it will get negative

Link to comment
Share on other sites

  • 2 months later...
  • 1 month later...

Please bear in mind that while both teams have the flag of the opposing team, after 10 minutes without a Flag return or capture, Flag Carrying PCs should be recieving the debuff Focused Assault (#46392), and after 15 minutes they should be recieving the debuff Brutal Assault (#46393). This information can be found in the "General Info" point-section on the WoW site.

Without the inclusion of these debuffs, I fear that many WSG matches will end at 0-0 under a 25m timer.

Link to comment
Share on other sites

I know this requires a few more case statements and conditional loops. But exactly how to add those debuffs is beyond my reach. I do hope it can be included into the next update. Until then, I think I'll hold off on adding this patch or I may have some torch-wielding BG players knocking at my Admin toon's citadel gates! lol

Link to comment
Share on other sites

  • 3 weeks later...
return m_EndTimer / (MINUTE * IN_MILISECONDS);

If we want have number full or partly pass minutes then need more code but float better avoid

For example (base at fact that timer can't be < 0:

uint32 GetRemainingTimeInMinutes() { return m_EndTimer ? (m_EndTimer-1) / (MINUTE * IN_MILLISECONDS) + 1 : 0; }
Link to comment
Share on other sites

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use