Given 4 points, the distance from A to D is often shorter than the distance from A to D via either B or C, and can be estimated based on the distances from A to B and from A to C. Use this information, when pathfinding on the grid.
Refs #2972, tc2.patch. No teal for now, since that would introduce new strings.
Fixes an assertion due to re-destroying dead structures. Introduced in 4657de6.
(cherry picked from commit 5dc9817) Fixes ticket:3057.
…ore consistent. Reported by Emdek.
Fixes confusion over whether orders were accepted or not. Clicking patrol and circle in the UI now makes the next order a patrol or circle order, even if clicking before the patrol and circle secondary orders are synchronised. Although, patrol and circle really shouldn't be secondary orders, in the first place. Previous behaviour was to just go to the destination without patrolling or circling, on clicking and then giving the order fast when in laggy games.
Added a realTimeAverage() function which returns an integer which is correct on average. Fixes ticket:3082.
…s the building site. More generally, check that the returned pathfinding result is for the correct destination, rather than an old pathfinding job to a previous destination, leading to the droid thinking it was going to the new destination when it really wasn't. Droids were doing pathfinding, and occasionally they would pathfind to a building, which happens to get completed in the same update, so next update they would try to pathfind to the new building in the queue, but receive the path to the completed building. They would then continue to drive into the old building, until arriving at the new building (which never happens). Probably fixes other issues with droids mysteriously going the wrong way. Fixes ticket:3050 again (different bug, but similar symptom).
Apply incendary armour before converting from damage-per-second to damage-per-update, such that incendary armour is now a per-second value, rather than a per-update value. Dropped BASE_OBJECT::inFire, the value of which could be determined from BASE_OBJECT::burnStart. Fixes ticket:3078.
Use gridIterate() instead of checking all droids, structures and features on the map for splash damage. Use gridIterate() instead of checking all droids and structures on the map (except your own) for splash damage. Incendary damage did not affect yourself, and no longer affects allies either. Incendary damage now affects features.
Update the url info and add some logging.
…after you look for a game in the lobby.
Document how it relates to the built events.
add .damageable property to features to tell if they can be destroyed or not.
… and disembark orders.
This is a partial revert of 5eac7e7 since it seems this was the main issue everyone was having while hosting a game. (It would show odd version mismatch errors in the log) A full revert may be needed, more testing of hosting & connecting to games both via lobby and direct IP needed.