+ map<string, int> res = s_Units[i->first].resources();
+
+ if (i->second.size() > 0)
+ cerr << endl << i->first << ": ";
+
+ int tick = 0;
+ for (vector<int>::iterator j = i->second.begin(); j != i->second.end(); ++j, ++tick)
+ {
+ int lostunits = fleet(i->first, tick - 1) - fleet(i->first, tick);
+
+ if (lostunits <= 0)
+ continue;
+ cerr << "(" << tick << ":" << fleet(i->first, tick) << ") ";
+ for (map<string, int>::iterator k = res.begin(); k != res.end(); ++k)
+ addResource(k->first, int(lostunits * k->second * 0.25), tick);
+ }
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////
+//
+void Fleet::resetTicks()
+{
+ for (FleetList::iterator i = m_Fleet.begin(); i != m_Fleet.end(); ++i)
+ {
+ if ( i->second.size() < 2)
+ continue;
+
+ int temp = i->second[0];
+ i->second.clear();
+
+ if (temp > 0)
+ i->second.push_back(temp);
+ }
+ resetResources();
+}
+
+//////////////////////////////////////////////////////////////////////////
+//
+int Fleet::freePodGuns(int tick)
+{
+ int guns = 0;
+ for (FleetList::const_iterator i = m_Fleet.begin(); i != m_Fleet.end(); ++i)
+ {
+ if (s_Units[i->first].type() == "Pod")
+ {
+ guns += freeFleet(i->first, tick) * s_Units[i->first].guns();
+ }
+ }
+ guns -= usedPodGuns(tick);
+ return guns;
+}
+
+//////////////////////////////////////////////////////////////////////////
+//
+int Fleet::usedPodGuns(int tick) const
+{
+ int ticks = m_UsedPodGuns.size();
+
+ if (ticks == 0)
+ return 0;
+
+ if (tick < 0)
+ return m_UsedPodGuns[0];
+
+ --ticks;
+
+ if (ticks < tick)
+ return m_UsedPodGuns[ticks];
+
+ return m_UsedPodGuns[tick];
+
+}
+
+//////////////////////////////////////////////////////////////////////////
+//
+void Fleet::usePodGuns(int tick, int guns)
+{
+ int ticks = m_UsedPodGuns.size();
+
+ for (int i = ticks; i <= tick; ++i)
+ {
+ m_UsedPodGuns.push_back(0);
+ }
+ m_UsedPodGuns[tick] += guns;
+}
+
+//////////////////////////////////////////////////////////////////////////
+//
+std::map<std::string, int*> Fleet::findTargets(std::string targetClass,int& total, int attackerType)
+{
+ map<string, int*> targets;
+
+ for (UnitList::iterator i = s_Units.begin(); i != s_Units.end(); ++i)
+ {
+ if (m_Fleet[i->first].size() == 0)
+ continue;
+
+ if (m_Fleet[i->first].size() == 1 )
+ m_Fleet[i->first].push_back(m_Fleet[i->first][0]);
+
+ if (m_Fleet[i->first][1] > 0 && ( targetClass == i->second.unitClass() || targetClass == "All"))
+ {
+ if (i->second.unitClass() == "PDS" && attackerType == 1)
+ continue;
+ targets[i->first] = &m_Fleet[i->first][1];
+ total += m_Fleet[i->first][1];
+ }
+ }
+ return targets;
+}