Pilgred Progress Simulator

Simulates Pilgred progress advancement in the game Mush.

by Sanjito Kurniawan

HTML

<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.2/css/bootstrap.min.css">
<div class='container'>
    <div class='row'>
        <div class='col-xs-6 col-xs-offset-3'>
            <hr/>
            <h4>Pilgred Progress Simulator</h4>
            <hr/>

            <div class='ahem'>
                <span class='current'>0</span><span class='percent'>%</span>
                <br/>+<span class='last'>0</span>
            </div>

            <hr/>

            <div class='center'>
                
            <div class="btn-group half">
            <button type="button" class="btn btn-sm btn-primary advance">Advance!</button>
            <button type="button" class="btn btn-sm btn-warning reset">Reset!</button>
            </div>

            <br/>

            <div class="btn-group one-third efficiency">
            <button type="button" class="btn btn-sm btn-danger low">low</button>
            <button type="button" class="btn btn-sm btn-info rand active">random</button>
            <button type="button" class="btn btn-sm btn-success high">high</button>
            </div>
                
            <br/>
                
            <div class="btn-group half skills">
            <button type="button" class="btn btn-sm btn-default technician">Technician</button>
            <button type="button" class="btn btn-sm btn-default physicist">Physicist</button>
            </div>
 
            </div>
                

            <hr/>
                
            Saturation/Streak Level: <span class='saturation'>0</span>
            <br/>Resetter AP used: <span class='ap-resetter'>0</span>
            <br/>Tech+Physician AP used: <span class='ap-physandtech'>0</span>
            <br/>Tech/Physician AP used: <span class='ap-physortech'>0</span>
            <br/>Random Person AP used: <span class='ap-uselessguy'>0</span>

        </div>
    </div>
</div>

SCSS

.current {
    font-size: 52px;
    line-height: 36px;
    cursor: pointer;
}
.percent {
    font-size: 18px;
    line-height: 36px;
}


.fin {
    color: #00cc00;
}
.ahem {
    width: 100%;
    text-align: center;
}

.center {
    text-align: center;
}

.half {
    width: 100%;
    > button {
        width: 50%;
    }
}

.one-third {
    width: auto;
    > button {
        text-transform: capitalize;
    }
}

.container {
  width: 550px;
}

JavaScript

// Preset Values
var eff = {};
eff.and = {};
eff.or = {};
eff.and.high = [13, 10, 7, 4, 1];
eff.and.low  = [9,  7,  5, 3, 1];
eff.or.high  = [7, 4, 1];
eff.or.low   = [5, 3, 1];

// App Variables
var efficiency = 'random';
var lastskills = {};
var technician = physicist = lastskills.technician = lastskills.physicist = reset = false;
var cur = '';
var i = saturation = progress = last = 0;
var ap = {};
ap.resetter = ap.physandtech = ap.physortech = ap.uselessguy = 0;
var debug = true;

// Utility Functions
function log(msg, content) {
    if ( debug ) {
        i++;
        msg = "Debug Log #"+i+" | "+msg;
        if ( typeof content != "undefined" ) {
            msg = msg + ": " + content;
        }
        console.log(msg);
    }
}

function disable(elem) {
    jQuery(elem).attr("disabled", "disabled");
}

function enable(elem) {
    jQuery(elem).removeAttr("disabled");
}

// Main Things

function checkSaturation() {
    if ( lastskills.physicist && lastskills.technician ) {
        if ( saturation >= 5 ) {
            disable(".advance");
        } else {
            enable(".advance");
        }
    } else if ( lastskills.physicist || lastskills.technician ) {
        if ( saturation >= 3 ) {
            disable(".advance");
        } else {
            enable(".advance");
        }
    } else {
        if ( saturation >= 1 ) {
            disable(".advance");
        } else {
            enable(".advance");
        }
    }
}

// Update Numbers
function update() {
    if( progress >= 100 ) {
        jQuery(".current").addClass("fin");
        progress = 100;
    }
    jQuery(".current").html(progress);
    jQuery(".last").html(last);
    jQuery(".saturation").html(saturation);
    jQuery(".ap-resetter").html(ap.resetter);
    jQuery(".ap-physandtech").html(ap.physandtech);
    jQuery(".ap-physortech").html(ap.physortech);
    jQuery(".ap-uselessguy").html(ap.uselessguy);
}

// Reset!
jQuery(".current").click( function() {
   ...