diff --git a/achievement.cpp b/achievement.cpp index 57b56b36..47b3640e 100644 --- a/achievement.cpp +++ b/achievement.cpp @@ -557,10 +557,15 @@ void improveItemScores() { improve_score(77, itSwitch); } +int next_stat_tick; + void achievement_final(bool really_final) { if(offlineMode) return; #ifdef HAVE_ACHIEVEMENTS - upload_score(LB_STATISTICS, time(NULL)); + if(ticks > next_stat_tick) { + upload_score(LB_STATISTICS, time(NULL)); + next_stat_tick = ticks + 600000; + } if(cheater) return; #if CAP_TOUR if(tour::on) return; @@ -584,9 +589,9 @@ void achievement_final(bool really_final) { return; } -#ifdef CAP_DAILY +#if CAP_DAILY if(daily::on) { - upload_score(daily::find_daily_lbid(daily::daily_id), gold(NO_LOVE)); + daily::uploadscore(really_final); return; } #endif diff --git a/game.cpp b/game.cpp index a5924af9..9ae0ee32 100644 --- a/game.cpp +++ b/game.cpp @@ -3286,6 +3286,9 @@ void gainItem(eItem it) { items[it]++; if(it != itLotus) updateHi(it, items[it]); achievement_collection(it, gold(), g); multi::treasures[multi::cpid]++; +#if CAP_DAILY + if(daily::on) achievement_final(false); +#endif } string itemcounter(int qty) { diff --git a/hyper.h b/hyper.h index f95fe529..1c44722e 100644 --- a/hyper.h +++ b/hyper.h @@ -3294,6 +3294,8 @@ namespace daily { void showMenu(); int find_daily_lbid(int id); bool prevent_spawn_treasure_on(cell *c); + void handleQuit(int sev); + void uploadscore(bool really_final); } enum eOrbLandRelation {