Advertisement
Guest User

Untitled

a guest
Jul 30th, 2016
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 10.44 KB | None | 0 0
  1. package ai.npc.custom;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import java.util.StringTokenizer;
  6.  
  7. import net.sf.l2j.gameserver.model.actor.L2Npc;
  8. import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
  9. import net.sf.l2j.gameserver.model.holder.SkillHolder;
  10. import net.sf.l2j.gameserver.model.quest.Quest;
  11. import net.sf.l2j.gameserver.model.skills.effects.Effect;
  12.  
  13. public class CustomBuffer extends Quest
  14. {
  15.     // Npc
  16.     private static final int NPC = 100000;
  17.     // Html
  18.     private static final String HTML_PATH = "data/html/custom/buffer/";
  19.     // Buffs
  20.     private static final List<SkillHolder> DANCE = new ArrayList<>();
  21.     private static final List<SkillHolder> SONG = new ArrayList<>();
  22.     private static final List<SkillHolder> SPECIAL = new ArrayList<>();
  23.     private static final List<SkillHolder> BUFFS = new ArrayList<>();
  24.     private static final List<SkillHolder> RESIST = new ArrayList<>();
  25.     // DEBUG
  26.     private static final boolean DEBUG = false;
  27.    
  28.     public CustomBuffer()
  29.     {
  30.         super(-1, CustomBuffer.class.getSimpleName(), "ai/npc/custom");
  31.        
  32.         addStartNpc(NPC);
  33.         addFirstTalkId(NPC);
  34.         addTalkId(NPC);
  35.        
  36.         // -------------------------------------------------------------- //
  37.         DANCE.add(new SkillHolder(271, 1));// Dance of the Warrior
  38.         DANCE.add(new SkillHolder(272, 1));// Dance of Inspiration
  39.         DANCE.add(new SkillHolder(273, 1));// Dance of Mystic
  40.         DANCE.add(new SkillHolder(274, 1));// Dance of Fire
  41.         DANCE.add(new SkillHolder(275, 1));// Dance of Fury
  42.         DANCE.add(new SkillHolder(276, 1));// Dance of Concentration
  43.         DANCE.add(new SkillHolder(277, 1));// Dance of Light
  44.         DANCE.add(new SkillHolder(307, 1));// Dance of Aqua Guard
  45.         DANCE.add(new SkillHolder(309, 1));// Dance of Earth Guard
  46.         DANCE.add(new SkillHolder(310, 1));// Dance of Vampire
  47.         DANCE.add(new SkillHolder(311, 1));// Dance of Protection
  48.         DANCE.add(new SkillHolder(365, 1));//Dance of Siren
  49.         // -------------------------------------------------------------- //
  50.         SONG.add(new SkillHolder(264, 1));// Song of Earth
  51.         SONG.add(new SkillHolder(265, 1));// Song of Life
  52.         SONG.add(new SkillHolder(266, 1));// Song of Water
  53.         SONG.add(new SkillHolder(267, 1));// Song of Warding
  54.         SONG.add(new SkillHolder(268, 1));// Song of Wind
  55.         SONG.add(new SkillHolder(269, 1));// Song of Hunter
  56.         SONG.add(new SkillHolder(270, 1));// Song of Invocation
  57.         SONG.add(new SkillHolder(304, 1));// Song of Vitality
  58.         SONG.add(new SkillHolder(305, 1));// Song of Vengeance
  59.         SONG.add(new SkillHolder(306, 1));// Song of Flame Guard
  60.         SONG.add(new SkillHolder(308, 1));// Song of Storm Guard
  61.         SONG.add(new SkillHolder(349, 1));// Song of Renewal
  62.         SONG.add(new SkillHolder(363, 1));// Song of Meditation
  63.         SONG.add(new SkillHolder(364, 1));// Song of Champion
  64.         // -------------------------------------------------------------- //
  65.         SPECIAL.add(new SkillHolder(1355, 1));// Prophecy of Water
  66.         SPECIAL.add(new SkillHolder(1356, 1));// Prophecy of Fire
  67.         SPECIAL.add(new SkillHolder(1357, 1));// Prophecy of Wind
  68.         SPECIAL.add(new SkillHolder(1363, 1));// Chant of Victory
  69.         SPECIAL.add(new SkillHolder(4699, 13));// Blessing of Queen
  70.         SPECIAL.add(new SkillHolder(4700, 13));// Gift of Queen
  71.         SPECIAL.add(new SkillHolder(4702, 13));// Blessing of Seraphim
  72.         SPECIAL.add(new SkillHolder(4703, 13));// Gift of Seraphim
  73.         SPECIAL.add(new SkillHolder(1323, 1));// Noblese Blessing
  74.         // -------------------------------------------------------------- //
  75.         BUFFS.add(new SkillHolder(1035, 4));// Mental Shield
  76.         BUFFS.add(new SkillHolder(1036, 2));// Magic Barrier
  77.         BUFFS.add(new SkillHolder(1040, 3));// Shield
  78.         BUFFS.add(new SkillHolder(1043, 1));// Holy Weapon
  79.         BUFFS.add(new SkillHolder(1044, 3));// Regeneration
  80.         BUFFS.add(new SkillHolder(1045, 6));// Blessed Body
  81.         BUFFS.add(new SkillHolder(1048, 6));// Blessed Soul
  82.         BUFFS.add(new SkillHolder(1059, 3));// Empower
  83.         BUFFS.add(new SkillHolder(1062, 2));// Berserker Spirit
  84.         BUFFS.add(new SkillHolder(1068, 3));// Might
  85.         BUFFS.add(new SkillHolder(1073, 2));// Kiss of Eva
  86.         BUFFS.add(new SkillHolder(1077, 3));// Focus
  87.         BUFFS.add(new SkillHolder(1078, 6));// Concentration
  88.         BUFFS.add(new SkillHolder(1085, 3));// Acumen
  89.         BUFFS.add(new SkillHolder(1086, 2));// Haste
  90.         BUFFS.add(new SkillHolder(1087, 3));// Agility
  91.         BUFFS.add(new SkillHolder(1203, 2));// Wind Walk
  92.         BUFFS.add(new SkillHolder(1240, 3));// Guidance
  93.         BUFFS.add(new SkillHolder(1242, 3));// Death Whisper
  94.         BUFFS.add(new SkillHolder(1243, 6));// Bless Shield
  95.         BUFFS.add(new SkillHolder(1257, 3));// Decrease Weight
  96.         BUFFS.add(new SkillHolder(1268, 4));// Vampiric Rage
  97.         BUFFS.add(new SkillHolder(1303, 1));// Wild Magic
  98.         BUFFS.add(new SkillHolder(1304, 3));// Advanced Block
  99.         // -------------------------------------------------------------- //
  100.         RESIST.add(new SkillHolder(1032, 3));// Invigor
  101.         RESIST.add(new SkillHolder(1033, 3));// Resist Poison
  102.         RESIST.add(new SkillHolder(1182, 3));// Resist Aqua
  103.         RESIST.add(new SkillHolder(1189, 3));// Resist Wind
  104.         RESIST.add(new SkillHolder(1191, 3));// Resist Fire
  105.         RESIST.add(new SkillHolder(1259, 4));// Resist Shock
  106.         RESIST.add(new SkillHolder(1352, 1));// Elemetal Protection
  107.         RESIST.add(new SkillHolder(1353, 1));// Divine Protection
  108.         RESIST.add(new SkillHolder(1354, 1));// Arcane Protection
  109.         // -------------------------------------------------------------- //
  110.     }
  111.    
  112.     @Override
  113.     public String onFirstTalk(L2Npc npc, L2PcInstance player)
  114.     {
  115.         return HTML_PATH + "index.htm";
  116.     }
  117.    
  118.     @Override
  119.     public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
  120.     {
  121.         StringTokenizer st = new StringTokenizer(event, " ");
  122.         event = st.nextToken();
  123.        
  124.         switch (event)
  125.         {
  126.             case "cancel":
  127.                 for (Effect e : player.getAllEffects())
  128.                 {
  129.                     e.exit();
  130.                 }
  131.                 break;
  132.             case "heal":
  133.                 player.setCurrentHp(player.getMaxHp());
  134.                 player.setCurrentCp(player.getMaxCp());
  135.                 player.setCurrentMp(player.getMaxMp());
  136.                 break;
  137.             case "dance":
  138.                 if (st.hasMoreTokens())
  139.                 {
  140.                     DANCE.get(Integer.parseInt(st.nextToken())).getSkill().getEffects(player, player);
  141.                 }
  142.                 return GenerateHtmlBuffs(player, DANCE, event);
  143.             case "song":
  144.                 if (st.hasMoreTokens())
  145.                 {
  146.                     SONG.get(Integer.parseInt(st.nextToken())).getSkill().getEffects(player, player);
  147.                 }
  148.                 return GenerateHtmlBuffs(player, SONG, event);
  149.             case "special":
  150.                 if (st.hasMoreTokens())
  151.                 {
  152.                     SPECIAL.get(Integer.parseInt(st.nextToken())).getSkill().getEffects(player, player);
  153.                 }
  154.                 return GenerateHtmlBuffs(player, SPECIAL, event);
  155.             case "buff":
  156.                 if (st.hasMoreTokens())
  157.                 {
  158.                     BUFFS.get(Integer.parseInt(st.nextToken())).getSkill().getEffects(player, player);
  159.                 }
  160.                 return GenerateHtmlBuffs(player, BUFFS, event);
  161.             case "resist":
  162.                 if (st.hasMoreTokens())
  163.                 {
  164.                     RESIST.get(Integer.parseInt(st.nextToken())).getSkill().getEffects(player, player);
  165.                 }
  166.                 return GenerateHtmlBuffs(player, RESIST, event);
  167.         }
  168.        
  169.         return null;
  170.     }
  171.    
  172.     /**
  173.      * Generamos los html para cada lista de buff
  174.      * @param player
  175.      * @param list
  176.      * @param event
  177.      * @return
  178.      */
  179.     private static String GenerateHtmlBuffs(L2PcInstance player, List<SkillHolder> list, String event)
  180.     {
  181.         StringBuilder sb = new StringBuilder();
  182.         sb.append("<html><body>");
  183.         sb.append("<center>");
  184.         sb.append("<br>");
  185.         sb.append("Welcome <font color=\"LEVEL\">" + player.getName() + "</font>");
  186.         sb.append("<br>");
  187.        
  188.         int cont = 0;
  189.        
  190.         for (SkillHolder skill : list)
  191.         {
  192.             if (skill.getSkill() == null)
  193.             {
  194.                 if (DEBUG)
  195.                 {
  196.                     System.out.println("skill null >>" + event + "<< -- " + cont);
  197.                 }
  198.                 cont++;
  199.                 continue;
  200.             }
  201.             sb.append("<table width=\"260\" height=\"36\">");
  202.             sb.append("<tr>");
  203.             sb.append("<td width=\"32\" height=\"32\"><img src=\"icon.skill" + getSkillIcon(skill.getSkillId()) + "\"  width=\"32\" height=\"32\"></td>");
  204.             sb.append("<td align=center width=196 height=32><button value=\"" + skill.getSkill().getName() + "\" action=\"bypass -h Quest CustomBuffer " + event + " " + cont + "\" width=\"120\" height=\"30\" back=\"L2UI_CH3.bigbutton2_dow\"n fore=\"L2UI_CH3.bigbutton2\"></td>");
  205.             sb.append("<td width=\"32\" height=\"32\"><img src=\"icon.skill" + getSkillIcon(skill.getSkillId()) + "\"  width=\"32\" height=\"32\"></td>");
  206.             sb.append("</tr>");
  207.             sb.append("</table>");
  208.             cont++;
  209.         }
  210.        
  211.         sb.append("</center>");
  212.         sb.append("</body></html>");
  213.        
  214.         return sb.toString();
  215.     }
  216.    
  217.     /**
  218.      * Generamos el ID de la imagen de un skill a partir de su ID
  219.      * @param id
  220.      * @return
  221.      */
  222.     private static String getSkillIcon(int id)
  223.     {
  224.         String formato = "";
  225.         if (id < 10)
  226.         {
  227.             formato = "000" + id;
  228.         }
  229.         else if (id < 100)
  230.         {
  231.             formato = "00" + id;
  232.         }
  233.         else if (id < 1000)
  234.         {
  235.             formato = "0" + id;
  236.         }
  237.         else if (id == 4699 || id == 4700)
  238.         {
  239.             formato = "1331";
  240.         }
  241.         else if (id == 4702 || id == 4703)
  242.         {
  243.             formato = "1332";
  244.         }
  245.         else
  246.             formato = String.valueOf(id);
  247.         return formato;
  248.     }
  249. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement