Learning to mod and stuff

So in another thread i got the idea of making some doom style mods to learn how to mod the game. I cracked open the monsters.json but there is not really any organization and it is a massive wall of text. I am kind of getting a feel for what the numbers all mean but i was wondering if anyone had advice on learning to mod, or the best way to learn how to make your own creatures and have them implemented in the game. Any advice is much appreciated

Use text editor other than the default, Notepad ++ works for me. Use the games.json files for value comparison but look at the mods others have made for reference. Creating creatures consists of making a mosnter in the mosters.json and adding them to the mosntergroups.json to make them spawn.

That was actually insanely helpful! Notepad++ is way better for viewing them. I have a couple questions. Can i just make up a faction and all the mobs i make with the same tag will be aligned, or do i have to define the faction in another JSON somewhere? Also what does diff do?

For the factions, I am not even sure you can make a new one, if you can , check other mods for how they do it. Check the mods list thread for fantasy factions mod, that might help.

Diff is the difficulty I believe, not sure how it works but the higher the more hard to kill the enemy.

But your bioweapons attacks everything other than bioweapons, that make it like a “faction”. I have my own idea to do a mod, but is pretty overwhelming, but no that much as trying to make a race in Dwarft Fortress… damn I failed so hard because it was too hard making just one creature in DF.

This is just a little part for do something in DF, and is incomplete and for sure is full of errors, but eh, never managed to even try to start to make a world with this because you need add other rules… a total failure.

This code is for defining the material, how hard is and how many body parts have their bodies and how resilent are.

[code]
necron_b_detail_plan

[OBJECT:NECRON_BODY_DETAIL_PLAN]

[BODY_DETAIL_PLAN:NECRODERMIS_WEAK_MATERIALS]
This command is just a shortcut for the similar lines (USE_MATERIAL_TEMPLATE||) in a creature definition.
[ADD_TISSUE:NECRODERMIS_WEAK:NECRODERMIS_WEAK]
[ADD_TISSUE:SUBNECRODERMIS:SUBNECRODERMIS]
[ADD_TISSUE:SERVOMUSCLES:NECRO_MUSCLE_WEAK]
[ADD_TISSUE:CHASSIS:NECRO_BONE_WEAK]
[ADD_TISSUE:NECRODERMIC_EYE:NECRODERMIC_EYE]
[ADD_TISSUE:NECRODERMIC_BRAIN:NECRODERMIC BRAIN]
[ADD_TISSUE:ENERGY_CORE:ENERGY_CORE]

[BODY_DETAIL_PLAN:NECRODERMIS_SHELL_WEAK_MATERIALS]
[ADD_TISSUE:SUBNECRODERMIS:SUBNECRODERMIS]
[ADD_TISSUE:SERVOMUSCLES:NECRO_MUSCLE_WEAK]
[ADD_TISSUE:CHASSIS:NECRO_BONE_WEAK]
[ADD_TISSUE:NECRODERMIC_EYE:NECRODERMIC_EYE]
[ADD_TISSUE:NECRODERMIC_BRAIN:NECRODERMIC_BRAIN]
[ADD_TISSUE:ENERGY_CORE:ENERGY_CORE]

[BODY_DETAIL_PLAN:NECRODERMIS_MEDIUM_MATERIALS]
This command is just a shortcut for the similar lines (USE_MATERIAL_TEMPLATE||) in a creature definition.
[ADD_TISSUE:NECRODERMIS_WEAK:NECRODERMIS_MEDIUM]
[ADD_TISSUE:SERVOMUSCLES:NECRO_MUSCLE_MEDIUM]
[ADD_TISSUE:CHASSIS:NECRO_BONE_MEDIUM]
[ADD_TISSUE:NECRODERMIC_EYE:NECRODERMIC_EYE]
[ADD_TISSUE:NECRODERMIC_BRAIN:NECRODERMIC_BRAIN]
[ADD_TISSUE:ENERGY_CORE:ENERGY_CORE

[BODY_DETAIL_PLAN:NECRODERMIS_SHELL_MEDIUM_MATERIALS]
[ADD_TISSUE:SERVOMUSCLES:NECRO_MUSCLE_MEDIUM]
[ADD_TISSUE:CHASSIS:NECRO_BONE_MEDIUM]
[ADD_TISSUE:NECRODERMIC_EYE:NECRODERMIC_EYE]
[ADD_TISSUE:NECRODERMIC_BRAIN:NECRODERMIC_BRAIN]
[ADD_TISSUE:ENERGY_CORE:ENERGY_CORE

[BODY_DETAIL_PLAN:NECRODERMIS_MEDIUM_MATERIALS]
This command is just a shortcut for the similar lines (USE_MATERIAL_TEMPLATE|<token>|<template>) in a creature definition.
[ADD_TISSUE:NECRODERMIS_WEAK:NECRODERMIS_MEDIUM]
[ADD_TISSUE:SERVOMUSCLES:NECRO_MUSCLE_MEDIUM]
[ADD_TISSUE:CHASSIS:NECRO_BONE_MEDIUM]
[ADD_TISSUE:NECRODERMIC_EYE:NECRODERMIC_EYE]
[ADD_TISSUE:NECRODERMIC_BRAIN:NECRODERMIC_BRAIN]
[ADD_TISSUE:ENERGY_CORE:ENERGY_CORE	

[BODY_DETAIL_PLAN:NECRODERMIS_SHELL_STRONG_MATERIALS]
[ADD_TISSUE:SERVOMUSCLES:NECRO_MUSCLE_STRONG]
[ADD_TISSUE:CHASSIS:NECRO_BONE_STRONG]
[ADD_TISSUE:NECRODERMIC_EYE:NECRODERMIC_EYE]
[ADD_TISSUE:NECRODERMIC_BRAIN:NECRODERMIC_BRAIN]
[ADD_TISSUE:ENERGY_CORE:ENERGY_CORE

[BODY_DETAIL_PLAN:NECRON_LAYERS]
This body detail plan accepts argument tokens that can fill the role of the tissue token.  For instance, the dwarf sends in SKIN, FAT, 
MUSCLE, BONE and CARTILAGE.
[BP_LAYERS:BY_CATEGORY:BODY:CHASSIS:50:SERVOMUSCLE:70:SUBNECRODERMIS:40:NECRODERMIS:10]
[BP_LAYERS:BY_CATEGORY:BODY_UPPER:CHASSIS:50:SERVOMUSCLE:5:NECRODERMIS:1]
[BP_LAYERS:BY_CATEGORY:BODY_LOWER:CHASSIS:50:SERVOMUSCLE:5:NECRODERMIS:1]
[BP_LAYERS:BY_CATEGORY:ARM:CHASSIS:25:SERVOMUSCLE:25:SUBNECRODERMIS:5:NECRODERMIS:1]
[BP_LAYERS:BY_CATEGORY:ARM_UPPER:CHASSIS:25:SERVOMUSCLE:25:SUBNECRODERMIS:5:NECRODERMIS:1]
[BP_LAYERS:BY_CATEGORY:ARM_LOWER:CHASSIS:25:SERVOMUSCLE:25:SUBNECRODERMIS:5:NECRODERMIS:1]
[BP_LAYERS:BY_CATEGORY:HAND:CHASSIS:25:SERVOMUSCLE:25:SUBNECRODERMIS:5:NECRODERMIS:1]
[BP_LAYERS:BY_CATEGORY:LEG:CHASSIS:25:SERVOMUSCLE:25:SUBNECRODERMIS:5:NECRODERMIS:1]
[BP_LAYERS:BY_CATEGORY:LEG_UPPER:CHASSIS:25:SERVOMUSCLE:25:SUBNECRODERMIS:5:NECRODERMIS:1]
[BP_LAYERS:BY_CATEGORY:LEG_LOWER:CHASSIS:25:SERVOMUSCLE:25:SUBNECRODERMIS:5:NECRODERMIS:1]
[BP_LAYERS:BY_CATEGORY:LEG_FRONT:CHASSIS:25:SERVOMUSCLE:25:SUBNECRODERMIS:5:NECRODERMIS:1]
[BP_LAYERS:BY_CATEGORY:LEG_REAR:CHASSIS:25:SERVOMUSCLE:25:SUBNECRODERMIS:5:NECRODERMIS:1]
[BP_LAYERS:BY_CATEGORY:FOOT:CHASSIS:25:SERVOMUSCLE:25:SUBNECRODERMIS:5:NECRODERMIS:1]
[BP_LAYERS:BY_CATEGORY:FOOT_FRONT:CHASSIS:25:SERVOMUSCLE:25:SUBNECRODERMIS:5:NECRODERMIS:1]
[BP_LAYERS:BY_CATEGORY:FOOT_REAR:CHASSIS:25:SERVOMUSCLE:25:SUBNECRODERMIS:5:NECRODERMIS:1]
[BP_LAYERS:BY_CATEGORY:HEAD:CHASSIS:50:SERVOMUSCLE:5:NECRODERMIS:1]
[BP_LAYERS:BY_CATEGORY:NECK:CHASSIS:50:SERVOMUSCLE:5:NECRODERMIS:1]
[BP_LAYERS:BY_CATEGORY:CLAW:NECRODERMIC_CLAW:100]
[BP_LAYERS:BY_CATEGORY:SHELL:NECRODERMIC_SHELL:100]
[BP_LAYERS:BY_CATEGORY:EYE:NECRODERMIC_EYE:100]
[BP_LAYERS:BY_CATEGORY:RIB_TRUE:CHASSIS:100]
[BP_LAYERS:BY_CATEGORY:RIB_FALSE:CHASSIS:100]
[BP_LAYERS:BY_CATEGORY:HEART:NECRODERMIC_ENERGY_CORE:100]
[BP_LAYERS:BY_CATEGORY:SPINE:NECRODERMIC_SPINE:2:SUBNECRODERMIS:2]
[BP_LAYERS:BY_CATEGORY:BRAIN:NECRODERMIC_BRAIN:100]
[BP_LAYERS:BY_CATEGORY:HORN:CHASSIS:2:NECRODERMIC_HORN:2]
[BP_LAYERS:BY_CATEGORY:FINGER:CHASSIS:25:SERVOMUSCLE:25:SUBNECRODERMIS:5:NECRODERMIS:1]
[BP_LAYERS:BY_CATEGORY:TOE:ARG4:25:SERVOMUSCLE:25:SUBNECRODERMIS:5:NECRODERMIS:1]
[BP_LAYERS:BY_CATEGORY:SKULL:CHASSIS:100]

[BODY_DETAIL_PLAN:NECRON_EXOSKELETON_TISSUE_LAYERS]
[BP_LAYERS:BY_CATEGORY:BODY:SERVOMUSCLE:6:SUBNECRODERMIS:1:NECRODERMIS:2]
[BP_LAYERS:BY_CATEGORY:BODY_UPPER:SERVOMUSCLE:6:SUBNECRODERMIS:1:NECRODERMIS:2]
[BP_LAYERS:BY_CATEGORY:BODY_LOWER:SERVOMUSCLE:6:SUBNECRODERMIS:1:NECRODERMIS:2]
[BP_LAYERS:BY_CATEGORY:ARM:SERVOMUSCLE:6:SUBNECRODERMIS:1:NECRODERMIS:2]
[BP_LAYERS:BY_CATEGORY:ARM_UPPER:SERVOMUSCLE:6:SUBNECRODERMIS:1:NECRODERMIS:2]
[BP_LAYERS:BY_CATEGORY:ARM_LOWER:SERVOMUSCLE:6:SUBNECRODERMIS:1:NECRODERMIS:2]
[BP_LAYERS:BY_CATEGORY:HAND:SERVOMUSCLE:6:SUBNECRODERMIS:1:NECRODERMIS:2]
[BP_LAYERS:BY_CATEGORY:LEG:SERVOMUSCLE:6:SUBNECRODERMIS:1:NECRODERMIS:2]
[BP_LAYERS:BY_CATEGORY:LEG_UPPER:SERVOMUSCLE:6:SUBNECRODERMIS:1:NECRODERMIS:2]
[BP_LAYERS:BY_CATEGORY:LEG_LOWER:SERVOMUSCLE:6:SUBNECRODERMIS:1:NECRODERMIS:2]
[BP_LAYERS:BY_CATEGORY:LEG_FRONT:SERVOMUSCLE:6:SUBNECRODERMIS:1:NECRODERMIS:2]
[BP_LAYERS:BY_CATEGORY:LEG_REAR:SERVOMUSCLE:6:SUBNECRODERMIS:1:NECRODERMIS:2]
[BP_LAYERS:BY_CATEGORY:FOOT:SERVOMUSCLE:6:SUBNECRODERMIS:1:NECRODERMIS:2]
[BP_LAYERS:BY_CATEGORY:FOOT_FRONT:SERVOMUSCLE:6:SUBNECRODERMIS:1:NECRODERMIS:2]
[BP_LAYERS:BY_CATEGORY:FOOT_REAR:SERVOMUSCLE:6:SUBNECRODERMIS:1:NECRODERMIS:2]
[BP_LAYERS:BY_CATEGORY:HEAD:SERVOMUSCLE:6:SUBNECRODERMIS:1:NECRODERMIS:2]
[BP_LAYERS:BY_CATEGORY:TENTACLE:SERVOMUSCLE:6::NECRODERMIS:1:NECRODERMIS:2]
[BP_LAYERS:BY_CATEGORY:CLAW:NECRODERMIS:100]
[BP_LAYERS:BY_CATEGORY:PINCER:SERVOMUSCLE:6:SUBNECRODERMIS:1:NECRODERMIS:2]
[BP_LAYERS:BY_CATEGORY:STINGER:NECRODERMIS:100]
[BP_LAYERS:BY_CATEGORY:SHELL:NECRODERMIS:100]
[BP_LAYERS:BY_CATEGORY:EYE:NECRODERMIC_EYE:100]
[BP_LAYERS:BY_CATEGORY:PROBOSCIS:NECRODERMIS:100]
[BP_LAYERS:BY_CATEGORY:MANDIBLE:NECROMUSCLE:6:NECROSUBDERMIS:1::NECRODERMIS:2]
[BP_LAYERS:BY_CATEGORY:MOUTH:SERVOMUSCLE:6:NECRODERMIS:2]
[BP_LAYERS:BY_CATEGORY:BEAK:NECRODERMIS:100]
[BP_LAYERS:BY_CATEGORY:RIB_TRUE:NECRODERMIS:100]
[BP_LAYERS:BY_CATEGORY:RIB_FALSE:NECRODERMIS:100]
[BP_LAYERS:BY_CATEGORY:RIB_FLOATING:NECRODERMIS:100]
[BP_LAYERS:BY_CATEGORY:HEART:HEART:100]
[BP_LAYERS:BY_CATEGORY:JOINT:SERVOMUSCLE:6:NECRODERMIS:1]
[BP_LAYERS:BY_CATEGORY:SPINE:NECRODERMIC_SPINE:2]
[BP_LAYERS:BY_CATEGORY:BRAIN:NECRODERMIC_BRAIN:100]
[BP_LAYERS:BY_CATEGORY:HORN:NECRODERMIS:100]
[BP_LAYERS:BY_CATEGORY:FINGER:SERVOMUSCLE:6:SUBNECRODERMIS:1:NECRODERMIS:2]
[BP_LAYERS:BY_CATEGORY:TOE:SERVOMUSCLE:6:SUBNECRODERMIS:1:NECRODERMIS:2]
[BP_LAYERS:BY_CATEGORY:SKULL:NECRODERMIS:100]

[BODY_DETAIL_PLAN:NECRON_HUMANOID_RELSIZES]
This command establishes the relative size of body parts within a creature.  The numbers have no absolute meaning or units.
[BP_RELSIZE:BY_CATEGORY:BODY:2000]
[BP_RELSIZE:BY_CATEGORY:BODY_UPPER:1000]
[BP_RELSIZE:BY_CATEGORY:BODY_LOWER:1000]
[BP_RELSIZE:BY_CATEGORY:ARM:400]
[BP_RELSIZE:BY_CATEGORY:ARM_UPPER:200]
[BP_RELSIZE:BY_CATEGORY:ARM_LOWER:200]
[BP_RELSIZE:BY_CATEGORY:HAND:80]
[BP_RELSIZE:BY_CATEGORY:LEG:900]
[BP_RELSIZE:BY_CATEGORY:LEG_UPPER:500]
[BP_RELSIZE:BY_CATEGORY:LEG_LOWER:400]
[BP_RELSIZE:BY_CATEGORY:LEG_FRONT:900]
[BP_RELSIZE:BY_CATEGORY:LEG_REAR:900]
[BP_RELSIZE:BY_CATEGORY:FOOT:120]
[BP_RELSIZE:BY_CATEGORY:FOOT_FRONT:120]
[BP_RELSIZE:BY_CATEGORY:FOOT_REAR:120]
[BP_RELSIZE:BY_CATEGORY:HEAD:300]
[BP_RELSIZE:BY_CATEGORY:NECK:100]
[BP_RELSIZE:BY_CATEGORY:CLAW:50]
STINGER left to BP default
[BP_RELSIZE:BY_CATEGORY:EYE:5]
[BP_RELSIZE:BY_CATEGORY:RIB_TRUE:30]
[BP_RELSIZE:BY_CATEGORY:RIB_FALSE:30]
[BP_RELSIZE:BY_CATEGORY:HEART:100]
JOINT left to BP default
[BP_RELSIZE:BY_CATEGORY:SPINE:100]
[BP_RELSIZE:BY_CATEGORY:BRAIN:200]
[BP_RELSIZE:BY_CATEGORY:HORN:100]
FINGER left to BP default
TOE left to BP default
HOOF/HOOF_FRONT/HOOF_REAR left to BP default



[BODY_DETAIL_PLAN:NECRON_HUMANOID_HEAD_POSITIONS]
[BP_POSITION:BY_CATEGORY:EYE:FRONT]

[BODY_DETAIL_PLAN:NECRON_HUMANOID_RIBCAGE_POSITIONS]
[BP_RELATION:BY_CATEGORY:RIB_TRUE:AROUND:BY_CATEGORY:HEART:5]
[BP_RELATION:BY_CATEGORY:RIB_FALSE:AROUND:BY_CATEGORY:HEART:5]

[BODY_DETAIL_PLAN:NECRON_SHELL_POSITIONS]
[BP_POSITION:BY_CATEGORY:SHELL:TOP]
[BP_RELATION:BY_CATEGORY:SHELL:AROUND:BY_CATEGORY:UPPERBODY:50]

[BODY_DETAIL_PLAN:NECRON_HUMANOID_RELSIZES]
This command establishes the relative size of body parts within a creature. The numbers have no absolute meaning or units.
[BP_RELSIZE:BY_CATEGORY:BODY:2000]
[BP_RELSIZE:BY_CATEGORY:BODY_UPPER:1000]
[BP_RELSIZE:BY_CATEGORY:BODY_LOWER:1000]
[BP_RELSIZE:BY_CATEGORY:ARM:400]
[BP_RELSIZE:BY_CATEGORY:ARM_UPPER:200]
[BP_RELSIZE:BY_CATEGORY:ARM_LOWER:200]
[BP_RELSIZE:BY_CATEGORY:HAND:80]
[BP_RELSIZE:BY_CATEGORY:LEG:900]
[BP_RELSIZE:BY_CATEGORY:LEG_UPPER:500]
[BP_RELSIZE:BY_CATEGORY:LEG_LOWER:400]
[BP_RELSIZE:BY_CATEGORY:LEG_FRONT:900]
[BP_RELSIZE:BY_CATEGORY:LEG_REAR:900]
[BP_RELSIZE:BY_CATEGORY:FOOT:120]
[BP_RELSIZE:BY_CATEGORY:FOOT_FRONT:120]
[BP_RELSIZE:BY_CATEGORY:FOOT_REAR:120]
[BP_RELSIZE:BY_CATEGORY:HEAD:300]
[BP_RELSIZE:BY_CATEGORY:CLAW:50]
STINGER left to BP default
[BP_RELSIZE:BY_CATEGORY:EYE:5]
[BP_RELSIZE:BY_CATEGORY:RIB_TRUE:30]
[BP_RELSIZE:BY_CATEGORY:RIB_FALSE:30]
[BP_RELSIZE:BY_CATEGORY:RIB_FLOATING:20]#
[BP_RELSIZE:BY_CATEGORY:HEART:100]
JOINT left to BP default
[BP_RELSIZE:BY_CATEGORY:SPINE:100]
[BP_RELSIZE:BY_CATEGORY:BRAIN:200]
[BP_RELSIZE:BY_CATEGORY:HORN:100]
FINGER left to BP default
TOE left to BP default
[/code]

My bio-weapons are part of the science faction, anything in that faction would get along with the bio-weapons.

oh I got it, that save a lot of time just trying to make a different separated faction.

oh I got it, that save a lot of time just trying to make a different separated faction.[/quote]

Yeah, they are failed experiments after all.

However, if creating factions is possible by .json, then it should not be hard, maybe just copy and pasting with some editing. I am unaware how if that is the case.

You might want to also check out some of the various documentation files here. There’s a fair bit of information about what various things do in the JSON files as well as some very basic primers to how the mod system functions.

So i have started creating a few creatures off of existing templates, namely the pinky demon and lost soul. Most of the monsters i am going to make will need ranged attacks however. By looking at the tankbot and other ranged enemies it looks like they call on a special attack stored elsewhere in order to make ranged attacks, even though the ammo counts are stored in the json. Where are these special attack functions stored so that i can create my own?

I belive the special attacks are hard coded and can’t create your own without messing around with the actual code.

So there is no way i can make monsters with ranged attacks? That kinda wrecks the whole premise

Yeah, ranged attacks are one of the things that are currently beyond the power of just JSON modding AFAIK (though you could probably get at least some basics out there is you were using the LUA coding stuff for the mod system). This is mainly because the majority of ranged attacks have a very wide variety of effects that make them very difficult to create good templates for. With some work we could probably code up some very basic “templates” that printed a message and hit someone with an effect, or that fired a stated type of ammo, but nobody has gotten around to it yet.

but monsters can use attacks what are already here? if yes not only lost soul and pinky are done but chaingunner too (re-use burst from smg turret)

Does anyone have experience modding special attacks? The guide that i2amroy posted says in general terms how to do it but references several files that I cannot find