Skip to content

Instantly share code, notes, and snippets.

@cgdangelo
Created August 10, 2018 11:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cgdangelo/e8d5eaaa7b51a12759ab0b68327a9716 to your computer and use it in GitHub Desktop.
Save cgdangelo/e8d5eaaa7b51a12759ab0b68327a9716 to your computer and use it in GitHub Desktop.
diff --git a/engine/interfaces/sc_js.hpp b/engine/interfaces/sc_js.hpp
index 6dc67c4..bd0ef08 100644
--- a/engine/interfaces/sc_js.hpp
+++ b/engine/interfaces/sc_js.hpp
@@ -264,6 +264,15 @@ public:
v_.AddMember( rapidjson::StringRef( "std_dev" ), v.std_dev, d_.GetAllocator() );
v_.AddMember( rapidjson::StringRef( "mean_variance" ), v.mean_variance, d_.GetAllocator() );
v_.AddMember( rapidjson::StringRef( "mean_std_dev" ), v.mean_std_dev, d_.GetAllocator() );
+
+ rapidjson::Value data_arr( rapidjson::kArrayType );
+ range::for_each( v.data(), [ &data_arr, this ]( double dp ) {
+ data_arr.PushBack( dp, d_.GetAllocator() );
+ } );
+
+ v_.AddMember( rapidjson::StringRef( "data" ), data_arr, d_.GetAllocator() );
+ v_.AddMember( rapidjson::StringRef( "q1" ), v.percentile( 0.25 ), d_.GetAllocator() );
+ v_.AddMember( rapidjson::StringRef( "q3" ), v.percentile( 0.75 ), d_.GetAllocator() );
}
return *this;
diff --git a/engine/player/sc_player.cpp b/engine/player/sc_player.cpp
index c6e6fe8..2a26b34 100644
--- a/engine/player/sc_player.cpp
+++ b/engine/player/sc_player.cpp
@@ -1174,8 +1174,11 @@ void player_t::init_base_stats()
if ( primary_role() == ROLE_TANK )
{
// Collect DTPS data for tanks even for statistics_level == 1
- if ( sim->statistics_level >= 1 )
+ if ( sim->statistics_level >= 1 ) {
+ collected_data.atps.change_mode( false );
collected_data.dtps.change_mode( false );
+ collected_data.htps.change_mode( false );
+ }
}
if ( sim->debug )
diff --git a/engine/report/sc_report_json.cpp b/engine/report/sc_report_json.cpp
index 674055f..0a6bf81 100644
--- a/engine/report/sc_report_json.cpp
+++ b/engine/report/sc_report_json.cpp
@@ -195,7 +195,15 @@ void stats_to_json( JsonOutput root, const player_t& p )
{
root.make_array();
- range::for_each( p.stats_list, [ & ]( const stats_t* s ) {
+ std::vector<stats_t*> stats_list;
+
+ range::copy( p.stats_list, std::back_inserter( stats_list ) );
+
+ for ( auto pet : p.pet_list ) {
+ range::append( stats_list, pet -> stats_list );
+ }
+
+ range::for_each( stats_list, [ & ]( const stats_t* s ) {
if ( s -> quiet || s -> num_executes.mean() == 0 )
{
return;
@@ -253,6 +261,26 @@ void stats_to_json( JsonOutput root, const player_t& p )
s -> tick_results[ r ] );
}
}
+
+ node[ "pet" ] = s -> player -> is_pet();
+ node[ "source" ] = s -> player -> name_str;
+ node[ "apet" ] = s -> apet;
+ node[ "total_time" ] = s -> total_time;
+ node[ "quiet" ] = s -> quiet;
+ node[ "background" ] = s -> background;
+
+ if ( s -> parent ) {
+ node[ "parent" ] = s -> parent -> name_str;
+ }
+
+ std::vector<std::string> children;
+
+ for ( auto child : s -> children )
+ {
+ children.push_back( child -> name_str );
+ }
+
+ node[ "children" ] = children;
} );
}
@@ -458,7 +486,8 @@ void collected_data_to_json( JsonOutput root, const player_t& p )
{
if ( p.role == ROLE_TANK )
{
- root[ "dtps" ] = cd.dmg_taken;
+ root[ "dtps" ] = cd.dtps;
+ root[ "dmg_taken" ] = cd.dmg_taken;
root[ "timeline_dmg_taken" ] = cd.timeline_dmg_taken;
root[ "deaths" ] = cd.deaths;
root[ "theck_meloree_index" ] = cd.theck_meloree_index;
@@ -510,6 +539,7 @@ void collected_data_to_json( JsonOutput root, const player_t& p )
// Rest of the resource summaries are printed only based on relevant resources
range::for_each( relevant_resources, [ &root, &cd ]( resource_e r ) {
root[ "resource_lost" ][ util::resource_type_string( r ) ] = cd.resource_lost[ r ];
+ root[ "resource_gained" ][ util::resource_type_string( r ) ] = cd.resource_gained[ r ];
if ( r < cd.combat_end_resource.size() )
{
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment