diff --git a/src/java/com/threerings/puzzle/data/TeamPuzzleObject.java b/src/java/com/threerings/puzzle/data/TeamPuzzleObject.java
deleted file mode 100644
index 463905478..000000000
--- a/src/java/com/threerings/puzzle/data/TeamPuzzleObject.java
+++ /dev/null
@@ -1,232 +0,0 @@
-//
-// $Id$
-//
-// Narya library - tools for developing networked games
-// Copyright (C) 2002-2005 Three Rings Design, Inc., All Rights Reserved
-// http://www.threerings.net/code/narya/
-//
-// This library is free software; you can redistribute it and/or modify it
-// under the terms of the GNU Lesser General Public License as published
-// by the Free Software Foundation; either version 2.1 of the License, or
-// (at your option) any later version.
-//
-// This library 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
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-package com.threerings.puzzle.data;
-
-import com.samskivert.util.StringUtil;
-
-import com.threerings.util.RandomUtil;
-
-import com.threerings.puzzle.Log;
-
-/**
- * Does something extraordinary.
- */
-public class TeamPuzzleObject extends PuzzleObject
-{
- // AUTO-GENERATED: FIELDS START
- /** The field name of the teams field. */
- public static final String TEAMS = "teams";
-
- /** The field name of the targets field. */
- public static final String TARGETS = "targets";
-
- /** The field name of the winningTeam field. */
- public static final String WINNING_TEAM = "winningTeam";
- // AUTO-GENERATED: FIELDS END
-
- /** The team index assigned to each player index. */
- public int[] teams;
-
- /** The index of the player targeted by each player. */
- public short[] targets;
-
- /** The team index of the winning teams, or -1 if the game
- * is not yet over. */
- public byte winningTeam;
-
- /**
- * Returns the number of active players in the given team.
- */
- public int getTeamActivePlayerCount (int teamid)
- {
- int count = 0;
- for (int ii = 0; ii < players.length; ii++) {
- if (teams[ii] == teamid && isActivePlayer(ii)) {
- count++;
- }
- }
- return count;
- }
-
- /**
- * Returns a random valid target player for the given player, or
- * -1 if there are no valid target players.
- */
- public int getRandomValidTarget (int pidx)
- {
- // if there's no valid target player, pull the ripcord
- int vcount = getValidTargetCount(pidx);
- if (vcount < 1) {
- if (isInPlay()) {
- Log.info("No valid targets [game=" + which() +
- ", pidx=" + pidx +
- ", status=" + StringUtil.toString(playerStatus) +
- ", teams=" + StringUtil.toString(teams) + "].");
- }
- return -1;
- }
-
- // choose a random valid player and skip to their index
- int tpidx = 0, tcount = RandomUtil.getInt(vcount);
- do {
- // if this is a valid target and tcount is zero, stop; note
- // that we rely on the short-circuit to only decrement tcount
- // when we're on a valid target
- if (isRandomValidTarget(pidx, tpidx) && (tcount-- == 0)) {
- return tpidx;
- }
- tpidx++;
- } while (tpidx < players.length);
-
- // we should never get here, but it's best to be robust
- Log.warning("Failed to find valid target [game=" + which() +
- ", pidx=" + pidx + ", vcount=" + vcount +
- ", status=" + StringUtil.toString(playerStatus) +
- ", teams=" + StringUtil.toString(teams) + "].");
- return -1;
- }
-
- /**
- * Returns the number of valid target players for the given player.
- */
- public int getValidTargetCount (int pidx)
- {
- int count = 0;
- for (int ii = 0; ii < players.length; ii++) {
- if (isRandomValidTarget(pidx, ii)) {
- count++;
- }
- }
- return count;
- }
-
- /**
- * Returns whether one player may target another player.
- *
- * @param pidx the player index of the player attempting to change
- * their target player.
- * @param tpidx the player index of the player being targeted.
- */
- public boolean isValidTarget (int pidx, int tpidx)
- {
- return (tpidx >= 0 && tpidx < players.length &&
- pidx != tpidx && isActivePlayer(tpidx) &&
- teams[pidx] != teams[tpidx]);
- }
-
- /**
- * Returns whether one player may target another player on random
- * reassignment.
- *
- * @param pidx the player index of the player attempting to change
- * their target player.
- * @param tpidx the player index of the player being targeted.
- */
- protected boolean isRandomValidTarget (int pidx, int tpidx)
- {
- return isValidTarget(pidx, tpidx);
- }
-
- // AUTO-GENERATED: METHODS START
- /**
- * Requests that the teams field be set to the
- * specified value. The local value will be updated immediately and an
- * event will be propagated through the system to notify all listeners
- * that the attribute did change. Proxied copies of this object (on
- * clients) will apply the value change when they received the
- * attribute changed notification.
- */
- public void setTeams (int[] value)
- {
- int[] ovalue = this.teams;
- requestAttributeChange(
- TEAMS, value, ovalue);
- this.teams = (value == null) ? null : (int[])value.clone();
- }
-
- /**
- * Requests that the indexth element of
- * teams field be set to the specified value.
- * The local value will be updated immediately and an event will be
- * propagated through the system to notify all listeners that the
- * attribute did change. Proxied copies of this object (on clients)
- * will apply the value change when they received the attribute
- * changed notification.
- */
- public void setTeamsAt (int value, int index)
- {
- int ovalue = this.teams[index];
- requestElementUpdate(
- TEAMS, index, new Integer(value), new Integer(ovalue));
- this.teams[index] = value;
- }
-
- /**
- * Requests that the targets field be set to the
- * specified value. The local value will be updated immediately and an
- * event will be propagated through the system to notify all listeners
- * that the attribute did change. Proxied copies of this object (on
- * clients) will apply the value change when they received the
- * attribute changed notification.
- */
- public void setTargets (short[] value)
- {
- short[] ovalue = this.targets;
- requestAttributeChange(
- TARGETS, value, ovalue);
- this.targets = (value == null) ? null : (short[])value.clone();
- }
-
- /**
- * Requests that the indexth element of
- * targets field be set to the specified value.
- * The local value will be updated immediately and an event will be
- * propagated through the system to notify all listeners that the
- * attribute did change. Proxied copies of this object (on clients)
- * will apply the value change when they received the attribute
- * changed notification.
- */
- public void setTargetsAt (short value, int index)
- {
- short ovalue = this.targets[index];
- requestElementUpdate(
- TARGETS, index, new Short(value), new Short(ovalue));
- this.targets[index] = value;
- }
-
- /**
- * Requests that the winningTeam field be set to the
- * specified value. The local value will be updated immediately and an
- * event will be propagated through the system to notify all listeners
- * that the attribute did change. Proxied copies of this object (on
- * clients) will apply the value change when they received the
- * attribute changed notification.
- */
- public void setWinningTeam (byte value)
- {
- byte ovalue = this.winningTeam;
- requestAttributeChange(
- WINNING_TEAM, new Byte(value), new Byte(ovalue));
- this.winningTeam = value;
- }
- // AUTO-GENERATED: METHODS END
-}