Bug: The duplicate name detection code for network players is now failing with the new initialization timing -- oscillating fixNames between dripton and dripton4 Bug: 2-high titan stack did not run away even though it could be caught on 4-6 by a 6-high stack: Gold rolls a 4 for movement considering risk of leaving Gd01 in Brush hex 109 got enemies that can attack on a 1 :[Rd04] got enemies that can attack on a 2 :[Rd04, Rd11] got enemies that can attack on a 3 :[Rd04, Rd11] got enemies that can attack on a 4 :[Rd02, Rd04, Rd11] got enemies that can attack on a 5 :[Rd01, Rd02, Rd04, Rd11] got enemies that can attack on a 6 :[Rd01, Rd02, Rd04, Rd11] EVAL Gd01 stay in Brush hex 109 = 0 considering risk of moving Gd01 to Plains hex 105 got enemies that can attack on a 5 :[Bu03] got enemies that can attack on a 6 :[Bu03] EVAL Gd01 move to Plains hex 105 = 0 Bug: Loaded a game with 2 human players and 4 AIs. Only got one board. Bug: Out of memory error after many consecutive Load Game actions. Find leak. Not enough memory to copy history from from savegame JDOM tree to new one? Bug: After clicking on engagement, after computer declined to flee and I declined to concede: Rd10 (Star) (dripton) attacks Br08 (Ram) (Brown) in Brush hex 17 java.lang.NullPointerException at net.sf.colossus.client.HexMap.getHexByLabel(HexMap.java:583) at net.sf.colossus.client.BattleMap.getEntrance(BattleMap.java:385) at net.sf.colossus.server.Battle.placeLegion(Battle.java:93) at net.sf.colossus.server.Battle.(Battle.java:87) at net.sf.colossus.server.Game.fight(Game.java:2660) at net.sf.colossus.server.Game.makeProposal(Game.java:2606) at net.sf.colossus.server.Server.makeProposal(Server.java:880) at net.sf.colossus.server.SocketServerThread.callMethod(SocketServerThread.java:188) at net.sf.colossus.server.SocketServerThread.parseLine(SocketServerThread.java:104) at net.sf.colossus.server.SocketServerThread.run(SocketServerThread.java:65) Bug: During a battle against an opponent's titan stack, right-clicking on another one of his stacks showed a titan with a ?. Looks like we're not updating certainties at the beginning of the engagement. This fixes itself at the end of the battle. Bug: Blue's turn, number 24 - We can safely split AND attack with Bu01 - We can safely split AND attack with Bu01 - We can safely split AND attack with Bu01 - We can safely split AND attack with Bu01 - We can safely split AND attack with Bu01 - We can safely split AND attack with Bu01 - Client.doSplit Bu01 Bu07 Gorgon,Gorgon - From client Blue: doSplit ~ Bu01 ~ Bu07 ~ Gorgon,Gorgon - Server.doSplit Bu01 Bu07 Gorgon,Gorgon 2 creatures are split off from legion Bu01 (Anchor) into new legion Bu07 (Fountain) - Server.didSplit 134 Bu01 Bu07 2 java.util.ConcurrentModificationException at java.util.TreeMap$EntryIterator.nextEntry(TreeMap.java:1026) at java.util.TreeMap$KeyIterator.next(TreeMap.java:1051) at java.util.Collections$1.next(Collections.java:996) at net.sf.colossus.util.Glob.glob(Glob.java:58) at net.sf.colossus.server.Player.getStatusInfo(Player.java:770) at net.sf.colossus.server.Server.getPlayerInfo(Server.java:1309) at net.sf.colossus.server.Server.allUpdatePlayerInfo(Server.java:292) at net.sf.colossus.server.Server.allUpdatePlayerInfo(Server.java:298) at net.sf.colossus.server.Server.allSetupSplit(Server.java:480) at net.sf.colossus.server.Game.setupSplit(Game.java:805) at net.sf.colossus.server.Game.setupPhase(Game.java:775) at net.sf.colossus.server.Game.access$200(Game.java:31) at net.sf.colossus.server.Game$GamePhaseAdvancer.advancePhaseInternal(Game.java:739) at net.sf.colossus.server.Game$GamePhaseAdvancer.advancePhase(Game.java:721) at net.sf.colossus.server.Game.advancePhase(Game.java:709) at net.sf.colossus.server.Server.doneWithRecruits(Server.java:1260) at net.sf.colossus.server.SocketServerThread.callMethod(SocketServerThread.java:255) at net.sf.colossus.server.SocketServerThread.parseLine(SocketServerThread.java:104) at net.sf.colossus.server.SocketServerThread.run(SocketServerThread.java:65) - Client.didSplit 134 Bu01 Bu07 2 24 - From client Blue: doneWithSplits Bug: CowardSimpleAI ran out of markers, started trying to split with marker "null", entered infinite loop Remove advancePhaseInternal from PhaseAdvancer; make private Remove AWT dependency from server by moving image manipulation in VariantSupport to client side. Need a way to pick a variant at random, selectable from the command line for stresstest. The updateHistory flag used to avoid infinite loops should be an instance variable rather than an argument to many methods. EASY Compute numLegions, numMarkers, numCreatures, titan power, total point value on client side rather than passing them in player info. EASY Disable "AIs stop when humans dead" if no human players at start of game. Animated timer showing time left for AI in battles. Have server send marker names. Change some JDialogs to JFrames to allow separate minimizing? Should be able to move recruit chart behind board, map. OR Make BattleMap a JDialog rather than a JFrame (moving menu), to fix focus. Add link from client to LogWindow; advance scroll thumb at end of various phases. Should be able to clear recruitChits in any phase. Move to Graphics menu? Allow displaying stuff during other players' turns. Ability to dismiss and recall recruitChits Real whole-legion battle eval function, including gang hits. Refactor to eliminate duplicate code. (Especially Movement, BattleMovement, Strike, Creature/Critter/CreatureInfo) Add interfaces like MovementOracle and LegionOracle to replace existing hardcoded Client or Game references where possible. Fix the Titan Creature/Critter problem. Machine learning to tweak AI constants. When getting both a PickRecruit and an AcquireAngel after a battle, make sure the PickRecruit is on top, because it's modal. Or make PickRecruit non-modal. Observer clients, which can attach in mid-game. Sometimes refuse remote newGame/loadGame/saveGame calls? Cleanup network shutdown -- when game over or player eliminated, don't whine if its client drops. Fully event-driven savegames. Use identical events for network protocol. Use events to support infinite undo/redo, toolbar with VCR controls to step through games, stepping AI, etc. Change Quit button in GetPlayers dialog to Cancel. Go back to existing game if there is one from Cancel, or quit if just starting. Eliminate confirmation before calling dialog. L&F should not show Windows if not allowed on this platform. L&F needs to include GTK on Linux Eliminate L&F menu entirely? Add "no 2s or 5s" mulligan option. Add optional additional handicap mulligans that can be used after turn 1. Add UI for players to specify favorite colors. ShowLegion on mouseover, not click, with permanent dialog. Show zoomed area around mouse cursor in a small window, for big maps. Add confirm dialogs (for conceding with titan, skipping recruits, ...) Highlight entrances somehow. Maybe use fixed boxes with an arrow to show entry side, instead of cascading. Turn map to move player's entrance (or attacker's if observing) to bottom. Line up entering creatures rather than overlapping. Color-code entrances. Make BattleMap less tall. Move dice, etc. to one side. Add SetupBattle dialog, to allow setting up standalone battles. (terrain, entry side, creatures in attacking and defending legions, angel/archangel available to summon, recruits available for terrain type, player scores for titan power.) Track all players' markers on client side. Add a ShowLegionMarkers window that shows each player's remaining markers. Add a window that shows all players' units Add a window that shows all game options. Add movement and recruit animation. Requires returning full paths for moves, not just destination hex. JDK 1.4 changes: New focus model JProgressBar setIndeterminate() JFormattedTextField for some inputs? Logging API? asserts (make sure they're on) NetworkInterface / localhost Make split prediction optional. SVG chits. Maybe SVG board and map, after we have SVG chits. (No point before then -- just drags in Batik without giving infinite rescaling.) Remove SVG code until we have the chits. Place SummonAngel so that it doesn't overlap any of the player's markers with summonable angels. Use creature-only images without chit background, and scale onto chits, avoiding overlap with symbols and allowing players to easily substitute images without editing. Try PMD (lint tool). Dead players' markers should be zero in StatusScreen. PickRecruiter should allow clicking on the top row (if applicable), not just the bottom. Try some Law of Demeter refactorings. EngagementResults: Legion won the battle in -1 turns Legion earned 0 points Losing legion's creatures need to be shown without ?