Warcraft: War Heroes - Official Thread
- 
					
					
					
					
 @TheDog That should already be fixed. I'm not sure if a release has the fix or if you have to use a prerelease. 
- 
					
					
					
					
 My 
 Engine version is 2.0.20306Game version is 0.1.2 
- 
					
					
					
					
 A 2.1 was just released that has the latest fixes for this map. 
- 
					
					
					
					
 @Frostion 
 Playing Undead, I dont appear to be able to place Skeletons with Sevis?
- 
					
					
					
					
 Turn 25 
 I was doing so well, with no errors till this one.
 Noted the AI has not been defending their capitals with too many units, thanks Devs. 
 2.1.20365: CasualtySelector#selectCasualties:136 - IllegalStateExceptionLog Messagejava.lang.IllegalStateException: sortedTargetsToPickFrom must have the same size as targetsToPickFrom list TripleA Version2.1.20365 Java Version11.0.6 Operating SystemWindows 10 Stack Tracejava.lang.IllegalStateException: java.lang.IllegalStateException: sortedTargetsToPickFrom must have the same size as targetsToPickFrom list at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490) at java.base/java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:600) at java.base/java.util.concurrent.ForkJoinTask.reportException(ForkJoinTask.java:678) at java.base/java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:737) at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateParallel(ReduceOps.java:919) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:233) at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) at games.strategy.triplea.odds.calculator.ConcurrentBattleCalculator.calculate(ConcurrentBattleCalculator.java:234) at games.strategy.triplea.ai.pro.util.ProOddsCalculator.callBattleCalc(ProOddsCalculator.java:224) at games.strategy.triplea.ai.pro.util.ProOddsCalculator.callBattleCalc(ProOddsCalculator.java:200) at games.strategy.triplea.ai.pro.util.ProOddsCalculator.calculateBattleResults(ProOddsCalculator.java:133) at games.strategy.triplea.ai.pro.util.ProOddsCalculator.calculateBattleResults(ProOddsCalculator.java:116) at games.strategy.triplea.ai.pro.ProNonCombatMoveAi.determineIfMoveTerritoriesCanBeHeld(ProNonCombatMoveAi.java:423) at games.strategy.triplea.ai.pro.ProNonCombatMoveAi.doNonCombatMove(ProNonCombatMoveAi.java:98) at games.strategy.triplea.ai.pro.AbstractProAi.move(AbstractProAi.java:135) at games.strategy.triplea.ai.AbstractAi.start(AbstractAi.java:514) at games.strategy.engine.framework.ServerGame.waitForPlayerToFinishStep(ServerGame.java:537) at games.strategy.engine.framework.ServerGame.runStep(ServerGame.java:407) at games.strategy.engine.framework.ServerGame.startGame(ServerGame.java:297) at games.strategy.engine.framework.startup.launcher.LocalLauncher.launchInternal(LocalLauncher.java:61) at games.strategy.engine.framework.startup.launcher.LocalLauncher.launchInternal(LocalLauncher.java:34) at games.strategy.engine.framework.startup.launcher.AbstractLauncher.lambda$launch$0(AbstractLauncher.java:16) at java.base/java.lang.Thread.run(Thread.java:834) Caused by: java.lang.IllegalStateException: sortedTargetsToPickFrom must have the same size as targetsToPickFrom list at games.strategy.triplea.delegate.battle.casualty.CasualtySelector.selectCasualties(CasualtySelector.java:136) at games.strategy.triplea.delegate.battle.Fire.selectCasualties(Fire.java:248) at games.strategy.triplea.delegate.battle.Fire.selectCasualties(Fire.java:238) at games.strategy.triplea.delegate.battle.Fire$2.execute(Fire.java:117) at games.strategy.triplea.delegate.ExecutionStack.execute(ExecutionStack.java:34) at games.strategy.triplea.delegate.battle.MustFightBattle.fight(MustFightBattle.java:722) at games.strategy.triplea.odds.calculator.BattleCalculator.calculate(BattleCalculator.java:114) at games.strategy.triplea.odds.calculator.ConcurrentBattleCalculator.lambda$calculate$4(ConcurrentBattleCalculator.java:222) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) at java.base/java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:952) at java.base/java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:926) at java.base/java.util.stream.AbstractTask.compute(AbstractTask.java:327) at java.base/java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:746) at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290) at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020) at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656) at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594) at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:177)WoW-U25.tsvg 
 autosave_round_odd.tsvg
 autosave_round_even.tsvg
- 
					
					
					
					
 Wow! 25 runds! I made the map and have never reached that many rounds  Are you playing both Undead and Trolls? Or only Undead? Are you playing both Undead and Trolls? Or only Undead?Please give me a save of the last and final round you play so that I may study it. I would like to see how long it takes for you to level up and how the resources are balanced. To me it seems that you got too many special resources? More than you need? Are some in abundance and other s not? Does the skeletons still not work? I think you have to build them at a factory where you hero is located. Either when he drops by or when he resurrects there. PS: Hope the devs could evaluate this error. Have not seem that before. 
- 
					
					
					
					
 Yes the skeletons work fine. You have to have your hero in a factory for him to produce them. 
- 
					
					
					
					
 @TheDog I don't see this error reported in github. Did you click the "Report to TripleA" button? And I could duplicate the error with that save so it is really nice. 
- 
					
					
					
					
 @TheDog I created a github issue https://github.com/triplea-game/triplea/issues/7020 I also figured out why it is happening but I don't have a fix. That is in the issue. 
- 
					
					
					
					
 Re: Warcraft: War Heroes - Official Thread @Frostion 
 I only play as one race at a time.For resources food is scarce, but later in the game you have too much. Thats is because you are using your other resources to buy other cool stuff. So on balance it works fine as is. For those players who go beyond say 25 turns they will have excess XP, so a suicide (one use) unit/spell with an XP costs might be worth considering. Undead 
 WoW-U25.tsvgTauren 
 WoW-T27.tsvgCurrently playing Trolls only turn 6 so far. 
 WoW-TR-06.tsvgI will try the skeletons later. 
- 
					
					
					
					
 @Trevan 
 Yes I tried to report it to Git Hub, it would not let me. Do I need a Git Hub account to post there?
- 
					
					
					
					
 Thanks, it much more stable. 
- 
					
					
					
					
 
- 
					
					
					
					
 @Frostion 
 The Troll hero cannot use the movement speed of 3 from the Balloon in Plaguewood, see turn 10.This might be due to the Totem? 
- 
					
					
					
					
 Dwarf turn 20 
 This should be reproducible as it crashed again for me.2.1.20365: RemoveUnits#perform:44 - IllegalStateException Log MessageRemote method call exception: Not all units present in:Thandol Strait. Trying to remove:[Flying-Machine owned by Dwarves, Troopship owned by Trolls, Footmen owned by Trolls, Footmen owned by Trolls, Footmen owned by Trolls, Footmen owned by Trolls, Footmen owned by Trolls] present:[Fish owned by Trolls, Troopship owned by Trolls, Footmen owned by Trolls, Footmen owned by Trolls, Footmen owned by Trolls, Footmen owned by Trolls, Flying-Machine owned by Dwarves, Flying-Machine owned by Dwarves] TripleA Version2.1.20365 Java Version11.0.6 Operating SystemWindows 10 Stack Tracejava.lang.IllegalStateException: Not all units present in:Thandol Strait. Trying to remove:[Flying-Machine owned by Dwarves, Troopship owned by Trolls, Footmen owned by Trolls, Footmen owned by Trolls, Footmen owned by Trolls, Footmen owned by Trolls, Footmen owned by Trolls] present:[Fish owned by Trolls, Troopship owned by Trolls, Footmen owned by Trolls, Footmen owned by Trolls, Footmen owned by Trolls, Footmen owned by Trolls, Flying-Machine owned by Dwarves, Flying-Machine owned by Dwarves] at games.strategy.engine.data.changefactory.RemoveUnits.perform(RemoveUnits.java:44) at games.strategy.engine.data.GameData.performChange(GameData.java:433) at games.strategy.engine.framework.ServerGame$1.gameDataChanged(ServerGame.java:92) at jdk.internal.reflect.GeneratedMethodAccessor42.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at games.strategy.engine.message.unifiedmessenger.EndPoint.invokeSingle(EndPoint.java:136) at games.strategy.engine.message.unifiedmessenger.EndPoint.lambda$invokeMultiple$0(EndPoint.java:120) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) at games.strategy.engine.message.unifiedmessenger.EndPoint.invokeMultiple(EndPoint.java:121) at games.strategy.engine.message.unifiedmessenger.EndPoint.invokeLocal(EndPoint.java:111) at games.strategy.engine.message.unifiedmessenger.UnifiedMessenger.invoke(UnifiedMessenger.java:152) at games.strategy.engine.message.UnifiedInvocationHandler.invoke(UnifiedInvocationHandler.java:48) at com.sun.proxy.$Proxy16.gameDataChanged(Unknown Source) at games.strategy.engine.framework.ServerGame.addChange(ServerGame.java:638) at games.strategy.engine.delegate.DefaultDelegateBridge.addChange(DefaultDelegateBridge.java:91) at games.strategy.triplea.delegate.GameDelegateBridge.addChange(GameDelegateBridge.java:62) at games.strategy.triplea.delegate.battle.MustFightBattle.remove(MustFightBattle.java:603) at games.strategy.triplea.delegate.battle.MustFightBattle.clearWaitingToDieAndDamagedChangesInto(MustFightBattle.java:456) at games.strategy.triplea.delegate.battle.MustFightBattle$20.execute(MustFightBattle.java:1777) at games.strategy.triplea.delegate.ExecutionStack.execute(ExecutionStack.java:34) at games.strategy.triplea.delegate.battle.MustFightBattle.fight(MustFightBattle.java:722) at games.strategy.triplea.delegate.battle.BattleDelegate.fightBattle(BattleDelegate.java:242) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at games.strategy.engine.delegate.DelegateExecutionManager$1.invoke(DelegateExecutionManager.java:120) at com.sun.proxy.$Proxy12.fightBattle(Unknown Source) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at games.strategy.engine.message.unifiedmessenger.EndPoint.invokeSingle(EndPoint.java:136) at games.strategy.engine.message.unifiedmessenger.EndPoint.lambda$invokeMultiple$0(EndPoint.java:120) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) at games.strategy.engine.message.unifiedmessenger.EndPoint.invokeMultiple(EndPoint.java:121) at games.strategy.engine.message.unifiedmessenger.EndPoint.invokeLocal(EndPoint.java:111) at games.strategy.engine.message.unifiedmessenger.UnifiedMessenger.invokeAndWait(UnifiedMessenger.java:96) at games.strategy.engine.message.UnifiedInvocationHandler.invoke(UnifiedInvocationHandler.java:56) at com.sun.proxy.$Proxy12.fightBattle(Unknown Source) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at games.strategy.engine.player.DefaultPlayerBridge$GameOverInvocationHandler.invoke(DefaultPlayerBridge.java:152) at com.sun.proxy.$Proxy12.fightBattle(Unknown Source) at games.strategy.triplea.ai.AbstractAi.battle(AbstractAi.java:609) at games.strategy.triplea.ai.AbstractAi.start(AbstractAi.java:517) at games.strategy.engine.framework.ServerGame.waitForPlayerToFinishStep(ServerGame.java:537) at games.strategy.engine.framework.ServerGame.runStep(ServerGame.java:407) at games.strategy.engine.framework.ServerGame.startGame(ServerGame.java:297) at games.strategy.engine.framework.startup.launcher.LocalLauncher.launchInternal(LocalLauncher.java:61) at games.strategy.engine.framework.startup.launcher.LocalLauncher.launchInternal(LocalLauncher.java:34) at games.strategy.engine.framework.startup.launcher.AbstractLauncher.lambda$launch$0(AbstractLauncher.java:16) at java.base/java.lang.Thread.run(Thread.java:834)WoW-TR-19-end.tsvg 
 autosave_round_even.tsvg
 autosave_round_odd.tsvg
- 
					
					
					
					
 @TheDog Thanks for the save game. I see a issue in github that appears to be this one. I've copied the save there. https://github.com/triplea-game/triplea/issues/7026 I can duplicate it with 2.1 but not with the latest master. So this might already be fixed in one of the pre-releases. I'm trying to figure out if it is really fixed. 
- 
					
					
					
					
 I was wrong about it being fixed. There is some randomness to getting the error. I'm able to duplicate it and will be putting more details about it in the github issue. 
- 
					
					
					
					
 @Frostion 
 As I have a few games under my belt, here are some observation/suggestions.Unit buying 
 Irregulars - the cheapest unit, good for fodder and gaining territory
 Footmen - good general purpose
 Pike - good anti cavalry
 Bow - I dont buy, poor value
 Crossbow - I dont buy, poor value
 Artillery - poor value, especially when the hero wields so much ranged fire power.Suggestions 
 Cavalry - drop their PU, increase/double their Food cost, these are really good blitzers and great at causing mayhem in the enemies territories. The Food change is to use up the food surplus later in the game. Besides you have to feed the mount.
 Range 4 spells - too long, reduce to range 2 or 3Undead 
 Skeletons - too cheap should be 10 or 15 mana
 Fire Thrower - appears poor value v Catapult in the Battle CalcTroll 
 Berserkers - poor value also dont give Veteran so not worth it
 Dire Troll is too expensive as it specifically needs 5 Allied Irregulars to make it worth while
 Fire Canoe looks poor value and only moves 1 v Warship general purpose statsDo you want more observations/suggestions? 
- 
					
					
					
					
 Some of what TheDog posted is how i feel as well but not all. My observations will differ a bit. All around i think the game is well balanced. Since there are four races on each side the randomness of the resource placement and helpful items means that IF you are playing only one of those races, the other three are almost guaranteed to have more of something you lack. You just need to figure out what you need to specialize in to be an effective ally. As to units, i think the current stats are mostly fine. I agree with TheDog that cavalry could be a bit more costly in food. I don't agree with his take on bowmen and crossbowmen. These to me seem to have been intended as basically improved Irregulars. Either gaining a defensive or offensive bonus but still basically Irregulars. The cost for them is not much more in PU's but you have to pay for the bonuses in food. I don't have a problem with that. Especially in the later game when there is such a huge surplus most of the time. I don't agree with the take on artillery either. Its a nice way to have powerful attacks like a hero when your hero is not present. Or if you do not have enough mana or gold for whatever reason to buy the good supporting units. I do agree that spells are a bit O.P. with their range, 4 seems excessive. I also agree with the troll Berserkers not being worth it. I have not once bought them. The Fire Canoe i also agree with. Its basically pointless. At that speed its almost purely a defensive weapon. All in all though like i said this game seems very well thought out. If the technical glitches can be ironed out it may well be a favorite of mine. 
- 
					
					
					
					
 @TheDog @avshar Great feedback! I have have had little time to work on this map lately, but a thorough evaluation of your save games and feed back is on my to-do-list (like your agreements and disagreements). Also, the potential map-error with the undead movement of the balloon. Any errors, shortcomings, inaccuracies or misinformation in like tooltips or notes are also very welcome  
 
			
		 
			
		