I had attempted a move earlier in a game I am playing that failed, and I'm not sure why. Here's the move:
A Bre -> F English Channel via convoy
F EC -> convoy from Bre to North Sea
F North Sea -> convoy from EC to Denmark
F Heligoland Blight -> Support move to Denmark from North Sea
There was an enemy army in Denmark, Norway, and in that same turn I was able to dislodge the enemy in Kiel (so Kiel would not have been able to support Denmark). There were no other units close to Denmark, unless you count Berlin, but they don't connect and Berlin wouldn't be able to support Denmark
At the turn, I was told the support move was not accepted and the army was unable to move into Denmark. It doesn't matter now in that game, since I just used my fleet in Heligoland Blight to take it the next turn. But now I'm stuck with an army in the wings that I could have easily used in Germany supporting or advancing.
But it does matter again, since I am faced with a similar situation. The army that was in Brest is now in Belgium, waiting to be convoyed to Norway through the North Sea with support from Norwegian Sea, Denmark and Sweden. But if the move is not possible, I want to do something else. The game is 2189 if it matters.
I like to think that you just didn't think about how that sounded, Gobbledydook, as Kestas has put a lot of time and effort into the "damn php code". From the FAQ (and paraphrased here in the forum numerous times): "A Diplomacy adjudicator is one of those things which takes say 1000 lines of code to get it right 95% of the time, but 2000 lines to get it right 100% of the time." So don't bust on Kestas for not having everything working yet, it's free, he's not being paid to do it, and t's not even 1.0 yet.
Sorry if you just came off that way...no insult intended, just think Kestas is doing a hell of a job and I'd hate to see him getting crap for all the hard work he's done.
This one bugs me as well. So I just spent some time looking at the code, and it may not be all that difficult (some times coding just requires another set of eyes) -
In phase_diplomacy.php:
// Give all support moves.
...
// Give Convoy support (add's support to fleet, which will transfer support to army
$tabl = $DATABASE->sql_tabl("SELECT support.unitid, supported.unitid, support.tkey1
FROM ".SUBDB."moves support,
".SUBDB."moves supported
WHERE support.mtype = ".SUPPORTMOVE."
AND supported.mtype = ".CONVOY."
AND support.tkey1 = supported.tkey1
AND support.tkey2 = supported.ckey");
while(list($supportid, $supportedid, $attacktkey) = $DATABASE->tabl_row($tabl)) {
$SUPPORT = $GAME->UNITS[$supportid];
$SUPPORTED = $GAME->UNITS[$supportedid];
$ATTACKTERR = cache_TERRITORY($attacktkey);
$GM->addgamemessage($SUPPORT->membershipid, "Your ".$SUPPORT->typetxt()." at ".$SUPPORT->TERR->name."
successfully supported the ".$SUPPORTED->typetxt()."
at ".$SUPPORTED->TERR->name." convoy to ".$ATTACKTERR->name.".");
$GM->addgamemessage($SUPPORTED->membershipid, "Your ".$SUPPORTED->typetxt()." at ".$SUPPORTED->TERR->name."
convoying into ".$ATTACKTERR->name." recieved support
from the ".$SUPPORT->typetxt()." at ".$SUPPORT->TERR->name.".");
$DATABASE->sql_put("UPDATE ".SUBDB."moves SET mtype=".STAND." WHERE unitid=".$supportid);
$DATABASE->sql_put("UPDATE ".SUBDB."moves SET support = support + 1 WHERE unitid=".$supportedid);
}
// Make remaining 'island' support moves stand.
...
Then in Convoy resolution, add a line right before 373 (unset)
$LastConvoy = cache_TERRITORY($lasttkey)->occupied_by();
...
Finally on line 390 change
support = 1
to
support = $LastConvoy.Support
James; it's an interesting idea, and I always like it when people back their ideas up with code, but it would mean people couldn't specify whether they want to support move the fleet or the unit being convoyed by the fleet, and the move order would say "Support the fleet at sea's move to the coast" and not "Support the convoy", so it would be confusing to new players.
It might work as a temporary fix while getting it right remains unresolved though, I'll take note of it. This would probably get it right most of the time, and as thewonderllama said getting it right most of the time takes far less code than getting it right always.