From: <geo...@us...> - 2009-11-23 13:59:24
|
Revision: 3284 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=3284&view=rev Author: geoffthemedio Date: 2009-11-23 13:59:14 +0000 (Mon, 23 Nov 2009) Log Message: ----------- -Added some safety checks to Empire to prevent some crashes from loading save sent to me by pd -Tweaks to AI scripts to deal with missing homeworlds when cleaning up exploration plans Modified Paths: -------------- trunk/FreeOrion/default/AI/AIstate.py trunk/FreeOrion/default/AI/ExplorationAI.py trunk/FreeOrion/universe/Condition.cpp Modified: trunk/FreeOrion/default/AI/AIstate.py =================================================================== --- trunk/FreeOrion/default/AI/AIstate.py 2009-11-23 13:35:10 UTC (rev 3283) +++ trunk/FreeOrion/default/AI/AIstate.py 2009-11-23 13:59:14 UTC (rev 3284) @@ -256,7 +256,7 @@ self.removeExplorableSystem(AIExplorableSystemType.EXPLORABLE_SYSTEM_UNEXPLORED, systemID) #print " has been explored" continue - if (not universe.systemsConnected(systemID, startSystemID, empireID)): + if (startSystemID == -1 or not universe.systemsConnected(systemID, startSystemID, empireID)): for explorableSystemsType in EnumsAI.getAIExplorableSystemTypes(): self.removeExplorableSystem(explorableSystemsType, systemID) #print " is not connected to system with id: " + str(startSystemID) Modified: trunk/FreeOrion/default/AI/ExplorationAI.py =================================================================== --- trunk/FreeOrion/default/AI/ExplorationAI.py 2009-11-23 13:35:10 UTC (rev 3283) +++ trunk/FreeOrion/default/AI/ExplorationAI.py 2009-11-23 13:59:14 UTC (rev 3284) @@ -37,4 +37,7 @@ universe = fo.getUniverse() homeworld = universe.getPlanet(empire.homeworldID) - return homeworld.systemID + if homeworld: + return homeworld.systemID + + return -1 Modified: trunk/FreeOrion/universe/Condition.cpp =================================================================== --- trunk/FreeOrion/universe/Condition.cpp 2009-11-23 13:35:10 UTC (rev 3283) +++ trunk/FreeOrion/universe/Condition.cpp 2009-11-23 13:59:14 UTC (rev 3284) @@ -1313,11 +1313,11 @@ { if (target->Owners().size() != 1) return false; - Empire* empire = Empires().Lookup(*target->Owners().begin()); - if (m_stockpile == RE_FOOD || m_stockpile == RE_MINERALS || m_stockpile == RE_TRADE) { - double stockpile = empire->ResourceStockpile(m_stockpile); - return (m_low->Eval(source, target) <= stockpile && stockpile <= m_high->Eval(source, target)); - } + if (const Empire* empire = Empires().Lookup(*target->Owners().begin())) + if (m_stockpile == RE_FOOD || m_stockpile == RE_MINERALS || m_stockpile == RE_TRADE) { + double stockpile = empire->ResourceStockpile(m_stockpile); + return (m_low->Eval(source, target) <= stockpile && stockpile <= m_high->Eval(source, target)); + } return false; } @@ -1345,8 +1345,10 @@ { if (target->Owners().size() != 1) return false; - Empire* empire = Empires().Lookup(*target->Owners().begin()); - return empire->TechResearched(m_name); + if (const Empire* empire = Empires().Lookup(*target->Owners().begin())) + return empire->TechResearched(m_name); + else + return false; } /////////////////////////////////////////////////////////// @@ -1712,9 +1714,9 @@ { const EmpireManager& empires = Empires(); for (unsigned int i = 0; i < m_empire_ids.size(); ++i) { - const Empire* empire = empires.Lookup(m_empire_ids[i]->Eval(source, target)); - if (empire->HasExploredSystem(target->ID())) - return true; + if (const Empire* empire = empires.Lookup(m_empire_ids[i]->Eval(source, target))) + if (empire->HasExploredSystem(target->ID())) + return true; } return false; } |