Turn-based Mutator

Projects that alter game functions but do not include new maps belong here.
Forum rules
The Projects forums are ONLY for YOUR PROJECTS! If you are asking questions about a project, either find that project's thread, or start a thread in the General section instead.

Got a cool project idea but nothing else? Put it in the project ideas thread instead!

Projects for any Doom-based engine (especially 3DGE) are perfectly acceptable here too.

Please read the full rules for more details.

Re: Turn-based Mutator

Postby Shadez12 » Tue Oct 16, 2018 12:20 pm

We've come full circle.
User avatar
Shadez12
Wow
 
Joined: 03 Aug 2013
Location: Wow

Re: Turn-based Mutator

Postby DavidN » Tue Oct 16, 2018 2:54 pm

What a fun idea :) Reminds me of playing Necromunda in the 90s, dividing turn time between movement and firing!
User avatar
DavidN
 
Joined: 28 Dec 2015

Re: Turn-based Mutator

Postby mrtaterz » Tue Oct 16, 2018 2:57 pm

I don't know if this is possible (but it seems like almost anything is possible with the power of ZScript) but if you could add in "multiple players" (for Squad/Turn-based Tactics), longer turns, a visual indicator to show how long you have before your turn ends, and an end turn button, that would be amazing.

EDIT: Change the Par time for each level in Doom 1 & 2 if possible as well; I don't think it's possible to beat E1M1 or MAP01 in under 30 seconds anymore! There's so much more that could be done with this "simple mutator" to turn it into it's own full-fledged mod and not just a lightweight addon.
mrtaterz
 
Joined: 14 Feb 2018
Discord: Nathan#8476

Re: Turn-based Mutator

Postby Josh771 » Tue Oct 16, 2018 5:53 pm

That whole "invisibility" trick to make monsters inaccurate sounds like a fantastic idea, actually. And it can't really hurt anything if it's only given when a player's turn ends. Yeah, I think I'll add that.

And, yeah, sadly I can't make this thing take level geometry into account. Doors and elevators are just going to have to be broken I suppose. Although making something that detects when a monster is in a monster closet, etc. and skips the monster's turn might be doable. I'll investigate a few methods, I suppose.

Glad everyone's enjoying it! I'm tempted to try a full turn-based mod with its own weapons, monsters, and mechanics at this point -- but no promises there! It's just a thought.
User avatar
Josh771
formerly known as SidDoyle
 
Joined: 03 Apr 2013
Location: Elsewhere.
Discord: josh771#7771

Re: Turn-based Mutator

Postby Josh771 » Tue Oct 16, 2018 10:18 pm

New release! I have updated the attached file in the opening post. There is now an options menu for turn-based.pk3, as well as handling for player death in singleplayer games. I have also included two optional methods for making attacks inaccurate, and I'll explain the differences between them here.

In the options menu, you are able to select between two different methods for attack inaccuracy: Powerup and Projectile Randomization.
• Powerup gives players an invisibility powerup when it is not their turn, causing all monster attacks (from monsters that cannot see invisible targets, at least) to become inaccurate.
• Projectile Randomization modifies all actors with +MISSILE as soon as they spawn to randomly offset their trajectory. This affects both players and monsters but leaves hitscans alone.

I have left the Projectile Randomization method as the default, but it may have unintended side effects with some mods. Try both, if you are so inclined, and choose the one that suits you best.

EDIT: I have made the Projectile Randomization method more reliable and added an option to tweak how strong the randomization is.
User avatar
Josh771
formerly known as SidDoyle
 
Joined: 03 Apr 2013
Location: Elsewhere.
Discord: josh771#7771

Re: Turn-based Mutator

Postby RedoLane » Wed Oct 17, 2018 6:33 am

wow, this is incredible!
This can be a foundation to Tactical Doom RPG mods from now on!
User avatar
RedoLane
 
Joined: 08 Dec 2017
Discord: #7295

Re: Turn-based Mutator

Postby Zhs2 » Mon Oct 22, 2018 6:13 pm

A thought: check if a projectile's owner (target) doesn't have a player struct attached to it (i.e. "if(e.Thing && e.Thing.bMISSILE && e.thing.target && !e.thing.target.player)") then apply randomization if so. That should affect only things fired by monsters, and probably any player-placed things that fire other things that don't inherit the target field from their firer like in some old mods I'm sure.

Another thought, since I noticed it was talked about on Discord but didn't think to mention it until just now: you don't need a powerup to block slime damage. You can instead give the player an item with a ModifyDamage override that checks if the damage dealt is of type "Slime" and returns 0 accordingly. Better yet, you can catalogue whether "Slime" damage was dealt in an off-turn period, what strength the hellslime floor is by its damage amount, and then deal a penalty to the player with DamageMobj if they stopped there or so, which could be further expanded to not deal any damage if the player has an active Radsuit. (And perhaps make them immune to "Slime" otherwise?)
User avatar
Zhs2
Power of three.
 
Joined: 07 Nov 2008
Location: Maryland, USA, but probably also in someone's mod somewhere

Re: Turn-based Mutator

Postby Josh771 » Mon Oct 22, 2018 6:46 pm

Zhs2 wrote:A thought: check if a projectile's owner (target) doesn't have a player struct attached to it (i.e. "if(e.Thing && e.Thing.bMISSILE && e.thing.target && !e.thing.target.player)") then apply randomization if so. That should affect only things fired by monsters, and probably any player-placed things that fire other things that don't inherit the target field from their firer like in some old mods I'm sure.

Excellent thought! I could make this an option, in case some players like to have the inaccuracy applied to their own attacks for that classic RPG feel.

Zhs2 wrote:Another thought, since I noticed it was talked about on Discord but didn't think to mention it until just now: you don't need a powerup to block slime damage. You can instead give the player an item with a ModifyDamage override that checks if the damage dealt is of type "Slime" and returns 0 accordingly. Better yet, you can catalogue whether "Slime" damage was dealt in an off-turn period, what strength the hellslime floor is by its damage amount, and then deal a penalty to the player with DamageMobj if they stopped there or so, which could be further expanded to not deal any damage if the player has an active Radsuit. (And perhaps make them immune to "Slime" otherwise?)

I wanted to make this exact sort of behavior, but I hadn't considered what approach to use. Whenever I get around to trying to overhaul player turns to use a more action-based instead of time-based system, I'll see if I can't add this special damage-floor mechanic as well. Thanks for the thoughts!
User avatar
Josh771
formerly known as SidDoyle
 
Joined: 03 Apr 2013
Location: Elsewhere.
Discord: josh771#7771

Re: Turn-based Mutator

Postby Solaela » Tue Oct 23, 2018 12:19 am

One thing I'd suggest if possible if the time method is the only way? A timer when it's player's turn. So they know how long they got left to act before it's the mobs turn again. Just a thought.
Solaela
 
Joined: 10 Jan 2015

Re: Turn-based Mutator

Postby Captain J » Tue Oct 23, 2018 12:44 am

Solaela wrote:One thing I'd suggest if possible if the time method is the only way? A timer when it's player's turn. So they know how long they got left to act before it's the mobs turn again. Just a thought.
That's just what i said, actually. Yes i agree.
User avatar
Captain J
'OH YE'
 
 
 
Joined: 02 Oct 2012
Location: Secret Chamber
Discord: DiscussJ#3128

Re: Turn-based Mutator

Postby isaacpop23 » Tue Oct 23, 2018 7:56 pm

Well this is cool, what it lacks in balance it makes up for in being interesting/amusing. I'd love to see some dedicated stuff to flesh out the mod, I'd be curious to see how that goes.

I'd like to +1 the turn timer thing, but you said you're gonna overhaul the turn so I doubt it's gonna be needed in the long run. I'm not sure if there's functions to make this work, but is there a way to speed up the enemy turns? Not shorten them from 3 seconds to 1 second of action, actually speed up the run time so that 3 seconds of action happens in 1 second real-time. Playing in rooms with a lot of enemies that often time can't do anything really takes a toll on patience, but limiting what they can do on their turn seems like a bad idea for balance reasons.
User avatar
isaacpop23
 
Joined: 01 Apr 2013

Re: Turn-based Mutator

Postby Solaela » Sat Oct 27, 2018 3:00 am

Captain J wrote:
Solaela wrote:One thing I'd suggest if possible if the time method is the only way? A timer when it's player's turn. So they know how long they got left to act before it's the mobs turn again. Just a thought.
That's just what i said, actually. Yes i agree.

XD Didn't see that. My bad but glad to see we agree
Solaela
 
Joined: 10 Jan 2015

Re: Turn-based Mutator

Postby KarolineDianne » Tue Oct 30, 2018 10:23 pm

I don't much understand what the advanced option 'Player Turn Extension' actually does, could you elaborate a bit on that?
User avatar
KarolineDianne
The Squid Princess
 
Joined: 05 Jan 2014

Re: Turn-based Mutator

Postby Josh771 » Wed Nov 07, 2018 4:51 pm

KarolineDianne wrote:I don't much understand what the advanced option 'Player Turn Extension' actually does, could you elaborate a bit on that?

This is the frequency in tics that the game will check active monsters' line-of-sight when a player's turn would normally have ended but no actor besides the player can take a turn. If you set it to 1 tic, the instant a monster sees you after your full turn is over and no other actors can take a turn, it will become that monster's turn. This check occurs for all monsters in a map, so if you run into performance problems from the turn-based mutator, I recommend increasing this.

For example, let's say the player's turn length is set to 3 seconds -- that's 105 tics in game time. Say you've cleared a room and now you're just picking up items, exploring, etc. If you take more than 3 seconds to do that, you're now in an extended turn. Every n tics the game will check whether any new monsters can see you, where n is your "Player Turn Extension" setting. Larger values are easier on your CPU but also easier to skip encounters with. Small values make new monsters act very quickly upon spotting you.
User avatar
Josh771
formerly known as SidDoyle
 
Joined: 03 Apr 2013
Location: Elsewhere.
Discord: josh771#7771

Previous

Return to Gameplay Mods

Who is online

Users browsing this forum: Brohnesorge and 11 guests