Can't suicide creeps reliably in world since the update


  • Culture

    https://screeps.com/a/#!/history/W5N12?t=13052308

     

    http://i.imgur.com/kDikavK.png - no creep there.

     

     if (theCreep.memory.role == undefined)
    {
    var message = 'Creep with no role found: \n' + theCreep.name + '\nTick: ' +Game.time + '\nMemory: ' + JSON.stringify(theCreep.memory);
    if(!Game.rooms['sim'])
    {
    Game.notify(message, 0);
    log(message, "error");
    }
    theCreep.suicide()
    return;
    }

     

    Every tick the creep still think he's alive. While it's impossible for it to be alive. This happened multiple times since the downtime of 23-8-2016.


  • Dev Team

    I can barely understand what are you reporting. Please elaborate what you expect and what you get.


  • Culture

    If a creep has no role (due to a bug) I suicide the creep using .suicide().

    This normally never happens, only when the memory gets corrupted for some reason.

     

    Since this morning 

    theCreep.suicide()
    

    no longer works. 

     

    each tick the same creep gets a .suicide() call, but it doesn't die and still lives next tick.

     

    The creep is gone from the game, but it seems the Game.creeps still holds an object to a no longer living creep.


  • Culture

    Example:

     

    Creep with no role found: 
    C_38918
    Tick: 13052502
    Memory: {}
     pos: [room W3N11 pos 40,29]

     

    Creep with no role found: 
    C_38918
    Tick: 13052503
    Memory: {}
     pos: [room W3N11 pos 40,29]

    The creep should have suicided on tick 13052502, but is still alive on 13052503


  • Dev Team

    I'm unable to reproduce this. Could you provide a clear isolated test case which proves the issue?


  • Culture

    I can't.

    My creeps suicide themselves from time to time and delete their own memory.

    I don't know if you can see the emails that are send to me from my code, but it looks like this lately:

     

    http://i.imgur.com/PTQqC4g.png

     

    You can see it's always creep 

    C_38918

    in this case.

     

    As you can see from the code above it should always suicide it after one message.


  • Culture

    It seems to be related when you suicide a creep and you code "dies" the same tick due to a CPU limit.


  • Culture

    Seems to be related to when your bucket is empty and the script gets cancelled mid-run, and a creep has been suicided on that cpu-bucket-empty tick.