I believe the error is in this bit of code in the kill function:

                                    for\(int i = 0 ; i < players.size\(\) ; i++\)
                                    \{
                                        if\(\(\(String\)players.get\(i\)\).equalsIgnoreCase\(victim\)\)
                                            if\(dead\[i\]\)
                                                isDead = true;
                                    \}

When a player leaves the player name is set to null. Thus players.get(i) returns null and calling this on equalsIgnoreCast gives rise to an exception giving the "invalid player" message. The fix is just to check for the null case, as is done in other such loops (which should probably be audited).