Guest User

Untitled

a guest
Nov 24th, 2016
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.41 KB | None | 0 0
  1. package drake.aepvp.l2event;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Arrays;
  5. import java.util.concurrent.atomic.AtomicInteger;
  6.  
  7. import drake.aepvp.drivers.PlayerDriver;
  8. import drake.aepvp.model.EventReward;
  9. import drake.aepvp.model.EventTeam;
  10. import drake.aepvp.model.enums.EventResult;
  11. import drake.aepvp.model.enums.PlayerRelation;
  12. import drake.aepvp.model.enums.WorldState;
  13. import drake.aepvp.model.template.event.TeamTemplate;
  14. import drake.aepvp.model.template.world.EventTemplate;
  15. import l2.ae.pvp.gameserver.model.L2Object;
  16. import l2.ae.pvp.gameserver.model.Location;
  17. import l2.ae.pvp.gameserver.model.actor.instance.L2PcInstance;
  18.  
  19. public abstract class TeamEvent extends AbstractEvent
  20. {
  21.     protected final EventTeam[] _teams;
  22.    
  23.     private final AtomicInteger addPosition = new AtomicInteger(0);
  24.    
  25.     @Override
  26.     public boolean isInHealZone(final L2PcInstance player)
  27.     {
  28.         final EventTeam team = getTeam(player);
  29.         if (team == null)
  30.             return false;
  31.         final Location teamSpawn = team.getSpawn();
  32.         if (teamSpawn == null)
  33.             return false;
  34.         return player.isInsideRadius(teamSpawn.getX(), teamSpawn.getY(), 666, false);
  35.     }
  36.    
  37.     public TeamEvent(EventTemplate eventTemplate)
  38.     {
  39.         super(eventTemplate);
  40.         final TeamTemplate[] _teamTemplates = eventTemplate.getTeamTemplates();
  41.         _teams = new EventTeam[_teamTemplates.length];
  42.         for (int i = 0; i < _teams.length; i++)
  43.             _teams[i] = new EventTeam(_teamTemplates[i]);
  44.     }
  45.    
  46.     protected EventTeam getTeam(final L2Object object)
  47.     {
  48.         final PlayerDriver playerDriver = getPlayerDriver(object);
  49.         if (playerDriver == null)
  50.             return null;
  51.         return playerDriver.getEventTeam();
  52.     }
  53.    
  54.     @Override
  55.     public EventTeam getNextTeam()
  56.     {
  57.         return _teams[addPosition.getAndIncrement() % _teams.length];
  58.     }
  59.    
  60.     @Override
  61.     public void processRewards()
  62.     {  
  63.         System.out.println("Process Re");
  64.         Arrays.sort(_teams, (t1, t2) -> t2.getScore() - t1.getScore());
  65.         final EventTeam winner = _teams[0];
  66.         final ArrayList<EventTeam> _winners = new ArrayList<>();
  67.         final ArrayList<EventTeam> _loosers = new ArrayList<>();
  68.         for (final EventTeam team : _teams)
  69.             if (team.getScore() == winner.getScore())
  70.                 _winners.add(team);
  71.             else
  72.                 _loosers.add(team);
  73.         final boolean isTie = _winners.size() > 1;
  74.         if (isTie)
  75.         {   String str = "";
  76.             for (int i = 0; i != _winners.size(); i++)
  77.                 if (i == _winners.size() - 1)
  78.                     str += " and " + _winners.get(i).getName() + "!";
  79.                 else
  80.                     str += (i == 0 ? "" : ", ") + _winners.get(i).getName();
  81.             announceInside("The game resulted into a tie between " + str);
  82.         }
  83.         else
  84.             announceInside(winner.getName() + " team won the Event, scoring the most " + _template.getEventGoal() + "!");
  85.         for (final EventTeam winnerTeam : _winners)
  86.         {   winnerTeam.setTeamResult(isTie ? EventResult.TIE : EventResult.WIN);
  87.             announceInside(winnerTeam.getName() + " team scored  " + winnerTeam.getScore() + " " + _template.getEventGoal() + "!");
  88.         }
  89.         for (final EventTeam looserTeam : _loosers)
  90.         {   looserTeam.setTeamResult(EventResult.LOSE);
  91.             announceInside(looserTeam.getName() + " team scored  " + looserTeam.getScore() + " " + _template.getEventGoal() + "!");
  92.         }
  93.         forEachParticipant((player) ->
  94.         {
  95.             tryReward(player);
  96.         });
  97.     }
  98.    
  99.     private void tryReward(final L2PcInstance player)
  100.     {
  101.         final PlayerDriver playerDriver = getPlayerDriver(player);
  102.         final EventResult teamResult = playerDriver.getTeamResult();
  103.         if (teamResult == EventResult.WIN || teamResult == EventResult.TIE)
  104.             player.victory();
  105.         else
  106.             player.cry();
  107.         for (EventReward reward : _template.getEventRewards())
  108.             reward.tryReward(teamResult, playerDriver);
  109.         for (final EventReward reward : _template.getEventRewards())
  110.             reward.tryReward(EventResult.ANY, getPlayerDriver(player));
  111.     }
  112.  
  113.     @Override
  114.     public boolean onReconnect(final L2PcInstance player)
  115.     {
  116.         if (!super.onReconnect(player))
  117.             return false;
  118.         return true;
  119.     }
  120.    
  121.     @Override
  122.     public boolean playerSpawn(L2PcInstance player)
  123.     {
  124.         if (_worldState == WorldState.INACTIVE)
  125.             player.teleToLocation(_leaveLoc, 50);
  126.         else
  127.         {
  128.             player.teleToLocation(getTeam(player).getSpawn(), 50);
  129.             return super.playerSpawn(player);
  130.         }
  131.         return true;
  132.     }
  133.    
  134.     @Override
  135.     public boolean isInSpawnProtection(final L2PcInstance player)
  136.     {   if (!super.isInSpawnProtection(player))
  137.             return false;
  138.         final Location loc = getTeam(player).getSpawn();
  139.         return player.isInsideRadius(loc.getX(), loc.getY(), loc.getZ(), 400, false, false);
  140.     }
  141.    
  142.     @Override
  143.     public int getNameColor(L2PcInstance player, L2PcInstance viewer)
  144.     {
  145.         final EventTeam team = getTeam(player);
  146.         if (team == null)
  147.             return super.getNameColor(player, viewer);
  148.         return team.getNameColor();
  149.     }
  150.    
  151.     @Override
  152.     public PlayerRelation getPlayerRelation(final L2Object obj0, final L2Object obj1)
  153.     {
  154.         if (obj0 == null || obj1 == null)
  155.             return PlayerRelation.NONE;
  156.         return getPlayerRelation(getPlayerDriver(obj0), getPlayerDriver(obj1));
  157.     }
  158.    
  159.     @Override
  160.     public PlayerRelation getPlayerRelation(final PlayerDriver driver0, final PlayerDriver driver1)
  161.     {
  162.         if (driver0 == null || driver1 == null)
  163.             return PlayerRelation.NONE;
  164.         final EventTeam team0 = driver0.getEventTeam();
  165.         final EventTeam team1 = driver1.getEventTeam();
  166.         if (team0 == null || team1 == null)
  167.             return PlayerRelation.NONE;
  168.         if (team0 != team1)
  169.             return team0.isAlliedWith(team1) ? PlayerRelation.ALLY : PlayerRelation.ENEMY;
  170.         return PlayerRelation.SAME;
  171.     }
  172. }
Advertisement
Add Comment
Please, Sign In to add comment