112 m_pSE(pSE->GetPlanetSE()),
 
  179         m_srcRoutes.emplace(cur.second.srcPinID, cur.second);
 
  215         if (
sConfig.debug.UseProfiling)
 
  222         std::map<uint32, PI_Pin>::iterator itr;
 
  224             if (cur.second.update) {
 
  227                 cur.second.update = 
false;
 
  228                 if (cur.second.isProcess) {
 
  231                         itr->second.state                   = cur.second.state;
 
  232                         itr->second.cycleTime               = cur.second.cycleTime;
 
  233                         itr->second.installTime             = cur.second.installTime;
 
  234                         itr->second.lastRunTime             = cur.second.lastRunTime;
 
  235                         itr->second.schematicID             = cur.second.schematicID;
 
  236                         itr->second.qtyPerCycle             = cur.second.qtyPerCycle;
 
  237                         itr->second.hasReceivedInputs       = cur.second.hasReceivedInputs;
 
  238                         itr->second.receivedInputsLastCycle = cur.second.receivedInputsLastCycle;
 
  259         if (cur.second.isCommandCenter) {
 
  266         if (cur.second.isProcess) {
 
  269             plant.
state                     = cur.second.state;
 
  283                 if (cur.second.lastRunTime == 0) {
 
  306     std::map<uint32, PI_Pin>::iterator itr;
 
  307     std::map<uint32, PI_Plant>::iterator itr2;
 
  313                 itr->second.state                   = itr2->second.state;
 
  314                 itr->second.cycleTime               = itr2->second.cycleTime;
 
  315                 itr->second.installTime             = itr2->second.installTime;
 
  316                 itr->second.lastRunTime             = itr2->second.lastRunTime;
 
  317                 itr->second.schematicID             = itr2->second.schematicID;
 
  318                 itr->second.qtyPerCycle             = itr2->second.qtyPerCycle;
 
  319                 itr->second.hasReceivedInputs       = itr2->second.hasReceivedInputs;
 
  320                 itr->second.receivedInputsLastCycle = itr2->second.receivedInputsLastCycle;
 
  327                 itr->second.state                   = cur.second.state;
 
  328                 itr->second.cycleTime               = cur.second.cycleTime;
 
  329                 itr->second.installTime             = cur.second.installTime;
 
  330                 itr->second.lastRunTime             = cur.second.lastRunTime;
 
  331                 itr->second.schematicID             = cur.second.schematicID;
 
  332                 itr->second.qtyPerCycle             = cur.second.qtyPerCycle;
 
  333                 itr->second.hasReceivedInputs       = cur.second.hasReceivedInputs;
 
  334                 itr->second.receivedInputsLastCycle = cur.second.receivedInputsLastCycle;
 
  474     _log(COLONY__INFO, 
"Colony::CreatePin() - Created pin for %s(%u)", iRef->
name(), iRef->
itemID());
 
  479         std::map<uint8, uint32>::iterator itr = 
tempPinIDs.find(src);
 
  484         std::map<uint8, uint32>::iterator itr = 
tempPinIDs.find(dest);
 
  502     _log(COLONY__INFO, 
"Colony::CreateLink() - Created link - id:%u,  src:%u, dest:%u, level:%u", iRef->itemID(), src, dest, level);
 
  507     std::list<uint32> list1;
 
  509     for (
size_t i = 0; i < path->
size(); ++i) {
 
  515             _log(COLONY__ERROR, 
"Colony::CreateRoute() - List item type unrecognized: %s", path->
GetItem(1)->
TypeString());
 
  520         std::list<uint32> list2;
 
  522         std::map<uint8, uint32>::iterator itr;
 
  523         for (
auto cur : list1) {
 
  527                     list2.push_back(itr->second);
 
  529                 list2.push_back(cur);
 
  551     _log(COLONY__INFO, 
"Colony::CreateRoute() - Created route id %u for %u of typeID %u, making %u hops.", routeID, qty, typeID, (
uint32)path->
size() -1);
 
  560     std::map<uint16, uint32>::iterator itr = srcPin->second.contents.find(route.
commodityTypeID);
 
  561     if (itr == srcPin->second.contents.end())
 
  566     if (itr->second > amount) {
 
  567         itr->second -= amount;
 
  569         amount = itr->second;
 
  570         srcPin->second.contents.erase(itr);
 
  572     srcPin->second.update = 
true;
 
  576     if (itr != destPin->second.contents.end()) {
 
  577         itr->second += amount;
 
  581     destPin->second.update = 
true;
 
  583     if (destPin->second.isProcess) {
 
  584         std::map<uint32, PI_Plant>::iterator plantPin = 
ccPin->
plants.find(destPin->first);
 
  586             plantPin->second.hasReceivedInputs = 
true;
 
  593     std::map<uint32, PI_Pin>::iterator itr = 
ccPin->
pins.find(pinID);
 
  595         itr->second.level = level;
 
  597         _log(COLONY__INFO, 
"Colony::UpgradeCommandCenter() - Upgraded Command Center %u to level:%u", pinID, level);
 
  599         _log(COLONY__ERROR, 
"Colony::UpgradeCommandCenter() - pinID %u not found in ccPin.pins map", pinID);
 
  605     std::map<uint32, PI_Link>::iterator itr = 
ccPin->
links.begin();
 
  607         if (itr->second.endpoint1 == src)
 
  608             if (itr->second.endpoint2 == dest) {
 
  609                 itr->second.level = level;
 
  617     uint8 linkCount = 0, routeCount = 0, pathCount = 0;
 
  619     std::map<uint32, PI_Link>::iterator itr = 
ccPin->
links.begin();
 
  621         if (itr->second.endpoint1 == pinID) {
 
  627         if (itr->second.endpoint2 == pinID) {
 
  637     std::map<uint16, PI_Route>::iterator rItr = 
ccPin->
routes.begin();
 
  644         if (rItr->second.srcPinID == pinID) {
 
  650         if (rItr->second.destPinID == pinID) {
 
  657         std::list<uint32>::iterator pItr = rItr->second.path.begin();
 
  658         while (pItr != rItr->second.path.end()) {
 
  660             if (*pItr == pinID) {
 
  662                 pItr = rItr->second.path.erase(pItr);
 
  680     _log(COLONY__INFO, 
"Colony::RemovePin() - Removed pin %u with %u routes and %u links.  Upset %u routes by removing this pin", \
 
  681                             pinID, routeCount, linkCount, pathCount);
 
  686     std::map<uint32, PI_Link>::iterator itr = 
ccPin->
links.begin();
 
  688         if (itr->second.endpoint1 == src)
 
  689             if (itr->second.endpoint2 == dest) {
 
  690                 _log(COLONY__INFO, 
"Colony::RemoveLink() - Removing linkID %u - src: %u, dest: %u", itr->first, src, dest);
 
  699     std::map<uint16, PI_Route>::iterator routeItr = 
ccPin->
routes.find(routeID);
 
  704     _log(COLONY__INFO, 
"Colony::RemoveRoute() - Removed route: %u", routeID);
 
  709     std::map<uint32, PI_Pin>::iterator itr = 
ccPin->
pins.find(ecuID);
 
  714             head.
typeID = itr->second.schematicID;
 
  718         itr->second.heads[headID] = head;
 
  720         _log(COLONY__ERROR, 
"Colony::AddExtractorHead() - ecuID %u not found in ccPin.pins map", ecuID);
 
  726     std::map<uint32, PI_Pin>::iterator itr = 
ccPin->
pins.find(ecuID);
 
  728         std::map<uint16, PI_Heads>::iterator head = itr->second.heads.find(headID);
 
  729         if (head != itr->second.heads.end()) {
 
  733             head->second.latitude = latitude;
 
  734             head->second.longitude = longitude;
 
  736             _log(COLONY__ERROR, 
"Colony::MoveExtractorHead() - headID %u not found in pin.heads map", headID);
 
  739         _log(COLONY__ERROR, 
"Colony::MoveExtractorHead() - ecuID %u not found in ccPin.pins map", ecuID);
 
  745     std::map<uint32, PI_Pin>::iterator itr = 
ccPin->
pins.find(ecuID);
 
  747         itr->second.heads.erase(headID);
 
  749         _log(COLONY__ERROR, 
"Colony::KillExtractorHead() - ecuID %u not found in ccPin.pins map", ecuID);
 
  756         std::map<uint8, uint32>::iterator itr = 
tempPinIDs.find(pinID);
 
  761     std::map<uint32, PI_Plant>::iterator itr = 
ccPin->
plants.find(pinID);
 
  763         _log(COLONY__ERROR, 
"Colony::SetSchematic() - plantID %u not found in ccPin.plants map", pinID);
 
  767         sPIDataMgr.GetSchematicData(schematicID, itr->second.data);
 
  769         itr->second.pLevel                  = 
sPIDataMgr.GetProductLevel(itr->second.data.outputType);
 
  772         itr->second.qtyPerCycle             = itr->second.data.outputQty;
 
  773         itr->second.schematicID             = schematicID;
 
  774         itr->second.lastRunTime             = 0;
 
  775         itr->second.hasReceivedInputs       = 
false;
 
  776         itr->second.receivedInputsLastCycle = 
false;
 
  783         _log(COLONY__INFO, 
"Colony::SetSchematic() - Set Schematic %u in plantID %u", schematicID, pinID);
 
  788         _log(COLONY__INFO, 
"Colony::SetSchematic() - Cleared Schematic from plantID %u", pinID);
 
  802     std::map<uint32, PI_Pin>::iterator itr = 
ccPin->
pins.find(ecuID);
 
  804         _log(COLONY__ERROR, 
"Colony::InstallProgram() - ecuPinID %u not found in ccPin.pins map", ecuID);
 
  814     if (itr->second.programType != typeID) {
 
  816         _log(COLONY__ERROR, 
"Colony::InstallProgram() - typeID %u does not match previously saved program.  *edit*  not sure wtf that means now.", typeID);
 
  821     itr->second.headRadius = headRadius;
 
  826     for (
auto cur : itr->second.heads)
 
  829     sPIDataMgr.GetProgramResultInfo(
this, ecuID, typeID, list, headRadius);
 
  834     std::map<uint32, PI_Pin>::iterator itr = 
ccPin->
pins.find(ecuID);
 
  836         _log(COLONY__ERROR, 
"Colony::SetProgramResults() - ecuPinID %u not found in ccPin.pins map", ecuID);
 
  841     itr->second.programType = typeID;
 
  842     itr->second.expiryTime = (cycleTime * numCycles) * EvE::Time::Hour + 
GetFileTimeNow();
 
  843     itr->second.headRadius = headRadius;
 
  844     itr->second.qtyPerCycle = qtyPerCycle;
 
  866     std::map<uint32, PI_Pin>::iterator src = 
ccPin->
pins.find(srcID);
 
  868         _log(COLONY__ERROR, 
"Colony::TransferCommodities() - srcPin %u not found in ccPin.pins map", srcID);
 
  873     std::map<uint32, PI_Pin>::iterator dest = 
ccPin->
pins.find(destID);
 
  875         _log(COLONY__ERROR, 
"Colony::TransferCommodities() - destPin %u not found in ccPin.pins map", destID);
 
  889     for (
auto cur : items) {
 
  890         std::map<uint16, uint32>::iterator srcItr = src->second.contents.find(cur.first), destItr = dest->second.contents.find(cur.first);
 
  891         if (srcItr != src->second.contents.end()) {
 
  892             if (srcItr->second > cur.second) {
 
  893                 srcItr->second -= cur.second;
 
  895                 src->second.contents.erase(srcItr);
 
  898         if (destItr != dest->second.contents.end()) {
 
  899             destItr->second += cur.second;
 
  901             dest->second.contents[cur.first] = cur.second;
 
  916     src->second.lastRunTime = 0; 
 
  931     std::map<uint32, PI_Pin>::iterator pin = 
ccPin->
pins.find(pinID);
 
  933         _log(COLONY__ERROR, 
"Colony::LaunchCommodities() - pinID %u not found in ccPin.pins map", pinID);
 
  947                     "PI Commodities Container",
 
  951     if (contRef.get() == 
nullptr) {
 
  964     contRef->SetMySE(cSE);      
 
  966     pSysMgr->AddEntity(cSE);
 
  976     for (
auto cur : items) {
 
  977         std::map<uint16, uint32>::iterator cont = pin->second.contents.find(cur.first);
 
  978         if (cont != pin->second.contents.end()) {
 
  979             if (cont->second > cur.second) {
 
  980                 cont->second -= cur.second;
 
  982                 pin->second.contents.erase(cont);
 
  985             _log(COLONY__WARNING, 
"Colony::LaunchCommodities() - item %u not found in command center", cur.first);
 
  989         switch (
sPIDataMgr.GetProductLevel(cur.first)) {
 
  990             case 0:     cost += (    0.15 * cur.second);    
break;
 
  991             case 1:     cost += (    1.14 * cur.second);    
break;
 
  992             case 2:     cost += (   13.50 * cur.second);    
break;
 
  993             case 3:     cost += (  900.00 * cur.second);    
break;
 
  994             case 4:     cost += (75000.00 * cur.second);    
break;
 
  998         if (iRef.get() == 
nullptr)
 
 1001         if (contRef->GetMyInventory()->HasAvailableSpace(flagNone, iRef)) {
 
 1002             iRef->Move(cSE->
GetID());
 
 1006             _log(COLONY__WARNING, 
"%s: PI Commodity Container %u is full.", 
m_client->
GetName(), contRef->itemID());
 
 1014             _log(COLONY__TRACE, 
"Colony::LaunchCommodities() - Launched %u items from command center %u to %s (%u)", \
 
 1015                         count, 
m_colonyID, contRef->name(), contRef->itemID() );
 
 1017     contRef->SaveItem();
 
 1033         std::string reason = 
"DESC:  Launching PI items from ";
 
 1045     return new PyLong(pin->second.lastLaunchTime);
 
 1048 void Colony::PlanetXfer(
uint32 spaceportID, std::map< uint32, uint16 > importItems, std::map< uint32, uint16 > exportItems, 
double taxRate)
 
 1053     std::map<uint32, PI_Pin>::iterator pin = 
ccPin->
pins.find(spaceportID);
 
 1055         _log(COLONY__ERROR, 
"Colony::PlanetXfer() - pinID %u not found in ccPin.pins map", spaceportID);
 
 1069     uint8 toColony = 0, fromColony = 0;
 
 1072     std::map<uint16, uint32>::iterator itr;
 
 1074     for (
auto cur : importItems) {
 
 1077         if (iRef.
get() == 
nullptr) {
 
 1078             _log(COLONY__ERROR, 
"Colony::PlanetXfer():import - itemRef for id %u not found in ItemFactory", cur.first);
 
 1082         itr = pin->second.contents.find(iRef->
typeID());
 
 1086         if (itr != pin->second.contents.end()) {
 
 1087             itr->second += cur.second;
 
 1089             pin->second.contents[iRef->
typeID()] = cur.second;
 
 1093             case 0:     cost += (    0.05 * cur.second);    
break;
 
 1094             case 1:     cost += (    0.38 * cur.second);    
break;
 
 1095             case 2:     cost += (    4.50 * cur.second);    
break;
 
 1096             case 3:     cost += (  300.00 * cur.second);    
break;
 
 1097             case 4:     cost += (25000.00 * cur.second);    
break;
 
 1105             _log(COLONY__TRACE, 
"Colony::PlanetXfer() - Imported %u items from customs office %u to spaceport %u", \
 
 1110         std::string reason = 
"DESC:  Importing items to ";
 
 1125     for (
auto cur : exportItems) {
 
 1126         std::map<uint16, uint32>::iterator cont = pin->second.contents.find(cur.first);
 
 1127         if (cont != pin->second.contents.end()) {
 
 1128             if (cont->second > cur.second) {
 
 1129                 cont->second -= cur.second;
 
 1132                 cur.second = cont->second;
 
 1133                 pin->second.contents.erase(cont);   
 
 1136             _log(COLONY__WARNING, 
"Colony::PlanetXfer():export - item %u not found in spaceport", cur.first);
 
 1140         switch (
sPIDataMgr.GetProductLevel(cur.first)) {
 
 1141             case 0:     cost += (    0.10 * cur.second);    
break;
 
 1142             case 1:     cost += (    0.76 * cur.second);    
break;
 
 1143             case 2:     cost += (    9.00 * cur.second);    
break;
 
 1144             case 3:     cost += (  600.00 * cur.second);    
break;
 
 1145             case 4:     cost += (50000.00 * cur.second);    
break;
 
 1156             _log(COLONY__TRACE, 
"Colony::PlanetXfer() - Exported %u items from spaceport %u to customs office %u", \
 
 1161         std::string reason = 
"DESC:  Exporting items from ";
 
 1198     std::map<uint16, PI_Route>::iterator itr = 
ccPin->
routes.find(routeID);
 
 1200         itr->second.priority = priority;
 
 1215         dict->
SetItem(
"ownerID", 
new PyInt(cur.second.ownerID));
 
 1218         dict->
SetItem(
"lastRunTime", (cur.second.lastRunTime > 0 ? 
new PyLong(cur.second.lastRunTime) : 
PyStatic.NewNone()));
 
 1224         if (cur.second.isStorage)
 
 1225             for (
auto cur2 : cur.second.contents)
 
 1227         dict->
SetItem(
"contents", contents);
 
 1229         if (cur.second.isLaunchable)
 
 1230             dict->
SetItem(
"lastLaunchTime", (cur.second.lastLaunchTime > 0 ? 
new PyLong(cur.second.lastLaunchTime) : 
PyStatic.NewNone()));
 
 1232         if (cur.second.isProcess)
 
 1233             if (cur.second.schematicID) {
 
 1234                 dict->
SetItem(
"schematicID", 
new PyInt(cur.second.schematicID));
 
 1235                 std::map<uint32, PI_Plant>::iterator plantPin = 
ccPin->
plants.find(cur.first);
 
 1237                     dict->
SetItem(
"cycleTime", 
new PyLong(plantPin->second.cycleTime));
 
 1238                     dict->
SetItem(
"hasReceivedInputs", 
new PyBool(plantPin->second.hasReceivedInputs));
 
 1239                     dict->
SetItem(
"receivedInputsLastCycle", 
new PyBool(plantPin->second.receivedInputsLastCycle));
 
 1251         if (cur.second.isECU) {
 
 1252             if (cur.second.installTime > 0) {
 
 1254                 dict->
SetItem(
"expiryTime", 
new PyLong(cur.second.expiryTime));
 
 1256                 dict->
SetItem(
"installTime", 
new PyLong(cur.second.installTime));
 
 1257                 dict->
SetItem(
"programType", 
new PyInt(cur.second.programType));
 
 1258                 dict->
SetItem(
"qtyPerCycle", 
new PyInt(cur.second.qtyPerCycle));
 
 1262             for (
auto head : cur.second.heads) {
 
 1284             dict->
SetItem(
"endpoint1", 
new PyInt(cur.second.endpoint1));
 
 1285             dict->
SetItem(
"endpoint2", 
new PyInt(cur.second.endpoint2));
 
 1301             dict->
SetItem(
"commodityTypeID", 
new PyInt(cur.second.commodityTypeID));
 
 1302             dict->
SetItem(
"commodityQuantity", 
new PyInt(cur.second.commodityQuantity));
 
 1305         for (
auto cur2 : cur.second.path)                               
 
 1317             std::map<uint32, PI_Pin>::iterator itr = 
ccPin->
pins.find(cur);
 
 1321                 _log(COLONY__ERROR, 
"Colony::GetColony()::SaveHeads() - headID %u not found in ccPin.pins map", cur);
 
 1339         _log(COLONY__GC_DUMP, 
"Colony::GetColony() Dump");
 
 1340         res->
Dump(COLONY__GC_DUMP, 
"    ");
 
 1380     _log(COLONY__INFO, 
"Colony::Update() - Update completed in %.3fus with %u links, %u pins, %u plants, and %u routes (s:%u, d:%u) ", \
 
 1388     uint16 cycles = 0, quantity = 0, amount = 0, count = 0;
 
 1389     std::map<uint16, uint32>::iterator itemItr;
 
 1390     std::map<uint32, PI_Pin>::iterator destPin;
 
 1391     std::map<uint32, PI_Plant>::iterator plant;
 
 1393         if (!ecu.second.isECU)
 
 1398                 _log(COLONY__DEBUG, 
"Colony::ProcessECUs() - expiryTime (%li) > m_procTime (%li).", \
 
 1402         if (ecu.second.cycleTime < 0.0f) {
 
 1404                 _log(COLONY__DEBUG, 
"Colony::ProcessECUs() - cycleTime < 0.");
 
 1409             ecu.second.lastRunTime = ecu.second.expiryTime - ecu.second.cycleTime;
 
 1431             _log(COLONY__DEBUG, 
"Colony::ProcessECUs() - ECU pin %u - begin processing with %u cycles (%0.2f / %0.2f)", \
 
 1433         auto destRouteItr = 
m_destRoutes.equal_range(plant->first);
 
 1434         for (
auto it = destRouteItr.first; it != destRouteItr.second; ++it) {
 
 1443                 _log(COLONY__ERROR, 
"Colony::ProcessECUs() - Dest pinID %u not found in ccPin.pins map", it->first);
 
 1448             quantity = it->second.commodityQuantity;
 
 1455             itemItr = destPin->second.contents.find(it->second.commodityTypeID);
 
 1459             if (itemItr != destPin->second.contents.end()) {
 
 1460                 itemItr->second += amount;
 
 1462                 destPin->second.contents[it->second.commodityTypeID] = amount;
 
 1465                 _log(COLONY__DEBUG, 
"Colony::ProcessECUs() - Dest pinID %u updated with %u %s (%u).", \
 
 1466                         it->second.destPinID, amount, 
sPIDataMgr.GetProductName(it->second.commodityTypeID), it->second.commodityTypeID);
 
 1470             destPin->second.update = 
true;
 
 1473             if (destPin->second.isProcess) {
 
 1477                     _log(COLONY__ERROR, 
"Colony::ProcessECUs() - Plant pinID %u not found in ccPin.plants map", destPin->first);
 
 1481                 plant->second.hasReceivedInputs = 
true;
 
 1483                     _log(COLONY__DEBUG, 
"Colony::ProcessECUs() - Dest pinID %u isPlant.", it->second.destPinID);
 
 1489         ecu.second.expiryTime = ecu.second.lastRunTime + ecu.second.cycleTime * cycles;
 
 1491         ecu.second.lastRunTime = ecu.second.expiryTime;
 
 1495             _log(COLONY__DEBUG, 
"Colony::ProcessECUs() - Processing complete.  timeNow %li, expiryTime %li, lastRunTime %li", \
 
 1496                     GetFileTimeNow(), ecu.second.expiryTime, ecu.second.lastRunTime);
 
 1524     int32 cycles = 0, cycles2 = 0, amount = 0, divisor = 0, delta = 0;
 
 1525     std::map<uint32, PI_Pin>::iterator srcPin;
 
 1526     std::map<uint32, PI_Pin>::iterator destPin;
 
 1527     std::map<uint16, uint32>::iterator itemItr;
 
 1528     std::map<uint32, PI_Plant>::iterator destPlant;
 
 1529     _log(COLONY__INFO, 
"Colony::ProcessPlants() - Begin Plant Processing.  m_procTime: %li", 
m_procTime);
 
 1530     while (curCycle < 5) {
 
 1532             _log(COLONY__DEBUG, 
"Colony::ProcessPlants() - Begin Process loop for pLevel %u.", curCycle);
 
 1536         auto cycleItr = 
m_plantMap.equal_range(curCycle);
 
 1537         for (
auto it = cycleItr.first; it != cycleItr.second; ++it) {
 
 1538             _log(COLONY__INFO, 
"Colony::ProcessPlants() - Begin Processing for Plant %u", it->second);
 
 1541             std::map<uint32, PI_Plant>::iterator plant = 
ccPin->
plants.find(it->second);
 
 1543                 _log(COLONY__ERROR, 
"Colony::ProcessPlants() - Plant %u not found in ccPin.pins map", it->second);
 
 1550             if (plant->second.schematicID == 0) {
 
 1551                 _log(COLONY__WARNING, 
"Colony::ProcessPlants() - No schematic installed in plant %u.", it->second);
 
 1552                 plant->second.hasReceivedInputs = 
false;
 
 1553                 plant->second.receivedInputsLastCycle = 
false;
 
 1574             if (plant->second.lastRunTime >= 
m_procTime) {
 
 1576                     _log(COLONY__DEBUG, 
"Colony::ProcessPlants() - lastRunTime (%li) >= m_procTime (%li).", \
 
 1582                 _log(COLONY__DEBUG, 
"Colony::ProcessPlants() - last run time %li.", plant->second.lastRunTime);
 
 1585             delta = (
m_procTime - plant->second.lastRunTime)  / EvE::Time::Second;
 
 1588                 if (delta < divisor) {
 
 1591                         plant->second.lastRunTime -= plant->second.cycleTime;
 
 1594                             _log(COLONY__DEBUG, 
"Colony::ProcessPlants() - cycle incomplete (%i < %i).", delta, divisor);
 
 1600                     _log(COLONY__DEBUG, 
"Colony::ProcessPlants() - divisor < 0 (%i).", divisor);
 
 1604             cycles = delta / divisor;
 
 1606                 _log(COLONY__DEBUG, 
"Colony::ProcessPlants() - current cycle count is %i (%i / %i).", \
 
 1607                             cycles, delta, divisor);
 
 1610                 _log(COLONY__WARNING, 
"Colony::ProcessPlants() - Cycle count < 1");
 
 1616             _log(COLONY__INFO, 
"Colony::ProcessPlants() - Begin Input Route loop for Plant %u.", plant->first);
 
 1617             auto destRouteItr = 
m_destRoutes.equal_range(plant->first);
 
 1618             for (
auto it = destRouteItr.first; it != destRouteItr.second; ++it) {
 
 1636                 srcPin = 
ccPin->
pins.find(it->second.srcPinID);
 
 1638                     _log(COLONY__ERROR, 
"Colony::ProcessPlants() - Source %u not found in ccPin.pins map", it->second.srcPinID);
 
 1640                     plant->second.hasReceivedInputs = 
false;
 
 1641                     plant->second.receivedInputsLastCycle = 
false;
 
 1646                 if (!srcPin->second.isStorage)
 
 1649                 itemItr = srcPin->second.contents.find(it->second.commodityTypeID);
 
 1650                 if (itemItr == srcPin->second.contents.end()) {
 
 1652                         _log(COLONY__DEBUG, 
"Colony::ProcessPlants() - Routed Commodity %s (%u) not found in Source Inventory.", \
 
 1653                                 sPIDataMgr.GetProductName(it->second.commodityTypeID), it->second.commodityTypeID);
 
 1658                 amount = it->second.commodityQuantity * cycles;
 
 1659                 if (itemItr->second > amount) {
 
 1660                     itemItr->second -= amount;
 
 1662                     amount = itemItr->second;
 
 1663                     srcPin->second.contents.erase(itemItr);
 
 1666                     _log(COLONY__DEBUG, 
"Colony::ProcessPlants() - Removed %i %s (%u) from src %u.", \
 
 1667                             amount, 
sPIDataMgr.GetProductName(it->second.commodityTypeID), it->second.commodityTypeID, srcPin->first);
 
 1670                 srcPin->second.update = 
true;
 
 1673                 destPin = 
ccPin->
pins.find(plant->first);
 
 1675                     _log(COLONY__ERROR, 
"Colony::ProcessPlants() - Pin %u not found in ccPin.pins map for this plant.", plant->first);
 
 1677                     plant->second.hasReceivedInputs = 
false;
 
 1678                     plant->second.receivedInputsLastCycle = 
false;
 
 1682                 itemItr = destPin->second.contents.find(it->second.commodityTypeID);
 
 1683                 if (itemItr != destPin->second.contents.end()) {
 
 1684                     itemItr->second += amount;
 
 1686                     destPin->second.contents[it->second.commodityTypeID] = amount;
 
 1688                 destPin->second.update = 
true;
 
 1691                 plant->second.hasReceivedInputs = 
true;
 
 1694                     _log(COLONY__DEBUG, 
"Colony::ProcessPlants() - Added %i %s (%u) to Plant Inventory.", \
 
 1695                             amount, 
sPIDataMgr.GetProductName(it->second.commodityTypeID), it->second.commodityTypeID);
 
 1701             _log(COLONY__INFO, 
"Colony::ProcessPlants() - %s Input Check loop for Plant %u.", plant->second.hasReceivedInputs ? 
"Begin" : 
"Skipping", plant->first);
 
 1703                 _log(COLONY__DEBUG, 
"Colony::ProcessPlants() - Plant %u processing inputs.", plant->first);
 
 1705             destPin = 
ccPin->
pins.find(plant->first);
 
 1707                 _log(COLONY__ERROR, 
"Colony::ProcessPlants() - Dest %u not found in ccPin.pins map", plant->first);
 
 1711             plant->second.receivedInputsLastCycle = 
false;
 
 1713             if (plant->second.hasReceivedInputs) {
 
 1724                 if (plant->second.data.inputs.empty()) {
 
 1725                     _log(COLONY__WARNING, 
"Colony::ProcessPlants() - Empty input map");
 
 1726                     plant->second.hasReceivedInputs = 
false;
 
 1731                 uint16 tempCycles = cycles;
 
 1732                 for (
auto mats : plant->second.data.inputs) {
 
 1734                     itemItr = destPin->second.contents.find(mats.first);
 
 1735                     if (itemItr == destPin->second.contents.end()) {
 
 1737                             _log(COLONY__DEBUG, 
"Colony::ProcessPlants() - %s (%u) not found in Plant Inventory.", \
 
 1738                                 sPIDataMgr.GetProductName(mats.first), mats.first);
 
 1745                     if (itemItr->second >= mats.second * cycles) {
 
 1746                         itemItr->second -= mats.second * cycles;
 
 1747                         plant->second.receivedInputsLastCycle = 
true;
 
 1752                             _log(COLONY__DEBUG, 
"Colony::ProcessPlants() - Not enough %s (%u) for %i cycles.  Need %u, Have %u", \
 
 1753                                     sPIDataMgr.GetProductName(mats.first), mats.first, cycles, mats.second * cycles, itemItr->second);
 
 1754                         cycles2 = itemItr->second / mats.second;
 
 1756                             itemItr->second -= mats.second * cycles2;
 
 1757                             plant->second.receivedInputsLastCycle = 
true;
 
 1759                                 _log(COLONY__DEBUG, 
"Colony::ProcessPlants() - Have enough material for %i cycles.", cycles2);
 
 1768                     if (tempCycles > cycles2)
 
 1769                         tempCycles = cycles2;
 
 1773                 if (cycles > tempCycles)
 
 1774                     cycles = tempCycles;    
 
 1783             _log(COLONY__INFO, 
"Colony::ProcessPlants() - %s manufacturing loop for Plant %u.", plant->second.receivedInputsLastCycle ? 
"Begin" : 
"Skipping", plant->first);
 
 1784             if (plant->second.receivedInputsLastCycle and (cycles > 0)) {
 
 1790                     _log(COLONY__DEBUG, 
"Colony::ProcessPlants() - Updating timers for %i cycles using current inventory.", cycles);
 
 1796                     _log(COLONY__DEBUG, 
"Colony::ProcessPlants() - Received Inputs.  timeNow %li, lastRunTime %li", \
 
 1803             _log(COLONY__INFO, 
"Colony::ProcessPlants() - %s Output Routing loop for Plant %u.", cycles > 0 ? 
"Begin" : 
"Skipping", plant->first);
 
 1806                 destPin->second.update = 
true;
 
 1807                 auto srcRouteItr = 
m_srcRoutes.equal_range(plant->first);
 
 1808                 for (
auto it = srcRouteItr.first; it != srcRouteItr.second; ++it) {
 
 1813                     destPin= 
ccPin->
pins.find(it->second.destPinID);
 
 1815                         _log(COLONY__ERROR, 
"Colony::ProcessPlants() - Dest %u not found in ccPin.pins map", it->second.destPinID);
 
 1820                     amount = it->second.commodityQuantity * cycles;
 
 1821                     itemItr = destPin->second.contents.find(it->second.commodityTypeID);
 
 1822                     if (itemItr != destPin->second.contents.end()) {
 
 1823                         itemItr->second += amount;
 
 1825                         destPin->second.contents[it->second.commodityTypeID] = amount;
 
 1828                         _log(COLONY__DEBUG, 
"Colony::ProcessPlants() - Added %u %s (%u) to Dest %u.", \
 
 1829                                 amount, 
sPIDataMgr.GetProductName(it->second.commodityTypeID), it->second.commodityTypeID, it->second.destPinID);
 
 1831                     if (destPin->second.isStorage) {
 
 1834                     } 
else if (destPin->second.isProcess) {
 
 1839                             _log(COLONY__ERROR, 
"Colony::ProcessPlants() - Dest %u not found in ccPin.plants map", destPin->first);
 
 1843                         destPlant->second.hasReceivedInputs = 
true;
 
 1846                     destPin->second.update = 
true;
 
 1847                     plant->second.hasReceivedInputs = 
false;
 
 1850                 plant->second.lastRunTime += plant->second.cycleTime * cycles;
 
 1854                 plant->second.hasReceivedInputs = 
false;
 
 1855                 plant->second.receivedInputsLastCycle = 
false;
 
 1859             _log(COLONY__DEBUG, 
"Colony::ProcessPlants() - Process loop complete for pLevel %u.", curCycle);
 
bool SetQuantity(int32 qty, bool notify=false, bool deleteOnZero=true)
 
std::map< uint32, PI_Pin > pins
 
std::map< uint16, PI_Route > routes
 
#define sConfig
A macro for easier access to the singleton. 
 
void UpdatePlanetPins(uint32 ccPinID, uint8 pins=1)
 
void SavePins(PI_CCPin *ccPin)
 
void UpdatePins(uint32 pinID, PI_CCPin *ccPin)
 
void SendErrorMsg(const char *fmt,...)
 
void PlanetXfer(uint32 spaceportID, std::map< uint32, uint16 > importItems, std::map< uint32, uint16 > exportItems, double taxRate)
 
#define _log(type, fmt,...)
 
void SaveCommandCenter(uint32 pinID, uint32 charID, uint32 planetID, uint32 typeID, double latitude, double longitude)
 
PyRep * GetItem(size_t index) const 
Returns Python object. 
 
void KillExtractorHead(uint32 ecuID, uint16 headID)
 
void SaveLaunch(uint32 contID, uint32 charID, uint32 systemID, uint32 planetID, GPoint &pos)
 
void SaveHeads(uint32 ccPinID, uint32 ownerID, uint32 ecuID, std::map< uint16, PI_Heads > &heads)
 
double min(double x, double y)
 
void ProcessPlants(bool &save)
 
#define IsTempPinID(pinID)
 
void CreatePin(uint32 groupID, uint32 pinID, uint32 typeID, double latitude, double longitude)
 
CustomsSE * GetCustomsOffice()
 
uint16 SaveRoute(uint32 ccPinID, PI_Route &route)
 
Python floating point number. 
 
int32 GetCharacterID() const 
 
int32 GetWarFactionID() const 
 
void UpdateECUPin(uint32 pinID, PI_CCPin *ccPin)
 
int32 GetCorporationID() const 
 
void RemoveRoute(uint16 routeID)
 
void AddExtractorHead(uint32 ecuID, uint16 headID, double latitude, double longitude)
 
Advanced version of UserError that allows to send a full custom message. 
 
bool LoadColony(uint32 charID, uint32 planetID, PI_CCPin *ccPin)
 
void Dump(FILE *into, const char *pfx) const 
Dumps object to file. 
 
void RemoveContents(uint32 pinID)
 
int32 GetAllianceID() const 
 
void Move(uint32 new_location=locTemp, EVEItemFlags flag=flagNone, bool notify=false)
 
void LoadRoutes(uint32 ccPinID, std::map< uint16, PI_Route > &routes)
 
void SafeDelete(T *&p)
Deletes and nullifies a pointer. 
 
PyRep * GetItem(size_t index) const 
Returns Python object. 
 
std::map< uint32, PI_Plant > plants
 
void Update(bool updateTimes=false)
 
void UpdatePlantPins(uint32 pinID=0)
 
#define is_log_enabled(type)
 
SystemManager * SystemMgr()
 
PyRep * LaunchCommodities(uint32 pinID, std::map< uint16, uint32 > &items)
 
void RemoveLink(uint32 src, uint32 dest)
 
std::map< uint8, uint32 > tempPinIDs
 
void SaveRoutes(PI_CCPin *ccPin)
 
void SetItem(size_t index, PyRep *object)
Stores Python object. 
 
std::multimap< uint32, PI_Route > m_destRoutes
 
void CreateRoute(uint16 routeID, uint32 typeID, uint32 qty, PyList *path)
 
static void TranserFunds(uint32 fromID, uint32 toID, double amount, std::string reason="", uint8 entryTypeID=Journal::EntryType::Undefined, uint32 referenceID=0, uint16 fromKey=Account::KeyType::Cash, uint16 toKey=Account::KeyType::Cash, Client *pClient=nullptr)
 
void CreateLink(uint32 src, uint32 dest, uint16 level)
 
void InstallProgram(uint32 ecuID, uint16 typeID, float headRadius, PlanetMgr *pPMgr)
 
PyDict * TransferCommodities(uint32 srcID, uint32 destID, std::map< uint16, uint32 > items)
 
void CreateCommandPin(uint32 itemID, uint32 typeID, double latitude, double longitude)
 
void LoadPins(uint32 ccPinID, std::map< uint32, PI_Pin > &pins)
 
bool Check(bool reset=true)
 
ShipItemRef GetShip() const 
 
const char * GetName() const 
 
const char * GetName() const 
 
void SaveContents(PI_CCPin *ccPin)
 
void SaveLinks(PI_CCPin *ccPin)
 
bool ChangeSingleton(bool singleton, bool notify=false)
 
std::map< uint32, PI_Link > links
 
std::vector< uint32 > tempECUs
 
void RemovePin(uint32 pinID)
 
void DeleteColony(uint32 ccPinID, uint32 planetID, uint32 charID)
 
void RemoveRoute(uint16 routeID)
 
void ProcessECUs(bool &save)
 
void MoveExtractorHead(uint32 ecuID, uint16 headID, double latitude, double longitude)
 
void UpgradeCommandCenter(uint32 pinID, int8 level)
 
EvilNumber GetAttribute(const uint16 attrID) const 
 
void AddPlanetForChar(uint32 solarSystemID, uint32 planetID, uint32 charID, uint32 ccPinID, uint16 typeID)
 
typeID Spawn an NPC with the specified type text Search for items matching the specified query() type()() itemID() copy() materialLevel()() itemID(attributeID)-Retrieves attribute value." ) COMMAND( setattr
 
virtual void RemoveItem(InventoryItemRef iRef)
 
void SetSchematic(uint32 pinID, uint8 schematicID=0)
 
void RemoveLink(uint32 linkID)
 
void SavePinContents(uint32 ccPinID, uint32 pinID, std::map< uint16, uint32 > &contents)
 
bool receivedInputsLastCycle
 
void SaveCCLevel(uint32 pinID, uint8 level)
 
std::multimap< uint32, PI_Route > m_srcRoutes
 
static int64 IntegerValue(PyRep *pRep)
 
Colony(PyServiceMgr *mgr, Client *pClient, SystemEntity *pSE)
 
void PrioritizeRoute(uint16 routeID, uint8 priority)
 
void MakeRandomPointOnSphere(double radius)
 
std::multimap< uint8, uint32 > m_plantMap
 
void RemovePin(uint32 pinID)
 
entityID heal the character with the entityID note giving you detailed ship status information gives a list of all dynamic entities and players and their destinyState in this bubble shows some current destiny variables save all items
 
void SetItem(PyRep *key, PyRep *value)
SetItem adds or sets a database entry. 
 
const char * TypeString() const 
 
void ToVirtual(uint32 locationID)
 
void SetItemString(const char *key, PyRep *value)
SetItemString adds or sets a database entry. 
 
void UpgradeLink(uint32 src, uint32 dest, uint8 level)
 
void LoadLinks(uint32 ccPinID, std::map< uint32, PI_Link > &links)
 
void SetProgramResults(uint32 ecuID, uint16 typeID, uint16 numCycles, float headRadius, float cycleTime, uint32 qtyPerCycle)
 
void Start(uint32 setTimerTime=0, bool changeResetTimer=true)