Realm of the Black Cat - Martin Howe's Offcuts

Sprites, textures, sounds, code, and other resources belong here. Share and share-alike!
Forum rules
Before posting your Resource, please make sure you can answer YES to any of the following questions:
  • Is the resource ENTIRELY my own work?
  • If no to the previous one, do I have permission from the original author?
  • If no to the previous one, did I put a reasonable amount of work into the resource myself, such that the changes are noticeably different from the source that I could take credit for them?
If you answered no to all three, maybe you should consider taking your stuff somewhere other than the Resources forum.

Consult the Resource/Request Posting Guidelines for more information.

Please don't put requests here! They have their own forum --> here. Thank you!
User avatar
MartinHowe
Posts: 2027
Joined: Mon Aug 11, 2003 1:50 pm
Location: Waveney, United Kingdom
Contact:

Realm of the Black Cat - Martin Howe's Offcuts

Post by MartinHowe »

Hello All

This is a permanent place for my resources for the community that are not complete works in their own right. Tech demos, proofs of concept, the odd WIP. They are not always being actively developed and are provided 'as is' for you to play with, tweak, improve ... or not, as the case may be :)
Yes, that is an Imp :p
Yes, that is an Imp :p
Demons for Dinner.png (188.77 KiB) Viewed 6439 times
Have Fun! :D
Last edited by MartinHowe on Fri May 15, 2020 6:51 am, edited 2 times in total.
User avatar
MartinHowe
Posts: 2027
Joined: Mon Aug 11, 2003 1:50 pm
Location: Waveney, United Kingdom
Contact:

Re: Realm of the Black Cat - Martin Howe's Offcuts

Post by MartinHowe »

First up, well ... if you can't guess it from my (not so) new avatar ... eating corpses in Doom!

Many years ago, as @Redneckerz mentioned here (edited for brevity)...
Redneckerz wrote:Back in the day you had a source modification based off DOSDoom, called VSB Doom. It was made by the The Sky May Be developer Doug the Eagle. In this source mod, you can ''eat'' your enemies, amongst other stuff. Though it did not rely on it, the Bombay72 wad works perfectly with this mechanic and is actually recommended by the author. However, due to it being DOS based, it was not available in a modern source port. In 2008, Martin Howe a similar mechanic, but uses a ZDoom source mod. Unfortunately this zip is not available anymore and Martin doesn't have a copy.
I have now implemented this in ZScript (it uses VSBDoom's DSCRUNCH sound for chomping) and the code is given below, along with a simple demonstration map. I have tested it with the latest GZDoom at time of writing (4.3.3); it may work with earlier versions of ZScript (3.7 is used here), but please note that I have not tested this.

Please feel free to hack at it, improve it, or otherwise do things with it - knowing the Doom community, they will likely be strange things :)

ZScript:

Code: Select all

version "3.7"

Class MyFriendlyDemon : Demon
{
    int startHealth;
    Actor aCorpse;
    int aCorpseDeathMass;
    ThinkerIterator corpseFinder;

    void A_FindFood()
    {
        if (aCorpse)
        {
            A_Face(aCorpse);
            self.goal = aCorpse;
            return;
        }
        corpseFinder.Reinit();
        Actor someBody;
        while (someBody = Actor(corpseFinder.Next()))
        {
            if (!someBody.bIsMonster)
                continue;
            if (someBody.health > 0)
                continue;
            if (someBody.mass <= 0)
                continue;
            console.printf("Found a %s with %d calories! Yum Yum.", someBody.GetClassName(), someBody.mass);
            aCorpse = someBody;
            aCorpseDeathMass = someBody.mass;
            A_Face(aCorpse);
            self.goal = aCorpse;
            return;
        }
    }

    void A_ConsumeFood()
    {
        if (health >= startHealth)
        {
            if (aCorpse)
            {
                aCorpse = null;
                aCorpseDeathMass = 0;
            }
            return;
        }

        if (!aCorpse)
        {
            return;
        }

        if (aCorpse.mass == 0)
        {
            A_StartSound("demon/eat");
            aCorpse.Destroy();
            aCorpse = null;
            aCorpseDeathMass = 0;
            return;
        }

        int biteSize = aCorpseDeathMass / 4;

        if (biteSize > aCorpse.mass)
            biteSize = aCorpse.mass;

        int healthdiff = starthealth - health;
        if (biteSize > healthdiff)
            biteSize = healthdiff;

        if (bitesize > 0)
        {
            A_StartSound("demon/eat");
            health += biteSize;
            aCorpse.mass -= biteSize;
        }

        if (aCorpse.mass == 0)
        {
            aCorpse.Destroy();
            aCorpse = null;
            aCorpseDeathMass = 0;
        }

        if (health >= startHealth)
        {
            if (aCorpse)
            {
                aCorpse = null;
                aCorpseDeathMass = 0;
            }
            return;
        }
    }

    Default
    {
        +FRIENDLY;
    }
    States
    {
    Spawn:
        SARG A  1;
        SARG A  1
        {
            startHealth = health;
            aCorpse = null;
            aCorpseDeathMass = 0;
            corpseFinder = ThinkerIterator.Create("Actor", STAT_DEFAULT);
        }
        SARG A  0 A_Jump(256, "Idle");

    Idle:
        SARG A 10 A_Look();
        SARG B 10 A_Look();
        SARG B  0 A_Jump(256, "Idle");

    See:
        SARG AABBCCDD 2 fast
        {
            if (health < startHealth)
            {
                if (!aCorpse)
                {
                    console.printf("Dammit I'm hungry.\nMay the biggest demon anyone ever\nsaw grant me mana to eat!\n");
                }
                A_FindFood();
                if (aCorpse)
                {
                    // Based on code in ZDoom Wiki article
                    double blockdist = radius + aCorpse.radius;
                    if ((abs(pos.x - aCorpse.pos.x) <= blockdist ) &&
                        (abs(pos.y - aCorpse.pos.y) <= blockdist ) &&
                        (pos.z + height >= aCorpse.pos.z         ) &&
                        (pos.z <= aCorpse.pos.z + aCorpse.height )
                    )
                    {
                        return A_Jump(256, "Eat");
                    }
                }
            }
            A_Chase();
            return state (null);
        }
        Loop;

    Eat:
        SARG E  1 A_JumpIf(!aCorpse || (health >= startHealth), "See");
        SARG E  0 fast A_Stop();
        SARG E  8 fast A_Face(aCorpse);
        SARG F  8 fast A_Face(aCorpse);
        SARG G 16 fast A_ConsumeFood();
        SARG G  0 A_JumpIf(!aCorpse || (health >= startHealth), "See");
        Loop;

    Melee:
        SARG E 8 fast A_FaceTarget();
        SARG F 8 fast A_FaceTarget();
        SARG G 8 fast A_SargAttack();
        SARG G 0 A_Jump(256, "See");

    Pain:
        SARG H 2 fast;
        SARG H 2 fast A_Pain();
        SARG H 0 A_Jump(256, "See");

    Raise:
        SARG N 5;
        SARG M 5;
        SARG L 5;
        SARG K 5;
        SARG J 5;
        SARG I 5;
        SARG I 0 A_Jump(256, "See");
    }
}
SndInfo

Code: Select all

demon/eat dscrunch // from VSB Doom
MapInfo

Code: Select all

DoomEdNums
{
    30001 = MyFriendlyDemon
}
Attachments
consume.zip
(1.89 KiB) Downloaded 102 times
User avatar
MartinHowe
Posts: 2027
Joined: Mon Aug 11, 2003 1:50 pm
Location: Waveney, United Kingdom
Contact:

Re: Realm of the Black Cat - Martin Howe's Offcuts

Post by MartinHowe »

Next up an Alien Bastard (oops, sorry, wrong game, not that kind of alien :p)

A generic ALIEN from the movie ALIEN. Inspired by the ones from Psychosis Doom II (yes, the one with the magic mushrooms and the originator of the chainsaw zombie) and hence Aliens vs Terminators vs Predators. Please note that this is a release candidate and has NOT yet been uploaded to the Archive.

Screenshot:


Text file:

Code: Select all

===========================================================================
Archive Maintainer      :
Update to               :
Advanced engine needed  : GZDoom 2.3.0+
Primary purpose         : No levels included
===========================================================================
Title                   : Alien
Filename                : alien.pk3
Release date            : 16th May 2020 [RC1]
Author                  : Martin Howe
Email Address           : martinhowe426@gmail.com
Other Files By Author   :
Misc. Author Info       :

Description             : A generic A L I E N that can bite or slash
                          
Additional Credits to   : Authors of AvPvT, AlienDoom and Psychosis Doom2
===========================================================================

* What is included *

New levels              : None
Sounds                  : Yes
Music                   : No
Graphics                : Yes
Dehacked/BEX Patch      : No
Demos                   : No
Other                   : ZSCRIPT, SNDINFO
Other files required    :

* Play Information *

Game                    : DOOM / DOOM2 / Heretic / Hexen
Map #                   :
Single Player           : Designed for
Cooperative 2-4 Player  : Designed for BUT UNTESTED
Deathmatch 2-4 Player   : Designed for BUT UNTESTED
Other game styles       : Not tested but should work for some of them
Difficulty Settings     : Not implemented

* Construction *

Base                    : Modified Alien (mostly) from Psychosis Doom II
Build Time              : About fourteen days (not all at once)
Editor(s) used          : SLumpEd, UnWad, Audacity, Paint.net, EditPlus
Known Bugs              :
May Not Run With        :
Tested With             : GZDoom 4.3.3

* Copyright / Permissions *

Authors MAY use the contents of this file as a base for modification or
reuse. Permissions have been obtained from original authors for any of
their resources modified or included in this file.

You MAY distribute this file, provided you include this text file, with
no modifications.  You may distribute this file in any electronic
format (BBS, Diskette, CD, etc) as long as you include this file
intact.  I have received permission from the original authors of any
modified or included content in this file to allow further distribution.

* Where to get the file that this text file describes *

The Usual: ftp://archives.gamers.org/pub/idgames/ and mirrors
Web sites:
FTP sites:

* Technical Information *

The graphics are 24-bit PNG, so the class can be used in Heretic and HeXen
if required; however, it is primarily intended for Doom and Doom II.

The class Alien is a classic Alien and will attack you and anything that
hurts it.

This class is intended as a component for use in larger works, but you can
summon one at the GZDoom console to try it in-game.

===========================================================================
ZScript

Code: Select all

// --- ALIEN -------------------------------------------------------------------

Class Alien : Actor
{
    Default
    {
        //
        //~Alien
        //~=====
        //~Class Name      : Alien
        //~DoomEdNum       : N/A
        //~Formal Name     : Alien
        //~Type            : Animal
        //~Group           : Biowarfare
        //~Melee Attack    : Scratch/Bite
        //~Missile Attack  : None
        //~Drop Item       : None
        //~Description     : A generic A L I E N that can bite or slash
        //~
        //~Documentation   : The graphics are 24-bit PNG, so the class can be used in Heretic and HeXen
        //~                  if required; however, it is primarily intended for Doom and Doom II.
        //~
        //~                  The class Alien is a classic Alien and will attack you and anything that
        //~                  hurts it.
        //~
        //~                  This class is intended as a component for use in larger works, but you can
        //~                  summon one at the GZDoom console to try it in-game.
        //~
        //~Idea            : Just burst out of my, er, popped into my head :)
        //~Source          : Variously AvTvP, AlienDoom, Psychosis Doom II
        //~Credit          : The authors of those works, Fox, Giger, etc.
        //
        //$Category DOOMER
        //$Sprite ALYNA2A8
        //
        Radius 20;// for physics only
        Height 56;// for physics only
        Mass 150;
        Speed 13;
        MaxStepHeight 128;
        MaxDropoffHeight 256;
        Health 250;
        PainChance 30;
        MeleeDamage 10;
        Obituary "%o should have listened to Mother.";
        SeeSound "alien/sight";
        PainSound "alien/pain";
        DeathSound "alien/death";
        ActiveSound "alien/active";
        MONSTER;
        +FLOORCLIP;
        +DROPOFF;
    }
    States
    {
        Spawn:
            ALYN A  1;
            Goto SpawnActual;
        SpawnActual:
            ALYN A 10 A_Look();
            ALYN B 10 A_Look();
            Loop;

        See:
            ALYN A  3 A_Chase();
            ALYN A  3 A_Chase();
            ALYN B  3 A_Chase();
            ALYN B  3 A_Chase();
            ALYN C  3 A_Chase();
            ALYN C  3 A_Chase();
            ALYN D  3 A_Chase();
            ALYN D  3 A_Chase();
            Loop;

        Melee:
            ALYN E  0 A_Jump(128, "Bite");
            Goto Slash;
        Slash:
            ALYN E  4 A_FaceTarget();
            ALYN E  4 A_FaceTarget();
            ALYN E  0 A_CustomMeleeAttack(Random[AlienAttack](6, 10), "alien/slash", "");
            ALYN F  4 A_FaceTarget();
            ALYN F  4 A_FaceTarget();
            Goto See;
        Bite:
            ALYN E  6 A_FaceTarget();
            ALYN G  3 A_FaceTarget();
            ALYN G  0 A_CustomMeleeAttack(Random[AlienAttack](6, 10), "alien/bite", "alien/bite");
            Goto See;

        Pain:
            ALYN H  2;
            ALYN H  2 A_Pain();
            Goto See;

        Death:
            ALYN I  8;
            ALYN J  8 A_Scream();
            ALYN K  6;
            ALYN L  6 A_Fall();
        Dead:
            ALYN M -1;
            Stop;

        XDeath:
            ALYN N  5;
            ALYN O  5 A_XScream();
            ALYN P  5;
            ALYN Q  5 A_Fall();
            ALYN R  5;
            ALYN S  5;
            ALYN T  5;
            ALYN U -1;
            Stop;

        Raise:
            ALYN M  8;
            ALYN L  8;
            ALYN K  6;
            ALYN J  6;
            ALYN I  6;
            Goto See;
    }
}

// -----------------------------------------------------------------------------
SndInfo

Code: Select all

// --- ALIEN -------------------------------------------------------------------
alien/sight         alynsigt    // Alien sights a target
alien/pain          alynpain    // Alien feels pain
alien/death         alyndeth    // Alien dies
alien/active        alynactv    // Alien hunts a target
alien/slash         alynslsh    // Alien slashes at a target
alien/bite          alynbite    // Alien bites a target
Attachments
alien.pk3
(151.42 KiB) Downloaded 89 times
User avatar
MartinHowe
Posts: 2027
Joined: Mon Aug 11, 2003 1:50 pm
Location: Waveney, United Kingdom
Contact:

Re: Realm of the Black Cat - Martin Howe's Offcuts

Post by MartinHowe »

Next up, a friendly Alien to use as an ally or in a Black Magic spell!

Inheriting from the previous class, this one grows from a chestburster (try spawning one in a resurrected Zombieman corpse as he is resurrecting) into a full-sized ALIEN, hisses at you, then trots off to kill your enemies! Please note that this also is a release candidate and has NOT yet been uploaded to the Archive.

The A_FacePlayer() codepointer (yes, we still speak DeHackEd :p) may also be useful in other mods as it is more-or-less generic and was not written with only this class in mind. On that note, please can anyone interested in this play the heck out of it in multiplayer, as DM and CoOp are something I never do and wouldn't know where to start.

Screenshots:








Text file:

Code: Select all

===========================================================================
Archive Maintainer      :
Update to               :
Advanced engine needed  : GZDoom 2.3.0+
Primary purpose         : No levels included
===========================================================================
Title                   : The Alien of Aggression
Filename                : alienofa.pk3
Release date            : 16th May 2020 [RC1]
Author                  : Martin Howe
Email Address           : martinhowe426@gmail.com
Other Files By Author   :
Misc. Author Info       :

Description             : A friendly A L I E N that can bite or slash
                          
                          This variant is primarily intended as a player
                          helper to be summoned by a black magic artifact;
                          as such, it is suitable for most game styles.
                          
Additional Credits to   : Authors of AvPvT, AlienDoom and Psychosis Doom2
===========================================================================

* What is included *

New levels              : None
Sounds                  : Yes
Music                   : No
Graphics                : Yes
Dehacked/BEX Patch      : No
Demos                   : No
Other                   : ZSCRIPT, SNDINFO
Other files required    : alien.pk3

* Play Information *

Game                    : DOOM / DOOM2 / Heretic / Hexen
Map #                   :
Single Player           : Designed for
Cooperative 2-4 Player  : Designed for BUT UNTESTED
Deathmatch 2-4 Player   : Designed for BUT UNTESTED
Other game styles       : Not tested but should work for some of them
Difficulty Settings     : Not implemented

* Construction *

Base                    : Modified Alien (mostly) from Psychosis Doom II
Build Time              : About fourteen days (not all at once)
Editor(s) used          : SLumpEd, UnWad, Audacity, Paint.net, EditPlus
Known Bugs              :
May Not Run With        :
Tested With             : GZDoom 4.3.3

* Copyright / Permissions *

Authors MAY use the contents of this file as a base for modification or
reuse. Permissions have been obtained from original authors for any of
their resources modified or included in this file.

You MAY distribute this file, provided you include this text file, with
no modifications.  You may distribute this file in any electronic
format (BBS, Diskette, CD, etc) as long as you include this file
intact.  I have received permission from the original authors of any
modified or included content in this file to allow further distribution.

* Where to get the file that this text file describes *

The Usual: ftp://archives.gamers.org/pub/idgames/ and mirrors
Web sites:
FTP sites:

* Technical Information *

The graphics are 24-bit PNG, so the class can be used in Heretic and HeXen
if required; however, it is primarily intended for Doom and Doom II.

The class Alien is a classic Alien and will attack you and anything that
hurts it. The class AlienOfAggression grows from a chestburster in a few
seconds, hisses at you, then runs off and attacks your enemies.

This looks really good in a resurrection spell; after using the Heal state
to resurrect a dead monster, the healing actor can immediately kill the
resurrectee with gib death and spawn an alien at the same place; it looks
in-game as if the resurrectee has been chestbursted!

This class is intended as a component for use in larger works, but you can
summon one at the GZDoom console to try it in-game.

===========================================================================
ZScript

Code: Select all

// --- THE ALIEN OF AGGRESSION -------------------------------------------------

Class AlienOfAggression : Alien
{
    const MAX_DOUBLE = 18446744073709551616.0; // 2**64 should be enough here

    void A_FacePlayer()
    {
        // Easy case: if a player friend
        // is defined, then use that one.
        Actor player = GetPointer(AAPTR_FRIENDPLAYER);
        if (player)
        {
            A_Face(player);
            return;
        }

        // If there is only one player
        // in the game, then use that one.
        int player_count = 0;
        int player_found = -1; // Cache most recent player found
        Actor players[MAXPLAYERS];
        int ptr_target = AAPTR_PLAYER1;
        for (int i = 0; i < MAXPLAYERS; i++)
        {
            players[i] = GetPointer(ptr_target);
            if (players[i])
            {
                player_count++;
                player_found = i;
            }
            ptr_target = ptr_target << 1;
        }
        if (player_count == 1)
        {
            if (player_found > -1)
            {
                A_Face(players[player_found]);
                return;
            }
            console.printf("**** ERROR: EINVAL([A_FacePlayer]: player_count[1] && player_found[-1]");
            return;
        }

        // Multiple players and no player friend; use
        // whoever is closest of those in line-of-sight.
        double distance = MAX_DOUBLE;
        player_found = -1;
        for (int i = 0; i < MAXPLAYERS; i++)
        {
            if (players[i] && CheckSight(players[i]))
            {
                double d = Distance3D(players[i]);
                if (d < distance)
                {
                    distance = d;
                    player_found = i;
                }
            }
        }
        if (player_found > -1)
        {
            A_Face(players[player_found]);
            return;
        }

        // Same as above but none are in line of sight,
        // so use the closest one. Not sure if worth
        // it, but ALIENs can see through walls, etc.
        for (int i = 0; i < MAXPLAYERS; i++)
        {
            if (players[i])
            {
                double d = Distance3D(players[i]);
                if (d < distance)
                {
                    distance = d;
                    player_found = i;
                }
            }
        }
        if (player_found > -1)
        {
            A_Face(players[player_found]);
            return;
        }

        // This should be unreachable
        console.printf(" **** ERROR: EINVAL([A_FacePlayer]: player_count[%d] && player_found[-1] regardless of LOS");
        return;
    }

    Default
    {
        //
        //~AlienOfAggression
        //~=================
        //~Class Name      : AlienOfAggression
        //~DoomEdNum       : N/A
        //~Formal Name     : The Alien Of Aggression
        //~Type            : Animal
        //~Group           : Biowarfare
        //~Melee Attack    : Scratch/Bite
        //~Missile Attack  : None
        //~Drop Item       : None
        //~Description     : A friendly A L I E N that can bite or slash
        //~
        //~                  This variant is primarily intended as a player
        //~                  helper to be summoned by a black magic artifact;
        //~                  as such, it is suitable for most game styles.
        //~
        //~Documentation   : The graphics are 24-bit PNG, so the class can be used in Heretic and HeXen
        //~                  if required; however, it is primarily intended for Doom and Doom II.
        //~
        //~                  The class Alien is a classic Alien and will attack you and anything that
        //~                  hurts it. The class AlienOfAggression grows from a chestburster in a few
        //~                  seconds, hisses at you, then runs off and attacks your enemies.
        //~
        //~                  This looks really good in a resurrection spell; after using the Heal state
        //~                  to resurrect a dead monster, the healing actor can immediately kill the
        //~                  resurrectee with gib death and spawn an alien at the same place; it looks
        //~                  in-game as if the resurrectee has been chestbursted!
        //~
        //~                  This class is intended as a component for use in larger works, but you can
        //~                  summon one at the GZDoom console to try it in-game.
        //~
        //~Idea            : Just burst out of my, er, popped into my head :)
        //~Source          : Variously AvTvP, AlienDoom, Psychosis Doom II
        //~Credit          : The authors of those works, Fox, Giger, etc.
        //
        //$Category DOOMER
        //$Sprite ALYPA2
        //
        +FRIENDLY;
    }
    States
    {
        Spawn:
            ALYP A  1;
            ALYP A 10;
            ALYP A 10;
            ALYP A 10;
            ALYP A 10;
            ALYP B 10;
            ALYP B 10;
            ALYO B 10;
            ALYP B 10;
            ALYQ B 10;
            ALYP B 10;
            ALYP B 10;
            ALYP B 10 A_PlaySound("alien/chatter");
            ALYP B 10;
            ALYP B 10;
            ALYP B 10;
            ALYO C 15 A_PlaySound("alien/grow");
            ALYP D 15;
            ALYQ E 15;
            ALYP F 15;
            ALYP G 20;
            ALYO G 20;
            ALYP G 25 A_PlaySound("alien/active");
            ALYQ G 35;
            ////////////////////////////////////////////////
            // Have ALIEN make a show of defiance at player,
            // before trotting off to kill player's enemies.
            ////////////////////////////////////////////////
            ALYP G  7;
            ALYP G  7;
            ALYP G  7;
            ALYP G  7;
            ALYP G  7 A_FacePlayer();
            ALYP H 45 A_PlaySound("alien/sight");
            ALYN C 15;
            ALYN B 15;
            ALYN A 15;
            Goto See;
    }
}

// -----------------------------------------------------------------------------
SndInfo

Code: Select all

// --- ALIEN CHESTBURSTER ------------------------------------------------------
alien/crack         alyncrak    // Alien cracks open the host's ribcage
alien/burst         alynbrst    // Alien bursts out of the host
alien/chatter       alynchtr    // Alien chatters menacingly while growing
alien/grow          alyngrow    // Alien hisses menacingly while growing
Attachments
alienofa.pk3
(240.81 KiB) Downloaded 89 times
AlphaSoraKun
Posts: 409
Joined: Fri Feb 10, 2017 2:17 pm
Preferred Pronouns: He/Him
Graphics Processor: nVidia (Modern GZDoom)

Re: Realm of the Black Cat - Martin Howe's Offcuts

Post by AlphaSoraKun »

These are some pretty damn good resources!
User avatar
MartinHowe
Posts: 2027
Joined: Mon Aug 11, 2003 1:50 pm
Location: Waveney, United Kingdom
Contact:

Re: Realm of the Black Cat - Martin Howe's Offcuts

Post by MartinHowe »

Thanks :) There'll be more, but not for a while - gotta lot of testing to do on the current one.
User avatar
MartinHowe
Posts: 2027
Joined: Mon Aug 11, 2003 1:50 pm
Location: Waveney, United Kingdom
Contact:

Re: Realm of the Black Cat - Martin Howe's Offcuts

Post by MartinHowe »

Here is a simple mod of Graf Zahl's WadExt program that I made for my own use. Not worth a full project.

Changes:

* Creates "decompiled" directory contents with correct paths on Linux/Unix (no hardcoded backslash)
* Adds a -noextract option to just list the contents
* Directory names all in lowercase (useful on Linux/Unix, makes little difference in Windows)
* Explicit -doom palette switch for easy scripting (Doom is still the default).

Code: Select all

WadExtEx v1.22 (c) 2020 Martin Howe, (c) 2016 Christoph Oelckers
Usage: wadext filename [options]
Options:
   -nogfxconvert ... Leave Doom format patches and flats in their original form, if not specified they will be converted to PNG.
   -nosndconvert ... Leave Doom format sounds in their original form, if not specified they will be converted to WAV.
   -noextract ...... Do not extract, just list the contents.
   -doom ........... Force the use of the DOOM palette if the WAD does not contain one. This (DOOM) is the default.
   -heretic ........ Force the use of the HERETIC palette if the WAD does not contain one.
   -hexen .......... Force the use of the HEXEN palette if the WAD does not contain one.
   -strife ......... Force the use of the STRIFE palette if the WAD does not contain one.
   -strip .......... Remove node lumps from extracted maps.
   -tx ............. Converts a set of TEXTURE1/TEXTURE2/PNAMES in the current directory to a textures.txt file.
Source:
WADExtEx.zip
(225.29 KiB) Downloaded 67 times
Should be easy to build on Linux:

Code: Select all

1. Extract the source file to a directory, example: wadext
2. cd wadext
3. mkdir build
4. cd build
5. cmake .. -DCMAKE BUILD_TYPE=Release
6. make
7. The executable file wadext is now in the current (build) directory
I have no Windows box with a build setup, nor any desire to use Windows, so if you want binaries, please ask one of the devs to compile it for you.
User avatar
MartinHowe
Posts: 2027
Joined: Mon Aug 11, 2003 1:50 pm
Location: Waveney, United Kingdom
Contact:

Re: Realm of the Black Cat - Martin Howe's Offcuts

Post by MartinHowe »

Behold, The Cats of Carnage!

Doing for cats what MBF did for dogs, these cats are badasses that can gang up on demons, jump at a lost soul and maul it in mid-air, eat corpses to regain health, hunt enemies for food, and even beg the player for food if there's nothing small enough for them to kill! You can even "use" them and they purr or meow .. or maybe if you're unlucky ... just ignore you. ZScript files are in the archive, the BlackCat_Mobbing.zds file in 'mixins' contains the public API for interfacing with ACS. There's scope for some in-game artifacts to make better use of them; this is just the first version I felt worthy of public display.

To see them in action, use "Summon BlackCat" at the GZDoom console in whatever map you're playing.

Have fun :)





textfile download

Special thanks to Local Insomniac (NTMAI) and (ultimately) ZZYZX (ZSDuke) for the leaping code.
Last edited by MartinHowe on Tue May 04, 2021 1:23 pm, edited 1 time in total.
User avatar
Captain J
 
 
Posts: 16890
Joined: Tue Oct 02, 2012 2:20 am
Location: An ancient Escape Shuttle(No longer active here anymore)
Contact:

Re: Realm of the Black Cat - Martin Howe's Offcuts

Post by Captain J »

Looks very cute and furious! And by the way, i see some weird messages keep popping up in the console after i spawn one or two kittens. Is this supposed to be necessary?
User avatar
MartinHowe
Posts: 2027
Joined: Mon Aug 11, 2003 1:50 pm
Location: Waveney, United Kingdom
Contact:

Re: Realm of the Black Cat - Martin Howe's Offcuts

Post by MartinHowe »

Hi; since this is for beta testing, I left debugging enabled as if someone says "this doesn't work", it can help track things down. If you wish to try it without, unzip the PK3 file and "-file" it as a folder instead of a PK3, you can then turn off debugging by changing the top level ZScript.zds file like this: where it says const debug = 1; on line 56, change that to 0.

Please note that you're unlikely to see the full range of AI from these cats over a short playtest, as many of them are things cats won't do all the time and are in some cases random; my cat's full range of emotions and capabilities don't always get displayed over a month! I have strived to make them as much like real cats as I can - well as real as magic cats summoned to fight demons from Hell can be :) If you look inside the code a lot of work has gone into it - over 6000 lines! There is more to do, but it will come and at least all the essentials are there.
User avatar
Rachael
Posts: 13571
Joined: Tue Jan 13, 2004 1:31 pm
Preferred Pronouns: She/Her
Contact:

Re: Realm of the Black Cat - Martin Howe's Offcuts

Post by Rachael »

This looks really cute, I can't wait to try it out :)
User avatar
MartinHowe
Posts: 2027
Joined: Mon Aug 11, 2003 1:50 pm
Location: Waveney, United Kingdom
Contact:

Re: Realm of the Black Cat - Martin Howe's Offcuts

Post by MartinHowe »

Thank, Rachael, nice of you to say so.

I am taking a few day's break from this as it has occupied almost all my free time over the last few months (I was employed the whole time, no free holiday paid by HM Government for me :p) and my head feels crushed inside under the concentration for it. There is a half-imagined roadmap for the project in mind which will be fleshed out in due course.
Jaska
Posts: 113
Joined: Tue Dec 17, 2019 5:12 am
Graphics Processor: nVidia with Vulkan support

Re: Realm of the Black Cat - Martin Howe's Offcuts

Post by Jaska »

Whoah. The most complicated enemy/friend in Doom is a cat, nice :)
User avatar
MartinHowe
Posts: 2027
Joined: Mon Aug 11, 2003 1:50 pm
Location: Waveney, United Kingdom
Contact:

Re: Realm of the Black Cat - Martin Howe's Offcuts

Post by MartinHowe »

Now that Microsoft owns Doom, all sorts of possibilities become available :p



But seriously, I have reasumed work on this, er, oh wait, ... look what I found ... :shock: And there's more! :twisted: Assuming I could do it without Microsoft suing my ass off ... maybe that cartoon above isn't so fanciful after all :p But back in the Real World, as promised, a roadmap for the Black Cats of Doom, Kittens of Chaos, Cats of Carnage or whatever the heck I eventually decide to call this project:

1. More testing.

2. A black magic artefact to summon cats; I'm thinking primary fire=2-4 individual cats, secondary fire=same but as a mob with the next available mobIndex.

3. Mock cat treats e.g., a parody of Dreamies; cats fed from the same pack of cat treats would form mobs. This would need a fair amount of work on the cats' look codepointer, as the cats would need to periodically check for DoomGuy carrying cat treats and go beg for some. Another possibility is cat treats conferring special powers, e.g., a flavour that give the cats more health or berserk mode. I could get quite carried away with this one!

4. Final round of testing with various mods.

Well that's the plan anyway.

Adding Links to it would be a cool joke but Mr Gates & Co. might not like me recruiting her to the Fight Against Evil (tm) :)
User avatar
MartinHowe
Posts: 2027
Joined: Mon Aug 11, 2003 1:50 pm
Location: Waveney, United Kingdom
Contact:

Re: Realm of the Black Cat - Martin Howe's Offcuts

Post by MartinHowe »

Oh well, it can't hurt to get an idea of the scale of the problem :)
Post Reply

Return to “Resources”