Modding Help Help Turning Custom Monster Into Mod

Discussion in 'Starbound Modding' started by FireSpark81, Feb 11, 2017.

  1. FireSpark81

    FireSpark81 Void-Bound Voyager

    So say I have a custom monster spawn command like http://pastebin.com/VvrMs9p2. How would I go about turning this into a modded creature that say, spawns in the bones biome? Is there an easy way to go about this?
     
  2. bk3k

    bk3k Oxygen Tank

    Yes that's fairly easy although it won't be terribly easy to read until you fix the whitespace. I'm also assuming you've unpacked the vanilla assets already.

    Copy the folder for
    /monsters/generated/ground/largequadruped/
    but obviously rename the folder itself. Also rename the largequadruped.monstertype file to the sameName.monstertype. Don't literally use "sameName". Do something like FireSpark81_largequadruped.monstertype so that it would be unique(no other mod would accidentally use the nameSpace).

    Now edit the cloned monstertype file. Select all the text and paste that blob of text you have. Not all of it, but everything following 1. Don't include ' either but everything 'within' you'd copy into the file. Now before you go adding it to a biome, test it first. I suppose you already know how.

    If you get errors about something missing, copy the missing information from the vanilla largequadruped.monstertype file. Right off I think you're missing a base level "type" so add in
    "type" : "FireSpark81_largequadruped"
    If that doesn't work out(too much missing), copy back in the whole file, and one at a time copy over the values from the blob of text.

    Once you have a monster that spawns properly, make folders in your mod for
    /biomes/surface_detached/ and create a new file within called bones.biome.patch.
    And the text of it would be

    Code:
    [
      [
        {
          "op" : "add",
          "path" : "/spawnProfile/groups/0/pool/0/-",
          "value" : [ 1.0, "FireSpark81_largequadruped" ]
        }
      ]
    ]
    But come to think of it... in this exact case you could actually skip the new monster phase. You could get by with ONLY that patch file if it looked like this instead

    Code:
    [
      [
        {
          "op" : "add",
          "path" : "/spawnProfile/groups/-",
          "value" : {
            "select" : 1,
            "pool" : [
              [ 1.0, "largequadruped" ]
            ],
            "parameters" : {
              "shortdescription":"Golemasta", "description":"", "animationCustom":{"sounds":{"aggroHop":["/sfx/npc/boss/robotboss_turnhostile.ogg"], "deathPuff":["/sfx/npc/boss/robotboss_deathwithstatic.ogg"], "fire":["sfx/gun/aegisaltpistol_start.ogg"], "crash":["/sfx/melee/blunt_kill_stone4.ogg"]}, "animatedParts":{"stateTypes":{"chest":{"states":{"firewindup":{"frames":1}, "fire":{"frames":4, "cycle":0.4, "mode":"loop"}, "firewinddown":{"frames":1}}}}, "parts":{"backArm":{"partStates":{"chest":{"firewindup":{"properties":{"image":"<partImage>:melee.1"}}, "fire":{"properties":{"image":"<partImage>:melee.<frame>"}}, "firewinddown":{"properties":{"image":"<partImage>:jump"}}}}}, "frontArm":{"partStates":{"chest":{"firewindup":{"properties":{"image":"<partImage>:melee.1"}}, "fire":{"properties":{"image":"<partImage>:melee.<frame>"}}, "firewinddown":{"properties":{"image":"<partImage>:jump"}}}}}, "chest":{"partStates":{"chest":{"firewindup":{"properties":{"image":"<partImage>:walk.8"}}, "fire":{"properties":{"image":"<partImage>:idle"}}, "firewinddown":{"properties":{"image":"<partImage>:walk.8"}}}}}, "tail":{"partStates":{"chest":{"firewindup":{"properties":{"image":"<partImage>:idle.1"}}, "fire":{"properties":{"image":"<partImage>:melee.1"}}, "firewinddown":{"properties":{"image":"<partImage>:idle.1"}}}}}, "head":{"partStates":{"chest":{"firewindup":{"properties":{"image":"<partImage>:rotation"}}, "fire":{"properties":{"image":"<partImage>:melee.<frame>"}}, "firewinddown":{"properties":{"image":"<partImage>:jump"}}}}}}}}, "skillCount":0, "baseSkills":[], "specialSkills":[], "behaviorConfig":{"damageOnTouch":true, "keepTargetInSight":false, "projectileOffset":[1.0, 1.5], "windupTime":0.25, "winddownTime":0.0, "hostileActions":[{"name":"action-fire", "cooldown":4, "parameters":{"skillName":"The Hive", "maximumRange":25, "minimumRange":10, "windupEffect":"ghostlyglow", "windupState":"firewindup", "fireState":"fire", "winddownState":"firewinddown", "windupTime":0.0, "winddownTime":0.05, "fireDelay":0.1, "projectileType":"hivebomb", "projectileParameters":{"speed":180, "power":5, "timeToLive":1.00, "piercing":false, "statusEffects":["weakpoison"], "damageTeam":{"type":"enemy"}, "periodicActions":[{"time":0.0, "repeat":false, "action":"projectile", "type":"acidexplosion", "angleAdjust":60, "inheritDamageFactor":0.5, "config":{"projectileCount":5, "speed":5, "timeToLive":2.00, "piercing":false}}]}, "aimAtTarget":false, "projectileCount":1, "fireArc":true, "projectileSpeed":5}}, {"name":"action-leap", "cooldown":3.0, "parameters":{"skillName":"golemSmash", "minimumRange":2, "maximumRange":20, "windupTime":0.25, "windupState":"chargewindup", "leapVelocity":50, "collisionCheck":true, "highArc":true, "leapState":"jump", "fallState":"", "winddownTime":0.25, "winddownState":"idle"}}, {"name":"action-fire", "cooldown":5, "parameters":{"skillName":"skyhammer", "maximumRange":35, "minimumRange":15, "windupEffect":"minibossglow", "windupState":"firewindup", "fireState":"fire", "winddownState":"firewinddown", "windupTime":0.75, "winddownTime":0.25, "fireDelay":0.1, "projectileType":"redglobe", "projectileParameters":{"damageTeam":{"type":"enemy"}, "speed":75, "power":10, "timeToLive":5}, "aimAtTarget":true, "inaccuracy":0.3, "projectileCount":10, "projectileInterval":0.1, "fireArc":false, "projectileSpeed":75}}, {"name":"action-charge", "cooldown":4.0, "parameters":{"skillName":"golemCharge", "minimumRange":5, "maximumRange":20, "windupTime":0.25, "chargeTime":1.0, "chargeSpeed":50, "chargeControlForce":300, "winddownTime":0}}]}, "bodyMaterialKind":"robotic", "movementSettings":{"walkSpeed":4, "runSpeed":13}, "statusSettings":{"statusProperties":{"targetMaterialKind":"robotic"}, "stats":{"knockbackStunTime":{"baseValue":0.25}, "knockbackThreshold":{"baseValue":20}, "maxHealth":{"baseValue":50}, "maxShield":{"baseValue":50.0}, "protection":{"baseValue":0.0}, "healthRegen":{"baseValue":0.0}, "shieldRegen":{"baseValue":5.0}, "powerMultiplier":{"baseValue":1.0}}}, "selectedParts":{"legs":"largerhinolegs", "chest":"largearchspikechest", "head":"largecurledhead", "tail":"largesimple1tail"}, "colorSwap":{"6f2919":"151515", "a85636":"303030", "e0975c":"606060", "ffca8a":"939393", "735e3a":"73573a", "a38d59":"a38359", "d9c189":"d9b689", "f7e7b2":"f7deb2", "951500":"be3b3b", "be1b00":"e64545", "dc1f00":"ff6666", "f32200":"ff9f9f"}
            }
          }
        }
      ]
    ]
    Because you can use "parameters" to over-ride the JSON value of what you're spawning just the same as if using the /spawnmonster command. You can do the same thing in treasurepools etc.
     
    IHart likes this.
  3. FireSpark81

    FireSpark81 Void-Bound Voyager

    It's giving me this error Caused by: (JsonException) No such key in Json::get("parts"). I'm using the new monster method.

    Full log

    Code:
    [14:36:09.139] [Info] Root: Preparing Root...
    [14:36:09.139] [Info] Root: Done preparing Root.
    [14:36:09.139] [Info] Client Version 1.2.2 (windows x86_64) Source ID: 8656b8d30f3e41248de5868d2168c96962fbf6b2 Protocol: 729
    [14:36:09.139] [Info] Root: Scanning for asset sources in directory '..\assets\'
    [14:36:09.295] [Info] Root: Scanning for asset sources in directory '..\mods\'
    [14:36:09.296] [Warn] Root: Unrecognized file in asset directory 'Mod helper.bat', skipping
    [14:36:09.296] [Warn] Root: Unrecognized file in asset directory 'ModPackHelper.log', skipping
    [14:36:09.310] [Warn] Root: Unrecognized file in asset directory 'mods_go_here', skipping
    [14:36:09.310] [Info] Root: Detected asset source named 'base' at '..\assets\packed.pak'
    [14:36:09.311] [Info] Root: Detected asset source named 'Manipulated UI' at '..\mods\ManipulatedUI.pak'
    [14:36:09.311] [Info] Root: Detected asset source named 'Capturemon' at '..\mods\Capturmon'
    [14:36:09.311] [Info] Root: Detected asset source named 'SpawnableItemPack' at '..\mods\SpawnableItemPack'
    [14:36:09.311] [Info] Root: Detected asset source named 'AdvancedProximitySensor' at '..\mods\APS.pak'
    [14:36:09.311] [Info] Root: Detected asset source named 'ItemInterfaces' at '..\mods\ItemInterfaces.pak'
    [14:36:09.311] [Info] Root: Detected asset source named 'SaplingMaker' at '..\mods\SaplingMaker_v3.0.pak'
    [14:36:09.311] [Info] Root: Detected asset source named 'Pixel Goods Store' at '..\mods\contents (10).pak'
    [14:36:09.311] [Info] Root: Detected asset source named 'Universal Uncrafter v1.46' at '..\mods\contents (11).pak'
    [14:36:09.311] [Info] Root: Detected asset source named 'Weapon Stats' at '..\mods\contents (12).pak'
    [14:36:09.311] [Info] Root: Detected asset source named 'gdz' at '..\mods\contents (13).pak'
    [14:36:09.311] [Info] Root: Detected asset source named 'Azure's Star Wars Weapons & Armour' at '..\mods\contents (2).pak'
    [14:36:09.311] [Info] Root: Detected asset source named 'ContainerUITweak' at '..\mods\contents (3).pak'
    [14:36:09.311] [Info] Root: Detected asset source named 'environmentSafety' at '..\mods\contents (4).pak'
    [14:36:09.311] [Info] Root: Detected asset source named 'Phase Shift Module v1.32' at '..\mods\contents (5).pak'
    [14:36:09.311] [Info] Root: Detected asset source named 'PulsePistols' at '..\mods\contents (6).pak'
    [14:36:09.311] [Info] Root: Detected asset source named 'TracerBlink' at '..\mods\contents (7).pak'
    [14:36:09.311] [Info] Root: Detected asset source named 'Time Control Tech' at '..\mods\contents (8).pak'
    [14:36:09.311] [Info] Root: Detected asset source named 'WeaponAssembly' at '..\mods\contents (9).pak'
    [14:36:09.311] [Info] Root: Detected asset source named 'Enhanced Storage' at '..\mods\contents.pak'
    [14:36:09.312] [Info] Root: Detected asset source named 'WEdit' at '..\mods\WEdit.pak'
    [14:36:09.312] [Info] Root: Detected unnamed asset source at '..\assets\user'
    [14:36:09.312] [Info] Loading assets from: '..\assets\packed.pak'
    [14:36:09.536] [Info] Loading assets from: '..\mods\ManipulatedUI.pak'
    [14:36:09.537] [Info] Loading assets from: '..\mods\Capturmon'
    [14:36:09.537] [Info] Loading assets from: '..\mods\SpawnableItemPack'
    [14:36:09.543] [Info] Loading assets from: '..\mods\APS.pak'
    [14:36:09.544] [Info] Loading assets from: '..\mods\ItemInterfaces.pak'
    [14:36:09.544] [Info] Loading assets from: '..\mods\SaplingMaker_v3.0.pak'
    [14:36:09.544] [Info] Loading assets from: '..\mods\contents (10).pak'
    [14:36:09.551] [Info] Loading assets from: '..\mods\contents (11).pak'
    [14:36:09.552] [Info] Loading assets from: '..\mods\contents (12).pak'
    [14:36:09.552] [Info] Loading assets from: '..\mods\contents (13).pak'
    [14:36:09.552] [Info] Loading assets from: '..\mods\contents (2).pak'
    [14:36:09.554] [Info] Loading assets from: '..\mods\contents (3).pak'
    [14:36:09.554] [Info] Loading assets from: '..\mods\contents (4).pak'
    [14:36:09.554] [Info] Loading assets from: '..\mods\contents (5).pak'
    [14:36:09.554] [Info] Loading assets from: '..\mods\contents (6).pak'
    [14:36:09.555] [Info] Loading assets from: '..\mods\contents (7).pak'
    [14:36:09.555] [Info] Loading assets from: '..\mods\contents (8).pak'
    [14:36:09.559] [Info] Loading assets from: '..\mods\contents (9).pak'
    [14:36:09.559] [Info] Loading assets from: '..\mods\contents.pak'
    [14:36:09.565] [Info] Loading assets from: '..\mods\WEdit.pak'
    [14:36:09.565] [Info] Loading assets from: '..\assets\user'
    [14:36:10.595] [Info] Assets digest is 97c0dce780c151c0f1cecd6f4a7fae4907a0918b431368d5fac4a7edc10d70dd
    [14:36:10.595] [Info] Root: Loaded Assets in 1.45599 seconds
    [14:36:10.603] [Info] Application: Initializing SDL Video
    [14:36:10.611] [Info] Application: Initializing SDL Joystick
    [14:36:10.794] [Info] Application: Initializing SDL Sound
    [14:36:10.935] [Info] Failed to initialize Steam platform services
    [14:36:10.935] [Info] Application: No platform services available
    [14:36:10.935] [Info] Application: Creating SDL Window
    [14:36:11.096] [Info] Application: Enabling VSync with late swap tearing
    [14:36:11.123] [Info] Application: Opened default audio device with 44.1khz / 16 bit stereo audio, 2048 sample size buffer
    [14:36:11.130] [Info] OpenGL version: '4.5.0 NVIDIA 378.49' vendor: 'NVIDIA Corporation' renderer: 'GeForce GTX 760/PCIe/SSE2' shader: '4.50 NVIDIA'
    [14:36:11.144] [Info] Application: initialization...
    [14:36:11.145] [Info] Root: Loaded Configuration in 0.00087574 seconds
    [14:36:11.148] [Info] Application: renderer initialization...
    [14:36:11.151] [Info] detected supported OpenGL texture size 16384, using atlasNumCells 128
    [14:36:11.151] [Info] detected supported OpenGL texture size 16384, using atlasNumCells 64
    [14:36:11.154] [Info] Root: Loaded ImageMetadataDatabase in 4.87524e-06 seconds
    [14:36:11.182] [Info] Application: main update loop...
    [14:36:11.196] [Info] Root: Loaded NameGenerator in 0.0122645 seconds
    [14:36:11.239] [Error] OpenGL errors this frame:  GL_INVALID_VALUE
    [14:36:11.384] [Info] Root: Loaded PlantDatabase in 0.18762 seconds
    [14:36:12.007] [Info] Root: Loaded ObjectDatabase in 0.822365 seconds
    [14:36:12.481] [Info] Root: Loaded NpcDatabase in 0.0644861 seconds
    [14:36:12.483] [Info] Root: Loaded StagehandDatabase in 0.00216228 seconds
    [14:36:12.490] [Info] Root: Loaded VehicleDatabase in 0.00586076 seconds
    [14:36:12.537] [Info] Root: Loaded PlayerFactory in 0.0475709 seconds
    [14:36:12.845] [Info] Root: Loaded ParticleDatabase in 0.077148 seconds
    [14:36:12.853] [Info] Root: Loaded ProjectileDatabase in 1.46881 seconds
    [14:36:13.072] [Info] Root: Loaded MaterialDatabase in 0.304492 seconds
    [14:36:14.170] [Info] Root: Writing runtime configuration to '..\storage\starbound.config'
    [14:36:14.862] [Info] Root: Loaded CodexDatabase in 0.00339032 seconds
    [14:36:14.944] [Info] Root: Loaded FunctionDatabase in 0.00869325 seconds
    [14:36:16.108] [Info] Root: Loaded ItemDatabase in 3.50954 seconds
    [14:36:16.217] [Error] Application: exception thrown, shutting down: (MonsterException) Error loading monster type '/monsters/walkers/Nyanbound.monstertype'
    [0] 13fdc3763 Star::captureStack
    [1] 13fdc24ee Star::StarException::StarException
    [2] 13fdc25d8 Star::StarException::StarException
    [3] 13ffa9ad0 Star::MonsterException::MonsterException
    [4] 1406a8761 `Star::MonsterDatabase::MonsterDatabase'::`1'::catch$1007
    [5] 7fef427c220 _C_specific_handler
    [6] 7fef42729b2 _FrameUnwindFilter
    [7] 77580c21 RtlRestoreContext
    [8] 13ffa80a8 Star::MonsterDatabase::MonsterDatabase
    [9] 14013e835 std::make_shared<Star::MonsterDatabase>
    [10] 140143169 <lambda_4fb3f86e39b40786b9bca87de4687c0e>::eek:perator()
    [11] 140134d2f std::_Invoker_functor::_Call<<lambda_4fb3f86e39b40786b9bca87de4687c0e> & __ptr64>
    [12] 140138ed6 std::invoke<<lambda_4fb3f86e39b40786b9bca87de4687c0e> & __ptr64>
    [13] 1401369c9 std::_Invoke_ret<std::shared_ptr<Star::MonsterDatabase>,<lambda_4fb3f86e39b40786b9bca87de4687c0e> & __ptr64>
    [14] 140145a16 std::_Func_impl<<lambda_4fb3f86e39b40786b9bca87de4687c0e>,std::allocator<int>,std::shared_ptr<Star::MonsterDatabase> >::_Do_call
    [15] 13fd61eb7 std::_Func_class<Star::Json,Star::Json const & __ptr64,Star::String const & __ptr64>::eek:perator()
    [16] 14013b6f3 Star::Root::loadMemberFunction<Star::MonsterDatabase>
    [17] 140139839 Star::Root::loadMember<Star::MonsterDatabase>
    [18] 14014b2e2 Star::Root::monsterDatabase
    [19] 140135270 std::_Invoker_pmf_pointer::_Call<std::shared_ptr<Star::CodexDatabase const > (__cdecl Star::Root::*)(void) __ptr64,Star::Root * __ptr64 & __ptr64>
    [20] 140138d29 std::invoke<std::shared_ptr<Star::LiquidsDatabase const > (__cdecl Star::Root::*& __ptr64)(void) __ptr64,Star::Root * __ptr64 & __ptr64>
    [21] 14013663c std::_Invoke_ret<std::shared_ptr<Star::LiquidsDatabase const > (__cdecl Star::Root::*& __ptr64)(void) __ptr64,Star::Root * __ptr64 & __ptr64>
    [22] 1401352fe std::_Call_binder<std::_Unforced,0,std::shared_ptr<Star::VersioningDatabase const > (__cdecl Star::Root::*)(void) __ptr64,std::tuple<Star::Root * __ptr64>,std::tuple<> >
    [23] 1401349be std::_Binder<std::_Unforced,std::shared_ptr<Star::MaterialDatabase const > (__cdecl Star::Root::*)(void) __ptr64,Star::Root * __ptr64 const>::eek:perator()<>
    [24] 140145752 std::_Func_impl<Star::SwallowReturn<std::_Binder<std::_Unforced,std::shared_ptr<Star::VehicleDatabase const > (__cdecl Star::Root::*)(void) __ptr64,Star::Root * __ptr64 const> >,std::allocator<int>,void>::_Do_call
    [25] 13fdba1cb <lambda_7b083dc4bdd496712d99e51bb49515b5>::eek:perator()
    [26] 13fdbaf72 Star::WorkerPool::WorkerThread::run
    [27] 13fdc028e Star::ThreadImpl::runThread
    [28] 7732652d BaseThreadInitThunk
    [29] 7755c521 RtlUserThreadStart
    Caused by: (JsonException) No such key in Json::get("parts")
    [0] 13fdc3763 Star::captureStack
    [1] 13fdc24ee Star::StarException::StarException
    [2] 13fd65079 Star::Json::get
    [3] 13ffa80a8 Star::MonsterDatabase::MonsterDatabase
    [4] 14013e835 std::make_shared<Star::MonsterDatabase>
    [5] 140143169 <lambda_4fb3f86e39b40786b9bca87de4687c0e>::eek:perator()
    [6] 140134d2f std::_Invoker_functor::_Call<<lambda_4fb3f86e39b40786b9bca87de4687c0e> & __ptr64>
    [7] 140138ed6 std::invoke<<lambda_4fb3f86e39b40786b9bca87de4687c0e> & __ptr64>
    [8] 1401369c9 std::_Invoke_ret<std::shared_ptr<Star::MonsterDatabase>,<lambda_4fb3f86e39b40786b9bca87de4687c0e> & __ptr64>
    [9] 140145a16 std::_Func_impl<<lambda_4fb3f86e39b40786b9bca87de4687c0e>,std::allocator<int>,std::shared_ptr<Star::MonsterDatabase> >::_Do_call
    [10] 13fd61eb7 std::_Func_class<Star::Json,Star::Json const & __ptr64,Star::String const & __ptr64>::eek:perator()
    [11] 14013b6f3 Star::Root::loadMemberFunction<Star::MonsterDatabase>
    [12] 140139839 Star::Root::loadMember<Star::MonsterDatabase>
    [13] 14014b2e2 Star::Root::monsterDatabase
    [14] 140135270 std::_Invoker_pmf_pointer::_Call<std::shared_ptr<Star::CodexDatabase const > (__cdecl Star::Root::*)(void) __ptr64,Star::Root * __ptr64 & __ptr64>
    [15] 140138d29 std::invoke<std::shared_ptr<Star::LiquidsDatabase const > (__cdecl Star::Root::*& __ptr64)(void) __ptr64,Star::Root * __ptr64 & __ptr64>
    [16] 14013663c std::_Invoke_ret<std::shared_ptr<Star::LiquidsDatabase const > (__cdecl Star::Root::*& __ptr64)(void) __ptr64,Star::Root * __ptr64 & __ptr64>
    [17] 1401352fe std::_Call_binder<std::_Unforced,0,std::shared_ptr<Star::VersioningDatabase const > (__cdecl Star::Root::*)(void) __ptr64,std::tuple<Star::Root * __ptr64>,std::tuple<> >
    [18] 1401349be std::_Binder<std::_Unforced,std::shared_ptr<Star::MaterialDatabase const > (__cdecl Star::Root::*)(void) __ptr64,Star::Root * __ptr64 const>::eek:perator()<>
    [19] 140145752 std::_Func_impl<Star::SwallowReturn<std::_Binder<std::_Unforced,std::shared_ptr<Star::VehicleDatabase const > (__cdecl Star::Root::*)(void) __ptr64,Star::Root * __ptr64 const> >,std::allocator<int>,void>::_Do_call
    [20] 13fdba1cb <lambda_7b083dc4bdd496712d99e51bb49515b5>::eek:perator()
    [21] 13fdbaf72 Star::WorkerPool::WorkerThread::run
    [22] 13fdc028e Star::ThreadImpl::runThread
    [23] 7732652d BaseThreadInitThunk
    [24] 7755c521 RtlUserThreadStart
    [14:36:16.217] [Info] Application: shutdown...
    [14:36:16.322] [Info] Root: Shutting down Root
    [14:36:16.547] [Info] Application: Destroying SDL Window
    [14:36:16.558] [Info] Application: stopped gracefully
    
     
    Last edited: Feb 11, 2017
  4. bk3k

    bk3k Oxygen Tank

    Well I mentioned that might happen. The JSON blob apparently only changes some value - a lot of them but not all. As such you need to fill in the rest from the vanilla file.

    No such key in Json::get("parts")
    means what it says. You need to copy "parts" from the vanilla file into your new monster. Possibly after that you'll get another error about something else missing.

    "parts" in the vanilla file is this(line 5)
    Code:
      "parts" : [ "legs", "chest", "tail", "head" ],
    But I bet that isn't going to be the last error. It would probably be easier - if you're going the new monster path - to start over with vanilla code and change the values you find in the JSON you provided.
    And an easy swap of space for \n...

    Code:
    {
    "shortdescription":"Golemasta",
    "description":"",
    "animationCustom":{"sounds":{"aggroHop":["/sfx/npc/boss/robotboss_turnhostile.ogg"],
    "deathPuff":["/sfx/npc/boss/robotboss_deathwithstatic.ogg"],
    "fire":["sfx/gun/aegisaltpistol_start.ogg"],
    "crash":["/sfx/melee/blunt_kill_stone4.ogg"]},
    "animatedParts":{"stateTypes":{"chest":{"states":{"firewindup":{"frames":1},
    "fire":{"frames":4,
    "cycle":0.4,
    "mode":"loop"},
    "firewinddown":{"frames":1}}}},
    "parts":{"backArm":{"partStates":{"chest":{"firewindup":{"properties":{"image":"<partImage>:melee.1"}},
    "fire":{"properties":{"image":"<partImage>:melee.<frame>"}},
    "firewinddown":{"properties":{"image":"<partImage>:jump"}}}}},
    "frontArm":{"partStates":{"chest":{"firewindup":{"properties":{"image":"<partImage>:melee.1"}},
    "fire":{"properties":{"image":"<partImage>:melee.<frame>"}},
    "firewinddown":{"properties":{"image":"<partImage>:jump"}}}}},
    "chest":{"partStates":{"chest":{"firewindup":{"properties":{"image":"<partImage>:walk.8"}},
    "fire":{"properties":{"image":"<partImage>:idle"}},
    "firewinddown":{"properties":{"image":"<partImage>:walk.8"}}}}},
    "tail":{"partStates":{"chest":{"firewindup":{"properties":{"image":"<partImage>:idle.1"}},
    "fire":{"properties":{"image":"<partImage>:melee.1"}},
    "firewinddown":{"properties":{"image":"<partImage>:idle.1"}}}}},
    "head":{"partStates":{"chest":{"firewindup":{"properties":{"image":"<partImage>:rotation"}},
    "fire":{"properties":{"image":"<partImage>:melee.<frame>"}},
    "firewinddown":{"properties":{"image":"<partImage>:jump"}}}}}}}},
    "skillCount":0,
    "baseSkills":[],
    "specialSkills":[],
    "behaviorConfig":{"damageOnTouch":true,
    "keepTargetInSight":false,
    "projectileOffset":[1.0,
    1.5],
    "windupTime":0.25,
    "winddownTime":0.0,
    "hostileActions":[{"name":"action-fire",
    "cooldown":4,
    "parameters":{"skillName":"The
    Hive",
    "maximumRange":25,
    "minimumRange":10,
    "windupEffect":"ghostlyglow",
    "windupState":"firewindup",
    "fireState":"fire",
    "winddownState":"firewinddown",
    "windupTime":0.0,
    "winddownTime":0.05,
    "fireDelay":0.1,
    "projectileType":"hivebomb",
    "projectileParameters":{"speed":180,
    "power":5,
    "timeToLive":1.00,
    "piercing":false,
    "statusEffects":["weakpoison"],
    "damageTeam":{"type":"enemy"},
    "periodicActions":[{"time":0.0,
    "repeat":false,
    "action":"projectile",
    "type":"acidexplosion",
    "angleAdjust":60,
    "inheritDamageFactor":0.5,
    "config":{"projectileCount":5,
    "speed":5,
    "timeToLive":2.00,
    "piercing":false}}]},
    "aimAtTarget":false,
    "projectileCount":1,
    "fireArc":true,
    "projectileSpeed":5}},
    {"name":"action-leap",
    "cooldown":3.0,
    "parameters":{"skillName":"golemSmash",
    "minimumRange":2,
    "maximumRange":20,
    "windupTime":0.25,
    "windupState":"chargewindup",
    "leapVelocity":50,
    "collisionCheck":true,
    "highArc":true,
    "leapState":"jump",
    "fallState":"",
    "winddownTime":0.25,
    "winddownState":"idle"}},
    {"name":"action-fire",
    "cooldown":5,
    "parameters":{"skillName":"skyhammer",
    "maximumRange":35,
    "minimumRange":15,
    "windupEffect":"minibossglow",
    "windupState":"firewindup",
    "fireState":"fire",
    "winddownState":"firewinddown",
    "windupTime":0.75,
    "winddownTime":0.25,
    "fireDelay":0.1,
    "projectileType":"redglobe",
    "projectileParameters":{"damageTeam":{"type":"enemy"},
    "speed":75,
    "power":10,
    "timeToLive":5},
    "aimAtTarget":true,
    "inaccuracy":0.3,
    "projectileCount":10,
    "projectileInterval":0.1,
    "fireArc":false,
    "projectileSpeed":75}},
    {"name":"action-charge",
    "cooldown":4.0,
    "parameters":{"skillName":"golemCharge",
    "minimumRange":5,
    "maximumRange":20,
    "windupTime":0.25,
    "chargeTime":1.0,
    "chargeSpeed":50,
    "chargeControlForce":300,
    "winddownTime":0}}]},
    "bodyMaterialKind":"robotic",
    "movementSettings":{"walkSpeed":4,
    "runSpeed":13},
    "statusSettings":{"statusProperties":{"targetMaterialKind":"robotic"},
    "stats":{"knockbackStunTime":{"baseValue":0.25},
    "knockbackThreshold":{"baseValue":20},
    "maxHealth":{"baseValue":50},
    "maxShield":{"baseValue":50.0},
    "protection":{"baseValue":0.0},
    "healthRegen":{"baseValue":0.0},
    "shieldRegen":{"baseValue":5.0},
    "powerMultiplier":{"baseValue":1.0}}},
    "selectedParts":{"legs":"largerhinolegs",
    "chest":"largearchspikechest",
    "head":"largecurledhead",
    "tail":"largesimple1tail"},
    "colorSwap":{"6f2919":"151515",
    "a85636":"303030",
    "e0975c":"606060",
    "ffca8a":"939393",
    "735e3a":"73573a",
    "a38d59":"a38359",
    "d9c189":"d9b689",
    "f7e7b2":"f7deb2",
    "951500":"be3b3b",
    "be1b00":"e64545",
    "dc1f00":"ff6666",
    "f32200":"ff9f9f"}
    }
    


    You can take what's there to replace the equivalent vanilla code. If you don't find a match in vanilla... add it anyhow. In this case though you might find the 2nd path easier, but I just made the new monster path a bit easier I hope.
     
  5. FireSpark81

    FireSpark81 Void-Bound Voyager

    First thanks so much for all the help and sorry if I'm a pain in the ass I get the code a bit but I have mainly been learning to spawn in custom monsters. Modding is totally new to me although it does not seem to difficult I just need to get my barrings. Also the code for spawning is sloppy compared to modding so there is that lol.
    To spawn this custom monster in you have to create a custom animation. Because there is no animation for a largequad to fire a projectile. That is what it is talking about in the "parts".
    Code:
    "animatedParts":{"stateTypes":{"chest":{"states":{"firewindup":{"frames":1}, "fire":{"frames":4, "cycle":0.4, "mode":"loop"}, "firewinddown":{"frames":1}}}}, [bold]"parts"[/bold]:{"backArm":{"partStates":{"chest":{"firewindup":{"properties":{"image":"<partImage>:melee.1"}}, "fire":{"properties":{"image":"<partImage>:melee.<frame>"}}, "firewinddown":{"properties":{"image":"<partImage>:jump"}}}}}, "frontArm":{"partStates":{"chest":{"firewindup":{"properties":{"image":"<partImage>:melee.1"}}, "fire":{"properties":{"image":"<partImage>:melee.<frame>"}}, "firewinddown":{"properties":{"image":"<partImage>:jump"}}}}}, "chest":{"partStates":{"chest":{"firewindup":{"properties":{"image":"<partImage>:walk.8"}}, "fire":{"properties":{"image":"<partImage>:idle"}}, "firewinddown":{"properties":{"image":"<partImage>:walk.8"}}}}}, "tail":{"partStates":{"chest":{"firewindup":{"properties":{"image":"<partImage>:idle.1"}}, "fire":{"properties":{"image":"<partImage>:melee.1"}}, "firewinddown":{"properties":{"image":"<partImage>:idle.1"}}}}}, "head":{"partStates":{"chest":{"firewindup":{"properties":{"image":"<partImage>:rotation"}}, "fire":{"properties":{"image":"<partImage>:melee.<frame>"}}, "firewinddown":{"properties":{"image":"<partImage>:jump"}}}}}}}},
    
    What is really strange is when I look at a normal .monstertype I see the "parts" paramater "parts" : [ "body" ], so the paramater is there. That means there has to be something wrong in the animation code.

    When I try the second method I get [18:13:03.317] [Error] WorldServerThread exception caught: (SpawnTypeDatabaseException) No such spawnType 'largequadruped'
     
  6. FireSpark81

    FireSpark81 Void-Bound Voyager

    Anyone at all out there have any clue how I get these animations into the file? Please help!
     
  7. FireSpark81

    FireSpark81 Void-Bound Voyager

    Ok, so I figured it out. I was not thinking of this in the right way. I have the animations file and everything needed to create a custom monster. The game loads just fine and loads the mod. However, when I try to spawn it in I get this error. I have no idea what it means or how to fix what is causing it.
    Code:
    [23:57:05.711] [Warn] Could not spawn Monster of type 'Nyanbound', exception caught: (JsonException) Cannot convert from object to string
    [23:57:05.813] [Info] Chat: <server> Could not spawn Monster of type 'Nyanbound'
    
    This is the full log file.

    [23:56:26.635] [Info] Root: Preparing Root...
    [23:56:26.635] [Info] Root: Done preparing Root.
    [23:56:26.635] [Info] Client Version 1.2.2 (windows x86_64) Source ID: 8656b8d30f3e41248de5868d2168c96962fbf6b2 Protocol: 729
    [23:56:26.635] [Info] Root: Scanning for asset sources in directory '..\assets\'
    [23:56:26.788] [Info] Root: Scanning for asset sources in directory '..\mods\'
    [23:56:26.788] [Warn] Root: Unrecognized file in asset directory 'Mod helper.bat', skipping
    [23:56:26.788] [Warn] Root: Unrecognized file in asset directory 'ModPackHelper.log', skipping
    [23:56:26.802] [Warn] Root: Unrecognized file in asset directory 'mods_go_here', skipping
    [23:56:26.802] [Info] Root: Detected asset source named 'base' at '..\assets\packed.pak'
    [23:56:26.802] [Info] Root: Detected asset source named 'Capturemon' at '..\mods\Capturmon'
    [23:56:26.802] [Info] Root: Detected asset source named 'Manipulated UI' at '..\mods\ManipulatedUI.pak'
    [23:56:26.802] [Info] Root: Detected asset source named 'SpawnableItemPack' at '..\mods\SpawnableItemPack'
    [23:56:26.802] [Info] Root: Detected asset source named 'AdvancedProximitySensor' at '..\mods\APS.pak'
    [23:56:26.802] [Info] Root: Detected asset source named 'ItemInterfaces' at '..\mods\ItemInterfaces.pak'
    [23:56:26.802] [Info] Root: Detected asset source named 'SaplingMaker' at '..\mods\SaplingMaker_v3.0.pak'
    [23:56:26.802] [Info] Root: Detected asset source named 'Pixel Goods Store' at '..\mods\contents (10).pak'
    [23:56:26.802] [Info] Root: Detected asset source named 'Universal Uncrafter v1.46' at '..\mods\contents (11).pak'
    [23:56:26.802] [Info] Root: Detected asset source named 'Weapon Stats' at '..\mods\contents (12).pak'
    [23:56:26.802] [Info] Root: Detected asset source named 'gdz' at '..\mods\contents (13).pak'
    [23:56:26.802] [Info] Root: Detected asset source named 'Azure's Star Wars Weapons & Armour' at '..\mods\contents (2).pak'
    [23:56:26.802] [Info] Root: Detected asset source named 'ContainerUITweak' at '..\mods\contents (3).pak'
    [23:56:26.802] [Info] Root: Detected asset source named 'environmentSafety' at '..\mods\contents (4).pak'
    [23:56:26.802] [Info] Root: Detected asset source named 'Phase Shift Module v1.32' at '..\mods\contents (5).pak'
    [23:56:26.802] [Info] Root: Detected asset source named 'PulsePistols' at '..\mods\contents (6).pak'
    [23:56:26.802] [Info] Root: Detected asset source named 'TracerBlink' at '..\mods\contents (7).pak'
    [23:56:26.802] [Info] Root: Detected asset source named 'Time Control Tech' at '..\mods\contents (8).pak'
    [23:56:26.802] [Info] Root: Detected asset source named 'WeaponAssembly' at '..\mods\contents (9).pak'
    [23:56:26.802] [Info] Root: Detected asset source named 'Enhanced Storage' at '..\mods\contents.pak'
    [23:56:26.802] [Info] Root: Detected asset source named 'WEdit' at '..\mods\WEdit.pak'
    [23:56:26.802] [Info] Root: Detected unnamed asset source at '..\assets\user'
    [23:56:26.802] [Info] Loading assets from: '..\assets\packed.pak'
    [23:56:27.016] [Info] Loading assets from: '..\mods\Capturmon'
    [23:56:27.017] [Info] Loading assets from: '..\mods\ManipulatedUI.pak'
    [23:56:27.017] [Info] Loading assets from: '..\mods\SpawnableItemPack'
    [23:56:27.020] [Info] Loading assets from: '..\mods\APS.pak'
    [23:56:27.020] [Info] Loading assets from: '..\mods\ItemInterfaces.pak'
    [23:56:27.020] [Info] Loading assets from: '..\mods\SaplingMaker_v3.0.pak'
    [23:56:27.021] [Info] Loading assets from: '..\mods\contents (10).pak'
    [23:56:27.028] [Info] Loading assets from: '..\mods\contents (11).pak'
    [23:56:27.028] [Info] Loading assets from: '..\mods\contents (12).pak'
    [23:56:27.028] [Info] Loading assets from: '..\mods\contents (13).pak'
    [23:56:27.028] [Info] Loading assets from: '..\mods\contents (2).pak'
    [23:56:27.030] [Info] Loading assets from: '..\mods\contents (3).pak'
    [23:56:27.030] [Info] Loading assets from: '..\mods\contents (4).pak'
    [23:56:27.030] [Info] Loading assets from: '..\mods\contents (5).pak'
    [23:56:27.031] [Info] Loading assets from: '..\mods\contents (6).pak'
    [23:56:27.031] [Info] Loading assets from: '..\mods\contents (7).pak'
    [23:56:27.031] [Info] Loading assets from: '..\mods\contents (8).pak'
    [23:56:27.035] [Info] Loading assets from: '..\mods\contents (9).pak'
    [23:56:27.035] [Info] Loading assets from: '..\mods\contents.pak'
    [23:56:27.040] [Info] Loading assets from: '..\mods\WEdit.pak'
    [23:56:27.040] [Info] Loading assets from: '..\assets\user'
    [23:56:27.693] [Info] Assets digest is cd29980327b3139e2adfb4ec4b6a1e2f13cf078ff03a5c7a5b9d3930520d4080
    [23:56:27.693] [Info] Root: Loaded Assets in 1.05805 seconds
    [23:56:27.697] [Info] Application: Initializing SDL Video
    [23:56:27.703] [Info] Application: Initializing SDL Joystick
    [23:56:27.746] [Info] Application: Initializing SDL Sound
    [23:56:27.838] [Info] Failed to initialize Steam platform services
    [23:56:27.838] [Info] Application: No platform services available
    [23:56:27.838] [Info] Application: Creating SDL Window
    [23:56:27.971] [Info] Application: Enabling VSync with late swap tearing
    [23:56:28.000] [Info] Application: Opened default audio device with 44.1khz / 16 bit stereo audio, 2048 sample size buffer
    [23:56:28.005] [Info] OpenGL version: '4.5.0 NVIDIA 378.49' vendor: 'NVIDIA Corporation' renderer: 'GeForce GTX 760/PCIe/SSE2' shader: '4.50 NVIDIA'
    [23:56:28.011] [Info] Application: initialization...
    [23:56:28.012] [Info] Root: Loaded Configuration in 0.000708957 seconds
    [23:56:28.014] [Info] Application: renderer initialization...
    [23:56:28.015] [Info] detected supported OpenGL texture size 16384, using atlasNumCells 128
    [23:56:28.015] [Info] detected supported OpenGL texture size 16384, using atlasNumCells 64
    [23:56:28.016] [Info] Root: Loaded ImageMetadataDatabase in 4.36202e-06 seconds
    [23:56:28.029] [Info] Application: main update loop...
    [23:56:28.059] [Info] Root: Loaded NameGenerator in 0.0295553 seconds
    [23:56:28.080] [Error] OpenGL errors this frame: GL_INVALID_VALUE
    [23:56:28.153] [Info] Root: Loaded PlantDatabase in 0.0939128 seconds
    [23:56:28.310] [Info] Root: Loaded ObjectDatabase in 0.280205 seconds
    [23:56:28.416] [Info] Root: Loaded MonsterDatabase in 0.106748 seconds
    [23:56:28.444] [Info] Root: Loaded NpcDatabase in 0.0270035 seconds
    [23:56:28.444] [Info] Root: Loaded StagehandDatabase in 0.000836225 seconds
    [23:56:28.446] [Info] Root: Loaded VehicleDatabase in 0.00145794 seconds
    [23:56:28.465] [Info] Root: Loaded ProjectileDatabase in 0.31226 seconds
    [23:56:28.468] [Info] Root: Loaded PlayerFactory in 0.0217614 seconds
    [23:56:28.468] [Info] Root: Loaded VersioningDatabase in 0.000648915 seconds
    [23:56:28.468] [Info] Root: Loaded EntityFactory in 0.00307805 seconds
    [23:56:28.493] [Info] Root: Loaded ParticleDatabase in 0.0244843 seconds
    [23:56:28.678] [Info] Root: Loaded MaterialDatabase in 0.209575 seconds
    [23:56:28.681] [Info] Root: Loaded TerrainDatabase in 0.00292538 seconds
    [23:56:28.703] [Info] Root: Loaded BiomeDatabase in 0.0215612 seconds
    [23:56:28.703] [Info] Root: Loaded LiquidsDatabase in 0.000549102 seconds
    [23:56:28.707] [Info] Root: Loaded StatusEffectDatabase in 0.00426554 seconds
    [23:56:28.893] [Info] Root: Loaded DamageDatabase in 0.185266 seconds
    [23:56:28.896] [Info] Root: Loaded EffectSourceDatabase in 0.00326767 seconds
    [23:56:28.898] [Info] Root: Loaded FunctionDatabase in 0.00187541 seconds
    [23:56:28.923] [Info] Root: Loaded TreasureDatabase in 0.02528 seconds
    [23:56:29.099] [Info] Root: Loaded DungeonDefinitions in 0.175863 seconds
    [23:56:29.099] [Info] Root: Loaded TilesetDatabase in 2.61721e-05 seconds
    [23:56:29.101] [Info] Root: Loaded StatisticsDatabase in 0.00136506 seconds
    [23:56:29.101] [Info] Root: Loaded EmoteProcessor in 4.95218e-05 seconds
    [23:56:29.105] [Info] Root: Loaded SpeciesDatabase in 0.00468584 seconds
    [23:56:29.115] [Info] Root: Loaded QuestTemplateDatabase in 0.00999416 seconds
    [23:56:29.116] [Info] Root: Loaded AiDatabase in 0.000960671 seconds
    [23:56:29.117] [Info] Root: Loaded TechDatabase in 0.000784907 seconds
    [23:56:29.121] [Info] Root: Loaded CodexDatabase in 0.00398561 seconds
    [23:56:29.344] [Info] Root: Loaded BehaviorDatabase in 0.222846 seconds
    [23:56:29.346] [Info] Root: Loaded DanceDatabase in 0.00173301 seconds
    [23:56:29.349] [Info] Root: Loaded SpawnTypeDatabase in 0.00343881 seconds
    [23:56:29.352] [Info] Root: Loaded RadioMessageDatabase in 0.00210634 seconds
    [23:56:30.912] [Info] Root: Loaded ItemDatabase in 2.44427 seconds
    [23:56:31.022] [Info] Root: Loaded CollectionDatabase in 1.6702 seconds
    [23:56:31.638] [Info] Root: Writing runtime configuration to '..\storage\starbound.config'
    [23:56:32.192] [Info] detected supported OpenGL texture size 16384, using atlasNumCells 256
    [23:57:01.193] [Info] UniverseServer: Acquiring universe lock file
    [23:57:01.193] [Info] UniverseServer: Loading settings
    [23:57:01.195] [Info] UniverseServer: Starting UniverseServer with UUID: b6b41aa6a29c8dc52e07025a8fa4fb6b
    [23:57:01.207] [Info] UniverseServer: Logged in player 'Firespark81' locally
    [23:57:01.207] [Info] UniverseServer: Logged in account '<anonymous>' as player 'Firespark81' from address local
    [23:57:01.240] [Info] UniverseServer: Reviving player at CelestialWorld:-984838941:-991234499:60201092:11
    [23:57:01.240] [Info] UniverseServer: Client 'Firespark81' <1> (local) connected
    [23:57:01.245] [Info] UniverseClient: Joined server as client 1
    [23:57:01.336] [Info] UniverseServer: Loading client ship world ClientShipWorld:57528115b0d43079b88e876d9645de26
    [23:57:01.336] [Info] UniverseServer: Loading celestial world -984838941:-991234499:60201092:11
    [23:57:01.426] [Error] Could not load image asset '/interface/cockpit/xup.png', using placeholder default.
    (AssetException) No such asset '/interface/cockpit/xup.png'
    [23:57:01.436] [Info] UniverseServer: Warping player 1 to CelestialWorld:-984838941:-991234499:60201092:11=1458.58.991
    [23:57:01.437] [Error] Could not load image asset '/interface/cockpit/xdown.png', using placeholder default.
    (AssetException) No such asset '/interface/cockpit/xdown.png'
    [23:57:01.491] [Info] detected supported OpenGL texture size 16384, using atlasNumCells 64
    [23:57:01.491] [Info] detected supported OpenGL texture size 16384, using atlasNumCells 128
    [23:57:01.498] [Info] detected supported OpenGL texture size 16384, using atlasNumCells 256
    [23:57:01.498] [Info] detected supported OpenGL texture size 16384, using atlasNumCells 256
    [23:57:01.544] [Info] WEdit Controller: Initialized WEdit in 0.003 seconds
    [23:57:01.554] [Info] UniverseServer: listening for incoming TCP connections on 0.0.0.0:21025
    [23:57:02.256] [Info] UniverseServer: Flying player 1 ship to starter world -984838941:-991234499:60201092:11
    [23:57:02.272] [Info] UniverseServer: Arriving ship for player 1 at -984838941:-991234499:60201092:11
    [23:57:02.274] [Info] UniverseServer: Stopping idle world ClientShipWorld:57528115b0d43079b88e876d9645de26
    [23:57:05.711] [Warn] Could not spawn Monster of type 'Nyanbound', exception caught: (JsonException) Cannot convert from object to string
    [23:57:05.813] [Info] Chat: <server> Could not spawn Monster of type 'Nyanbound'

     

Share This Page