1. Welcome to the official Starbound Mod repository, Guest! Not sure how to install your mods? Check out the installation guide or check out the modding help thread for more guides.
    Outdated Mods have been moved to their own category! If you update your mod please let a moderator know so we can move it back to the active section.
    Dismiss Notice

Golemancer - Core 1.2.0

Core scripts for golemancy implementation on Starbound

  1. AlbertoRota
    Golemancy - Core
    Core scripts for the implementation of golemancy in Sctarbound
    Disclaimer
    This is a modders resource script, It's not intended to work on it's own, but to help other modders in adding their own golems/mechanics easily.
    All the examples provided are intended to be minimal examples to help other modders to understand how to use this scripts and to showcase their possibilities, they are no way intended to be balanced, fun, usable o something similar.

    Introduction - Lore
    A discipline as old as the life itself, Golemancy has being known in different eras as a science, an art, a mith... but always as the process of infusing live where it wasn't before.

    Given the wide nature of it's applications, Golemancy itself has being known under different names depending of the main focus of the golemancer:
    • Golemancy is the most ancient and generic name, used by those focused on bring non-living thins to life.
    • Necromancy was a subtle shift, trying to re-infuse with live things that were alive once.
    • Spiritism was the branch focused on bring life for other planes/dimension into our's.
    • Medicine is another well known name, used by those who focus on keeping already infused beings alive.
    • Bio-technology is one of the most recent names, used by those who focus on modifying living beings into another beings.
    Similarly, Golemancers has being known by different names, depending mainly of their focus and motivations:
    • Golemancer is the most ancient a boarder term, given to that that dedicate themselves to Golemancy on it most broad sense.
    • Necromancer has being historically a despective term for those who focused on Necromancy, paradoxically, their studious were among the most dedicated ones.
    • Summoner was the name of Spiritism practitioners, sadly, summoned beings usually are un-cooperative, witch make the summoner's lifespan well under average when compared to others of their time.
    • Medics, Doctors, Surgeons, and another bunch of terms are used to design Medicine practitioners, depending of their level and competency.
    • Genetic engineer and Stetic surgeon are the most used names of Biotechnology practitioners, but other terms are being used as research is done and the main focus shift's from one thing to another.
    We were so used to it that we almost forgot it's existence, we mostly stopped their study and almost no one could appreciate it's magnificence.

    Every child is a master golemancy work of it's parents, every surgeon is a skilled golemancer...

    Damm! Every single cell of our body is a magnificent golem, not only infused with live, but also able to infuse matter with live, producing more outstanding golems, being at the same time golem, golemancer and part of us!

    And even with that, no one cared, time of Golemancers were long passed, with the only exceptions of Medicine and Bio-technology, all investigation routes were halted, and even on this branches, you should be extremely cautious on what you studied, risking yourself to persecution, being called "mad", "stupid" or "monster".

    Fortunately, exceptional individuals surpass their equals, showing curiosity, interest and exceptional dexterity on Golemancy, that's true for every era, for every living being.

    Recent events has lead to a resurgence of Golemancy, we've seen, among other things, sentient plants, intelligent robots, living stars, and tentacle monsters of other dimensions... life being infused on unexpected things is no longer a mad's mind idea, but a fact.

    And supported by this, Golemancy is now resurging.

    Golem animation core
    Lore
    Where science meets magic, where possible meets the impossible, the result of a Golemancer's best effort: The animation core

    The animation core is where it all starts, being a generic term, it designs everything that can start the process of infusing live, and as such, they have trillions of forms, sizes and working principles.

    Even with that, the infusion process shares strong similarities between them all:
    • The animation core is a must, by its own definition, no life can be infused without one.
    • It should be surrounded be the right matter to infuse, even in the process of infusing live, you can't get something out of nothing.
    • - It should be fueled by the right fuel, from water to blood, from coal to your own soul, it will depend on the animation core working principle.
    • - The Golemancer should activate the animation core, if everything has been done correctly, the infusion will begin.
    Examples
    GolTest-AnimCore-01GolTest-AnimCore-02GolTest-AnimCore-03
    [​IMG][​IMG][​IMG]
    Download codeDownload codeDownload code
    Code explained
    Pattern files are the main configuration files used to specify the animation core requisites and behavior .
    You can take a look of how to use then in the examples, they are quite simple.

    ParameterExplanation
    "offset"Where the origin of the object will be on the pattern.
    "blocksTable"The table with all the in-game names of the blocks, you can use as many as you need, "false" means "no block".
    "layoutTable"Table defining the layout to match, from bottom to top, from left to right, the values reference blocks defined in the "blocksTable", the object itself counts as "false"
    "requiredResources"Array of required resources, could be none, could be multiple, read the examples to see how to define them.
    "boundingBox"The size of the pattern, is the same as the size of "layoutTable"
    "xxxxSpawn"The thing to spawn once the infusion is completed, read the examples to see how to define them.
    In order to correctly read and use pattern files, you need to attach the correct script to the object and to point the object what patters should check.
    As simple as that, for any doubt, you can see how the examples are patched.

    Golem evolutions
    Lore
    Life is inherently unstable, we all know that.
    Children become adults, ovules become babies, seeds become plants and flowers transform into fruits... everything changes.

    That's specially true for artificially infused beings, given the complexity of the process, their inherent instability is far greater, making radical changes possible and commonplace between them.

    Examples
    GolTest-Evolve-01GolTest-Evolve-02GolTest-Evolve-03
    [​IMG][​IMG][​IMG]
    Download codeDownload codeDownload code
    Code explained
    Evo files are the main configuration files used to specify the evolution requisites and results.
    You can take a look of how to use then in the examples, they are quite simple.

    ParameterExplanation
    "requiredResources"Array of required resources, could be none, could be multiple, read the examples to see how to define them.
    "xxxxSpawn"The thing to spawn once the infusion is completed, read the examples to see how to define them.
    In order to correctly read and use evo files, you need to attach the correct script to the monster and to point what evolutions should check.
    As simple as that, for any doubt, you can see how the examples are patched.

    -------------------------------------
    Tutorial 1: How to add Golemancer - Core to your mod
    -------------------------------------
    Download the mod, unpack/unzip it and copy the folder "scripts" directly in the root of your mod, is named in a way that avoid any kind of conflict.
    Permissions state clearly that "Anyone can alter/redistribute the mod's assets without the author's consent.", so, you are fully authorized to do this, not even credit is needed, much less to ask for permission.

    Anyway, I will really appreciate if you give some credit and if you notify me, not for asking permission, but to keep track of who is using my mod in case I update it and need to send you some instructions of how to use the new features. :nuruhappy:

    At the same time, you are fully authorized to do changes to the scripts, but I must warn you against it, changes may work OK with YOUR mod, but you can screw up other modders using this scripts, if you need any change, modification or feature, just ask for it in the discussion, that way all the community can use it without incompatibilities :nurutease:
    In your _metadata, add:
    Code:
    "requires" : ["GolemancerCoreScripts"]
    Notify all your users that this mod is required and, if you are using steam, add this as a requirement.
    Doing it this way, you can forget about maintaining/modifying this mod, since all future updates/bug-fixes will be automatically downloaded without you worrying about it.

    At the same time, this option allow me to get downloads, visibility and feedback, things that are always useful and welcome.
    If you don't want to tie your mod to this one, you can do a sub-mod that requires both your mod and this one, and keep all "Golemancer" things on said sub-mod, that way you can discard said features at any moment without it breaking your mod, and your users can choose if they want them or not.
    Every single feature in this mod can be specified as a patch, so the sub-mod will be just a bunch of patch and configuration files, easy to maintain, easy to add, easy to discard without you even touching your main mod.

    -------------------------------------
    Tutorial 2: How to add Golemancer scripts to monsters
    -------------------------------------
    You need to patch the monster this way:
    Code:
    [
      {
        "op" : "add",
        "path" : "/baseParameters/scripts/-",
        "value" : "/scripts/golemancer/gol_monstermain.lua"
      },
      {
        "op" : "add",
        "path" : "/baseParameters/evolutions",
        "value" : ["/scripts/golemancer/evolutions/XXXX.evo"]
      }
    ]
    gol_monstermain.lua is the main script to control the evolution, is a must.
    XXXX.evo is the evolution configuration file, you can specify more than one, they will be explained later.

    Optionally, you can also add:
    Code:
    [
      {
        "op" : "add",
        "path" : "/baseParameters/tickEvoTime",
        "value" : 2
      }
    ]
    tickEvoTime is the interval in seconds between checks, if not specified, it will default to 5s.

    -------------------------------------
    Tutorial 3: How to add Golemancer scripts to objects
    -------------------------------------
    You need to patch the object this way:
    Code:
    [
      {
        "op" : "add",
        "path" : "/scripts",
        "value" : ["/scripts/golemancer/gol_main.lua"]
      },
      {
        "op" : "add",
        "path" : "/patterns",
        "value" : ["/scripts/golemancer/patterns/XXXX.pattern"]
      }
    ]
    gol_main.lua is the main script to control the pattern, is a must.
    XXXX.pattern is the pattern configuration file, you can specify more than one, they will be explained later.

    Optionally, you can also add:
    Code:
    [
      {
        "op" : "add",
        "path" : "/scriptDelta",
        "value" : 2
      }
    ]
    scriptDelta is the interval in seconds between checks, if not specified, it will default to 1s.

    -------------------------------------
    Tutorial 4: .evo files in detail
    -------------------------------------
    Example file:
    Code:
    {
        "name" : "TheNameYouPrefer",
        "requiredResources" : {
            "1" : { ... },
            "2" : { ... }
        },
        "xxxxSpawn" : { ... }
    }
    ParameterExplanation
    "name"The name of the evolution, you can name it as you please, but must be unique.
    "requiredResources"Array of required resources, could be none, could be multiple.
    "xxxxSpawn"The thing to spawn once the infusion is completed.

    -------------------------------------
    Tutorial 5: .pattern files in detail
    -------------------------------------
    Example file:
    Code:
    {
        "name" : "TheNameYouPrefer",
        "offset" : [x, y],
        "blocksTable" : [
            false,
            "blockName",
            "anotherBlockName"
        ],
        "layoutTable" : { ... },
        "requiredResources" : {
            "1" : { ... },
            "2" : { ... }
        },
        "boundingBox" : [x, y],
        "xxxxSpawn" : { ... }
    }
    ParameterExplanation
    "name"The name of the pattern, you can name it as you please, but must be unique.
    "offset"Where the origin of the object will be on the pattern.
    "blocksTable"The table with all the in-game names of the blocks, you can use as many as you need, "false" means "no block".
    "layoutTable"Table defining the layout to match, from bottom to top, from left to right, the values reference blocks defined in the "blocksTable", the object itself counts as "false"
    "requiredResources"Array of required resources, could be none, could be multiple.
    "boundingBox"The size of the pattern, is the same as the size of "layoutTable"
    "xxxxSpawn"The thing to spawn once the infusion is completed.

    -------------------------------------
    Tutorial 6: Resources in detail
    -------------------------------------

    Will "drink" specified liquids from world, both monsters and objects must be submerged in said liquid to "drink".
    Example:
    Code:
    "1" : {
        "name" : "TheNameYouPrefer",
        "type" : "liquid", "id" : x, "amount" : y
    }
    ParameterExplanation
    "name"The name of the resource, you can name it as you please, but must be unique.
    "type"Type of the resource, for liquids must be "liquid".
    "id"In-game id of the liquid, id list here.
    "amount"Amount of said liquid required.
    Will take dropped items from the world
    Example:
    Code:
    1" : {
       "name" : "TheNameYouPrefer",
       "type" : "droppedItem", "id" : "theIdOfTheItem", "amount" : x
    }
    ParameterExplanation
    "name"The name of the resource, you can name it as you please, but must be unique.
    "type"Type of the resource, for dropped items must be "droppedItem".
    "id"In-game id of the item (The one you use in /spawnitem command)
    "amount"Amount of said item required.
    Exclusive to the monsters, will require the monster to do damage to other things.
    Example:
    Code:
    "1" : {
      "name" : "TheNameYouPrefer",
      "type" : "damageDone", "id" : false, "amount" : x
    }
    ParameterExplanation
    "name"The name of the resource, you can name it as you please, but must be unique.
    "type"Type of the resource, for damage done must be "damageDone".
    "id"Not used for this resource, you can leave it to "false"
    "amount"Amount of damage that needs to be done.
    Exclusive to the objects, will give the object a short range damage aura and will require said aura to do damage to other things.
    Example:
    Code:
    "1" : {
      "name" : "TheNameYouPrefer",
      "type" : "damageAura", "id" : [ ... ], "amount" : x,
      "power" : y, "projectile" : "projectileName"
    }
    ParameterExplanation
    "name"The name of the resource, you can name it as you please, but must be unique.
    "type"Type of the resource, for damage aura must be "damageAura".
    "id"Array with the "knid" of things that the aura will damage ("monster", "player", "mobile", "creature", etc.)
    "amount"Amount of damage that needs to be done.
    "power"The damage that each shoot from the aura will do.
    "projectile"The projectile that the aura will shoot, it will default to "teslaboltsmall" if not specified.

    -------------------------------------
    Tutorial 6: Spawns in detail
    -------------------------------------
    Will spawn an NPC.
    Code:
    "npcSpawn" : {
        "species" : "human",
        "npcType" : "villager",
        "parameters" : { ... }
    }
    ParameterExplanation
    "species"The species of the NPC.
    "npcType"The type of the NPC.
    "parameters"Optional field, the parameters to pass to the NPC.
    Will spawn a monster.
    Code:
    "monsterSpawn" : {
        "type" : "adultpoptop",
        "parameters" : { ... }
    }
    ParameterExplanation
    "type"The type of the monster.
    "parameters"Optional field, the parameters to pass to the monster.
    Will spawn an Item.
    Code:
    "itemSpawn" : {
        "name" : "batwingsback",
        "count" : 3,
        "parameters" : { ... }
    }
    ParameterExplanation
    "name"The name of the item.
    "count"Optional field, the number of items to spawn, will default to 1.
    "parameters"Optional field, the parameters to pass to the item.
    Will spawn a vehicle.
    Code:
    "vehicleSpawn" : {
        "name" : "hoverbikered",
        "controllerName" : "hoverbikecontrollerred",
        "parameters" : { ... }
    }
    ParameterExplanation
    "name"The name of the vehicle.
    "controllerName"Optional field, name of the controller to spawn, will be automatically linked to the vehicle spawned.
    "parameters"Optional field, the parameters to pass to the vehicle.
    Mod Pack Permissions:
    Anyone can use this mod in their mod compilation without the author's consent.
    Mod Assets Permissions:
    Anyone can alter/redistribute the mod's assets without the author's consent.

Recent Updates

  1. Golems on Rails
  2. Removed git files
  3. Debug logs removed

Recent Reviews

  1. overtube
    overtube
    5/5,
    Version: 1.2.0
    Very Good Stuff
  2. RowanEx
    RowanEx
    5/5,
    Version: 1.2.0
    Good mod (that I have to see what Greckan do make), good tutorials, and I think I'm going to take this up and form spawnable droids...
  3. sayter
    sayter
    5/5,
    Version: 1.1.2
    Great API thus far, with a lot of potential for the future. Looking forward to what you add!
    1. AlbertoRota
      Author's Response
      Thank you for the review, and THANK YOU for using this mod on yours!
      In the immediate future: The ability to spawn Vehicles!
  4. Ark_4ngel
    Ark_4ngel
    5/5,
    Version: 1.1.1
    The potential of this mod is huge , can't wait to see what's done with it.I'd love to see someone make a mod that uses it as an integral part of it's crafting system in some way, like bathing armour in blood to upgrade it to the next tier. Anyhow awesome work
    1. AlbertoRota
      Author's Response
      Thank you for the review!
      People at "Frackin' Universe" is giving this a try, and "Greckan Race Mod" is also including this on it's beta!!
      With a bit of luck, you will see what you want ;)