(function(){

  const quake_plus = {
    pm:{
      count: 5,
      time: 300,
      timemode: '',
      hmax: '0',
      vmax: '10',
      wait: 'true',
      //レイヤ情報の追加
      layer: "default",
      page: "fore",
      chara_name: ""
    },
    start: function(pm){
      let that = this,
          //currentに設定されているメッセージレイヤを所得
          current = `.${this.kag.stat.current_layer}_${this.kag.stat.current_page}`,
          //あらかじめ設定されているレイヤ情報のリスト
          layer_list = {
            'default': '.'+this.kag.define.BASE_DIV_NAME,
            'message': current,
            'message_inner': current+'>.message_inner,.'+this.kag.stat.chara_ptext,
            'message_outer': current+'>.message_outer',
            'chara': '.tyrano_chara'
          };

      //特定のキャラのみ指定する場合
      //layer_listとの衝突を避けるため、条件が揃った時のみlayer_listを追加
      if('chara'==pm.layer && ''!=pm.chara_name){
        pm.layer = 'chara_name';
        layer_list.chara_name = '.tyrano_chara.'+pm.chara_name;
      }else if ('message_inner'==pm.layer) {
        0==$('.'+this.kag.stat.chara_ptext).index() && (layer_list.message_inner=current+'>.message_inner');
      }

      if(layer_list[pm.layer]){
        pm.layer = layer_list[pm.layer]
      }else {
        //レイヤリスト以外を指定した場合、getLayer()で所得する
        let getlayer = this.kag.layer.getLayer(pm.layer,pm.page);
        //getLayerでヒットしなかった場合、pm.layerをclass指定をみなして反映
        (getlayer) ? pm.layer=getlayer : pm.layer='.'+pm.layer;
      }

      //エフェクトの実行
      //iにfalse値を設定
      //--２つ以上のセレクタを同時に動かすとnextOrderを２度通ってしまうためその防止
      let i = !0;
      '0' != pm.hmax ? $(pm.layer).effect('shake',{
        times: parseInt(pm.count),
        distance: parseInt(pm.hmax),
        direction: 'left'
      },parseInt(pm.time),(function(){
        if('true'==pm.wait && i){
          that.kag.ftag.nextOrder();
          i = !1;
        }
      })) : '0' != pm.vmax && $(pm.layer).effect('shake',{
        times: parseInt(pm.count),
        distance: parseInt(pm.vmax),
        direction: 'up'
      },parseInt(pm.time),(function(){
        if('true'==pm.wait && i){
          that.kag.ftag.nextOrder();
          i = !1;
        }
      }));
      'false' == pm.wait && this.kag.ftag.nextOrder()
    }
  };
  TYRANO.kag.ftag.master_tag.quake_plus = object(quake_plus);
  TYRANO.kag.ftag.master_tag.quake_plus.kag = TYRANO.kag;

})()
