diff --git a/.cvsignore b/.gitignore similarity index 100% rename from .cvsignore rename to .gitignore diff --git a/Makefile b/Makefile deleted file mode 100644 index 01f3395..0000000 --- a/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -# Makefile for source rpm: alex4 -# $Id: Makefile,v 1.1 2006/11/03 15:34:36 jwrdegoede Exp $ -NAME := alex4 -SPECFILE = $(firstword $(wildcard *.spec)) - -define find-makefile-common -for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$d/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done -endef - -MAKEFILE_COMMON := $(shell $(find-makefile-common)) - -ifeq ($(MAKEFILE_COMMON),) -# attept a checkout -define checkout-makefile-common -test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2 -endef - -MAKEFILE_COMMON := $(shell $(checkout-makefile-common)) -endif - -include $(MAKEFILE_COMMON) diff --git a/alex4-fcommon-fix.patch b/alex4-fcommon-fix.patch new file mode 100644 index 0000000..5ef36b0 --- /dev/null +++ b/alex4-fcommon-fix.patch @@ -0,0 +1,177 @@ +diff -ur alex4src/src/bullet.c alex4src.nre/src/bullet.c +--- alex4src/src/bullet.c 2003-07-26 12:53:52.000000000 +0200 ++++ alex4src.nre/src/bullet.c 2020-02-14 16:55:54.227165835 +0100 +@@ -26,6 +26,8 @@ + #include "timer.h" + #include "../data/data.h" + ++// the bullets themselves ++Tbullet bullet[MAX_BULLETS]; + + // sets values on a bullet + void set_bullet(Tbullet *b, int x, int y, double dx, double dy, BITMAP *bmp, int bad) { +diff -ur alex4src/src/bullet.h alex4src.nre/src/bullet.h +--- alex4src/src/bullet.h 2020-02-14 20:21:00.557446660 +0100 ++++ alex4src.nre/src/bullet.h 2020-02-14 16:55:54.227165835 +0100 +@@ -42,7 +42,7 @@ + #define MAX_BULLETS 64 + + // the bullets themselves +-Tbullet bullet[MAX_BULLETS]; ++extern Tbullet bullet[MAX_BULLETS]; + + // functions + void reset_bullets(Tbullet *b, int max); +diff -ur alex4src/src/edit.c alex4src.nre/src/edit.c +--- alex4src/src/edit.c 2020-02-14 20:21:00.559446658 +0100 ++++ alex4src.nre/src/edit.c 2020-02-14 20:14:07.160857305 +0100 +@@ -33,8 +33,6 @@ + int edit_tile = 0; + // path to current map + char edit_path_and_file[1024]; +-// datafile to use +-DATAFILE *data; + // current edit mode + int edit_mode; + +diff -ur alex4src/src/main.h alex4src.nre/src/main.h +--- alex4src/src/main.h 2020-02-14 20:21:00.556446662 +0100 ++++ alex4src.nre/src/main.h 2020-02-14 20:13:57.681842152 +0100 +@@ -59,6 +59,7 @@ + #define SMPL_TALK 24 + #define SMPL_BEAM 25 + ++extern DATAFILE *data; + + // functions + char *get_init_string(); +diff -ur alex4src/src/particle.c alex4src.nre/src/particle.c +--- alex4src/src/particle.c 2003-07-26 12:53:52.000000000 +0200 ++++ alex4src.nre/src/particle.c 2020-02-14 20:17:53.166697996 +0100 +@@ -21,16 +21,11 @@ + + + ++#include "main.h" + #include "particle.h" + +-// pointer to datafile +-DATAFILE *data; +- +- +-// set datafile to use +-void set_datafile(DATAFILE *d) { +- data = d; +-} ++// the particles themselves ++Tparticle particle[MAX_PARTICLES]; + + + // inits variables in a particle +diff -ur alex4src/src/particle.h alex4src.nre/src/particle.h +--- alex4src/src/particle.h 2020-02-14 20:21:00.555446663 +0100 ++++ alex4src.nre/src/particle.h 2020-02-14 20:15:57.210817230 +0100 +@@ -42,10 +42,9 @@ + + + // the particles themselves +-Tparticle particle[MAX_PARTICLES]; ++extern Tparticle particle[MAX_PARTICLES]; + + // functions +-void set_datafile(DATAFILE *d); + void reset_particles(Tparticle *p, int max); + Tparticle *get_free_particle(Tparticle *p, int max); + void set_particle(Tparticle *p, int x, int y, double dx, double dy, int color, int life, int bmp); +diff -ur alex4src/src/player.c alex4src.nre/src/player.c +--- alex4src/src/player.c 2003-07-26 12:53:52.000000000 +0200 ++++ alex4src.nre/src/player.c 2020-02-14 16:55:54.229165835 +0100 +@@ -25,6 +25,9 @@ + #include "timer.h" + #include "../data/data.h" + ++// the player ++Tplayer player; ++ + // draws the player depending on his state + void draw_player(BITMAP *bmp, Tplayer *p, int x, int y) { + BITMAP *head, *body; +diff -ur alex4src/src/player.h alex4src.nre/src/player.h +--- alex4src/src/player.h 2020-02-14 20:21:00.554446664 +0100 ++++ alex4src.nre/src/player.h 2020-02-14 16:55:54.229165835 +0100 +@@ -53,7 +53,7 @@ + + + // the player +-Tplayer player; ++extern Tplayer player; + + // functions + void draw_player(BITMAP *bmp, Tplayer *p, int x, int y); +diff -ur alex4src/src/script.c alex4src.nre/src/script.c +--- alex4src/src/script.c 2020-02-14 20:21:00.560446657 +0100 ++++ alex4src.nre/src/script.c 2020-02-14 20:14:25.441886527 +0100 +@@ -33,9 +33,8 @@ + // silly value + #define NO_CHANGE -3249587 + +- +-// datafile to use +-DATAFILE *data; ++// array holding the sounds ids ++int active_sounds[MAX_SCRIPT_SOUNDS]; + // internal buffers + BITMAP *buffer; + BITMAP *swap_buffer; +diff -ur alex4src/src/script.h alex4src.nre/src/script.h +--- alex4src/src/script.h 2020-02-14 20:21:00.556446662 +0100 ++++ alex4src.nre/src/script.h 2020-02-14 16:55:54.230165835 +0100 +@@ -42,7 +42,7 @@ + // max number of sounds played by the script + #define MAX_SCRIPT_SOUNDS 16 + // array holding the sounds ids +-int active_sounds[MAX_SCRIPT_SOUNDS]; ++extern int active_sounds[MAX_SCRIPT_SOUNDS]; + + + // functions +diff -ur alex4src/src/timer.c alex4src.nre/src/timer.c +--- alex4src/src/timer.c 2020-02-14 20:21:00.557446660 +0100 ++++ alex4src.nre/src/timer.c 2020-02-14 16:55:54.226165836 +0100 +@@ -23,6 +23,14 @@ + #include "allegro.h" + #include "timer.h" + ++// the variables used by the timers ++volatile int frame_count; ++volatile int fps; ++volatile int logic_count; ++volatile int lps; ++volatile int cycle_count; ++volatile int game_count; ++ + // keeps track of frames each second + void fps_counter(void) { + fps = frame_count; +diff -ur alex4src/src/timer.h alex4src.nre/src/timer.h +--- alex4src/src/timer.h 2020-02-14 20:21:00.556446662 +0100 ++++ alex4src.nre/src/timer.h 2020-02-14 16:55:54.227165835 +0100 +@@ -24,12 +24,12 @@ + #define _TIMERS_H_ + + // the variables used by the timers +-volatile int frame_count; +-volatile int fps; +-volatile int logic_count; +-volatile int lps; +-volatile int cycle_count; +-volatile int game_count; ++extern volatile int frame_count; ++extern volatile int fps; ++extern volatile int logic_count; ++extern volatile int lps; ++extern volatile int cycle_count; ++extern volatile int game_count; + + + // functions diff --git a/alex4-ini-comment.patch b/alex4-ini-comment.patch new file mode 100644 index 0000000..fe29d03 --- /dev/null +++ b/alex4-ini-comment.patch @@ -0,0 +1,19 @@ +diff -up alex4src/alex4.ini~ alex4src/alex4.ini +--- alex4src/alex4.ini~ 2003-07-26 12:55:26.000000000 +0200 ++++ alex4src/alex4.ini 2017-09-08 11:50:17.095282921 +0200 +@@ -1,12 +1,11 @@ + ############################################################## + # +-# Configuration file for Alex 4 (v1.1) ++# Example configuration file for Alex 4 (v1.1) + # + ############################################################## + # +-# If you lose control of the contents of this file +-# and wants to restore to the defaults, you will have +-# to reinstall the game. Conclusion: Handle with care! ++# To make cchanges to alex4's configuration copy this file to ++# ~/.alex4/alex4.ini and edit it. + # + ############################################################## + diff --git a/alex4-unix.patch b/alex4-unix.patch index 0de8031..b0b3b70 100644 --- a/alex4-unix.patch +++ b/alex4-unix.patch @@ -83,7 +83,7 @@ w = get_config_int("graphics", "f_width", 640); h = get_config_int("graphics", "f_height", 480); } -@@ -672,10 +681,10 @@ +@@ -672,7 +681,7 @@ h = get_config_int("graphics", "w_height", 480); } @@ -91,11 +91,7 @@ + log2file(" entering gfx mode set in alex4.ini (%dx%d %s)", w, h, (get_config_int("graphics", "fullscreen", 1) ? "full" : "win")); if (set_gfx_mode( -- (get_config_int("graphics", "fullscreen", 0) ? GFX_AUTODETECT_FULLSCREEN : GFX_AUTODETECT_WINDOWED), -+ (get_config_int("graphics", "fullscreen", 1) ? GFX_AUTODETECT_FULLSCREEN : GFX_AUTODETECT_WINDOWED), - w, h, 0, 0)) { - log2file(" *** failed"); - log2file(" entering gfx mode (640x480 windowed)"); + (get_config_int("graphics", "fullscreen", 0) ? GFX_AUTODETECT_FULLSCREEN : GFX_AUTODETECT_WINDOWED), @@ -695,6 +704,7 @@ textout_centre(swap_screen, font, "loading...", 320, 200, 1); blit_to_screen(swap_screen); diff --git a/alex4.appdata.xml b/alex4.appdata.xml new file mode 100644 index 0000000..8d19c63 --- /dev/null +++ b/alex4.appdata.xml @@ -0,0 +1,28 @@ + + + alex4.desktop + CC0-1.0 + GPL+ + Alex the Allegator 4 + Old school platform game + +

+ Alex the Allegator 4 is a true jump'n'run, just like the old classic ones. + Guide Alex through the jungle in order to save his girlfriend Lola from + evil humans who want to make a bag of her. +

+

+ Alex 4 is a very small game. It runs in a very low resolution with only + four colors and will not provide you with any real time video or 3D + effects. Nor will it snare you with a compelling storyline. It's only a + short platform game with a few tricks up it's sleeve. We're sure you'll + like it. +

+
+ https://obiot.github.io/Alex4-WE/readme.html + https://obiot.github.io/Alex4-WE/readme.html#play + + https://obiot.github.io/Alex4-WE/images/overview.gif + + jwrdegoede_at_fedoraproject.org +
diff --git a/alex4.desktop b/alex4.desktop index 549aa7b..392e3f8 100644 --- a/alex4.desktop +++ b/alex4.desktop @@ -1,5 +1,4 @@ [Desktop Entry] -Encoding=UTF-8 Name=Alex the Allegator 4 Comment=Old school platform game Exec=alex4 @@ -8,3 +7,4 @@ Terminal=false StartupNotify=false Type=Application Categories=Game;ArcadeGame;ActionGame; +Keywords=Game;Arcade;Platform;Retro; diff --git a/alex4.png b/alex4.png index 2c8807a..07a7ace 100644 Binary files a/alex4.png and b/alex4.png differ diff --git a/alex4.spec b/alex4.spec index e5df594..872a0d3 100644 --- a/alex4.spec +++ b/alex4.spec @@ -1,19 +1,23 @@ Name: alex4 Version: 1.0 -Release: 9%{?dist} +Release: 47%{?dist} Summary: Alex the Allegator 4 - Platform game -Group: Amusements/Games -License: GPL+ -URL: http://allegator.sourceforge.net/ -Source0: http://dl.sf.net/sourceforge/allegator/alex4src_data.zip +License: GPL-1.0-or-later +URL: https://obiot.github.io/Alex4-WE/readme.html +Source0: http://downloads.sf.net/allegator/Alex4/source%20and%20data/alex4src_data.zip Source1: alex4.desktop Source2: alex4.png +Source3: alex4.appdata.xml Patch0: alex4-unix.patch Patch1: alex4-allegro-4.2.patch Patch2: alex4-dot-files-endian-clean.patch Patch3: alex4-fsf-address.patch -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) -BuildRequires: allegro-devel dumb-devel desktop-file-utils ImageMagick +Patch4: alex4-ini-comment.patch +Patch5: alex4src-warnings.patch +Patch6: alex4-fcommon-fix.patch +BuildRequires: gcc +BuildRequires: allegro-devel dumb-devel desktop-file-utils libappstream-glib +BuildRequires: make Requires: hicolor-icon-theme %description @@ -23,64 +27,163 @@ nice colors guaranteed! %prep -%setup -q -n alex4src -%patch0 -p1 -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -sed -i 's/\r//' *.txt +%autosetup -p1 -n alex4src +sed -i 's/\r//' *.txt *.ini %build pushd src make %{?_smp_mflags} PREFIX=%{_prefix} \ - CFLAGS="$RPM_OPT_FLAGS -Wno-deprecated-declarations" + CFLAGS="$RPM_OPT_FLAGS -Wno-deprecated-declarations -Wno-unused-result -DALLEGRO_FIX_ALIASES" popd %install -rm -rf $RPM_BUILD_ROOT pushd src make install PREFIX=$RPM_BUILD_ROOT%{_prefix} popd # below is the desktop file and icon stuff. mkdir -p $RPM_BUILD_ROOT%{_datadir}/applications -desktop-file-install --vendor fedora \ - --dir $RPM_BUILD_ROOT%{_datadir}/applications \ +desktop-file-install --dir $RPM_BUILD_ROOT%{_datadir}/applications \ %{SOURCE1} -mkdir -p $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/32x32/apps +mkdir -p $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/64x64/apps install -p -m 644 %{SOURCE2} \ - $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/32x32/apps - - -%clean -rm -rf $RPM_BUILD_ROOT - - -%post -touch --no-create %{_datadir}/icons/hicolor || : -if [ -x %{_bindir}/gtk-update-icon-cache ]; then - %{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || : -fi - -%postun -touch --no-create %{_datadir}/icons/hicolor || : -if [ -x %{_bindir}/gtk-update-icon-cache ]; then - %{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || : -fi + $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/64x64/apps +mkdir -p $RPM_BUILD_ROOT%{_datadir}/appdata +install -p -m 644 %{SOURCE3} $RPM_BUILD_ROOT%{_datadir}/appdata +appstream-util validate-relax --nonet \ + $RPM_BUILD_ROOT%{_datadir}/appdata/%{name}.appdata.xml %files -%defattr(-,root,root,-) -%doc license.txt readme.txt +%doc license.txt readme.txt alex4.ini %{_bindir}/%{name} %{_datadir}/%{name} -%{_datadir}/applications/fedora-%{name}.desktop -%{_datadir}/icons/hicolor/32x32/apps/%{name}.png +%{_datadir}/appdata/%{name}.appdata.xml +%{_datadir}/applications/%{name}.desktop +%{_datadir}/icons/hicolor/64x64/apps/%{name}.png %changelog +* Fri Jan 16 2026 Fedora Release Engineering - 1.0-47 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild + +* Wed Jul 23 2025 Fedora Release Engineering - 1.0-46 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Thu Jan 16 2025 Fedora Release Engineering - 1.0-45 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Wed Jul 17 2024 Fedora Release Engineering - 1.0-44 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Mon Jun 17 2024 Miroslav Suchý - 1.0-43 +- convert license to SPDX + +* Mon Jan 22 2024 Fedora Release Engineering - 1.0-42 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Jan 19 2024 Fedora Release Engineering - 1.0-41 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Wed Jul 19 2023 Fedora Release Engineering - 1.0-40 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Wed Jan 18 2023 Fedora Release Engineering - 1.0-39 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Wed Jul 20 2022 Fedora Release Engineering - 1.0-38 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Wed Jan 19 2022 Fedora Release Engineering - 1.0-37 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Wed Jul 21 2021 Fedora Release Engineering - 1.0-36 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Mon Jan 25 2021 Fedora Release Engineering - 1.0-35 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Fri Jul 31 2020 Fedora Release Engineering - 1.0-34 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jul 27 2020 Fedora Release Engineering - 1.0-33 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Fri Feb 14 2020 Hans de Goede - 1.0-32 +- Fix FTBFS (rhbz#1799146) + +* Tue Jan 28 2020 Fedora Release Engineering - 1.0-31 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Wed Jul 24 2019 Fedora Release Engineering - 1.0-30 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Thu Jan 31 2019 Fedora Release Engineering - 1.0-29 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Tue Jul 31 2018 Florian Weimer - 1.0-28 +- Rebuild with fixed binutils + +* Sun Jul 29 2018 Hans de Goede - 1.0-27 +- Fix FTBFS (rhbz#1603365) + +* Thu Jul 12 2018 Fedora Release Engineering - 1.0-26 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Wed Feb 07 2018 Fedora Release Engineering - 1.0-25 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Sun Jan 07 2018 Igor Gnatenko - 1.0-24 +- Remove obsolete scriptlets + +* Fri Sep 08 2017 Hans de Goede - 1.0-23 +- Run windowed rather then fullscreen by default +- Add example alex4.ini to the documentation (for e.g. setting fullscreen mode) +- Add appdata + +* Wed Aug 02 2017 Fedora Release Engineering - 1.0-22 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 1.0-21 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Fri Feb 10 2017 Fedora Release Engineering - 1.0-20 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Wed Feb 03 2016 Fedora Release Engineering - 1.0-19 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Tue Jun 16 2015 Fedora Release Engineering - 1.0-18 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Fri Aug 15 2014 Fedora Release Engineering - 1.0-17 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sat Jun 07 2014 Fedora Release Engineering - 1.0-16 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Sat Aug 03 2013 Fedora Release Engineering - 1.0-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Sat Feb 09 2013 Rahul Sundaram - 1.0-14 +- remove vendor tag from desktop file. https://fedorahosted.org/fpc/ticket/247 +- clean up spec to follow current guidelines + +* Wed Jul 18 2012 Fedora Release Engineering - 1.0-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Thu Jan 12 2012 Fedora Release Engineering - 1.0-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Fri Jul 15 2011 Hans de Goede - 1.0-11 +- Rebuild for new allegro-4.4 + +* Mon Feb 07 2011 Fedora Release Engineering - 1.0-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + * Fri Jul 24 2009 Fedora Release Engineering - 1.0-9 - Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild diff --git a/alex4src-warnings.patch b/alex4src-warnings.patch new file mode 100644 index 0000000..66bf30d --- /dev/null +++ b/alex4src-warnings.patch @@ -0,0 +1,33 @@ +diff -up alex4src/src/main.c~ alex4src/src/main.c +--- alex4src/src/main.c~ 2017-09-08 12:11:48.000000000 +0200 ++++ alex4src/src/main.c 2017-09-08 12:15:45.784592931 +0200 +@@ -452,7 +452,7 @@ void load_level_files(const char *filena + mode = 2; + } + else { +- char full_path_to_map[1024]; ++ char full_path_to_map[2048]; + + clear_trailing_whitespace(buf); + sprintf(full_path_to_map, "%s%s", path, buf); +@@ -2579,7 +2579,7 @@ int get_string(BITMAP *bmp, char *string + if (block == NULL) + return 1; + +- blit(bmp, block, pos_x - 1, pos_y - 1, 0, 0, block->w, block->h); ++ blit(bmp, block, pos_x - 1, pos_y - 1, 0, 0, block->w, block->h); + + clear_keybuf(); + while(1) { +diff -up alex4src/src/shooter.c~ alex4src/src/shooter.c +--- alex4src/src/shooter.c~ 2017-09-08 12:11:48.000000000 +0200 ++++ alex4src/src/shooter.c 2017-09-08 12:14:27.389952486 +0200 +@@ -903,7 +903,7 @@ void s_check_collision(Tspace_object *ar + s_var.score += 1000000; + } + else { // increase power +- s_var.power_level = MIN(s_var.power_level ++, 7); ++ s_var.power_level++; + } + play_sound_id(SMPL_HEART); +