Best Way to Make a Patch that Changes Actor Angles in Vanilla Hexen maps?

Ask about ACS, DECORATE, ZScript, or any other scripting questions here!

Moderator: GZDoom Developers

Forum rules
Before asking on how to use a ZDoom feature, read the ZDoom wiki first. If you still don't understand how to use a feature, then ask here.

Please bear in mind that the people helping you do not automatically know how much you know. You may be asked to upload your project file to look at. Don't be afraid to ask questions about what things mean, but also please be patient with the people trying to help you. (And helpers, please be patient with the person you're trying to help!)
Razumen
Posts: 30
Joined: Tue Mar 13, 2018 8:04 pm

Best Way to Make a Patch that Changes Actor Angles in Vanilla Hexen maps?

Post by Razumen »

I've been working on voxel models for Hexen props, and would like to know what the best way to create a patch that I could distribute with it that would allow me to change the default angles of certain props since a lot of them now have clear fronts and backs. As far as I know no one else has made a similar patch, and since it's primarily for GZDoom, and Hexen doesn't have good dehacked tooles, someone mentioned using Zscript's LevelPostProcessor. Seems like it might work, but was basically wondering if there was an easier way, or if someone knew of an existing patch.
User avatar
Player701
 
 
Posts: 1706
Joined: Wed May 13, 2009 3:15 am
Graphics Processor: nVidia with Vulkan support

Re: Best Way to Make a Patch that Changes Actor Angles in Vanilla Hexen maps?

Post by Player701 »

LevelPostProcessor is indeed the way to go if your intention is to patch maps without shipping replacement versions (which may be illegal due to the IWAD's commercial nature). I don't think there is a simpler way, but it couldn't be any easier. You just need to get the map hashes via the mapchecksum console command first, and then use SetThingAngle to adjust the angle of the corresponding map things.

Code: Select all

class MyLevelPostProcessor : LevelPostProcessor
{
    protected void Apply (Name checksum, string mapname)
    {
        switch (checksum)
        {
            case 'PUT_MAP01_CHECKSUM_HERE':
                SetThingAngle(<thing_id_1>, <some_angle_1>);
                SetThingAngle(<thing_id_2>, <some_angle_2>);
                ...
                break; // <-- NB: this is important
            case 'PUT_MAP02_CHECKSUM_HERE':
                ...
                break;
            ...
        }
    }
}
I do not know of any existing patch.

Return to “Scripting”