update for the modtester https://falkooxc.pythonanywhere.com/
put your mod in a zip file and try it :)
since you can now see the list of possible errors some explanations would be useful:
i downloaded >70 mods to get most of the errors "in the wild"
since we have now >50 errors i explain the more frequent/seriuos ones here
'rulfile is likely not UTF-8','some error during rulfile import','rulfile not in Ruleset Folder','the mod .rul is not a map/dict'
here i catch problems reading a mod - i see the rul file as the center of the mod if no rulfile or it is "wrong" yaml format it throws an error
'image/sound file should be in Resources/modname/... ' an information that you should put your files into a subfolder to avoid conflicts with other mods
'palette not correct' here we have an error in the image mostly the palette is slightly wrong see: https://imgur.com/kPn3C3W but sometimes completely
'palette could use more colours' the image of this entry is not shown in the ufopedia and can therefore use the last 16 colors
'a sprite sheet is bigger than needed','references spritesheet does misses images' handobs,armors,tanks where the number of sprites is not as it should be
'an image has the wrong mode' we found a image that is not using a palette that should be fixed
'no string translation' each new item/research/manufacture/ufopedia,... needs a entry in extraStrings
'a language/translation is missing' the interface allows to select some languages that have to be there .. if not you get an error
'a language is incomplete' one language has more strings than another
'file/dir not found' happens rarely that a file is wrongly referenced in extrasprites/sounds
'spec file not found' happens more often for maps and terrain - e.g. some mods use map as directory it is MAPS!
'the case sensitive test of dir/file path failed' very often the path of the file extraSound/sprite entry differs from the (case sensitive) real path that leads to problems with using the mod in unix systems
'case sensitive path error for a file' see above but in regard to maps/terrains
'extrasprite/sound is not ruleset-referenced' there are extrasprite entries but no item that uses these entries
'not referenced file found' here are files that were in the mod directory but were not referenced somewhere in the rulset .. bestcase: there is a "Readme.txt" "error"
'no connected file entry found for ruleset-referenced' here an item refers to some file entry but it does not exists happens mostly if someone got confused with the sprite ids
'a property doubled in map/dict' happens if you have an object and add the same property twice the devs called that "unsafe and unsane"
extraSprites:
- type: FLOOROB.PCK
files:
83: Resources/Piratez/FLOOROB/FloorBarrel.gif
83: Resources/Piratez/FLOOROB/FloorDynamite.gif
'an item occurs multiple time' here we have declared the same item more than once in a list
extraStrings:
- type: en-US
strings:
STR_HEAVY_LASER_CLIP: Heavy Laser clip
- type: fr
strings:
STR_HEAVY_LASER_CLIP: Chargeur de laser lourd
- type: en-US
strings:
STR_LASER_RIFLE_CLIP: Laser Rifle clip
- type: fr
strings:
STR_LASER_RIFLE_CLIP: Chargeur de fusil laser
- type: en-US
strings:
STR_LASER_PISTOL_CLIP: Laser Pistol clip
- type: fr
strings:
STR_LASER_PISTOL_CLIP: Chargeur de pistolet laser
better would beextraStrings:
- type: en-US
strings:
STR_HEAVY_LASER_CLIP: Heavy Laser clip
STR_LASER_RIFLE_CLIP: Laser Rifle clip
STR_LASER_PISTOL_CLIP: Laser Pistol clip
- type: fr
strings:
STR_HEAVY_LASER_CLIP: Chargeur de laser lourd
STR_LASER_RIFLE_CLIP: Chargeur de fusil laser
STR_LASER_PISTOL_CLIP: Chargeur de pistolet laser
'keeps original value' shows that you have an entry that is a exact copy of the original and it could be removed (or automatically fixed)
'missing research referenced' somewhere you reference a research (unlock,requires,getonefree,..) but the researchobject does not exists
'missing item referenced' somewhere you reference a item (required item, fuel, compatible ammo, ...) but the item object does not exists
'no listorder for new objects' Solarius Scorch wanted that and it was easy to make - errormessage should speak for itself
now you can make fixes for your mod
the tester takes the last rulfile in a mod and "repairs" it
you can
Change case sensitive filepath entries [that works only for extrafile/sound entries you cant fix a map reference to files named SoMeNeW.MaP+sOmEnEw.rMp with just fixing the ruleset]
Remove unchanged vanilla properties/entries [removes entries that are unchanged in regard to the original values - last update of vanilla=jun 28]
if string only in en-XX add it to en-YY [just mantain en-GB .. US is added automatically or vis versa - is es and es-419 also exchangable?]
Edit:
during the devopment of a more complex tool realized i could create a mod tester without much additional work on my site
here it is
https://falkooxc.pythonanywhere.com/
it needs a mod in a zip file with a rulfile in the ruleset Folder
at the moment it chacks for ~40 errors i encountered 3/4 of these errors in real mods i found online
the "design" is not really good but it does its job
you can see the importance level, error description and clues where to find the error in the line below the error message
i use a free account on pythonanywhere.com that gives a limited amount of CPU Power so should there be a run on this it could get a bit slow in theory
short help
ru language screws with the "double item"-test
the tool compares items:
- type: STR_ALLOY_CANNON
size: 1.5
costSell: 45000
transferTime: 48
listOrder: 630
with
68007683798485791001items:
- 66749472307414965242type: STR_ALLOY_CANNON
65274331231985014017size: 1.5
83813619105999693028costSell: 45000
85164732974404812969transferTime: 48
59065739506796236675listOrder: 630
to check if you have some property twice
but in the [added randomnumber]-file all non ascii chars are deleted and then
it looks like that
- 36311567784243541252type: ru
83283974477833520692strings:
59311439341153775329STR_MINIGUN:
13233305588859474049STR_MINIGUN_CLIP:
38655119999810609854STR_MINIGUN_UFOPEDIA: . , .
22889816533367289416STR_LIGHT_MINIGUN:
and that can not be read by a yaml parser
Edit:
problem is fixed now