Jump to content

Lindor's Mod for Sacred 2 EE development Thread


Lindor

Beta version yes or no?  

1 member has voted

  1. 1. Should i publish an early test version of my unfinished mod?

    • Yes, I want to participate in playtesting.
      0
    • Generally I'd like a Beta version, but if it's really so unfinished yet, you should work on it a little bit more first.
      1
    • No, don't publish until it's perfect.
      0


Recommended Posts

 

After some first ingame tests, I have some devastating news:

  • The slot generation does not work. At all. Despite it being correctly applied in blueprint.txt. No two slots have the same ID, and there are four different boni scripted for each slot color.

    This is an example:
    newBlueprint = {
        id = 1902,
        name = "set_helve_storm_boot",
        palettebits = "1111111111111111",
        dmgvariation = 0,
        minconstraints = {1, 13, 0},
        lvljump = 10,
        usability = 0,
        allotment_pmfpi = {800, 0, 0, 0, 200},
        uniquename = "",
        specialuseonly = 0,
        bonusgroup0 = {866, 1000, 1, 1, 0},
        bonusgroup1 = {1232, 1857, 1, 1, 0},
        bonusgroup2 = {740, 1857, 1, 1, 0},
        bonusgroup3 = {1056, 1857, 1, 1, 0},
        bonusgroup4 = {869, 1000, 1, 1, 0},
        itemtypes = {6284},
        wearergroups = {"WEARGROUP_HIGHELVE"},
    }
    do mgr.createBlueprint(1902, newBlueprint) end


    866 is silver slot:
    newBonus = {
        name = "",
        rating = 0,
        type = "BONUS_SLOT",
        spez = "SLCAT_SILVER",
        spez2 = "",
        usagebits = 65535,
        minconstraints = {1, 0, 0},
        difficultyvaluerange0 = {0, 0, 0},
        difficultyvaluerange1 = {1, 0, 0},
        difficultyvaluerange2 = {2, 0, 0},
        difficultyvaluerange3 = {3, 0, 0},
        difficultyvaluerange4 = {4, 0, 0},
    }
    do mgr.createBonus(866, newBonus) end

    newBonusgroup = {
        id = 866,
        name = "sl$BONUS_SLOT$SLCAT_SILVERA$$SKILL_INVALID",
        bonuslist = {866},
    }
    do mgr.createBonusgroup(866, newBonusgroup) end


    and 869 is another silver slot:
    newBonus = {
        name = "",
        rating = 0,
        type = "BONUS_SLOT",
        spez = "SLCAT_SILVER",
        spez2 = "",
        usagebits = 65535,
        minconstraints = {1, 0, 0},
        difficultyvaluerange0 = {0, 0, 0},
        difficultyvaluerange1 = {1, 0, 0},
        difficultyvaluerange2 = {2, 0, 0},
        difficultyvaluerange3 = {3, 0, 0},
        difficultyvaluerange4 = {4, 0, 0},
    }
    do mgr.createBonus(869, newBonus) end


    newBonusgroup = {
        id = 869,
        name = "sl$BONUS_SLOT$SLCAT_SILVERB$$SKILL_INVALID",
        bonuslist = {869},
    }
    do mgr.createBonusgroup(869, newBonusgroup) end
     
  • The bonus color generation does not work anymore, suddenly everything is grey except some random damage type dependent boni.
     
  • For some reason, the usagebits generation does not work, and the basedonskill line is completely missing in the bonus generation:
    newBonus = {
        name = "",
        rating = 0,
        type = "BONUS_SKILL",
        spez = "SKILL_ANCIENT_MAGIC_LORE",
        spez2 = "",
        usagebits = 65535,
        minconstraints = {1, 0, 0},
        difficultyvaluerange0 = {0, 18, 117},
        difficultyvaluerange1 = {1, 23, 147},
        difficultyvaluerange2 = {2, 28, 176},
        difficultyvaluerange3 = {3, 33, 206},
        difficultyvaluerange4 = {4, 38, 235},
    }
    do mgr.createBonus(641, newBonus) end

@dimitrius154 @Flix

If you can answer one of these questions:
How does slot generation work in the first place? Are slot boni/bonusgroups hardcoded into the ID?
How does bonus color generation work in the first place? Why is suddenly everything grey for me?

Link to comment
55 minutes ago, dimitrius154 said:

That's not the correct entry ending, should be "mgr.createBlueprint(1902, newBlueprint);".

That does not matter.

1 hour ago, Lindor said:

For some reason, the usagebits generation does not work, and the basedonskill line is completely missing in the bonus generation:

I fixed that one.

 

Still most boni are grey and slot generation does not work.

Link to comment

The color is determined by the bonus tier, same color scheme as for items.  You have 1,0,0, for your minconstraints which would make them all grey.  Not sure about the socket problem.

  • Thanks! 1
Link to comment
30 minutes ago, Flix said:

The color is determined by the bonus tier, same color scheme as for items.  You have 1,0,0, for your minconstraints which would make them all grey.  Not sure about the socket problem.

Thank lord, that is extremely helpful!
I just did 1,0,0 as standard since that is now all handled by the automated bonusgroup generation, I see this was a mistake now.

32 minutes ago, Flix said:

Not sure about the socket problem.

Fixed the sockets by hard-scripting them the way they're scripted in Vanilla. If it weren't sockets but any other bonus, it would have been easy since I intentionally implemented support for hard-coded bonus/bonusgroup IDs. But sockets are the only boni where it doesn't work.
1f926-2642.png

Link to comment
1 hour ago, Lindor said:

But sockets are the only boni where it doesn't work.

Only thing I can think of is that it has something to do with these lines balance.txt:

  ChanceForAdditionalSlots = 450,
  ChanceForSlotToImprove = 200,
  ChanceIncForSlotImprovePerRareLevel = 50,
  ChanceToBecomeSlotItemForBlankItem = 0,
  ChanceToBecomeSlotItemForMagicItem = 0,
  ChanceToBecomeSlotItemForNormalItem = 250,
  ChanceToBecomeSlotItemForUniqueItem = 0,

Maybe the game just needs the "hard-scripted" slots at the code level.

Link to comment
26 minutes ago, Flix said:

Maybe the game just needs the "hard-scripted" slots at the code level.

Yes I think so as well. Good that it fixed it, but awkward solution.

 

2 hours ago, Flix said:

The color is determined by the bonus tier, same color scheme as for items.  You have 1,0,0, for your minconstraints which would make them all grey.

It does not seem to work, neither for bonus tier nor for bonusgroup tier. Hier some random entries:

newBlueprint = {
    id = 182,
    name = "recurvebow_rare",
    palettebits = "1111111111111111",
    dmgvariation = 120,
    minconstraints = {1, 9, 0},
    lvljump = 5,
    usability = 0,
    allotment_pmfpi = {1000, 0, 0, 0, 0},
    uniquename = "",
    specialuseonly = 0,
    bonusgroup0 = {2004, 1571, 1, 5, 0},
    bonusgroup1 = {2005, 1571, 1, 8, 0},
    bonusgroup2 = {2005, 1571, 1, 8, 0},
    bonusgroup3 = {750, 1000, 1, 1, 0},
    bonusgroup4 = {857, 1000, 1, 1, 0},
    itemtypes = {13838, 13839, 13840, 13841},
    wearergroups = {"WEARGROUP_DEFAULT"},
}
do mgr.createBlueprint(182, newBlueprint) end

newBonus = {
    name = "",
    rating = 0,
    basedonskill = "SKILL_INVALID",
    type = "BONUS_WEAPONDAMAGE_REL",
    spez = "DMG_ICE",
    spez2 = "SUBFAM_LIFE_UNDEAD",
    usagebits = 65535,
    minconstraints = {1, 13, 0},
    difficultyvaluerange0 = {0, 25, 94},
    difficultyvaluerange1 = {1, 33, 129},
    difficultyvaluerange2 = {2, 40, 165},
    difficultyvaluerange3 = {3, 48, 201},
    difficultyvaluerange4 = {4, 56, 236},
}
do mgr.createBonus(190, newBonus) end

newBonus = {
    name = "",
    rating = 0,
    basedonskill = "SKILL_INVALID",
    type = "BONUS_ARMOR",
    spez = "DMG_PHYS",
    spez2 = "",
    usagebits = 65535,
    minconstraints = {1, 8, 0},
    difficultyvaluerange0 = {0, 5, 85},
    difficultyvaluerange1 = {1, 10, 114},
    difficultyvaluerange2 = {2, 16, 143},
    difficultyvaluerange3 = {3, 21, 172},
    difficultyvaluerange4 = {4, 27, 201},
}
do mgr.createBonus(404, newBonus) end

Still all grey:dntknw:

But what baffles me most is that it works for items, despite having the exact same minconstraints scheme as boni/bonusgroups.

Edited by Lindor
Link to comment

@Flix @dimitrius154

There is an issue which I didn't notice at first because I only tested it with max level characters:

Right after enabling, enemies give no XP anymore. XP is given via the creature-only bonus BONUS_EXPERIENCE, and since the balance is extracted solely from item modifiers (because you cannot trust other values), this bonus will not have a difficultyvaluerange scripted (which was expected). I recommend adding difficultyvaluerange to this bonus in bonusTypeBalance.lua which is the file that is intended to give the modder the ability for global bonus type strength balance adjustments:

do bonusTypeBalance["BONUS_EXPERIENCE"] = {
    difficultyvaluerange0 = {0,20,4020},
    difficultyvaluerange1 = {1,25,5025},
    difficultyvaluerange2 = {2,30,6030},
    difficultyvaluerange3 = {3,40,8040},
    difficultyvaluerange4 = {4,50,10050}
} end

This will 'fix' it. 'Fix' in markers because it is not a bug per se, I have expected stuff like this to happen, but my mod makes it all very easy to reliably adjust everything.
By the way I can say that this will not be 'fixed' in future versions because as I said, one cannot trust non-item-modifier values. It will be a good ritual though for new modders to get used to the new syntax by requiring them to add their own experience balance which is a very easy first task:smile:.

 

However it should be noted that all creatures give the same amount of experience with the current implementation. For that to change it would be necessary to somehow extract a creature "tier", similar to the item tiers, and adjust values automatically. There is the dangerclass ranging from 0 to 10 which I think will serve the purpose. I'm working on it.

 

Again, small quirks like these are expected, but overall the mod gives the modder way more freedom than it causes trouble.

Link to comment

@Flix@dimitrius154

2 hours ago, Lindor said:

However it should be noted that all creatures give the same amount of experience with the current implementation. For that to change it would be necessary to somehow extract a creature "tier", similar to the item tiers, and adjust values automatically. There is the dangerclass ranging from 0 to 10 which I think will serve the purpose. I'm working on it.

Done!:smile:

Link to comment

I have the feeling that usagebits don't work on jewelry bonusgroups for some reason. I'm still getting shadow warrior boni for my seraphim on jewelry, as an example, in spite of the bonus having the correct usagebit.

Link to comment
  • 2 weeks later...

I have taken alook at the starting attributes of our heroes, the new values will be (compared to EE):

image.png.483ef4a39a2837311adedfdee015c3ea.png

As a rule-of-thumb: divide the values in creatures.txt by 40 to get ingame values. Very close but not exactly accurate. The actual values are:

Spoiler

EE:
image.png.456b27631e96c4afbe2162c9293d6553.png

My mod:
image.png.9f123206936ddb233b001102daedcffe.png

A value of 1000 Vitality and 1000 Dexterity does not necessarily mean that they're the same value!

You'll have to multiply these with the difficultyvalueranges of the boni in spells.txt and divide by 1000 to get the actual ingame value. Since there's a min and a max value and we haven't figured out yet how the exact formula applies, you'll just get a min and a max value and know that the actual value is somewhere inbetween.

These are the bonus IDs of the attribures:
image.png.393ac0c4796169c0bee738b7840c996a.png

StrengthStaminaVitalityDexterityInteligenceWillpower

The game always rounds down.

Yellow means that there's no changes besides the Stamina increase,Green means there's changes.

Since stamina has a highly diminishing return, increasing it will have little to no effect on lategame balance but it will somewhat help with early-mid game and make all heroes have comparable earlygame regen times, not too low and not too high.

 

The inquisitor is an Either-melee-or-darkwizard-not-both kind of character. His debuff potential is highly required when going the spells route, but it makes his gameflow on the melee route feel klunky, just for the buffs there's some justification. It doesn't make sense to give him so much dex. On the other hand, he's a highly intelligent, ruthless, manipulating and super highly willpower kinda person lore-wise, the willpower of the inquisition is never to be underestimated!

 

Now for the temple guardian, there are some major changes coming up soon which will explain the changes function-wise and lore-wise. Stay tuned!

:dragonbrother:

Edited by Lindor
Reason: spelling mistake
Link to comment
25 minutes ago, Lindor said:

Hey all, just wanted to let you know that I'm having health issues atm and won't post for a while:bye:

Thanks Lindor for posting, I hope you're going to power through your health, and sending you good vibes friend!

:hugs:

gogo

Link to comment
  • 4 weeks later...
On 8/21/2022 at 8:18 PM, gogoblender said:

Thanks Lindor for posting, I hope you're going to power through your health, and sending you good vibes friend!

:hugs:

gogo

Thx friend, it helped I'm feeling somewhat better currently, at least stable enough to care a little about video games again and thx for advertising my work, I'm feeling so honored!:heart:

  • Appreciation 1
Link to comment
16 hours ago, Lindor said:

Thx friend, it helped I'm feeling somewhat better currently, at least stable enough to care a little about video games again and thx for advertising my work, I'm feeling so honored!:heart:

Bravo on your good health, nothing better!

:hugs:

gogo

Link to comment
  • 1 year later...

Hey folks long time no see :D

I'm still working on it, even if it's incredibly slow. I don't know wether it'll ever be releasable, but I haven't stopped working on it. I have to restore a lot of data that has been lost.

My current branch I'm working on is spells.txt. I still have the originally data from this:

On 6/23/2022 at 2:41 AM, Lindor said:


uohZJBC.jpeg
The FX glow periodically. The FX are actually the Scorpion Shield, which means the Scorpion Boss now looks the same!

And I have improved the looks of it, taking some inspiration from the lava shader. I think it's Perlin Noise or smth like that they used, I have borrowed it for the glow animation which I think made it look a lot better. I can maybe upload some screenshots later.

EDIT:

Spoiler

FX_FEUERHAUT_NEW.thumb.jpg.03f7705e978fd71bbfc1e86826a4735b.jpg

But I don't like the lack of particles (flames), so I'm currently in search for FX:

Currently I'm searching for something FXTYPE_SC_BURNINGDEAD-like, which unfortunately only seems to work in questscripts.txt. Altenatively, I could go with something like FX_DM_EWIGESFEUER, but it lacks any kind of skin FX, just particles.
Also FX_ENTZUENDEN is part of the closer choosing group. Ideally it would be some FX with a shader and at least one connected image file so I can play around with it. If you have suggestions, please go ahead and tell me <3

 

Also my Plans for the chraracters spells in whole have been evolved. The entirety of the High Elves Pyromaniac Aspect will be migrated to the Dragon Mage. At the same time, the high Elf will get a lot of former Dragon Mage spells with a couple of tweaks. My Plans for those two are:

  • High Elf: Took inspiration from the original Dungeon Siege's Magic system
    • Aspect Elemental Magic, as in my previous post
    • Aspect Nature Magic, will focus on natural catastrophes like tornados, meteors, blizzards, earthquakes, lightning storms and such things. Took Inspiration from Age of Mythology's "WRATH OF THE GODS" cheat code.
    • Aspect Elven Magic, more of a supporting, graceful energy and lightning aspect
  • Dragon Mage
    • Aspect Fire Magic, migrated from the High Elf
    • Aspect Mentalism, haven't decided on significant changes yet
    • Aspect Dragon Magic, which will be a summoning aspect for fire elementals, dragons and such things

Also I have decided to finally reveal my old plans for the Temple Guardian, which are quite exciting:

  • Aspect Blaster Combat: I have discovered that the temple guardian's battery projectile can be assigned to a Combat Art. It makes the mod non-backwards-compatible with legacy characters, but it is possible. The first aspect will be focusing purely around the battery Projectile. He will also be not able to wield any other weapons but Energy Pistols, making him the double pistol cyber cowboy. Interestingly, if you don't wear a pistol, you can completely ignore the battery projectile's regtime, but if you decide to go double pistol action, you'll have to keep an eye on it.
  • Second Aspect no major changes
  • Final Aspect: Two possibilities:
    • My first plan was to give him a buff with major damage against T-Creatures, making the primary goal of this aspect not to stack lots of damage but to get to a high mutation rate. However that's difficult to apply when you think about bosses. Some can't be mutated without additional work, I'd have to script additional questscripts for each boss quest, and also the damage needs to be balanced so that T-Bosses don't become easy snacks.
    • My second Plan was to make it a pure summoning different kinds of Fen Fires aspect. However I'd have to first figure out how to create multiple differently colorized fen fires in the same game in the first place. Possible, but hard to do.

Also I'm still not entirely sure on how to make the Inquisitors Aspects balanced.

----------

I can announce that the item and item boni system has been completely turned upside down. There are major changes coming.

  • The majority of the sets will be removed, focusing only on the three aspect sets for each hero. The items however are not lost, there is an automatically generated item system going on, making heavy use of my Blueprint.txt Function overhaul which is available here in the download section, my by far biggest project so far. You will see the models and textures generating as unique or legendary items.
  • Also I have decided to make runes buyable.
  • And there will be a "set" of jewelry with fixed boni focusing around one damage channel, rings being offensive and amulets defensive in nature, which will be buyable. I'm thinking about trying to implement exceptionally rare unique offers where a unique and/or legendary version of those jewelry.
  • Last but not least, I'm trying to equalize the drop rate for all wearable items with fixed boni.
  • Bonus: I'm maybe thinking about removing fixed item boni from set items. Set boni of course would still be fixed. This way we might see more diverse character builds.

----------

Something I'd really like to do before releasing the mod is acquiring the scills to fiddle with the dlls. There's a tool called Ghidra, originall developed by the NSA I think, but nowadays it's an open source project, which might help. Basically it's a better OllyDBG. But Assembly is hard to do. There are some particular things I have on my to-do-list which require Assembly skills however.

Edited by Lindor
  • zomgod! 1
Link to comment
  • 1 month later...
5 hours ago, Lindor said:

I have broken parts of my arm in an accident and probably won't be as active in the next time.

I'm sorry to hear that. I hope you recover swiftly and completely.

  • Thanks! 1
Link to comment
On 2/18/2024 at 5:17 AM, Lindor said:

I have broken parts of my arm in an accident and probably won't be as active in the next time.

oh nooooo Lindor, broken?  I was lucky to get through early years with no breaks, and everytime I see my Ammamma fall and get bruises or her knee hip incident which I had to get her to hospital for operation for , it always makes makes me nervous and worried for their return.  SEnding you some quality, home - made healing vibes with a touch of heart of Tamil, and some flakes of gogoblender power powder all conjured and cobbled together with a generous dollop of healing sauce... (limited edition, this ones white chocolate flavored :heart: )

Heal good mah fwend!

:hugs:

gogo

  • Thanks! 1
Link to comment

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...
Please Sign In or Sign Up