カード合成

ハツユキソウです。

件名の通り、てちの狩り向けにカードを作っているのですが、なかなかうまくいかず。。

お金があっというまに飛んでいきますね(´;ω;`)ブワッ

あと2歩くらいのところまでは来たのですが、MPSP吸収の合成のところでつまってます。

card

この組み合わせで

MP吸収

SP吸収

追撃白

属性UP白

女神の微笑

戦闘鼓舞

が入ればいいなーと思っています。

お金を貯めて、また今度挑戦かなー。

 

カードの道のりは険しいです(´・ω・`)

広告

【homuraneko日記 5/6~5/8】

こんばんわhomuranekoです!

久しぶりの更新、以下5/6~5/9の成果です。

・変質したコア ×9

・ゲシュタルトの破片 ×5

・加護インクリ ×5

・クリムゾンM ×5

・クリムゾン/ ×4

・クリムゾン# ×5

・230防具 →いっぱい

・その他 ゲシュタルト核等

ナカナカの成果だったと思います!

これらを売って200M作る→王室インクリと交換 というのが復帰してからの私の金策スタイル。

気長に頑張ります。

後、クラメンさんの協力もあり2次覚醒することができました。

本当にうれしいです!さて次はカンスト目指しますかb

じゃんけんシート

ハツユキソウです。

クラブ内でイベントがあり、集計が大変そうだったので、

自動で勝ち負け判定してくれるスプレッドシートを作りました。

入力フォームに名前, 出す手を4つそれぞれ入力しておくと、

ある1人から見た勝負の結果を登録した人分、マトリクスで一覧表示します。

たとえば登録時、Aさん, Bさん, Cさんがいたとします。

  • Aさんから見た Bさんとの勝負結果, Cさんとの勝負結果
  • Bさんから見た Aさんとの勝負結果, Cさんとの勝負結果
  • Cさんから見た Aさんとの勝負結果, Bさんとの勝負結果

これらを一覧として表示し、どういう状況なのかを一目でわかるようにしました。

 

仕組みはGoogleAppScriptというjavascriptを利用したスプレッドシートで利用できる

マクロを使って実現しています。

私自身は初めて利用したのですが、javascriptはかじる程度に経験があって、

ひーひーしながら書いていました(´Д`;A)

リストの操作などに地味に時間がかかり。。

 

総当たりで結果を表示していますが、ほんとは半分の結果で十分だったりもします。

これはこれで課題ですね。。

 

興味があったらスクリプトも見てみてください(*´Д`)

添付できなかったので、こちらにぺたぺたしておきます。

見よう見まねで作ったので、結構汚いですが;

var clone = (function(){
    return function (obj) {
      Clone.prototype = obj;
      return new Clone();
    };
    function Clone(){}
}());

var flip = (function(){
    return function (trans) {
        var key, tmp = {};

        for (key in trans) {
            if (trans.hasOwnProperty(key)) {
                tmp[trans[key]] = key;
            }
        }

        return tmp;
    };
    function Flip(){}
}());

function summary () {
    var jankenApp = {
        types: ['ぐー', 'ちょき', 'ぱー'],
        typesFlip: null,
        users: [],
        user: {
            name : '名無し',
            types: [0, 0, 0, 0]
        },
        compare: function (x, y) {
            var cal = x - y;

            // あいこ
            if (cal === 0) {
                return 0;
            }

            // 以下を返却
            // 勝ち: 1
            // 負け: -1
            return cal < 0 || cal > 2 ? 1 : -1;
        },
        newUser: function () {
            return clone(this.user);
        },
        addUser: function (name, types) {
            var user = this.newUser();

            user.name    = name;
            user.types = this.convert(types);

            this.users.push(user);
        },
        convert: function (inputs) {
            var lists = [];

            for (var i = 0, len = inputs.length; i < len; i++) {
                lists.push(this.typesFlip[inputs[i]]);
            }

            return lists;
        },
        assert: function () {
            var results = [];

            var first = this.users[0];
            var firstTypeLen = first.types.length;

            // 初期化
            for (var y = 0, ulen = this.users.length; y < ulen; y++) {
                results.push([]);
                for (var x = 0; x < ulen; x++) {
                    results[y].push([]);
                }
            }

            // 集計
            for (var y = 0, ulen = this.users.length; y < ulen; y++) {
                for (var x = 0; x < ulen; x++) {                     if (x === y || typeof results[x][y].length > 0) {
                        continue;
                    }

                    var result = {
                        from: this.users[y].name,
                        to: this.users[x].name,
                        result: []
                    };

                    for (var i = 0; i < firstTypeLen; i++) {
                        result.result[i] = this.compare(this.users[y].types[i], this.users[x].types[i]);
                    }

                    results[y][x] = result;
                }
            }

            return results;
        }
    }

    jankenApp.typesFlip = flip(jankenApp.types);

    var spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
    var inputSheet = spreadSheet.getSheetByName('入力フォーム');
    var namedRanges = inputSheet.getNamedRanges();
    var inputs;

    // 名前付き範囲が集計元データである範囲を取得
    for (var i in namedRanges) {
        if (namedRanges[i].getName() === '集計元データ') {
            inputs = namedRanges[i].getRange().getValues();
            break;
        }
    }

    // ユーザ入力情報の整形
    var users = [];

    for (var i = 1, ilen = inputs.length; i < ilen; i++) {
        var row = inputs[i];

        if (row[1] === '') {
            break;
        }

        var user = {
            name: row[1],
            types: [row[2], row[3], row[4], row[5]]
        };

        users.push(user);
    }

    Logger.log(users);

    var len = users.length;

    // ユーザ入力情報の追加
    for (var i = 0; i < len; i++) {
        jankenApp.addUser(users[i].name, users[i].types);
    }

    // 結果の集計
    var results = jankenApp.assert();

    // レポートの表示
    var resultSheet = spreadSheet.getSheetByName('結果');
    var startCol = 3;
    var startRow = 6;
    var tlen = users[0].types.length;

    // 見出しの作成
    var resultXRange = resultSheet.getRange(startRow - 2, startCol, 2, len * tlen);
    var resultYRange = resultSheet.getRange(startRow, startCol - 1, len, 1);
    var headerX = [[], []];
    var headerY = [];

    for (var i = 0, c = len * tlen; i < c; i++) {         headerX[0][i] = '';         headerX[1][i] = '';         if (i >= len) {
            continue;
        }

        headerY[i]    = [];
        headerY[i][0] = '';
    }

    for (var i in users) {
        i = parseInt(i);
        var n = i * parseInt(tlen);
        
        headerX[0][n] = users[i].name;
        headerY[i][0] = users[i].name;

        for (var j in users[i].types) {
            var c = n + parseInt(j);

            headerX[1][c] = users[i].types[j];
        }
    }

    resultXRange.setValues(headerX);
    resultYRange.setValues(headerY);

    // 結果表示
    var resultRange = resultSheet.getRange(startRow, startCol, len, len * tlen);
    var visibles = [];

    for (var y = 0; y < len; y++) {
        visibles[y] = [];
        
        for (var x = 0, c = len * tlen; x < c; x++) {
            visibles[y][x] = '';
        }
    }

    for (var y = 0; y < len; y++) {
        var row =  y;
    
        for (var x = 0; x < len; x++) {
            var col = x * tlen;
            var result = results[y][x];
    
            if (result.length === 0) {
                continue;
            }
    
            for (var i in result.result) {
                if (result.result[i] === 1) {
                    visibles[row][col] = '勝ち';
                } else if (result.result[i] === -1) {
                    visibles[row][col] = '負け';
                } else if (result.result[i] === 0) {
                    visibles[row][col] = '引き分け';
                }
    
                col++;
            }
        }
    }

    resultRange.setValues(visibles);
}

【homuraneko日記】今日の成果

こんばんわhomuranekoです。(●ↀωↀ●)ノ

本日、旅行から帰宅して早速INしました。
レア2倍ですからね!

今日の成果↓
・真・鋼鉄のパレルメイル ×1
・真・酷寒のインペリアルメイル ×1
・変質したコア ×1
・ゲシュタルトの破片 ×1

「真・酷寒のインペリアルメイル」はシオカンのバナナからドロップしたのですが
もしかしてSW!?と一瞬期待!→ 肩透かしでした(´・ω・`)

2次覚醒品に関しては、
変質したコア×13、ゲシュタルト×8となったので
変質したコア×2とゲシュタルト×2の交換を募集したところ、
即連絡が来て無事交換することができました。
これで変質したコア、ゲシュタルトの破片ともに10個づつ揃いました!

その後、真・鋼鉄のパレルメイルを分解したら
ゲシュタルトの破片×1、魔粉×2となったため、
ゲシュタルト1つあまってしまいましたけどねw

ゲシュタルトより変質したコアの方が売れやすいのですよね。。
先にやればよかった。(_ _。)

シオカン開通

ハツユキソウです。

今日はシオカン開通クエストをしたのですが

  • フォーレンスター島2
    • 避けきれなくて死亡
      → ヘルプ
  • 広間前のおじさん討伐
    • あたらなくて死亡
      → 再振り、燃やしてなんとか討伐
  • おでん
    • 結界石破壊タイムオーバー
      → 装備強化, アビリティ追加, 暗黒, ドーピング祭り

こんな感じで当たっては砕けて、みんなに手伝っていただき、

なんとか開通できました・・・!

ほんとにほんとにありがとうございました!

再振りはこんな感じで、真カーディナルに合わせてaxを振り分けました。

status_tichiel_251

狩りはまだ安定しないみたいです。

監獄に篭ろうと思っているのですが、件がクリ4倍らしく、

絶対領域が消えた時に敵がいっぱい残っていると、袋叩きになってぽんと

逝ってしまいます(´・ω・`)

 

ともあれ、ペットのスキルでデスペナはないので、

死に戻りで休憩しつつ、のんびり狩りしたいと思いますー

 

最後にペットのアコさん。染色変えてみました。

pet_aco