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, الوحوش, and talkative objects.
ملخص
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” installed. 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 (bandits, الزومبي, lackeys, إلخ.) 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:
- ال “npcname” variable.
- ال “اسم” 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, Bandits, Lackeys, إلخ.) 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, على سبيل المثال), you should copy this script:
/scripts/bookofspirits/bookofspirits_interact_support.lua
This script displays the displayer when interacting (pressing ‘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 (على سبيل المثال, merchant.npctype):
[ [{ "op" : "يضيف", "path" : "/displayTitle", "قيمة" : "Merchant"}] ,[{ "op": "يضيف", "path": "/scripts/-", "قيمة": "/scripts/bookofspirits/bookofspirits_interact_support.lua" }] ]
نتيجة:
{ "يكتب" : "merchant", "baseType" : "قاعدة", ... "displayTitle" : "Merchant", "scripts" : [ "/npcs/bmain.lua" ,"/scripts/bookofspirits/bookofspirits_interact_support.lua" ] }
To set a fixed name for the npc(mutantminer.npctype):
[{ "op" : "يضيف", "path" : "/identity", "قيمة": { "اسم":"Mutant Miner" }}]
نتيجة:
{ "identity" : { "اسم":"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 (pressing ‘E’) with an object. If the displayer doesn’t show up during interaction, you need to add this script to your object.
تحذير:
- You cannot use this feature if the object has an “interactAction” المعلمة.
- This feature is only applicable if the object can be made “chatty,” typically having “scripts” و “chatOptions” arrays.
Chatty Object Patching-Support
To give an object a name and title(IE: techlabscientist.object):
[ [{ "op" : "يضيف", "path" : "/npcName", "قيمة" : "Elliot"}] ,[{ "op" : "يضيف", "path" : "/displayTitle", "قيمة" : "Tech Lab Scientist"}] ,[{ "op": "يضيف", "path": "/scripts/-", "قيمة": "/scripts/bookofspirits/bookofspirits_interact_support.lua" }] ]
نتيجة:
{ "objectName" : "techlabscientist", "colonyTags" : ["outpost"], ... "npcName" : "Elliot", "displayTitle" : "Tech Lab Scientist", "scripts" : ["/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
ملحوظة: Rare monster variants have a custom title in the format (check /monsters/flyers/agrobat/iceagrobat.monstertype.patch):
^yellow; Rare Breed ^reset;
بالإضافة إلى ذلك, 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" : "يضيف", "path" : "/shortdescription", "قيمة" : "Punchy"}] ,[{ "op" : "يضيف", "path" : "/baseParameters/statusSettings/statusProperties/displayTitle", "قيمة" : "Test Dummy"}] ,[{ "op" : "يضيف", "path" : "/baseParameters/scripts/-", "قيمة" : "/scripts/bookofspirits/bookofspirits_monster_support.lua"}] ]
نتيجة:
{ "يكتب" : "punchy", "categories" : [], ... "shortdescription" : "Punchy", "baseParameters" : { "statusSettings" : { "statusProperties" : { "displayTitle" : "Test Dummy" } } ,"scripts" : [ "/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
بالإضافة إلى ذلك, 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.
- اسم: This is the string name that will be displayed alongside the monster name.
- skillName: This is the skill name type (على سبيل المثال, inkSprayAttack) that will be used to compare if the monster has that skill.
- asSuffix (خياري): 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 (على سبيل المثال, “largeflying”): The name of the list should match the “يكتب” parameter in the .monstertype file.
- variants: 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.
- اسم: The monster name that will be displayed.
- عنوان (خياري): The title that will be displayed.
- prefix (خياري): A prefix added to the monster name.
- أجزاء: An array of strings containing the names of folders containing the monster’s parts.
- addSkillPrefix (خياري): If set to false, it won’t add a skill prefix to the monster name.
ملحوظة:
- If you want to set a specific pattern, that entry must include all the part types used by the monster type.
- على سبيل المثال, لو “largefish” uses 3 parts as configured in its “أجزاء” array, the pattern should also have 3 parts..
{“اسم” : “SunShark”, “عنوان” : “Large Fish Monster”, “أجزاء” : [“shark”,”sunfish”,”sunfish”]}
Generated Monsters Patching-Support For New Types
لهذا المثال, 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" : "يضيف", "path" : "/baseParameters/scripts/-", "قيمة" : "/scripts/bookofspirits/bookofspirits_monster_support.lua"}] ]
نتيجة:
{ "يكتب" : "sb_hugebiped", "categories" : ["sb_hugebiped"], ... ,"baseParameters" : { "scripts" : [ "/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": "يضيف", "path": "/monsterTypes/sb_hugebiped", "قيمة": { "variants": [ { "اسم": "Birdzilla", "عنوان": "Huge Biped Monster", "أجزاء": ["beak"] }, { "اسم": "Dragonzilla", "عنوان": "Huge Biped Monster", "أجزاء": ["dragon"] }, { "اسم": "Featherzilla", "عنوان": "Huge Biped Monster", "أجزاء": ["feather"] }, { "اسم": "Rhinozilla", "عنوان": "Huge Biped Monster", "أجزاء": ["rhino"] } ] } } ]
نتيجة:
{ ,"monsterTypes" : { "largeflying" : {...} ... ,"sb_hugebiped" : { "variants" : [ {"اسم" : "Birdzilla","عنوان" : "^red;Huge Biped Monster","أجزاء" : ["beak"]} ,{"اسم" : "Dragonzilla", "عنوان" : "^red;Huge Biped Monster","أجزاء" : ["dragon"]} ,{"اسم" : "Featherzilla","عنوان" : "^red;Huge Biped Monster","أجزاء" : ["feather"]} ,{"اسم" : "Rhinozilla","عنوان" : "^red;Huge Biped Monster","أجزاء" : ["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": "يضيف", "path": "/monsterTypes/largequadruped/variants/-", "قيمة": {"اسم": "New Quadruped 1","عنوان": "Large Quadruped Monster", "أجزاء": ["blabla1"]} } ,{ "op": "يضيف", "path": "/monsterTypes/largequadruped/variants/-", "قيمة": {"اسم": "New Quadruped 2","عنوان": "Large Quadruped Monster", "أجزاء": ["blabla2"]} } ]
نتيجة:
,"monsterTypes" : { "largeflying" : {...} ... ,"largequadruped" : { "variants" : [ {"اسم" : "Anthurix","prefix" : "بالغ", "عنوان" : "Large Quadruped Monster","أجزاء" : ["arrow"]} ... ,{"اسم": "New Quadruped 1","عنوان": "Large Quadruped Monster", "أجزاء": ["blabla1"]} ,{"اسم": "New Quadruped 2","عنوان": "Large Quadruped Monster", "أجزاء": ["blabla2"]}
هذا كل ما نشاركه اليوم من أجل هذا Starbound مرشد. تم إنشاء هذا الدليل وكتابته في الأصل بواسطة Chofranc. في حالة فشلنا في تحديث هذا الدليل, يمكنك العثور على آخر تحديث باتباع هذا وصلة.