I have published this mod for the PC through the Creation Kit. It should appear under the mods menu when you launch the game (same as Xbox)....

PC Release

I have published this mod for the PC through the Creation Kit. It should appear under the mods menu when you launch the game (same as Xbox). I'm in the process of adding links to the PC version of the mod and will keep both updated as changes are made.

Zombie Walkers (PC)

I guess news of PS4 mod support being dropped by Bethesda got me thinking about platforms for this mod. If PlayStation 4 support ever returns, I'll publish to that platform as well.



0 comments:

Working on PS4 Mod Support Bethesda has been working to bring mods to PS4 for months now. During that process, I was deploying and updatin...

Farewell to PS4 Mods

Working on PS4 Mod Support

Bethesda has been working to bring mods to PS4 for months now. During that process, I was deploying and updating my Zombie Walkers mod so it would be ready and had a fair amount of favorites with comments from users waiting to try it out.

Sometime later I published my Ambush Replacements extension and noticed a 24-hour waiting period was in effect for PS4 mods before I could publish the mod. Apparently Sony wanted to institute a review process and Bethesda was trying to accommodate them (Xbox doesn't have any review and you can publish anytime).

Announcement from Bethesda

On September 9th, Bethesda released a post stating that mod support for PS4 was being put on hold.
"Sony has informed us they will not approve user mods the way they should work: where users can do anything they want for either Fallout 4 or Skyrim Special Edition."

PS4 Mods Deleted

On September 13th, I received a couple email notifications that my PS4 mods have been deleted by users Famo and Dinasaur. I checked the website around lunch time (EST) and the number of PS4 mods had dropped to around 400. After checking this evening, the option for PS4 has been completely removed from the platform dropdown.

9/13/16 - no option for "Playstation 4" anymore on Platform dropdown.

Future?

My impression is that Sony is worried about modders significantly hurting the user experience because I'm not sure how much further you can go from corrupting save files or crashing the game? Hopefully Bethesda and Sony can work this out and bring mods to the PS4, but it certainly doesn't look good right now. 


0 comments:

Zombie with zero health still alive and well because the head has full health. Aim for the head! When you find yourself fighting zomb...

Headshots Only

Zombie with zero health still alive and well because the head has full health.

Aim for the head!

When you find yourself fighting zombies, the first rule you learn is aim for the head. Ever since the beginning of creating the Zombie Walkers mod I've wanted to create a headshots only mode. It just seems like the right way to play any zombies game. Finally, I've found an implementation I'm happy with.

Deferred Kill

Fallout 4 has built in functions for creating a deferred kill situation where an actor still takes damage but does not actually die until "allowed" to:
  • StartDeferredKill - Puts the actor into a Deferred Kill state. In this state, the actor can take damage but will not die.
  • EndDeferredKill - Removes the actor from a Deferred Kill state. If the actor's health went below zero or the actor was killed for any other reason while in the Deferred Kill state, the actor will die when this is called.
  • Kill(Actor akKiller = None) - Kills this actor with the passed-in actor being the culprit.
The above is tailor made for keeping zombies alive until their head is destroyed. Basically, you call StartDeferredKill on init and then wait to call EndDeferredKill until the head health is zero. To be extra sure I actually check if they are dead after calling EndDeferredKill and if not actually kill them.

Checking Head Health

Checking head health is actually pretty straightforward. Actors have several properties called actor values that you can check with a simple function:
Since the function takes an ActorValue object, you need to know what object corresponds to the condition of the head. In my script I created a property called HeadCondition and then used the property view to browse available options. After some experimentation I could see that PerceptionCondition was the right actor value to check and ranged from 100 (perfect health) to 0 (crippled/dismembered).

Putting it all together

Here's a sample of what the script might look like (note that I haven't tested this one as I pulled the relevant pieces out of a larger script):

  ActorValue Property HeadCondition Auto Const Mandatory
  GlobalVariable Property HeadshotsOnly Auto Const Mandatory

  Event OnInit()
    ZombieActor = self.GetActorReference()

    ; Headshots Only mode - start deferred kill
    If( HeadshotsOnly.GetValue() == 1 )
      ZombieActor.StartDeferredKill()
    EndIf
  EndEvent  

  Event OnHit(ObjectReference akTarget, ObjectReference akAggressor, Form akSource, \
            Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, \
            bool abBashAttack, bool abHitBlocked, string apMaterial)
    ; check condition of head
    If( ZombieActor.GetValue(HeadCondition) <= 0 )
      ; zombie's head is destroyed, end deferred kill
      ZombieActor.EndDeferredKill()

      ; now, make sure zombie dies
      If( !ZombieActor.IsDead() )
        ZombieActor.Kill()
      EndIf
    EndIf
  EndEvent

Why are you so excited about this?

First, this implements a feature I've been wanting from the beginning. More importantly, it does it in a way that is totally independent of Body Part Data configuration. Torso and Limb damage values/health can be set to whatever (and maybe eventually made configurable) and the zombies will still only die when their heads are destroyed.

I may revisit Body Part Data now that this mode exists to make crippling a little easier. I had changed damage on limbs to 25% and set the health very low but the crippling rate still never seemed to match the default settings. The only downside of changing the limb damage values is it'll make zombies a lot easier to kill if anyone turns off headshots only mode. Then again, who would do that?

3 comments:

What's the problem? While melee vs zombies isn't always a good idea, it is sometimes necessary. Some masochistic players (myself i...

Melee Enhancements

What's the problem?

While melee vs zombies isn't always a good idea, it is sometimes necessary. Some masochistic players (myself included) play with extra hardcore mods that reduce ammo and increase ammo weight among other detriments. Therefore, being able to pick up a baseball bat to bludgeon zombies make survival easier with ammo at a premium.

The big issue with melee in Fallout 4 as it relates to Zombie Walkers is that it is difficult to target the head. If you are using VATS then it is impossible as you can only target the enemy generally and the hits location is seemingly random. Outside of VATS, where I usually play, it is still difficult to target the head as the swing trajectory often clips something else instead like one of the arms or upper torso.

Attempting to make melee feasible

The first thing I wanted to do was increase damage and stagger zombies take. Zombies stagger others when they strike with melee, so it only seemed fair it should work both ways.

Looking at the game files it became apparent that these are achievable via perks. I already have a hidden quest with aliases to "nearby zombies", so I updated the script attached to said zombies to add a hidden perk called ZombiePerk to them. Once added, I could then configure the perk as needed to apply various effects.

Hidden ZombiePerk added to "nearby zombies" via hidden quest alias
Perks can be selectable and usable by the player or given to any other Actor in the game. The sections at the top of the screen above area largely for player perks. The Perk Entries section is where the effects of the perk are defined.

Perk Entry for ZombiePerk to modify incoming limb damage (melee only)
Perk Entries are built in and selectable via the drop downs on the right. Each allows to change the values of things like damage in different ways (multiple/add/etc.). The Conditions section on the left appears to be slightly different for different entry points. For example, Mod Incoming Limb Damage allows you to specify Attacker Weapon conditions but this section is absent for Mod Incoming Stagger.

Adding Knockdown

Ok, so I've increased melee damage and stagger but is that enough? If I hit a zombie with a power attack shouldn't the clumsy shamblers fall down once in awhile from the force? I thought so too.

I tried looking for entry points in perks to apply knockdown, but was unable to find one that allowed me to specify Attacker Weapon. I didn't want to suddenly add knockdown chances to guns, so I opted to script it instead using the script attached to the hidden quest alias (same one that adds the ZombiePerk).

The magical function for knockdown in the Creation Kit is called PushActorAway. If you are playing on PC, then this is also available via the console and can result in lots of fun and frivolity. Try "pushactoraway  -id- 100" for example. I think this function is how the world series baseball bat works.

In my case, I used values much lower at apply the knockdown. A normal attack produces a knockdown with force equal to 1 which basically means the zombie falls where they are standing. If the attack is a power or sneak attack, then I increase the force by adding 1 to add a bit of kick.

The knockdown applies the ragdoll effect similar to an explosion going off. Once the zombie hits the ground, it resets slightly and then starts the get up animation. The entire time you can continue to beat them senseless while they are on the ground.


0 comments:

Using onHit event handler attached via quest alias to display player damage. Much of what I want to do with the Zombie Walkers mod invol...

Dynamic Script Attachment

Using onHit event handler attached via quest alias to display player damage.
Much of what I want to do with the Zombie Walkers mod involves scripting. Some of the scripting needs to happen when things are hit or killed which involves attaching scripts to Actors. Unfortunately, this isn't feasible or possible to directly attach scripts for the following reasons:
  • attaching scripts to ALL humans would involve modifying a whole bunch of Actors in the CK (very very time consuming)
  • attaching scripts to leveled list actors (like the Feral Ghouls) is NOT possible. The section is literally grayed out in the tool and a known limitation of the Creation Kit
  • each Actor updated in the CK adds to the risk that a mod will conflict with others (and increases the mod size)
Fortunately, there are ways to dynamically attach scripts to Actors. :)

Magic Effects

The first involves applying a magic effect to an Actor. A magic effect is essentially a script that runs to do something to an actor and you can create your own custom types.

For example, early on in the mod I figured out that you can attach a spell to the unarmed feral ghoul attack. Spells can apply a custom magic effect to register for events like hit or death and respond. In my case, I used this approach to monitor an NPC for hit events and then when they died resurrect them as a zombie.

Unfortunately, you need to apply the magic effect in some fashion for this to work. There's no easy way to just apply a magic effect to all actor types. For my NPC resurrection, the effect is applied when an NPC is hit by a zombie (which makes sense for my mod), but what if we wanted to resurrect NPCs Walking Dead style where a previous scratch/bite is not required?

Hidden Quest Aliases

Another, more flexible approach to dynamically attaching scripts to actors is via a hidden quest. Quests can be created that are never visible to the player and have pretty advanced functionality associated with them.

One such piece of functionality has to do with quest aliases. Aliases are basically references to objects in the game world that dynamically "bind" to a quest through a set of rules. When the quest begins, the first thing it does is bind all it's quest aliases. If any quest aliases are marked as required and cannot be bound for some reason, then the quest will fail to start.

ReferenceAlias for Zombie closest to the Payer that binds ZombieScript to the Zombie
Quest aliases are defined in the Creation Kit using the UI above and have different options like specifying a Unique Actor (like the Player) or Find Matching Reference which searches the area for a match closest to some reference point. Once an alias is bound/filled, any scripts you have defined in the Papyrus Scripts section are bound to that reference and can be used to register for events on the Actor.

You can define multiple aliases "Closest To" Player and each will bind to a different Zombie as long as the "Allow Reuse in Quest" checkbox is NOT checked. Each alias is unique, so once the closest Zombie is bound, the next alias searching for closest will select the next closest, and so on.

Current uses in Zombie Walkers

NPC Resurrection is using the Magic Effect to resurrect NPCs when they die by monitoring the onHit event.

Sleep Interruption is using the Quest Alias on the Player to register for sleep events to randomly trigger a settlement attack or spawn zombies nearby and wake up the player early.

The Zombie Walkers Holotape is automatically added via the hidden quest initialization script. It uses a timer to check if the player has received the pipboy (from the vault 111 quest) before assigning since the Player inventory may reset before then.

Possible Future uses in Zombie Walkers

  • update NPC Resurrection by adding a Walking Dead style mode that resurrects NPCs regardless of how they died by registering for onDeath.
  • enhance melee using on onHit event handler to possible do more damage and stagger/knockdown?
  • add optional headshots only mode where zombies respawn if they die and their head was not crippled/dismembered.
  • add configuration options for various things like zombie damage resistance
I'm sure plenty more options will reveal themselves in the future, but I wanted to give a flavor of the types of things that these approaches enable for the Zombie Walkers mod.

References

For the quest alias magic, I found some excellent resources that basically steered me in this direction so I wanted to list a couple of them here.
Note: some functions references in the articles above like RegisterForUpdate and RegisterForSingleUpdate are not present anymore in the CK and have been replaced in with Timers.

0 comments:

Pages (8)1234567 »