• Please make sure you are familiar with the forum rules. You can find them here: https://forums.tripwireinteractive.com/index.php?threads/forum-rules.2334636/

[Mutator] Modded Specimen Mechanics

Upvote 0
Good job on 2.3.2! Thank you.

But I still have a few issues/suggestions:

1. Bleeding stops when Stalker (instigator) is dead. Icon is still showing on the HUD, but player takes no further damage after killing here. Maybe try replacing bleedState.instigator with ownerCtrllr.Pawn in TakeDamage() when former is none?

2. Bleeding damage isn't scaled by game difficulty.
Rand(n) returns random integer value from 0 to n-1. Rand(1) always returns 0.

3. Poisoning is incompatible with ScrnBalance due to use of copy-pasted code from KFHumanPawn[_Story]. But there is a simpler solution since Story Mode introduced. Just give pawn an inventory item, which can slow him down:
Code:
class SZPoisonInventory extends Inventory;

var float poisonStartTime, maxSpeedPenaltyTime;

simulated function float GetMovementModifierFor(Pawn InPawn)
{
    return fmin((Level.TimeSeconds - poisonStartTime) / maxSpeedPenaltyTime, 1.0);
}

4. Maybe make SZReplicationInfo extend LinkedReplicationInfo and add it to PlayerReplicationInfo.CustomReplicationInfo (for example, like ServerPerks.ClientPerkRepLink does)? It will remove need of DynamicActors() calls to find it.
 
Last edited:
Upvote 0
Good job on 2.3.2! Thank you.

But I still have a few issues/suggestions:

1. Bleeding stops when Stalker (instigator) is dead. Icon is still showing on the HUD, but player takes no further damage after killing here. Maybe try replacing bleedState.instigator with ownerCtrllr.Pawn in TakeDamage() when former is none?

2. Bleeding damage isn't scaled by game difficulty.
Rand(n) returns random integer value from 0 to n-1. Rand(1) always returns 0.

3. Poisoning is incompatible with ScrnBalance due to use of copy-pasted code from KFHumanPawn[_Story]. But there is a simpler solution since Story Mode introduced. Just give pawn an inventory item, which can slow him down:
Code:
class SZPoisonInventory extends Inventory;

var float poisonStartTime, maxSpeedPenaltyTime;

simulated function float GetMovementModifierFor(Pawn InPawn)
{
    return fmin((Level.TimeSeconds - poisonStartTime) / maxSpeedPenaltyTime, 1.0);
}
4. Maybe make SZReplicationInfo extend LinkedReplicationInfo and add it to PlayerReplicationInfo.CustomReplicationInfo (for example, like ServerPerks.ClientPerkRepLink does)? It will remove need of DynamicActors() calls to find it.

1) Huh, I thought I had all the HUD issues fixed

2) Oops, never thought about difficulty when doing the bleed effect. Double oops on the Rand function.

3) Poison is supposed to only affect speed bonuses, which resulted in the copy-pasted code. The inventory modifier will work, I'll have to play with the code to get a similar affect.

4) Yeah, it should be a LinkedReplicationInfo class. It ended up this way as a result from the first time I was trying to setup LinkedReplicationInfo in the linked list.
 
Upvote 0