Duke4.net Forums: Shadow Warrior - "New Episode" - Duke4.net Forums

Jump to content

  • 44 Pages +
  • « First
  • 5
  • 6
  • 7
  • 8
  • 9
  • Last »
  • You cannot start a new topic
  • You cannot reply to this topic

Shadow Warrior - "New Episode"

User is offline   Forge 

  • Speaker of the Outhouse

#181

a room in WD that causes the game to crash - if the garage and the blue pal-ed control room are viewed at the same time.
luckily I can back into the room to hit the switch. I'm good as long as I don't get too much of a look out the window.

Attached File  swcp0000.jpg (219.05K)
Number of downloads: 19

Attached File  swcp0001.jpg (145.54K)
Number of downloads: 11

Attached File  swcp0003.jpg (165.05K)
Number of downloads: 13

Attached File  game2.zip (181.62K)
Number of downloads: 0

This post has been edited by Forge: 01 June 2017 - 03:15 PM

1

User is offline   Forge 

  • Speaker of the Outhouse

#182

Twin Dragon works the opposite of Wanton Destruction.
TD needs the original sw.grp file in the base directory - or it won't even launch
With the sw.grp in the base directory WD will only load the first map - use the original art, sounds, etc instead of its own, then after completing the level it goes into level 6 Killing Fields of the original game.

Even with the original sw.grp removed from the base directory - the game still labels the maps as f they were part of the original episode. (e.g. it calls Military Base - Sumo Sky Palace, calls Train - Bath House, etc.)

This post has been edited by Forge: 01 June 2017 - 05:35 PM

2

#183

View PostForge, on 01 June 2017 - 05:29 PM, said:

Twin Dragon works the opposite of Wanton Destruction.
TD needs the original sw.grp file in the base directory - or it won't even launch
With the sw.grp in the base directory WD will only load the first map - use the original art, sounds, etc instead of its own, then after completing the level it goes into level 6 Killing Fields of the original game

I never noticed that, which assets from TD still look like the base game assets?
0

User is offline   Master O 

#184

View Posticecoldduke, on 01 June 2017 - 05:32 PM, said:

I never noticed that, which assets from TD still look like the base game assets?


It sounds like you should downgrade the status of Twin Dragon and Wanton Destruction in future binaries until that issue is sorted out.
0

User is offline   Forge 

  • Speaker of the Outhouse

#185

View Posticecoldduke, on 01 June 2017 - 05:32 PM, said:

I never noticed that, which assets from TD still look like the base game assets?

somebody correct me if i'm wrong, but twin dragons is pretty much just a map-pak episode. There's some new art assets, like a few wall posters & such, a couple new sounds, but other than the one final boss, the enemies, sounds, etc are mostly the same as in the original base game. TD is just adding to what's already there.
This could be why the sw.grp and the td.grp have to be in the base directory at the same time.
I won't know until I get there if the final boss is the one that comes with TD, or if it gets over-written by the defacto original episode boss.

Whereas Wanton Destruction has new art, new enemies, new sounds, etc.
WD is using the same asset slots as the original game for it's own stuff & they interfere with each other. - if the sw.grp is in the base directory at the same time as the wt.grp - then the sw.grp assets over-ride the wt.grp assets.

This post has been edited by Forge: 01 June 2017 - 08:24 PM

1

User is offline   Hank 

#186

View PostForge, on 01 June 2017 - 07:54 PM, said:

somebody correct me if i'm wrong, but twin dragons is pretty much just a map-pak episode. There's some new art assets, like a few wall posters & such, a couple new sounds, but other than the one final boss, the enemies, sounds, etc are mostly the same as in the original base game. TD is just adding to what's already there.
This could be why the sw.grp and the td.grp have to be in the base directory at the same time.
I won't know until I get there if the final boss is the one that comes with TD, or if it gets over-written by the defacto original episode boss.

Whereas Wanton Destruction has new art, new enemies, new sounds, etc.
WD is using the same asset slots as the original game for it's own stuff & they interfere with each other. - if the sw.grp is in the base directory at the same time as the wt.grp - then the sw.grp assets over-ride the wt.grp assets.

Close.
You can't have td.grp and sw.grp in the same folder. You can have wt.grp and sw.grp in the same folder. At least this is the setup in my original Shadow Warrior game from GoG, and those work for me.
Redux version: has the group files for TD and DW in one separate folder.

This post has been edited by Hank: 01 June 2017 - 08:38 PM

1

User is offline   Forge 

  • Speaker of the Outhouse

#187

View PostHank, on 01 June 2017 - 08:38 PM, said:

Close.
You can't have td.grp and sw.grp in the same folder. You can have wt.grp and sw.grp in the same folder. At least this is the setup in my original Shadow Warrior game from GoG, and those work for me.
Redux version: has the group files for TD and DW in one separate folder.

Now try it with this eduke32 port ICD is working on.
I'm reporting on this, not how it works elsewhere.

I'm playing td right now - and the game won't even launch if you use twin dragons from the launch box drop-down menu and both td & sw grp files are not in the base directory.

This post has been edited by Forge: 01 June 2017 - 09:13 PM

1

User is offline   Forge 

  • Speaker of the Outhouse

#188

A Twin Dragons crash spot for polymost - can't drop down this hole without it crashing as soon the transparent water becomes visible. Even backing in and looking down at the floor doesn't work.
(but I can switch to polymer and go get the key - so at least I'm not completely stuck)

Attached File  swcp0000.jpg (170.69K)
Number of downloads: 12

Attached File  swcp0001.jpg (125.63K)
Number of downloads: 14
1

User is offline   Hank 

#189

View PostForge, on 01 June 2017 - 09:04 PM, said:

Now try it with this eduke32 port ICD is working on.
I'm reporting on this, not how it works elsewhere.

I'm playing td right now - and the game won't even launch if you use twin dragons from the launch box drop-down menu and both td & sw grp files are not in the base directory.

I will when it's ready. I'm left handed and need my custom key/mouse setup to test anything :P

Meanwhile, I simply stated how current Shadow Warrior games are organized. It might be an idea to program with it in mind. :P
1

User is offline   Forge 

  • Speaker of the Outhouse

#190

View PostHank, on 01 June 2017 - 09:34 PM, said:

I will when it's ready. I'm left handed and need my custom key/mouse setup to test anything :P

Meanwhile, I simply stated how current Shadow Warrior games are organized. It might be an idea to program with it in mind. :P

you don't need to play it, only test to see if it launches..
i know. the hassles downloading a tiny zip, un-packing it into its own directory, and copying three grp files over. I can hear the creaking of metacarpal.


meanwhile, odd flickering & shaking behavior in this room (same map as the hole that causes polymost crashes)

http://www.mediafire...2-29-33-363.mp4

This post has been edited by Forge: 01 June 2017 - 10:35 PM

1

User is offline   Forge 

  • Speaker of the Outhouse

#191

Finished Twin Dragon.
The final boss was the correct one for the expansion.

One odd glitch - when the walls come down exposing the boss, it's accompanied by one red - evil ninja.
I killed the evil ninja and it ended the game like I had just killed the boss.
0

User is offline   Kyanos 

#192

Some more highpals.
Attached File  sw_highpals_part2.zip (5.39MB)
Number of downloads: 2
1

#193

SHADOW WARRIOR MODDING TUTORIAL:

Turning Ninja Stars into the Duke3D expander weapon.
In this tutorial we will make it so enemies will grow very big and blow up when the ninja stars hit a enemy actor.

In Actor.cpp at the very end of the add the following code.

void InitActorGrow(int spritenum, int scalex, int scaley)
{
	USERp u = User[spritenum];
	
	if (u == nullptr)
		return; 

	u->isGrowingTillDeath = true;
	u->growingTicTimer = 0;
	u->growScaleX = scalex;
	u->growScaleY = scaley;
}

bool DoGenericGrowCode(int spritenum)
{
	USERp u = User[spritenum];

	if (u == nullptr)
		return FALSE;

	if (!u->isGrowingTillDeath)
		return FALSE;

	SPRITEp sprite = u->SpriteP;

	if (u->growingTicTimer < 32)
	{
		sprite->xrepeat += ksgn(u->growScaleX);
		sprite->yrepeat += ksgn(u->growScaleX);
		u->growingTicTimer++;
	}
	else
	{
		// spawn explosion
		int explosion = SpawnSectorExp(spritenum);
		ASSERT(explosion >= 0);
		SPRITEp exp = &sprite[explosion];
		USERp eu = User[explosion];

		exp->xrepeat += (RANDOM_P2(32 << 8) >> 8) - 16;
		exp->yrepeat += (RANDOM_P2(32 << 8) >> 8) - 16;
		eu->xchange = MOVEx(92, exp->ang);
		eu->ychange = MOVEy(92, exp->ang);

		KillSprite(spritenum);
		return TRUE;
	}

	return FALSE;
}


The above code is our expander logic. The above logic is based on the expander logic in duke3d.

In actor.h at the bottom of the header add the following code:

void InitActorGrow(int spritenum, int scalex, int scaley);
bool DoGenericGrowCode(int spritenum);


In game.h find the USER struct and add the following just above the filler variable:

        bool isGrowingTillDeath;
	int growingTicTimer;
	int growScaleX;
	int growScaleY;


In sprite.cpp just below #include "player.h" add the following:

#include "actor.h"


Also in sprite.cpp find the function SpriteControl just above the CloseToPlayer = FALSE; line(inside of the move bad guys around TRAVERSE_SPRITE_STAT) add the following code.

			if (DoGenericGrowCode(sp - sprite))
				continue;

Were executing our exploding logic here, there is probably a better place for it but we don't continue in the loop if DoGenericGrowCode has removed destroyed this actor.

Finally in weapon.cpp around line 6373(case STAR1/case CROSSBOLT) modify that condition from

case STAR1:
    case CROSSBOLT:
        damage = GetDamage(SpriteNum, Weapon, WPN_STAR);

        if (u->sop_parent)
        {
            break;
        }
        else if (u->PlayerP)
        {
            MONO_PRINT("Stat Hit Actor");
            // Is the player blocking?
            if (u->PlayerP->WpnKungFuMove == 3)
                damage /= 3;
            PlayerDamageSlide(u->PlayerP, damage, wp->ang);
            if (PlayerTakeDamage(u->PlayerP, Weapon))
            {
                PlayerUpdateHealth(u->PlayerP, damage);
                PlayerCheckDeath(u->PlayerP, Weapon);
            }
            if (u->PlayerP->Armor)
                PlaySound(DIGI_ARMORHIT,&u->PlayerP->posx,&u->PlayerP->posy,&
u->PlayerP->posz,v3df_dontpan|v3df_follow|v3df_doppler);
        }
        else
        {
            MONO_PRINT("Star Hit Actor");
            ActorHealth(SpriteNum, damage);
            ActorPain(SpriteNum);
            ActorStdMissile(SpriteNum, Weapon);
            ActorDamageSlide(SpriteNum, damage, wp->ang);
            ActorChooseDeath(SpriteNum, Weapon);
        }

        StarBlood(SpriteNum, Weapon);

        wu->ID = 0;
        SetSuicide(Weapon);
        break;


to

case STAR1:
		InitActorGrow(SpriteNum, 100, 100);

		StarBlood(SpriteNum, Weapon);

		wu->ID = 0;
		SetSuicide(Weapon);
		break;
    case CROSSBOLT:
        damage = GetDamage(SpriteNum, Weapon, WPN_STAR);

        if (u->sop_parent)
        {
            break;
        }
        else if (u->PlayerP)
        {
            MONO_PRINT("Stat Hit Actor");
            // Is the player blocking?
            if (u->PlayerP->WpnKungFuMove == 3)
                damage /= 3;
            PlayerDamageSlide(u->PlayerP, damage, wp->ang);
            if (PlayerTakeDamage(u->PlayerP, Weapon))
            {
                PlayerUpdateHealth(u->PlayerP, damage);
                PlayerCheckDeath(u->PlayerP, Weapon);
            }
            if (u->PlayerP->Armor)
                PlaySound(DIGI_ARMORHIT,&u->PlayerP->posx,&u->PlayerP->posy,&
u->PlayerP->posz,v3df_dontpan|v3df_follow|v3df_doppler);
        }
        else
        {
            MONO_PRINT("Star Hit Actor");
            ActorHealth(SpriteNum, damage);
            ActorPain(SpriteNum);
            ActorStdMissile(SpriteNum, Weapon);
            ActorDamageSlide(SpriteNum, damage, wp->ang);
            ActorChooseDeath(SpriteNum, Weapon);
        }

        StarBlood(SpriteNum, Weapon);

        wu->ID = 0;
        SetSuicide(Weapon);
        break;


This post has been edited by icecoldduke: 03 June 2017 - 08:07 PM

4

#194

The video for the above tutorial



This post has been edited by icecoldduke: 03 June 2017 - 08:03 PM

5

User is offline   Forge 

  • Speaker of the Outhouse

#195

Posted Image
2

#196

View PostDrek, on 02 June 2017 - 07:08 PM, said:

Some more highpals.
Attachment sw_highpals_part2.zip

Nice job! Just got it in the depot and will be in for the next patch.
0

#197

I fixed a bug in Polymer were, gotpic wasn't being set at all. This was causing quite a bit of logic to fail(such as FAF were all the FAF logic was failing because PicInView was always returning false). FAF is still not working in Polymer yet but PicInView is now working right.

Here is the CL if anyone has any input.

https://github.com/j...83a3b7490cd46ca

This post has been edited by icecoldduke: 04 June 2017 - 08:30 AM

0

User is offline   Hank 

#198

Excuse my ignorance, but what is FAF?
0

#199

View PostHank, on 04 June 2017 - 08:43 AM, said:

Excuse my ignorance, but what is FAF?

"Floor Above Floor" its the sector above sector technique Shadow Warrior uses.
1

#200

I fixed Polymer FAF.

Posted Image

Posted Image
5

User is offline   Master O 

#201

View Posticecoldduke, on 04 June 2017 - 10:50 AM, said:

I fixed Polymer FAF.

Posted Image

Posted Image


In that first image (in the console), it says your missing several .png files. Is that normal?

This post has been edited by Master O: 04 June 2017 - 01:28 PM

2

#202

View PostMaster O, on 04 June 2017 - 01:28 PM, said:

In that first image (in the console), it says your missing several .png files. Is that normal?

Probably not :P. When I took the redux ui assets I didn't clean up the def file, while its not normal I doubt its causing any problems. I'll clean it up when I get a chance. Thanks for letting me know :P.
0

User is offline   TerminX 

  • el fundador

  #203

What the fuck Justin, is your F12 key broken? :P
1

#204

View PostTerminX, on 04 June 2017 - 01:50 PM, said:

What the fuck Justin, is your F12 key broken? :P

There does exist that possibility :P. Until you brought it up I didn't know F12 did screenshots, I'll get that fixed.
0

User is offline   TerminX 

  • el fundador

  #205

View Posticecoldduke, on 04 June 2017 - 01:56 PM, said:

I didn't know F12 did screenshots

Posted Image
2

User is offline   Paul B 

#206

View Posticecoldduke, on 04 June 2017 - 08:44 AM, said:

"Floor Above Floor" its the sector above sector technique Shadow Warrior uses.



How similar is FAF to TROR in Eduke? This is encouraging progress, I hope it can be translated to Eduke's PolymerNG TROR as well.

This post has been edited by Paul B: 04 June 2017 - 03:20 PM

1

User is offline   Master O 

#207

View Posticecoldduke, on 04 June 2017 - 01:48 PM, said:

Probably not :P. When I took the redux ui assets I didn't clean up the def file, while its not normal I doubt its causing any problems. I'll clean it up when I get a chance. Thanks for letting me know :P.


Also, in that first image, he's underwater, right?
0

#208

View PostTerminX, on 04 June 2017 - 01:58 PM, said:

Posted Image

I actually missed osdcmds.cpp/osdfunc.cpp. I'm taking care of that now :P.

View PostPaul B, on 04 June 2017 - 03:18 PM, said:

How similar is FAF to TROR in Eduke? This is encouraging progress, I hope it can be translated to Eduke's PolymerNG TROR as well.

It's more similar to SOS in Duke3D or Blood. Basically you place a sprite in both sectors that have the same tag and in the same relative position. Then the game renders the opposite sector first then the sector the player is in. Its similar to how portal skies work, but its not TROR.

FAF was the original technique used in Shadow Warrior, to be clear all I did was fix bugs in Polymer that caused FAF not to render properly. Basically in Polymer, the sky code was causing problems with FAF and drawplane didn't early exit when the size of the tile of the plane had texture dimensions of 0x0. Also the Polymer renderer didn't handle gotpic at all which the game used to determine if a FAF sector was visible. Basically the game checks to see if a floor or ceiling in view has a picnum of FAF_MIRROR_PIC, and early exits if none is found. It determines that based on the gotpic array which wasn't being used at all in Polymer.

View PostMaster O, on 04 June 2017 - 03:20 PM, said:

Also, in that first image, he's underwater, right?

No this is the third room in the example.map. The room I'm in is just a generic room with a room over it.

This post has been edited by icecoldduke: 04 June 2017 - 03:49 PM

2

#209

I disabled the standard "press t" text input mechanism and implemented the following console commands:

  • god - toggles god mode
  • give - gives all items and weapons.
  • changelevel <level id> - changes level
  • noclip - toggles noclip.
  • screenshot - takes a screenshot


Does anyone have a issue using the console instead of the old cheat text input mechanism?

This post has been edited by icecoldduke: 04 June 2017 - 05:30 PM

0

User is offline   TerminX 

  • el fundador

  #210

If you're going to do that, you need to let the user type the old cheats directly into the console.
2

Share this topic:


  • 44 Pages +
  • « First
  • 5
  • 6
  • 7
  • 8
  • 9
  • Last »
  • You cannot start a new topic
  • You cannot reply to this topic


All copyrights and trademarks not owned by Voidpoint, LLC are the sole property of their respective owners. Play Ion Fury! ;) © Voidpoint, LLC

Enter your sign in name and password


Sign in options