Modding Help ai.config specific race patching

Discussion in 'Starbound Modding' started by Dilrax, Jul 27, 2017.

  1. Dilrax

    Dilrax Ketchup Robot

    does anyone know how to or if possible to patch (or write) an ai.config file to fit specific to a single race with out an override that changes the ai.config for all race's?

    im looking to add a number of Ai animations with custom dialogue, the generated spritesheet does not fit the normal starbound AI portrait png, which i think i can work around, how ever as much as my current patch file checks out ok (as according to https://jsonformatter.curiousconcept.com/ it is valid code), starbound refuses to load the ai.config at all with the error print out of:

    [Error] Application: exception thrown, shutting down: (AssetException) Error loading asset /ai/ai.config
    and
    Caused by: (JsonException) Improper conversion to JsonArray from object
    nothing more... nothing less, just this one single error line, that also causes the game to crash so it never loads...

    an example of the code would be:
    Code:
    [
    {  
          "op":"add",
          "path":"/aiAnimations/direwolfai_smile",
          "value":{  
             "frames":"direwolfai.png:direwolfai_smile.<index>",
             "mode":"stop",
             "frameNumber":1,
             "animationCycle":5,
             "centered":false
          }
       },
    
    {  
          "op":"replace",
          "path":"/shipStatus/0/animation",
          "value":{  
             "species":{  
                "direwolf":[  
                   "direwolfai.png:direwolfai_smile"
                ]
             }
          }
       },
    
       {  
          "op":"replace",
          "path":"/shipStatus/0/text",
          "value":{  
             "species":{  
                "direwolf":[  
                   "^#6f6f6f;$ status\n^#EC3E7D;> ..Herp... Derp... doo... be... dee... Nya!..."
                ]
             }
          }
       }
    ]
    where in this, if trying to have the system add and register the Ai's custom "smile" frame (direwolfai_smile) and pull that from the "direwolfai.png", but then instead of applying this to all race's just apply it to the mod's race species "direwolf", so only the "direwolf" race will see and get this AI, along with new dialogue that's unique to this AI for this race.

    i figured i would ask about this first before doing and saying anything more... as nothing iv tried seems to work, the rest of the config is pretty much no different to how this example is set out so if this snippet can be made to work then i would just apply the same changes/format/requirements to the rest of the file.
     
  2. Cyel

    Cyel Scruffy Nerf-Herder

    Your two "replace" operations try to add a "species" object that isn't used by the game here:
    Code:
       "shipStatus" : {
         "0" : {
           "animation" : "unique",
           "text" : "> Zzz... Zzz... Zzz...",
           "speedModifier" : 0.1
         },
    if you wish to change the dialog thingy on the ship intro, you'd need to change your ship's techsation object code, where all of this is pulled from. For example, from the apex A.I.:
    Code:
      "chatPortrait" : "/ai/portraits/apexportrait.png:yell.1",
       "dialog" : {
         "wakeUp" : [
           [ "Rebooting...", "/ai/portraits/apexportrait.png:unique.1" ],
           [ "I am S.A.I.L, your Ship-based Artificial Intelligence Lattice. I manage the maintainance of your ship.",        "/ai/portraits/apexportrait.png:talk.0" ],
           [ "I am also programmed to offer you information and advice.", "/ai/portraits/apexportrait.png:talk.1" ],
           [ "Earth was attacked by an unknown force, and was subsequently annihilated.", "/ai/portraits/apexportrait.png:talk.0" ],
           [ "The ship's navigation systems were damaged in our escape. Our location is currently unknown.", "/ai/portraits/apexportrait.png:talk.1" ]
         ],
         "wakePlayer" : [
           [ "System is down, please reboot.", "/ai/portraits/apexportrait.png:unique.1"],
           [ "Please reboot the system.", "/ai/portraits/apexportrait.png:unique.1"],
           [ "Reboot process remains uninitiated.", "/ai/portraits/apexportrait.png:unique.1"],
           [ "To make use of your S.A.I.L please reboot.", "/ai/portraits/apexportrait.png:unique.1" ],
           [ "Rebooting has shown to improve ship interaction satisfaction levels by 73%.", "/ai/portraits/apexportrait.png:unique.1"],
           [ "Rebooting requires a conscious entity to interact with the S.A.I.L console.", "/ai/portraits/apexportrait.png:unique.1" ]
         ]
       },
    
    I'm pretty sure shipstatus/0/ isn't even used anymore.
     
  3. Dilrax

    Dilrax Ketchup Robot

    regardless if its used or not, i changed the text in both the techstation file and the ai.config, while keeping the text worded differently, eventually when and if i get this working, i can then work out what text is read and used when called upon... as i have also set new text for the "noCrewSpeech" and "noMissionsSpeech" sections and not just the shipstatus.

    and would you care to evaluate more on what you mean by "Your two "replace" operations try to add a "species" object that isn't used by the game" for if your implying that i make a techconsol specific to the race species, a stand alone file so that the species does not use a base game tech console then i have already done that... and that changed nothing atleast as it currently stands, how ever if your implying something else would your care to explain? i find short answers to always be unhelpful and i wish to avoid the "run-around" i have gotten in the past.
     
  4. Cyel

    Cyel Scruffy Nerf-Herder

    Your patch snippet has two "replace" operations, which aren't actually changing anything that the game uses; here's what it'd look like, if applied:
    Code:
      "shipStatus": {
        "0": {
          "animation": { "species": {  "direwolf": [ "direwolfai.png:direwolfai_smile" ] } },
          "text": { "species": { "direwolf": [ "^#6f6f6f;$ status\n^#EC3E7D;> ..Herp... Derp... doo... be... dee... Nya!..." ] } },
          "speedModifier": 0.1
        },
    If you compare to the rest of the file:
    Code:
        "1": {
          "animation": "talk",
          "text": "^#6f6f6f;$ status^cyan;> Ship thrusters are currently offline.> Ship teleportation system functioning correctly.> ^green;Currently only the planet below is accessible.",
          "speedModifier": 0.7
        },
    You can see that it doesn't have said "species" object: the "text" parameter is a simple string. I'm guessing the game wants to find a string here, and you provide an object, thus it crashes.
    Tl;dr all of the dialogs there are the same for everyone. Vanilla S.A.I.L. is processing different dialogs depending on specie for mission texts only
     
    IHart likes this.
  5. Dilrax

    Dilrax Ketchup Robot

    so my original example as a hole would be what exactly other then the change to the 'shipstatus' section, where would that leave this?
    Code:
    {
          "op":"add",
          "path":"/aiAnimations/direwolfai_smile",
          "value":{
             "frames":"direwolfai.png:direwolfai_smile.<index>",
             "mode":"stop",
             "frameNumber":1,
             "animationCycle":5,
             "centered":false
          }
      }
    as from my understanding the game wont have any details regarding the animation with out it, now this here is just 1 frame... vanilla sail generally only uses 1-2 with the exception being the unique emote and refuse which have 8 frames each... how ever some of these custom frames exceed up to 20 or more frames.

    but the other thing is, would i make "my" ai.config a .patch and use say, a normal patch... string or what ever technical term you want to call it
    (*isnt too good with terms*) or would i set it out similar to the normal ai.config still as a patch but with out the hole "op":"add" like in the above, thusit being more like below?
    Code:
    "direwolfai_smile" : {
          "frames" : "direwolfai.png:direwolfai_smile.<index>",
          "mode" : "stop",
          "frameNumber" : 1
          "animationCycle" : 0.5,
          "centered" : false
        }
     
  6. Marinebeast

    Marinebeast Existential Complex

    This is where I recommend you find other race mods with custom SAIL; it's a lot easier to reverse-engineer than figure it out entirely on your own. Study what kinds of file paths and patch paths that other people use, then slot your own assets into those kinds of paths. :p
     
    IHart likes this.
  7. Dilrax

    Dilrax Ketchup Robot

    yup... Been there done that... If you happen to know of any mods like this then please by all means link me... Ai mods like "A.V.I.A.N" don't count because they override it for all races.
     
  8. Marinebeast

    Marinebeast Existential Complex

    That's probably your best bet for reverse-engineering, since it does so much with additional frames-- just figure out what makes it a universal/override SAIL, avoid that bit of detail, and instead pay attention to how it adds new/unique animation frames. Then emulate that in your own work and keep tinkering with it until you get something right.

    Reverse-engineering mods isn't all or nothing; pick through them to find what's personally useful to you.
     
    IHart likes this.
  9. Dilrax

    Dilrax Ketchup Robot

    you basically just said the same thing twice but with more text, so I'm going to repeat my self "Been there, Done that",

    this is why in my original post; I'm asking if anyone else has worked this out, because iv tried a number of things and particularly reverse-engineering a universal override sail at that, which was one of the first things i tried mind you, in an attempt to make it race specific and that doesn't seem to work despite the validator saying the json is valid.

    got any other suggestions?
     
  10. Cyel

    Cyel Scruffy Nerf-Herder

    If you want to have your A.I.'s face show up only for your specie, you'd need to reference it in the species object, like how it's already done with vanilla species:
    Code:
      "species" : {
        "apex" : {
       "aiFrames" : "apexAi.png",
        "portraitFrames" : "portraits/apexportrait.png",
        "staticFrames" : "staticApex.png"
      },
    That's about the only thing you can change on a per-specie basis, that and aiMissions. All of the dialogs and other things are shared, and changing it would change it for every cases. This is vanilla behavior.

    I think your only options here are either to:
    - replace everything for everyone (which isn't really nice if people are playing multiple species, as, if they do not have it already modded, they'd end up with your S.A.I.L. on all of their species)
    - remake S.A.I.L. to do what you wanna do,
    Which I actually did. I'm not really comfortable about proposing that solution, since that'd make your mod somewhat dependent on it, along with it's quirks, plus it kinda sounds like showing off, but being used by others is one of the main point of that mod; so if you wish to see/use it: http://steamcommunity.com/sharedfiles/filedetails/?id=947429656

    It allows more S.A.I.L. customisation, takes specie-specific configuration so you could have something like this in your ai.config:
    Code:
      "species" : {
        "direwolf" : {
          "aiFrames" : "direwolfAi.png",
          "portraitFrames" : "portraits/direwolfportrait.png",
          "staticFrames" : "staticDirewolf.png",
    
          "shipStatus" : {
           "0" : {
             "animation" : "unique",
              "text" : "^#6f6f6f;$ status\n^#EC3E7D;> ..Herp... Derp... doo... be... dee... Nya!...",
              "speedModifier" : 0.1
            },
    [...]
    And have that be only used for your specie.
     
  11. Dilrax

    Dilrax Ketchup Robot

    i can get "the frames" to work... *If* i went vanilla, the problem is im not using the basic sprite sheet layout for Sail or the normal frame set names, as im using...Correction; *Trying to use* way more frames then that with different names for the frame sets, currently atleast 223 more frames(245 total) then the standard vanilla 22, split between 18 frame sets compared to 6.

    [​IMG]

    [​IMG]

    if the only text in the Ai.config thats used is the "noCrewSpeech" and "noMissionsSpeech" then if possible i'll look at changing that and ignore the ship status how ever im still left with the animation problems and getting them to register and work...

    and at this point im still scratching my head over it, while yes that mod, if done right which i dont know how to, would probably have the answers im looking for, and im sure a dependency could be changed out for a compatibility in the sense that its not required but if both mods were installed then they would work with one another, thus the techstation would gain the ability to be customization like that mod does... but im just looking to change out Sail's animations with... pretty much a race specific override and not a customization techstation...

    i have no idea what im doing wrong, what iv got wrong... and the hell im even trying to do anymore because nothing works... on my end and i really really dont want to end up scrapping a week and a half's work because of one stupid file... i could have been working on other things but nope, i decided on this and even pulled all nighters just because of it... and now its pretty much baking on this working, it could be that sleep and stress has caught up to me and thats why i cant figure this out or it could be something else... regardless... heres my entire ai.config with the frames and png to boot... no doubt you could probably make it work and if so... great!, awesome!... as for me, i need to go relieve my self of a headache and call it an early night...
    https://drive.google.com/file/d/0B8QoR5MGkemmZUJwV0ZjWW5aUGc/view?usp=sharing

    ___
    on a side note, yes i somewhat agree, somethings regarding mods sound like showing off... particularly their trying to directly show it off but just wanting to do something in a mod because that's what you want to do and how you design your mod, just being creative and making something that's new, different to what someone else has already done; isn't that apart of what makes a mod to being with? just because someone does something super amazingly awesome, or someone does something new or someone decides to get creative and put a spin on something to make that different, doesn't necessarily mean it in particular is 'showing off', i simply just want to put a different spin on sail and change out sail for a different character, for example rather then Sail or some version of it being an AI, why not a character that's not an AI?
     
  12. Cyel

    Cyel Scruffy Nerf-Herder

    Your .frames file is pretty much all wrong, so I guess you copy-pasted most of it? The dimensions are wrong (36*9 frames), and the names aren't remotely close to being correct. You also aren't actually using any of the aiAnimations you've provided. You're also missing a static picture & it's frame file, but that's not really critical.

    Basically, the "names" array in the .frames file tells the game how to call each frame.
    When, in your ai.config, you write "direwolf.png:miega_talk.<index>", it means "in the 'direwolf.png' file, at the 'miega_talk.<index>' frame"; the game will look up the "names" array of the direwolf.frames for 'miega_talk.<index>', check it's coordinates based on the position in the array, and calculate the actual pixel coordinates via the size and dimension parameters. <index> is being replaced with a number between 0 and 'frameNumber'.

    If we were to shadow the computer here, with your current files, it'd do something like this:
    That's because, as the error says, there's no frame named "talk.<index>" in your .frames file.

    If you were to patch shipStatus[theirShipLevel] to use "miega_talk.<index>", here's what it'd do:
    Here, we can see that:
    - You haven't positionned your names correctly in the "names" array: miega_talk.0 should probably the the first frame of the first column.
    - You haven't provided every frames with a name: miega_talk.2 isn't referenced at all.
    - You haven't given the correct frame dimensions; chances are I counted wrongly, but "dimensions" should be something like [36, 9] instead of a mere [15, 5]. Here it isn't much of a problem because first we don't go beyond that many frames (since your "names" array is wrong), and second because it stays aligned with the size; if you had messed up the size, you could end up with frames that do not correspond to what you want.

    This might be a bit too much basic of an explanation but I don't know how well you understand how frame files work, both by themselves and in the greater scheme of things.
    Also: this is for the sake of example; patching all dialogs to use "miega_talk" would also replace every other species' dialog, since they're all shared, which would in turn break all of them, because none of the other A.I.s' .frames file have a "miega_talk.<index>" frame set.
    Instead, what you might want to do is use the "aliases" array, to give another name to your named frames. this way, you could say that "miega_talk.0" and "miega_talk.3" are "talk.0" and "talk.1", thus fitting the 2-framed "talk" animation.

    On a side note, a frame named "null" is just an empty frame that isn't intended to be used. You'd use it to name the "90x94" empty frames on your spritesheet.
    tl;dr good luck naming 245 frames!

    also: your patch wouldn't work? I don't have the original anymore so here's what I wrote instead:
    Code:
    [
       {
         "op": "add",
         "path": "/aiAnimations/miega_blank",
         "value": {
           "frames": "direwolf.png:miega_blank.<index>",
           "mode": "stop",
           "frameNumber": 1,
           "animationCycle": 5,
           "centered": false
         }
       },
       {
         "op": "add",
         "path": "/aiAnimations/miega_idle",
         "value": {
           "frames": "direwolf.png:miega_idle.<index>",
           "mode": "stop",
           "frameNumber": 1,
           "animationCycle": 5,
           "centered": false
         }
       },
       {
         "op": "add",
         "path": "/aiAnimations/miega_smile",
         "value": {
           "frames": "direwolf.png:miega_smile.<index>",
           "mode": "stop",
           "frameNumber": 1,
           "animationCycle": 5,
           "centered": false
         }
       },
       {
         "op": "add",
         "path": "/aiAnimations/miega_blink",
         "value": {
           "frames": "direwolf.png:miega_blink.<index>",
           "mode": "loopForever",
           "frameNumber": 24,
           "animationCycle": 5,
           "centered": false
         }
       },
       {
         "op": "add",
         "path": "/aiAnimations/miega_eyebrows",
         "value": {
           "frames": "direwolf.png:miega_eyebrows.<index>",
           "mode": "loop",
           "frameNumber": 4,
           "animationCycle": 5,
           "centered": false
         }
       },
       {
         "op": "add",
         "path": "/aiAnimations/miega_talk",
         "value": {
           "frames": "direwolf.png:miega_talk.<index>",
           "mode": "loopForever",
           "frameNumber": 32,
           "animationCycle": 5,
           "centered": false
         }
       },
       {
         "op": "add",
         "path": "/aiAnimations/miega_grin",
         "value": {
           "frames": "direwolf.png:miega_grin.<index>",
           "mode": "stop",
           "frameNumber": 36,
           "animationCycle": 5,
           "centered": false
         }
       },
       {
         "op": "add",
         "path": "/aiAnimations/miega_ohno",
         "value": {
           "frames": "direwolf.png:miega_ohno.<index>",
           "mode": "stop",
           "frameNumber": 5,
           "animationCycle": 5,
           "centered": false
         }
       },
       {
         "op": "add",
         "path": "/aiAnimations/miega_pawsup",
         "value": {
           "frames": "direwolf.png:miega_pawsup.<index>",
           "mode": "stop",
           "frameNumber": 17,
           "animationCycle": 5,
           "centered": false
         }
       },
       {
         "op": "add",
         "path": "/aiAnimations/miega_pawsdown",
         "value": {
           "frames": "direwolf.png:miega_pawsdown.<index>",
           "mode": "stop",
           "frameNumber": 11,
           "animationCycle": 5,
           "centered": false
         }
       },
       {
         "op": "add",
         "path": "/aiAnimations/miega_laughloop",
         "value": {
           "frames": "direwolf.png:miega_laughloop.<index>",
           "mode": "loopForever",
           "frameNumber": 2,
           "animationCycle": 5,
           "centered": false
         }
       },
       {
         "op": "add",
         "path": "/aiAnimations/miega_heyloop",
         "value": {
           "frames": "direwolf.png:miega_heyloop.<index>",
           "mode": "loopForever",
           "frameNumber": 2,
           "animationCycle": 5,
           "centered": false
         }
       },
       {
         "op": "add",
         "path": "/aiAnimations/miega_waving",
         "value": {
           "frames": "direwolf.png:miega_waveing.<index>",
           "mode": "stop",
           "frameNumber": 11,
           "animationCycle": 5,
           "centered": false
         }
       },
       {
         "op": "add",
         "path": "/aiAnimations/miega_frown",
         "value": {
           "frames": "direwolf.png:miega_frown.<index>",
           "mode": "stop",
           "frameNumber": 24,
           "animationCycle": 5,
           "centered": false
         }
       },
       {
         "op": "add",
         "path": "/aiAnimations/miega_frowna",
         "value": {
           "frames": "direwolf.png:miega_frowna.<index>",
           "mode": "stop",
           "frameNumber": 8,
           "animationCycle": 5,
           "centered": false
         }
       },
       {
         "op": "add",
         "path": "/aiAnimations/miega_frown2",
         "value": {
           "frames": "direwolf.png:miega_frown2.<index>",
           "mode": "stop",
           "frameNumber": 36,
           "animationCycle": 5,
           "centered": false
         }
       },
       {
         "op": "add",
         "path": "/species/direwolf",
         "value": {
           "aiFrames": "direwolf.png",
           "portraitFrames": "portraits/direwolf.png",
           "staticFrames": "staticDirewolf.png"
         }
       }
    ]
    
     
  13. Dilrax

    Dilrax Ketchup Robot

    sorry about the late response, was busy getting everything else such as everyday life done and sorted out, people included so i didn't have 10 different things dumped on me all at once again... i will admit ever since the change over with the frames back in the giraffe versions it gave me alot of issues, never really had much of a problem before that, and there had been a considerable amount of time since the last change i had made to the mod and when i picked it up again a couple of weeks prior to this, the name difference's would have been most likely because i had two different versions of the files one doing one thing the other doing another such as trying it as a chatbubble portrait rather then in the ai folder, oddly it was the only time i had something work but they were... oversized static frames with their own set of issues, so i might have gotten those mixed up when i gave up to go and sort everything else out that had been thrown my way... had woken up with a headache that later turned into a bad migrain an half hour after the last post which that then put me out of commission for the rest of the day and a few hours into the night.

    Edit:
    i guess i did get my files mixed up... just looked at the one that had been sent... and well... that's annoying, to say the least... it was meant to have the other one which was the uptodate file i was testing with *facepalms* that was in the interface/chatbubbles/ folder... which would have looked something like this... also naming 245 frames in a relatively small time is easy... if your using notepad++, Search > Replace:[ Find What: "x", Replace with: "X" ]

    Code:
    "names" : [
          ["miega_talk.0", "miega_talk.1", "miega_talk.2", "miega_talk.3", "miega_talk.4", "miega_talk.5", "miega_talk.6", "miega_talk.7", "miega_talk.8", "miega_talk.9", "miega_talk.10", "miega_talk.11", "miega_talk.12", "miega_talk.13", "miega_talk.14", "miega_talk.15", "miega_talk.16", "miega_talk.17", "miega_talk.18", "miega_talk.19", "miega_talk.20", "miega_talk.21", "miega_talk.22", "miega_talk.23", "miega_talk.24", "miega_talk.25", "miega_talk.26", "miega_talk.27", "miega_talk.28", "miega_talk.29", "miega_talk.30", "miega_talk.31", null, "miega_smile.0", "miega_idle.0", null],
          ["miega_talkshort.0", "miega_talkshort.1", null, "miega_eartwitch.0", "miega_eartwitch.1", "miega_eartwitch.2", "miega_eartwitch.3", null, "miega_eyebrows.0", "miega_eyebrows1", "miega_eyebrows.2", "miega_eyebrows.3", null, "miega_laughloop.0", "miega_laughloop.1", null, "miega_here.0", "miega_here.1", "miega_here.2", "miega_here.3", "miega_here.4", "miega_here.5", "miega_here.6", "miega_here.7", "miega_here.8", "miega_here.9", "miega_here.10", "miega_here.11", "miega_here.12", "miega_here13", "miega_here.14", "miega_here.15", "miega_here.16", null, "miega_blank.0", null],
          ["miega_blink.0", "miega_blink.1", "miega_blink.2", "miega_blink.3", "miega_blink.4", "miega_blink.5", "miega_blink.6", "miega_blink.7", "miega_blink.8", "miega_blink.9", "miega_blink.10", "miega_blink.11", "miega_blink.12", "miega_blink.13", "miega_blink.14", "miega_blink.15", "miega_blink.16", "miega_blink.17", "miega_blink.18", "miega_blink.19", "miega_blink.20", "miega_blink.21", "miega_blink.22", "miega_blink.23", null, "miega_heyloop.0", "miega_heyloop.1", null, null, null, null, null, null, null, null, null],
          ["miega_frown.0", "miega_frown.1", "miega_frown.2", "miega_frown.3", "miega_frown.4", "miega_frown.5", "miega_frown.6", "miega_frown.7", "miega_frown.8", "miega_frown.9", "miega_frown.10", "miega_frown.11", "miega_frown.12", "miega_frown.13", "miega_frown.14", "miega_frown.15", "miega_frown.16", "miega_frown.17", "miega_frown.18", "miega_frown19", "miega_frown.20", "miega_frown.21", "miega_frown.22", "miega_frown.23", "miega_frown.24", "miega_frown.25", "miega_frown.26", "miega_frown.27", "miega_frown.28", "miega_frown.29", "miega_frown.30", "miega_frown.31", null, null, null, null],
         ["miega_frownb.0", "miega_frownb.1", "miega_frownb.2", "miega_frownb.3", "miega_frownb.4", "miega_frownb.5", "miega_frownb.6", "miega_frownb.7", "miega_frownb.8", "miega_frownb.9", "miega_frownb.10", "miega_frownb.11", "miega_frownb.12", "miega_frownb.13", "miega_frownb.14", "miega_frownb.15", "miega_frownb.16", "miega_frownb.17", "miega_frownb.18", "miega_frownb.19", "miega_frownb.20", "miega_frownb.21", "miega_frownb.22", "miega_frownb.23", "miega_frownb.24", "miega_frownb.25", "miega_frownb.26", "miega_frownb.27", "miega_frownb.28", "miega_frownb.29", "miega_frownb.30", "miega_frownb.31", "miega_frownb.32", "miega_frownb.33", "miega_frownb.34", "miega_frownb.35"],
         ["miega_grin.0", "miega_grin.1", "miega_grin.2", "miega_grin.3", "miega_grin.4", "miega_grin.5", "miega_grin.6", "miega_grin.7", "miega_grin.8", "miega_grin.9", "miega_grin.10", "miega_grin.11", "miega_grin.12", "miega_grin.13", "miega_grin.14", "miega_grin.15", "miega_grin.16", "miega_grin.17", "miega_grin.18", "miega_grin.19", "miega_grin.20", "miega_grin.21", "miega_grin.22", "miega_grin.23", "miega_grin.24", "miega_grin.25", "miega_grin.26", "miega_grin.27", "miega_grin.28", "miega_grin.29", "miega_grin.30", "miega_grin.31", "miega_grin.32", "miega_grin.33", "miega_grin.34", "miega_grin.35"],
         ["miega_pawsup.0", "miega_pawsup.1", "miega_pawsup.2", "miega_pawsup.3", "miega_pawsup.4", "miega_pawsup.5", "miega_pawsup.6", "miega_pawsup.7", "miega_pawsup.8", "miega_pawsup.9", "miega_pawsup.10", "miega_pawsup.11", "miega_pawsup.12", "miega_pawsup.13", "miega_pawsup.14", "miega_pawsup.15", "miega_pawsup.16", "miega_pawsdown.0", "miega_pawsdown.1", "miega_pawsdown.2", "miega_pawsdown.3", "miega_pawsdown.4", "miega_pawsdown.5", "miega_pawsdown.6", "miega_pawsdown.7", "miega_pawsdown.8", "miega_pawsdown.9", "miega_pawsdown.10", null, null, null, null, null, null, null, null],
         ["miega_waving.0", "miega_waving.1", "miega_waving.2", "miega_waving.3", "miega_waving.4", "miega_waving.5", "miega_waving.6", "miega_waving.7", "miega_waving.8", "miega_waving.9", "miega_waving.10", "miega_waving.11", "miega_waving.12", "miega_waving.13", "miega_waving.14", "miega_waving.15", "miega_waving.16", "miega_waving.17", "miega_waving.18", "miega_waving.19", "miega_waving.20", "miega_waving.21", "miega_waving.22", null, null, null, null, null, null, null, null, null, null, null, null, null],
         [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null]
         ]
    guess my mind is still a bit out of the loop... even now... x-x
     
  14. Dilrax

    Dilrax Ketchup Robot

    Code:
    [11:08:11.282] [Info] Root: Loaded CollectionDatabase in 90.2435 seconds
    [11:09:24.694] [Error] Application: exception thrown, shutting down: (MapException) Key 'loop' not found in Map::get()
    [0] 140017153 Star::captureStack
    [1] 140015ede Star::StarException::StarException
    [2] 14006ca34 Star::MapMixin<std::unordered_map<Star::String,enum Star::Animation::AnimationMode const * __ptr64,Star::CaseInsensitiveStringHash,Star::CaseInsensitiveStringCompare,std::allocator<std::pair<Star::String const ,enum Star::Animation::AnimationMode const * __ptr64> > > >::get
    [3] 14006b8e1 Star::Animation::Animation
    [4] 140062cc3 Star::AiDatabase::AiDatabase
    [5] 1403c3b05 std::make_shared<Star::AiDatabase>
    [6] 1403c96b9 <lambda_6a87c2c573e7f1d5b1ca1296eaaef5b7>::operator()
    [7] 1403baf1f std::_Invoker_functor::_Call<<lambda_6a87c2c573e7f1d5b1ca1296eaaef5b7> & __ptr64>
    [8] 1403bee06 std::invoke<<lambda_6a87c2c573e7f1d5b1ca1296eaaef5b7> & __ptr64>
    [9] 1403bc619 std::_Invoke_ret<std::shared_ptr<Star::AiDatabase>,<lambda_6a87c2c573e7f1d5b1ca1296eaaef5b7> & __ptr64>
    [10] 1403cb916 std::_Func_impl<<lambda_6a87c2c573e7f1d5b1ca1296eaaef5b7>,std::allocator<int>,std::shared_ptr<Star::AiDatabase> >::_Do_call
    [11] 1403ca337 std::_Func_class<std::shared_ptr<Star::DamageDatabase> >::operator()
    [12] 1403bfe03 Star::Root::loadMemberFunction<Star::AiDatabase>
    [13] 1403bf1e9 Star::Root::loadMember<Star::AiDatabase>
    [14] 1403cd412 Star::Root::aiDatabase
    [15] 1403bb3a0 std::_Invoker_pmf_pointer::_Call<std::shared_ptr<Star::CollectionDatabase const > (__cdecl Star::Root::*)(void) __ptr64,Star::Root * __ptr64 & __ptr64>
    [16] 1403bebd9 std::invoke<std::shared_ptr<Star::VersioningDatabase const > (__cdecl Star::Root::*& __ptr64)(void) __ptr64,Star::Root * __ptr64 & __ptr64>
    [17] 1403bc5ec std::_Invoke_ret<std::shared_ptr<Star::Configuration> (__cdecl Star::Root::*& __ptr64)(void) __ptr64,Star::Root * __ptr64 & __ptr64>
    [18] 1403bb42e std::_Call_binder<std::_Unforced,0,std::shared_ptr<Star::StagehandDatabase const > (__cdecl Star::Root::*)(void) __ptr64,std::tuple<Star::Root * __ptr64>,std::tuple<> >
    [19] 1403bab8e std::_Binder<std::_Unforced,std::shared_ptr<Star::LiquidsDatabase const > (__cdecl Star::Root::*)(void) __ptr64,Star::Root * __ptr64 const>::operator()<>
    [20] 1403cb592 std::_Func_impl<Star::SwallowReturn<std::_Binder<std::_Unforced,std::shared_ptr<Star::TreasureDatabase const > (__cdecl Star::Root::*)(void) __ptr64,Star::Root * __ptr64 const> >,std::allocator<int>,void>::_Do_call
    [21] 14000dc1b <lambda_7b083dc4bdd496712d99e51bb49515b5>::operator()
    [22] 14000ea42 Star::WorkerPool::WorkerThread::run
    [23] 140013c5e Star::ThreadImpl::runThread
    [24] 776459cd BaseThreadInitThunk
    [25] 7777a561 RtlUserThreadStart
    [11:09:24.694] [Info] Application: shutdown...
    [11:09:24.884] [Info] Root: Shutting down Root
    [11:09:25.918] [Info] Application: Destroying SDL Window
    [11:09:25.952] [Info] Application: stopped gracefully
    
    even with the right frames and all for what ever reason it still fails...
     

Share This Page