From 00421b2374bf2506c1e722a07944193400bea12d Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Mon, 20 Apr 2026 20:32:25 -0700
Subject: [PATCH] Added more Steam timeline events
---
game/objects.h | 9 +++++++++
game/steam.cpp | 36 ++++++++++++++++++++++++++++++++++++
game/steam.h | 9 +++++++++
3 files changed, 54 insertions(+)
diff --git a/game/objects.h b/game/objects.h
index 941a5e79..8fdda619 100644
--- a/game/objects.h
+++ b/game/objects.h
@@ -44,38 +44,45 @@ class Prize : public Object {
/* -- They got machine guns! */
ship->SetSpecial(MACHINE_GUNS);
UnlockSinglePlayerAchievement("ACHIEVEMENT_PRIZE_MACHINE_GUNS");
+ AddSteamTimelineEvent(STEAM_TIMELINE_EVENT_PRIZE_MACHINE_GUNS);
break;
case 1:
/* -- They got Air brakes */
ship->SetSpecial(AIR_BRAKES);
UnlockSinglePlayerAchievement("ACHIEVEMENT_PRIZE_AIR_BRAKES");
+ AddSteamTimelineEvent(STEAM_TIMELINE_EVENT_PRIZE_AIR_BRAKES);
break;
case 2:
/* -- They might get Lucky */
ship->SetSpecial(LUCKY_IRISH);
UnlockSinglePlayerAchievement("ACHIEVEMENT_PRIZE_LUCK");
+ AddSteamTimelineEvent(STEAM_TIMELINE_EVENT_PRIZE_LUCK);
break;
case 3:
/* -- They triple fire */
ship->SetSpecial(TRIPLE_FIRE);
UnlockSinglePlayerAchievement("ACHIEVEMENT_PRIZE_TRIPLE_FIRE");
+ AddSteamTimelineEvent(STEAM_TIMELINE_EVENT_PRIZE_TRIPLE_FIRE);
break;
case 4:
/* -- They got long range */
ship->SetSpecial(LONG_RANGE);
UnlockSinglePlayerAchievement("ACHIEVEMENT_PRIZE_LONG_RANGE");
+ AddSteamTimelineEvent(STEAM_TIMELINE_EVENT_PRIZE_LONG_RANGE);
break;
case 5:
/* -- They got more shields */
ship->IncrShieldLevel((MAX_SHIELD/5)+
FastRandom(MAX_SHIELD/2));
UnlockSinglePlayerAchievement("ACHIEVEMENT_PRIZE_SHIELDS");
+ AddSteamTimelineEvent(STEAM_TIMELINE_EVENT_PRIZE_SHIELDS);
break;
case 6:
/* -- Put 'em on ICE */
sound->PlaySound(gFreezeSound, 4);
gFreezeTime = FREEZE_DURATION;
UnlockSinglePlayerAchievement("ACHIEVEMENT_PRIZE_FREEZING");
+ AddSteamTimelineEvent(STEAM_TIMELINE_EVENT_PRIZE_FREEZING);
break;
case 7:
/* Blow up everything */
@@ -96,6 +103,7 @@ class Prize : public Object {
}
gShakeTime = SHAKE_DURATION;
UnlockSinglePlayerAchievement("ACHIEVEMENT_PRIZE_EXPLOSION");
+ AddSteamTimelineEvent(STEAM_TIMELINE_EVENT_PRIZE_EXPLOSION);
break;
}
sound->PlaySound(gGotPrize, 4);
@@ -255,6 +263,7 @@ class DamagedShip : public Object {
ship->IncrLives(1);
sound->PlaySound(gSavedShipSound, 4);
UnlockSinglePlayerAchievement("ACHIEVEMENT_GOOD_SAMARITAN");
+ AddSteamTimelineEvent(STEAM_TIMELINE_EVENT_FREE_LIFE);
}
return(1);
}
diff --git a/game/steam.cpp b/game/steam.cpp
index e297fff0..0f98c8de 100644
--- a/game/steam.cpp
+++ b/game/steam.cpp
@@ -254,6 +254,42 @@ void SteamInterface::AddSteamTimelineEvent(STEAM_TIMELINE_EVENT event)
title = "Nova";
icon = "steam_explosion";
break;
+ case STEAM_TIMELINE_EVENT_FREE_LIFE:
+ title = "Free Life";
+ icon = "steam_heart";
+ break;
+ case STEAM_TIMELINE_EVENT_PRIZE_MACHINE_GUNS:
+ title = "Machine Guns";
+ icon = "steam_chest";
+ break;
+ case STEAM_TIMELINE_EVENT_PRIZE_AIR_BRAKES:
+ title = "Air Brakes";
+ icon = "steam_chest";
+ break;
+ case STEAM_TIMELINE_EVENT_PRIZE_LUCK:
+ title = "Luck";
+ icon = "steam_chest";
+ break;
+ case STEAM_TIMELINE_EVENT_PRIZE_TRIPLE_FIRE:
+ title = "Triple Fire";
+ icon = "steam_chest";
+ break;
+ case STEAM_TIMELINE_EVENT_PRIZE_LONG_RANGE:
+ title = "Long Range";
+ icon = "steam_chest";
+ break;
+ case STEAM_TIMELINE_EVENT_PRIZE_SHIELDS:
+ title = "Shields";
+ icon = "steam_chest";
+ break;
+ case STEAM_TIMELINE_EVENT_PRIZE_FREEZING:
+ title = "Freezing";
+ icon = "steam_chest";
+ break;
+ case STEAM_TIMELINE_EVENT_PRIZE_EXPLOSION:
+ title = "Explosion";
+ icon = "steam_chest";
+ break;
default:
break;
}
diff --git a/game/steam.h b/game/steam.h
index c93497ce..061669fa 100644
--- a/game/steam.h
+++ b/game/steam.h
@@ -42,6 +42,15 @@ enum STEAM_TIMELINE_EVENT
STEAM_TIMELINE_EVENT_MINE,
STEAM_TIMELINE_EVENT_GRAVITY,
STEAM_TIMELINE_EVENT_NOVA,
+ STEAM_TIMELINE_EVENT_FREE_LIFE,
+ STEAM_TIMELINE_EVENT_PRIZE_MACHINE_GUNS,
+ STEAM_TIMELINE_EVENT_PRIZE_AIR_BRAKES,
+ STEAM_TIMELINE_EVENT_PRIZE_LUCK,
+ STEAM_TIMELINE_EVENT_PRIZE_TRIPLE_FIRE,
+ STEAM_TIMELINE_EVENT_PRIZE_LONG_RANGE,
+ STEAM_TIMELINE_EVENT_PRIZE_SHIELDS,
+ STEAM_TIMELINE_EVENT_PRIZE_FREEZING,
+ STEAM_TIMELINE_EVENT_PRIZE_EXPLOSION,
};
typedef Uint32 RemotePlaySessionID_t;