2013年6月6日 星期四

【Java教學】【★★★★★】水龍〈集體污水〉

◇前言◇

在一個月前有發文,目前改寫了小部分。

若有發現問題,請不吝指正。

核心是以 99團隊為主,若有不同位子,請調整一下。

99團隊 mobskill.sql 格式與一般的版本不太一樣, 不建議核心硬改成 99的模樣。

自行調整就可以了。

 

◇參考說明◇

集體污水術、治癒侵蝕術、藥水侵蝕術三者似乎不能並存,所以有加了判斷。



◇設定部分◇

step 1.

先在db中增加-(若格式不合,請自行調整,41可自訂為18 或19 或30)
  1. INSERT INTO `skills` VALUES ('600', '集體污水術', '0', '0', '5', '0', '0', '0', '0', '0', 'buff', '3', '0', '0', '0', '50', '50', '4', '1', '0', '3', '8', '0', '16', '', '41', '0', '0', '0', '0', '280');
复制代码
mobskill 設定參考:(600140 為怪物編號,101為機率,請自行調整)
  1. INSERT INTO `mobskill` VALUES ('600140', '0', '集體污水術 ', '2', '5', '101', '0', '0', '-6', '0', '0', '0', '0', '0', '0', '600', '0', '0', '0', '0', '0', '0', '0');
复制代码
step 2.

在 L1SkillId 下新增-
  1.             public static final int MASS_POLLUTE_WATER = 600; // 水龍 - 污濁的水流            
  2.             public static final int ENCHANCED_DECAY_POTION = 601; // 水龍 - 藥水侵蝕術            
  3.             public static final int  INVERSE_HEALING = 602; // 水龍 - 治癒侵蝕術  
复制代码
step 3.

在 L1SkillUse 下找-
  1. if (cha.hasSkillEffect(POLLUTE_WATER)) { // 汙濁之水-效果減半
  2.    dmg /= 2;
  3. }
复制代码
更動為-
  1. if (cha.hasSkillEffect(POLLUTE_WATER) || cha.hasSkillEffect(MASS_POLLUTE_WATER)) { // 汙濁之水-效果減半
  2.    dmg /= 2;
  3. }
复制代码
step 4.

在 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;
复制代码
在下面新增-宣告 追加     import java.util.List;
  1.                         case MASS_POLLUTE_WATER: // 水龍 - 污濁的水流                                                                                                                
  2.                                 if (cha instanceof L1PcInstance) {
  3.                                         L1NpcInstance npc = (L1NpcInstance) _user;
  4.                                         List<L1PcInstance> visiblePc = L1World.getInstance().getVisiblePlayer(npc);
  5.                                         _user.broadcastPacket(new S_NpcChatPacket(npc, "里歐嗒!歐尼斯威納逆克!", 0)); // 0為普通說話
  6.                                         for (L1PcInstance member : visiblePc) {
  7.                         if ((npc.getLocation().getTileLineDistance(member.getLocation()) < 5)) { // 周圍4格內
  8.                                 if (!member.hasSkillEffect(MASS_POLLUTE_WATER)) { // 不具狀態時才賦予
  9.                                     member.setSkillEffect(MASS_POLLUTE_WATER, 12000); // 12秒
  10.                                     member.sendPackets(new S_SkillSound(member.getId(), 7782)); // 圖案編號
  11.                                     member.broadcastPacket(new S_SkillSound(member.getId(), 7782));
  12.                                     // 3術互斥判斷(污濁的水流,藥水侵蝕術,治癒侵蝕術)
  13.                                     if (member.hasSkillEffect(ENCHANCED_DECAY_POTION)) // 藥水侵蝕術        
  14.                                             member.killSkillEffectTimer(ENCHANCED_DECAY_POTION);
  15.                                     if (member.hasSkillEffect(INVERSE_HEALING)) // 治癒侵蝕術
  16.                                             member.killSkillEffectTimer(INVERSE_HEALING);
  17.                                 }                                
  18.                         }
  19.                     }
  20.                                 }                                                                        
  21.                                 break;
复制代码
step 5.

在 L1Magic下找-
  1. private boolean checkZone(int skillId) {
复制代码
找適當位子加入-
  1. || (skillId == MASS_POLLUTE_WATER)) {  // 水龍 - 污濁的水流
复制代码
找-
  1. private int calcProbability(int skillId) {
复制代码
裡面的-
  1. if (skillId == ELEMENTAL_FALL_DOWN || skillId == RETURN_TO_NATURE
  2.                                 || skillId == ENTANGLE || skillId == ERASE_MAGIC
  3.                                 || skillId == AREA_OF_SILENCE || skillId == WIND_SHACKLE
  4.                                 || skillId == STRIKER_GALE || skillId == POLLUTE_WATER
  5.                                 || skillId == EARTH_BIND) {
复制代码
更動為-
  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.                         ){
复制代码
step 6.

在 Potion 下找-
  1. public static void UseHeallingPotion(
复制代码
下面的-
  1. if (pc.hasSkillEffect(POLLUTE_WATER)) { // 汙濁之水 - 效果減半
  2.                         healHp /= 2;
  3.                 }
复制代码
更動為-
  1. if ((pc.hasSkillEffect(POLLUTE_WATER)) // 汙濁之水 - 效果減半
  2.     || (pc.hasSkillEffect(MASS_POLLUTE_WATER))) { // 集體污水 - 效果減半
  3.                         healHp /= 2;
  4.                 }
复制代码
step 7.

在 L1NpcInstance 下增-
  1. import static l1j.server.server.model.skill.L1SkillId.MASS_POLLUTE_WATER;
复制代码
找-
  1.         private void useHealPotion(int healHp, int effectId) {
复制代码
下面的-
  1. if (hasSkillEffect(POLLUTE_WATER)) {
  2.                         healHp /= 2;
  3. }
复制代码
更動為-
  1. if ((hasSkillEffect(POLLUTE_WATER)) 
  2.    || (hasSkillEffect(MASS_POLLUTE_WATER))) {
  3.                         healHp /= 2;
  4. }
复制代码

沒有留言:

張貼留言