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!

Realm of the Black Cat - Martin Howe's Offcuts

Postby MartinHowe » Fri May 15, 2020 6:37 am

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 :)

Demons for Dinner.png

Have Fun! :D
You do not have the required permissions to view the files attached to this post.
Last edited by MartinHowe on Fri May 15, 2020 6:51 am, edited 2 times in total.
User avatar
MartinHowe
In space, no-one can hear you KILL an ALIEN
 
Joined: 11 Aug 2003
Location: Waveney, United Kingdom

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

Postby MartinHowe » Fri May 15, 2020 6:46 am

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 allExpand view
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 allExpand view
demon/eat dscrunch // from VSB Doom

MapInfo
Code: Select allExpand view
DoomEdNums
{
    30001 = MyFriendlyDemon
}
You do not have the required permissions to view the files attached to this post.
User avatar
MartinHowe
In space, no-one can hear you KILL an ALIEN
 
Joined: 11 Aug 2003
Location: Waveney, United Kingdom

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

Postby MartinHowe » Sun May 17, 2020 8:15 am

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 allExpand view
===========================================================================
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 allExpand view
// --- 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 allExpand view
// --- 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
You do not have the required permissions to view the files attached to this post.
User avatar
MartinHowe
In space, no-one can hear you KILL an ALIEN
 
Joined: 11 Aug 2003
Location: Waveney, United Kingdom

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

Postby MartinHowe » Sun May 17, 2020 8:42 am

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 allExpand view
===========================================================================
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 allExpand view
// --- 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 allExpand view
// --- 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
You do not have the required permissions to view the files attached to this post.
User avatar
MartinHowe
In space, no-one can hear you KILL an ALIEN
 
Joined: 11 Aug 2003
Location: Waveney, United Kingdom

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

Postby NeonLights95 » Tue May 26, 2020 10:29 am

These are some pretty damn good resources!
User avatar
NeonLights95
I'm known by many names
 
Joined: 10 Feb 2017
Location: A lot of places
Discord: JasonBlade95#6988
Operating System: Windows 10/8.1/8/201x 64-bit
OS Test Version: No (Using Stable Public Version)
Graphics Processor: nVidia (Legacy GZDoom)

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

Postby MartinHowe » Tue May 26, 2020 3:38 pm

Thanks :) There'll be more, but not for a while - gotta lot of testing to do on the current one.
User avatar
MartinHowe
In space, no-one can hear you KILL an ALIEN
 
Joined: 11 Aug 2003
Location: Waveney, United Kingdom

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

Postby MartinHowe » Mon Jun 29, 2020 4:06 am

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 allExpand view
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

Should be easy to build on Linux:
Code: Select allExpand view
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.
You do not have the required permissions to view the files attached to this post.
User avatar
MartinHowe
In space, no-one can hear you KILL an ALIEN
 
Joined: 11 Aug 2003
Location: Waveney, United Kingdom

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

Postby MartinHowe » Tue Jun 30, 2020 12:49 pm

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.
User avatar
MartinHowe
In space, no-one can hear you KILL an ALIEN
 
Joined: 11 Aug 2003
Location: Waveney, United Kingdom

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

Postby Captain J » Tue Jun 30, 2020 1:12 pm

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
Captain J
That's Amoreee
 
 
 
Joined: 02 Oct 2012
Location: A Year old Pizza Box
Discord: DiscussJ#3128

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

Postby MartinHowe » Tue Jun 30, 2020 1:55 pm

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
MartinHowe
In space, no-one can hear you KILL an ALIEN
 
Joined: 11 Aug 2003
Location: Waveney, United Kingdom

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

Postby Rachael » Wed Jul 01, 2020 5:03 am

This looks really cute, I can't wait to try it out :)
User avatar
Rachael
Webmaster
 
Joined: 13 Jan 2004
Discord: Rachael#3767
Twitch ID: madamerachelle
Github ID: madame-rachelle
Operating System: Windows 10/8.1/8/201x 64-bit
OS Test Version: No (Using Stable Public Version)
Graphics Processor: nVidia with Vulkan support

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

Postby MartinHowe » Wed Jul 01, 2020 5:45 am

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.
User avatar
MartinHowe
In space, no-one can hear you KILL an ALIEN
 
Joined: 11 Aug 2003
Location: Waveney, United Kingdom

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

Postby Jaska » Sun Jul 12, 2020 4:40 pm

Whoah. The most complicated enemy/friend in Doom is a cat, nice :)
Jaska
 
Joined: 17 Dec 2019
Operating System: Windows 10/8.1/8/201x 64-bit
OS Test Version: No (Using Stable Public Version)
Graphics Processor: nVidia with Vulkan support

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

Postby MartinHowe » Tue Sep 22, 2020 1:26 pm

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
In space, no-one can hear you KILL an ALIEN
 
Joined: 11 Aug 2003
Location: Waveney, United Kingdom

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

Postby MartinHowe » Wed Sep 23, 2020 3:52 pm

Oh well, it can't hurt to get an idea of the scale of the problem :)
User avatar
MartinHowe
In space, no-one can hear you KILL an ALIEN
 
Joined: 11 Aug 2003
Location: Waveney, United Kingdom


Return to Resources

Who is online

Users browsing this forum: CBM and 0 guests