From bb11cd800d4a2aae37e4c59ff4782f0b10209b9d Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Mon, 30 Mar 2026 05:54:50 -0700
Subject: [PATCH] Only use the kid shields for dangerous objects
---
game/game.cpp | 2 +-
game/object.h | 3 +++
game/objects.h | 8 ++++++++
game/player.h | 3 +++
4 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/game/game.cpp b/game/game.cpp
index cd81849f..ab5b814e 100644
--- a/game/game.cpp
+++ b/game/game.cpp
@@ -382,7 +382,7 @@ GamePanelDelegate::OnTick()
if (gGameInfo.IsKidMode()) {
bool enableShield = false;
OBJ_LOOP(i, gNumSprites) {
- if (gSprites[i]->Collide(gPlayers[j], false)) {
+ if (gSprites[i]->IsDangerous() && gSprites[i]->Collide(gPlayers[j], false)) {
enableShield = true;
break;
}
diff --git a/game/object.h b/game/object.h
index 942ddb59..ce5bc994 100644
--- a/game/object.h
+++ b/game/object.h
@@ -34,6 +34,9 @@ class Object {
virtual int IsPlayer(void) {
return(0);
}
+ virtual int IsDangerous(void) {
+ return(solid);
+ }
virtual int IsRock(void) {
return(0);
}
diff --git a/game/objects.h b/game/objects.h
index aa92d3d8..1a8f3809 100644
--- a/game/objects.h
+++ b/game/objects.h
@@ -28,6 +28,10 @@ class Prize : public Object {
Prize(int X, int Y, int xVel, int yVel);
~Prize() { }
+ virtual int IsDangerous(void) {
+ return(0);
+ }
+
/* When we are run over, we give prizes! */
int BeenRunOver(Object *ship) {
int i;
@@ -242,6 +246,10 @@ class DamagedShip : public Object {
DamagedShip(int X, int Y, int xVel, int yVel);
~DamagedShip() { }
+ virtual int IsDangerous(void) {
+ return(0);
+ }
+
int BeenRunOver(Object *ship) {
if (!ship->IsGhost()) {
ship->IncrLives(1);
diff --git a/game/player.h b/game/player.h
index c41cfe72..13e140e9 100644
--- a/game/player.h
+++ b/game/player.h
@@ -46,6 +46,9 @@ class Player : public Object {
virtual int IsPlayer(void) {
return(1);
}
+ virtual int IsDangerous(void) {
+ return(0);
+ }
virtual int IsGhost(void) {
return Ghost;
}