From: <coe...@us...> - 2006-01-08 18:48:54
|
Update of /cvsroot/megamek/megamek/src/megamek/server In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11972/src/megamek/server Modified Files: Server.java Log Message: + Bug 1399841: NPE when autoejecting a dead pilot Index: Server.java =================================================================== RCS file: /cvsroot/megamek/megamek/src/megamek/server/Server.java,v retrieving revision 1.901 retrieving revision 1.902 diff -C2 -d -r1.901 -r1.902 *** Server.java 7 Jan 2006 16:20:34 -0000 1.901 --- Server.java 8 Jan 2006 18:48:42 -0000 1.902 *************** *** 17217,17220 **** --- 17217,17224 ---- if (entity.getCrew().isEjected()) return vDesc; + + // If the crew are already dead, don't bother + if(entity.getCrew().isDead() || entity.getCrew().isDoomed()) + return vDesc; // Mek pilots may get hurt during ejection, *************** *** 17299,17305 **** Report.addNewline(vDesc); Vector v = damageCrew(pilot, 1); ! r = (Report)v.firstElement(); ! r.indent(3); ! vDesc.addElement(r); } else { r.choose(true); --- 17303,17311 ---- Report.addNewline(vDesc); Vector v = damageCrew(pilot, 1); ! if(v.size() > 0) { ! r = (Report)v.firstElement(); ! r.indent(3); ! vDesc.addElement(r); ! } } else { r.choose(true); *************** *** 17380,17385 **** destroyEntity(entity, "ejection", true, true)); ! // only remove the unit that ejected in the movement phase ! if (game.getPhase() == IGame.PHASE_MOVEMENT) { game.removeEntity( entity.getId(), IEntityRemovalConditions.REMOVE_EJECTED ); send(createRemoveEntityPacket(entity.getId(), IEntityRemovalConditions.REMOVE_EJECTED)); --- 17386,17391 ---- destroyEntity(entity, "ejection", true, true)); ! // only remove the unit that ejected manually ! if (!autoEject) { game.removeEntity( entity.getId(), IEntityRemovalConditions.REMOVE_EJECTED ); send(createRemoveEntityPacket(entity.getId(), IEntityRemovalConditions.REMOVE_EJECTED)); *************** *** 17447,17455 **** entity.getCrew().setEjected( true ); - // only remove the unit that ejected in the movement phase - if (game.getPhase() == IGame.PHASE_MOVEMENT) { - game.removeEntity( entity.getId(), IEntityRemovalConditions.REMOVE_EJECTED ); - send(createRemoveEntityPacket(entity.getId(), IEntityRemovalConditions.REMOVE_EJECTED)); - } return vDesc; } --- 17453,17456 ---- |