This guide is about fixing the Starbound mod called Book of Spirits – NPC & Monster Name Displayer. The goal is to include built-in assistance for custom NPCs, Monster, and talkative objects.
Überblick
This mod is crucial, and it should be loaded before any other mods using its features. You don’t have to include it in your metadata file. The key features involve showing the name of the entity, a custom title if it has one, and for monsters, indicating if they are rare breeds (like Albino Poptop, Fire Gleap) and elite.
There are two displayers: a name displayer and a title displayer. They automatically show based on the entity’s configuration, which I’ll explain in the sections below.
Even if I say something is harmless, it means your mod will work fine even without „Book of Spirits – NPC & Monster Name Displayer“ installiert. It’s recommended to unpack the mod because there are files you might need to copy into your mod, helping you understand what to patch.
Naming rules for hostile NPCs: I’ve set a fixed name for generic hostile NPCs (Banditen, Zombies, lackeys, usw.) since in most video games, only important hostile NPCs have names to highlight their significance over regular mobs.
NPC parameters
The name displayer chooses the NPC’s name from one of these configurations:
- Der „npcname“ Variable.
- Der „Name“ variable that can be assigned within their identity table.
- The randomly generated name assigned to them.
It’s a personal choice, but you might want to set a name for generic hostile NPCs (Zombies, Banditen, Lackeys, usw.) that function as monsters.
For the title displayer, it selects the following variable added by this mod, which is harmless:
- displayTitle
There’s also a new harmless behavior script added by this mod. If an NPC is overriding the base behavior script (like Merchants, Zum Beispiel), you should copy this script:
/scripts/bookofspirits/bookofspirits_interact_support.lua
This script displays the displayer when interacting (drücken ‚E‘) with an NPC. If the displayer doesn’t show up during interaction, you need to add this script to your NPC.
NPC Patching-Support
The patching process is as follows, but you can add it directly to your mod for easier understanding of variable positions.
To give an NPC a title, and if it’s overriding the behavior script (Zum Beispiel, merchant.npctype):
[ [{ "op" : "hinzufügen", "Weg" : "/displayTitle", "Wert" : "Händler"}] ,[{ "op": "hinzufügen", "Weg": "/scripts/-", "Wert": "/scripts/bookofspirits/bookofspirits_interact_support.lua" }] ]
Ergebnis:
{ "Typ" : "merchant", "baseType" : "Base", ... "displayTitle" : "Händler", "Skripte" : [ "/npcs/bmain.lua" ,"/scripts/bookofspirits/bookofspirits_interact_support.lua" ] }
To set a fixed name for the npc(mutantminer.npctype):
[{ "op" : "hinzufügen", "Weg" : "/identity", "Wert": { "Name":"Mutant Miner" }}]
Ergebnis:
{ "identity" : { "Name":"Mutant Miner" } }
Chatty Objects Parameters
The following variables and script are harmless additions from this mod:
For the name displayer, it uses the following object configuration as their NPC name:
- npcName
The title displayer selects the following harmless variable added by this mod:
- displayTitle
There’s also a new script that you must copy into your mod:
/scripts/bookofspirits/bookofspirits_interact_support.lua
This script displays the displayer when interacting (drücken ‚E‘) with an object. If the displayer doesn’t show up during interaction, you need to add this script to your object.
Warnung:
- You cannot use this feature if the object has an „interactAction“ Parameter.
- This feature is only applicable if the object can be made „chatty,“ typically having „Skripte“ Und „chatOptions“ arrays.
Chatty Object Patching-Support
To give an object a name and title(IE: techlabscientist.object):
[ [{ "op" : "hinzufügen", "Weg" : "/npcName", "Wert" : "Elliot"}] ,[{ "op" : "hinzufügen", "Weg" : "/displayTitle", "Wert" : "Tech Lab Scientist"}] ,[{ "op": "hinzufügen", "Weg": "/scripts/-", "Wert": "/scripts/bookofspirits/bookofspirits_interact_support.lua" }] ]
Ergebnis:
{ "objectName" : "techlabscientist", "colonyTags" : ["Vorposten"], ... "npcName" : "Elliot", "displayTitle" : "Tech Lab Scientist", "Skripte" : ["/scripts/chattyObject.lua","/scripts/bookofspirits/bookofspirits_interact_support.lua"] }
Monster Parameters
For the name displayer, it selects the following configuration of the monster as their name:
- shortdescription
The title displayer picks the following harmless variable added by this mod, added as a statusProperties:
- displayTitle
Notiz: Rare monster variants have a custom title in the format (check /monsters/flyers/agrobat/iceagrobat.monstertype.patch):
^yellow; Rare Breed ^reset;
Zusätzlich, there’s a new harmless script added by this mod. You must copy it if there’s a monster that can be set as elite or can have dynamic custom titles and dynamic names, such as Generated monsters:
/scripts/bookofspirits/bookofspirits_monster_support.lua
There’s also a new file containing additional configurations for Generated Monsters. If you’re adding new types of generated monsters, check this file for more details:
/monsters/bookofspirits_generated.config
Monster Patching-Support
To give a Monster a name, title and display it as elite if is configured as elite(IE: punchy.monstertype):
[ [{ "op" : "hinzufügen", "Weg" : "/shortdescription", "Wert" : "Punchy"}] ,[{ "op" : "hinzufügen", "Weg" : "/baseParameters/statusSettings/statusProperties/displayTitle", "Wert" : "Test Dummy"}] ,[{ "op" : "hinzufügen", "Weg" : "/baseParameters/scripts/-", "Wert" : "/scripts/bookofspirits/bookofspirits_monster_support.lua"}] ]
Ergebnis:
{ "Typ" : "punchy", "Kategorien" : [], ... "shortdescription" : "Punchy", "baseParameters" : { "statusSettings" : { "statusProperties" : { "displayTitle" : "Test Dummy" } } ,"Skripte" : [ "/monsters/monster.lua", ,"/scripts/bookofspirits/bookofspirits_monster_support.lua" ] } }
Generated Monster Parameters
Generated Monsters have a dedicated configuration file that includes parameters for setting the name and custom title based on their parts. The configuration file is located at:
/monsters/bookofspirits_generated.config
Zusätzlich, there’s a new script at „/scripts/bookofspirits/bookofspirits_monster_support.lua“ that must be copied into your mod. Make sure to add this script to the script array of the generated monster.
skillPrefixes
Here’s a JSON array of objects containing a list of skill types from the special skill of the monster. This list is used to determine the prefix of the monster name.
- Name: This is the string name that will be displayed alongside the monster name.
- skillName: This is the skill name type (z.B., inkSprayAttack) that will be used to compare if the monster has that skill.
- asSuffix (optional): If set to true, the skill name will be added after the monster name.
monsterTypes
This list contains the names of monster types and their variants. It’s used to determine the monster name and title based on the head part of the monster or a specific part pattern of your choice.
- monster type (z.B., „largeflying“): The name of the list should match the „Typ“ parameter in the .monstertype file.
- Varianten: In this JSON array of objects, you include different part combinations that the generated monster can have.
Variants Parameters
This JSON array of objects includes variables used to configure the generated monster name and title based on the given parts. It supports multiple part patterns, but it’s recommended to prioritize entries with just the head part first.
- Name: The monster name that will be displayed.
- Titel (optional): The title that will be displayed.
- Präfix (optional): A prefix added to the monster name.
- Teile: An array of strings containing the names of folders containing the monster’s parts.
- addSkillPrefix (optional): If set to false, it won’t add a skill prefix to the monster name.
Notiz:
- If you want to set a specific pattern, that entry must include all the part types used by the monster type.
- Zum Beispiel, Wenn „largefish“ verwendet 3 parts as configured in its „Teile“ Array, the pattern should also have 3 parts..
{„Name“ : „SunShark“, „Titel“ : „Large Fish Monster“, „Teile“ : [„Hai“,“sunfish“,“sunfish“]}
Generated Monsters Patching-Support For New Types
For this example, I’ll use the „sb_hugebiped.monstertype“ from Betabound, which is a new type of generated monster.
Remember to copy „/scripts/bookofspirits/bookofspirits_monster_support.lua“ into your mod in the same folder path.
To provide support for a new generated monster type (add it directly to your mod or patch it if you are patching another user’s mod):
[ [{ "op" : "hinzufügen", "Weg" : "/baseParameters/scripts/-", "Wert" : "/scripts/bookofspirits/bookofspirits_monster_support.lua"}] ]
Ergebnis:
{ "Typ" : "sb_hugebiped", "Kategorien" : ["sb_hugebiped"], ... ,"baseParameters" : { "Skripte" : [ "/monsters/monster.lua", "/monsters/sb_miniboss.lua" ,"/scripts/bookofspirits/bookofspirits_monster_support.lua" ] } }
Then you must patch the file „/monsters/bookofspirits_generated.config“ as a file „/monsters/bookofspirits_generated.config.patch„:
[ { "op": "hinzufügen", "Weg": "/monsterTypes/sb_hugebiped", "Wert": { "Varianten": [ { "Name": "Birdzilla", "Titel": "Huge Biped Monster", "Teile": ["beak"] }, { "Name": "Dragonzilla", "Titel": "Huge Biped Monster", "Teile": ["Drachen"] }, { "Name": "Featherzilla", "Titel": "Huge Biped Monster", "Teile": ["feather"] }, { "Name": "Rhinozilla", "Titel": "Huge Biped Monster", "Teile": ["rhino"] } ] } } ]
Ergebnis:
{ ,"monsterTypes" : { "largeflying" : {...} ... ,"sb_hugebiped" : { "Varianten" : [ {"Name" : "Birdzilla","Titel" : "^red;Huge Biped Monster","Teile" : ["beak"]} ,{"Name" : "Dragonzilla", "Titel" : "^red;Huge Biped Monster","Teile" : ["Drachen"]} ,{"Name" : "Featherzilla","Titel" : "^red;Huge Biped Monster","Teile" : ["feather"]} ,{"Name" : "Rhinozilla","Titel" : "^red;Huge Biped Monster","Teile" : ["rhino"]} ] } } }
Generated Monster Patching-Support Existing Type
To add a new variant to an existing monster type(IE: largequadruped.monstertype), you must patch the file „/monsters/bookofspirits_generated.config“ as a file „/monsters/bookofspirits_generated.config.patch„:
[ { "op": "hinzufügen", "Weg": "/monsterTypes/largequadruped/variants/-", "Wert": {"Name": "New Quadruped 1","Titel": "Large Quadruped Monster", "Teile": ["blabla1"]} } ,{ "op": "hinzufügen", "Weg": "/monsterTypes/largequadruped/variants/-", "Wert": {"Name": "New Quadruped 2","Titel": "Large Quadruped Monster", "Teile": ["blabla2"]} } ]
Ergebnis:
,"monsterTypes" : { "largeflying" : {...} ... ,"largequadruped" : { "Varianten" : [ {"Name" : "Anthurix","Präfix" : "Erwachsene", "Titel" : "Large Quadruped Monster","Teile" : ["Pfeil"]} ... ,{"Name": "New Quadruped 1","Titel": "Large Quadruped Monster", "Teile": ["blabla1"]} ,{"Name": "New Quadruped 2","Titel": "Large Quadruped Monster", "Teile": ["blabla2"]}
Das ist alles, was wir heute dafür teilen Starbound Führung. Dieser Leitfaden wurde ursprünglich erstellt und geschrieben von Chofranc. Für den Fall, dass wir diesen Leitfaden nicht aktualisieren können, Sie können das neueste Update finden, indem Sie diesem folgen Verknüpfung.