STCompat experimental builds

Discussion about the experimental SVN builds

Moderators: Enjay, Dev Builds Team

Locked
User avatar
Gez
Developer
Developer
Posts: 1399
Joined: Mon Oct 22, 2007 16:47

STCompat experimental builds

Post by Gez »

ST Compat is a work-in-progress effort to implement in ZDoom a few Skulltag features. Currently included are:
  • The NOAUTOAIM flag, though it is deliberately restricted to affect only missile attacks
  • The Grenade Launcher's function, in a parameterized form
  • The RandomPowerup effect, in a generalized and parameterized form
  • The Rune system, but using normal powerups rather than runes -- so you'll want to use Powerup.Type instead of Rune.Type.
  • The BUMPSPECIAL flag.
  • The red armor's protection against fire.
Some of these features are a bit hacky, other are unfinished. Feel free to download and test. A patch is included if you want to look at the code. Right now, I don't deem it ready for submission on the ZDoom feature suggestion forum, but there's enough stuff that some feedback would be appreciated. The stcompat.7z file can be loaded as a wad file to obtain the available Skulltag actors. (It's really a pk3, but compressed as a 7z to make it smaller.)

Skulltag features not implemented:
  • The "max health" increase through bonus items.
  • Spread, reflection and prosperity runes. My assumption is that they would have been added long ago if they were wanted.
  • All gamemode items -- skull pillars, flags, and so on; but also the Terminator and Possession Stone.
  • The FloatyIcon used for medals and other messages. Not needed for ZDoom, obviously.
  • The EXPLODEONDEATH flag. I don't know what it does and I handle it as a dummy flag.
  • Hissy. Doesn't seem useful.
  • The path nodes. Used by Skulltag's bots I suppose, which aren't the same as ZDoom's, which are deprecated anyway.
  • PowerTranslucency -- instead, the invisibility sphere is made to use PowerShadow.
User avatar
Gez
Developer
Developer
Posts: 1399
Joined: Mon Oct 22, 2007 16:47

Re: STCompat experimental builds

Post by Gez »

Updated to ZDoom r1644. No other changes -- I worked on the RedArmor, but didn't find a satisfying way of recreating it.
User avatar
Ghastly_dragon
Posts: 119
Joined: Sun Jan 25, 2009 16:57

Re: STCompat experimental builds

Post by Ghastly_dragon »

Would adding some special handling of damagefactor for the armor type itself work, for emulating and expanding on the red armor?
User avatar
Jimmy
Stronghold Team
Posts: 776
Joined: Wed May 10, 2006 18:10
Location: Perth, WA
Contact:

Re: STCompat experimental builds

Post by Jimmy »

Gez wrote:
  • The FloatyIcon used for medals and other messages. Not needed for ZDoom, obviously.
I personally could see this feature actually having all sorts of uses.
User avatar
Gez
Developer
Developer
Posts: 1399
Joined: Mon Oct 22, 2007 16:47

Re: STCompat experimental builds

Post by Gez »

That's what I tried. However, there are issues.

The red armor absorbs a normal quantity of fire damage (its absorption rating is 2/3, so if you take 8 fire damage its overall amount decreases by five points) and if there are still some armor points left, no fire damage is inflicted at all. So it would be a damage factor of "fire", 0.0. But then for a normal powerup, the damage factor is handled before armor absorption, here we'd have to do the reverse or the armor is indestructible by fire.

The second problem is that damage factors depend on the class, not on the instance; and when you wear a RedArmor you do not wear a RedArmor -- you wear a BasicArmor. Its properties (absorption, amount, max amount, etc.) are updated by the pickups you take. But its damage factors will always be "Everything", 1.0. And obviously I don't want to try to change the class itself during run time, as this way lie madness. Changing one instance is okay, changing the class changes everything.

Though now I think I can use the recently-added ArmorType field to find that. Yeah, I can use FindClass(ArmorType)->ActorInfo->DamageFactors. It might work. I'll try that tomorrow.

In the mean time, I think my PowerScriptedEffect system works. :) And for fun, because I felt it was missing, I've also made a PowerInfiniteAmmo.
jimmy91 wrote:
Gez wrote:
  • The FloatyIcon used for medals and other messages. Not needed for ZDoom, obviously.
I personally could see this feature actually having all sorts of uses.
Uh? It's hardcoded land. I don't care about implementing medals and so on. I prefer to concentrate on stuff that can be used and extended in DECORATE or ACS. To do that for FloatyIcon, you'd have to support it with a host of new functions. Meh. And I really don't see how it could be useful in single player.

Stuff I plan on implementing include a satisfying generalization of protective armors, BUMPSPECIAL and PowerTranslucency (PowerShadow actually has an effect that may not be desired, such as making you invisible if you pick two in a row).
User avatar
Gez
Developer
Developer
Posts: 1399
Joined: Mon Oct 22, 2007 16:47

Re: STCompat experimental builds

Post by Gez »

Bump for update to revision 1660. New features:

+ Armors can have damage factors now. This means that you can obtain a pretty good recreation of the RedArmor by simply giving it "DamageFactor "Fire" 0.1". From my empirical tests with various sources of damage, it gives about the same values (e.g., the "hefty lava" in Heretic E2M1 decreases the armor by 5 points but doesn't hurt you, an archvile attack nicks only 9 hit points off you, etc.). Note: The rockets in skulltag.pk3 have DamageType "Fire", those in ZDoom do not. Keep that in mind if comparing a rocket jump with red armor in ZDoom with one in Skulltag.

Now, how does it work exactly? Simple. In a first time, the armor absorbs damage like it always did. Then, once the damage is absorbed, the appropriate damage factor, if any, is applied to the remaining damage. This means that the armor itself always take full damage, the damage factor protects its wearer, not the armor.

+ The BUMPSPECIAL flag. An actor with that flag will execute its special, if any, when a player collides with it.

Miscellaneous note 1: the PowerScriptedEffect is implemented in this build.
Miscellaneous note 2: since some people don't read the posts that say patches are included in the zip, the patch is no longer included in the zip. :P Instead there's a separate file.
User avatar
Ghastly_dragon
Posts: 119
Joined: Sun Jan 25, 2009 16:57

Re: STCompat experimental builds

Post by Ghastly_dragon »

Gez wrote:Now, how does it work exactly? Simple. In a first time, the armor absorbs damage like it always did. Then, once the damage is absorbed, the appropriate damage factor, if any, is applied to the remaining damage. This means that the armor itself always take full damage, the damage factor protects its wearer, not the armor.
Do you mean that the damagefactor only applies to points taken off of the health amount, not the armor amount? If so, does it still work, more or less, how it does in Skulltag?
User avatar
Gez
Developer
Developer
Posts: 1399
Joined: Mon Oct 22, 2007 16:47

Re: STCompat experimental builds

Post by Gez »

Ghastly_dragon wrote:
Gez wrote:Now, how does it work exactly? Simple. In a first time, the armor absorbs damage like it always did. Then, once the damage is absorbed, the appropriate damage factor, if any, is applied to the remaining damage. This means that the armor itself always take full damage, the damage factor protects its wearer, not the armor.
Do you mean that the damagefactor only applies to points taken off of the health amount, not the armor amount? If so, does it still work, more or less, how it does in Skulltag?
Yup. I made it that way because that's what replicated the Skulltag behavior the most closely.

For example. Define this actor:

Code: Select all

ACTOR RedArmorErsatz : BasicArmorPickup
{
	Game Doom
	SpawnID 168
	Radius 20
	Height 16
	Armor.Savepercent 66.66666
	Armor.Saveamount 200
//	DamageFactor "Fire", 0.1 // NO FIRE RESISTANCE FOR YOU, AHAH!
	Inventory.Icon "ARM3A0"
	Inventory.Pickupmessage "You picked up a low-quality imitation of a red armor."
	States
	{
	Spawn:
		ARM3 A 6
		ARM3 B 6 bright
		goto Spawn
	}
}
Now load that alongside the stcompat.7z that's on the SVN server. Go to Heretic E2M1, it's handy. Kill the monsters so that they'll stop being a distraction, summon a redarmorersatz and jump in the lava pool. Armor -5, health -3. Once the armor runs out, health -8.
Now get out of there, summon a true redarmor, and take another dip. Armor -5, health -0. Cool. Once the armor runs out, health -8.

Now run Skulltag instead. Same batcave, same batmethod. With the ersatz, armor -5, health -3; with the redarmor, armor -5, health -0.

I've also summoned archviles who obligingly roasted me on demand, the health loss with red armor is the same as in skulltag. (With a variation of up to a couple of points. Archvile fire deals 20 fixed damage, + 70 fire damage in a radius, typically you get between 62 and 66 fire damage from it. In my tests I haven't run into higher or lower values. Yeah, for my tests I added Printf() commands telling me how much damage exactly was being inflicted, this code is of course removed in the build.)
User avatar
Gez
Developer
Developer
Posts: 1399
Joined: Mon Oct 22, 2007 16:47

Re: STCompat experimental builds

Post by Gez »

Updated to r1667. This includes the new rune system. A runegiver can be given a Rune.DropType property which can be one of those four:
* Drop: allows manual drop through the "drop rune" console command
* NoDrop: disallows dropping the rune (default value)
* AutoDrop: allows to drop a rune manually, and also automatically drop the current rune when picking up another
* NoAutoDrop: prevents from picking other runes as long as you don't drop the one you're currently holding
Locked

Return to “Experimental Builds”