Jump to content

A21 NPCMod and Addons


xyth

Recommended Posts

On 4/20/2022 at 12:01 AM, sysity said:

Side note to that, seems some of the NPC packs spawn far more frequently than others.  Not all that many NPCs spawning vs the zombies etc. Not seeing an option to change ratios, does that exist somewhere?

This is a very good point and something Addon creators will be given more guidance on as things move forward.
These settings are governed independently by the Addon creators, with the NPCMod acting as base for them to be powered by, but guidance is clearly essential to ensure parity when multiple Addon Packs are installed.

 

While things are being set up and stabilised, it has been a bit of a free for all with one pack setting higher spawn rates than another. This makes it rather futile to combine Addon Packs if one is not going to spawn. Some guidance for Addon Pack creators is just being worked out in order to find an optimal balance. This will be based on a hierarchy of spawn rates to modulate appearances, and one possible candidate is as follows:

 

Default Settings (which can naturally be changed by Server Admin/Host to suit their own game play styles)

 

1. Standard zombies will always have the highest spawn chance out in the Biomes and take priority. Typically 100% chance.

2. Non standard zombies will have the second highest chance to spawn out in the Biomes. Typically 5% to 50% chance.

3. Then comes the NPCMod Addon Packs which should be lower than the lowest non standard zombie. They have a chance of 2.5% to 10%.

 

These are all dependent on the Biome as well.

For example, these are some of the most important Biome spawning zombie groups which the NPC are also added to:

 

All Zombies - The Janitor Zombie is the lowest Vanilla spawner with a 20% chance to appear.

Night Zombies - The Zombie Dog is the lowest Vanilla spawner with a 5% chance to appear.
Snow Zombies - The Feral Lumberjack Zombie has a 10% chance to appear. (There are also some separate game stage considerations for the snow biome)
Wasteland Zombies - All Vanilla spawners have a 100% chance to spawn with some being given even more chance.

Wasteland Night Zombies - All Vanilla spawners have a 100% chance to spawn with some being given even more chance. In addition, spawning frequency is much higher as we all well know if we venture into the Wasteland Biome 'alone' at night.

 

If there are too many NPCs, then the regular zombies will be wiped out too quickly and probability eventually says they will ultimately be replaced by another NPC. This can create a sterile World. But if there are too few NPCs then it will take some time for their numbers to increase. And as you are seeing, if one Addon Pack allows a high spawn chance (compared to other NPCs and zombies) then it can upset the Biomes.

 

It is a delicate balancing act, but it is being addressed.
It will also require a level of compliance from Addon creators to ensure all Addon Packs are given a fair and equal chance to appear in the World by default.

 

If you want to share what you have installed, and what you would like to see, then provide the details and we can advise you on a one setting fits all that can be added to all of the packs you have installed. It may take a little time for you to edit the entitygroups.xml for each but you'll always have those as templates. It will also help us see if the candidate settings are working out in the wild based on your future feedback.

Link to comment
Share on other sites

A new POI for the NPCMod POI pack from WildPig has been uploaded for use.

 

https://github.com/arramus/A20-NPCMod-Prefabs

 

Cursed Manor is a Tier 4 fetch/clear POI populated by the Bandit class. It was made by WildPig in a World during regular gameplay with modded blocks, exported to the Editor, 'renovated' back to Vanilla blocks and then made good for the NPCMod.

 

Here are a few pikkies to showcase.

20220422020959_1.thumb.jpg.e8e0618dc99dda11f3d19e5a8a23cbc1.jpg

 

20220422021344_1.thumb.jpg.dd23ff28d4a164d8cbab39963ada1828.jpg

 

20220422021440_1.thumb.jpg.3861c35f7a37d23a86b81de49130417e.jpg

 

It follows a very scripted path and will offer a decent challenge for both questing and regular looting. Thank you to WildPig for giving permission for the Cursed Manor to be included in the NPCMod POI Pack.

Link to comment
Share on other sites

7 hours ago, xyth said:

Pushed small update that rebaselines the NPCCore's NPC character spawn rate to facilitate standardizing the spawn rate settings of expansion packs.  

Thank you. This allowed a much wider variety of Addon characters to appear in a Quest POI but still allowed the NPCCore's NPC characters to appear, but at a reduced rate. It was decent to see all of the Addon Packs make an appearance.

Link to comment
Share on other sites

So currently we have a trader that if we walk into the area we get spammed with IndexOutofRange errors. It doesn't bring up the F1 menu at all, but we can't jump or do anything in the area.  We are still able to interact with things, just not jump.  When trying to figure out whats going on, i went into god/fly/no colision mode and even then I get bugged out and stuck and can't move within the trader.  The log for the server shows the below error.   We are playing the Wasteland Mod if that is of any import.  Also, is there a way to get a list of IDs for the NPCs in the packs?  We killed a players NPC thinking it was causing the issue when it wasn't and was wanting to respawn it if possible.

 

(Filename: C:/Program Files (x86)/Steam/steamapps/common/7 Days To Die/Mods/0-SCore/Scripts/Entities/EntityAliveSDX.cs Line: 923)

IndexOutOfRangeException: Index was outside the bounds of the array.
  at TraderData.get_TraderInfo () [0x00009] in <cd87b52f55b340409d519927eeec4b44>:0 
  at EntityTrader.get_TraderInfo () [0x00008] in <cd87b52f55b340409d519927eeec4b44>:0 
  at EntityTrader.OnUpdateLive () [0x001fd] in <cd87b52f55b340409d519927eeec4b44>:0 
  at EntityAliveSDX.OnUpdateLive () [0x000fc] in C:\Program Files (x86)\Steam\steamapps\common\7 Days To Die\Mods\0-SCore\Scripts\Entities\EntityAliveSDX.cs:923 
  at EntityAlive.OnUpdateEntity () [0x0001e] in <cd87b52f55b340409d519927eeec4b44>:0 
  at World.TickEntity (Entity e, System.Single _partialTicks) [0x00127] in <cd87b52f55b340409d519927eeec4b44>:0 
  at World.TickEntitiesSlice (System.Int32 count) [0x00037] in <cd87b52f55b340409d519927eeec4b44>:0 
  at World.TickEntitiesFlush () [0x0000c] in <cd87b52f55b340409d519927eeec4b44>:0 
  at GameManager.UpdateTick () [0x00033] in <cd87b52f55b340409d519927eeec4b44>:0 
  at GameManager.gmUpdate () [0x002f4] in <cd87b52f55b340409d519927eeec4b44>:0 
  at GameManager.Update () [0x00000] in <cd87b52f55b340409d519927eeec4b44>:0 

 

Line 923 starts the syntax for this code

 

base.OnUpdateLive();

        // Allow EntityAliveSDX to get buffs from blocks
        if (!isEntityRemote && !SingletonMonoBehaviour<ConnectionManager>.Instance.IsServer)
            UpdateBlockRadiusEffects();

        // No NPC info, don't continue
        if (NPCInfo == null)
            return;

       // if (isQuestGiver)
        {
            // If the Tile Entity Trader isn't set, set it now. Sometimes this fails, and won't allow interaction.
            if (_tileEntityTrader == null)
            {
                _tileEntityTrader = new TileEntityTrader(null);
                _tileEntityTrader.entityId = entityId;
                _tileEntityTrader.TraderData.TraderID = NPCInfo.TraderID;
            }
        }
        if (!this.isEntityRemote)
        {
            if (this.emodel)
            {
                AvatarController avatarController = this.emodel.avatarController;
                if (avatarController)
                {
                    var flag = this.onGround || this.isSwimming || this.bInElevator;
                    if (flag)
                    {
                        this.fallTime = 0f;
                        this.fallThresholdTime = 0f;
                        if (this.bInElevator)
                        {
                            this.fallThresholdTime = 0.6f;
                        }
                    }
                    else
                    {
                        if (this.fallThresholdTime == 0f)
                        {
                            this.fallThresholdTime = 0.1f + this.rand.RandomFloat * 0.3f;
                        }
                        this.fallTime += 0.05f;
                    }
                    var canFall = !this.emodel.IsRagdollActive && this.bodyDamage.CurrentStun == EnumEntityStunType.None && !this.isSwimming && !this.bInElevator && this.jumpState == EntityAlive.JumpState.Off && !this.IsDead();
                    if (this.fallTime <= this.fallThresholdTime)
                    {
                        canFall = false;
                    }
                    avatarController?.SetFallAndGround(canFall, flag);
                }
            }


        }

 

Edited by sysity (see edit history)
Link to comment
Share on other sites

4 minutes ago, ScubaSteve3465 said:

I"ll go ahead and try the update as well because I think that is exactly the problem im having because I also have a lot of addon packs.

This update was primarily for the POI spawning. If the problem you are having is for how they are spawning out in the Biomes, it is probably because the Addon packs all use different spawning rates. Typically, the one with the highest will appear most frequently and the lowest may be incredibly rare, if at all. I'm going to start with Darkstardragon's Addon Packs and make them all spawn at identical rates when they are out in the Biome so they all have a fair chance to appear. The odd one or two, such as the Rocket NPCs, can be lower so they are a rarer exception. For other Addon Pack creators, guidance can be shared on best practices to help keep the Biomes fairly populated but it will require some level of compliance across all packs. We'll just have to see how it goes. On an individual level though, feel free to share what you're using and it will allow us to share a few changes that may balance things out. This comment is a common one for sure and tweaking is going on in the background.

Link to comment
Share on other sites

10 hours ago, sysity said:

So currently we have a trader that if we walk into the area we get spammed with IndexOutofRange errors. It doesn't bring up the F1 menu at all, but we can't jump or do anything in the area.  We are still able to interact with things, just not jump.  When trying to figure out whats going on, i went into god/fly/no colision mode and even then I get bugged out and stuck and can't move within the trader.  The log for the server shows the below error.   We are playing the Wasteland Mod if that is of any import.  Also, is there a way to get a list of IDs for the NPCs in the packs?  We killed a players NPC thinking it was causing the issue when it wasn't and was wanting to respawn it if possible.

 

(Filename: C:/Program Files (x86)/Steam/steamapps/common/7 Days To Die/Mods/0-SCore/Scripts/Entities/EntityAliveSDX.cs Line: 923)

IndexOutOfRangeException: Index was outside the bounds of the array.
  at TraderData.get_TraderInfo () [0x00009] in <cd87b52f55b340409d519927eeec4b44>:0 
  at EntityTrader.get_TraderInfo () [0x00008] in <cd87b52f55b340409d519927eeec4b44>:0 
  at EntityTrader.OnUpdateLive () [0x001fd] in <cd87b52f55b340409d519927eeec4b44>:0 
  at EntityAliveSDX.OnUpdateLive () [0x000fc] in C:\Program Files (x86)\Steam\steamapps\common\7 Days To Die\Mods\0-SCore\Scripts\Entities\EntityAliveSDX.cs:923 
  at EntityAlive.OnUpdateEntity () [0x0001e] in <cd87b52f55b340409d519927eeec4b44>:0 
  at World.TickEntity (Entity e, System.Single _partialTicks) [0x00127] in <cd87b52f55b340409d519927eeec4b44>:0 
  at World.TickEntitiesSlice (System.Int32 count) [0x00037] in <cd87b52f55b340409d519927eeec4b44>:0 
  at World.TickEntitiesFlush () [0x0000c] in <cd87b52f55b340409d519927eeec4b44>:0 
  at GameManager.UpdateTick () [0x00033] in <cd87b52f55b340409d519927eeec4b44>:0 
  at GameManager.gmUpdate () [0x002f4] in <cd87b52f55b340409d519927eeec4b44>:0 
  at GameManager.Update () [0x00000] in <cd87b52f55b340409d519927eeec4b44>:0 

 

Line 923 starts the syntax for this code

 

base.OnUpdateLive();

        // Allow EntityAliveSDX to get buffs from blocks
        if (!isEntityRemote && !SingletonMonoBehaviour<ConnectionManager>.Instance.IsServer)
            UpdateBlockRadiusEffects();

        // No NPC info, don't continue
        if (NPCInfo == null)
            return;

       // if (isQuestGiver)
        {
            // If the Tile Entity Trader isn't set, set it now. Sometimes this fails, and won't allow interaction.
            if (_tileEntityTrader == null)
            {
                _tileEntityTrader = new TileEntityTrader(null);
                _tileEntityTrader.entityId = entityId;
                _tileEntityTrader.TraderData.TraderID = NPCInfo.TraderID;
            }
        }
        if (!this.isEntityRemote)
        {
            if (this.emodel)
            {
                AvatarController avatarController = this.emodel.avatarController;
                if (avatarController)
                {
                    var flag = this.onGround || this.isSwimming || this.bInElevator;
                    if (flag)
                    {
                        this.fallTime = 0f;
                        this.fallThresholdTime = 0f;
                        if (this.bInElevator)
                        {
                            this.fallThresholdTime = 0.6f;
                        }
                    }
                    else
                    {
                        if (this.fallThresholdTime == 0f)
                        {
                            this.fallThresholdTime = 0.1f + this.rand.RandomFloat * 0.3f;
                        }
                        this.fallTime += 0.05f;
                    }
                    var canFall = !this.emodel.IsRagdollActive && this.bodyDamage.CurrentStun == EnumEntityStunType.None && !this.isSwimming && !this.bInElevator && this.jumpState == EntityAlive.JumpState.Off && !this.IsDead();
                    if (this.fallTime <= this.fallThresholdTime)
                    {
                        canFall = false;
                    }
                    avatarController?.SetFallAndGround(canFall, flag);
                }
            }


        }

 

Logged on today and... it's fixed? Not sure how.

Link to comment
Share on other sites

33 minutes ago, sysity said:

Logged on today and... it's fixed? Not sure how.

Spooky. The WL uses the .ddl for Disabling Protection and hard to say if that has rare moments like that.

 

I don't believe spawning in an NPC to replace a lost one will be a long term stable solution. I believe it will eventually disappear after the player logs out and returns. Maybe bringing back one of the Rad Cat Power Armor NPCs from the Big Rocket Trader will make up for the loss.

Link to comment
Share on other sites

Pushed another small update that rebaselines the NPCCore's NPC character spawn rate to facilitate standardizing the spawn rate settings of expansion packs.  Thanks again to Arramus for the edits!

 

Also pushed updates to DarkStar's expansions with arramus's spawn rate edits.

Edited by xyth (see edit history)
Link to comment
Share on other sites

On 4/22/2022 at 12:48 AM, arramus said:

This update was primarily for the POI spawning. If the problem you are having is for how they are spawning out in the Biomes, it is probably because the Addon packs all use different spawning rates. Typically, the one with the highest will appear most frequently and the lowest may be incredibly rare, if at all. I'm going to start with Darkstardragon's Addon Packs and make them all spawn at identical rates when they are out in the Biome so they all have a fair chance to appear. The odd one or two, such as the Rocket NPCs, can be lower so they are a rarer exception. For other Addon Pack creators, guidance can be shared on best practices to help keep the Biomes fairly populated but it will require some level of compliance across all packs. We'll just have to see how it goes. On an individual level though, feel free to share what you're using and it will allow us to share a few changes that may balance things out. This comment is a common one for sure and tweaking is going on in the background.

I uploaded a picture of my mod list so if you have any suggestions or maybe some config edits that I can do that would be awesome because it definitely seems like they are all fighting over which one spawns first/more.

modlist.jpg

Link to comment
Share on other sites

1 hour ago, ScubaSteve3465 said:

I uploaded a picture of my mod list so if you have any suggestions or maybe some config edits that I can do that would be awesome because it definitely seems like they are all fighting over which one spawns first/more.

modlist.jpg

Now that it a very nice assortment of NPCMod Addons and additional community offerings. I expect your server is a lot of fun.

 

I shall send you a bundle by Direct Message with some edited entitygroups.xml files for the NPCMod Addons for the Orcs, RaiderGurlz, and Raiderz, and an alternative for the XNPCCore. This will regulate the spawning of the NPCs.

 

This is what this should achieve. Your zombie spawning will be as follows:

 

- Vanilla Zombies spawn the most.
- NPCMod Addon Packs for Vanilla Zombies will spawn at the same amount as Vanilla Zombies and this is very acceptable because they are similar strength and designed to match Vanilla Zombies.

- enZombies are also setup to spawn at about the same amount as Vanilla Zombies and this is appropriate.

- NPCMod Addon Packs for hostile and friendly NPCS will spawn with the same chance and less that the Vanilla Zombie types.

- Snufkin Zombies will be similar to and less than the NPCMod Addon Packs for hostile and friendly NPCs if you are using the 'lite' version.

 

The spider packs are spawning with the animals and at a low amount so they will be fine and not compete with all of the other zombie packs or types.

I may have forgotten, but I believe the Special Zombies are the glowing ones. If so they are set up to spawn at quite a low rate.

Guppycur's Random Zombie Getter Upper governs their get up time after being knocked down and will have no impact on spawning. That should cover it all.

Link to comment
Share on other sites

Oh yes, I mustn't forget the Survivorz Pack. ^^
Direct Message sent with a link for a bundle to try out.

In addition, the Sleeper Volume Groups for the 2-NPCXSpiderPack-ColonyExpansion was updated to add them to all Game Stages (GS01 - GS800) for the buildings they live in around the towns and cities. Updating to the most recent build just needs the new entitygroups.xml uploaded.

 

https://github.com/arramus/A20-NPCMod/blob/main/2-NPCXSpiderPack-ColonyExpansion.zip

Feel free to share your server IP address if appropriate so we can visit and see how things balance out.

Link to comment
Share on other sites

Awesome didn't actually see the update for the spider expansion so that will help and the special zombies folder in there is the one from the OP, not sure if you thought it was a different mod or not. Really excited to try all these changes in the morning though so I will get back to everyone with the results soon.

 

EDIT: Also the server I have is ran off a spare gaming computer just for hosting and im not too sure how well it would run for people not connected to it directly. I'll actually invite a friend or two into the server tomorrow and see how it does  and if it holds up well then I have no problem sharing the IP with the community. 

 

1-GansSpecialZombies:   https://dev.azure.com/pouellette25/_git/Gans Special Zombies?path=/1-GansSpecialZombies.zip

 

Edited by ScubaSteve3465 (see edit history)
Link to comment
Share on other sites

7 minutes ago, ScubaSteve3465 said:

Awesome didn't actually see the update for the spider expansion so that will help and the special zombies folder in there is the one from the OP, not sure if you thought it was a different mod or not. Really excited to try all these changes in the morning though so I will get back to everyone with the results soon.

 

EDIT: Also the server I have is ran off a spare gaming computer just for hosting and im not too sure how well it would run for people not connected to it directly. I'll actually invite a friend or two into the server tomorrow and see how it does  and if it holds up well then I have no problem sharing the IP with the community. 

 

1-GansSpecialZombies:   https://dev.azure.com/pouellette25/_git/Gans Special Zombies?path=/1-GansSpecialZombies.zip

 

Ahh yes, thanks. That Special Zombies feeds directly into the regular zombies and works perfectly, as do all of the zombie types. I expect you will see a much more diverse Biomes with the collection of Darkstardragon's you have installed.

 

I tested them fully for the NPCMod Prefabs pack and it was a very nice mix up. The feedback we've received has often been much more about wanting to see a mix and this should do it. The other feedback was about easing up on the Rocket Launcher characters and they have been toned down a lot (a quarter chance compared to NPCs and with more packs installed even less).

 

As for your home based server, that's very understandable if the specs are best suited for a few close buds.

Link to comment
Share on other sites

14 hours ago, ScubaSteve3465 said:

I uploaded a picture of my mod list so if you have any suggestions or maybe some config edits that I can do that would be awesome because it definitely seems like they are all fighting over which one spawns first/more.

modlist.jpg

Be very careful loading mods before the 2 cores.   They are designed to be loaded first, as they are the engine for NPCs.   It is very likely they can break any mod loaded before them.

Link to comment
Share on other sites

.16 minor update, edited aggressiveanimalwalking template:   Changed faction to aggressivelargeanimals for default, changed view angle to 360 to improve targeting, and added NPC class to targets.

Link to comment
Share on other sites

3 hours ago, swmeek said:

Not sure if it's a bug but I've noticed these npc soldiers walking around and I can't talk to them like the other npc's . (with the E key)

Also will I have to restart the game for the newest npccore update?

There are two kinds of NPCs. The Hireable kind we can interact with, and a Survivor kind which are getting on with their own thing and we can only cross paths.

 

This is a Survivor Peasant from Darkstardragon's newest NPC Addon Pack for the medieval theme. He's battling a Wasteland Mod mutant hound and pays no attention to players. He will be on his way depending on the outcome.

20220426180508_1.thumb.jpg.8f64cc173e00f673d3751ae51bebe0cb.jpg

 

In the entitygroups.xml we can often see npcPeasant or survivorPeasant or PeasantS type naming to describe what will spawn and these can be removed based on your preference. This allows many more NPCs to appear in a World with lower performance hits on the server/client with a mix of these survivor types thrown in the mix. I like the suspense it adds not always knowing which way the interaction will turn out, especially when I see one of them toting a very heavy weapon.

Link to comment
Share on other sites

Thanks for the info arramus!

When I played that mod before that was one of the main things I hated most was those dogs next to the supermutants especially just starting out.

Since he changed the mod to include a backpack mod (which I don't know what all to remove ) I haven't played it.

Link to comment
Share on other sites

1 hour ago, Clark_ said:

spacer.png

 

can someone explain to me why this would happen

When A20.4 was first released as experimental, this didn't happen. I needed to perform a full reinstall just before A20.4 went stable and I experienced the same warning. Not only did this warning appear, but the start up screen received a lot more introductory warnings about 7D2D being an Alpha build and what to expect. This is unrelated to the NPCMod, and seems to be a general update warning from the developers. Sometimes the Anti Cheat software and the 7D2D build are not 'shaking hands' as their may be a version mismatch. This happened a few months ago and we saw a roll back for 7D2D. All part and parcel of updates where mismatches can sometimes occur.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...