2013年6月6日 星期四

【Java教學】【★★★★★】水龍〈治癒侵蝕術〉

測試後,有狀態時治癒法術是扣血的。

不過,還需要再試試。



在db下加入-( action_id 按您的設定來設,僅參考)
  1. INSERT INTO `skills` VALUES ('602', '治癒侵蝕術', '0', '0', '5', '0', '0', '0', '200', '0', 'buff', '3', '10', '8', '0', '0', '0', '4', '16', '0', '3', '8', '0', '4', '', '41', '7780', '0', '0', '0', '280');
复制代码
mobskill請自設。

step 1. 在 L1SkillId 下-

新增-
  1. public static final int  INVERSE_HEALING = 602; // 水龍 - 治癒侵蝕術
复制代码
step 2. 在 L1BuffUtil 下-

找-
  1. case STATUS_FREEZE: // 10071
  2.     if (cha instanceof L1PcInstance) {
  3.         L1PcInstance pc = (L1PcInstance) cha;
  4.         pc.sendPackets(new S_Paralysis(S_Paralysis.TYPE_BIND, true));
  5.     }
  6.     break;
复制代码
在下面新增-
  1. case INVERSE_HEALING: // 水龍 - 治癒侵蝕術                                
  2.     if (cha instanceof L1PcInstance) {
  3.         L1NpcInstance npc = (L1NpcInstance) _user;
  4.         List<L1PcInstance> visiblePc = L1World.getInstance().getVisiblePlayer(npc);
  5.                                         
  6.     for (L1PcInstance member : visiblePc) {
  7.         if ((npc.getLocation().getTileLineDistance(member.getLocation()) <= 8)) {
  8.             member.sendPackets(new S_SkillSound(member.getId(), 7780)); // 圖案編號
  9.             member.broadcastPacket(new S_SkillSound(member.getId(), 7780));
  10.             member.setSkillEffect(INVERSE_HEALING, 12000); // 12秒
  11.         }
  12.     }
  13.     }
  14.     break;
复制代码
step3. 在 L1SkillUse 下-

找-
  1. // 治癒性魔法
  2. else if (_skill.getType() == L1Skills.TYPE_HEAL) {
  3.         // 回復量
  4.         dmg = -1 * _magic.calcHealing(_skillId);
  5.         if (cha.hasSkillEffect(WATER_LIFE)) { // 水之元氣-效果 2倍
  6.                 dmg *= 2;
  7.                 cha.killSkillEffectTimer(WATER_LIFE); // 效果只有一次
  8.                 if (cha instanceof L1PcInstance) {
  9.                     L1PcInstance pc = (L1PcInstance) cha;
  10.                     pc.sendPackets(new S_SkillIconWaterLife());
  11.                 }
  12.          }
  13.          if (cha.hasSkillEffect(POLLUTE_WATER) || cha.hasSkillEffect(MASS_POLLUTE_WATER)) { // 汙濁之水-效果減半
  14.                 dmg /= 2;
  15.          }         
  16. }
复制代码
更動為-
  1. // 治癒性魔法
  2. else if (_skill.getType() == L1Skills.TYPE_HEAL) {
  3.         // 回復量
  4.         dmg = -1 * _magic.calcHealing(_skillId);
  5.         if (cha.hasSkillEffect(WATER_LIFE)) { // 水之元氣-效果 2倍
  6.                 dmg *= 2;
  7.                 cha.killSkillEffectTimer(WATER_LIFE); // 效果只有一次
  8.                 if (cha instanceof L1PcInstance) {
  9.                     L1PcInstance pc = (L1PcInstance) cha;
  10.                     pc.sendPackets(new S_SkillIconWaterLife());
  11.                 }
  12.          }
  13.          if (cha.hasSkillEffect(POLLUTE_WATER) || cha.hasSkillEffect(MASS_POLLUTE_WATER)) { // 汙濁之水-效果減半
  14.                 dmg /= 2;
  15.          }
  16.          if (cha.hasSkillEffect(INVERSE_HEALING)){ // 水龍 - 治癒侵蝕術
  17.                 dmg *= -1; // 變成傷害。
  18.          }
  19. }
复制代码

沒有留言:

張貼留言