Pshy0 / es-ruin-the-fun

A development / cheat plugin for Endless Sky. Access all ships and outfits, change your captain's name, choose the color swizzle of your ships, edit your relation with other governments, set your combat rank, hire a powerful escort, gift yourself pre-outfitted ships, give yourself money, and much more.
Mozilla Public License 2.0
4 stars 1 forks source link

make plugin-update makes RTF shipyard and outfitters disappear #29

Closed wararjey closed 10 months ago

wararjey commented 10 months ago

I am using stable endless sky from an arch package. I've installed the Midnight Plugins and the High DPI plugin. In the Makefile is set the data directory to the data directory of the arch package /usr/share/games/endless-sky/data The rtf plugin was missing a few exoctic outfits in its all-outfits.txt, e.g. the Huge Systems Core. So I tried make plugin-update. The all-outfits.txt gets regenerated correctly. However, the RTF planet does not have a shipyard anymore, nor an outfitter. I tried make clean, make update, make plugin-update, same result. In the generated planets.txt I spotted strange lines starting with \toutfitter, I guess that's what might be messing things up.

planet RTF0-P
        landscape land/fields6
        description "   Ruin The Fun                                                                    RTF0-P"
        description ""
        description "  [         Shipyard ] All ships (enable variants with the Variants job)"
        description "  [       Outfitter ] All outfits"
        description "  [ Job Board     ] Many other features"
        description "  [ Spaceport     ] Help & Quick actions"
        spaceport "You can access the Spaceport again by taking off and landing back."
        government Ruin-The-Fun
        tribute 1000000
                fleet "Ruin-The-Fun Dread Fleet (Planet Defense)" 8
\toutfitter "Ruin-The-Fun Outfits"
\toutfitter "Ruin-The-Fun Stat Outfits"
\toutfitter "Ruin-The-Fun All Outfits"
\tshipyard "Ruin-The-Fun All Base Ships"
\tshipyard `modships`
\toutfitter `modoutfits`
\toutfitter "Ruin-The-Fun Outfits"
\toutfitter "Ruin-The-Fun Stat Outfits"
\toutfitter "Ruin-The-Fun All Outfits"
\tshipyard "Ruin-The-Fun All Base Ships"
\tshipyard `modships`
\toutfitter `modoutfits`
\toutfitter "Ruin-The-Fun Outfits"
\toutfitter "Ruin-The-Fun Stat Outfits"
\toutfitter "Ruin-The-Fun All Outfits"
\tshipyard "Ruin-The-Fun All Base Ships"
\tshipyard `modships`
\toutfitter `modoutfits`
\toutfitter "Ruin-The-Fun Outfits"
\toutfitter "Ruin-The-Fun Stat Outfits"
\toutfitter "Ruin-The-Fun All Outfits"
\tshipyard "Ruin-The-Fun All Base Ships"
\tshipyard `modships`
\toutfitter `modoutfits`
       outfitter `Advanced Fuel`
        outfitter `Advanced Turbo Blasters`
        outfitter `Aluminum`
        outfitter `Ammo North`
        outfitter `Ammo South`
...

Regards,

Pshy0 commented 10 months ago

Hello,

The Huge Systems Core is called Systems Core (Large). I tried reproducing this bug by enabling the midnight plugins and using make plugin-update, but this outfit was added in the list in all-outfits.txt.

This is a screen from the game after I regenerated the data: image

Could you please provide additional information:

The System Core (Huge) is part of the Lost in Midnight, do you have it installed? Is the plugin enabled? What is the output of git reset --hard && make clean && make plugin-update? What are the folder names of the plugins? Output of tmp/outfitters.list.tmp and tmp/plugin-outfitters.list.tmp?

Pshy0 commented 10 months ago

I spotted strange lines starting with \toutfitter, I guess that's what might be messing things up.

While I could not reproduce this, I am trying to figure out why this could be happening.

Pshy0 commented 10 months ago

I found out that the RTF plugin data is being parsed if I use your folder name, which is not supposed to happen. And the errorneous lines are related to this data.

I fixed this and pushed a commit to main. Could you udpate the RTF plugin to use the head of main and try again?

Pshy0 commented 10 months ago

Oh, something important, some of the files have no sources, they are only updated, so to really clean the plugin you need to do git reset --hard if the plugin is still a git repository (reinstall it if not), followed by make clean.

Pshy0 commented 10 months ago

I just pushed a commit again. Be sure to run git reset --hard if the plugin is a git repository (or reinstall it), and run make clean && make plugin-update

wararjey commented 10 months ago

outfitters.list.tmp.txt plugin-outfitters.list.tmp.txt Hello, yes, the Huge Systems Core is part of the Lost in Midnight plugin. I've installed the plugins using eslauncher2, except for rtf, which i git-cloned. The list of all outfits correctly has the Huge Systems Core. The planets.txt looks a bit different now:

planet RTF0-P
    landscape land/fields6
    description "   Ruin The Fun                                                                    RTF0-P"
    description ""
    description "  [         Shipyard ] All ships (enable variants with the Variants job)"
    description "  [       Outfitter ] All outfits"
    description "  [ Job Board     ] Many other features"
    description "  [ Spaceport     ] Help & Quick actions"
    spaceport "You can access the Spaceport again by taking off and landing back."
    government Ruin-The-Fun
    tribute 1000000
        fleet "Ruin-The-Fun Dread Fleet (Planet Defense)" 8
\toutfitter "Ruin-The-Fun Outfits"
\toutfitter "Ruin-The-Fun Stat Outfits"
\toutfitter "Ruin-The-Fun All Outfits"
\tshipyard "Ruin-The-Fun All Base Ships"
\tshipyard `modships`
\toutfitter `modoutfits`
    outfitter `Advanced Fuel`
    outfitter `Advanced Turbo Blasters`
    outfitter `Aluminum`
    outfitter `Ammo North`
...

The only rule where I see this "\t" stuff in the Makefile is the rule for data/maps/planet.temp Those lines starting with "\t" appear in the planets.temp, too. I guess the "\t" are supposed to get replaced by tabstopps, but that does not happen.

I have attached the two tmp files you requested. I had to add the .txt suffix to them for gh to allow the upload...

Regards,

wararjey commented 10 months ago

Oh, I tried something: I replaced the \t with tabstopps, and the RTF planets' shipyards and outfitters are back again.

Pshy0 commented 10 months ago

The only rule where I see this "\t" stuff in the Makefile is the rule for data/maps/planet.temp

image The \t is indeed expected to be replaced by a tab.

This could be happening because I am using single quotes for this string.

I tested the following rule

print:
    @echo "with @, doublequotes: A\tB"
    echo "without @, doublequotes: A\tB"
    @echo 'with @, singlequotes: A\tB'
    echo 'without @, singlequotes: A\tB'

which outputs

with @, doublequotes: A B echo "without @, doublequotes: A\tB" without @, doublequotes: A B with @, singlequotes: A\tB echo 'without @, singlequotes: A\tB' without @, singlequotes: A\tB

However, the following rule

print:
    @echo "with @, doublequotes: A\tB" >> "test"
    echo "without @, doublequotes: A\tB" >> "test"
    @echo 'with @, singlequotes: A\tB' >> "test"
    echo 'without @, singlequotes: A\tB' >> "test"
    cat test

outputs

with @, doublequotes: A B without @, doublequotes: A B with @, singlequotes: A B without @, singlequotes: A B

So my echo does not behave consistently when redirecting output to files or not. The difference in behavior between you and me could be due to a bug in make.

I am replacing those quotes.

Pshy0 commented 10 months ago

I pushed a commit, you will again need to git reset --hard and then git plugin-update.

wararjey commented 10 months ago

Hmmm, the modships and modoutfits line had single quotes and the \t not replaced...

Anyway, I tried the latest commit. I can see the double quotes are single quotes now. The lines still start with "\t", though. I am using gnu make 4.4.1-2 (arch package). Could one not use sed for replacing the \t with a tab? My sed version is gnu sed 4.9-3 (arch package).

Regards,

Pshy0 commented 10 months ago

I can see the double quotes are single quotes now.

I replaced the double quotes around outfitter and shipyard names by backticks (not single quotes), because it was supposed to be my norm. In the makefile, I replaced the single quotes used with the echo command by double quotes.

Pshy0 commented 10 months ago

The problem apparently is echo, having different behaviors in different implementations.

To be radical, I just replaced echo by printf. Please tell me if that fixes it.

wararjey commented 10 months ago

Hello,

yes, the latest commit fixes the issue. I was wondering how make might use shell builtins for echo and/or printf. I am using zsh instead of bash. zsh should be standards compliant in that regard, but who knows...

Thanks for your quick help, it is much appreciated :-)

Regards,

Pshy0 commented 10 months ago

Thank you for reporting the issue!