aboutsummaryrefslogtreecommitdiffstats
path: root/games
diff options
context:
space:
mode:
authorpav <pav@FreeBSD.org>2004-01-27 20:13:03 +0800
committerpav <pav@FreeBSD.org>2004-01-27 20:13:03 +0800
commitaaaba425f7d0a7e5c3139ad9b7328cefa3a6a37b (patch)
treeff5bfa5fc97505de9f675f45889396040028e1ce /games
parentc5880ca7e991279128c929dbbc111c2fed2b67b8 (diff)
downloadfreebsd-ports-graphics-aaaba425f7d0a7e5c3139ad9b7328cefa3a6a37b.tar.gz
freebsd-ports-graphics-aaaba425f7d0a7e5c3139ad9b7328cefa3a6a37b.tar.zst
freebsd-ports-graphics-aaaba425f7d0a7e5c3139ad9b7328cefa3a6a37b.zip
Add 4stAttack, a game in which you have to try to out-smart your
opponent. The goal of the game is to connect four of stones in a straight line. This can be horizontaly, vertically and even diagonnally. http://forcedattack.sourceforge.net/ PR: ports/61929 Submitted by: Jean-Yves Lefort <jylefort@brutele.be>
Diffstat (limited to 'games')
-rw-r--r--games/4stattack/Makefile257
-rw-r--r--games/4stattack/distinfo1
-rw-r--r--games/4stattack/files/patch-4stattack15
-rw-r--r--games/4stattack/pkg-descr9
-rw-r--r--games/4stattack/pkg-plist253
-rw-r--r--games/4stattack/scripts/py-compile92
-rw-r--r--games/Makefile1
7 files changed, 628 insertions, 0 deletions
diff --git a/games/4stattack/Makefile b/games/4stattack/Makefile
new file mode 100644
index 00000000000..822857f71b1
--- /dev/null
+++ b/games/4stattack/Makefile
@@ -0,0 +1,257 @@
+# New ports collection makefile for: 4stAttack
+# Date created: 26 Jan 2004
+# Whom: Jean-Yves Lefort <jylefort@brutele.be>
+#
+# $FreeBSD$
+#
+
+PORTNAME= 4stattack
+PORTVERSION= 2.1.4
+CATEGORIES= games
+MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
+MASTER_SITE_SUBDIR= forcedattack
+DISTNAME= 4stAttack-${PORTVERSION}
+
+MAINTAINER= jylefort@brutele.be
+COMMENT= Connect four stones in a straight line
+
+RUN_DEPENDS= ${PYTHON_SITELIBDIR}/pygame/__init__.py:${PORTSDIR}/devel/py-game
+
+USE_PYTHON= yes
+USE_X_PREFIX= yes
+USE_REINPLACE= yes
+NO_BUILD= yes
+
+PYC= PYTHON="${PYTHON_CMD}" ${SH} ${SCRIPTDIR}/py-compile
+
+post-patch:
+ @${REINPLACE_CMD} -e 's|%%DATADIR%%|${DATADIR}|; s|%%PYTHON%%|${PYTHON_CMD}|' \
+ ${WRKSRC}/4stattack
+
+do-install:
+ ${MKDIR} ${PREFIX}/bin
+ ${INSTALL_SCRIPT} \
+ ${WRKSRC}/4stattack \
+ ${PREFIX}/bin
+
+ ${MKDIR} ${DATADIR}
+ ${INSTALL_DATA} \
+ ${WRKSRC}/4stattack.py \
+ ${WRKSRC}/animator.py \
+ ${WRKSRC}/board.py \
+ ${WRKSRC}/chat.py \
+ ${WRKSRC}/creditsscreen.py \
+ ${WRKSRC}/endgamedialog.py \
+ ${WRKSRC}/endscreen.py \
+ ${WRKSRC}/game.py \
+ ${WRKSRC}/gamelog.py \
+ ${WRKSRC}/gamescreen.py \
+ ${WRKSRC}/inisettings.py \
+ ${WRKSRC}/multiplayerscreen.py \
+ ${WRKSRC}/quit.py \
+ ${WRKSRC}/rules.py \
+ ${WRKSRC}/scoremap.py \
+ ${WRKSRC}/setini.py \
+ ${WRKSRC}/settings.ini \
+ ${WRKSRC}/settingsscreen.py \
+ ${WRKSRC}/startscreen.py \
+ ${WRKSRC}/technical.ttf \
+ ${WRKSRC}/testgui.py \
+ ${WRKSRC}/testini.py \
+ ${WRKSRC}/themeresizer.py \
+ ${WRKSRC}/themeresizer.sh \
+ ${WRKSRC}/version \
+ ${DATADIR}
+ ${PYC} --basedir ${DATADIR} \
+ ${DATADIR}/4stattack.py \
+ ${DATADIR}/animator.py \
+ ${DATADIR}/board.py \
+ ${DATADIR}/chat.py \
+ ${DATADIR}/creditsscreen.py \
+ ${DATADIR}/endgamedialog.py \
+ ${DATADIR}/endscreen.py \
+ ${DATADIR}/game.py \
+ ${DATADIR}/gamelog.py \
+ ${DATADIR}/gamescreen.py \
+ ${DATADIR}/inisettings.py \
+ ${DATADIR}/multiplayerscreen.py \
+ ${DATADIR}/quit.py \
+ ${DATADIR}/rules.py \
+ ${DATADIR}/scoremap.py \
+ ${DATADIR}/setini.py \
+ ${DATADIR}/settingsscreen.py \
+ ${DATADIR}/startscreen.py \
+ ${DATADIR}/testgui.py \
+ ${DATADIR}/testini.py \
+ ${DATADIR}/themeresizer.py
+
+ ${MKDIR} ${DATADIR}/data/music
+ ${INSTALL_DATA} \
+ ${WRKSRC}/data/music/4stattack.ogg \
+ ${DATADIR}/data/music
+
+ ${MKDIR} ${DATADIR}/data/themes/clean
+ ${INSTALL_DATA} \
+ ${WRKSRC}/data/themes/clean/audio.ini \
+ ${WRKSRC}/data/themes/clean/graphics.ini \
+ ${DATADIR}/data/themes/clean
+
+ ${MKDIR} ${DATADIR}/data/themes/clean/1024x768
+ ${INSTALL_DATA} \
+ ${WRKSRC}/data/themes/clean/1024x768/awaitingconnection.png \
+ ${WRKSRC}/data/themes/clean/1024x768/back.png \
+ ${WRKSRC}/data/themes/clean/1024x768/background.png \
+ ${WRKSRC}/data/themes/clean/1024x768/chakie.png \
+ ${WRKSRC}/data/themes/clean/1024x768/connecting-plain.png \
+ ${WRKSRC}/data/themes/clean/1024x768/connecting.png \
+ ${WRKSRC}/data/themes/clean/1024x768/credits.png \
+ ${WRKSRC}/data/themes/clean/1024x768/cursor.png \
+ ${WRKSRC}/data/themes/clean/1024x768/draw.png \
+ ${WRKSRC}/data/themes/clean/1024x768/error-connecting.png \
+ ${WRKSRC}/data/themes/clean/1024x768/frame.png \
+ ${WRKSRC}/data/themes/clean/1024x768/frm_bl.png \
+ ${WRKSRC}/data/themes/clean/1024x768/frm_br.png \
+ ${WRKSRC}/data/themes/clean/1024x768/frm_left.png \
+ ${WRKSRC}/data/themes/clean/1024x768/frm_right.png \
+ ${WRKSRC}/data/themes/clean/1024x768/frm_tl.png \
+ ${WRKSRC}/data/themes/clean/1024x768/frm_top.png \
+ ${WRKSRC}/data/themes/clean/1024x768/frm_tr.png \
+ ${WRKSRC}/data/themes/clean/1024x768/fullscreen.png \
+ ${WRKSRC}/data/themes/clean/1024x768/graphics.png \
+ ${WRKSRC}/data/themes/clean/1024x768/green-zebra.png \
+ ${WRKSRC}/data/themes/clean/1024x768/grid.png \
+ ${WRKSRC}/data/themes/clean/1024x768/hostagame.png \
+ ${WRKSRC}/data/themes/clean/1024x768/joinagame.png \
+ ${WRKSRC}/data/themes/clean/1024x768/keepplaying.png \
+ ${WRKSRC}/data/themes/clean/1024x768/korruptor.png \
+ ${WRKSRC}/data/themes/clean/1024x768/locations.ini \
+ ${WRKSRC}/data/themes/clean/1024x768/logo.png \
+ ${WRKSRC}/data/themes/clean/1024x768/multiplayer.png \
+ ${WRKSRC}/data/themes/clean/1024x768/music.png \
+ ${WRKSRC}/data/themes/clean/1024x768/ok.png \
+ ${WRKSRC}/data/themes/clean/1024x768/playervscpu.png \
+ ${WRKSRC}/data/themes/clean/1024x768/programming.png \
+ ${WRKSRC}/data/themes/clean/1024x768/pygame.png \
+ ${WRKSRC}/data/themes/clean/1024x768/quit.png \
+ ${WRKSRC}/data/themes/clean/1024x768/quitgame.png \
+ ${WRKSRC}/data/themes/clean/1024x768/radio-off.png \
+ ${WRKSRC}/data/themes/clean/1024x768/radio-on.png \
+ ${WRKSRC}/data/themes/clean/1024x768/radio.png \
+ ${WRKSRC}/data/themes/clean/1024x768/selector.png \
+ ${WRKSRC}/data/themes/clean/1024x768/selector1.png \
+ ${WRKSRC}/data/themes/clean/1024x768/selector2.png \
+ ${WRKSRC}/data/themes/clean/1024x768/settings.png \
+ ${WRKSRC}/data/themes/clean/1024x768/slm-text.png \
+ ${WRKSRC}/data/themes/clean/1024x768/slm.png \
+ ${WRKSRC}/data/themes/clean/1024x768/start.png \
+ ${WRKSRC}/data/themes/clean/1024x768/stone_1.png \
+ ${WRKSRC}/data/themes/clean/1024x768/stone_2.png \
+ ${WRKSRC}/data/themes/clean/1024x768/thanks.png \
+ ${WRKSRC}/data/themes/clean/1024x768/wannaquit.png \
+ ${WRKSRC}/data/themes/clean/1024x768/won_1.png \
+ ${WRKSRC}/data/themes/clean/1024x768/won_2.png \
+ ${DATADIR}/data/themes/clean/1024x768
+
+ ${MKDIR} ${DATADIR}/gui
+ ${INSTALL_DATA} \
+ ${WRKSRC}/gui/__init__.py \
+ ${WRKSRC}/gui/button.py \
+ ${WRKSRC}/gui/canvas.py \
+ ${WRKSRC}/gui/checkbox.py \
+ ${WRKSRC}/gui/dialog.py \
+ ${WRKSRC}/gui/editfield.py \
+ ${WRKSRC}/gui/fader.py \
+ ${WRKSRC}/gui/image.py \
+ ${WRKSRC}/gui/label.py \
+ ${WRKSRC}/gui/messagebox.py \
+ ${WRKSRC}/gui/progress.py \
+ ${WRKSRC}/gui/widget.py \
+ ${WRKSRC}/gui/widget_manager.py \
+ ${DATADIR}/gui
+ ${PYC} --basedir ${DATADIR}/gui \
+ ${DATADIR}/gui/__init__.py \
+ ${DATADIR}/gui/button.py \
+ ${DATADIR}/gui/canvas.py \
+ ${DATADIR}/gui/checkbox.py \
+ ${DATADIR}/gui/dialog.py \
+ ${DATADIR}/gui/editfield.py \
+ ${DATADIR}/gui/fader.py \
+ ${DATADIR}/gui/image.py \
+ ${DATADIR}/gui/label.py \
+ ${DATADIR}/gui/messagebox.py \
+ ${DATADIR}/gui/progress.py \
+ ${DATADIR}/gui/widget.py \
+ ${DATADIR}/gui/widget_manager.py
+
+ ${MKDIR} ${DATADIR}/gui/dialogs
+ ${INSTALL_DATA} \
+ ${WRKSRC}/gui/dialogs/dialog \
+ ${WRKSRC}/gui/dialogs/end_game.py \
+ ${WRKSRC}/gui/dialogs/info_map.py \
+ ${WRKSRC}/gui/dialogs/info_scenario.py \
+ ${WRKSRC}/gui/dialogs/info_units.py \
+ ${WRKSRC}/gui/dialogs/main_dialog.py \
+ ${WRKSRC}/gui/dialogs/new_game.py \
+ ${WRKSRC}/gui/dialogs/select_scenario.py \
+ ${WRKSRC}/gui/dialogs/setup_client.py \
+ ${WRKSRC}/gui/dialogs/setup_network.py \
+ ${WRKSRC}/gui/dialogs/setup_players.py \
+ ${WRKSRC}/gui/dialogs/start_game.py \
+ ${WRKSRC}/gui/dialogs/wait_client.py \
+ ${DATADIR}/gui/dialogs
+ ${PYC} --basedir ${DATADIR}/gui/dialogs \
+ ${DATADIR}/gui/dialogs/end_game.py \
+ ${DATADIR}/gui/dialogs/info_map.py \
+ ${DATADIR}/gui/dialogs/info_scenario.py \
+ ${DATADIR}/gui/dialogs/info_units.py \
+ ${DATADIR}/gui/dialogs/main_dialog.py \
+ ${DATADIR}/gui/dialogs/new_game.py \
+ ${DATADIR}/gui/dialogs/select_scenario.py \
+ ${DATADIR}/gui/dialogs/setup_client.py \
+ ${DATADIR}/gui/dialogs/setup_network.py \
+ ${DATADIR}/gui/dialogs/setup_players.py \
+ ${DATADIR}/gui/dialogs/start_game.py \
+ ${DATADIR}/gui/dialogs/wait_client.py
+
+ ${MKDIR} ${DATADIR}/players
+ ${INSTALL_DATA} \
+ ${WRKSRC}/players/__init__.py \
+ ${WRKSRC}/players/agressive.py \
+ ${WRKSRC}/players/connectscore.py \
+ ${WRKSRC}/players/human.py \
+ ${WRKSRC}/players/minmax.py \
+ ${WRKSRC}/players/multiplayer.py \
+ ${WRKSRC}/players/multiplayer_receiver.py \
+ ${WRKSRC}/players/multiplayer_sender.py \
+ ${WRKSRC}/players/neuralai.py \
+ ${WRKSRC}/players/player.py \
+ ${WRKSRC}/players/randomai.py \
+ ${WRKSRC}/players/strategic.py \
+ ${WRKSRC}/players/treeai.py \
+ ${WRKSRC}/players/weighted.py \
+ ${DATADIR}/players
+ ${PYC} --basedir ${DATADIR}/players \
+ ${DATADIR}/players/__init__.py \
+ ${DATADIR}/players/agressive.py \
+ ${DATADIR}/players/connectscore.py \
+ ${DATADIR}/players/human.py \
+ ${DATADIR}/players/minmax.py \
+ ${DATADIR}/players/multiplayer.py \
+ ${DATADIR}/players/multiplayer_receiver.py \
+ ${DATADIR}/players/multiplayer_sender.py \
+ ${DATADIR}/players/neuralai.py \
+ ${DATADIR}/players/player.py \
+ ${DATADIR}/players/randomai.py \
+ ${DATADIR}/players/strategic.py \
+ ${DATADIR}/players/treeai.py \
+ ${DATADIR}/players/weighted.py
+
+.if !defined(NOPORTDOCS)
+ ${MKDIR} ${DOCSDIR}
+ ${INSTALL_DATA} \
+ ${WRKSRC}/changelog.txt \
+ ${WRKSRC}/credits.txt \
+ ${DOCSDIR}
+.endif
+
+.include <bsd.port.mk>
diff --git a/games/4stattack/distinfo b/games/4stattack/distinfo
new file mode 100644
index 00000000000..e83392535fa
--- /dev/null
+++ b/games/4stattack/distinfo
@@ -0,0 +1 @@
+MD5 (4stAttack-2.1.4.tar.gz) = 72a6d85d4218e938c043a6e5f0074e1b
diff --git a/games/4stattack/files/patch-4stattack b/games/4stattack/files/patch-4stattack
new file mode 100644
index 00000000000..1460ed07690
--- /dev/null
+++ b/games/4stattack/files/patch-4stattack
@@ -0,0 +1,15 @@
+--- 4stattack.orig Mon Jan 26 08:08:08 2004
++++ 4stattack Mon Jan 26 08:28:42 2004
+@@ -1,9 +1,6 @@
+ #!/bin/sh
+-FAHOME=/usr/share/forcedattack2
++FAHOME=%%DATADIR%%
+ if [ ! -f ~/.4stattackrc ]; then
+- cp $FAHOME/settings.ini ~/.4stattackrc
++ install -m 644 $FAHOME/settings.ini ~/.4stattackrc
+ fi
+-if [ -x $FAHOME/4stattack.py ]; then
+- $FAHOME/4stattack.py -ini ~/.4stattackrc
+-fi
+-
++cd $FAHOME && %%PYTHON%% 4stattack.py -ini ~/.4stattackrc
diff --git a/games/4stattack/pkg-descr b/games/4stattack/pkg-descr
new file mode 100644
index 00000000000..9076b7a9695
--- /dev/null
+++ b/games/4stattack/pkg-descr
@@ -0,0 +1,9 @@
+4st Attack is a game in which you have to try to out-smart your
+opponent. The goal of the game is to connect four of stones in a
+straight line. This can be horizontaly, vertically and even
+diagonnally.
+
+WWW: http://forcedattack.sourceforge.net/
+
+- Jean-Yves Lefort
+jylefort@brutele.be
diff --git a/games/4stattack/pkg-plist b/games/4stattack/pkg-plist
new file mode 100644
index 00000000000..a3f215d1b59
--- /dev/null
+++ b/games/4stattack/pkg-plist
@@ -0,0 +1,253 @@
+bin/4stattack
+%%DATADIR%%/4stattack.py
+%%DATADIR%%/4stattack.pyc
+%%DATADIR%%/4stattack.pyo
+%%DATADIR%%/animator.py
+%%DATADIR%%/animator.pyc
+%%DATADIR%%/animator.pyo
+%%DATADIR%%/board.py
+%%DATADIR%%/board.pyc
+%%DATADIR%%/board.pyo
+%%DATADIR%%/chat.py
+%%DATADIR%%/chat.pyc
+%%DATADIR%%/chat.pyo
+%%DATADIR%%/creditsscreen.py
+%%DATADIR%%/creditsscreen.pyc
+%%DATADIR%%/creditsscreen.pyo
+%%DATADIR%%/data/music/4stattack.ogg
+%%DATADIR%%/data/themes/clean/1024x768/awaitingconnection.png
+%%DATADIR%%/data/themes/clean/1024x768/back.png
+%%DATADIR%%/data/themes/clean/1024x768/background.png
+%%DATADIR%%/data/themes/clean/1024x768/chakie.png
+%%DATADIR%%/data/themes/clean/1024x768/connecting-plain.png
+%%DATADIR%%/data/themes/clean/1024x768/connecting.png
+%%DATADIR%%/data/themes/clean/1024x768/credits.png
+%%DATADIR%%/data/themes/clean/1024x768/cursor.png
+%%DATADIR%%/data/themes/clean/1024x768/draw.png
+%%DATADIR%%/data/themes/clean/1024x768/error-connecting.png
+%%DATADIR%%/data/themes/clean/1024x768/frame.png
+%%DATADIR%%/data/themes/clean/1024x768/frm_bl.png
+%%DATADIR%%/data/themes/clean/1024x768/frm_br.png
+%%DATADIR%%/data/themes/clean/1024x768/frm_left.png
+%%DATADIR%%/data/themes/clean/1024x768/frm_right.png
+%%DATADIR%%/data/themes/clean/1024x768/frm_tl.png
+%%DATADIR%%/data/themes/clean/1024x768/frm_top.png
+%%DATADIR%%/data/themes/clean/1024x768/frm_tr.png
+%%DATADIR%%/data/themes/clean/1024x768/fullscreen.png
+%%DATADIR%%/data/themes/clean/1024x768/graphics.png
+%%DATADIR%%/data/themes/clean/1024x768/green-zebra.png
+%%DATADIR%%/data/themes/clean/1024x768/grid.png
+%%DATADIR%%/data/themes/clean/1024x768/hostagame.png
+%%DATADIR%%/data/themes/clean/1024x768/joinagame.png
+%%DATADIR%%/data/themes/clean/1024x768/keepplaying.png
+%%DATADIR%%/data/themes/clean/1024x768/korruptor.png
+%%DATADIR%%/data/themes/clean/1024x768/locations.ini
+%%DATADIR%%/data/themes/clean/1024x768/logo.png
+%%DATADIR%%/data/themes/clean/1024x768/multiplayer.png
+%%DATADIR%%/data/themes/clean/1024x768/music.png
+%%DATADIR%%/data/themes/clean/1024x768/ok.png
+%%DATADIR%%/data/themes/clean/1024x768/playervscpu.png
+%%DATADIR%%/data/themes/clean/1024x768/programming.png
+%%DATADIR%%/data/themes/clean/1024x768/pygame.png
+%%DATADIR%%/data/themes/clean/1024x768/quit.png
+%%DATADIR%%/data/themes/clean/1024x768/quitgame.png
+%%DATADIR%%/data/themes/clean/1024x768/radio-off.png
+%%DATADIR%%/data/themes/clean/1024x768/radio-on.png
+%%DATADIR%%/data/themes/clean/1024x768/radio.png
+%%DATADIR%%/data/themes/clean/1024x768/selector.png
+%%DATADIR%%/data/themes/clean/1024x768/selector1.png
+%%DATADIR%%/data/themes/clean/1024x768/selector2.png
+%%DATADIR%%/data/themes/clean/1024x768/settings.png
+%%DATADIR%%/data/themes/clean/1024x768/slm-text.png
+%%DATADIR%%/data/themes/clean/1024x768/slm.png
+%%DATADIR%%/data/themes/clean/1024x768/start.png
+%%DATADIR%%/data/themes/clean/1024x768/stone_1.png
+%%DATADIR%%/data/themes/clean/1024x768/stone_2.png
+%%DATADIR%%/data/themes/clean/1024x768/thanks.png
+%%DATADIR%%/data/themes/clean/1024x768/wannaquit.png
+%%DATADIR%%/data/themes/clean/1024x768/won_1.png
+%%DATADIR%%/data/themes/clean/1024x768/won_2.png
+%%DATADIR%%/data/themes/clean/audio.ini
+%%DATADIR%%/data/themes/clean/graphics.ini
+%%DATADIR%%/endgamedialog.py
+%%DATADIR%%/endgamedialog.pyc
+%%DATADIR%%/endgamedialog.pyo
+%%DATADIR%%/endscreen.py
+%%DATADIR%%/endscreen.pyc
+%%DATADIR%%/endscreen.pyo
+%%DATADIR%%/game.py
+%%DATADIR%%/game.pyc
+%%DATADIR%%/game.pyo
+%%DATADIR%%/gamelog.py
+%%DATADIR%%/gamelog.pyc
+%%DATADIR%%/gamelog.pyo
+%%DATADIR%%/gamescreen.py
+%%DATADIR%%/gamescreen.pyc
+%%DATADIR%%/gamescreen.pyo
+%%DATADIR%%/gui/__init__.py
+%%DATADIR%%/gui/__init__.pyc
+%%DATADIR%%/gui/__init__.pyo
+%%DATADIR%%/gui/button.py
+%%DATADIR%%/gui/button.pyc
+%%DATADIR%%/gui/button.pyo
+%%DATADIR%%/gui/canvas.py
+%%DATADIR%%/gui/canvas.pyc
+%%DATADIR%%/gui/canvas.pyo
+%%DATADIR%%/gui/checkbox.py
+%%DATADIR%%/gui/checkbox.pyc
+%%DATADIR%%/gui/checkbox.pyo
+%%DATADIR%%/gui/dialog.py
+%%DATADIR%%/gui/dialog.pyc
+%%DATADIR%%/gui/dialog.pyo
+%%DATADIR%%/gui/dialogs/dialog
+%%DATADIR%%/gui/dialogs/end_game.py
+%%DATADIR%%/gui/dialogs/end_game.pyc
+%%DATADIR%%/gui/dialogs/end_game.pyo
+%%DATADIR%%/gui/dialogs/info_map.py
+%%DATADIR%%/gui/dialogs/info_map.pyc
+%%DATADIR%%/gui/dialogs/info_map.pyo
+%%DATADIR%%/gui/dialogs/info_scenario.py
+%%DATADIR%%/gui/dialogs/info_scenario.pyc
+%%DATADIR%%/gui/dialogs/info_scenario.pyo
+%%DATADIR%%/gui/dialogs/info_units.py
+%%DATADIR%%/gui/dialogs/info_units.pyc
+%%DATADIR%%/gui/dialogs/info_units.pyo
+%%DATADIR%%/gui/dialogs/main_dialog.py
+%%DATADIR%%/gui/dialogs/main_dialog.pyc
+%%DATADIR%%/gui/dialogs/main_dialog.pyo
+%%DATADIR%%/gui/dialogs/new_game.py
+%%DATADIR%%/gui/dialogs/new_game.pyc
+%%DATADIR%%/gui/dialogs/new_game.pyo
+%%DATADIR%%/gui/dialogs/select_scenario.py
+%%DATADIR%%/gui/dialogs/select_scenario.pyc
+%%DATADIR%%/gui/dialogs/select_scenario.pyo
+%%DATADIR%%/gui/dialogs/setup_client.py
+%%DATADIR%%/gui/dialogs/setup_client.pyc
+%%DATADIR%%/gui/dialogs/setup_client.pyo
+%%DATADIR%%/gui/dialogs/setup_network.py
+%%DATADIR%%/gui/dialogs/setup_network.pyc
+%%DATADIR%%/gui/dialogs/setup_network.pyo
+%%DATADIR%%/gui/dialogs/setup_players.py
+%%DATADIR%%/gui/dialogs/setup_players.pyc
+%%DATADIR%%/gui/dialogs/setup_players.pyo
+%%DATADIR%%/gui/dialogs/start_game.py
+%%DATADIR%%/gui/dialogs/start_game.pyc
+%%DATADIR%%/gui/dialogs/start_game.pyo
+%%DATADIR%%/gui/dialogs/wait_client.py
+%%DATADIR%%/gui/dialogs/wait_client.pyc
+%%DATADIR%%/gui/dialogs/wait_client.pyo
+%%DATADIR%%/gui/editfield.py
+%%DATADIR%%/gui/editfield.pyc
+%%DATADIR%%/gui/editfield.pyo
+%%DATADIR%%/gui/fader.py
+%%DATADIR%%/gui/fader.pyc
+%%DATADIR%%/gui/fader.pyo
+%%DATADIR%%/gui/image.py
+%%DATADIR%%/gui/image.pyc
+%%DATADIR%%/gui/image.pyo
+%%DATADIR%%/gui/label.py
+%%DATADIR%%/gui/label.pyc
+%%DATADIR%%/gui/label.pyo
+%%DATADIR%%/gui/messagebox.py
+%%DATADIR%%/gui/messagebox.pyc
+%%DATADIR%%/gui/messagebox.pyo
+%%DATADIR%%/gui/progress.py
+%%DATADIR%%/gui/progress.pyc
+%%DATADIR%%/gui/progress.pyo
+%%DATADIR%%/gui/widget.py
+%%DATADIR%%/gui/widget.pyc
+%%DATADIR%%/gui/widget.pyo
+%%DATADIR%%/gui/widget_manager.py
+%%DATADIR%%/gui/widget_manager.pyc
+%%DATADIR%%/gui/widget_manager.pyo
+%%DATADIR%%/inisettings.py
+%%DATADIR%%/inisettings.pyc
+%%DATADIR%%/inisettings.pyo
+%%DATADIR%%/multiplayerscreen.py
+%%DATADIR%%/multiplayerscreen.pyc
+%%DATADIR%%/multiplayerscreen.pyo
+%%DATADIR%%/players/__init__.py
+%%DATADIR%%/players/__init__.pyc
+%%DATADIR%%/players/__init__.pyo
+%%DATADIR%%/players/agressive.py
+%%DATADIR%%/players/agressive.pyc
+%%DATADIR%%/players/agressive.pyo
+%%DATADIR%%/players/connectscore.py
+%%DATADIR%%/players/connectscore.pyc
+%%DATADIR%%/players/connectscore.pyo
+%%DATADIR%%/players/human.py
+%%DATADIR%%/players/human.pyc
+%%DATADIR%%/players/human.pyo
+%%DATADIR%%/players/minmax.py
+%%DATADIR%%/players/minmax.pyc
+%%DATADIR%%/players/minmax.pyo
+%%DATADIR%%/players/multiplayer.py
+%%DATADIR%%/players/multiplayer.pyc
+%%DATADIR%%/players/multiplayer.pyo
+%%DATADIR%%/players/multiplayer_receiver.py
+%%DATADIR%%/players/multiplayer_receiver.pyc
+%%DATADIR%%/players/multiplayer_receiver.pyo
+%%DATADIR%%/players/multiplayer_sender.py
+%%DATADIR%%/players/multiplayer_sender.pyc
+%%DATADIR%%/players/multiplayer_sender.pyo
+%%DATADIR%%/players/neuralai.py
+%%DATADIR%%/players/neuralai.pyc
+%%DATADIR%%/players/neuralai.pyo
+%%DATADIR%%/players/player.py
+%%DATADIR%%/players/player.pyc
+%%DATADIR%%/players/player.pyo
+%%DATADIR%%/players/randomai.py
+%%DATADIR%%/players/randomai.pyc
+%%DATADIR%%/players/randomai.pyo
+%%DATADIR%%/players/strategic.py
+%%DATADIR%%/players/strategic.pyc
+%%DATADIR%%/players/strategic.pyo
+%%DATADIR%%/players/treeai.py
+%%DATADIR%%/players/treeai.pyc
+%%DATADIR%%/players/treeai.pyo
+%%DATADIR%%/players/weighted.py
+%%DATADIR%%/players/weighted.pyc
+%%DATADIR%%/players/weighted.pyo
+%%DATADIR%%/quit.py
+%%DATADIR%%/quit.pyc
+%%DATADIR%%/quit.pyo
+%%DATADIR%%/rules.py
+%%DATADIR%%/rules.pyc
+%%DATADIR%%/rules.pyo
+%%DATADIR%%/scoremap.py
+%%DATADIR%%/scoremap.pyc
+%%DATADIR%%/scoremap.pyo
+%%DATADIR%%/setini.py
+%%DATADIR%%/setini.pyc
+%%DATADIR%%/setini.pyo
+%%DATADIR%%/settings.ini
+%%DATADIR%%/settingsscreen.py
+%%DATADIR%%/settingsscreen.pyc
+%%DATADIR%%/settingsscreen.pyo
+%%DATADIR%%/startscreen.py
+%%DATADIR%%/startscreen.pyc
+%%DATADIR%%/startscreen.pyo
+%%DATADIR%%/technical.ttf
+%%DATADIR%%/testgui.py
+%%DATADIR%%/testgui.pyc
+%%DATADIR%%/testgui.pyo
+%%DATADIR%%/testini.py
+%%DATADIR%%/testini.pyc
+%%DATADIR%%/testini.pyo
+%%DATADIR%%/themeresizer.py
+%%DATADIR%%/themeresizer.pyc
+%%DATADIR%%/themeresizer.pyo
+%%DATADIR%%/themeresizer.sh
+%%DATADIR%%/version
+%%PORTDOCS%%%%DOCSDIR%%/changelog.txt
+%%PORTDOCS%%%%DOCSDIR%%/credits.txt
+@dirrm %%DATADIR%%/data/music
+@dirrm %%DATADIR%%/data/themes/clean/1024x768
+@dirrm %%DATADIR%%/data/themes/clean
+@dirrm %%DATADIR%%/data/themes
+@dirrm %%DATADIR%%/data
+@dirrm %%DATADIR%%/gui/dialogs
+@dirrm %%DATADIR%%/gui
+@dirrm %%DATADIR%%/players
+@dirrm %%DATADIR%%
+%%PORTDOCS%%@dirrm %%DOCSDIR%%
diff --git a/games/4stattack/scripts/py-compile b/games/4stattack/scripts/py-compile
new file mode 100644
index 00000000000..a055fae4f52
--- /dev/null
+++ b/games/4stattack/scripts/py-compile
@@ -0,0 +1,92 @@
+#!/bin/sh
+
+# py-compile - Compile a Python program
+# Copyright 2000, 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# called as "py-compile [--basedir DIR] PY_FILES ...
+
+if [ -z "$PYTHON" ]; then
+ PYTHON=python
+fi
+
+basedir=
+
+case "$1" in
+ --basedir)
+ basedir=$2
+ shift 2
+ ;;
+ --help)
+ echo "Usage: py-compile [--basedir DIR] PY_FILES ..."
+ echo "Byte compile some python scripts. This should be performed"
+ echo "after they have been moved to the final installation location"
+ exit 0
+ ;;
+ --version)
+ echo "py-compile version 0.0"
+ exit 0
+ ;;
+esac
+
+if [ $# = 0 ]; then
+ echo "No files given to $0" 1>&2
+ exit 1
+fi
+
+# if basedir was given, then it should be prepended to filenames before
+# byte compilation.
+if [ -z "$basedir" ]; then
+ trans="path = file"
+else
+ trans="path = os.path.join('$basedir', file)"
+fi
+
+$PYTHON -c "
+import sys, os, string, py_compile
+
+files = '''$*'''
+print 'Byte-compiling python modules...'
+for file in string.split(files):
+ $trans
+ if not os.path.exists(path) or not (len(path) >= 3 and path[-3:] == '.py'):
+ continue
+ print file,
+ sys.stdout.flush()
+ py_compile.compile(path)
+print" || exit $?
+
+# this will fail for python < 1.5, but that doesn't matter ...
+$PYTHON -O -c "
+import sys, os, string, py_compile
+
+files = '''$*'''
+print 'Byte-compiling python modules (optimised versions) ...'
+for file in string.split(files):
+ $trans
+ if not os.path.exists(path) or not (len(path) >= 3 and path[-3:] == '.py'):
+ continue
+ print file,
+ sys.stdout.flush()
+ py_compile.compile(path)
+print" 2>/dev/null || :
+
diff --git a/games/Makefile b/games/Makefile
index e781b64c4cf..fbf37e5e159 100644
--- a/games/Makefile
+++ b/games/Makefile
@@ -5,6 +5,7 @@
SUBDIR += 3dc
SUBDIR += 3dpong
SUBDIR += 44bsd-hunt
+ SUBDIR += 4stattack
SUBDIR += 54321
SUBDIR += BillardGL
SUBDIR += CaribbeanStud