1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2025-09-12 07:16:01 +00:00

rewritten undo: part 1

This commit is contained in:
Zeno Rogue
2020-02-29 17:58:59 +01:00
parent eb15070ac4
commit e564622a48
17 changed files with 428 additions and 400 deletions

View File

@@ -187,6 +187,8 @@ void achievement_gain(const char* s, char flags IS(0)) {
EX void achievement_collection(eItem it) {
if(cheater) return;
if(randomPatternsMode) return;
LATE( achievement_collection(it); )
int q = items[it];
if(it == itTreat && q == 50 && (geometry == gSphere || geometry == gElliptic) && BITRUNCATED)
@@ -518,6 +520,8 @@ EX void achievement_count(const string& s, int current, int prev) {
if(cheater) return;
if(shmup::on) return;
if(randomPatternsMode) return;
LATE( achievement_count(s, current, prev); )
if(s == "GOLEM" && current >= 5)
achievement_gain("GOLEM2");
if(s == "GOLEM" && current >= 10)
@@ -563,6 +567,7 @@ int specific_what = 0;
EX void improve_score(int i, eItem what) {
if(offlineMode) return;
LATE( improve_score(i, what); )
#ifdef HAVE_ACHIEVEMENTS
if(haveLeaderboard(i)) updateHi(what, get_currentscore(i));
if(items[what] && haveLeaderboard(i)) {
@@ -579,6 +584,7 @@ EX void achievement_score(int cat, int number) {
if(offlineMode) return;
#ifdef HAVE_ACHIEVEMENTS
if(cheater) return;
LATE( achievement_score(cat, number); )
if(cat == LB_HALLOWEEN) {
if(geometry != gSphere && geometry != gElliptic)
return;
@@ -597,6 +603,7 @@ EX void achievement_score(int cat, int number) {
}
EX void improveItemScores() {
LATE( improveItemScores(); )
for(int i=1; i<=12; i++) improve_score(i, eItem(i));
improve_score(17, itOrbYendor);
improve_score(18, itFernFlower);
@@ -669,6 +676,8 @@ int next_stat_tick;
EX void achievement_final(bool really_final) {
if(offlineMode) return;
LATE( achievement_final(really_final); )
#ifdef HAVE_ACHIEVEMENTS
if(ticks > next_stat_tick) {
upload_score(LB_STATISTICS, time(NULL));
@@ -778,6 +787,7 @@ EX void check_total_victory() {
if(!items[itHolyGrail]) return;
if(items[itHyperstone] < 50) return;
if(!princess::reviveAt) return;
LATE( check_total_victory(); )
hadtotalvictory = true;
achievement_gain("TOTALVICTORY");
}
@@ -798,6 +808,7 @@ EX void achievement_victory(bool hyper) {
if(peace::on) return;
if(tactic::on) return;
if(chaosmode) return;
LATE( achievement_victory(hyper); )
DEBB(DF_STEAM, ("after checks"))
int t = getgametime();