Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
exl

WhackEd 4

Recommended Posts

You're right, looking at the string length calculation makes me wonder what I was thinking when writing that. Fixed for next release, thanks.

Share this post


Link to post

@exl
Is it possible to make Whacked ignore unknown variables? Like say if it encounters an "Unknown Flags = 0" it leaves it alone and preserves it.

Because the way it works now is that they get lost when saving. I need it for some port-specific thing flags added in Doom Retro.

Share this post


Link to post

What exactly are these port-specific thing flags? Would it be useful to support them in WhackEd?

Share this post


Link to post
exl said:

What exactly are these port-specific thing flags? Would it be useful to support them in WhackEd?

It would be super useful but only for people using Doom Retro's specific dehacked additions. Look here for the MF2 flags:
https://github.com/bradharding/doomretro/blob/master/src/p_mobj.h


They get set by "Retro Bits = ..."

The author also added 100 extra things for mod usage, I updated the Doom Retro preset to make them available:
http://s000.tinyupload.com/index.php?file_id=03204846124120127121

Share this post


Link to post

The best way to handle that would be to add support for that field to WhackEd. BUt keeping unknown fields is possible too, so I'll add both to my TODO list. I've also added the updated Doom Retro config.

Edit: actually, that was easy to add. And 1.1.1 has plenty of fixes for a new release, so get it at http://www.teamhellspawn.com/exl/whacked4/

Changelog:

Added: A Doom Retro engine configuration (thanks to VGA).
Added: Unknown Dehacked fields are now ignored, but also saved unaltered.
Fixed: missing parameter names for the PlaySound and PlayWeaponSound state actions.
Fixed: the sprite label property not updating after selecting a sprite in the state editor.
Fixed: a crash when jumping to a state with the RandomJump action.
Fixed: choosing a 30th sprite frame.
Fixed: state parameters disappearing when selecting a state.
Fixed: state action editing was possible in non-extended patches.
Fixed: patch states with extra text in their headers being ignored.
Fixed: calculation of maximum string length.

Share this post


Link to post

I am having great success, thanks :D

I have a specific suggestion: When having multiple states selected, and you change only the sprite family, the sprite numbers also all become 0. Can you make them stay the same as they were?

Also, I hope you are considering that copy paste idea. I have been wanting to implement the monsters variations from Smooth Doom to my SMOOTHED mod but I don't want to spend all those hours to implement their behaviour one by one frame. It's be cool to copy whole chunks of states to another position, then just change their sprite family name and assign them to a new thing. (and then use RandomJump and Spawn to do the change)

Share this post


Link to post

A small new release with a few fixes:

Fixed: Doom Retro's PlaySound action was missing a parameter name, causing a crash when it was selected. Thanks to AnotherLife.
Fixed: rewrote sprite name, frame and rotation handling to better emulate Doom's behaviour. As a result, zero-rotation sprites can now replace sprites with multiple rotations. Thanks to VGA, AnotherLife.
Fixed: when selecting a new sprite for a state, all selected state's frames were set to 0 when no specific frame was selected. Thanks to VGA.
Get it from http://www.teamhellspawn.com/exl/whacked4/

Share this post


Link to post

Haha, that's good to know! Thanks again for the bug reports.

Share this post


Link to post

I'm here to inform the author that removing the parameter fields from frames that don't have special MBF actions was a mistake.

 

They are useful outside of those actions. They control the HUD weapon's position. Now I can't enter them.

Share this post


Link to post

Interesting, I didn't know that since MBFEDIT.TXT doesn't mention that feature. Is MBF the only source port that supports this? At any rate, I've added it to the todo list.

Share this post


Link to post

It's a vanilla feature, but it remained in obscurity for a very long time, because it wasn't utilized in the original game. I think Linguica discovered it a few years ago.

 

16 minutes ago, exl said:

At any rate, I've added it to the todo list.

Thx.

Share this post


Link to post

Changelog for version 1.2.0:

 

  • Added: state animation preview (with sounds) by pressing ~ on a state or using the new state context menu. Pressing ~ again inside the animation preview will restart it. Right-clicking a thing or weapon state from their respective dialogs will preview it directly.
  • Added: linking states together can now be done by selecting them, right-clicking and selecting a link option (or use the respective shortcut key). Linking is done in the order of selection.
  • Added: an option to clear out all selected states from the state context menu.
  • Added: an option to clear out a thing's properties from a thing's context menu.
  • Added: DOOM Retro "Gib health" thing property.
  • Added: barebones patch merging feature by loading a patch 'over' the current one.
  • Fixed: state and thing copy and paste operations were much slower than they should to be.
  • Changed: sprite selection dialog now shows sprites at 2x scale.
  • Changed: always display a state's "unused" parameters since these actually affect a weapon sprite's offset even in vanilla Doom.
  • Changed: updated to PyAudio 0.2.11.
  • Changed: monospace font is now the more modern DejaVu Sans Mono.

 

Especially the animation + sound preview functionality should be pretty useful.

 

Get the setup executable or 7zip archive from http://www.teamhellspawn.com/exl/whacked4

Share this post


Link to post

Did you see the fixed Doom Retro config I posted in your profile page? There are 6 internal things (related to source ports) before the added 100 Extra things. Once 6 things are added to the table the new 100 things are usable. I will release a new mod using those extremely soon, too!

 

The new additions are a-ma-zi-ng, the previews, copy/paste, looping, sounds etc!

 

EDIT: In the previews you are not handling the RandomJump code pointer, it should be easy to implement, I hope?

Share this post


Link to post

For some reason I didn't notice the notification in these new forums, sorry. See my reply to that. I did add the RandomJump action for 1.2.1.

Share this post


Link to post

Productive sundays are best sundays. Changelog for version 1.2.1:

 

Added: support the RandomJump action in state previews.
Added: Extended DehackEd configuration with the extra things and empty states from Doom Retro. Crispy Doom also supports these.
Added: state actions that spawn things (like missiles from monster attacks) will now play that thing's sound during a preview.
Fixed: unused state parameter descriptions would not be updated when an action using them was selected.
Fixed: added missing things to the Doom Retro configuration. Thanks to VGA.
Changed: WAD reloading is now faster and doesn't reset the UI state.

 

Get the setup executable or 7zip archive from http://www.teamhellspawn.com/exl/whacked4

Share this post


Link to post

This new feature for linking states is a very welcome addition.

 

On 22.07.2017 at 7:49 PM, exl said:

Added: barebones patch merging feature by loading a patch 'over' the current one.

I was gonna report it as a bug. When I'm editing one patch, and then loading another one, thing names from the first remain (unless the second patch replaces them with something else).

 

I hope nothing sipped from patch to patch undetected this way. Names were a pretty good indicator that something's wrong, so I probably didn't save anything by accident.

 

Anothing problem I encountered is related to the MBF's BOUNCES flag.

 

Doom engine is weird in that it treats projectile speeds and monster speeds differently. The number you enter for a projectile is much bigger - at least in the patch. The editor abstracts it away with a more convenient number representing the amount of map pixels traveled at once. This conversion is enabled by adding the MISSILE flag.

 

This should be known, but I'm retelling this to say that the BOUNCES flag also enables the projectile properties on, well, projectiles. Which means it also requires very large speed numbers, but the largest I can enter directly is 999999, while the largest projectile speed feasible in the Doom engine is about twice the amount.

 

The problem is: I honestly don't know what to do about it. An obvious solution would be to enable the number conversion on the BOUNCES flag too, but it can also be used on non-projectiles, enabling different properties. Doom can be weird at times, but MBF blows it out of the water.

 

[late edit]

 

Wait, I think an object having walking frames is a pretty good indication it's not a projectile. And if it's not a projectile and it doesn't have walking frames, then the speed field is irrelevant for it.

 

Edited by Da Werecat : idea

Share this post


Link to post

The names being loaded incorrectly is a pretty bad bug, names might not even get saved at all under some cirumstances.

 

About the BOUNCES flag, if I understand it correctly from your explanation and from looking at MBF source code, a thing will have it's speed interpreted as fixed point if none of it's states set the momentum directly (through e.g. Chase), but if there is such a state action then the speed property will be interpreted as "normal". So whether or not the speed value must be converted behind the scenes is not dependent on the PROJECTILE or BOUNCES flag at all, but what actions a thing's states have. It's possible to detect this, but will be a bit more work.

Share this post


Link to post

Da Werecat: could you try out this version which fixes the names bug and determines whether a thing is a projectile or not based on it's state's actions? It should save a thing's speed property as fixed point if any states used by that thing use either the VileChase or Chase actions, whether the PROJECTILE flag is set or not.

 

http://www.teamhellspawn.com/exl/whacked4/files/whacked4-1.2.2-beta.7z

Edited by exl

Share this post


Link to post

I copied it over my old version, loaded my patch, went to the item with BOUNCES. It displayed the speed as 15 instead of 999999, which is what I wanted. However, when I changed it to 30 and tried to save the patch, this happened:

 

Traceback (most recent call last):
  File "src\whacked4\ui\mainwindow.py", line 762, in file_save
  File "src\whacked4\ui\mainwindow.py", line 405, in save_file
  File "src\whacked4\dehacked\patch.py", line 198, in write_dehacked
  File "src\whacked4\dehacked\table.py", line 47, in write_patch_data
  File "src\whacked4\dehacked\entry.py", line 168, in get_patch_header
TypeError: 'NoneType' object has no attribute '__getitem__'
 

The patch was only partially saved, so i had to restore it from the backup.

 

As for the names, when I'm trying to restore a thing, its name is reverted correctly. Same when loading patches when another patch is open - default names are being restored.

Share this post


Link to post

Looks like when you restore a thing, its speed isn't being restored.

 

Or maybe it just resets to 0. Same when copying.

 

Edited by Da Werecat

Share this post


Link to post

Any more details than that? What version of WhackEd4 are you using, and what is the exact error?

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×