LevelUpCrateAction: fix loop variable in closure bug

This was a real bug -- if there were multiple recipients, we'd apply the
levels N times to the last recipient rather than once to each.
This commit is contained in:
Chris Forbes
2014-10-07 18:19:55 +13:00
parent edbd65bdf3
commit f2492f4155

View File

@@ -68,9 +68,10 @@ namespace OpenRA.Mods.RA
foreach (var actor in inRange.Append(collector)) foreach (var actor in inRange.Append(collector))
{ {
actor.World.AddFrameEndTask(w => var recipient = actor; // loop variable in closure hazard
recipient.World.AddFrameEndTask(w =>
{ {
var gainsExperience = actor.TraitOrDefault<GainsExperience>(); var gainsExperience = recipient.TraitOrDefault<GainsExperience>();
if (gainsExperience != null) if (gainsExperience != null)
gainsExperience.GiveLevels(((LevelUpCrateActionInfo)info).Levels); gainsExperience.GiveLevels(((LevelUpCrateActionInfo)info).Levels);
}); });