Jump to content

UberGuy

Members
  • Posts

    648
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by UberGuy

  1. On 2/23/2024 at 9:01 PM, BillyMailman said:

    Second, separate bug: On both Chrome and Firefox, opening the Liquid Nitrogen pet power's page and sliding the Level thing, the two -350% maximum RunningSpeed bits adjust - the damage doesn't, showing the full level 50 damage for all levels. It's working for other powers, so not a globally busted thing, and switching to player ATs doesn't get the damage changing, either.

     

    From what I can tell by looking at the git history, this never worked right.

     

    I guess no one ever noticed because either (a) they didn't move the slider, (b) they were looking at powers where child effects don't scale with level, or (c) they just plain didn't notice numbers that should change did not do so. I think I have to fit in option (c).

     

    The bug was incredibly simple. The hierarchy of child effects is literally a parent/child tree structure, where each effect group web display element is a child component of the parent effect group's element. The effect group widget has inputs that control how it displays its contents - things like AT tables, level, etc. Parent elements have to forward relevant inputs to their child elements. The web code has never passed the display level to the child components, so they always displayed at a default level of 50.

     

    This has been fixed. 😝

    • Haha 1
  2. 3 hours ago, KaizenSoze said:

    Looking through Arsenal control. This doesn't look right on Liquid Nitrogen.

    https://cod.uberguy.net/html/power.html?power=pets.liquidnitrogen.liquid_nitrogen&at=minion_pets

     

    11.122 points of Cold damage (all affected targets) every 10s for 4.5s (100% chance)

     

    I read that as do damage every 10 seconds, for a duration of 4.5 seconds. So, it only runs once?

     

    That doesn't seem to be any sort of display error. That's how it's actually set up.

     

    Even if those numbers were backwards (every 4.5s for 10s), it would only tick twice.

     

    Edit: I got confirmation from @Booper that this is WAI. It's got an interval so the attribute will stick around. The desired duration for that is 4.5s, If you check the flags, it's kept around to prevent a 2nd knock effect for that period. The 10s  interval is arbitrary - it just has to be longer than the effect duration to ensure there's only that one tick.

    Edit2: I'll see about making the display more intelligent when the interval is longer than the duration, since this seems like an implementation trick we'll see in other places.

    • Thumbs Up 1
  3. I just pushed a fix for the "Unknown Stacking Type" situation. I reused an existing icon for now - I need to noodle a bit on what makes sense given how small the icons are.

     

    image.png.ef0a25c0dcdf51dac050b269acf53057.png

     

    I improved the "Unknown X" logic so it actually tells us the unknown thing's name in the popup. It always had the flag name, but just didn't know what icon or description to display.

     

    I also added the "Unknown  X" behavior to several other attribmod icons that had a possibility to fall through without picking something to display, which could happen if a new value is added that the logic is not updated to handle.

    • Thanks 1
  4. I just posted a data update that contains fixes for things like "Δ K'ong". The issue was was in original Rust bin parser code, in parts of it that I have never actually touched before. There was logic that stripped out non-ASCII text from display strings of all kinds. I removed this logic entirely, so now everything in the clientmessages-en.bin is parsed as it's stored. There's a chance this will introduce control characters that were not previously present, though I mostly would not expect the website to care about such things. If you see something that looks off, let me know, as always.

     

    I also updated Brainstorm's data.

    • Like 2
    • Thumbs Up 1
  5. I just made a quick edit to the site meant to save people from being stuck on blank pages if they last had things configured to look at Cryptic/Alpha data. Since that's gone now, the site was busted for those folks, and it busted badly enough that they could not reasonably get to the settings page to fix it.

     

    I just pushed code that redirects folks trying to hit Cryptic data to Brainstorm instead. This should also handle folks using direct links to a specific dataset that targeted data=cryptic.

     

    The new code lets me add future data redirects like this in case they're needed again. I'll also look for ways to remove this lookup from the critical path for page load. Since there is code referencing the dataset in the header of every page, targeting a bad path breaks every page on the site early, which is, ah, not ideal.

  6. The Live site should be updated for this week's patch.

     

    I'll work on the UI bugs mentioned above (and some older ones too) this weekend.

     

    References to data from the "Alpha" / Cryptic environment have been removed / updated to refer to "Beta" / Brainstorm.

    • Like 1
  7. 12 hours ago, Bionic_Flea said:

    Is RubyRed aka Red Tomax?  I recall Red Tomax as the original CoD person.

     

    While I can't say with certainty, I do not believe so.

     

    Edit: My understanding was that RedTomax had the info they did because they were close to one of the Paragon Studios powers devs. The original site was based on text info for the powers, rather than squeezing it out of client files. In fact, originally, most of this info did not exist in the client. I was only after "Real Numbers"™ was added to the client UI that powers data started being shipped with the client bins.

    • Thumbs Up 1
  8. 2 hours ago, Jacke said:

    City of Data 2 is all @UberGuy's work AFAIK.  He's the dude that figures out how to take the game data (in the form provided to him) and present it on his website.  An amazing achievement. 😺

     

    Oh, no, now let's be clear. While I do maintain it, I built what CoD's powers data extracs on top of @RubyRed's parser work. It's grown significantly since then, but I likely would never had undertaken it without that codebase. Also, the updates I am able to make when the Homecoming team releases updates is because they help me to know what changed at a data level. CoH's game files are extremely opaque in nature. They are almost literally a memory dump of the C data structures. If you don't have either source code or someone to tell you what has changed about them ...  well, I won't say figuring it out would be impossible, but I'll just say there's totally no way I could do it as a side hobby project without the help of others. Even Ruby based their original work on original source code leaks.

     

    The one thing I can mostly take credit / blame for is the website presentation. Even there, while the codebase is wholly my own creation, I used the original City of Data as a UI inspiration and I regularly get feedback from folks like @Captain Powerhouse, @Booper and @Number Six (and many folks in this thread) when I display things poorly (or not at all) and/or things need better labels / descriptions.

    • Thanks 1
  9. On 2/23/2024 at 8:48 PM, BillyMailman said:

    FYI, something's definitely off with the sleep grenade thing from Arsenal Control; there's a stacking type not showing up. I'm also confused by the Requires bit on the bonus sleep from Domination/Overpower, but that one seems more likely to actually just be how it works. Notably, that's 100% how Smoke Canister's confuse is supposed to work, and it's showing up the same there, so yeah. Same stacking thing is showing up over there, too.

    This one should be easy to track down. I'm glad at least the logic for "tell us when you don't know what to show" works, rather than the old behavior of just not showing anything!

    • Haha 1
  10. On 2/23/2024 at 9:01 PM, BillyMailman said:

    Second, separate bug: On both Chrome and Firefox, opening the Liquid Nitrogen pet power's page and sliding the Level thing, the two -350% maximum RunningSpeed bits adjust - the damage doesn't, showing the full level 50 damage for all levels. It's working for other powers, so not a globally busted thing, and switching to player ATs doesn't get the damage changing, either.

     

     

    🤔 Yeah, that's not right. It clearly gets that the effect is based on an damage table, but it's not adjusting it. That probably means not just this power is affected. I'll dig into that ASAP.

    • Thanks 1
  11. Since the "Alpha" environment is apparently deprecated, the already out of date info for it on CoD will, most likely, never be updated again. As such, I plan to remove it from the site this weekend. The "Beta" and "Live" links will remain accessible in the header's revision text popup.

    • Thumbs Up 1
  12. This is probably some oddity of browser-side and/or server-side caching. I haven't deployed any site updates since about 20 minutes after I posted about the I27 changes. (I had missed some data fields in powers and redeployed to add them, but they were just new JSON fields on powers - not powersets or their names - and that's the only place they appear.) That was like 18 hours ago, and the cache settings on CoD stuff are supposed to be 10 minutes. And I supposedly invalidated the server side cache as part of the deploy. So... 🤷‍♂️?

  13. I do see the new Epic sets on the AT pages. I don't see the updated names. That seems to be legitimate - the old names are in the data. I am not sure what's up/missing/wrong there.

     

    image.thumb.png.e00520fbd898871a5094e1ed300c8e51.png

    image.thumb.png.c4d654961ce181341c0c93ad1d7c17f5.png

     

    Edit: Actually we can see the right names in those screenshots. I may have been confusing my browser (and myself) using the back and forward buttons across server boundaries, silently switching between views of Homecoming and Alpha.

     

  14. 5 hours ago, BillyMailman said:

    They're in there (e.g., here is the Blaster Dark Mastery), but the listing of what powers an AT has don't seem to have refreshed.

     

    🤨That is surprising. Those have always had well-defined means of relationship to the ATs that can use them. If these were created with some new way of building that relationship, the code that stitches them together probably doesn't account for it. I'll have to go data diving to figure that out.

  15. 5 hours ago, BillyMailman said:

    Also, I just wanted to add my usual combination of profuse thanks, and reporting any and all weirdness I can find. All of which so far is just in the Δs and such not appearing in the description/name/etc. of Δ K'ong. Obviously I didn't expect it in the search, like with "Freakshow_Supr_St|_|n3r", but it should probably display on the page.

     

    Seriously, though. I'm likely to spend a decent bit of time diving into all the new stuff. Been very much looking forward to this. Thanks, Uber!

     

    Interesting. That sounds like I'm not handling unicode characters somewhere in my data processing chain, which is both surprising and not. Once I figure out where it's happening it probably won't be hard to fix. Finding it might be "fun" though. 😅

  16. So... where has UberGuy been?

     

    Life has thrown me quite a few curves over the last 9 months or so.

     

    I'm happy to say that most have just been part of getting married and picking up two kids (not counting the two cats). Needless to say, my free time is sometimes consumed by new things - this is not a complaint. The kids are mostly grown and not really living at home any more, but there was a chunk of the last 9 months where they very much were, and that still takes time and attention. And after that we've still been celebrating graduations, helping move them into dorms, and so on. There have also been a couple of crises along the way, but overall the kids have weathered them admirably.

     

    My wife, who is a high school teacher, works far from our home, so she stays by the school during the week and is only home on weekends and during breaks. That means that, since last August, I mostly only get her home on weekends. Now, she has her own stuff to do, so it's not like we're hanging out every hour of every weekend, but when she wants to do stuff together, that's my priority right now.

     

    We also have been planning / executing some significant updates to the house - the kind that involve contractors. This often involves moving exiting stuff around or just throwing old stuff out. (Not nearly as much as my wife would like, but she accepts that I'm only a little bit of a hoarder. That my dad is one like, for real helps set the bar. 😛)

     

    And there have been a number of deaths in my relatively immediate family. Nothing dramatic, per se, just old and / or sick folks passing on, but that doesn't make it easy. And some of my time has been spent being there for other family members, particularly my dad.

     

    The good news is that there is a light at the end of the tunnel as far as time to work on CoD (and maybe play CoH again) goes. My wife is leaving teaching after this spring, and will (like me) work out of our home full time. (I work in IT and am a remote corporate employee, but she'll be self-employed.) Both kids will be away at college, and probably not home much except for holidays and whatnot. And while I can't know that folks won't stop passing away, but if they don't, I'll run out of relatives soon.  (That sounded darker than I mean it to...)

     

    As usual, every time I come back to this to work on a big release I find stuff that makes doing it hard, question why the hell that's the case and try to improve it. So that was part of why getting back in the saddle for this update only took a couple of calendar days. Hopefully that'll mean I am even more productive when I get more "real" bandwidth to do this. I'm wasn't planning to go anywhere and stop working on it so long, but sometimes the plans come for you anyway.

     

    • Like 6
    • Thanks 6
  17. CoD is updated with today's release!

     

    Please note that only the "Live" section has been update but the "Alpha" section is out of date. Since Alpha wasn't where most of the late testing for I27 was happening, it was left in a no-man's land where it was ahead of what the old parser code but behind the latest Beta / Live layout.

     

    There is a "Beta" data section, accessible by clicking the . Right now it probably looks just like "Live" so it's not very useful.

     

    There were quite a few "structural" changes to AT and power data for this release, so there is definitely a chance things have gone wrong. I did some basic spot checking but I was working pretty fast so I probably missed things. 😛

    • Like 1
    • Thanks 5
  18. Something I need to start working on is a kind of significant rewrite of the website. Not the data extraction back-end (which is in decent shape right now), but the actual web-specific stuff that runs in our browsers.

     

    When I wrote CoD, I was relatively new to web front-end design. I knew my way around HTML and CSS, and was mildly dangerous with JavaScript. While the approaches I used in the website were (usually) not bad, they did sometimes suffer from various naivety about the best and worst ways to do things.

     

    Modern "serious" website design done by companies use a lot of tools and tech. Using these tools basically mean you don't really use plain HTML, CSS or JavaScript when creating a site. You usually write in something that looks like these things and which your tools will convert into the "real" thing during a sort of compilation stage. This "transpiled" and bundled code is what you deploy and is served to end users by your web servers.

     

    When I started working on CoD, I was aware of a few of these tools, but not at all familiar with their hands-on use. In order to get CoD off the ground quickly, I found a way to create the website that bypassed them. There's nothing too terribly wrong with what I did, but it does mean that I have to craft a lot of HTML and CSS in something of an "old fashioned" way, losing the benefit of a lot of modern tools that could streamline the process or simplify the results. I also have to write "pure" JavaScript, which has been super useful as a learning experience, but again this denies me some tooling benefits.

     

    CoD's dynamic web-page functionality is based on a web framework called Vue. It's really not the most popular framework of its type, but definitely has an active community and it was probably the best framework at the time (and maybe still) for a newcomer to get into. At the time I created CoD, Vue version 3.x had been out for some time, but version 2.x was still very common, and most of the third-party Vue "widgets" and also Vue how-to documentation on-line was written for Vue 2.x. So CoD was created using Vue 2.x.

     

    Nowadays there's a lot more Vue3 stuff out there, and Vue2 will cease to be supported by its makers at the end of 2023. That means info and widgets for Vue2 will become harder and harder to come by. If I want to keep the site modern, I should rework it to use Vue3.

     

    After creating and maintaining the site for several years, I am not as green as I was at the beginning, having more exposure to the bundling / transpiling tools I mentioned above, so if I am going to migrate to Vue3, I think that's the right time to also tear off the other band-aids and build CoD with more modern tooling. The site itself should be simpler to maintain, though the tool setup to update and deploy it will be a bit more complex.

     

    When this happens it will probably be a big-bang kind of thing. By that I mean I will probably build a parallel version of the site and eventually "throw a switch" to transition between them when I think the new site is ready. If I do this well, the switch should be reversible, so I can revert if the new thing breaks badly. The goal though will be fully demise the Vue2 version of the site and not update it any more - new CoD would only be written the "new way".

     

    There probably won't be an big or immediately visible benefit to y'all, which is a big reason I've put this off as long as I have. But like several other changes I've made recently, this work should eventually mean I can iterate faster on future site changes, with better confidence that the changes didn't break something unexpected.

     

    • Thumbs Up 2
  19. Some very minor, mostly cosmetic / behind-the-scenes changes to the site today.

    • The HTML pages on the site were lacking a tag that ensures browsers treat them as modern in terms of features. I added this tag to all the pages, since I have long coded the site to expect modern browser behaviors.
    • The "copy link to this page" feature actually wasn't using a modern approach, and the above change made some of its hacky nature literally visible. I updated the mechanism involved (which is much simpler now, honestly).
    • The "overflow cells" present on some pages (where the cell content overflows out of the cell on hover so you can read really long names) used to displace the cells to the right, making the visual extra janky. It no longer does this.

    It's possible that the first bullet point might break things I didn't expect and didn't test. If you see weird behavior (especially if it seems to be new weird behavior), let me know!
     

  20. So I think I fixed this, but my analysis is kind of shallow at this point. After some reflection and digging into what it was really doing to have them in the PvE consideration, I simply removed all of the "partial critter only" criteria. So far in spot checking that seems to do the right thing. The example above for Scrapper Bone Smasher is now showing the correct "PvE" flagging in CoD, as are a couple of other problematic things like the two effects granted by Tanker Gauntlet.

     

    If you see any more wonky things like this, feel free to post about it over in the main CoD thread in the tools subforum.

  21. Whoops. It seems like some of my recent updates broke the "set bonus finder" part of the site. I changed some of the data layout (merging a couple of repetitive data files into one that included both but was smaller overall) and forgot to update the logic for that page. The fix was really easy, once I noticed it was busted, but it's probably been broken for a few weeks. 😜I'm guessing a lot of people don't use that or maybe people who noticed it was busted just don't post here.

     

    In somewhat related news about fixing busted things, I went through nearly all of the Python code and applied type hints, when then let me run a static checker against the code. This did a number of things. First, it forced me to better document what all the variables in the code are, which then the checker could verify I was using as intended (or not). Nothing like being told "Hey, you said that was an orange, but you shoved a box of wrenches into it." to make you wonder what your code actually does. Most of that kind of thing was just me having documented the variables badly, but it sometimes made me realize the code was fragile due to not actually verifying what was in some dynamic thing before using it. (The most common example would be assuming a thing is not "null" when it technically can be.) But most important,, this exercise cause me to find a few typos that were syntactically legal but meant the data didn't contain what I meant it to. For example all the AT data on the site was missing inherent hold protection values, because I typo'd the word "hold" as "hlod". (In case you're wondering that only matters for critters - the value is always 0.0 for character ATs.) 

     

    I've also been doing some setup of my home dev environment that will ultimately make it a lot easier to update the Alpha and Live datasets independently. For example, if I update the code to parse new data elements that the devs add in alpha, it effectively breaks the parser for live data since those new elements would be missing. It's not exactly hard to deal with this, but I didn't originally set anything up in my environment up to make it easy. Right now that's still a small pain, but it's already way simpler now than it was say a year ago. just because my data build and deploy pipeline logic is better.

     

    The logic for CoD (back-end and front-end) still needs decent unit tests, so I can more easily notice when my code changes break something. Making the code more "testable" will almost certainly involve reorganizing it, so this stuff I'm doing now lays groundwork that will make that easier and itself less error prone.

     

    • Like 1
    • Thanks 1
    • Thumbs Up 2
  22. 3 hours ago, Bionic_Flea said:

    Maybe: "If X/If Y" as in "Chance for +Absorb If health X/or If health Y" for the Preventive Medicine?

     

    The problem there is that I'd have to start parsing expressions to turn into plain-ish English wording, which is a level of challenge I don't think I'm up for (or that probably makes sense to invest in this feature - I realize this is already super gold-plated). I believe to achieve that realistically I'd just end up having to build special case handling, like looking for certain operations (comparing your health to thresholds for example) and hope they weren't buried in something more complex that changed their meaning. At that point I think the right thing to do would just short-circuit most of the process and say: "If this power, say this effect description."

     

    An alternative I was noodling for handling things like Preventive Medicine is saying that if we see the same effect (like +Absorb) with both a 100% chance and a non-100% chance, but both with (different) conditions, just report that simply as a single "Chance of X". 

     

    Quote

    But does it have to have an awkward name as long as the details give the correct info?

     

    No, but I do rather like the idea of having a more accurate name as a summary of the effect. Fortunately, most effects aren't so silly as the few examples above. They're definitely outliers.

×
×
  • Create New...