public void addCapture( CTFPlayer capturer ) { fCaptures++; // add bonusses to team-members and update hud CTFPlayer[] players = getPlayers(); for ( int i=0; i<players.length; i++ ) { players[i].setScore( players[i].getScore() + CTFPlayer.CTF_TEAM_BONUS ); } // Add extra to carrier capturer.setScore( capturer.getScore() + CTFPlayer.CTF_CAPTURE_BONUS - CTFPlayer.CTF_TEAM_BONUS ); //inform all players (also spectators) that our captures increased int index = ( this == Team.TEAM1 ? STAT_CTF_TEAM1_CAPS : STAT_CTF_TEAM2_CAPS ); Enumeration enum = NativeEntity.enumeratePlayerEntities(); while ( enum.hasMoreElements() ) { NativeEntity p = (NativeEntity)enum.nextElement(); //p.setPlayerStat( fStatCapsIndex, (short)fCaptures ); p.setPlayerStat( index, (short)fCaptures ); } }
/** * Cause a general explosion in the world */ public static void explode(GameObject inflictor, GameObject attacker, NativeEntity ent, int damage, float radius) { int effect; Point3f explodeOrigin = ent.getOrigin(); if ((Engine.getPointContents(explodeOrigin) & Engine.MASK_WATER) == 0) { if (ent.getGroundEntity() != null) effect = Engine.TE_GRENADE_EXPLOSION; else effect = Engine.TE_ROCKET_EXPLOSION; } else { if (ent.getGroundEntity() != null) effect = Engine.TE_GRENADE_EXPLOSION_WATER; else effect = Engine.TE_ROCKET_EXPLOSION_WATER; } MiscUtil.radiusDamage(inflictor, attacker, damage, ent, radius, "g_splash"); Engine.writeByte(Engine.SVC_TEMP_ENTITY); Engine.writeByte(effect); Engine.writePosition(explodeOrigin); Engine.multicast(explodeOrigin, Engine.MULTICAST_PHS); }