Jump to content

Charon117

Sacred Game Modder
  • Posts

    325
  • Joined

  • Last visited

  • Days Won

    3

Posts posted by Charon117

  1. 1 hour ago, dimitrius154 said:

    The Addendum contains a custom animation.txt, that should not be overwritten, unless the prospective modder knows, what he's doing. ["itemType"] is worthless, it's not working. ["base"] is a model path mask.

    If ["itemType"] is worthless, what identifer does the file use than ? It has to be the ["itemType"].

     

    Edit: I looked at your file and it looks exactly like the vanilla one, you just added and changed different ["itemType"].

  2. I would ask for modding and technical input on these file(s):

    (0) Wont get added to a mod
    (1) Will get added but can be overwritten
    (2) There is a wish for modmergeable file
       if (2) than please clarify things you want me to know.

    • animation.txt
    • collision.txt
    • Eliza.txt
    • environment.txt

    Edt: Questions about animation.txt.

    • ["itemType"] and ["base"]  are unique identifiers of AnimInfo ?
    • The easiest solution would be to swap out whole entries based on ["itemType"], the more complex one would be to make every single subsection mergeable as well.

    Thank you for your help.

  3. 20 minutes ago, Flix said:

    - Class quest "In the Badlands": Shirka Alana regains her fighting gear and is elite-class. Her final dialogue has her throwing her lot in with the Inquisitor whole-heartedly. It makes sense she would use her Inquisition gear for the fight, and not her civilian clothes.

    Dont make me restart another run :).

  4. Here is the code snippet for dimitrius request of adding modmergeable code identifier. Language is C++.

    /*Now its getting crazy. We are supporting non specified code identifiers which will have to be linked in the base game dll.Update:Since identifers inside of "local subfam..." arent unique this is now part of the main MergeFileA procedure*/
    
    if(FileNameA == "balance.txt"){
    
    std::vector<std::pair<std::string, std::string>> VFileACodeSegmentsDelimeter;
    
    std::string arr[] = {"local subfamSlots =", "local subfamDroplists =", "local shrinkheadMinionMap ="};
    
    std::string arr2[] = {"mgr.loadSubfamSlots(subfamSlots)", "mgr.loadSubfamDroplists(subfamDroplists)", "mgr.loadShrinkheadMinionMap(shrinkheadMinionMap)"};
    
    int n = sizeof(arr)/sizeof(arr[0]);
    
    for(int I = 0;I < n; ++I){
    
    VFileACodeSegmentsDelimeter.push_back(std::make_pair(arr[I],arr2[I]));}
    
    
    
    std::vector<std::pair<std::string,std::string>>::iterator iVAS = VFileACodeSegmentsDelimeter.begin();
    
    unsigned long long iVAS2 = 0;
    
    std::vector<std::string>::iterator itASUDelimeter;
    
    std::vector<std::string>::iterator itASLDelimeter;
    
    std::vector<std::string>::iterator iVAS3;
    
    unsigned long long iVAS4 = 0;
    
    std::string SCheck;
    
    unsigned long long Sfirst;
    
    unsigned long long Slast;
    
    std::string SCheck2;
    
    std::vector<std::string>::iterator iVAS5;
    
    std::vector<std::string>::iterator iVAS6;
    
    std::vector<std::string>::iterator iVAS7;
    
    
    
    while(iVAS != VFileACodeSegmentsDelimeter.end()){
    
    itASUDelimeter = std::find_if(VFileA.begin(), VFileA.end(), [&VFileACodeSegmentsDelimeter, &iVAS2](const std::string str){return str.find(VFileACodeSegmentsDelimeter[iVAS2].first) !=std::string::npos;});
    
    itASLDelimeter = std::find_if(VFileA.begin(), VFileA.end(), [&VFileACodeSegmentsDelimeter, &iVAS2](const std::string str){return str.find(VFileACodeSegmentsDelimeter[iVAS2].second) !=std::string::npos;});
    
    iVAS3 = itASUDelimeter;
    
    iVAS4 = std::distance(VFileA.begin(), itASUDelimeter);
    
    //std::cout << VFileA[distance(VFileA.begin(), itASLDelimeter)] << std::endl;
    
    //std::cout << VFileA[distance(VFileA.begin(), iVAS3)] << std::endl;
    
    
    
    while(iVAS3 != itASLDelimeter){
    
    if(bool(VFileA[iVAS4].find("SUBFAM_") < 100000)){ //thats ugly, but come up with a better solution
    
    SCheck = VFileA[std::distance(VFileA.begin(), iVAS3)];
    
    Sfirst = SCheck.find_first_of("\"");
    
    Slast = SCheck.find_last_of("\"");
    
    SCheck2 = SCheck.substr(Sfirst + 1,Slast - Sfirst - 1);
    
    
    
    iVAS5 = std::find_if(VFileB.begin(), VFileB.end(), [&VFileACodeSegmentsDelimeter, &iVAS2](const std::string str){return str.find(VFileACodeSegmentsDelimeter[iVAS2].first) !=std::string::npos;});;
    
    iVAS6 = std::find_if(VFileB.begin(), VFileB.end(), [&VFileACodeSegmentsDelimeter, &iVAS2](const std::string str){return str.find(VFileACodeSegmentsDelimeter[iVAS2].second) !=std::string::npos;});
    
    
    
    //std::cout << SCheck2 << std::endl;
    
    //std::cout << VFileA[iVAS4].find("SUBFAM_") << std::endl;
    
    //std::cout << VFileA[distance(VFileA.begin(), iVAS3)] << std::endl;
    
    
    
    if (std::find_if(iVAS5, iVAS6, [&SCheck2](const std::string str){return str.find(SCheck2) != std::string::npos;}) != iVAS6){
    
    iVAS7 = std::find_if(iVAS5, iVAS6, [&SCheck2](const std::string str){return str.find(SCheck2) != std::string::npos;});
    
    std::swap(VFileA[std::distance(VFileA.begin(), iVAS3)], VFileB[std::distance(VFileB.begin(), iVAS7)]);
    
    
    
    std::cout << VFileB[distance(VFileB.begin(), iVAS7)] << std::endl;
    
    //std::cout << SCheck2 << std::endl;
    
    //std::cout << InputDirB << std::endl;
    
    }
    
    else{
    
    VFileB.insert(std::find_if(VFileB.begin(), VFileB.end(), [&VFileACodeSegmentsDelimeter, &iVAS2](const std::string str){return str.find(VFileACodeSegmentsDelimeter[iVAS2].second) != std::string::npos;}) - 1, VFileA[distance(VFileA.begin(), iVAS3)]);
    
    
    
    std::cout << VFileB[distance(VFileB.begin(), iVAS7)] << std::endl;
    
    }
    
    
    
    }
    
    ++iVAS3;
    
    ++iVAS4;
    
    }
    
    
    
    ++iVAS;
    
    ++iVAS2;
    
    }
    
    }

     

     

    and because its nice there is also a video.

     

    • Like! 1
  5. 9 hours ago, Flix said:

    I don't know what your build is that is invulnerable even in Challenge mode yet can't dispatch Crystal Plane enemies with vanilla resistances, but it sounds like he needs to be tuned some.

    Well, I guess I meant more that Scaron dude in the lake thing. No damage, but takes me 2 minutes to kill.

    9 hours ago, Flix said:

    Challenge Mode currently does absolutely nothing to make enemies harder to kill. No extra hp, no extra defense or evade chance, no extra spell resistance, no extra damage mitigation, none of the things that are typical in difficulty increase mods.  Adding a moderate % to armor resistance across the board is entirely reasonable if challenge is in the name of the module.

    Made a quick diff between EE 2.1 and challange mode, and it says you increased the armour.

    normal 2.1 EE/challenge mode.

    Quote

     

    Enemy_armor = {800,900,1000,6000,7200},/Enemy_armor = {1000,4000,6000,8000,10000},

    Enemy_weapondamage = {650,850,1000,3300,3630},/Enemy_weapondamage = {1000,2200,3300,4400,6600},

    Enemy_spelldamage = {500,800,1000,3500,3850},/Enemy_spelldamage = {1000,2200,3300,4400,6600},

     

     

  6. 21 minutes ago, Flix said:

    Enemy resistances are moderately increased across the board.  This was done due to feedback that enemies were more than sufficiently dangerous in Challenge Mode, but not particularly any more difficult to kill for a properly developed character.

    I ... wouldnt say thats a bad thing. I always liked how EE Challenge mod makes the game more difficult in terms of damage, but doesnt change the beefiness of it. How is it interesting to take longer to kill a mob which cant damage you ? The Harbour of the Winged Ones Island with all the beefy mobs which take forever to kill isnt really high up on my pleasure list.

    Just my 2 cents though.

  7. 2 minutes ago, dimitrius154 said:

    Dunno, I'm ever suspicious of anything, but a complete rigid package. The more intermediaries you have, the more room for CTD's and memoy leaks.

    I think at this level it is trusting that windows CopyFile function works correctly.  Yes it could fail, but than you would also have to doubt every Ctrl+C Ctrl+V you make on windows.

    The modmerge system will literally use Windows CopyFile function, which is exactly the same as any other sane installer would use.

  8. 13 minutes ago, dimitrius154 said:

    Given that the entire set of "system" folder files, as well as scripts and localization files from the Addendum have to be originally present for the entirety of fixes to work, I'd say that would have to be the other way around: the custom build has to be created on top of the Addendum.

    The Modmerge system copies all non txt files and overwrites their originals. So if you have a changed dll you just provide it in the correct spot, and it will automatically get copied over.

    This means that no matter what kind of "Sacred 2" build you have, if you apply the modmerging system for a mod you will always get at to your desired destination. Ofcourse it could lead to an unpleasant experience if somebody has a dirty build below which does god knows what. But thats the whole point of the modmerging system, it should be applicable to any build. But it means that as long as the mod author supplies all necessary files it will never "not work", no matter how dirty the build underneath is.

     

    Here is a rough overview:

    Modmerge step 1: copy over all non-txt files and overwrite them if present.
    Modmerge step 2: Modmerge all txt files ( except the ones we specify should only get copied) based on identifiers and code segments.

    Modmerge step 65: Build the modlauncher.

    13 minutes ago, dimitrius154 said:

    I'd say, I would.

    Thank you.

    Can I take it as a gurantee that "SUBFAM_" is the hard identifier I can use ? If not, I will just have to set it as such.

     

    Edit: I just noticed S 2 gets written out as Sacred 2. There is an autobot here. I KNEW IT. COME ON, FIGHT ME.

  9. 43 minutes ago, dimitrius154 said:

    New or name replacement subfamily definitions need to  be present in s2core.dll. Adding new subfamily definitions also requires reworking several functions in s2core and s2logic dlls(weapon type determination, animation group determination, equipability determination).

    I know you speak code, but would you appreciate it if the modmerging system would support making the addendum fully mergeable ?

     

    Or to put it in different words, would anybody appreciate it if they could apply the addendum ontop of their own build ?

  10. 9 hours ago, Flix said:

    It's possible something could be adjusted in the dll's.  However, after testing it I'm not really a fan of decreasing the bonus amount and making it spawn more frequently.  I prefer RpH being a rare-tier and above bonus. I may actually change the text color to yellow in the next EE. It's just cosmetic, but it's nice to have the colors reflect the rarity.

    How about decreasing it to 40%, and dont reinstate jewelry ? Unless you are saying you want a single modifier to completely remove a system in the game ? Nothing says RPH cant be rare, but as it is now its simply too strong, no ? You nerfed the ALLSkill+ as well, so I dont really see why you cant nerf RPH.

  11. 5 hours ago, Flix said:

    I don't believe you can get 100% crit chance. The modifier should stack with diminishing returns.

    Really ? That would make crits incredibly bad. If I have a 1% crit chance + 1% crit chance than the result is 1.01% crit ? I always though crit chances stacked without diminishing returns, just like dmg%. That makes crit% incredible hard to calculate if you dont trust the sigma sign.

    Im still against the idea of increased crit%, I want crits to be more meaningful, not to happen in higher quantity. That goes against the basic design of a critical. It should reward you with a rare moment, not being a damage booster in disguise.

    @Flix So RPH would indeed need another decimal to display. Is Sacred 2 capable of that ?

  12. 1 hour ago, Flix said:

    Chance for Critical Hits and Damage

    I am against an increased Chance for Critical Hits. I think the current % for Critical hits are perfectly balanced. If you increase the chances you risk to get crits every other hit, or even exceed 100% crit chance at the higher levels. What I think it needs is a boost to AdjustCriticalDamageFactor to 2000. If you increase the %critc you risk exactly the same thing as with the increased speed, that you are hitting invisible caps without players even realising it. Make Crits rare ( as they are now ) but hit harder.

    1 hour ago, Flix said:

    Check out Caledor's Balance Mod thread

    Read it long ago.

    1 hour ago, Flix said:

    In short, rather than boosting the single channel Damage +% modifiers, I reduced the all channel Damage +% to be about 1/2 the values of the single elements.

    Does this include the blacksmith ones ?

  13. @Androdion the process you are describing is called discovery in games, and its a very important part. I also think that we shouldnt overbalance the game. Why ? If we would balance out every modifier to be of equal worth, than no player would have an epiphany of how valuable something is. The more we balance, the more we remove the discovery process of the player, because we pre-chew everything in the game and the player never needs to discover something important ( because everything would be equally important in the game - thanks to our balancing). So while I think 30% is the perfect balance point for RPH, nothing says it needs to be perfectly balanced. We could move it up to 40% and the player would have a nice discovery process of how good the RPH modifier really is.

    @FlixNow that I know you can weave magic, can you tell me where I could find the +elemental dmg%(fire,arcane,ice,posion) on rings and amulets. I always felt like they were underused, because for every +eDmg% there was an equivalent of +all Dmg% modifier which just dropped more rarely. A little boost to those rings would do good. I think something of +20% - +40%.

  14. @Androdion Take this to your heart.

    The Reality is, a broken game can still be fun,
    while a perfectly balanced game might not even be touched.

    With this in mind the goal of ESP is not going to be to make a perfectly balanced game. In fact, if people want to have a nice experience in vanilla they usually implement certain self-regualting rules on their build. I think these changes dont want to take away the unique place and game changing element a modifier has, but balance it so that other modifiers can still shine under it. Even at 30% RPH is still a complete game changing modifier, but now you can actually use it and not make 60% of the game irrelevant. If you followed the discussion between me and Flix so far you will see that the ultimate goal result of it will be that rings and talisman at 20% will be able to spawn again - and with it introducing a lost variaty which was there before.

    48 minutes ago, Androdion said:

     Another one is %LL. Once you get to Platinum every boss will die in few hits with it, and if you don't have it you'd better have a really solid build!

    One of the other things I would like to do would be to remove the Life Leach component of LL%. That is, its still |Dmg%|, but without any healing effect. Sacred 2 revolves around 2 parts. The first is to deal damage, and the second one is to be able to sustain damage. Having both aspects covered hard in one modifier takes away a lot of content, which could otherwise take its place. I think |Dmg%| is a great idea.

    48 minutes ago, Androdion said:

    I think the fun part about broken modifiers in Sacred 2 is that you can make weird builds that shouldn't really work and make then work.

    Yes, I used to think exactly like you. But consider this. In all my time in Sacred 2 I never seen more than 25% of the map. But with EE SuperSpawn Challenge mod I actually cant go rush anything anymore. Every area for me is locked down by its respective boss, and I am forced to explore all the possibilities Sacred 2 has to offer in order to make it. Level 76 and I still havent made it to the Seraphim Island. My map looks totally different now, 90% of accessible area has been visisted at least once, and I write down loot tables for mobs ( if anybody is interested in that, give me a call ). Due to the challenge option I experience the 75% of content I didnt need to touch. And with the added challenge I would like to get a balanced game, so that one modifier doesnt take away what Flixs mod has to offer. You will see all CA in a complete different light than before.

     

    45 minutes ago, Flix said:

    It could be changed to look something this:

    No clue how you figured out that thats the bonus, but I guess you looked up the ID.

    You took 1/3%, but I think 30% is better, especially when you allow rings and amuletts too. I will immediatelly change it to this:

    newBonus = {
    --  name = "sb_off_energyleech_whit",
      rating = 23,
      basedonskill = "SKILL_INVALID",
      type = "BONUS_ENERGYLEECH_WHIT",
      spez = "",
      spez2 = "",
      usagebits = 65535,
      minconstraints = {10,5,0},
      difficultyvaluerange0 = {0,8,38},
      difficultyvaluerange1 = {1,10,50},
      difficultyvaluerange2 = {2,13,62},
      difficultyvaluerange3 = {3,15,75},
      difficultyvaluerange4 = {4,18,90},
    }
    mgr.createBonus(665, newBonus);

    Offtopic: You could make the background a bit brighter for <>. Edit: Nvm, the code section looks fine, guess the quote one could use some love.

    Ontopic: That should immediately make for a better game. Pin me the code when you got the jewels fixed. Please.

     

    40 minutes ago, Androdion said:

    Usually the first time RPH appears on a ring it's 0.2 seconds, so wouldn't the 0.06 value be turned into 0.1 by default due to approximation? And I guess so, if it becomes too rare and too small of a bonus then being present or not may be the same thing in practical terms.

    Im pretty sure Sacred 2 takes more than 1 decimal, but there could be a display discrepancy. Anyway, we will need wait for Flix to implement the jewels again and than look at the tooltip.

    Also 0.06 RPH ring so soooooooooooooooooooo well balanced.

  15. 38 minutes ago, Androdion said:

    RPH is indeed broken, but in that respect so is +All Skills.

    Not in Flixs EE. He nerfed them so hard. I stil have a talisman with all skill+1 and a ring +2 at level 76 in my build though, so I have to say he balanced them pretty good if I still keep using them.

    Nothing saying Flix cant integrate a nice rebalance of RPH in EE. Even at 30% they are still op enough that people will use them.

    41 minutes ago, Androdion said:

    Eh, I fear this may devolve again into a "what you should and shouldn't do with your game" debate. You know, the "twinked vs untwinked toon" dilema. I guess if we look at the game from a certain perspective much of it is broken from birth, but then again that much works too so I'd just say that each person will have its opinion on the matter.

    Not in the slightest. If Flix doesnt implement it into EE I will implement it into ESP. But for now the modmerging system takes all my attention. Im interested in debate though, and if players have the same view on the topic as I have.

  16. 29 minutes ago, Flix said:

    I've made it only spawn on rare + tier items in EE and D2F.  It could be made even more rare, perhaps transformed into a gold mod that only spawns on unique, legendaries, or as set bonuses.

    I always thought about this modifier, "can this be real?" It lets you bypass the entire system of managing regeneration times that the game is built around.  But I've never heard anyone say it needed to be nerfed.  Maybe we were all too spoiled by it?

    That is exactly my oppinion as well. It bypasses a complete system, the system of balancing rune levels with cooldown times. While having better items and mods is nice as rare loot items, I feel like RPH makes too much of an interesting system obsolete.

    Here is an example: My Inquisitor focuses mainly on the Inquisition aspect, with the other aspects being support structures. Since I dont main Aspect:Supremacy I eat runes into maelstrom until I have an around a 17 second maelstrom. Strong enough to obliterate groups of enemies, but not being able to spam it makes it a fun and strategic choice for WHEN I cast maelstrom. I recently got Ilgard's Judgment with 1.1s RPH, and it completely destroys the system. Where I once had a 17 cd, I now cast Maelstrom and then RM. RM animation speed is around 0.85s so lets say once every second. 3 hits * 1.1 = 3.3 + 0.85 ~ 4 seconds regeneration for every second. Which means I can cast maelstrom after 4 uses of RM, or 4.25 seconds. Its ... nice, but it feels way too "Just use every spell whenever you like". And RPH is stackable without diminishing returns.
    The problem is that since I dont main Lore Supremancy Focus, I cant really effectively get my level up, even though I could eat runes "just" to increase my cd. And that is the problem. RPH makes you do things simply so you get the cd up, just so you feel like you take advantage of RHP. I kinda have that picture in my head when a comic figure gets punched through the roof, and the head sticks out. RPH overshoots way too hard and simplifies the meta too much by  eliminating the rune system.

    I honestly didnt have a problem with RPH being on normal rings and amulets, but I propose a nerf to 30% of each originals value. As with the above example this would mean that the 1.1 RPH would be a 0.33 one. With RM casting 3 projectiles this means that for every passing second, an additional second of cd gets deducted, making me able to cast my 17s cd maelstrom in 50% less time, so 8.5s cd, which is still an incredible increase for "just" one mod. If rings and amulets get their PRH back ( I think they should ), we can talk about maybe 20% - 30% of its original value. Maybe 30% for uniques, sets and legendaries and 20% for talisman, rings and other normal items. 30% of its original value is still incredibly good, given that melee chars can calculate the cd a lot better due to their attack hits being instant, than my ranged inquisitor.

    I just hope this doesnt require somebody to change every single item.

  17. 2 minutes ago, Flix said:

    I'm assuming you have learned the Dual Wield skill prior to attempting to equip two staves?

    Nope. You are saying I have to skill dual wield, in order to dual wield magic staffs ? That is different from melee weapons which dont need the skill to dual wield.

     

    Well than I have to apologise to @Androdion it seems like I have demonstrated my lack of knowledge again.

×
×
  • Create New...
Please Sign In or Sign Up