This guide is about fixing the Starbound mod called Book of Spirits – НПС & 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 – НПС & Monster Name Displayer” установлен. 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 (бандиты, зомби, 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:
- The “npcname” переменная.
- The “имя” 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 (Зомби, Бандиты, 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 (как торговцы, например), 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):
[ [{ "оп" : "добавлять", "путь" : "/displayTitle", "ценить" : "Торговец"}] ,[{ "оп": "добавлять", "путь": "/scripts/-", "ценить": "/scripts/bookofspirits/bookofspirits_interact_support.lua" }] ]
Результат:
{ "тип" : "торговец", "baseType" : "база", ... "displayTitle" : "Торговец", "сценарии" : [ "/npcs/bmain.lua" ,"/scripts/bookofspirits/bookofspirits_interact_support.lua" ] }
To set a fixed name for the npc(mutantminer.npctype):
[{ "оп" : "добавлять", "путь" : "/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 “сценарии” и “chatOptions” arrays.
Chatty Object Patching-Support
To give an object a name and title(ИЕ: techlabscientist.object):
[ [{ "оп" : "добавлять", "путь" : "/npcName", "ценить" : "Эллиот"}] ,[{ "оп" : "добавлять", "путь" : "/displayTitle", "ценить" : "Tech Lab Scientist"}] ,[{ "оп": "добавлять", "путь": "/scripts/-", "ценить": "/scripts/bookofspirits/bookofspirits_interact_support.lua" }] ]
Результат:
{ "objectName" : "techlabscientist", "colonyTags" : ["аванпост"], ... "npcName" : "Эллиот", "displayTitle" : "Tech Lab Scientist", "сценарии" : ["/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(ИЕ: punchy.monstertype):
[ [{ "оп" : "добавлять", "путь" : "/shortdescription", "ценить" : "Punchy"}] ,[{ "оп" : "добавлять", "путь" : "/baseParameters/statusSettings/statusProperties/displayTitle", "ценить" : "Test Dummy"}] ,[{ "оп" : "добавлять", "путь" : "/baseParameters/scripts/-", "ценить" : "/scripts/bookofspirits/bookofspirits_monster_support.lua"}] ]
Результат:
{ "тип" : "punchy", "категории" : [], ... "shortdescription" : "Punchy", "baseParameters" : { "statusSettings" : { "statusProperties" : { "displayTitle" : "Test Dummy" } } ,"сценарии" : [ "/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.
- варианты: 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.
- префикс (необязательный): 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” использует 3 parts as configured in its “части” множество, the pattern should also have 3 parts..
{“имя” : “SunShark”, “заголовок” : “Large Fish Monster”, “части” : [“акула”,”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):
[ [{ "оп" : "добавлять", "путь" : "/baseParameters/scripts/-", "ценить" : "/scripts/bookofspirits/bookofspirits_monster_support.lua"}] ]
Результат:
{ "тип" : "sb_hugebiped", "категории" : ["sb_hugebiped"], ... ,"baseParameters" : { "сценарии" : [ "/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“:
[ { "оп": "добавлять", "путь": "/monsterTypes/sb_hugebiped", "ценить": { "варианты": [ { "имя": "Birdzilla", "заголовок": "Huge Biped Monster", "части": ["beak"] }, { "имя": "Dragonzilla", "заголовок": "Huge Biped Monster", "части": ["дракон"] }, { "имя": "Featherzilla", "заголовок": "Huge Biped Monster", "части": ["feather"] }, { "имя": "Rhinozilla", "заголовок": "Huge Biped Monster", "части": ["rhino"] } ] } } ]
Результат:
{ ,"monsterTypes" : { "largeflying" : {...} ... ,"sb_hugebiped" : { "варианты" : [ {"имя" : "Birdzilla","заголовок" : "^red;Huge Biped Monster","части" : ["beak"]} ,{"имя" : "Dragonzilla", "заголовок" : "^red;Huge Biped Monster","части" : ["дракон"]} ,{"имя" : "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(ИЕ: largequadruped.monstertype), you must patch the file “/monsters/bookofspirits_generated.config” as a file “/monsters/bookofspirits_generated.config.patch“:
[ { "оп": "добавлять", "путь": "/monsterTypes/largequadruped/variants/-", "ценить": {"имя": "New Quadruped 1","заголовок": "Large Quadruped Monster", "части": ["blabla1"]} } ,{ "оп": "добавлять", "путь": "/monsterTypes/largequadruped/variants/-", "ценить": {"имя": "New Quadruped 2","заголовок": "Large Quadruped Monster", "части": ["blabla2"]} } ]
Результат:
,"monsterTypes" : { "largeflying" : {...} ... ,"largequadruped" : { "варианты" : [ {"имя" : "Anthurix","префикс" : "Взрослый", "заголовок" : "Large Quadruped Monster","части" : ["стрелка"]} ... ,{"имя": "New Quadruped 1","заголовок": "Large Quadruped Monster", "части": ["blabla1"]} ,{"имя": "New Quadruped 2","заголовок": "Large Quadruped Monster", "части": ["blabla2"]}
Это все, чем мы делимся сегодня для этого. Звездный гид. Это руководство было первоначально создано и написано Chofranc. На случай, если нам не удастся обновить это руководство, вы можете найти последнее обновление, следуя этому связь.