Jump to content

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


Recommended Posts

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: February 12, 2021 -- Issue 27 page 1 (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
i27 page 1 (update)
  • Like 9
  • Thanks 7

"We're out of options, I'll have to use the jetpack," I said, strapping on the jetpack and ignoring the many non-jetpack options still left.

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

Looking for powers data? Try the Powers API

Link to comment
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.

"We're out of options, I'll have to use the jetpack," I said, strapping on the jetpack and ignoring the many non-jetpack options still left.

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

Looking for powers data? Try the Powers API

Link to comment
Share on other sites

@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
Link to comment
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.

"We're out of options, I'll have to use the jetpack," I said, strapping on the jetpack and ignoring the many non-jetpack options still left.

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

Looking for powers data? Try the Powers API

Link to comment
Share on other sites

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
Link to comment
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.

"We're out of options, I'll have to use the jetpack," I said, strapping on the jetpack and ignoring the many non-jetpack options still left.

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

Looking for powers data? Try the Powers API

Link to comment
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 🙂

Link to comment
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

Super Pack Drop Percentages       Recharge Guide                   Base Empowerment: Temp Powers


Bopper's Tools & Formulas                         Mids' Reborn                       

Link to comment
Share on other sites

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

"We're out of options, I'll have to use the jetpack," I said, strapping on the jetpack and ignoring the many non-jetpack options still left.

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

Looking for powers data? Try the Powers API

Link to comment
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
I'm out.
Link to comment
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 3
  • Thanks 1

"We're out of options, I'll have to use the jetpack," I said, strapping on the jetpack and ignoring the many non-jetpack options still left.

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

Looking for powers data? Try the Powers API

Link to comment
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.

Link to comment
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

Link to comment
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).

"We're out of options, I'll have to use the jetpack," I said, strapping on the jetpack and ignoring the many non-jetpack options still left.

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

Looking for powers data? Try the Powers API

Link to comment
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

"We're out of options, I'll have to use the jetpack," I said, strapping on the jetpack and ignoring the many non-jetpack options still left.

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

Looking for powers data? Try the Powers API

Link to comment
Share on other sites

  • 2 weeks later

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

"We're out of options, I'll have to use the jetpack," I said, strapping on the jetpack and ignoring the many non-jetpack options still left.

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

Looking for powers data? Try the Powers API

Link to comment
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

Super Pack Drop Percentages       Recharge Guide                   Base Empowerment: Temp Powers


Bopper's Tools & Formulas                         Mids' Reborn                       

Link to comment
Share on other sites

  • City Council
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
Link to comment
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

"We're out of options, I'll have to use the jetpack," I said, strapping on the jetpack and ignoring the many non-jetpack options still left.

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

Looking for powers data? Try the Powers API

Link to comment
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

Link to comment
Share on other sites

  • City Council

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
Link to comment
Share on other sites

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

"We're out of options, I'll have to use the jetpack," I said, strapping on the jetpack and ignoring the many non-jetpack options still left.

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

Looking for powers data? Try the Powers API

Link to comment
Share on other sites

  • 3 weeks later

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.

Link to comment
Share on other sites

  • Jimmy pinned this topic
  • Booper unpinned this topic

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