Jump to content
RubyRed

A Powers "API" of sorts (Gift to the community developers)

Recommended Posts

Posted (edited)

So I originally had a thought about building a tool that needed some of the powers data, and that led me down the rabbit hole of how exactly to get the specific numbers from the client data. There are certainly sources floating around out there, but most of them are out-of-date, so I created a tool which can extract directly from the bin files of the latest builds and then spit it back out as JSON. Then I host those files online, et voila!

 

>>> https://coh.tips/powers/ <<<

Last update: July 25, 2020 -- Issue 26 page 5 (v2)

 

It's not really an API, but it can be used like one. Additionally, you can just download the JSON files if you'd rather use them without an internet connection. I'm not trying to replicate the raw data exactly, rather it is in fact a massaged version that tries to make sense of the complex structures.

 

v2 API is online, deprecating the v1 API. The v1 data is still available at the same URL as before (I have no current plans to remove it even though it's deprecated). It is safe to use the online v2 API as the structure is set. New data may be added but there will be no breaking changes to field names or structure.

 

If you're looking for some tips on how to read bin files yourself, I put together a blog post about it:

https://rubidium.dev/2020/03/07/code-archaeology-reading-city-of-heroes-bin-files.html

 

Also this is completely open source. I tried to write it in such a way that anyone can follow along at home and incorporate learnings into their own projects:

https://gitlab.com/rubidium-dev/powers

 

Here's hoping that more community devs can build some awesome tools and web sites for us to enjoy. 😎

Edited by RubyRed
v2c release
  • Like 7
  • Thanks 5

Having trouble deciding your next alt? Just need a cool name? Try out City Suggests

Looking for powers data? Try the Powers API

Share this post


Link to post
Share on other sites

Yeah if I was going to start completely from scratch and actually care about reusability I'd do that. Maybe a v2 some day. For now it works, which was my primary goal lol.


Having trouble deciding your next alt? Just need a cool name? Try out City Suggests

Looking for powers data? Try the Powers API

Share this post


Link to post
Share on other sites
Posted (edited)

@RubyRed I was about to start working on what @Sif suggested using his library to create something like what you just did... but you've already done it, plus calculated scales, so I'll work with yours for now.  Thank you both for your efforts!

 

Two things I notice missing from the API that is useful for planner-like things are Pets (how much does the burn patch do over time? How much does a Protector Bot bubble for?) and Boosts (Enhancements).  I'll add those power categories and see what comes out in the parse locally, but we may need to end up parsing boostsets.bin to get all the info necessary.

Edited by Progor

Share this post


Link to post
Share on other sites

Yeah the boosts are part of the powers but right now I'm explicitly filtering them out so I can focus on getting the power data correct.

 

I didn't see enhancement sets in the stuff I did parse so you're probably right that it's in a different bin.


Having trouble deciding your next alt? Just need a cool name? Try out City Suggests

Looking for powers data? Try the Powers API

Share this post


Link to post
Share on other sites
Posted (edited)

I really appreciate this, thank you. I’ll try it out soon!

 

EDIT: Just taking a quick look through the JSON files. Awesome stuff. Is the enhancements & set bonuses, and AT limits info somewhere? Not seeing it at first glance.

Edited by Mikewho

Share this post


Link to post
Share on other sites

Not at the moment. I specifically skipped over enhancements and sets because I was focused on powers. But they're mostly in the same place. I might make a separate enhancements data set at some point.

I haven't touched the AT limits yet either. I've seen where they're at, and I'll probably add them to the AT data set in the future, but I'm still focused on getting the power effects accurate, they're kind of a mess at the moment.


Having trouble deciding your next alt? Just need a cool name? Try out City Suggests

Looking for powers data? Try the Powers API

Share this post


Link to post
Share on other sites
34 minutes ago, RubyRed said:

Not at the moment. I specifically skipped over enhancements and sets because I was focused on powers. But they're mostly in the same place. I might make a separate enhancements data set at some point.

I haven't touched the AT limits yet either. I've seen where they're at, and I'll probably add them to the AT data set in the future, but I'm still focused on getting the power effects accurate, they're kind of a mess at the moment.

No problem, really appreciate this effort 🙂

Share this post


Link to post
Share on other sites

With this ability to extract data from client-side files, will there be an opportunity to recreate the City of Data website?



PPM Information Guide                Survivability Tool                  Interface DoT Procs Guide

Time Manipulation Guide             Bopper Builds                      +HP/+Regen Proc Cheat Sheet

Movement Speed: Guide              Recharge Guide                   Base Empowerment: Temp Powers


Bopper's Tools & Formulas           RubyRed's API Tool              Mids' Reborn                       

Share this post


Link to post
Share on other sites
Posted (edited)
11 hours ago, Bopper said:

With this ability to extract data from client-side files, will there be an opportunity to recreate the City of Data website?

From what I understand of City of Data, I think it's basically just a dump of what's in the bins in a nice easy to read format. It would definitely be possible to remake it in some format, obviously that would go faster if someone is around that still owns the source code.

EDIT: In fact I just realized that's kind of what Sif is already starting, you may be interested in their tool: https://indexobscurum.com/index/hc/

Edited by RubyRed
  • Thanks 1

Having trouble deciding your next alt? Just need a cool name? Try out City Suggests

Looking for powers data? Try the Powers API

Share this post


Link to post
Share on other sites
18 hours ago, RubyRed said:

So I originally had a thought about building a tool that needed some of the powers data, and that led me down the rabbit hole of how exactly to get the specific numbers from the client data. There are certainly sources floating around out there, but most of them are out-of-date, so I created a tool which can extract directly from the bin files of the latest builds and then spit it back out as JSON. Then I host those files online, et voila!

 

>>> https://coh.tips/powers/ <<<

 

It's not really an API, but it can be used like one. Additionally, you can just download the JSON files if you'd rather use them without an internet connection. This is currently a BETA, so not quite ready for primetime yet, but I felt it was getting close enough to test out and get some feedback.

I'm not trying to replicate the raw data exactly, rather it is in fact a massaged version that tries to make sense of the complex structures. One of the last things I need to simplify is how attribute modifiers are represented, since it requires looking at multiple fields (explained at the above link) to actually know what's going on. So expect that to change.

 

If you're looking for some tips on how to read bin files yourself, I put together a blog post about it:

https://rubidium.dev/2020/03/07/code-archaeology-reading-city-of-heroes-bin-files.html

 

Also this is completely open source. I tried to write it in such a way that anyone can follow along at home and incorporate learnings into their own projects:

https://gitlab.com/rubidium-dev/powers

 

Here's hoping that more community devs can build some awesome tools and web sites for us to enjoy. 😎

This is awesome, thanks so much!

  • Like 2

Share this post


Link to post
Share on other sites

Updated today with many many improvements. Fixed a lot of bugs and worked out the details of a lot more powers. Also I think the structure is getting a bit easier to understand and exposes less of CoH's internals, so you should be able to use it without having to know exactly how to combine certain effects and parameters. I also added a display_info field that mimics to a degree how power effects are described in the in-game UI.

 

This took a lot of work, so I'm probably going to take a bit of a break before refining further. I've not really been playing the game lately because I've been too busy coding. 😅 I think I'm getting pretty close to an official "1.0" release that should be usable.

 

Here's an example of a power in the new structure:

Spoiler

    {
      "name": "Controller_Control.Darkness_Control.Dark_Grasp",
      "display_name": "Dark Grasp",
      "icon": "https://coh.tips/powers/assets/powers/5d/darknesscontrol_darkgrasp.png",
      "display_help": "You cause your target's shadow to wholly envelop them, leaving them held and rendered helpless while suffering from moderate negative energy damage. Even if the target is powerful enough to resist the power's hold effect they will have their chance to hit reduced. Damage: Moderate, Recharge: Moderate",
      "display_short_help": "Ranged, Moderate DMG(Negative), Foe Hold, -To Hit",
      "attack_types": [
        "Ranged_Def",
        "Negative_Energy_Def"
      ],
      "enhancements_allowed": [
        "Enhance Hold",
        "Reduce Endurance Cost",
        "Enhance Range",
        "Enhance Recharge Speed",
        "Enhance ToHit DeBuffs",
        "Enhance Damage",
        "Enhance Accuracy"
      ],
      "available_at_level": 1,
      "auto_issue": false,
      "power_type": "Click",
      "accuracy": 1.2,
      "effect_area": {
        "area": "Target",
        "range": 80.0
      },
      "target_type_tags": [
        "Foe"
      ],
      "requires_line_of_sight": true,
      "modes_disallowed": [
        "Disable_All"
      ],
      "activate": {
        "cast_time": 1.67,
        "recharge_time": 8.0,
        "endurance_cost": 8.53
      },
      "effect_groups": [
        {
          "pve_or_pvp": "PVE",
          "visible_in_info_window": true,
          "chance_percent": 100.0,
          "requires": [
            "target>enttype == critter"
          ],
          "effects": [
            {
              "attributes": [
                "Held"
              ],
              "applies_to": "CurrentModifier",
              "application_type": "OnTick",
              "target_type": "Affected",
              "magnitude": 3.0,
              "duration": "InSecondsScaled",
              "flags": [
                "ResistDuration",
                "CombatModDuration"
              ],
              "scaled": [
                {
                  "archetype": "Controller",
                  "scaled_effect": {
                    "duration_seconds": 22.35
                  },
                  "display_info": "3.0 magnitude hold for 22.35s on target"
                }
              ]
            },
            {
              "attributes": [
                "Negative_Energy_Dmg"
              ],
              "applies_to": "AbsoluteValue",
              "application_type": "Immediate",
              "target_type": "Affected",
              "duration": "Instant",
              "flags": [
                "ResistMagnitude",
                "CombatModMagnitude"
              ],
              "scaled": [
                {
                  "archetype": "Controller",
                  "scaled_effect": {
                    "damage": 30.59
                  },
                  "display_info": "30.59 negative energy damage on target"
                }
              ]
            }
          ]
        },
        {
          "pve_or_pvp": "PVE",
          "visible_in_info_window": true,
          "chance_percent": 20.0,
          "requires": [
            "target>enttype == critter"
          ],
          "effects": [
            {
              "attributes": [
                "Held"
              ],
              "applies_to": "CurrentModifier",
              "application_type": "OnTick",
              "target_type": "Affected",
              "magnitude": 1.0,
              "duration": "InSecondsScaled",
              "flags": [
                "ResistDuration",
                "CombatModDuration"
              ],
              "scaled": [
                {
                  "archetype": "Controller",
                  "scaled_effect": {
                    "duration_seconds": 11.17
                  },
                  "display_info": "20.00% chance for 1.0 magnitude hold for 11.17s on target"
                }
              ]
            }
          ]
        },
        {
          "pve_or_pvp": "PVP",
          "visible_in_info_window": true,
          "chance_percent": 100.0,
          "requires": [
            "target>enttype == player"
          ],
          "effects": [
            {
              "attributes": [
                "Held"
              ],
              "applies_to": "CurrentModifier",
              "application_type": "OnTick",
              "target_type": "Affected",
              "magnitude": 4.0,
              "duration": "InSecondsScaled",
              "flags": [
                "ResistDuration",
                "CombatModDuration"
              ],
              "scaled": [
                {
                  "archetype": "Controller",
                  "scaled_effect": {
                    "duration_seconds": 4.0
                  },
                  "display_info": "4.0 magnitude hold for 4s on target"
                }
              ]
            },
            {
              "attributes": [
                "Negative_Energy_Dmg"
              ],
              "applies_to": "AbsoluteValue",
              "application_type": "Immediate",
              "target_type": "Affected",
              "duration": "Instant",
              "flags": [
                "ResistMagnitude",
                "CombatModMagnitude"
              ],
              "scaled": [
                {
                  "archetype": "Controller",
                  "scaled_effect": {
                    "damage": 96.87
                  },
                  "display_info": "96.87 negative energy damage on target"
                }
              ]
            }
          ]
        },
        {
          "pve_or_pvp": "PVE",
          "visible_in_info_window": true,
          "chance_percent": 100.0,
          "requires": [
            "(target>enttype == critter) && (((((target>kImmobilized > 0) || (target>kHeld > 0)) || (target>kSleep > 0)) || (target>kStunned > 0)) || target.HasTag?(IncarnateBoss))"
          ],
          "effects": [
            {
              "attributes": [
                "Negative_Energy_Dmg"
              ],
              "applies_to": "AbsoluteValue",
              "application_type": "Immediate",
              "target_type": "Affected",
              "duration": "Instant",
              "flags": [
                "ResistMagnitude",
                "CombatModMagnitude"
              ],
              "scaled": [
                {
                  "archetype": "Controller",
                  "scaled_effect": {
                    "damage": 30.59
                  },
                  "display_info": "30.59 negative energy damage on target"
                }
              ]
            }
          ]
        },
        {
          "pve_or_pvp": "PVP",
          "visible_in_info_window": true,
          "chance_percent": 100.0,
          "requires": [
            "(target>enttype == player) && ((((target>kImmobilized > 0) || (target>kHeld > 0)) || (target>kSleep > 0)) || (target>kStunned > 0))"
          ],
          "effects": [
            {
              "attributes": [
                "Negative_Energy_Dmg"
              ],
              "applies_to": "AbsoluteValue",
              "application_type": "Immediate",
              "target_type": "Affected",
              "duration": "Instant",
              "flags": [
                "ResistMagnitude",
                "CombatModMagnitude"
              ],
              "scaled": [
                {
                  "archetype": "Controller",
                  "scaled_effect": {
                    "damage": 48.43
                  },
                  "display_info": "48.43 negative energy damage on target"
                }
              ]
            }
          ]
        },
        {
          "visible_in_info_window": true,
          "chance_percent": 100.0,
          "effects": [
            {
              "attributes": [
                "ToHit"
              ],
              "applies_to": "CurrentValue",
              "application_type": "OnTick",
              "tick_chance_percent": 100.0,
              "target_type": "Affected",
              "duration": "InSeconds",
              "duration_seconds": 10.0,
              "flags": [
                "ResistMagnitude",
                "CombatModMagnitude"
              ],
              "scaled": [
                {
                  "archetype": "Controller",
                  "scaled_effect": {
                    "percent": -7.5
                  },
                  "display_info": "-7.50% to hit for 10s on target"
                }
              ]
            }
          ]
        }
      ]
    },

 

 

  • Like 4
  • Thanks 1

Having trouble deciding your next alt? Just need a cool name? Try out City Suggests

Looking for powers data? Try the Powers API

Share this post


Link to post
Share on other sites

Hi there, maybe im reading it wrong, but is it possible for this to be "readable" by mids? maybe like a way to import said data into mids? that would be really epic and a massive time saver, love what the community comes up with these days.

Share this post


Link to post
Share on other sites
On 3/14/2020 at 2:14 PM, RubyRed said:

Updated today with many many improvements. Fixed a lot of bugs and worked out the details of a lot more powers. Also I think the structure is getting a bit easier to understand and exposes less of CoH's internals, so you should be able to use it without having to know exactly how to combine certain effects and parameters. I also added a display_info field that mimics to a degree how power effects are described in the in-game UI.

 

This took a lot of work, so I'm probably going to take a bit of a break before refining further. I've not really been playing the game lately because I've been too busy coding. 😅 I think I'm getting pretty close to an official "1.0" release that should be usable.

 

Here's an example of a power in the new structure:

  Reveal hidden contents


    {
      "name": "Controller_Control.Darkness_Control.Dark_Grasp",
      "display_name": "Dark Grasp",
      "icon": "https://coh.tips/powers/assets/powers/5d/darknesscontrol_darkgrasp.png",
      "display_help": "You cause your target's shadow to wholly envelop them, leaving them held and rendered helpless while suffering from moderate negative energy damage. Even if the target is powerful enough to resist the power's hold effect they will have their chance to hit reduced. Damage: Moderate, Recharge: Moderate",
      "display_short_help": "Ranged, Moderate DMG(Negative), Foe Hold, -To Hit",
      "attack_types": [
        "Ranged_Def",
        "Negative_Energy_Def"
      ],
      "enhancements_allowed": [
        "Enhance Hold",
        "Reduce Endurance Cost",
        "Enhance Range",
        "Enhance Recharge Speed",
        "Enhance ToHit DeBuffs",
        "Enhance Damage",
        "Enhance Accuracy"
      ],
      "available_at_level": 1,
      "auto_issue": false,
      "power_type": "Click",
      "accuracy": 1.2,
      "effect_area": {
        "area": "Target",
        "range": 80.0
      },
      "target_type_tags": [
        "Foe"
      ],
      "requires_line_of_sight": true,
      "modes_disallowed": [
        "Disable_All"
      ],
      "activate": {
        "cast_time": 1.67,
        "recharge_time": 8.0,
        "endurance_cost": 8.53
      },
      "effect_groups": [
        {
          "pve_or_pvp": "PVE",
          "visible_in_info_window": true,
          "chance_percent": 100.0,
          "requires": [
            "target>enttype == critter"
          ],
          "effects": [
            {
              "attributes": [
                "Held"
              ],
              "applies_to": "CurrentModifier",
              "application_type": "OnTick",
              "target_type": "Affected",
              "magnitude": 3.0,
              "duration": "InSecondsScaled",
              "flags": [
                "ResistDuration",
                "CombatModDuration"
              ],
              "scaled": [
                {
                  "archetype": "Controller",
                  "scaled_effect": {
                    "duration_seconds": 22.35
                  },
                  "display_info": "3.0 magnitude hold for 22.35s on target"
                }
              ]
            },
            {
              "attributes": [
                "Negative_Energy_Dmg"
              ],
              "applies_to": "AbsoluteValue",
              "application_type": "Immediate",
              "target_type": "Affected",
              "duration": "Instant",
              "flags": [
                "ResistMagnitude",
                "CombatModMagnitude"
              ],
              "scaled": [
                {
                  "archetype": "Controller",
                  "scaled_effect": {
                    "damage": 30.59
                  },
                  "display_info": "30.59 negative energy damage on target"
                }
              ]
            }
          ]
        },
        {
          "pve_or_pvp": "PVE",
          "visible_in_info_window": true,
          "chance_percent": 20.0,
          "requires": [
            "target>enttype == critter"
          ],
          "effects": [
            {
              "attributes": [
                "Held"
              ],
              "applies_to": "CurrentModifier",
              "application_type": "OnTick",
              "target_type": "Affected",
              "magnitude": 1.0,
              "duration": "InSecondsScaled",
              "flags": [
                "ResistDuration",
                "CombatModDuration"
              ],
              "scaled": [
                {
                  "archetype": "Controller",
                  "scaled_effect": {
                    "duration_seconds": 11.17
                  },
                  "display_info": "20.00% chance for 1.0 magnitude hold for 11.17s on target"
                }
              ]
            }
          ]
        },
        {
          "pve_or_pvp": "PVP",
          "visible_in_info_window": true,
          "chance_percent": 100.0,
          "requires": [
            "target>enttype == player"
          ],
          "effects": [
            {
              "attributes": [
                "Held"
              ],
              "applies_to": "CurrentModifier",
              "application_type": "OnTick",
              "target_type": "Affected",
              "magnitude": 4.0,
              "duration": "InSecondsScaled",
              "flags": [
                "ResistDuration",
                "CombatModDuration"
              ],
              "scaled": [
                {
                  "archetype": "Controller",
                  "scaled_effect": {
                    "duration_seconds": 4.0
                  },
                  "display_info": "4.0 magnitude hold for 4s on target"
                }
              ]
            },
            {
              "attributes": [
                "Negative_Energy_Dmg"
              ],
              "applies_to": "AbsoluteValue",
              "application_type": "Immediate",
              "target_type": "Affected",
              "duration": "Instant",
              "flags": [
                "ResistMagnitude",
                "CombatModMagnitude"
              ],
              "scaled": [
                {
                  "archetype": "Controller",
                  "scaled_effect": {
                    "damage": 96.87
                  },
                  "display_info": "96.87 negative energy damage on target"
                }
              ]
            }
          ]
        },
        {
          "pve_or_pvp": "PVE",
          "visible_in_info_window": true,
          "chance_percent": 100.0,
          "requires": [
            "(target>enttype == critter) && (((((target>kImmobilized > 0) || (target>kHeld > 0)) || (target>kSleep > 0)) || (target>kStunned > 0)) || target.HasTag?(IncarnateBoss))"
          ],
          "effects": [
            {
              "attributes": [
                "Negative_Energy_Dmg"
              ],
              "applies_to": "AbsoluteValue",
              "application_type": "Immediate",
              "target_type": "Affected",
              "duration": "Instant",
              "flags": [
                "ResistMagnitude",
                "CombatModMagnitude"
              ],
              "scaled": [
                {
                  "archetype": "Controller",
                  "scaled_effect": {
                    "damage": 30.59
                  },
                  "display_info": "30.59 negative energy damage on target"
                }
              ]
            }
          ]
        },
        {
          "pve_or_pvp": "PVP",
          "visible_in_info_window": true,
          "chance_percent": 100.0,
          "requires": [
            "(target>enttype == player) && ((((target>kImmobilized > 0) || (target>kHeld > 0)) || (target>kSleep > 0)) || (target>kStunned > 0))"
          ],
          "effects": [
            {
              "attributes": [
                "Negative_Energy_Dmg"
              ],
              "applies_to": "AbsoluteValue",
              "application_type": "Immediate",
              "target_type": "Affected",
              "duration": "Instant",
              "flags": [
                "ResistMagnitude",
                "CombatModMagnitude"
              ],
              "scaled": [
                {
                  "archetype": "Controller",
                  "scaled_effect": {
                    "damage": 48.43
                  },
                  "display_info": "48.43 negative energy damage on target"
                }
              ]
            }
          ]
        },
        {
          "visible_in_info_window": true,
          "chance_percent": 100.0,
          "effects": [
            {
              "attributes": [
                "ToHit"
              ],
              "applies_to": "CurrentValue",
              "application_type": "OnTick",
              "tick_chance_percent": 100.0,
              "target_type": "Affected",
              "duration": "InSeconds",
              "duration_seconds": 10.0,
              "flags": [
                "ResistMagnitude",
                "CombatModMagnitude"
              ],
              "scaled": [
                {
                  "archetype": "Controller",
                  "scaled_effect": {
                    "percent": -7.5
                  },
                  "display_info": "-7.50% to hit for 10s on target"
                }
              ]
            }
          ]
        }
      ]
    },

 

 

Loving all the updates! And still hoping you’ll get to enhancements/sets eventually :D

Share this post


Link to post
Share on other sites
1 hour ago, HixxyDubz said:

Hi there, maybe im reading it wrong, but is it possible for this to be "readable" by mids? maybe like a way to import said data into mids? that would be really epic and a massive time saver, love what the community comes up with these days.

In the most technical sense, yes, but I doubt it'd be useful for Mids.They're using a lot more data than I'm exporting directly and probably already have their own facilities for mapping the raw bin data to what Mids need to use. I haven't really looked at how Mids works and it was not really my intention to support a character builder, though that could technically be possible.

 

14 minutes ago, Mikewho said:

Loving all the updates! And still hoping you’ll get to enhancements/sets eventually :D

Maybe. Powers are complicated enough on their own. But I'll probably have to, because the incarnate data's kind of messed up (incarnate powers behave more like enhancements than powers).

  • Thanks 1

Having trouble deciding your next alt? Just need a cool name? Try out City Suggests

Looking for powers data? Try the Powers API

Share this post


Link to post
Share on other sites

BETA 3 is up. I'm pretty happy with this latest data set. Most of this week's work was on the back-end trying to fix up some bugs and make sure the data is consistent. I found a pretty dumb one that messed up all the arc/radius values for AoEs and cones, but it's fixed now.

 

Outside of the bugs though, I've added a few convenience items like a power-level display_info that mimics some of the info as it's seen in the in-game UI:

 

Spoiler

{
      "name": "Widow_Training.Widow_Training.Dart_Burst",
      "display_name": "Dart Burst",
      "icon": "https://coh.tips/powers/assets/powers/b9/widowtraining_dartburst.png",
      "display_help": "Dart Burst does light lethal damage to foes in a 30 degree arc cone, then poisons them. The poison does toxic damage over time and reduces their regeneration rate. Damage: Light Recharge: Medium",
      "display_short_help": "Light Cone DMG (Lethal), DoT(Toxic), -Regeneration",
      "display_info": {
        "Effect Area": "Cone — 50 ft. radius 30° arc (10 targets max)",
        "Activation Time": "2s",
        "Endurance Cost": "8.53",
        "Power Type": "Click",
        "Attack Types": "Ranged, Lethal",
        "Recharge Time": "8s",
        "Available Level": "6",
        "Power Range": "50 ft.",
        "Target Type": "Enemies"
      },

 

 

Also the scaled effects include some of the calculated averages:

 

Spoiler

"scaled": [
                {
                  "archetype": "Arachnos Widow",
                  "scaled_effect": {
                    "damage": 6.12
                  },
                  "average": 18.06,
                  "per_activation": 9.03,
                  "per_cast_cycle": 1.81,
                  "display_info": [
                    "6 ticks of 80.00% chance for 6.12 toxic damage over 5s on target"
                  ]
                }
              ]

 

 

I've got to do a final pass on the data to make sure everything jives with the in-game numbers, but I'm hoping not much more will be changing. I'd like to have a true "version 1" out that folks can use by first of April.

  • Like 3
  • Thanks 1

Having trouble deciding your next alt? Just need a cool name? Try out City Suggests

Looking for powers data? Try the Powers API

Share this post


Link to post
Share on other sites
Posted (edited)

It's been a little while, I've been meaning to get that v1 out the door but i26 p5 dropped sooner than I thought. Also I got sick (hopefully not coronavirus but probably is).

In good news, I was able to make all the necessary adjustments to parse the new powers.bin file format (a lot of subtle little changes threw me off for a couple days). Now I just need to take a good look at the new chain effect parameters used by Electrical Affinity to make sure the output matches what's seen in-game. Expect one more beta release soon-ish...

 

EDIT: Oh almost forgot, when I got interrupted by i26 p5, I was in the middle of implementing detailed pet info (powers, etc.) so expect that in the next version.

Edited by RubyRed
  • Like 1
  • Thanks 1

Having trouble deciding your next alt? Just need a cool name? Try out City Suggests

Looking for powers data? Try the Powers API

Share this post


Link to post
Share on other sites
36 minutes ago, RubyRed said:

hopefully not coronavirus but probably is

Stay safe and get well soon. Thanks for the hard work you're putting in 



PPM Information Guide                Survivability Tool                  Interface DoT Procs Guide

Time Manipulation Guide             Bopper Builds                      +HP/+Regen Proc Cheat Sheet

Movement Speed: Guide              Recharge Guide                   Base Empowerment: Temp Powers


Bopper's Tools & Formulas           RubyRed's API Tool              Mids' Reborn                       

Share this post


Link to post
Share on other sites
2 hours ago, RubyRed said:

Also I got sick (hopefully not coronavirus but probably is).

Ugh, hope you feel better soon.

 

If you need a pick-me-up laugh, since you have i26p5 format working, you should check out the insanity that is Brawl. 😀

  • Like 1

Share this post


Link to post
Share on other sites

Released BETA 4 this morning, based on Issue 26 Page 5.

 

  • Includes fun new stuff, like Electrical Affinity and Experimentation!
  • Supports the new Chain powers, so it should accurately report jump distance, max targets, etc.
  • Fixed a bunch of small bugs with parsing requirements expressions, which will forever be the bane of my existence. In particular, things that used "minmax" like Scourge shouldn't be horribly broken any more.
  • Summary power data is included inline for pets, power grants, power execute parameters. This should make Incarnate lore pets easier to parse now in particular because before all their data was in the top level Incarnate power category.
    • Keyword "summary" here. Originally I tried it including the full power data like I do for top-level items, but this bloated some of the power sets by like an additional 80%, which started to get unwieldy. Since the point of this data set is to be focused on player powers, I felt this was an acceptable trade off.

Enjoy!

  • Like 1

Having trouble deciding your next alt? Just need a cool name? Try out City Suggests

Looking for powers data? Try the Powers API

Share this post


Link to post
Share on other sites
5 minutes ago, RubyRed said:

Released BETA 4 this morning, based on Issue 26 Page 5.

 

  • Includes fun new stuff, like Electrical Affinity and Experimentation!
  • Supports the new Chain powers, so it should accurately report jump distance, max targets, etc.
  • Fixed a bunch of small bugs with parsing requirements expressions, which will forever be the bane of my existence. In particular, things that used "minmax" like Scourge shouldn't be horribly broken any more.
  • Summary power data is included inline for pets, power grants, power execute parameters. This should make Incarnate lore pets easier to parse now in particular because before all their data was in the top level Incarnate power category.
    • Keyword "summary" here. Originally I tried it including the full power data like I do for top-level items, but this bloated some of the power sets by like an additional 80%, which started to get unwieldy. Since the point of this data set is to be focused on player powers, I felt this was an acceptable trade off.

Enjoy!

Thanks, @RubyRed!  I hope you're feeling better soon!

 

  • Like 1

@Rathstar

Energy/Energy Blaster (50+3) on Everlasting

Energy/Temporal Blaster (50+3) on Excelsior

Energy/Willpower Sentinel (50+3) on Indomitable

Energy/Energy Sentinel (50+1) on Torchbearer

Share this post


Link to post
Share on other sites

Minor correction, what you have labeled as "chain_max_targets_expression" is not specific to chain powers but is a generic parameter (MaxTargetsExpr) that can be used for any AoE power. I don't see the other advanced chain parameters but I'm assuming you're leaving those out to keep the output more readable.

 

The rest of the new stuff (DeadOrAliveAny, etc) all looks good as far as I can tell. 😀

  • Thanks 2

Share this post


Link to post
Share on other sites
Posted (edited)

Thanks! The target expression seemed to only be used by the new chain powers so I incorrectly assumed it was limited to that usage. I may dig deeper on some of the more advanced parameters, but I'm not sure if they would add anything that someone just looking for "what does this power do" will find useful. I do that across the board for a lot of parameters that really only the game client/server cares about.

Edited by RubyRed

Having trouble deciding your next alt? Just need a cool name? Try out City Suggests

Looking for powers data? Try the Powers API

Share this post


Link to post
Share on other sites

Question on if I'm just stupid or if the information isn't there. I'm trying to figure out the details of the interface incarnate procs, but I see no damage/frequency when I look through the data. Am I missing it or is it somewhere else? I'm thinking I'm just dumb and I'm missing something. I found the duration, but that's all.

 

Appreciate this info, super useful for the project I'm working on.

Share this post


Link to post
Share on other sites

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...