Jump to content

[9910][patch] Warsong Gulch 25 minutes limit


Recommended Posts

Posted

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.

Posted

you doing integer division here then casting to float, decimal data is already lost

uint32 GetEndTimeMinutes() { return ceil(float(m_EndTimer / MINUTE / IN_MILISECONDS)); }

so its better to do:

uint32 GetEndTimeMinutes() { return ceil(float(m_EndTimer) / (MINUTE * IN_MILISECONDS)); }

Posted

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

Posted

bump sound good

works with 900x mangos?

edit by balrok: no bumping after ONE day.. also you could just read everything in the thread to find out more about this..

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

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.

Posted

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

  • 3 weeks later...
Posted
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; }
×
×
  • 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