{"action":"created","issue":{"url":"https://api.github.com/repos/LagoLunatic/dsvrandom/issues/45","repository_url":"https://api.github.com/repos/LagoLunatic/dsvrandom","labels_url":"https://api.github.com/repos/LagoLunatic/dsvrandom/issues/45/labels{/name}","comments_url":"https://api.github.com/repos/LagoLunatic/dsvrandom/issues/45/comments","events_url":"https://api.github.com/repos/LagoLunatic/dsvrandom/issues/45/events","html_url":"https://github.com/LagoLunatic/dsvrandom/issues/45","id":311192872,"number":45,"title":"Tiering item placements like enemies.","user":{"login":"LenKagetsu","id":38071386,"avatar_url":"https://avatars2.githubusercontent.com/u/38071386?v=4","gravatar_id":"","url":"https://api.github.com/users/LenKagetsu","html_url":"https://github.com/LenKagetsu","followers_url":"https://api.github.com/users/LenKagetsu/followers","following_url":"https://api.github.com/users/LenKagetsu/following{/other_user}","gists_url":"https://api.github.com/users/LenKagetsu/gists{/gist_id}","starred_url":"https://api.github.com/users/LenKagetsu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/LenKagetsu/subscriptions","organizations_url":"https://api.github.com/users/LenKagetsu/orgs","repos_url":"https://api.github.com/users/LenKagetsu/repos","events_url":"https://api.github.com/users/LenKagetsu/events{/privacy}","received_events_url":"https://api.github.com/users/LenKagetsu/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2018-04-04T11:36:39Z","updated_at":"2018-04-06T22:13:15Z","closed_at":null,"author_association":"NONE","body":"This problem is very evident in Dawn of Sorrow because of the large amount of items in the starting area. In my last few runs I consistently got endgame equipment like eversing and death's scythe which can trivialize the game. Since the randomizer can have enemy spawns change according to progress requirements, could there be an option to do this with equipment too?"},"comment":{"url":"https://api.github.com/repos/LagoLunatic/dsvrandom/issues/comments/379398859","html_url":"https://github.com/LagoLunatic/dsvrandom/issues/45#issuecomment-379398859","issue_url":"https://api.github.com/repos/LagoLunatic/dsvrandom/issues/45","id":379398859,"user":{"login":"aStarStalker","id":34887138,"avatar_url":"https://avatars0.githubusercontent.com/u/34887138?v=4","gravatar_id":"","url":"https://api.github.com/users/aStarStalker","html_url":"https://github.com/aStarStalker","followers_url":"https://api.github.com/users/aStarStalker/followers","following_url":"https://api.github.com/users/aStarStalker/following{/other_user}","gists_url":"https://api.github.com/users/aStarStalker/gists{/gist_id}","starred_url":"https://api.github.com/users/aStarStalker/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aStarStalker/subscriptions","organizations_url":"https://api.github.com/users/aStarStalker/orgs","repos_url":"https://api.github.com/users/aStarStalker/repos","events_url":"https://api.github.com/users/aStarStalker/events{/privacy}","received_events_url":"https://api.github.com/users/aStarStalker/received_events","type":"User","site_admin":false},"created_at":"2018-04-06T22:13:15Z","updated_at":"2018-04-06T22:13:15Z","author_association":"NONE","body":"Hi everyone, I have an idea on how the weapons and armor could be randomly placed on the map by tiers, so I'll share with you guys for you to see if it's a good idea or not.\r\n\r\nTo start things off, we know that the game itself has a kind of a ratio of weapon strength relative to their class/swing animation, with slower weapons of a certain \"tier\" having more attack than faster weapons of the same \"tier\" and of course more damage I-frames to account for that higher damage.\r\n\r\nSo, how about using pokémon tiering as an example for the logic?\r\nIn pokémon, the species are tiered based on, among other things:\r\n\r\n- Their Base Stat Total(which would stand for the weapon/armor stat increase total and skill damage and mp cost maybe?)\r\n\r\n- Their special atributes, such as how strong their movepool is (swinging animation used, elemental damaging types, damage I-frames)\r\n\r\n- And their special qualities such as for example their ability (which could stand for pretty much every special quality a weapon can have, such as being jump-cancellable, having a gun/RPG shot attached to it, how many of them can be on the screen at once, etc.)\r\n\r\nThere's more to pokémon tiering than that, especially on how they(Smogon tiers at least) place different pokémon in tiers by usage, rather than trying to quantifiy exactly how strong the pokémon is.\r\nWhich is, of course, what I'm going to suggest here! :smile: \r\n\r\n(Do note that the numbers and formulas I'll be suggesting are mostly conjectures I made from my own experience with the game, are obviously subject to change, criticism and opinion, and are just a suggestion that I am putting together for this particular issue. This suggestion in particular is more aimed towards DoS, so keep that in mind.)\r\n\r\nYou could have a placement logic that takes the weapon/armor Base Stat Total number (say for instance, 100 for the sake of round numbers) and then multiplies that number by a specific value for each of the special attributes it has to have a \"quantified strength\" of sorts for that specific weapon/armor/skill. And then have the placement logic place those items based on their \"quantified strengths\", with higher values only being allowed to appear later into the game.\r\n\r\nSo for example, say I'm trying to quantify the strength of a Short Sword weapon with 100 atk, no other stat bonuses, a slashing swinging animation, with three elemental types and such a small number of damage I-frames that I can hit something once every time I swing, I can move around while swinging it like a valmanway, the hitbox is attached to the player, and it can be jump cancelled.\r\n\r\n/////////////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\nAssuming the following quantification and multipliers for each factor a weapon has to determine their quantified strength:\r\n\r\nWeapon Base Stat Total:\r\n(this one might be a bit tricky for weapons, as the original game has a weapon power to speed ratio that could interfere with the rest of the calculations.) I did a comparison between the weakest weapon of every class and the strongest weapon of every class in DoS, and found a few repeating patterns. Here is the data that I researched (the \"m.value\"(Motion Value) factor here is how many times their attack is higher or lower than the Short Sword, which I used as a base for these comparisons):\r\n\r\nknife: 07 atk low, 25 atk high (m.value = 0.5)  15 I-frames\r\nrapier: 16 atk low, 52 atk high (m.value = 0.8)  30 I-frames(welp)\r\nshort sword: 15 atk low, 65 atk high (m.value = 1.0)  15 I-frames\r\nclaymore: 28 atk low, 120 atk high (m.value = 1.8)  35 I frames\r\nspear: 24 atk low, 56x2(Gungnir) = 112 atk high (m.value = 1.6)  30 I-frames(12 for the Gungnir)\r\nmace: 32 atk low, 28x4(mjolnir) = 112 atk high (m.value = 2.2)  40 I-frames(12 for the Mjolnir)\r\naxe: 45 atk low, 166 atk high (m.vaule = 3.0)  40 I-frames\r\nkatana: 18 atk low, 84 atk high (m.value = 1.2)  08 I-frames\r\nknuckles: 05 atk low, 15x2(kaiser knuckles, super fast attack rate) = 30~60 atk high (m.value = 0.45 ~ 0.9 )  8 I-frames\r\n\r\n(these following two are hard to compare to the baseline weapons, so I wouldn't know a suitable m.value for them, suggestions are welcome)\r\nalucard sword: 55 atk (m.value = ??)  12 I-frames\r\nwhip: 60 atk (m.value = ??)  30 I-frames \r\n\r\nhandgun: 15 atk low, 30 atk medium/high (m.value = 1.0)  03 I-frames\r\nthrowing: 06 atk low, 30 atk high (m.value = 0.4)  20 I-frames\r\n\r\nRPG: 64(100) atk (m.value = lol)  30 I-frames\r\nterror bear: 01 atk(the terror bear itself is such a unique weapon, it feels as if it is a randomized weapon with very low I-frames)  04 I-frames, uses Overhead Swing anim\r\nmove while atk: 30x2(nunchaku) = 60 atk,  12 I-frames , 36x4?(valmanway) = 72~144 atk, 12 I-frames\r\n\r\nExcluding some special cases, most weapons seem to have a ~4.2 times increase in their damage from their weakest form to their strongest form. The important part here is how to quantify their damage in a way that the calculations won't eschew weapons with slower swinging speeds towards the lategame, leaving only the faster weapons to the early game. So, I would suggest the calculation to be something like this:\r\n\r\nWeapon Base Stat Total = attack / m.value + other stat boosts(including defense)\r\n\r\nThe \"m.value\" here would then be pulled from either what the weapon swing was randomized to be OR what the weapon was before being randomized. This part I believe would require specifics about how the weapon randomization process works, which is something that I think only Lago would be able to tell and know which one would be the correct one to use here.\r\n\r\n(FYI, \"m.value\"(Motion Value) is a Monster Hunter term that signifies how many times the raw damage of a weapon is multiplied for each specific attack, with stronger, slower moves usually having higher Motion Values. I only used it because it is a term I'm familiar with, it doesn't need to be called \"m.value\" by the logic or anything like that :smile: )\r\n\r\n/////////////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\nWeapon Animations:\r\n- knife = 1.05\r\n- rapier = 1.0\r\n- short sword = 1.0\r\n- claymore = 0.9\r\n- mace/axe = 0.8\r\n- katana = 1.2\r\n- knuckles = 1.1\r\n- handgun(I believe the weapon having a gun/RPG shot attached to it comes from the animation rather than the weapon itself, right? if so) = 1.2\r\n- RPG = 1.4\r\n\r\n/////////////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\nSuper Animation: ???(I never use these so I'm not even capable of quantifying an estimate based on the supers effectiveness)\r\n\r\n/////////////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\nI-frames(This part is tricky because of the different swing animations that a weapon can be randomized to have. Maybe correlating the I-frames to what the weapon is hardcoded to be while also taking in consideration what the swing was randomized to be might be a fitting solution to this? Again, this is something that I believe only Lago would know based on how the randomization logic currently works) I would suggest having two multipliers for this section and having them be quantified like this:\r\n\r\nfirst multiplier:\r\nif the original weapon swing = randomized weapon swing, then multiplier is 1.0\r\nif the original weapon swing is slower than the randomized weapon swing, then multiplier is 1.1(since it swings faster than the original)\r\nif the original weapon swing is faster than the randomized weapon swing, then multiplier is 0.8 (since it swings slower than the original)\r\n\r\nsecond multiplier:\r\nif the original weapon I-frames = randomized weapon I-frames, then multiplier is 1.0\r\nif the original weapon had more I-frames than the randomized weapon I-frames, then multiplier is 1.2(since it hits more often than the original)\r\nif the original weapon had more I-frames than the randomized weapon I-frames, then multiplier is 0.8 (since it hits less often than the original)\r\n\r\n(And depending on how accurate we would want these multipliers to be, there could be a severity factor added to these based on how different the original was from the randomized version.)\r\n\r\n/////////////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\nElemental Types:\r\n\r\nI believe adding a 1.1 or 1.05 multiplier to the quantified strength for each elemental damage type after the first would be fitting enough.\r\n\r\n/////////////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\nWeapon Special Qualities(Swing Modifiers):\r\n\r\nHere I believe pulling the names out from DSVEdit might make them more easily distinguishable.\r\n\r\n- No interrupt on land(AKA jump cancellable): 1.2 multiplier\r\n- Weapon floats in place(I believe this one means that the hitbox is detached from the player, which makes the weapon harder/more annoying to use IMO): 0.9 multiplier\r\n- Modifier 3(I have no idea what this one does): 1.0 multiplier\r\n\r\n- Player can move(infamous \"Valmanway effect\". After testing, something interesting came up; this modifier, by itself, is mostly useless. Not only does it make it so that only the first frame of the weapon's swing animation plays out, it inutilizes most weapons capability to attack opponents. However, if the weapon with this modifier happens to have a Gun or RPG swing effect, the first frame of animation is enough to make these projectiles be fired, which makes it very strong in these cases. If the weapon with this modifier happens to be a throwing weapon, then the weapon will default to what seems to be Soma's 0 position in his hitbox and will loop its swinging animation indefinitely, and the damage hitbox will be at Soma's feet. This modifier requires the \"No interrupt on anim end\" modifier to properly work and grant the Valmanway effect to every other weapon that has them both.): considering how variable this modifier can be, a simple multiplier wouldn't be enough to quantify how much stronger or weaker a weapon becomes if it has this. So a specific calculation would have to be ran for this one, something like this:\r\n\r\n   - if the weapon has this and a Gun or RPG swing animation, then multiply the quantified strength by somewhere between 1.5 or 2.0, depending on how broken one would consider this combination to be\r\n\r\n   - if the weapon has this and a Throwing Weapon animation, then multiply the quantify strength by either 1.0 or 0.9, depending on how wonky one would consider killing enemies by goomba-stomping them would be\r\n\r\n   - if a weapon has this but neither of the above, but it has the \"No interrupt on animation end\" modifier, then multiply the quantified strength by something around 1.5, again depending on how strong one would consider this combination(Valmanway effect) to be\r\n\r\n   - if the weapon doesn't have the \"No interrupt on animation end\" modifier, then multiply its quantified strength by 0.5, considering the weapon becomes basically unusable, with the only options being using the Special Attack and providing stat boosts for the player.\r\n\r\n- Modifier 5(I have no idea what this one does either): 1.0 multiplier\r\n- Modifier 6(same as above): 1.0 multiplier\r\n- Transparent weapon and Shaky weapon(being cosmetic effects): 1.0 multiplier\r\n- No interrupt on ???(I don't know what ??? is, even after testing for a bit): 1.0 multiplier?\r\n- No interrupt on animation end(this one seems to not do anything on its own, but it is required for the \"Player can move\" modifier to work properly): 1.0 multiplier\r\n- Modifiers 11 to 16(no idea what them do either): 1.0 multiplier\r\n\r\n/////////////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\nWe would then apply all of these to the weapon presented at the start (100 atk, no other stat bonuses, a slashing swinging animation, with three elemental types and such a small number of damage I-frames that I can hit something once every time I swing, I can move around while swinging it like a valmanway, the hitbox is attached to the player, and it can be jump cancelled) for testing purposes, so:\r\n\r\nWeapon Base Stat Total = atk / m.value + other stat bonuses\r\nWeapon Base Stat Total = 100 / 1.0 + 0\r\nWeapon Base Stat Total = 100\r\n\r\nAnd then apply the multipliers for the weapon unique traits, so:\r\n\r\nQuantified weapon strength = Weapon Base Stat Total * Weapon Animation mult. * Super Animation mult. * I-frames mult. * ((Amount of elemental type damages - 1) * 1.05) * (Weapon Swing Modifiers)\r\n\r\nQuantified weapon strength = 100 * 1.0 * 1.0(we'll assume 1.0 here) * 1.0(since original weapon I-frames = randomized weapon I-frames) * ((3 - 1) * 1.05) * (multiplied Weapon Swing Modifiers)\r\n\r\nQuantified weapon strength = 100 * 1.0 * 1.0 * 1.0 * (2 * 1.05) * (in this case 1.2 * 1.5 * a lot of 1.0s)\r\n\r\nQuantified weapon strength = 100 * 1.0 * 1.0 * 1.0 * 2.1 * 1.8\r\n\r\nQuantified weapon strength = 378\r\n\r\nAnd then, based on the total quantified weapon strength, the item placement logic would only allow such a weapon to spawn in an area of the game which accepts weapons with 378 quantified strength to spawn, which I would assume to be somewhere in the late-game!\r\n\r\nI would also suggest that, if such a thing(weapon placement by tiers) is implemented in the Randomizer, that it becomes an optional(probably recommended) checkmark. As much as finding overpowered weapons in the first screens of the game can somewhat ruin the whole run's experience for some, some others do like to have either crazy overpowered stuff to appear really early in the game or for them to have to scavenge everything to actually find a somewhat useful weapon somewhere(in other words, the total unpredictability of a randomized run can be really appealing to some, that's what I'm trying to say).\r\n\r\n/////////////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\nOf course, this being only an idea I just formulated together and me not being able to judge by myself how strong any given weapon can be and how strong of a weapon each area is allowed to have, I would like to know other people's opinions on this, especially Lago's, and if this is a viable solution to this particular issue or not, and for what reason(s). Also, do note that these particular numbers would only be suitable for Dawn of Sorrow and more specifically the weapons in that game, and that PoR and OoE would require their own formulas for their quantified weapons and armors's strengths. If this particular formula is acceptable, I wouldn't mind digging in those games too and trying to come up with formulas for these as well! :smile: \r\n\r\nAlso. I'm REALLY sorry for the MASSIVE, MASSIVE wall of text. I tried my best to make it all easy to read and to understand, so I hope everyone who sees all of this forgives me, and if you happen to have read it all, all inputs would be appreciated!"}}
{"actor":{"display_login":"aStarStalker"}}