下限スキルマシミュレータ

合成でのコスト下限とスキルマの必要枚数を体感しよう!

HTML

<h2>アイギス 下限スキルマシミュレータ</h2>
<h3><a href='http://aigis.dougax.net/%E8%AC%8E%E3%81%AE%E6%95%B0%E5%AD%97' target='_blank'>謎の数字の解説</a></h3>
<div id='step0' class='step'>
    
<h4>育成するユニットを選択してください。</h4>

    <div>
        <img class='unit' data-skill='5' data-cost='3' src='http://i.gyazo.com/288a1bd43dd5f46ec44f5b86fa4e5fb4.png' title='一般ユニット代表 キャリーさん' />
        <img class='unit' data-skill='10' data-cost='5' src='http://image01.seesaawiki.jp/a/s/aigis/79de9e3487b7d758.png' title='牧場ユニット代表 シャルロット' />
        <img class='unit' data-skill='16' data-cost='5' src='http://i.gyazo.com/b6dfbdfe9c143e407d00c5b09628f167.png' title='特殊ユニット オデット' />
        <div id='unit_info'></div>
    </div>
</div>
<div id='step1' class='step' style='display:none'>
    
<h4>ユニットのスキル・コストの現在値を選択してください。</h4>
スキル:
    <div id='skill'></div>
    <hr />コスト:
    <div id='cost'></div>
</div>
<div id='step2' class='step' style='display:none'>
     <h4>合成方法を選択してください。</h4>

    <div></div>
</div>
<div class='step'>
    <h4 id='log_title'>ログ</h4>
    <div id='log'></div>
</div>

CSS

.unit {
    border : solid 2px white;
}
.unit.select {
    border : solid 2px #09f;
}
.unit:hover {
    border : solid 2px #09f;
}
div.step {
    border : 1px solid black;
    border-radius: 10px;
}
div.step div {
    padding : 5px;
}
h4 {
    color : #ffffff;
    font-weight : bold;
    background-image: -webkit-gradient(linear, left top, right top, color-stop(0, #0015D1), color-stop(1, #EDCCD7));
    background-image: -o-linear-gradient(right, #0015D1 0%, #EDCCD7 100%);
    background-image: -moz-linear-gradient(right, #0015D1 0%, #EDCCD7 100%);
    background-image: -webkit-linear-gradient(right, #0015D1 0%, #EDCCD7 100%);
    background-image: -ms-linear-gradient(right, #0015D1 0%, #EDCCD7 100%);
    background-image: linear-gradient(to right, #0015D1 0%, #EDCCD7 100%);
    -webkit-border-top-left-radius : 10px;
    -webkit-border-top-right-radius : 10px;
    -moz-border-radius-topleft : 10px;
    -moz-border-radius-topright : 10px;
    padding : 10px;
    margin : 0px 0px 10px;
}
#step2 div > * {
    margin : auto;
    vertical-align : middle;
}
#step2 div > button {
    margin-right : 10px;
}
button {
    width : 100px;
}
.icon {
    width : 50px;
    height : 50px;
}
p {
    line-height:3px;
}

JavaScript

var step = 0;
var options = {
    unit: null,
    max_skill : 0,
    max_cost : 0,
    skill: 0,
    cost: 0,
    card : 0
};
var Skill = function(max,value,niji){
    var nazo = 100;
    if (value == 1) return 1;
    if (value == max) return 0;
    if (value == max - 1){
        nazo = niji ? 25 : 5;
    } else if (value < Math.ceil(max/2)){
        nazo = niji ? 75 : 50;
    } else {
        nazo = niji ? 50 : 25;
    }
    return (Math.floor(Math.random()*100) < nazo) ? 1 : 0;
}
var Cost = function(max,value){
    var nazo = 100;
    if (value == 0) return 1;
    if (value == max) return 0;
    if (value == 1){
        nazo = 50;
    } else {
        nazo = 25;
    }
    return (Math.floor(Math.random()*100) <= nazo) ? 1 : 0;
}
var UpDown = function(skill,cost){
    if (skill){
        Log("<span style='color:rgb(10, 229, 10)'>スキルレベルが" + skill + "上昇</span>");
    }
    if (cost){
        Log("<span style='color:blue'>出撃コストが" + cost + "減少</span>");
        if (options.cost == options.max_cost){
            Log("<span style='color:#ff4500'>出撃コストが最低値になりました。</span>");
        }
    }
    LogTitle("使用素材 " + options.card + "枚 スキル(" + options.skill + "/" + options.max_skill + ") コスト(" + (options.cost ? ("-" + options.cost) : "0") + "/-" + options.max_cost + ")");
}
var SameUnit = function(n){
    options.card += n;
    var skill = 0;
    var cost = 0;
    var fon = "";
    for (var i=0;i<n;++i){
        var s = Skill(options.max_skill,options.skill,false);
        var c = Cost(options.max_cost,options.cost);
        options.skill += s;
        options.cost += c;
        skill += s;
        cost += c;
        fon += "フォン…";
    }
    Log(fon);
    UpDown(skill,cost);
}
var Rainbow = function(n){
    options.card += n;
    var skill = 0;
    var fon = "";
    for (var i=0;i<n;++i){
        var s = Skill(options.max_skill,options.skill,true);
        options.skill += s;
        skill += s;
        fon += "フォン…";
    }
    Log(fon);
    UpDown(skill,0);
}
var Log =...