Starbound

Starbound

Scripted Artificial Intelligence Lattice (Customisable A.I.!)
Found a way to solve your radio problem.
Well good news, i found a solution who can work with any race (or chip). But i'dont know how to script that. I will try to explain how i do it . Radio messages seem to be link with the default S.A.I.L add by the initial race mod

For exemple : The race Elduukhar (add by fracking universe) have a station named : elduukhartechstation.object [path : frackinguniverse\objects\ship\]. And in the fracking universe folder, you have also a file named : ai.config.patch [path : \frackinguniverse\ai\] and that file overwrite/replace all the editing (.patch seem to be a special extension who allow that). And after some search i found where the sail portrait are. In [frackinguniverse\ai\] and in [frackinguniverse\ai\portraits\]

And i found : [elduukharportrait.pnj - elduukharquestportrait.pnj] in the [frackinguniverse\ai\portraits\] folder and [elduukharai.frames - elduukharai.pnj - [staticelduukhar.frames - staticelduukhar.pnj] in [frackinguniverse\ai\] folder.

---------------------------
I decide to create my own mod with the same path and name files. [NameModTest\ai\portraits\] and [NameModTest\ai\], and i put my own sail (inspired of Kazdra mod) in a different color with the name [elduukharai.frames - elduukharai.pnj - [staticelduukhar.frames - staticelduukhar.pnj] in [NameModTest\ai\] and [elduukharportrait.pnj - elduukharquestportrait.pnj] in the [NameModTest\ai\portraits\]

I put my folder my mod folder in my *\Starbound\mods.
And it work perfecly well. Here a screenshot

https://image.noelshack.com/fichiers/2019/32/2/1565111181-20190806190513-1.jpg

I just found one issue, cause my mod editing it's not good enough for found a solution. For work, i was forced to add an metadata file with a command : "priority" : 99
For forced Starbound to load my mod in last.

----------------------------
I strongly believe, there is variable command, who can found the original value (while you play the game) and change it. Cause i found in frackinguniverse mod, an object who work exactly like your mod. The racialiser object. He can be found here [\frackinguniverse\interface\objectcrafting\fu_racialiser\] we can found some files who can edit the default value. Like pet, i change the value and use the same trick as before [NameModTest\interface\objectcrafting\fu_racialiser] and it work too. I was able to change the pet of any races.

In conclusion, i think if you find a way to change the original file with a copy/replace variable command and keep the same name. Or, make a new station who overwrite the older station with your chip value, using the variable command (like race info,ect...) you will be able to change the radio message or anythink you want.

Sorry for the long message, hope i was able to find a solution with you :)
Last edited by [Np]Tonton[V2]; 6 Aug, 2019 @ 12:50pm
< >
Showing 1-3 of 3 comments
🐱  [developer] 6 Aug, 2019 @ 3:32pm 
Hey, thanks for trying around! Sadly, as I explained in the main comments thread, this kind of "replace the other files" mod only works because they overwrite files - and there is no way to move files around "dynamically", in-game.

The fu_racialiser script looks like it does it, but it only works for objects (and other scriptable entities) because starbound objects (and scripted entities) can store their sprites and parameters inside "themselves" - but there is no way to do this for the vanilla radiomessages, those are "old-school" non-scripted interfaces which are using entirely static configuration.

I've tried for quite some time before giving up - all the ideas I had were way too hacky and finicky to be used, so now I'm just waiting for them to modernize the radiomessage stuff, which might be never since it's a system that works well and doesn't need any improvements. :sadcat:
[Np]Tonton[V2] 6 Aug, 2019 @ 6:27pm 
Damn :steamsad:

Well, i'v one solution left.
But i dont know if it work too

When you start a new game with build your own ship (byos) and fracking universe
You start with a broken ship, whithout any S.A.I.L
In fact, you have one "saved" in : fu_byostechstation.object [path : \frackinguniverse\objects\ship\fu_byostechstation]

That S.A.I.L are temporary [and his path are stored in the object]
and wait you, for choose one solution :

- Build you own ship
- Default

Depend of what you choose, you'r ship will load. But !
The most important is the files and the script used by the mod for apply that.
They are seem to be stored in [\interface\ai\]

When you watch [fu_byosai.lua] you will found some dynamic script value :
---------------------

function init()
textData = {}
textUpdateDelay = config.getParameter("textUpdateDelay")
chatterSound = config.getParameter("chatterSound")
defaultShipUpgrade = config.getParameter("defaultShipUpgrade")
byosItems = config.getParameter("byosItems")
aiFaceCanvas = widget.bindCanvas("aiFaceCanvas")
aiImage = {image = config.getParameter("aiImage")}
aiImage.frames = config.getParameter("aiFrames") - 1
aiImage.updateTime = config.getParameter("aiUpdateTime")
aiImage.currentFrame = 0
scanlines = {image = config.getParameter("scanlinesImage")}
scanlines.frames = config.getParameter("scanlinesFrames") - 1
scanlines.updateTime = config.getParameter("scanlinesUpdateTime")
scanlines.currentFrame = 0
static = {image = config.getParameter("staticImage")}
static.frames = config.getParameter("staticFrames") - 1
static.updateTime = config.getParameter("staticUpdateTime")
static.currentFrame = 0
updateAiImage()

-----------------
This think define your SAIL.
He get the value, and apply them for make the S.A.I.L
Some line after, you will found :

-------------------

function racial()
if not world.getProperty("♥♥♥♥♥♥♥♥♥♥♥♥") then
race = player.species()
count = racialiserBootUp()
parameters = getBYOSParameters("techstation", true, _)
player.giveItem({name = "fu_byostechstation", count = 1, parameters = parameters})
player.startQuest("fu_shipupgrades")
player.upgradeShip(defaultShipUpgrade)
world.setProperty("♥♥♥♥♥♥♥♥♥♥♥♥", true)
pane.dismiss()
end
end

function racialiserBootUp()
raceInfo = root.assetJson("/interface/objectcrafting/fu_racialiser/fu_raceinfo.config").raceInfo
for num, info in pairs (raceInfo) do
if info.race == race then
return num
end
end
return 0
end

-----------

I have maybe forgot some value, it's better you will watch yourself.
But, it seem the script look for any value dynamically, and can apply modifications.
and it appear to work with radio messages.

Maybe you can apply your own value with your own config file ?
it seems to me possible to apply a script like that, in your own techstation or trigger quest.

All of that start from that script :
-------------


: function byos()
if not world.getProperty("♥♥♥♥♥♥♥♥♥♥♥♥") then
player.startQuest("fu_byos")
player.startQuest("fu_shipupgrades")
for _, recipe in pairs (root.assetJson("/interface/ai/fu_byosrecipes.config")) do
player.giveBlueprint(recipe)
end
if byosItems then
for _,byosItem in pairs (byosItems) do
player.giveItem(byosItem)
end
end
world.sendEntityMessage("bootup", "byos", player.species())
world.setProperty("♥♥♥♥♥♥♥♥♥♥♥♥", true)
pane.dismiss()
end
end

-----------

I believe all of that, was possible when the starting quest begin.
I already saw that in many mod, they use a trigger quest for launch a bunch a script. I dont know if it's the condition to work well.

-------------

Well, hope it was helping you. It is my last good idea :/
Last edited by [Np]Tonton[V2]; 6 Aug, 2019 @ 6:43pm
🐱  [developer] 7 Aug, 2019 @ 12:06am 
The second and third parts are for BYOS's ship-changing magic. The first part is used to animate the S.A.I.L. portrait inside the (scripted) S.A.I.L. panel (techstation)'s interface - this is exactly what this mod does (and actually, FU's thingy probably originated from here). Again, this cannot be used for radiomessages because those are non-scripted interfaces that use the old system. Their animation is handled by the engine just like the "vanilla" S.A.I.L., except that I can't just overwrite the radiomessages like I do for S.A.I.L. because they're not an interface that's brought up by an interaction, there is simply no "dynamic" control over radiomessages besides playing them. :PuzzleBallDONT_KNOW:
Last edited by 🐱; 7 Aug, 2019 @ 12:07am
< >
Showing 1-3 of 3 comments
Per page: 1530 50