Chronocrash Modders Tools

ChronoCrash Modders Tools 0.7.8

No permission to download
As a suggestion you could make a new group of options specifically related to "automated changes", then the user can choose what things will be automatically fixed by the CMT, but they are disabled by default.

Well the thing is there is none really. Sometimes there have been but it was due to bugs (like the empty line after existing animations).

And of course CMT automatically rewrites attacks and bbox of anims you edit with it using a specific format, but there is no way I create code so that it adjusts to each user specific formatting.


Can you change it so it does not ask me every time i load project if i want to use legacy? Its already decided , does not need to ask everytime on load.
It's already supposed to ask once, but I guess there is some interaction with local ini (which I guess you are using now) that makes it ask every time. I'll check.
 
Posting again incase :
I restarted chronotools, cant trigger the platform not updating coords now, ill probably will soon tho.
lol i just did , right after i wrote this message , so this triggered it - checking another program - so chronotools go to the background and is not in focus anymore , then you go back to chronotools - you get the bug.
I suspect theres a lot more because of the focus thingy.
 
Posting again incase :
I restarted chronotools, cant trigger the platform not updating coords now, ill probably will soon tho.
lol i just did , right after i wrote this message , so this triggered it - checking another program - so chronotools go to the background and is not in focus anymore , then you go back to chronotools - you get the bug.
I suspect theres a lot more because of the focus thingy.
Yeah before you wrote this message I managed to trigger it, but I don't clearly understand how it's caused right now. I'll deactivate some security maybe there is a hidden crash that we don't see
 
So far I needed to make CMT ignore hitflash and dropv commands to avoid automatic changes. If the "attack 0 0 0 0 0" could be added to ignore list, problem solved.

View attachment 8068
Yeah those are attacks property so they are inevitably processed by CMT.

I think right now the ignore feature work only with first "word", so I might need to add two words to add support for ignoring "attack 0"
 
Yeah those are attacks property so they are inevitably processed by CMT.

I think right now the ignore feature work only with first "word", so I might need to add two words to add support for ignoring "attack 0"
I added the word "attack" to the ignore list and it solved the problem :D now CMT didn't add the "attack none".
Don't worry about the suggestions I posted, I think the ignore list will work in the proper way.
I still need to check if it doesn't have any side effect, but so far ok.

EDIT: Here's my ignore list.
1716576473180.png
 
I won't add support for keeping "attack 0 0 0 0" or stuff like that. Because for each line it forces me to keep track of which "0" value was explicitly set by user and which was simply implicit. "attack none" is much simpler and cover any attack line where all values are null, whether implicit or explicit.

The lines with "attack 0 0 0 ..." have never made sense, people only have these in their files because those files were edited with OpenBORStats (or another) which needlessly printed null values.

I can add an option to replace "attack none" with "attack 0", but in any case CMT will never print useless "0 0 0 0" values. So "attack 0 0 0 0 ..." will always automatically be converted to something shorter (unless you use ignore feature like Kratus).
 
yeah but it get this in logs, does not look nice, maybe some new builds do not show this
WARNING: data/sprites/drumbind.txt tries to load a non-numeric value at bbox, where a number is expected!
 
yeah but it get this in logs, does not look nice, maybe some new builds do not show this
WARNING: data/sprites/drumbind.txt tries to load a non-numeric value at bbox, where a number is expected!

I think new OpenBOR builds do not show this. Anyway I can add an option to have emtpy collision be "attack 0" instead of "attack none" (same with bbox), but it will work exactly the same as "none" right now. That is CMT will write a null collision (attack/bbox) with only one "0" no matter how much "0" was read originally.
 
Because for each line it forces me to keep track of which "0" value was explicitly set by user and which was simply implicit. "attack none" is much simpler and cover any attack line where all values are null, whether implicit or explicit.

Ding ding ding, we have a winner. Nearly all of the updates I made were done with editor building in mind. That's one of the big drivers behind minimizing arguments of any single command (ex. current collision box format).

DC
 
The lines with "attack 0 0 0 ..." have never made sense, people only have these in their files because those files were edited with OpenBORStats (or another) which needlessly printed null values.
No problem buddy, I agree with the "attack none" logic. Frankly I prefer this way mainly now that I know that it works in the same way as "attack 0 0 0 0", plus in my case it's better to find all instances using the VSCode search tool.

My point is just when the editor changes my codes without my consent, no matter what content is or even if it's coded wrongly. Maybe CMT could act like VSCode, showing an autocompletion list or warning the user when it wants to replace all instances of a certain command with another better option.

And in my case I always added "attack 0 0 0 0" manually to guarantee that every parameter will be zero, mainly during a multihit animation.
 
+1 " showing an autocompletion list or warning the user when it wants to replace all instances of a certain command with another better option."
 
My point is just when the editor changes my codes without my consent, no matter what content is or even if it's coded wrongly. Maybe CMT could act like VSCode, showing an autocompletion list or warning the user when it wants to replace all instances of a certain command with another better option.
If you edit your file in CMT "Text" tab editor it will never change anything in your code, let alone without your consent. Because it's basically a code editor.

If you edit an animation in CMT "Animation" tab editor, you basically consent that the animation editor will reformat the lines/commands that it processes (mainly attack and bbox) to the format that it uses (according to the options you selected) and not the format that you used as input. It's wrong to think of CMT animation editor as a code editor, it's better to think of it as a sort of live translator that keep in sync a text model and a GUI model. And for this to work it's impossible to keep idiosyncrasies of text input, it must work on some kind of universal language (that both models understand). The idiosyncrasies of the text input are processed once, and then the animation editor no longer work on the original text, it works on a model of the data encoded in the text (same as the engine reads models files).

So as far as the animation editor is concerned, it never replaces anything. It just output a data model as text.

The only rules of the animation editor are :
- not lose data in regard to OpenBOR engine
- make the animation readable by OpenBOR engine

And honestly, there is already a lot of code in animation editor to preserve user input, which is probably why you guys are under the assumption that it's merely a code/text editor. It's really not, it's just an illusion.

I don't think there is any existing visual data editor (in any domain) that let you modify/generate raw content (for example in xml or html format) while keeping your own rules about how raw content is to be written. The main point of a visual data editor is to give it control to generate/modify raw content.
 
Last edited:
you basically consent that the animation editor will reformat the lines/commands that it processes
I didn't know that, I will keep it in mind from now, thanks.

I even understand an automatic change if I'm directly working on it (i.e. editing an atbox/bbox), but in the case of the "attack none" it's automatically replaced by just opening the animation.


But don't worry buddy, I understand your concept and the "ignore command" solved my problem perfectly.
I'm glad that I can keep using always the latest version of this amazing tool :)
 
Last edited:
I even understand an automatic change if I'm directly working on it (i.e. editing an atbox/bbox), but in the case of the "attack none" it's automatically replaced by just opening the animation.

It's because under the hood, the whole animation text is seamlessly reconstructed from the data model (not just the line that seem to change, in this case "attack 0" to "attack none") on each user interaction.

There is a LOT of code that make sure no data is lost, which is why it seems nothing really changes when you load an animation.

Preserving attack null has always been very tricky because there is so many ways that it can be input. In earlier versions of CMT I had code to preserve user input which is why before it kept whatever you have (if you had "'attack 0" it made sure to rebuild as "attack 0", and so on). But turns out that this code made things very buggy and complicated in some conditions and interactions, which is why in more recent versions I decided to scrap it and have a single way of rebuilding empty collisions ;)
 
and the "ignore command" solved my problem perfectly.
And yes if for some reason the user really don't want the animation editor to potentially alter some lines, there is the ignore feature.

Each line starting with one of the word in the ignore list will be ignored and left completely untouched. But of course it also means that the animation editor won't be able to process it.
 
But of course it also means that the animation editor won't be able to process it.
Quick feedback about it. If I add attack/bbox to the ignore list, I can't see or edit both in the animation editor.
The best solution for now, at least until I change all my "attack/bbox 0 0 0 0" to "none", is to stay with the 5.31. After that I will go back to the latest.
 
Back
Top Bottom