From 46b1791f5afb65c3eebe52521b334b520486b983 Mon Sep 17 00:00:00 2001 From: WALL OF JUSTICE <-> Date: Fri, 1 Nov 2024 02:16:40 +1100 Subject: [PATCH 1/2] * fix for insectoid mana possibly - todo --- src/item_usage_funcs.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/item_usage_funcs.cpp b/src/item_usage_funcs.cpp index 18acd01f4..4522a1d54 100644 --- a/src/item_usage_funcs.cpp +++ b/src/item_usage_funcs.cpp @@ -4616,6 +4616,17 @@ void item_Food(Item*& item, int player) hungerIncrease = 10; break; } + + /*if ( stats[player]->playerRace == RACE_INSECTOID && stats[player]->stat_appearance == 0 ) + { + if ( stats[player]->MAXMP >= 50 ) + { + real_t nominalIncrease = 50 * (hungerIncrease / 1000.0); + real_t currentIncrease = stats[player]->MAXMP * (hungerIncrease / 1000.0); + hungerIncrease = hungerIncrease * (nominalIncrease / currentIncrease); + } + }*/ + stats[player]->HUNGER += hungerIncrease * foodMult; } else From 8f704b0faadb5b9a2788cf49793d452364ba077b Mon Sep 17 00:00:00 2001 From: WALL OF JUSTICE <-> Date: Fri, 1 Nov 2024 02:27:42 +1100 Subject: [PATCH 2/2] * add stat biome level, add char level --- src/menu.cpp | 4 +--- src/mod_tools.cpp | 22 ++++++++++++++++++++++ src/playfab.cpp | 46 ++++++++++++++++++++++++++++++++++++++++++++++ src/playfab.hpp | 1 + 4 files changed, 70 insertions(+), 3 deletions(-) diff --git a/src/menu.cpp b/src/menu.cpp index 03bc6aa5a..8d6e75eb4 100644 --- a/src/menu.cpp +++ b/src/menu.cpp @@ -9638,9 +9638,6 @@ void doEndgame(bool saveHighscore, bool onServerDisconnect) { conductGameChallenges[CONDUCT_BOOTS_SPEED] = 1; } achievementObserver.updateGlobalStat(STEAM_GSTAT_GAMES_WON, clientnum); -#ifdef USE_PLAYFAB - playfabUser.gameEnd(); -#endif for ( int c = 0; c < MAXPLAYERS; ++c ) { @@ -9700,6 +9697,7 @@ void doEndgame(bool saveHighscore, bool onServerDisconnect) { { playfabUser.postScore(clientnum); } + playfabUser.gameEnd(); #endif } saveAllScores(SCORESFILE); diff --git a/src/mod_tools.cpp b/src/mod_tools.cpp index bd6a3f0c2..e18bcbd1c 100644 --- a/src/mod_tools.cpp +++ b/src/mod_tools.cpp @@ -22,6 +22,7 @@ See LICENSE for details. #include "shops.hpp" #include "interface/ui.hpp" #include "ui/GameUI.hpp" +#include "playfab.hpp" #endif #include "init.hpp" #include "ui/LoadingScreen.hpp" @@ -15130,6 +15131,9 @@ void Compendium_t::Events_t::onLevelChangeEvent(const int playernum, const int p if ( prevlevel == 4 ) { eventUpdateWorld(playernum, Compendium_t::CPDM_LEVELS_BIOME_CLEAR, "mines", 1); +#ifdef USE_PLAYFAB + playfabUser.biomeLeave(); +#endif commitUniqueValue = true; // commit at end of biome to save to file } eventUpdateWorld(playernum, Compendium_t::CPDM_BIOMES_MIN_COMPLETION, "mines", @@ -15144,6 +15148,9 @@ void Compendium_t::Events_t::onLevelChangeEvent(const int playernum, const int p if ( prevlevel == 9 ) { eventUpdateWorld(playernum, Compendium_t::CPDM_LEVELS_BIOME_CLEAR, "swamps", 1); +#ifdef USE_PLAYFAB + playfabUser.biomeLeave(); +#endif commitUniqueValue = true; // commit at end of biome to save to file } eventUpdateWorld(playernum, Compendium_t::CPDM_BIOMES_MIN_COMPLETION, "swamps", @@ -15158,6 +15165,9 @@ void Compendium_t::Events_t::onLevelChangeEvent(const int playernum, const int p if ( prevlevel == 14 ) { eventUpdateWorld(playernum, Compendium_t::CPDM_LEVELS_BIOME_CLEAR, "labyrinth", 1); +#ifdef USE_PLAYFAB + playfabUser.biomeLeave(); +#endif commitUniqueValue = true; // commit at end of biome to save to file } eventUpdateWorld(playernum, Compendium_t::CPDM_BIOMES_MIN_COMPLETION, "labyrinth", @@ -15172,6 +15182,9 @@ void Compendium_t::Events_t::onLevelChangeEvent(const int playernum, const int p if ( prevlevel == 19 ) { eventUpdateWorld(playernum, Compendium_t::CPDM_LEVELS_BIOME_CLEAR, "ruins", 1); +#ifdef USE_PLAYFAB + playfabUser.biomeLeave(); +#endif commitUniqueValue = true; // commit at end of biome to save to file } eventUpdateWorld(playernum, Compendium_t::CPDM_BIOMES_MIN_COMPLETION, "ruins", @@ -15190,6 +15203,9 @@ void Compendium_t::Events_t::onLevelChangeEvent(const int playernum, const int p if ( prevlevel == 23 ) { eventUpdateWorld(playernum, Compendium_t::CPDM_LEVELS_BIOME_CLEAR, "hell", 1); +#ifdef USE_PLAYFAB + playfabUser.biomeLeave(); +#endif commitUniqueValue = true; // commit at end of biome to save to file } eventUpdateWorld(playernum, Compendium_t::CPDM_BIOMES_MIN_COMPLETION, "hell", @@ -15212,6 +15228,9 @@ void Compendium_t::Events_t::onLevelChangeEvent(const int playernum, const int p if ( prevlevel == 29 ) { eventUpdateWorld(playernum, Compendium_t::CPDM_LEVELS_BIOME_CLEAR, "crystal caves", 1); +#ifdef USE_PLAYFAB + playfabUser.biomeLeave(); +#endif commitUniqueValue = true; // commit at end of biome to save to file } eventUpdateWorld(playernum, Compendium_t::CPDM_BIOMES_MIN_COMPLETION, "crystal caves", @@ -15226,6 +15245,9 @@ void Compendium_t::Events_t::onLevelChangeEvent(const int playernum, const int p if ( prevlevel == 34 ) { eventUpdateWorld(playernum, Compendium_t::CPDM_LEVELS_BIOME_CLEAR, "arcane citadel", 1); +#ifdef USE_PLAYFAB + playfabUser.biomeLeave(); +#endif commitUniqueValue = true; // commit at end of biome to save to file } eventUpdateWorld(playernum, Compendium_t::CPDM_BIOMES_MIN_COMPLETION, "arcane citadel", diff --git a/src/playfab.cpp b/src/playfab.cpp index abecd6e5d..e18a80c82 100644 --- a/src/playfab.cpp +++ b/src/playfab.cpp @@ -54,6 +54,7 @@ void PlayfabUser_t::gameEnd() { return; } + PlayFab::EventsModels::WriteEventsRequest eventRequest; PlayFab::EventsModels::EventContents eventContent; eventContent.EventNamespace = "custom.game"; @@ -76,6 +77,7 @@ void PlayfabUser_t::gameEnd() eventContent.Payload["version"] = VERSION; eventContent.Payload["splitscreen"] = (multiplayer == SINGLE && splitscreen) ? 1 : 0; eventContent.Payload["race"] = stats[clientnum]->playerRace; + eventContent.Payload["charlvl"] = stats[clientnum]->LVL; eventContent.Payload["appearance"] = stats[clientnum]->stat_appearance; eventContent.Payload["sex"] = stats[clientnum]->sex; eventContent.Payload["controller"] = inputs.hasController(clientnum) ? 1 : 0; @@ -84,6 +86,48 @@ void PlayfabUser_t::gameEnd() PlayFab::PlayFabEventsAPI::WriteTelemetryEvents(eventRequest, OnEventsWrite, OnCloudScriptFailure); } +void PlayfabUser_t::biomeLeave() +{ + if ( !bLoggedIn ) + { + return; + } + + if ( gameModeManager.getMode() != GameModeManager_t::GAME_MODE_DEFAULT ) + { + return; + } + PlayFab::EventsModels::WriteEventsRequest eventRequest; + PlayFab::EventsModels::EventContents eventContent; + eventContent.EventNamespace = "custom.game"; + eventContent.Name = "biomeleave"; + eventContent.Payload["class"] = client_classes[clientnum]; + eventContent.Payload["multiplayer"] = multiplayer; + int players = 1; + if ( multiplayer == SERVER || (multiplayer == SINGLE && splitscreen) ) + { + for ( int i = 1; i < MAXPLAYERS; ++i ) + { + if ( !client_disconnected[i] ) + { + ++players; + } + } + } + eventContent.Payload["level"] = currentlevel; + eventContent.Payload["secret"] = secretlevel; + eventContent.Payload["numplayers"] = players; + eventContent.Payload["version"] = VERSION; + eventContent.Payload["splitscreen"] = (multiplayer == SINGLE && splitscreen) ? 1 : 0; + eventContent.Payload["race"] = stats[clientnum]->playerRace; + eventContent.Payload["charlvl"] = stats[clientnum]->LVL; + eventContent.Payload["appearance"] = stats[clientnum]->stat_appearance; + eventContent.Payload["sex"] = stats[clientnum]->sex; + eventContent.Payload["controller"] = inputs.hasController(clientnum) ? 1 : 0; + eventRequest.Events.push_back(eventContent); + PlayFab::PlayFabEventsAPI::WriteTelemetryEvents(eventRequest, OnEventsWrite, OnCloudScriptFailure); +} + void PlayfabUser_t::gameBegin() { if ( !bLoggedIn ) @@ -152,11 +196,13 @@ void PlayfabUser_t::globalStat(int index, int player) { eventContent.Payload["class"] = client_classes[player]; eventContent.Payload["race"] = stats[player]->playerRace; + eventContent.Payload["charlvl"] = stats[player]->LVL; } else { eventContent.Payload["class"] = -1; eventContent.Payload["race"] = -1; + eventContent.Payload["charlvl"] = -1; } eventRequest.Events.push_back(eventContent); PlayFab::PlayFabEventsAPI::WriteTelemetryEvents(eventRequest, OnEventsWrite, OnCloudScriptFailure); diff --git a/src/playfab.hpp b/src/playfab.hpp index e0b47f8d0..9b1e87b5d 100644 --- a/src/playfab.hpp +++ b/src/playfab.hpp @@ -49,6 +49,7 @@ class PlayfabUser_t void getLeaderboardTop100Alternate(std::string lid); void gameBegin(); void gameEnd(); + void biomeLeave(); void compendiumResearch(std::string category, std::string section); void globalStat(int index, int player);