Sorry about derailing your thread
We'll try to keep it to small suggestions in there, instead of overhauls.
selective monster spawning per dungeon or category of dungeon
- Ralzar
- Posts: 2211
- Joined: Mon Oct 07, 2019 4:11 pm
- Location: Norway
- BadLuckBurt
- Posts: 948
- Joined: Sun Nov 05, 2017 8:30 pm
Re: Roleplay & Realism mod pack
Only if you pump up the volume on it's scream as well
I don't know how easy it is to override the part of DFU that determines what types of monsters spawn in the dungeon types but that could be a way to at least stop bears from hanging out with zombies etc. The mixing never really bothered me but you guys do have a point.
DFU on UESP: https://en.uesp.net/w/index.php?title=T ... fall_Unity
DFU Nexus Mods: https://www.nexusmods.com/daggerfallunity
My github repositories with mostly DFU related stuff: https://github.com/BadLuckBurt
.
DFU Nexus Mods: https://www.nexusmods.com/daggerfallunity
My github repositories with mostly DFU related stuff: https://github.com/BadLuckBurt
.
-
- Posts: 8
- Joined: Tue Oct 22, 2019 9:53 pm
Re: selective monster spawning per dungeon or category of dungeon
Thank you for informing us. Because I am not very knowledgable about the limits of coding, I did not realize my suggestion crossed such a threshold. It simply seemed to fit the roleplay/realism category.Hazelnut wrote: ↑Thu Nov 07, 2019 1:56 pm Guys, I split this out from the discussion thread about my Roleplay and Realism mod as it has nothing to do with the contents of the mod itself. This kind of change is out of the scope in my eyes since it's a more fundamental gameplay change to Daggerfall, rather than a tweak or enhancement. So here it has it's own thread and hopefully will get implemented and developed by someone.
- pango
- Posts: 3358
- Joined: Wed Jul 18, 2018 6:14 pm
- Location: France
- Contact:
Re: selective monster spawning per dungeon or category of dungeon
If the goal is just to change monsters spawning (not add dungeon types or anything more fancy), then the spawn tables are public and not readonly, so I guess a mod could simply modify this table:
https://github.com/Interkarma/daggerfal ... ers.cs#L28
https://github.com/Interkarma/daggerfal ... ers.cs#L28
Mastodon: @pango@fosstodon.org
When a measure becomes a target, it ceases to be a good measure.
-- Charles Goodhart
When a measure becomes a target, it ceases to be a good measure.
-- Charles Goodhart
- Jay_H
- Posts: 4070
- Joined: Tue Aug 25, 2015 1:54 am
- Contact:
Re: selective monster spawning per dungeon or category of dungeon
Heck yeah. That's a very simple mod in the making. Who wants to take it up?
- Ralzar
- Posts: 2211
- Joined: Mon Oct 07, 2019 4:11 pm
- Location: Norway
Re: selective monster spawning per dungeon or category of dungeon
Wow... that file is surprisingly easy to edit... it’s just some tables, a diceroll and som basic if/else logic? Now I just have to figure out how to make a mod
Edit: And it contains the logic for level scaling in dungeons? This could be used as the fundamental part of a mod for removing or adjusting level scaling.
Edit: And it contains the logic for level scaling in dungeons? This could be used as the fundamental part of a mod for removing or adjusting level scaling.
- pango
- Posts: 3358
- Joined: Wed Jul 18, 2018 6:14 pm
- Location: France
- Contact:
Re: selective monster spawning per dungeon or category of dungeon
That's where a code editor will help you find from where data and methods are being used, and recreate the call tree...
RandomEncounters.ChooseRandomEnemy() is only called from PlayerEntity.IntermittentEnemySpawn(), so it seems to be only used for enemies randomly spawning, in dungeons or otherwise.
But EncounterTables are also used from RDBLayout, where initial dungeon enemies are selected:
Both DaggerfallDungeon.LayoutDungeon() and DaggerfallDungeon.LayoutOrsinium() call RDBLayout.AddRandomEnemies(), that either calls RDBLayour.ChooseRandomEnemyType() and RDBLayout.AddRandomRDBEnemyClassic(), or AddRandomRDBEnemy() (depending on whether player selected Alternate Random Enemies option), and that's where the rest of enemies leveling happens.
I'm not sure how humans level is adjusted to yours, I haven't found yet where it's done...
RandomEncounters.ChooseRandomEnemy() is only called from PlayerEntity.IntermittentEnemySpawn(), so it seems to be only used for enemies randomly spawning, in dungeons or otherwise.
But EncounterTables are also used from RDBLayout, where initial dungeon enemies are selected:
Both DaggerfallDungeon.LayoutDungeon() and DaggerfallDungeon.LayoutOrsinium() call RDBLayout.AddRandomEnemies(), that either calls RDBLayour.ChooseRandomEnemyType() and RDBLayout.AddRandomRDBEnemyClassic(), or AddRandomRDBEnemy() (depending on whether player selected Alternate Random Enemies option), and that's where the rest of enemies leveling happens.
I'm not sure how humans level is adjusted to yours, I haven't found yet where it's done...
Mastodon: @pango@fosstodon.org
When a measure becomes a target, it ceases to be a good measure.
-- Charles Goodhart
When a measure becomes a target, it ceases to be a good measure.
-- Charles Goodhart
- Ralzar
- Posts: 2211
- Joined: Mon Oct 07, 2019 4:11 pm
- Location: Norway
Re: selective monster spawning per dungeon or category of dungeon
Haha, I spent quite a few hours today trying to figure out how to make a mod that manged to do anything with the .cs files. So far no luck. It works great just editing the files in Unity though It's jut managing to make those kind of changes in the live build that eludes me.
I see most of the tutorials are about asset injections (and a lot of it a bit out of date). I'm currently trying to look at similar mods, like Hazelnuts mod that changes how the language pacification works and compare the DFU script to the mod script. It feels like I'm close, but never quite there.
I see most of the tutorials are about asset injections (and a lot of it a bit out of date). I'm currently trying to look at similar mods, like Hazelnuts mod that changes how the language pacification works and compare the DFU script to the mod script. It feels like I'm close, but never quite there.
- Hazelnut
- Posts: 3016
- Joined: Sat Aug 26, 2017 2:46 pm
- Contact:
Re: selective monster spawning per dungeon or category of dungeon
For changing the code, there needs to be a mod hook for it to use your modified code. Formula methods can be registered, as can many other bits and pieces. Some people use reflection and other methods to hack their code in, and I add the hooks I need when I need them or others request them. For example the UI window factory so replacement UI window classes can be registered.
As Pango pointed out, you can change those tables easily enough because they're unprotected and static. I would stick to that unless you really know what you're doing with c# and the DFU codebase.
As Pango pointed out, you can change those tables easily enough because they're unprotected and static. I would stick to that unless you really know what you're doing with c# and the DFU codebase.
See my mod code for examples of how to change various aspects of DFU: https://github.com/ajrb/dfunity-mods
- Ralzar
- Posts: 2211
- Joined: Mon Oct 07, 2019 4:11 pm
- Location: Norway
Re: selective monster spawning per dungeon or category of dungeon
Hm, so these tables are used by both static dungeon spawns and random spawns? Makes sense.
If I could change these, I could curate the tables to make them more themed. Only problem being that the game only uses a short range of each table based on the playerLevel +/- some boolean logic which assumes lists of length 20.
What I'd really want access to changing would be RandomEncounters.ChooseRandomEnemy() and whatever controls the min and max values for dungeon spawns, which is where I see things get really complicated
What I'd really like is to set other values for minMonsterIndex and maxMonsterIndex, which I am assuming is used to produce monsters from the tables based on playerlevel. Then you could use a wider (or whole) table to produce a wider range of enemies.
Ah well, I'm having fun either way.
If I could change these, I could curate the tables to make them more themed. Only problem being that the game only uses a short range of each table based on the playerLevel +/- some boolean logic which assumes lists of length 20.
What I'd really want access to changing would be RandomEncounters.ChooseRandomEnemy() and whatever controls the min and max values for dungeon spawns, which is where I see things get really complicated
What I'd really like is to set other values for minMonsterIndex and maxMonsterIndex, which I am assuming is used to produce monsters from the tables based on playerlevel. Then you could use a wider (or whole) table to produce a wider range of enemies.
Ah well, I'm having fun either way.