This step is the same as step 3 from the replacement part. If it is, we have found the addition we'll add, if not subtract the iterated addition's spawn weight from the roll and continue iterating. Iterate all applicable additions and check if the iterated addition's spawn weight is bigger than the roll. For each addition we have to make, roll a value between zero and the total spawn weight of all applicable additions. More on Glorious Vanity's shenanigans in the notes section.Ĭreate a filtered list of applicable additions (similar conditions as in the replacement part). Our good friend Glorious Vanity can randomly make between three and four additions on certain notables. Lethal Pride, Brutal Restraint and Militant Faith Timeless Jewels all make only one addition. Addition works quite similar to replacement:ĭetermine how many additions have to be made. In theory one addition can have multiple stats associated with them, however in practice every addition has only one Stat assigned. An example would be adding the "+5 Devotion" from Militant Faith to passive skills. This is as simple as rolling a random number between the minimum and maximum roll.Īfter part 2, or if we skipped part 2, we make additions to the processed passive skill. Next we check how many stats are associated with the rolled passive skill replacement and roll the stats for each of them. If the roll is below the current iterated applicable passive skill's spawn weight we set this applicable passive skill as our temporary candidate for replacement, however we still iterate through the whole filtered list and replace the temporary candidate if the new roll is lower again. Next we iterate trough all applicable passive skills and roll a number between zero and the total spawn weight of all applicable alternate passive skills. This includes checking if certain properties like the Timeless Jewel's type matches the one attached to the alternate passive skill and so on. We can skip the rest of the steps.įirst we create a filtered list of all applicable alternate passive skills that could potentially replace the processed passive skill. If the processed passive skill is a keystone, we search the replacement keystone in the data sheet using the conqueror and conqueror version inputs. If we came to the conclusion that we have to replace the passive skill this is how it's done: If the processed passive skill is a small normal passive skill (all other small passives skills that aren't small attribute passive skills) we also check the data sheet if the jewel type replaces passive skills of that type. If the processed passive skill is a small attribute passive skill (those that give 10 strength, dexterity or intelligence) we check the data sheet if this jewel type replaces passive skills of that type. The notable replacement spawn weight for the other jewel types is either 0 or 100, which means they never or always replace notables. Currently only Militant Faith uses conditional notable replacements (with a notable replacement spawn weight of 20). If the processed passive skill is a notable we roll a random number between 0 and 100 and check if that number is below the jewel type's notable replacement spawn weight. If the processed passive skill is a keystone we always need to replace it. When a conqueror is replaced, the index stays the same, but the version number is increased.įirst we need to determine if we need to fully replace the original passive skill (Elegant Hubris, Glorious Vanity and in some cases Militant Faith), if we just need to make additions to the original passive skill (Lethal Pride, Brutal Restraint and in some cases Militant Faith) or if we need to do both (looking at you, Glorious Vanity). ² Each Timeless Jewel has a conqueror and each conqueror has a version number attached to them. This means we have to divide the user's input seed by 20 to get the number we need for the calculations. The real seed range is 100 - 8000 which is then multiplied by 20 for displaying purposes. ![]() ![]() Elegant Hubris' maximum seed however is 160 000. ¹ The jewel seed is stored as a 2 byte unsigned integer, which means its maximum value is 2 16 - 1 = 65535. The Timeless Jewel's conqueror and conqueror version² ( conqueror and conqueror_version) The transformed¹ Timeless Jewel's seed ( jewel_seed) The type of the Timeless Jewel ( jewel_type) The processed passive skill's graph identifier ( graph_id) The purpose of this function is to take a couple of inputs related to the processed passive skill and the socketed Timeless Jewel and output a modified passive skill. Let's call this function process_passive_skill. ![]() How Timeless Jewels modify passive skillsįor each passive skill in range of the Timeless Jewel the game runs a function.
0 Comments
Leave a Reply. |