• SEARCH

    통합검색
  • GAMEZONE
    • 커뮤니티
      • 공지사항
      • 유저게시판
        • 등업게시판
        • 출석체크
        • 정회원 무료자료실
      • 스크린샷
      • 인증자료실
    • 리니지
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 메이플스토리
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 바람의나라
      • 자유게시판
      • 홍보게시판
      • 자료게시판
        • 유틸자료실
        • 소스자료실
        • 클라이언트
        • 팩 자료실
      • 연구게시판
        • 개발내역
        • 질문과답변
        • 기타
      • 강의게시판
        • DR
        • CR
        • 구버전
        • 클라이언트 개조
        • 노하우 게시판
        • 게임공략 & 팁
    • 다크에덴
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 믹스마스터
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 라그나로크
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 기타게임
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 게임강의
    • 비베&포토샵
      • 자유게시판
      • 자료실
        • 일반자료실
        • 포인트 자료실
      • 노하우게시판
      • 포토샵게시판
    • 모바일
      • 게임공략
      • 포인트 자료실
      • 유틸자료실
      • 자유게시판
  • 리니지 소스자료실
    • 리니지 소스자료실 ()
    • 일본팩에서 해상전 추출 통으로~

      • 준희미니
      • 2016.07.07 - 12:29 74

    L1OrimQuest.java

     

    /*
     * This program is free software: you can redistribute it and/or modify
     * it under the terms of the GNU General Public License as published by
     * the Free Software Foundation, either version 3 of the License, or
     * (at your option) any later version.
     *
     * This program is distributed in the hope that it will be useful,
     * but WITHOUT ANY WARRANTY; without even the implied warranty of
     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     * GNU General Public License for more details.
     *
     * You should have received a copy of the GNU General Public License
     * along with this program.  If not, see <http://www.gnu.org/licenses/>.
     */

    package jp.l1j.server.model;

    import java.util.HashMap;
    import java.util.logging.Logger;
    import jp.l1j.server.model.etc.L1OrimQuestInstance;
    import jp.l1j.server.model.map.L1InstanceMap;

    public class L1OrimQuest{
     private static Logger _log = Logger.getLogger(L1OrimQuest.class.getName());
     
     private static HashMap<Integer, L1OrimQuestInstance> _activeMaps;
     
     private static L1OrimQuest _instance;

     public static L1OrimQuest getInstance() {
      if (_instance == null) {
       _instance = new L1OrimQuest();
      }
      return _instance;
     }
     
     L1OrimQuest(){
      _activeMaps= new HashMap<Integer, L1OrimQuestInstance>();
     }

     /**
      * 指定された要素に含まれるインスタンスを返す
      *
      * @param x
      * @return 格納されているインスタンス
      */
     public L1OrimQuestInstance getActiveMaps(int mapId){
      if (!_activeMaps.containsKey( mapId)) {
       return null;
      }
      return _activeMaps.get(mapId);
     }
     
     /**
      * インスタンスマップを生成し、HashMapにリンクを生成
      * @param mapId コピー元のマップID
      * @return
      */
     public short setActiveMaps(int mapId){
      int instanceMapId= L1InstanceMap.getInstance().addInstanceMap(mapId);
      L1OrimQuestInstance obj=new L1OrimQuestInstance((short)instanceMapId);
      _activeMaps.put(instanceMapId,obj);
      return obj.getMapId();
     }
     
     /**
      * クエスト終了につき生成したインスタンスマップを開放する
      * @param mapId
      */
     public void resetActiveMaps(int mapId){
      if (!_activeMaps.containsKey(mapId)) {
       return;
      }
      _activeMaps.remove(mapId);
      L1InstanceMap.getInstance().removeInstanceMap(mapId);
     }
     
     /**
      * 進行中のクエストの件数を取得
      * @return
      */
     public int getNumOfActiveMaps(){
      return _activeMaps.size();
     }
    }

    L1OrimQuestInstance.java

     

    /*
     * This program is free software: you can redistribute it and/or modify
     * it under the terms of the GNU General Public License as published by
     * the Free Software Foundation, either version 3 of the License, or
     * (at your option) any later version.
     *
     * This program is distributed in the hope that it will be useful,
     * but WITHOUT ANY WARRANTY; without even the implied warranty of
     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     * GNU General Public License for more details.
     *
     * You should have received a copy of the GNU General Public License
     * along with this program.  If not, see <http://www.gnu.org/licenses/>.
     */

    package jp.l1j.server.model.etc;

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Timer;
    import java.util.TimerTask;
    import jp.l1j.server.codes.ActionCodes;
    import jp.l1j.server.datatables.DoorTable;
    import jp.l1j.server.datatables.NpcTable;
    import jp.l1j.server.datatables.TrapTable;
    import jp.l1j.server.model.L1Location;
    import jp.l1j.server.model.L1Object;
    import jp.l1j.server.model.L1OrimQuest;
    import jp.l1j.server.model.L1Teleport;
    import jp.l1j.server.model.L1World;
    import jp.l1j.server.model.instance.L1DoorInstance;
    import jp.l1j.server.model.instance.L1EffectInstance;
    import jp.l1j.server.model.instance.L1FieldObjectInstance;
    import jp.l1j.server.model.instance.L1ItemInstance;
    import jp.l1j.server.model.instance.L1MonsterInstance;
    import jp.l1j.server.model.instance.L1NpcInstance;
    import jp.l1j.server.model.instance.L1PcInstance;
    import jp.l1j.server.model.instance.L1TrapInstance;
    import jp.l1j.server.model.inventory.L1Inventory;
    import jp.l1j.server.model.trap.L1Trap;
    import jp.l1j.server.model.trap.L1WorldTraps;
    import jp.l1j.server.packets.server.S_BlackWindow;
    import jp.l1j.server.packets.server.S_DisplayClack;
    import jp.l1j.server.packets.server.S_DoActionGFX;
    import jp.l1j.server.packets.server.S_EffectLocation;
    import jp.l1j.server.packets.server.S_GreenMessage;
    import jp.l1j.server.packets.server.S_NpcPack;
    import jp.l1j.server.packets.server.S_RedMessage;
    import jp.l1j.server.packets.server.S_ShockWave;
    import jp.l1j.server.packets.server.S_SkillSound;
    import jp.l1j.server.packets.server.S_Sound;
    import jp.l1j.server.packets.server.S_YellowMessage;
    import jp.l1j.server.packets.server.ServerBasePacket;
    import jp.l1j.server.random.RandomGenerator;
    import jp.l1j.server.random.RandomGeneratorFactory;
    import jp.l1j.server.templates.L1DoorGfx;
    import jp.l1j.server.types.Point;
    import jp.l1j.server.utils.IdFactory;

    public class L1OrimQuestInstance {
     private short _mapId;  //生成されたインスタンスマップIDを保存
     private int _OrimQuestStatus;//クエストの進行状態を保存
     private boolean _isDeleteTransactionNow;//船の設備が現在使用中
     private boolean _acceptOrder;//ルーン作成要求を受け付け可否
     private int _comeShipCount ;//幽霊船の襲撃があったかどうかを保存
     private boolean _extraShipCome;
     private boolean _isRankSelected;
     private boolean _isCrakenDead;
     private boolean _isLastBossDead;

     private L1NpcInstance _ship;
     private L1NpcInstance _diffence_rune_1;
     private L1NpcInstance _diffence_rune_2;
     private L1NpcInstance _attack_rune;
     private L1NpcInstance _portal_rune;
     private L1NpcInstance _cannon_1;
     private L1NpcInstance _cannon_2;
     private L1NpcInstance _shipWall;
     private L1NpcInstance _craken_tail_left;
     private L1NpcInstance _craken_tail_right;
     private L1MonsterInstance _mimic_A;
     private L1MonsterInstance _mimic_B;
     private L1MonsterInstance _mimic_C;
     private L1DoorInstance _createDoor;
     private L1TrapInstance _moveTrap;
     private int _startPoint;
     private int _endPoint;

     private int[] _roundDiffenceStatus= new int[12];
     private int[] _roundHitDamage= new int[12];//HITが赤まで行かなかった場合、次のラウンドにHIT数が持ち越されます。
     private int[] _roundStatus = new int[12];//各ラウンドの殲滅速度を保存 -1遅い 0変化無し 1早い
     private int[] _bonusRoundStatus = new int[12];//海洋生物の襲撃を保存
     private int _currentRound;
     private int _point;//現在のポイントを保存
     private int _ship_burning;//出火箇所が9箇所になると、船が沈没寸前ですとのメッセージが出て、出火箇所が10箇所になると沈没します。
     private int _tempNpcNumber;
     private static RandomGenerator _random = RandomGeneratorFactory.newRandom();
     void init(){//初期設定を行う
      _cannon_1 = spawnOne(new L1Location(32803,32809,_mapId),91450 ,0);
      _cannon_2 = spawnOne(new L1Location(32792,32809,_mapId),91451 ,0);
      _cannon_1.getMap().setPassable(32803, 32809, false);
      _cannon_2.getMap().setPassable(32792, 32809, false);
      _shipWall = spawnOne(new L1Location(32799,32806,_mapId),91449 ,0);
      _shipWall.setStatus(32);
      L1DoorGfx gfx = new L1DoorGfx(2510, 0, 10, -10);//透明
      _createDoor = DoorTable.getInstance().createDoor(0, gfx,
        new L1Location(32798, 32795, _mapId), 0, 0, false);
      spawnOne(new L1Location(32677,32800,_mapId), 91452, 0);//転送ポータル
      spawnOne(new L1Location(32677,32864,_mapId), 91452, 0);//転送ポータル
      spawnOne(new L1Location(32741,32860,_mapId), 91452, 0);//転送ポータル
      spawnOne(new L1Location(32805,32862,_mapId), 91452, 0);//転送ポータル
      setSwitch(new L1Location(32677,32800,_mapId), 74);//転送ポータル
      setSwitch(new L1Location(32677,32864,_mapId), 74);//転送ポータル
      setSwitch(new L1Location(32741,32860,_mapId), 74);//転送ポータル
      setSwitch(new L1Location(32805,32862,_mapId), 74);//転送ポータル
     }

     public static final int _STATUS_ORIMQUEAT_NONE = 0;
     public static final int _STATUS_ORIMQUEAT_READY_1 = 1;
     public static final int _STATUS_ORIMQUEAT_READY_2= 2;
     public static final int _STATUS_ORIMQUEAT_READY_3 = 3;
     public static final int _STATUS_ORIMQUEAT_READY_4 = 4;
     public static final int _STATUS_ORIMQUEAT_READY_5 = 30;
     public static final int _STATUS_ORIMQUEAT_READY_6 = 31;
     public static final int _STATUS_ORIMQUEAT_READY_7 = 32;
     public static final int _STATUS_ORIMQUEAT_READY_8 = 33;
     public static final int _STATUS_ORIMQUEAT_READY_8_1 = 50;
     public static final int _STATUS_ORIMQUEAT_READY_8_2 = 51;
     public static final int _STATUS_ORIMQUEAT_READY_8_3 = 52;
     public static final int _STATUS_ORIMQUEAT_READY_9 = 34;
     public static final int _STATUS_ORIMQUEAT_READY_10 = 35;
     public static final int _STATUS_ORIMQUEAT_READY_11 = 36;
     public static final int _STATUS_ORIMQUEAT_READY_11_1 = 37;
     public static final int _STATUS_ORIMQUEAT_READY_11_2 = 38;

     public static final int _STATUS_ORIMQUEAT_START = 5;
     public static final int _STATUS_ORIMQUEAT_START_2 = 6;
     public static final int _STATUS_ORIMQUEAT_START_2_1 = 7;
     public static final int _STATUS_ORIMQUEAT_START_2_2 = 8;
     public static final int _STATUS_ORIMQUEAT_START_2_3 = 9;
     public static final int _STATUS_ORIMQUEAT_START_2_4 = 10;
     public static final int _STATUS_ORIMQUEAT_START_3 = 11;
     public static final int _STATUS_ORIMQUEAT_START_3_1 = 12;
     public static final int _STATUS_ORIMQUEAT_START_3_2 = 13;
     public static final int _STATUS_ORIMQUEAT_START_3_3 = 14;
     public static final int _STATUS_ORIMQUEAT_END_1 = 15;
     public static final int _STATUS_ORIMQUEAT_END_2 = 16;
     public static final int _STATUS_ORIMQUEAT_END_3 = 17;
     public static final int _STATUS_ORIMQUEAT_END_4 = 18;
     public static final int _STATUS_ORIMQUEAT_END_5 = 19;
     public static final int _STATUS_ORIMQUEAT_END_6 = 21;
     public static final int _STATUS_ORIMQUEAT_END = 20;

     public static final int _STATUS_MOVE_SHIP_1 = 99;
     public static final int _STATUS_MOVE_SHIP_2 = 98;
     public static final int _STATUS_MOVE_SEA_MONSTER = 100;
     public static final int _STATUS_ORIMQUEST_MONITOR = 1000;
     public static final int _STATUS_SPAWN_MONSTERS = 10001;
     public static final int _STATUS_CREATE_RUNES = 10002;
     public static final int _STATUS_ENEMY_CANON = 10003;
     public static final int _STATUS_FIRE_CANON_1 = 10004;
     public static final int _STATUS_FIRE_CANON_2 = 10005;

     static final int STATUS_ORIMQUEAT_LIMIT = 25;
     static final int STATUS_ORIMQUEAT_LIMIT2 = 26;
     static final int STATUS_ORIMQUEAT_LIMIT3 = 27;

     public boolean _IS_SPAWN_SHIP_TYPEA ;
     public boolean _IS_SPAWN_SHIP_TYPEB ;
     public boolean _IS_SPAWN_SHIP_TYPEC ;

     public static final int STATUS_NONE = 0;
     public static final int STATUS_READY_SPAWN = 1;
     public static final int STATUS_SPAWN = 2;

     private int _action;//ソーシャルアクションの値を設定する。

     private int[] _pointMessages = {10638,10639,10640,10641,10642,
       10643,10644,10645,10646,10647,10648,10649,10666,10667,10668,10669,10670,10671,10672,
       10673,10674,10675,10676,10677,10678,10679,10680,10681,10682,10683,10684,10685,10686};

     private int[] _monstersA = { 91278, //魔界の サラマンダー
             91273, //魔界の ケルベロス
             91459, //魔界の アシタジオ
             91457, //魔界の ヘルバウンド
             91456, //魔界の ホーン ケルベロス
             91458, //魔界の ラヴァ ゴーレム
             91460, //魔界の ミノタウルス
             91464, //魔界の ミノタウルス
             91461, //魔界の マイノ
             91280, //魔界の サキュバス
             91462, //魔界の ガーゴイル
             91463, //魔界の スピリッド
             91495, //魔界の レッサードラゴン
             91292, //魔界の グレート ミノタウルス
             91465, //魔界の コラプト プリースト
             91466, //魔界の コラプト プリースト
             91467, //魔界の コラプト プリースト
             91468, //魔界の コラプト プリースト
             91469, //魔界の コラプト プリースト
             91470 //魔界の カオス プリースト
            };
     private int[] _monstersB = { 45374, //アビス リザードマン
             45825, //ヴァリアント リザードマン
             45827, //ヴァリアント リザードマン
             45874, //ヴァリアント リザードマン
            };
     private int[] _monstersC = { 46057, //ラバーボーン アーチャー
             46056, //ラバーボーン ソルジャー
             46059, //ラバーボーン ナイフ
             46058, //ラバーボーン ヘッド
             45502 //アビス アーチャー
            };

     public L1OrimQuestInstance(short mapId) {
      setMapId(mapId);
      init();//初期化
     }

     /**
      * オリムクエストを開始する
      */
     public void start() {
      if(_STATUS_ORIMQUEAT_NONE  == _OrimQuestStatus){
       OrimQuestTimer timer_start = new OrimQuestTimer(
         _STATUS_ORIMQUEAT_NONE, 0);
       timer_start.begin();
      }
     }

     /**
      * スレッドプロシージャ
      */
     class OrimQuestTimer extends TimerTask {
      int _time;//開始までの時間
      int _order;//処理区分
      OrimQuestTimer(int order,int time){
       _time= time;
       _order= order;
      }

      public void begin() {
       final Timer timer = new Timer();
       timer.schedule(this, _time);
      }

      @Override
      public void run() {
       if(!_isDeleteTransactionNow){//削除処理が開始されているならば全てのオーダーを受け付けない
        switch (_order) {
         /**********   開始前の準備段階 START  **************/
         case _STATUS_ORIMQUEAT_NONE:
          setOrimQuestStatus(_STATUS_ORIMQUEAT_READY_1);//クエスト状態を準備に変更
          OrimQuestTimer timer_1 = new OrimQuestTimer(
             _STATUS_ORIMQUEAT_READY_1, 12000);
          timer_1.begin();
          //マップ監視用のモニターを起動
          OrimQuestTimer monitor = new OrimQuestTimer(
             _STATUS_ORIMQUEST_MONITOR,30000);
          monitor.begin();
         break;
         case _STATUS_ORIMQUEAT_READY_1:
          setOrimQuestStatus(_STATUS_ORIMQUEAT_READY_2);
          sendMessage("$9529", 0); // GreenMessage オリム:皆さん落ち着いて聞いて
          OrimQuestTimer timer_2 = new OrimQuestTimer(
            _STATUS_ORIMQUEAT_READY_2, 8000);
          timer_2.begin();
         break;
         case _STATUS_ORIMQUEAT_READY_2:
          _action = 0;//ソーシャルアクションを確実にクリアにする。
          setOrimQuestStatus(_STATUS_ORIMQUEAT_READY_3);
          sendMessage("$9530", 0); // GreenMessage オリム:説明がいらないなら
          OrimQuestTimer timer_3 = new OrimQuestTimer(
            _STATUS_ORIMQUEAT_READY_3, 8000);
          timer_3.begin();
         break;
         case _STATUS_ORIMQUEAT_READY_3:
          int action = _action ;
          _action = 0;//ソーシャルアクションを確実にクリアにする。

          if(action == 68){//ステップを一気に引き上げる
           setOrimQuestStatus(_STATUS_ORIMQUEAT_START);
           OrimQuestTimer timer_start1 = new OrimQuestTimer(
             _STATUS_ORIMQUEAT_START, 8000);
           timer_start1.begin();
          }else{
           //説明処理を開始
           setOrimQuestStatus(_STATUS_ORIMQUEAT_READY_4);
           sendMessage("$9531", 0);  // GreenMessage われわれの船を攻撃しているのはオールディンというものです
           OrimQuestTimer timer_4 = new OrimQuestTimer(
             _STATUS_ORIMQUEAT_READY_4, 8000);
           timer_4.begin();
          }
         break;
         case _STATUS_ORIMQUEAT_READY_4:
          setOrimQuestStatus(_STATUS_ORIMQUEAT_READY_5);
          sendMessage("$9532", 0); // GreenMessageオリム:詳しい話は生き残ってからにしましょう。
          OrimQuestTimer timer_5 = new OrimQuestTimer(
            _STATUS_ORIMQUEAT_READY_5, 8000);
          timer_5.begin();
         break;
         case _STATUS_ORIMQUEAT_READY_5:
          setOrimQuestStatus(_STATUS_ORIMQUEAT_READY_6);
          sendMessage("$9533", 0); // GreenMessage まずは生き残ることです。大砲の使い方から
          OrimQuestTimer timer_6 = new OrimQuestTimer(
            _STATUS_ORIMQUEAT_READY_6, 8000);
          timer_6.begin();
         break;
         case _STATUS_ORIMQUEAT_READY_6:
          setOrimQuestStatus(_STATUS_ORIMQUEAT_READY_7);
          sendMessage("$9534", 0); // GreenMessage 戦いが始まると床に赤い魔法陣が現れます。
          _attack_rune = spawnOne(L1Location.randomLocation(new L1Location(32799,32803,_mapId), 1, 6, false), 91454, 5);
          OrimQuestTimer timer_7 = new OrimQuestTimer(
            _STATUS_ORIMQUEAT_READY_7, 8000);
          timer_7.begin();
         break;
         case _STATUS_ORIMQUEAT_READY_7:
          setOrimQuestStatus(_STATUS_ORIMQUEAT_READY_8);
          sendMessage("$9535", 0); // GreenMessage そしてパーティーリーダーは大砲の間にある同じ模様の足場の上へ立ってください
          OrimQuestTimer timer_8 = new OrimQuestTimer(
            _STATUS_ORIMQUEAT_READY_8, 8000);
          timer_8.begin();
         break;
         case _STATUS_ORIMQUEAT_READY_8:
          _action = 0;//ソーシャルアクションを確実にクリアにする。
          setOrimQuestStatus(_STATUS_ORIMQUEAT_READY_8_1);
          sendMessage("$9536", 0); // GreenMessage その状態で[alt+4]を押すと、大砲から弾が発射されます。
          OrimQuestTimer timer_8_1 = new OrimQuestTimer(
            _STATUS_ORIMQUEAT_READY_8_1, 8000);
          timer_8_1.begin();
         break;
         case _STATUS_ORIMQUEAT_READY_8_1:
          if(_attack_rune == null){//砲弾が発射されて初期化済み
           setOrimQuestStatus(_STATUS_ORIMQUEAT_READY_9);
           OrimQuestTimer timer_9 = new OrimQuestTimer(
             _STATUS_ORIMQUEAT_READY_9, 8000);
           timer_9.begin();
          }else{
           setOrimQuestStatus(_STATUS_ORIMQUEAT_READY_8_2);
           sendMessage("$9545", 0); // GreenMessage 時間がありません急いでください。
           OrimQuestTimer timer_8_2 = new OrimQuestTimer(
             _STATUS_ORIMQUEAT_READY_8_2, 8000);
           timer_8_2.begin();
          }

         break;
         case _STATUS_ORIMQUEAT_READY_8_2:
          if(_attack_rune == null){//砲弾が発射されて初期化済み
           setOrimQuestStatus(_STATUS_ORIMQUEAT_READY_9);
           OrimQuestTimer timer_9 = new OrimQuestTimer(
             _STATUS_ORIMQUEAT_READY_9, 8000);
           timer_9.begin();
          }else{
           setOrimQuestStatus(_STATUS_ORIMQUEAT_READY_9);
           sendMessage("$9546", 0); // GreenMessage 的を逃してしまったようです・・・
           OrimQuestTimer timer_9 = new OrimQuestTimer(
             _STATUS_ORIMQUEAT_READY_9, 8000);
           timer_9.begin();
          }

         break;
         case _STATUS_ORIMQUEAT_READY_9:
          setOrimQuestStatus(_STATUS_ORIMQUEAT_READY_10);
          sendMessage("$9537", 0); // GreenMessage オリム:しかし、敵も攻撃を仕掛けてくるため防御も必要です。
          OrimQuestTimer timer_10 = new OrimQuestTimer(
            _STATUS_ORIMQUEAT_READY_10, 8000);
          timer_10.begin();
         break;
         case _STATUS_ORIMQUEAT_READY_10:
          setOrimQuestStatus(_STATUS_ORIMQUEAT_READY_11);
          sendMessage("$9538", 0); // GreenMessage オリム:防御のためには、黄色い魔法陣の中に入ってください。
          _diffence_rune_1 = spawnOne(L1Location.randomLocation(new L1Location(32799,32803,_mapId), 1, 6, false), 91453, 5);
          _diffence_rune_2 = spawnOne(L1Location.randomLocation(new L1Location(32799,32803,_mapId), 1, 6, false), 91453, 5);
          OrimQuestTimer timer_11 = new OrimQuestTimer(
            _STATUS_ORIMQUEAT_READY_11, 8000);
          timer_11.begin();
         break;
         case _STATUS_ORIMQUEAT_READY_11:
          _action = 0;//ソーシャルアクションを確実にクリアにする。
          setOrimQuestStatus(_STATUS_ORIMQUEAT_READY_11_1);
          sendMessage("$9539", 0); // GreenMessage オリム:その状態で[alt+2]を押すと、私が防御の呪文を詠唱します。
          OrimQuestTimer timer_11_1 = new OrimQuestTimer(
            _STATUS_ORIMQUEAT_READY_11_1, 8000);
          timer_11_1.begin();
         break;

         case _STATUS_ORIMQUEAT_READY_11_1:
          if(_diffence_rune_1 == null && _diffence_rune_2 == null ){
           setOrimQuestStatus(_STATUS_ORIMQUEAT_START);
           OrimQuestTimer timer_start = new OrimQuestTimer(
             _STATUS_ORIMQUEAT_START, 8000);
           timer_start.begin();
          }else{
           setOrimQuestStatus(_STATUS_ORIMQUEAT_READY_11_2);
           sendMessage("$9545", 0); // GreenMessage 時間がありません急いでください。
           OrimQuestTimer timer_11_2 = new OrimQuestTimer(
             _STATUS_ORIMQUEAT_READY_11_2, 8000);
           timer_11_2.begin();
          }

         break;
         case _STATUS_ORIMQUEAT_READY_11_2:
          if(_diffence_rune_1 == null && _diffence_rune_2 == null ){
           setOrimQuestStatus(_STATUS_ORIMQUEAT_START);
           OrimQuestTimer timer_start = new OrimQuestTimer(
             _STATUS_ORIMQUEAT_START, 8000);
           timer_start.begin();
          }else{
           setOrimQuestStatus(_STATUS_ORIMQUEAT_START);
           sendMessage("$9546", 0); // GreenMessage 的を逃してしまったようです・・・
           OrimQuestTimer timer_start = new OrimQuestTimer(
             _STATUS_ORIMQUEAT_START, 8000);
           timer_start.begin();
          }

         break;
         /**********   開始前の準備段階 END  **************/

         case _STATUS_ORIMQUEAT_START://船 vs 船 通常ラウンドでは3回に分けてMob出現
          clearAllRune();//RUNEを初期化
         try {
          sendMessage("$9540", 0);// GreenMessage さあ敵の攻撃に備えましょう。急いで!
          for(int round=0;round<12;round++){//4.8.12ラウンドでは1回のみボス出現、MOBも一緒に出現。
           _currentRound = round;//
           Thread.sleep(3000);
           if(round==0){
            sendMessage("$9603", 0); //9603 オリム:船のどこかに隠れているモンスターがいます!倒してください!
            sendPackets(new S_DisplayClack());
            sendPackets(new S_Sound(82));
            OrimQuestTimer spawn = new OrimQuestTimer(
              _STATUS_SPAWN_MONSTERS, 0);
            spawn.begin();
            Thread.sleep(35000);
            int monsterCount = checkAliveMonster();
            if(monsterCount >= 5 && monsterCount <= 7){//EASYMODE
             _startPoint = 0;
             _endPoint = 5;
            }else if(monsterCount >= 3 && monsterCount <= 4){//A LITTLE EASYMODE
             _startPoint = 2;
             _endPoint = 7;
            }else if(monsterCount == 2){//スーパーハード
             _startPoint = 10;
             _endPoint = 19;
            }else if(monsterCount == 1){//ハードモード
             _startPoint = 8;
             _endPoint = 12;
            }else if(monsterCount == 0){//ノーマルモード
             _startPoint = 5;
             _endPoint = 9;
            }

           }
           //9588 オリム:前より強い気が感じられます!気をつけてください!
           //9589 オリム:前より弱い気が感じられます。だが、気をつけてください!
           Thread.sleep(5000);
           sendMessage("$9548", 0);//9548 オリム:このあたりに何かが漂っているようです。気を付けてください。
           int i = _random.nextInt(4);
           _bonusRoundStatus[round]=i;//海洋生物の襲来を保存
           Thread.sleep(5000);
           if(i==0){//サメ [座標固定]
            L1NpcInstance temp = spawnOne(new L1Location(32803,32788,_mapId),91445,4);
            temp.broadcastPacket(new S_DoActionGFX(temp.getId(), 0));
            sendMessage("$", 0);//9541 オリム:周囲にサメの群れがいます。気をつけて!
            deleteNpc(temp);
           }else{
            L1NpcInstance temp = null;
            if(i==1){//シーハーピー [ランダム移動]
             int rd = _random.nextInt(4)+3;
             _tempNpcNumber = 91483;
             for(int z = 0;z<rd;z++){
              OrimQuestTimer timer = new OrimQuestTimer(
                _STATUS_MOVE_SEA_MONSTER, 0);
              timer.begin();
             }
             sendMessage("$9542", 0);//9542 オリム:すぐそばにシーハーピーの棲み処があるようです。気をつけて!
            }else if(i==2){//シードレイク [ランダム移動]
             int rd = _random.nextInt(4)+3;
             _tempNpcNumber = 91482;
             for(int z = 0;z<rd;z++){
              OrimQuestTimer timer = new OrimQuestTimer(
                _STATUS_MOVE_SEA_MONSTER, 0);
              timer.begin();
             }
             sendMessage("$9543", 0);//9543 オリム:シードレイクですね。珍しいからってあまり近寄ってはいけませんよ!
            }else if(i==3){//クラーケン [座標固定]
             temp = spawnOne(new L1Location(32800,32794,_mapId),91494,4);
             temp.broadcastPacket(new S_DoActionGFX(temp.getId(), 0));
             deleteNpc(temp);
             sendMessage("$9544", 0);//9544 オリム:あの気味悪いやつは、どこか危なそうです。
            }
           }
           Thread.sleep(10000);
           //点数出力
           if(i!=0){
            if(checkSeaMonsterAttack(i)){//trueが帰ってくれば海洋生物の襲撃と認識
             if(i==3){//クラーケン 他のMOBとの共闘を許可しない。
              if(_createDoor != null){
               _createDoor.open();
              }
              Thread.sleep(10000);
              sendMessage("$10720", 1);//10720 一分以内に倒せれば・・・
              long startTime = System.currentTimeMillis();
              while(!_isCrakenDead && !_isDeleteTransactionNow){//削除処理中ではなく
               Thread.sleep(3000);
              }
              if(System.currentTimeMillis()-startTime <= 63000){//60秒以内の討伐
               //報酬の出現
               spawnOneMob(new L1Location(32798,32807,_mapId), 91440);
              }
              if(_createDoor != null){
               _createDoor.close();
              }
              Thread.sleep(10000);
             }
            }
           }
           sendMessage("$"+_pointMessages[_point/100],1);

           Thread.sleep(10000);
           if(round != 11){//最終ラウンド
            if(round > 0 && (round+1)%4 == 0){//ラウンドが4の倍数
             sendMessage("$9554", 0);// 9554 オリム:気をつけてください!今度の船は他よりも強い気が感じられます。
            }else{
             //敵船接近につき警告
             sendMessage("$9550",0);//9550 オリム:敵の船が近づいています!攻撃に備えてください!
            }
            //ポータルらしきもの出現 両方
            _acceptOrder = true;
            createRune();
           }else{
            sendMessage("$9556",0);//9556 オリム:ウウウ…今度の船からはオールディンの気が感じられます!
           }

           Thread.sleep(20000);
           //20秒経過
           if(round != 11){
            sendMessage("$9551",0);//9551 オリム:船同士がまもなく衝突します!海へ落ちないように気をつけてください!
           }
           //さらに20秒経過=衝突※ここまでデッキでの操作が可能

           OrimQuestTimer move_ship = new OrimQuestTimer(
             _STATUS_MOVE_SHIP_1, 0);
           move_ship.begin();

           Thread.sleep(20000);
           //10秒後
           sendMessage("$"+(9609+round),1);//9609 戦闘が始まります。(?/12)
           Thread.sleep(3000);
           sendPackets(new S_DisplayClack());
           sendPackets(new S_Sound(82));
           Thread.sleep(3000);
           //8~10秒後
           if(!(round == 11)){//最終ラウンドではない
            for(int subRound = 0;subRound<4;subRound++){
             if(subRound == 3){//最終サブラウンドならばオールディンに捕まる
              if(_mimic_A == null && _mimic_B == null &&_mimic_C == null ){//呪術ミミックを設置
               sendMessage("$9608",2);//9608 オールディン:あいつを捕まえろ!
               sendPackets(new S_BlackWindow());
               int[][] templocation = {{32741,32800},
                 {32732,32798},
                 {32733,32807}
                 };
               int rndval = _random.nextInt(3);
               _mimic_A = spawnOneMob(new L1Location(templocation[0][0],templocation[0][1],_mapId),91455);
               _mimic_B = spawnOneMob(new L1Location(templocation[1][0],templocation[1][1],_mapId),91455);
               _mimic_C = spawnOneMob(new L1Location(templocation[2][0],templocation[2][1],_mapId),91455);
               _mimic_A.getInventory().storeItem(50061, 1);
               _mimic_B.getInventory().storeItem(50061, 1);
               _mimic_C.getInventory().storeItem(50061, 1);

               if(rndval==0){
                _mimic_A.setCurseMimic(true);
               }else if(rndval==1){
                _mimic_B.setCurseMimic(true);
               }else if(rndval==2){
                _mimic_C.setCurseMimic(true);
               }
               //誰かテレポートで連れて行かれる
               ArrayList<L1PcInstance> pclist = L1World.getInstance().getVisiblePlayer(_shipWall, 15);
               Collections.shuffle(pclist);
               for(L1PcInstance pc : pclist){
                Thread.sleep(3000);
                L1Teleport.teleport(pc, 32735,32802,_mapId, 1, false);
                break;
               }
               sendMessage("$9606",1);//9606 オリム:早く脱出してください。足止めしているモンスターがどこかにいるはずです。
              }
              OrimQuestTimer moveShip = new OrimQuestTimer(_STATUS_MOVE_SHIP_2, 0);
              moveShip.begin();
             }else{
              if(subRound==1){
               int countMonster = checkAliveMonster();
               if(countMonster >= 5){
                _roundStatus[round]=-1;//遅い
               }else if(countMonster >= 2){//
                _roundStatus[round]=0;//通常スピード
               }else if(countMonster >= 0){//4以上
                _roundStatus[round]=1;//早い
               }
              }
              spawnMonsters();
               if(subRound==0){
                if((_currentRound == 3 || _currentRound == 7) && _portal_rune == null){//通常敵船:堕落 < リッチ < ゼニス クイーン
                int npcId = 0;
                if(_point <= 300){//堕落
                 npcId = 91480;
                }else if(_point <= 600){//リッチ
                 npcId = 91476;
                }else if(_point > 600){//ゼニスクイーン
                 npcId = 91478;
                }
                spawnOneMob(L1Location.randomLocation
                  (new L1Location(32799,32803,_mapId),
                    1, 6, false), npcId);
                }
               }
              if(_roundStatus[round] == 1){
               sendMessage("$9560",2);//9560 オリム:戦いに合流してください。敵部隊を全滅させないと、生き残れません!
              }else{
               sendMessage("$"+(9563+subRound),1);//9563 ?つ目の部隊が乱入しました。
              }
             }
             Thread.sleep(30000);
             //sleep 30秒(食い残しで35秒延長)
            }
            while(checkAliveMonster() >= 4){//4以上
             _ship_burning++;
             sendPackets(new S_ShockWave());
             L1NpcInstance fire = spawnOne(L1Location.randomLocation(new L1Location(32799,32803,_mapId), 1, 6, false), 91487, 5);
             fire.broadcastPacket(new S_SkillSound(fire.getId(),762));
             if(_ship_burning >= 10){
              sendMessage("$9562",1);//9562 オリム:船が沈没します!急いで脱出してください!この状態では危険です!
              Thread.sleep(35000);
              outPushPlayer();
              return;
             }else if(_ship_burning == 9){
              sendMessage("$9587",1);//9587 オリム:船が沈没する直前です。なんとかして船を死守しなければなりません!
             }else{
              sendMessage("$9561",1);//9561 オリム:乱入した敵が我々の船を壊しにかかっています!急いで倒して!
             }

             Thread.sleep(35000);
            }
           }else{//最終ラウンド
            spawnMonsters();
            spawnOneMob(L1Location.randomLocation(new L1Location(32799,32803,_mapId), 1, 6, false),91471 );//オールディン
            long time = System.currentTimeMillis();
            int opt = 0;
            Thread.sleep(3000);
            while(!_isLastBossDead && !_isDeleteTransactionNow){
             opt += 3000;
             if(opt >= 30000){
              opt = 0;
              //船の破壊を開始
              _ship_burning++;
              sendPackets(new S_ShockWave());
              L1NpcInstance fire = spawnOne(L1Location.randomLocation(new L1Location(32799,32803,_mapId), 1, 6, false), 91487, 5);
              fire.broadcastPacket(new S_SkillSound(fire.getId(),762));
              if(_ship_burning >= 10){
               sendMessage("$9562",1);//9562 オリム:船が沈没します!急いで脱出してください!この状態では危険です!
               Thread.sleep(35000);
               outPushPlayer();
               return;
              }else if(_ship_burning == 9){
               sendMessage("$9587",1);//9587 オリム:船が沈没する直前です。なんとかして船を死守しなければなりません!
              }else{
               sendMessage("$9561",1);//9561 オリム:乱入した敵が我々の船を壊しにかかっています!急いで倒して!
              }
             }
             Thread.sleep(3000);
            }
            OrimQuestTimer end_1 = new OrimQuestTimer(
            _STATUS_ORIMQUEAT_END_1, 0);
            end_1.begin();
           }
          }
         } catch (InterruptedException e) {
          // TODO 自動生成された catch ブロック
          e.printStackTrace();
         }
         break;
         /*9557 オリム:敵が乱入してきます!攻撃に備えてください!
         9547 オリム:この戦力ではどうしようもありません。全員逃げてください。

     


         9585 オリム:残りわずかです。もう少しがんばってください!
         9586 オールディン:その程度か… この船は私のものだな。

         9604 オリム:我々の船が攻撃されています。魔法陣に入ってください。
           */
     /**
       * すべてのボスは、その時点での敵のレベル(こちらの点数)によって変化します。

      海賊船:ホセ < ディエゴ < ドレイク船長
      幽霊船:デジェネレイト ソウル(モンスター) < ゾンビ ロード < エルモア ゾンビ マーシャル
      味方船に乗り込んでくるボス:リッチ < ゼニス クイーン


      12ラウンドのボス:バフォメット < オールディン< 4賢者(セマ・カスパー・バルタザール・メルキオール) < フード未着用セマ+3賢者
      ※.海賊船、幽霊船の場合、出現ボスの違いでそのラウンドに出現する敵モンスターの種類も変わります。
      11ラウンド終了時点で1900点以上でフード未着用セマ+3賢者出現(未確認)
      */

     

         //**********   襲撃の段階 END  **************//
         /**********   終了の準備段階 START  **************/
         case _STATUS_ORIMQUEAT_END_1:
          setOrimQuestStatus(_STATUS_ORIMQUEAT_END_2);//クエスト状態を準備に変更
          sendMessage("$9579", 0);//9579 オリム:もはやあれこれ説明する必要はないでしょう…
          spawnOne(new L1Location(1,1,_mapId),91455,0);//呪術ミミック 全員に?段階の箱をくれる
          OrimQuestTimer end_2 = new OrimQuestTimer(
             _STATUS_ORIMQUEAT_END_2, 12000);
          end_2.begin();
         break;
         case _STATUS_ORIMQUEAT_END_2:
          setOrimQuestStatus(_STATUS_ORIMQUEAT_END_3);//クエスト状態を準備に変更
          sendMessage("$9580", 0);//9580 オリム:今頃、話せる島はやつらの手で廃虚になっていることでしょう。
          OrimQuestTimer end_3 = new OrimQuestTimer(
             _STATUS_ORIMQUEAT_END_3, 12000);
          end_3.begin();
         break;
         case _STATUS_ORIMQUEAT_END_3:
          setOrimQuestStatus(_STATUS_ORIMQUEAT_END_4);//クエスト状態を準備に変更
          sendMessage("$9581", 0);//9581 オリム:戻ったところで、思い出の場所はすべて跡形もなく消えてしまったはず…。
          OrimQuestTimer end_4 = new OrimQuestTimer(
             _STATUS_ORIMQUEAT_END_4, 12000);
          end_4.begin();
         break;
         case _STATUS_ORIMQUEAT_END_4:
          setOrimQuestStatus(_STATUS_ORIMQUEAT_END_5);//クエスト状態を準備に変更
          sendMessage("$9582", 0);//9582 オリム:戦いは始まったばかりです。私は師にお会いしてこの戦いを終わらせる方法を探ってみます。
          OrimQuestTimer end_5 = new OrimQuestTimer(
             _STATUS_ORIMQUEAT_END_5, 12000);
          end_5.begin();
         break;
         case _STATUS_ORIMQUEAT_END_5:
          setOrimQuestStatus(_STATUS_ORIMQUEAT_END_6);//クエスト状態を準備に変更
          sendMessage("$9583", 0);//9583 オリム:皆さん、どうか生き残ってください。この戦いが終わるまで…
          OrimQuestTimer end_6 = new OrimQuestTimer(
             _STATUS_ORIMQUEAT_END_6, 12000);
          end_6.begin();
         break;
         case _STATUS_ORIMQUEAT_END_6:
          setOrimQuestStatus(_STATUS_ORIMQUEAT_END);//クエスト状態を準備に変更
          sendMessage("$9584", 0);//9584 オリム:もうちょっとでグルーディン領地です!早くこの危機を人々に知らせなければなりません!
          OrimQuestTimer end = new OrimQuestTimer(
             _STATUS_ORIMQUEAT_END, 12000);
          end.begin();
         break;
         case _STATUS_ORIMQUEAT_END://本来ならばランキング画面が表示される
          //全てのプレイヤーを排出
          outPushPlayer();
         break;
         /**********   終了の準備段階 END  **************/
         case _STATUS_MOVE_SHIP_1:
         try {
          int totalShipDamage = 0;
          int shipId = 0;
          L1Location loc = new L1Location(32794+_random.nextInt(8),32831,_mapId);

          int typeA = 0;//ホセ  海賊船
          int typeB = 0;//ディエゴ 海賊船
          int typeC = 0;//ドレイク 幽霊船

          for(int i=0;i < 12;i++){
           if(i < 4){//4ラウンドまでの統計を取る
            typeA+= _roundHitDamage[i];
           }else if(i >= 4 && 7 >= i){
            typeB+= _roundHitDamage[i];
           }else if(i >= 8 && 10 >= i){
            typeC+= _roundHitDamage[i];
           }
           totalShipDamage += _roundHitDamage[i];
          }

          if((_currentRound == 2 || _currentRound == 3)&& !_IS_SPAWN_SHIP_TYPEA
            && typeA >= 9){//幽霊船A
           _IS_SPAWN_SHIP_TYPEA = true;
           _ship = spawnOne(loc,91441,0);
          }else if((_currentRound == 6 || _currentRound == 7)&& !_IS_SPAWN_SHIP_TYPEB
            && typeB >= 9){//幽霊船B
           _IS_SPAWN_SHIP_TYPEB = true;
           _ship = spawnOne(loc,91441,0);
          }else if((_currentRound == 10)&& !_IS_SPAWN_SHIP_TYPEC
            && typeC >= 9){//幽霊船C
           _IS_SPAWN_SHIP_TYPEC = true;
           _ship = spawnOne(loc,91442,0);
          }else{
           int shipDamage = 0;
           if(_currentRound >= 0 && _currentRound <= 3){
            shipDamage = typeA;
           }else if(_currentRound >= 4 && _currentRound <= 7){
            shipDamage = typeB;
           }else if(_currentRound >= 8 && _currentRound <= 11){
            shipDamage = typeC;
           }
           if(shipDamage>=9){//24以上
            shipId = 91448;
           }else if(shipDamage>=6){//12以上
            shipId = 91447;
           }else{
            shipId = 91446;
           }
           _ship = spawnOne(loc,shipId,0);
          }
          if(_ship!=null){
           while (_ship.moveDirection(loc.getX(),loc.getY()-17) != -1) {
            if (_ship.getLocation().getLineDistance(
              new Point(loc.getX(),loc.getY()-17)) != 0) {
             _ship.setDirectionMove(_ship.moveDirection(
               loc.getX(),loc.getY()-17));
             Thread.sleep(_ship.getMoveSpeed());
            }else{
             break;
            }
           }
           sendShipDamage();
           sendPackets(new S_ShockWave());
           _acceptOrder = false;
           clearAllRune();
           if(_ship.getNpcId()==91441){
            sendMessage("$9553",0);//9553 オリム:今度は幽霊船!息つく暇もないのか!
           }else if(_ship.getNpcId()==91442){
            sendMessage("$9552",0);//9552 オリム:ええっ!ドレイク船長の船だって!気をつけてください!手強いですよ!
           }else if(_currentRound == 11){

           }else{
            sendMessage("$9555",0);//9555 オリム:船同士が衝突すれば、敵が飛び込んで来ますよ!気をつけてください!
           }

           Thread.sleep(2000);//2秒待機
           if(_ship.getNpcId()==91441 || _ship.getNpcId()==91442){//海賊船ならば乗り込み発生
            sendMessage("$9559",1); //オリム:敵船の内部に通じるポータルです!気をつけてください。中から強い気が感じられます。
            if(_portal_rune == null){
             _portal_rune = spawnOne(new L1Location(32799,32809,_mapId),91452,0);
            }
            if(_moveTrap == null){
             if(_ship.getNpcId()==91442){
              _moveTrap = setSwitch(new L1Location(32799,32809,_mapId), 73);
             }else{
              _moveTrap = setSwitch(new L1Location(32799,32809,_mapId), 72);
              for(L1Object obj:L1World.getInstance().getVisiblePoint( new L1Location(32741,32860,_mapId), 15)){
               if(obj instanceof L1ItemInstance){
                L1Inventory groundInventory = L1World
                  .getInstance().getInventory(obj.getX(),
                    obj.getY(), obj.getMapId());
                groundInventory.deleteItem((L1ItemInstance) obj);
                L1World.getInstance().removeVisibleObject(obj);
                L1World.getInstance().removeObject(obj);
               }else if(obj instanceof L1MonsterInstance){
                obj.getMap().setPassable(obj.getX(), obj.getY(), true);
                ((L1MonsterInstance) obj).deleteMe();
               }
              }

             }
            }
           }else if(_currentRound==3){//通常敵船:堕落 < リッチ < ゼニス クイーン
            int npcId = 0;
            if(_point <= 300){//堕落
             npcId = 91480;
            }else if(_point <= 600){//リッチ
             npcId = 91476;
            }else if(_point > 600){//ゼニスクイーン
             npcId = 91478;
            }
            if(typeA >= 12){
             spawnOneMob(new L1Location(32671,32802,_mapId), npcId);
             if(_portal_rune == null){
              _portal_rune = spawnOne(new L1Location(32799,32809,_mapId),91452,0);
             }
             if(_moveTrap == null){
              _moveTrap = setSwitch(new L1Location(32799,32809,_mapId), 70);
             }
            }
           }else if(_currentRound==7){//通常敵船:堕落 < リッチ < ゼニス クイーン
            int npcId = 0;
            if(_point <= 300){
             npcId = 91480;
            }else if(_point <= 600){
             npcId = 91476;
            }else if(_point > 600){
             npcId = 91478;
            }
            if(typeB >= 12){
             spawnOneMob(new L1Location(32671,32866,_mapId), npcId);
             if(_portal_rune == null){
              _portal_rune = spawnOne(new L1Location(32799,32809,_mapId),91452,0);
             }
             if(_moveTrap == null){
              _moveTrap = setSwitch(new L1Location(32799,32809,_mapId), 71);
             }
            }
           }
           //xyz
           //abc
           //x=boss 32671 32802 32677 32800
           //a=32671 32866   32677 32864
           //b=docro 32735 32862 32741 32860
           //c=kaizoku 32799 32863 32805 32862

           while (_ship.moveDirection(loc.getX(),loc.getY()-13) != -1) {
            if (_ship.getLocation().getLineDistance(
              new Point(loc.getX(),loc.getY()-13)) != 0) {
             _ship.setDirectionMove(_ship.moveDirection(
               loc.getX(),loc.getY()-13));
             Thread.sleep(_ship.getMoveSpeed());
            } else {
             break;
            }
           }
          }
         } catch (InterruptedException e) {
          // TODO 自動生成された catch ブロック
          e.printStackTrace();
         }
         break;
         case _STATUS_MOVE_SHIP_2:
          if(_ship != null){
           try {
            if(_portal_rune != null){
             _portal_rune.deleteMe();
             _portal_rune = null;
            }
            if(_moveTrap != null){
             L1WorldTraps.getInstance().removeTrap(_moveTrap);
             _moveTrap = null;
            }
            while (_ship.moveDirection(_ship.getX(),_ship.getY()+13) != -1) {
             if (_ship.getLocation().getLineDistance(
               new Point(_ship.getX(),_ship.getY()+13)) != 0) {
              _ship.setDirectionMove(_ship.moveDirection(
                _ship.getX(),_ship.getY()+13));
              Thread.sleep(_ship.getMoveSpeed());
             } else {
              break;
             }
            }
           } catch (InterruptedException e1) {
            // TODO 自動生成された catch ブロック
            e1.printStackTrace();
           }
           deleteNpc(_ship);
           _ship = null;
          }
         break;
         case _STATUS_MOVE_SEA_MONSTER:
         try {
          L1NpcInstance npc =  spawnOne(L1Location.randomLocation(new L1Location(32799,32803,_mapId), 1, 6, false),_tempNpcNumber,_random.nextInt(8));
          Thread.sleep(1000);
          L1Location temploc = new L1Location(npc.getX(),npc.getY(),npc.getMapId());
          temploc.forward(npc.getHeading());
          for(int i = 0;i<40;i++){
           while (npc.moveDirection(temploc.getX(),temploc.getY()) != -1) {
            if (npc.getLocation().getLineDistance(
              new Point(temploc.getX(),temploc.getY())) != 0) {
             npc.setDirectionMove(npc.moveDirection(
               temploc.getX(),temploc.getY()));
             Thread.sleep(npc.getMoveSpeed());
            } else {
             break;
            }
           }
           temploc.forward(npc.getHeading());
          }
          deleteNpc(npc);
         } catch (InterruptedException e) {
          // TODO 自動生成された catch ブロック
          e.printStackTrace();
         }
         break;
         case _STATUS_ORIMQUEST_MONITOR :
          boolean flag = false;
          for (L1PcInstance pc  :  L1World.getInstance().getAllPlayers()) {
           if (getMapId() == pc.getMapId()) {
            flag = true;
            break;
           }
          }
          if(flag){
           OrimQuestTimer monitorRepeat = new OrimQuestTimer(
             _STATUS_ORIMQUEST_MONITOR,600000);
           monitorRepeat.begin();
          }else{
           _isDeleteTransactionNow = true;//削除処理へと以降
           reset();
           L1OrimQuest.getInstance().resetActiveMaps(_mapId);//インスタンスマップを解放する。
          }
         break;
         case _STATUS_SPAWN_MONSTERS :
          if(_extraShipCome){
           if(_comeShipCount==0){
            for(int i=0;i<7;i++){
             spawnOneMob(L1Location.randomLocation
               (new L1Location(32799,32803,_mapId), 1, 6, false),_monstersC[_random.nextInt(_monstersC.length)]);
            }
           }else if(_comeShipCount==1){
            for(int i=0;i<7;i++){
             spawnOneMob(L1Location.randomLocation
               (new L1Location(32799,32803,_mapId), 1, 6, false),_monstersC[_random.nextInt(_monstersC.length)]);
            }
           }else if(_comeShipCount==2){
            for(int i=0;i<7;i++){
             spawnOneMob(L1Location.randomLocation
               (new L1Location(32799,32803,_mapId), 1, 6, false),_monstersB[_random.nextInt(_monstersB.length)]);
            }
           }
           _comeShipCount++;
          }else{
           if(_currentRound == 0){
            if(!_isRankSelected){//チュートリアル後に出現するランク決めMOB
             for(int i=0;i<7;i++){
              spawnOneMob(L1Location.randomLocation
                (new L1Location(32799,32803,_mapId), 1, 6, false),_monstersA[_random.nextInt(5)]);
             }
            }else{

            }
           }
          }
         break;
         case _STATUS_CREATE_RUNES :
          createRune();
         break;
         case _STATUS_ENEMY_CANON :
          int[][] table = {{32780,32818,35},{32793,32788,16}};
          int random = _random.nextInt(2);
          S_EffectLocation se = new S_EffectLocation(table[random][0]+_random.nextInt(table[random][2]), table[random][1], 8233);
          sendPackets(se);
         break;
         case _STATUS_FIRE_CANON_1 :
          if( _cannon_1 != null ){
           _cannon_1.broadcastPacket(new S_DoActionGFX(_cannon_1.getId(), 2));
          }
         break;
         case _STATUS_FIRE_CANON_2 :
          if( _cannon_2 != null ){
           _cannon_2.broadcastPacket(new S_DoActionGFX(_cannon_2.getId(), 2));
          }
         break;
        }//isDeleteTrancaction End
       }//swicth End
       cancel();//如何なる理由があっても必ずここを通過する。
      }
     }

     /**
      * クエストに参加しているプレイヤーへメッセージを送信する。
      *
      * @param s
      *            送信する文字列
      * @param cases
      *            送信するパケットの種類 0=Green 1=Yellow 2=Red
      */
     private void sendMessage(String s, int cases) {
      if(cases==0){
       for (L1PcInstance pc  :  L1World.getInstance().getAllPlayers()) {
        if (pc.getMapId() == _mapId) {
         pc.sendPackets(new S_GreenMessage(s));
        }
       }
      }else if(cases==1){
       for (L1PcInstance pc  :  L1World.getInstance().getAllPlayers()) {
        if (pc.getMapId() == _mapId) {
         pc.sendPackets(new S_YellowMessage(s));
        }
       }
      }else if(cases==2){
       for (L1PcInstance pc  :  L1World.getInstance().getAllPlayers()) {
        if (pc.getMapId() == _mapId) {
         pc.sendPackets(new S_RedMessage(s));
        }
       }
      }

     }

     /**
      * クエストに参加しているプレイヤーへ引数で渡されたパケットを送信する。
      *
      * @param serverbasepacket 送信するパケット
      */
     private void sendPackets(ServerBasePacket serverbasepacket) {
      for (L1PcInstance pc  :  L1World.getInstance().getAllPlayers()) {
       if (pc.getMapId() == _mapId) {
        pc.sendPackets(serverbasepacket);
       }
      }
     }

     public short getMapId() {
      return _mapId;
     }

     public void setMapId(short _mapId) {
      this._mapId = _mapId;
     }

     public void setOrimQuestStatus(int step) {
      _OrimQuestStatus = step;
     }

     /**
      * ソーシャルアクション用の応答フラグを設定
      * @param pc
      * @param actionCode
      */
     public void setAction(L1PcInstance pc,int actionCode) {
      if(pc!=null){
       if(pc.isInParty()){
        if(pc.getParty().isLeader(pc) && pc.getMapId()==_mapId){
         if(_OrimQuestStatus == _STATUS_ORIMQUEAT_READY_3){
          _action = actionCode;
         }else if(_OrimQuestStatus > _STATUS_ORIMQUEAT_READY_3){
          if(pc.getX() == 32799 && pc.getY() == 32808){//デッキ上か?
           if(actionCode==66){//Alt+4 攻撃
            fireGun();
           }else if(actionCode==69){//Alt+2 防御
            diffenceShip();
           }
          }
         }
        }
       }else if(pc.isGm()){//GM用
        if(pc.getMapId()==_mapId){
         if(_OrimQuestStatus == _STATUS_ORIMQUEAT_READY_3){
          _action = actionCode;
         }else if(_OrimQuestStatus > _STATUS_ORIMQUEAT_READY_3){
          if(pc.getX() == 32799 && pc.getY() == 32808){//デッキ上か?
           if(actionCode==66){//Alt+4 攻撃
            fireGun();
           }else if(actionCode==69){//Alt+2 防御
            diffenceShip();
           }
          }
         }
        }
       }
      }
     }
     /**
      * ルーンが全て消えたか調査する。
      * 戻り値 :
      * true ならば全て消えている
      */

     private boolean checkRune(){
      return _diffence_rune_2 == null && _diffence_rune_1 == null && _attack_rune == null;
     }

     /**
      * オリムの船に防御の魔法を掛けて船を強化する
      */
     public void diffenceShip() {
      if(_diffence_rune_1!=null && _diffence_rune_2!=null){
       _diffence_rune_1.deleteMe();
       _diffence_rune_2.deleteMe();
       _diffence_rune_1=null;
       _diffence_rune_2=null;
       for (L1PcInstance pc  :  L1World.getInstance().getAllPlayers()) {
        if (pc.getMapId() == _mapId) {
         pc.broadcastPacket(new S_SkillSound(pc.getId(), 2030));
         pc.sendPackets(new S_SkillSound(pc.getId(), 2030));
        }
       }
       if(_OrimQuestStatus >= _STATUS_ORIMQUEAT_START){
        if(_random.nextInt(4) > 0){
         _roundDiffenceStatus[_currentRound]++;
        }else{
         enemyCanon();
        }
       }
       if(checkRune()){
        OrimQuestTimer createRuneTimer = new OrimQuestTimer(
          _STATUS_CREATE_RUNES, 3000);
        createRuneTimer.begin();
       }
      }
     }
     /**
      * 砲撃を開始する。
      */
     public void fireGun() {
      if(_attack_rune!=null){
       _attack_rune.deleteMe();
       _attack_rune=null;
       //花火を表示
       for (L1PcInstance pc  :  L1World.getInstance().getAllPlayers()) {
        if (pc.getMapId() == _mapId) {
         pc.broadcastPacket(new S_SkillSound(pc.getId(), 2029));
         pc.sendPackets(new S_SkillSound(pc.getId(), 2029));
        }
       }

       if(!(_OrimQuestStatus >= _STATUS_ORIMQUEAT_START)){
        sendMessage("HIT!", 1);
       }else{
        if(_random.nextInt(4) > 0){
         if( _roundHitDamage[_currentRound]==0){
          _roundHitDamage[_currentRound]++;
          sendMessage("HIT!", 1);
         }else if(_roundHitDamage[_currentRound]==1){
          _roundHitDamage[_currentRound]++;
          sendMessage("HIT!", 0);
         }else if(_roundHitDamage[_currentRound]==2){
          _roundHitDamage[_currentRound]++;
          sendMessage("HIT!", 2);
         }else{
          sendMessage("HIT!", 2);
         }
        }else{
         enemyCanon();
        }
       }

       fireCanon();

       if(checkRune()){
        OrimQuestTimer createRuneTimer = new OrimQuestTimer(
          _STATUS_CREATE_RUNES, 3000);
        createRuneTimer.begin();
       }
      }

     }

     private L1NpcInstance spawnOne(L1Location loc, int npcid, int heading) {
      L1NpcInstance mob = new L1NpcInstance(NpcTable.getInstance()
        .getTemplate(npcid));
      if (mob == null) {
       return mob;
      }

      mob.setId(IdFactory.getInstance().nextId());
      mob.setHeading(heading);
      mob.setX(loc.getX());
      mob.setHomeX(loc.getX());
      mob.setY(loc.getY());
      mob.setHomeY(loc.getY());
      mob.setMap((short) loc.getMapId());
      if(mob.getNpcId() == 91487){
       mob.setTempCharGfx(8511+_random.nextInt(5));
      }

      L1World.getInstance().storeObject(mob);
      L1World.getInstance().addVisibleObject(mob);

      S_NpcPack s_npcPack = new S_NpcPack(mob);
      for (L1PcInstance pc  :  L1World.getInstance().getRecognizePlayer(
        mob)) {
       pc.addKnownObject(mob);
       mob.addKnownObject(pc);
       pc.sendPackets(s_npcPack);
      }
      // モンスターのAIを開始
      mob.onNpcAI();
      mob.updateLight();
      mob.startChat(L1NpcInstance.CHAT_TIMING_APPEARANCE); // チャット開始
      return mob;
     }

     /**
      * 指定されたロケーションに任意のモンスターを一匹生成する。
      *
      * @param loc
      *            出現位置
      * @param npcid
      *            任意のNpcId
      * @return L1MonsterInstance 戻り値  :  成功=生成したインスタンス 失敗=null
      */
     private L1MonsterInstance spawnOneMob(L1Location loc, int npcid) {
      L1MonsterInstance mob = new L1MonsterInstance(NpcTable
        .getInstance().getTemplate(npcid));
      if (mob == null) {
       return mob;
      }

      mob.setId(IdFactory.getInstance().nextId());
      mob.setHeading(5);
      mob.setX(loc.getX());
      mob.setHomeX(loc.getX());
      mob.setY(loc.getY());
      mob.setHomeY(loc.getY());
      mob.setMap((short) loc.getMapId());
      mob.setStoreDroped(false);
      mob.setUbSealCount(0);

      L1World.getInstance().storeObject(mob);
      L1World.getInstance().addVisibleObject(mob);

      S_NpcPack s_npcPack = new S_NpcPack(mob);
      for (L1PcInstance pc  :  L1World.getInstance().getRecognizePlayer(
        mob)) {
       pc.addKnownObject(mob);
       mob.addKnownObject(pc);
       pc.sendPackets(s_npcPack);
      }
      // モンスターのAIを開始
      mob.onNpcAI();
      mob.updateLight();
      mob.startChat(L1NpcInstance.CHAT_TIMING_APPEARANCE); // チャット開始
      return mob;
     }

     private void clearAllRune(){
      //初期化
      clearAttackRune();
      clearDiffenceRune();
     }
     private void clearAttackRune(){
      //初期化
      if(_attack_rune != null){
       _attack_rune.deleteMe();
       _attack_rune = null;
      }
     }
     private void clearDiffenceRune(){
      //初期化
      if(_diffence_rune_1 != null){
       _diffence_rune_1.deleteMe();
       _diffence_rune_1 = null;
      }
      if(_diffence_rune_2 != null){
       _diffence_rune_2.deleteMe();
       _diffence_rune_2 = null;
      }
     }
     private void createRune(){
      if(_acceptOrder){
       if(_attack_rune==null){
        _attack_rune = spawnOne(L1Location.randomLocation(new L1Location(32799,32803,_mapId), 1, 6, false), 91454, 5);
       }
       if(_diffence_rune_1==null){
        _diffence_rune_1 = spawnOne(L1Location.randomLocation(new L1Location(32799,32803,_mapId), 1, 6, false), 91453, 5);
       }
       if(_diffence_rune_2==null){
        _diffence_rune_2 = spawnOne(L1Location.randomLocation(new L1Location(32799,32803,_mapId), 1, 6, false), 91453, 5);
       }
      }
     }

     private void deleteNpc(L1NpcInstance npc){
      npc.getMap().setPassable(npc.getX(), npc.getY(), true);
      npc.deleteMe();
     }

     public void mimicDie(L1MonsterInstance npc) {
      if(npc.isCurseMimic()){
       for(L1PcInstance pc:L1World.getInstance().getVisiblePlayer(npc, 15)){
        L1Teleport.teleport(pc, 32792,32802,_mapId, 2, true);
       }
       if(_mimic_A != null){
        if(!_mimic_A.isDead()){
         _mimic_A.deleteMe();
        }
        _mimic_A = null;
       }
       if(_mimic_B != null){
        if(!_mimic_B.isDead()){
         _mimic_B.deleteMe();
        }
        _mimic_B = null;
       }
       if(_mimic_C != null){
        if(!_mimic_C.isDead()){
         _mimic_C.deleteMe();
        }
        _mimic_C = null;
       }
      }
     }
     private boolean checkSeaMonsterAttack(int type){
      boolean flag = false;
      int count = 0;
      for(int i =0;i<12;i++){
       if(_bonusRoundStatus[i]==type){
        count++;
       }
      }
      if(count==3){
       flag = true;
      }
      if(flag){
       if(type == 1){
        for(int i=0;i<3;i++){
         spawnOneMob(L1Location.randomLocation
           (new L1Location(32799,32803,_mapId), 1, 6, false),91483);
        }
        sendMessage("$9549",1);//9549 オリム:ウウッ!海洋生物まで攻撃をしかけてきています。なんでこんな時に!
       }else if(type == 2){
        for(int i=0;i<3;i++){
         spawnOneMob(L1Location.randomLocation
           (new L1Location(32799,32803,_mapId), 1, 6, false),91482);
        }
        sendMessage("$9549",1);//9549 オリム:ウウッ!海洋生物まで攻撃をしかけてきています。なんでこんな時に!
       }else if(type == 3){
        spawnOneMob(new L1Location(32800,32794,_mapId),91481);//クラーケン
        spawnOneMob(new L1Location(32793,32795,_mapId),91491);//足左
        spawnOneMob(new L1Location(32804,32796,_mapId),91492);//足右
        sendMessage("$9558",1);//9558 オリム:ウウッ!怒り狂った海洋生物が押し寄せてきています!
       }
      }
      return flag;
     }
     /**
      * ワールドに新しいトラップを作成して追加する ※L1ReloadTrapが実行されると破棄される点に注意
      *
      * @param loc
      *             任意の位置
      * @param id
      *             トラップID
      */
     private static L1TrapInstance setSwitch(L1Location loc, int id) {
      final int trapId = id;
      final L1Trap trapTemp = TrapTable.getInstance().getTemplate(trapId);
      final Point rndPt = new Point();
      rndPt.setX(0);
      rndPt.setY(0);
      final int span = 0;
      final L1TrapInstance trap = new L1TrapInstance(IdFactory.getInstance()
        .nextId(), trapTemp, loc, rndPt, span);
      L1World.getInstance().addVisibleObject(trap);
      L1WorldTraps.getInstance().addTrap(trap);
      return trap;
     }
     private int checkAliveMonster(){
      int count = 0;
      for(Object obj : L1World.getInstance().getVisiblePoint(new L1Location(32799,32803,_mapId), 15)){
       if(obj instanceof L1MonsterInstance){
        if(!((L1MonsterInstance) obj).isDead()){
         count++;
        }
       }
      }
      return count;
     }
     private void spawnMonsters(){
      int startPoint = _startPoint;
      int endPoint = _endPoint;
      for(int i = 0;i<_currentRound;i++){
       if(_roundStatus[i]==1){
        if(endPoint+1 >= _monstersA.length){
         continue;
        }
        startPoint++;
        endPoint++;
       }else if(_roundStatus[i]==-1){
        if(startPoint-1 < 0){
         continue;
        }
        startPoint--;
        endPoint--;
       }
      }
      for(int i = 0;i<7;i++){
       spawnOneMob(L1Location.randomLocation
         (new L1Location(32799,32803,_mapId),
           1, 6, false),_monstersA[startPoint+_random.nextInt(endPoint-startPoint)]);
      }
     }
     private void outPushPlayer(){
      for (Object obj  :  L1World.getInstance().getVisibleObjects(_mapId).values()) {
       if(obj instanceof L1PcInstance){
        L1PcInstance pc = (L1PcInstance) obj;
        final int rndx = _random.nextInt(4);
        final int rndy = _random.nextInt(4);
        final int locx = 32587 + rndx;
        final int locy = 32941 + rndy;
        final short mapid = 0;//話せる島
        L1Teleport.teleport(pc, locx, locy, mapid, 5, false);
       }else{
        if(obj instanceof L1NpcInstance ){
         deleteNpc((L1NpcInstance) obj);;
        }
       }
      }
     }

     private void sendShipDamage(){

      if(_roundDiffenceStatus[_currentRound] < 2){//2回以上防御陣を張っていなければ連絡船へダイレクトダメージ
       if(_shipWall.getStatus()==35){
        _shipWall.setStatus(36);//沈没
       }else{
        _shipWall.setStatus(_shipWall.getStatus()+1);
       }
       _shipWall.broadcastPacket(new S_DoActionGFX(_shipWall.getId(),_shipWall.getStatus()));
       if(_shipWall.getStatus() > 35){
        sendMessage("$9562",1);//9562 オリム:船が沈没します!急いで脱出してください!この状態では危険です!
        sendPackets(new S_ShockWave());
        try {
         Thread.sleep(35000);
        } catch (InterruptedException e) {
         // TODO 自動生成された catch ブロック
         e.printStackTrace();
        }
        outPushPlayer();
       }
      }
     }
     private void enemyCanon(){
      int i = _random.nextInt(4);
      for(int z = 0;z<i;z++){
       OrimQuestTimer timer = new OrimQuestTimer(
         _STATUS_ENEMY_CANON, 2000 + 2000 * z);
       timer.begin();
      }
     }

     private void fireCanon(){
      int i = _random.nextInt(2)+2;//2~3回
      int n = _random.nextInt(2);
      for(int z = 0;z<i;z++){
       if((n+z)%2==1){
        OrimQuestTimer timer = new OrimQuestTimer(
          _STATUS_FIRE_CANON_1, 2000 * z);
        timer.begin();
       }else{
        OrimQuestTimer timer = new OrimQuestTimer(
          _STATUS_FIRE_CANON_2, 2000 * z);
        timer.begin();
       }
      }
     }

     private void reset() {
      try {
       for (L1Object obj  :  L1World.getInstance().getVisibleObjects(_mapId).values()) {
        if (obj.getMapId() == getMapId()) {
         if (obj instanceof L1FieldObjectInstance) {
          L1World.getInstance().removeVisibleObject(obj);
          L1World.getInstance().removeObject(obj);
         } else if (obj instanceof L1EffectInstance) {
          L1World.getInstance().removeVisibleObject(obj);
          L1World.getInstance().removeObject(obj);
         } else if (obj instanceof L1ItemInstance) {
          final L1Inventory groundInventory = L1World
            .getInstance().getInventory(obj.getX(),
              obj.getY(), obj.getMapId());
          groundInventory.deleteItem((L1ItemInstance) obj);
          L1World.getInstance().removeVisibleObject(obj);
          L1World.getInstance().removeObject(obj);
         } else if (obj instanceof L1DoorInstance) {
          DoorTable.getInstance().deleteDoorByLocation(obj.getLocation());
         } else if (obj instanceof L1NpcInstance) {
          ((L1NpcInstance) obj).deleteMe();
         } else if (obj instanceof L1TrapInstance){
          L1WorldTraps.getInstance().removeTrap((L1TrapInstance) obj);
         }
        }
       }
      } catch (final Exception e) {

       e.printStackTrace();
      }
     }
     /**
      * イカちゃんの死亡フラグを立てる
      *
      */
     public void crakenDead() {
      this._isCrakenDead = true;
      if(_craken_tail_left != null){
       _craken_tail_left.broadcastPacket
        (new S_DoActionGFX(_craken_tail_left.getId(),ActionCodes.ACTION_Die));
       _craken_tail_left.deleteMe();
      }

      if(_craken_tail_right != null){
       _craken_tail_right.broadcastPacket
       (new S_DoActionGFX(_craken_tail_right.getId(),ActionCodes.ACTION_Die));
       _craken_tail_right.deleteMe();
      }
     }
     public void crakenTailDead_Left() {
      _craken_tail_left = null;
     }
     public void crakenTailDead_Right() {
      _craken_tail_right = null;
     }

    }

     

    나머지 몇몇 수정할곳이나,

    디비필요하신분 많으면 또올릴게요...

    너무길어서 다들안하실듯..............................

    혹시 필요하신분.....?

     

     

     
     

    [출처] 일본팩에서 해상전 추출 통으로~ (비공개 카페)

    이 게시물을..
    N
    0
    0
    • 리마스터팩 요정 소울 엠피 수정jstory
    • 0
      준희미니

    준희미니 님의 최근 글

    [에바] 나비켓 테이블 관련 설명 761 1 2016 07.29 에바소스인데 오픈대기 켜고 끄는 소스에요~ 81 2016 07.29 퍼플채팅 색(진보라채팅) 68 2016 07.29 선택상자 2탄입니다!! 접속유지증표를 활용한 아템선택 160 2016 07.29 새로운 아이템 인첸트 시에 마법방어 올라가도록 설정하는 113 2016 07.29

    준희미니 님의 최근 댓글

    rt 2021 05.25 ㄳ 2021 05.11 ㄳ 2021 05.11 rt 2021 05.09 rt 2021 04.25
    글쓴이의 서명작성글 감추기 
    댓글 쓰기 에디터 사용하기 닫기
    • view_headline 목록
    • 14px
    • 리마스터팩 요정 소울 엠피 수정
    • 목록
      view_headline
    × CLOSE
    기본 (1,058) 제목 날짜 수정 조회 댓글 추천 비추
    분류 정렬 검색
    • 링크 업로드 관련 공지
      6
      2026.03.25 - 21:56 848 6
    • 인증메일 공지
      2
      2026.03.15 - 16:42 938 2
    • 파일링크 및 인증메일 발송 관련 문의 안내
      5
      2026.03.14 - 22:03 1157 5
    • 포인트 게시판 안내
      2026.02.28 - 19:14 1811
    • 게임존 사이트 변경 사항 안내
      9
      2026.02.26 - 01:07 3335 9
    • 소스자료는 직접 올려주세요
      2017.06.06 - 16:14 609
    1058
    아머브레이크 데스티니 시전시 성공 확률 조정하는 소스가 있나요?
    안정환 2024.04.23 - 10:01 136
    1057
    List.spr(변신,몬스터 수정소스)개조방법
    유튜브고도리 2024.04.19 - 05:02 355
    1056
    NPC 외침 멘트 깔끔정리(by.유튜브고도리)
    유튜브고도리 2024.04.11 - 05:57 158
    1055
    디아블로 참 만들기
    유튜브고도리 2024.04.09 - 05:55 151
    1054
    리니지m 처럼 피통 늘리기,오류가 날때
    유튜브고도리 2024.04.09 - 05:18 112
    1053
    욕하면 채금 먹게 하기
    유튜브고도리 2024.04.09 - 04:59 97
    1052
    레벨에 따른 호칭 부여..?
    밤톨이11 2024.04.08 - 04:24 89
    1051
    초보자 보호 시스템
    밤톨이11 2024.04.08 - 04:21 77
    1050
    마법무기 데미지 증가
    밤톨이11 2024.04.08 - 04:19 97
    1049
    레벨 제한 맵
    밤톨이11 2024.04.08 - 04:14 84
    1048
    마법스크롤
    밤톨이11 2024.04.08 - 04:06 41
    1047
    리니지m 아지트 소유중에도 공성선포하기
    유튜브고도리 2024.04.07 - 21:37 63
    1046
    리니지m 마법인형이 마법을 쓰네?
    유튜브고도리 2024.04.07 - 21:36 92
    1045
    드래곤 슬레이어 각반(장비추가소스)
    유튜브고도리 2024.04.07 - 19:08 79
    1044
    린엠 게렝 변신 카드 만들기
    유튜브고도리 2024.04.06 - 06:06 125
    1043
    버프 물약 개별 소스 오래전 소스
    밤톨이11 2024.04.05 - 18:43 76
    1042
    일시 스텟 상승 물약
    밤톨이11 2024.04.05 - 18:42 36
    1041
    성 전환 물약
    밤톨이11 2024.04.05 - 18:37 41
    1040
    MP 물약 소스
    밤톨이11 2024.04.05 - 18:35 58
    1039
    리니지 옛날버젼..이라는데...구동가능여부 확인 부탁드립니다.
    도난차량 2024.03.24 - 04:56 414
    1038
    랭커
    foqwer 2024.03.14 - 10:43 156
    1037
    인첸별
    foqwer 2024.03.14 - 10:42 132
    1036
    몬스터 앞에 레벨 넣기
    프렌치좋아 2024.03.04 - 01:40 403
    1035
    3.63 글루딘 Single 용
    블루블랙3 2024.02.28 - 23:08 439
    1034
    Sprite file doesn`t exist 오류
    하앙비 2023.12.23 - 02:19 254
    1033
    전쟁세율 고정값 15%
    하남궁 2023.11.29 - 17:02 218
    1032
    인형합성사
    Rebecca 2023.10.09 - 22:54 359
    1031
    2.0 레벨업시 HP량 올리기
    Rebecca 2023.10.09 - 22:49 453
    1030
    전사버전 펫 만렙 변경
    Rebecca 2023.10.09 - 22:44 170
    1029
    맵 순간이동 가능 불가능지역 설정하기
    Rebecca 2023.10.09 - 22:39 252
    1028
    트레져박스 업로드입니다.
    린컴충성 2023.10.07 - 04:46 195
    1027
    리마스터 접속기 소스자료
    홍자놀기 2023.09.08 - 05:41 2365
    1026
    대미지 발동시 범위 질문드립니다
    나잇따나읻따 2023.05.21 - 22:26 313
    1025
    리니지 리마스터 몹 스폰수 어디서 줄일 수 있나요?
    001001 2023.04.25 - 16:06 756
    1024
    전사팩 로봇가능
    노력하자 2023.03.16 - 19:14 1132
    1023
    2.7 자동 물약 소스
    퍽퍽띠 2022.11.18 - 00:40 1251
    1022
    2.0 자동칼질소스 (클래스 파일에서 빼왔습니다)
    drumlinek 2022.11.06 - 05:20 961
    1021
    npc가 인겜에서 채팅으로 말하기
    하늘마음 2022.10.06 - 10:04 339
    1020
    유저 아이피보는 소스
    캐빈N.01 2020.12.15 - 21:34 655
    1019
    인공지능
    캐빈N.01 2020.12.15 - 21:27 1145
    1018
    아데나가 19억이 되면 자동으로 1억으로 금괴로 바꾸기
    강우리 2020.12.12 - 01:48 1014
    1017
    린올기반 휘장 각반 견갑 장비인식 안되는거 수정함
    신화서버 2020.11.17 - 01:48 306
    1016
    방어구 인챈트별 피 증가 소스
    LGTwins 2020.09.12 - 05:52 699
    1015
    장신구 옵션 변경
    LGTwins 2020.08.31 - 07:00 766
    1014
    자동물약
    legena 2020.07.05 - 02:30 2136
    1013
    리마스터팩 스냅퍼 개방 레벨설정 본섭화 수정(몽양님 요청)
    jstory 2020.06.13 - 07:22 777
    1012
    리마스터팩 룬마력제거 검사 적용안대는 부분 수정
    jstory 2020.06.10 - 04:05 296
    1011
    리마스터팩 쓸모없는 아이템 활용
    jstory 2020.06.10 - 04:01 746
    1010
    리마스터팩 요정 소울 엠피 수정
    jstory 2020.06.10 - 03:54 471
    1009
    리마스터팩 자동공지시간에 버프주기
    jstory 2020.06.10 - 03:15 412
    • 1 2 3 4 5 6 7 8 9 10 .. 22
    • / 22 GO
  • GAMEZONE
 GAMEZONE all rights reserved.
by OrangeDay