顯示具有 L1SkillId 標籤的文章。 顯示所有文章
顯示具有 L1SkillId 標籤的文章。 顯示所有文章

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. }
复制代码

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

skills的設定,請將法術圖編號去除~讓訊息正常。

集污、治癒侵蝕術、藥水侵蝕術三者似乎不能並存。

請加個狀態remove判斷吧~這邊就不修正了~

若有新增集體污水的話, L1BuffUtil 要先改一下:

在-
  1. case MASS_POLLUTE_WATER: // 水龍 - 污濁的水流
复制代码
全部改成-
  1. case MASS_POLLUTE_WATER: // 水龍 - 污濁的水流
  2. if (_user instanceof L1NpcInstance) {
  3.     L1NpcInstance npc = (L1NpcInstance) _user;
  4.     _user.broadcastPacket(new S_NpcChatPacket(npc, "里歐嗒!歐尼斯威納逆克", 0)); // 垃圾話測試        
  5. } else {
  6.     _player.broadcastPacket(new S_ChatPacket(_player, "里歐嗒!歐尼斯威納逆克", 0, 0)); // 垃圾話測試
  7. }                                                                                
  8. if (cha instanceof L1PcInstance) {
  9.     L1NpcInstance npc = (L1NpcInstance) _user;
  10.     List<L1PcInstance> visiblePc = L1World.getInstance().getVisiblePlayer(npc);
  11.                                         
  12.     for (L1PcInstance member : visiblePc) {
  13.         if ((npc.getLocation().getTileLineDistance(member.getLocation()) <= 8)) {
  14.             member.sendPackets(new S_SkillSound(member.getId(), 7782)); // 圖案編號
  15.             member.broadcastPacket(new S_SkillSound(member.getId(), 7782));
  16.             member.setSkillEffect(MASS_POLLUTE_WATER, 10000); // 10秒
  17.         }
  18.     }
  19. }                                                                        
  20. break;
复制代码
可以開始了~

首先,在db下-
  1. INSERT INTO `skills` VALUES ('601', '藥水侵蝕術', '0', '0', '5', '0', '0', '0', '0', '16', 'buff', '3', '0', '0', '0', '50', '50', '0', '1', '0', '3', '0', '0', '64', '', '41', '7781', '0', '0', '0', '280');
复制代码
mobskill請自行增設~

step 1. 在 L1SkillId 下-

增-
  1. public static final int ENCHANCED_DECAY_POTION = 601; // 水龍 - 藥水侵蝕術
复制代码
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 ENCHANCED_DECAY_POTION: // 水龍 - 藥水侵蝕術
  2.     if (_user instanceof L1NpcInstance) {
  3.         L1NpcInstance npc = (L1NpcInstance) _user;
  4.         _user.broadcastPacket(new S_NpcChatPacket(npc, "里歐嗒!啦哪歐硬", 0)); // 垃圾話測試        
  5.     } else {
  6.         _player.broadcastPacket(new S_ChatPacket(_player, "里歐嗒!啦哪歐硬", 0, 0)); // 垃圾話測試       
  7.     }
  8.     if (cha instanceof L1PcInstance) {
  9.         L1NpcInstance npc = (L1NpcInstance) _user;
  10.         List<L1PcInstance> visiblePc = L1World.getInstance().getVisiblePlayer(npc);
  11.                                         
  12.     for (L1PcInstance member : visiblePc) {
  13.         if ((npc.getLocation().getTileLineDistance(member.getLocation()) <= 8)) {
  14.             member.sendPackets(new S_SkillSound(member.getId(), 7781)); // 圖案編號
  15.             member.broadcastPacket(new S_SkillSound(member.getId(), 7781));
  16.             member.setSkillEffect(ENCHANCED_DECAY_POTION, 12000); // 12秒
  17.         }
  18.     }
  19.     }
  20.     break;
复制代码
step 3. 在 Potion 下-

找-
  1. public static void UseHeallingPotion(
复制代码
裡面的-
  1. pc.setCurrentHp(pc.getCurrentHp() + healHp);
  2. pc.getInventory().removeItem(item, 1);
复制代码
更動為-
  1. if (pc.hasSkillEffect(ENCHANCED_DECAY_POTION)) { // 水龍 - 藥水侵蝕術                        
  2.     pc.receiveDamage(pc, healHp, false); // 變成傷害
  3. }
  4. else {
  5.     pc.setCurrentHp(pc.getCurrentHp() + healHp); // 補血
  6. }
  7. pc.getInventory().removeItem(item, 1);
复制代码
step 4. 在L1Magic 下- (在pc對pc部分,沒用到的話就不加)
  1. private boolean checkZone(int skillId) {
复制代码
裡加入-
  1. || (skillId == ENCHANCED_DECAY_POTION) // 水龍 - 藥水侵蝕術
复制代码
找-
  1. private int calcProbability(int skillId)
复制代码
下面的-
  1.                 if ((skillId == ELEMENTAL_FALL_DOWN) 
  2.                         || (skillId == RETURN_TO_NATURE)
  3.                         || (skillId == ENTANGLE)
  4.                         || (skillId == ERASE_MAGIC)
  5.                         || (skillId == AREA_OF_SILENCE)
  6.                         || (skillId == WIND_SHACKLE)
  7.                         || (skillId == STRIKER_GALE)
  8.                         || (skillId == POLLUTE_WATER)
  9.                         || (skillId == EARTH_BIND)
  10.                         || (skillId == MASS_POLLUTE_WATER) // 集體污水
  11.                         ){
复制代码
加入-
  1. || (skillId == ENCHANCED_DECAY_POTION) // 水龍 - 藥水侵蝕術
复制代码
打完收工~~
 
by LovieAlice