<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Draft: room event log]]></title><description><![CDATA[<p>Currently Screeps has no API to track what actions have been succesfully performed, or what creeps have made certain actions to which targets. This is especially important in battles, when your creep receives damage, you can't determine the actual attacker. This draft proposes new system called <strong>room event log</strong>. We'd like to hear your feedback on this API and whether it fits your needs.</p>
<p>New property is proposed: <code>Room.eventLog</code>. It is an array containing event items that describe most actions that have taken place in this room on the last tick:</p>
<pre><code class="language-javascript">[{
  type: EVENT_ATTACK,
  objectId: '54bff72ab32a10f73a57d017',
  data: {
    targetId: '54bff74fb32a10f73a57d018',
    attackType: 'attack',  // attack | rangedAttack | rangedMassAttack | dismantle | nuke
    damage: 20
  }
},
{
  type: EVENT_HEAL,
  objectId: '54bff72ab32a10f73a57d017',
  data: {
    targetId: '54bff72ab32a10f73a57d017',
    healed: 10
  }
},
{
  type: EVENT_HARVEST,
  objectId: '54bff72ab32a10f73a57d017',
  data: {
    targetId: '54bff74fb32a10f73a57d018',
    harvested: 50
  }
},
{
  type: EVENT_REPAIR,
  objectId: '54bff72ab32a10f73a57d017',
  data: {
    targetId: '54bff74fb32a10f73a57d018',
    repaired: 1000,
    energySpent: 10
  }
},
{
  type: EVENT_UPGRADE_CONTROLLER,
  objectId: '54bff72ab32a10f73a57d017',
  data: {
    targetId: '54bff74fb32a10f73a57d018',
    upgraded: 10,
    energySpent: 5
  }
},
{
  type: EVENT_TRANSFER,
  objectId: '54bff72ab32a10f73a57d017',
  data: {
    targetId: '54bff74fb32a10f73a57d018',
    resourceType: RESOURCE_ENERGY,
    amount: 200
  }
}]
</code></pre>
<p>Events last only one tick, so if you need to track event logs for a longer period, you have to store them on your own. Every room has its own <code>Room.eventLog</code> array. You can track events performed by a particular creep like this:</p>
<pre><code class="language-javascript">_.filter(creep.room.actionLog, {objectId: creep.id});
</code></pre>
<p>Or you can find all hostile actions against your creeps and structures:</p>
<pre><code class="language-javascript">_.forEach(Game.rooms, room =&gt; {
  let attackEvents = _.filter(room.eventLog, {type: EVENT_ATTACK});
  attackEvents.forEach(event =&gt; {
    let target = Game.getObjectById(event.targetId);
    if(target &amp;&amp; target.my) {
      console.log(event);
    }
  });
});
</code></pre>
<p>Even when the creep object is gone (being killed or leaving the room), the attacking event is still recorded to the log, so you are able to reason on what's happened.</p>
<p>Not only hostile actions are recorded, but you can also use the events log to track effectiveness of your harvest, upgrade and repair operations.</p>
<p>Since these JSON arrays can become quite big, they are stored and fetched by the engine as raw strings, and deserialized using <code>JSON.parse</code> when you access the <code>Room.eventLog</code> property for the first time similar to <code>Memory</code> parsing. Thus, if you opt-in to use this feature, it will incur some CPU cost depending on the number of actions in this particular room in the given tick.</p>
]]></description><link>http://screeps.com/forum/topic/2118/draft-room-event-log</link><generator>RSS for Node</generator><lastBuildDate>Thu, 13 Aug 2026 18:53:11 GMT</lastBuildDate><atom:link href="http://screeps.com/forum/topic/2118.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 26 Feb 2018 14:12:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Draft: room event log on Mon, 26 Feb 2018 14:45:19 GMT]]></title><description><![CDATA[<p>Currently Screeps has no API to track what actions have been succesfully performed, or what creeps have made certain actions to which targets. This is especially important in battles, when your creep receives damage, you can't determine the actual attacker. This draft proposes new system called <strong>room event log</strong>. We'd like to hear your feedback on this API and whether it fits your needs.</p>
<p>New property is proposed: <code>Room.eventLog</code>. It is an array containing event items that describe most actions that have taken place in this room on the last tick:</p>
<pre><code class="language-javascript">[{
  type: EVENT_ATTACK,
  objectId: '54bff72ab32a10f73a57d017',
  data: {
    targetId: '54bff74fb32a10f73a57d018',
    attackType: 'attack',  // attack | rangedAttack | rangedMassAttack | dismantle | nuke
    damage: 20
  }
},
{
  type: EVENT_HEAL,
  objectId: '54bff72ab32a10f73a57d017',
  data: {
    targetId: '54bff72ab32a10f73a57d017',
    healed: 10
  }
},
{
  type: EVENT_HARVEST,
  objectId: '54bff72ab32a10f73a57d017',
  data: {
    targetId: '54bff74fb32a10f73a57d018',
    harvested: 50
  }
},
{
  type: EVENT_REPAIR,
  objectId: '54bff72ab32a10f73a57d017',
  data: {
    targetId: '54bff74fb32a10f73a57d018',
    repaired: 1000,
    energySpent: 10
  }
},
{
  type: EVENT_UPGRADE_CONTROLLER,
  objectId: '54bff72ab32a10f73a57d017',
  data: {
    targetId: '54bff74fb32a10f73a57d018',
    upgraded: 10,
    energySpent: 5
  }
},
{
  type: EVENT_TRANSFER,
  objectId: '54bff72ab32a10f73a57d017',
  data: {
    targetId: '54bff74fb32a10f73a57d018',
    resourceType: RESOURCE_ENERGY,
    amount: 200
  }
}]
</code></pre>
<p>Events last only one tick, so if you need to track event logs for a longer period, you have to store them on your own. Every room has its own <code>Room.eventLog</code> array. You can track events performed by a particular creep like this:</p>
<pre><code class="language-javascript">_.filter(creep.room.actionLog, {objectId: creep.id});
</code></pre>
<p>Or you can find all hostile actions against your creeps and structures:</p>
<pre><code class="language-javascript">_.forEach(Game.rooms, room =&gt; {
  let attackEvents = _.filter(room.eventLog, {type: EVENT_ATTACK});
  attackEvents.forEach(event =&gt; {
    let target = Game.getObjectById(event.targetId);
    if(target &amp;&amp; target.my) {
      console.log(event);
    }
  });
});
</code></pre>
<p>Even when the creep object is gone (being killed or leaving the room), the attacking event is still recorded to the log, so you are able to reason on what's happened.</p>
<p>Not only hostile actions are recorded, but you can also use the events log to track effectiveness of your harvest, upgrade and repair operations.</p>
<p>Since these JSON arrays can become quite big, they are stored and fetched by the engine as raw strings, and deserialized using <code>JSON.parse</code> when you access the <code>Room.eventLog</code> property for the first time similar to <code>Memory</code> parsing. Thus, if you opt-in to use this feature, it will incur some CPU cost depending on the number of actions in this particular room in the given tick.</p>
]]></description><link>http://screeps.com/forum/post/9704</link><guid isPermaLink="true">http://screeps.com/forum/post/9704</guid><dc:creator><![CDATA[artch]]></dc:creator><pubDate>Mon, 26 Feb 2018 14:45:19 GMT</pubDate></item><item><title><![CDATA[Reply to Draft: room event log on Invalid Date]]></title><description><![CDATA[<p>Great idea, however, since accessing the eventLog incurs costs, would it be possible to apply filtering before accessing the eventlog? For instance, let's assume I do not care about my harvest effeciency but only care for attack events, would it be possible to call <code>setEventLogFilter()</code> on the room and only supply EVENT_ATTACK as a filter?</p>
<p>By default, no filtering is applied, but after calling this method, all other events are ommitted from the log(and thus also save cpu cycles server side when serializing it).</p>
]]></description><link>http://screeps.com/forum/post/9707</link><guid isPermaLink="true">http://screeps.com/forum/post/9707</guid><dc:creator><![CDATA[Toolmaker]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Reply to Draft: room event log on Invalid Date]]></title><description><![CDATA[<p>There's no EVENT_MOVE in the example, is that also going to be an event? I'd also be interested in seeing what rangedMassAttack looks like.</p>
<p>Parse times seem like they should be small. I'd guess &lt;0.1 CPU for most late game rooms.</p>
]]></description><link>http://screeps.com/forum/post/9708</link><guid isPermaLink="true">http://screeps.com/forum/post/9708</guid><dc:creator><![CDATA[Tigga]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Reply to Draft: room event log on Invalid Date]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="http://screeps.com/forum/uid/341">@toolmaker</a> No, it's not possible, otherwise we would need to duplicate filtered data in the backend.</p>
]]></description><link>http://screeps.com/forum/post/9709</link><guid isPermaLink="true">http://screeps.com/forum/post/9709</guid><dc:creator><![CDATA[artch]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Reply to Draft: room event log on Mon, 26 Feb 2018 14:36:49 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="http://screeps.com/forum/uid/138">@tigga</a> <code>move</code> action is not recorded (I don't see any reason why it should be, it's just a waste of resources). <code>rangedMassAttack</code> is recorded as multiple events for each affected target.</p>
]]></description><link>http://screeps.com/forum/post/9710</link><guid isPermaLink="true">http://screeps.com/forum/post/9710</guid><dc:creator><![CDATA[artch]]></dc:creator><pubDate>Mon, 26 Feb 2018 14:36:49 GMT</pubDate></item><item><title><![CDATA[Reply to Draft: room event log on Invalid Date]]></title><description><![CDATA[<p>I think, ideally, any intent that may fail even after getting an <code>OK</code>, would be logged, so there's a straightforward way to check for success/failure/partial success. That would include move intents. To me, detecting collisions is about the same as checking for a failed/partial transfer, it's possible without event logs, but it's cumbersome.</p>
]]></description><link>http://screeps.com/forum/post/9711</link><guid isPermaLink="true">http://screeps.com/forum/post/9711</guid><dc:creator><![CDATA[eduter]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Reply to Draft: room event log on Invalid Date]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="http://screeps.com/forum/uid/154">@eduter</a> We wouldn't be able to maintain such amount of internal network traffic in our cluster. Also, it would increase CPU parsing cost for players as well.</p>
]]></description><link>http://screeps.com/forum/post/9712</link><guid isPermaLink="true">http://screeps.com/forum/post/9712</guid><dc:creator><![CDATA[artch]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Reply to Draft: room event log on Invalid Date]]></title><description><![CDATA[<p>I'm fine with no move, just checking. It'd be useful, but it's trackable except when they move to an exit tile (maybe EVENT_EXIT?), so that's fine.</p>
<p>RMA is going to create a lot of events, but I guess it's rare so that's not going to be much of CPU hit in general.</p>
]]></description><link>http://screeps.com/forum/post/9713</link><guid isPermaLink="true">http://screeps.com/forum/post/9713</guid><dc:creator><![CDATA[Tigga]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Reply to Draft: room event log on Invalid Date]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="http://screeps.com/forum/uid/138">@tigga</a> <code>EVENT_EXIT</code> looks interesting, we have to consider that.</p>
]]></description><link>http://screeps.com/forum/post/9715</link><guid isPermaLink="true">http://screeps.com/forum/post/9715</guid><dc:creator><![CDATA[artch]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Reply to Draft: room event log on Invalid Date]]></title><description><![CDATA[<p>It might also be useful to have an <code>EVENT_ENTER</code> instead of having to search every creep in the room for hostiles</p>
]]></description><link>http://screeps.com/forum/post/9716</link><guid isPermaLink="true">http://screeps.com/forum/post/9716</guid><dc:creator><![CDATA[Gankdalf]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Reply to Draft: room event log on Invalid Date]]></title><description><![CDATA[<p>Looks awesome, I like the idea of EVENT_ENTER &amp; EVENT_EXIT.</p>
<p>The only other event I can think of is EVENT_DIE, but this maybe covered by the new tombstone functionality.</p>
]]></description><link>http://screeps.com/forum/post/9717</link><guid isPermaLink="true">http://screeps.com/forum/post/9717</guid><dc:creator><![CDATA[SteveTrov]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Reply to Draft: room event log on Mon, 26 Feb 2018 16:42:19 GMT]]></title><description><![CDATA[<p>How about EVENT_DESTROY? There is currently no easy way to see when a structure is destroyed except for storing all structures in Memory and comparing on a regular basis. It would be triggered on the use of destroy() or when the structure hitpoints reach zero. I think that would be very useful.</p>
]]></description><link>http://screeps.com/forum/post/9720</link><guid isPermaLink="true">http://screeps.com/forum/post/9720</guid><dc:creator><![CDATA[Kamots]]></dc:creator><pubDate>Mon, 26 Feb 2018 16:42:19 GMT</pubDate></item><item><title><![CDATA[Reply to Draft: room event log on Mon, 26 Feb 2018 17:22:58 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="http://screeps.com/forum/uid/1509">@kamots</a> What is the use case here? How do you check what structure is destroyed without storing it in Memory? We'd need to duplicate some structure info in the event data, which is not very optimal.</p>
]]></description><link>http://screeps.com/forum/post/9722</link><guid isPermaLink="true">http://screeps.com/forum/post/9722</guid><dc:creator><![CDATA[artch]]></dc:creator><pubDate>Mon, 26 Feb 2018 17:22:58 GMT</pubDate></item><item><title><![CDATA[Reply to Draft: room event log on Invalid Date]]></title><description><![CDATA[<p>My use case for this would be to be able to do something specific when a structure is destroyed, such as trigger safe mode or add a new construction site to replace the destroyed structure.</p>
<p>I would be happy to have a flag in EVENT_ATTACK to say whether or not the object was destroyed by the attack.</p>
]]></description><link>http://screeps.com/forum/post/9723</link><guid isPermaLink="true">http://screeps.com/forum/post/9723</guid><dc:creator><![CDATA[SteveTrov]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Reply to Draft: room event log on Invalid Date]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="http://screeps.com/forum/uid/35">@stevetrov</a> I mean, how do you get rid of storing and comparing in Memory, if you only have <code>targetId</code> in the event data, and <code>Game.getObjectById(targetId) === null</code>?</p>
]]></description><link>http://screeps.com/forum/post/9725</link><guid isPermaLink="true">http://screeps.com/forum/post/9725</guid><dc:creator><![CDATA[artch]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Reply to Draft: room event log on Invalid Date]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="http://screeps.com/forum/uid/3">@artch</a> said in <a href="/forum/post/9725">Draft: room event log</a>:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="http://screeps.com/forum/uid/35">@stevetrov</a> I mean, how do you get rid of storing and comparing in Memory, if you only have targetId in the event data, and Game.getObjectById(targetId) === null?</p>
</blockquote>
<p>The difference with server side code is that it is already processing the intents that caused the damage.</p>
<p>Although thinking about it, IIRC destruction is not determined at the time damage is applied, its determined after the heal is applied. So an object EVENT_DESTROY would make more sense.</p>
<p>Is there a reason you cant create the EVENT_DESTORY object at the same time that you detect the creep / structure is dead server side?</p>
]]></description><link>http://screeps.com/forum/post/9726</link><guid isPermaLink="true">http://screeps.com/forum/post/9726</guid><dc:creator><![CDATA[SteveTrov]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Reply to Draft: room event log on Invalid Date]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="http://screeps.com/forum/uid/35">@stevetrov</a> You don't seem to get the point. I don't mean server-side logic, it's trivial. My point is that this event would look like this:</p>
<pre><code class="language-javascript">{
  type: EVENT_DESTROYED,
  objectId: '54bff72ab32a10f73a57d017'
}
</code></pre>
<p>You have to store your structures info in Memory in order to do something useful with this <code>objectId</code>. But if you're storing your structures in memory already, it's trivial to check <code>Game.structures[id]</code>, and it's easier than looking for <code>EVENT_DESTROYED</code> events every tick.</p>
]]></description><link>http://screeps.com/forum/post/9727</link><guid isPermaLink="true">http://screeps.com/forum/post/9727</guid><dc:creator><![CDATA[artch]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Reply to Draft: room event log on Invalid Date]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="http://screeps.com/forum/uid/3">@artch</a> said in <a href="/forum/post/9727">Draft: room event log</a>:</p>
<p>Ah i c your point now</p>
<p>How about:</p>
<p>{
type: EVENT_STRUCTURE_DESTROYED,
objectId: '54bff72ab32a10f73a57d017'
structureType: STRUCTURE_RAMPART,
pos:
{
x :23,
y: 35,
roomName: &quot;E1N1&quot;
}
}</p>
<p>And for creeps we could have</p>
<p>{
type: EVENT_CREEP_DESTROYED,
name: &quot;MyAwesomeCreep&quot;,
deathReason: &lt;oldAge|suicide|murdered&gt;
}</p>
<p>The later would provide an alternative to comparing Game.creeps &amp; Memory.creeps every tick.</p>
]]></description><link>http://screeps.com/forum/post/9728</link><guid isPermaLink="true">http://screeps.com/forum/post/9728</guid><dc:creator><![CDATA[SteveTrov]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Reply to Draft: room event log on Mon, 26 Feb 2018 21:23:52 GMT]]></title><description><![CDATA[<p>Keep in mind events are not user-specific, they are exposed to all users with an access to the given room in exactly the same form, so you cannot distinguish your creeps/structures from another player's this way. And we cannot add <code>username</code> property here for technical reasons.</p>
]]></description><link>http://screeps.com/forum/post/9730</link><guid isPermaLink="true">http://screeps.com/forum/post/9730</guid><dc:creator><![CDATA[artch]]></dc:creator><pubDate>Mon, 26 Feb 2018 21:23:52 GMT</pubDate></item><item><title><![CDATA[Reply to Draft: room event log on Invalid Date]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="http://screeps.com/forum/uid/35">@stevetrov</a> EVENT_CREEP_DESTROYED is already easy, tombstones already provide that information.</p>
]]></description><link>http://screeps.com/forum/post/9731</link><guid isPermaLink="true">http://screeps.com/forum/post/9731</guid><dc:creator><![CDATA[ags131]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Reply to Draft: room event log on Invalid Date]]></title><description><![CDATA[<pre class="markdown-highlight"><code>{
   type: EVENT_DESTROYED,
   structureType: STRUCTURE_SPAWN
}
</code></pre>
<p>would be enough for me. I don't care where it was destroyed, or what it used to be, but if an important structure goes down, I need to look at creating a new one and/or starting safe mode.</p>
]]></description><link>http://screeps.com/forum/post/9732</link><guid isPermaLink="true">http://screeps.com/forum/post/9732</guid><dc:creator><![CDATA[Gankdalf]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Reply to Draft: room event log on Invalid Date]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="http://screeps.com/forum/uid/3">@artch</a> said in <a href="/forum/post/9730">Draft: room event log</a>:</p>
<blockquote>
<p>Keep in mind events are not user-specific, they are exposed to all users with an access to the given room in exactly the same form, so you cannot distinguish your creeps/structures from another player's this way. And we cannot add username property here for technical reasons.</p>
</blockquote>
<p>Sounds like the EVENT_CREEP_DESTROYED functionality is covered by tombstones, so EVENT_STRUCTURE_DESTROYED should suffice and doesn't reveal any user specific information.</p>
]]></description><link>http://screeps.com/forum/post/9734</link><guid isPermaLink="true">http://screeps.com/forum/post/9734</guid><dc:creator><![CDATA[SteveTrov]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Reply to Draft: room event log on Invalid Date]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="http://screeps.com/forum/uid/35">@stevetrov</a> Although, some rare use cases are still possible, when there are leftovers of another player's structures, and their destruction will likewise trigger these events.</p>
]]></description><link>http://screeps.com/forum/post/9735</link><guid isPermaLink="true">http://screeps.com/forum/post/9735</guid><dc:creator><![CDATA[artch]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Reply to Draft: room event log on Invalid Date]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="http://screeps.com/forum/uid/35">@stevetrov</a> said in <a href="/forum/post/9734">Draft: room event log</a>:</p>
<blockquote>
<p>Sounds like the EVENT_CREEP_DESTROYED functionality is covered by tombstones, so EVENT_STRUCTURE_DESTROYED should suffice and doesn't reveal any user specific information</p>
</blockquote>
<p>Which reminds me, It would be nice to have a pile of rubble for some ticks when a building is destroyed. This way you'd have tombstones for structures.</p>
<p>EVENT_STRUCTURE_DESTROYED seems overkill.<br />
I think the event <code>EVENT_ATTACK</code> would cover most of the issues here. Maybe add <code>destroyed: true|false</code> could be added so you won't do a <code>Game.getObjectById(data.targetId)</code> and get null back.</p>
]]></description><link>http://screeps.com/forum/post/9736</link><guid isPermaLink="true">http://screeps.com/forum/post/9736</guid><dc:creator><![CDATA[Dissi]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Reply to Draft: room event log on Invalid Date]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="http://screeps.com/forum/uid/138">@tigga</a> said in <a href="/forum/post/9708">Draft: room event log</a>:</p>
<blockquote>
<p>There's no EVENT_MOVE in the example, is that also going to be an event</p>
</blockquote>
<p>What about a EVENT_COLLISION <a class="plugin-mentions-user plugin-mentions-a" href="http://screeps.com/forum/uid/3">@artch</a>? This way when 2 creeps move to one location we can easily determine which one was the loser.</p>
]]></description><link>http://screeps.com/forum/post/9737</link><guid isPermaLink="true">http://screeps.com/forum/post/9737</guid><dc:creator><![CDATA[Dissi]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Reply to Draft: room event log on Invalid Date]]></title><description><![CDATA[<p>Do you need room vision to access the logs ?</p>
<ul>
<li>On the plus side, it would be handy for solo structures being killed in remote room.</li>
<li>But on the other side, reading events can give a lot of information without any risk (harvests, attacks, repairs, upgrades...). Which a good algorithm, you could probably know everything in the room (structures, positions, controller level, etc.).</li>
<li>... which is something you can see manually with the client anyway.</li>
</ul>
<p>Any thoughts or decision ?</p>
]]></description><link>http://screeps.com/forum/post/9742</link><guid isPermaLink="true">http://screeps.com/forum/post/9742</guid><dc:creator><![CDATA[Hiryus]]></dc:creator><pubDate>Invalid Date</pubDate></item></channel></rss>