doLog = function() {
};
log("Logging killed.", "initialize");
animatedCoins.init = function(b, a, e, g) {
if (isWeb()) {
var c,
d,
f,
h,
k = { images: ["/images/animations/coin_flip.png"], animations: { all: [0, 32] }, frames: { regX: 0, height: 60, count: 33, regY: 0, width: 61 } },
m = {
images: ["/images/animations/coin_sparkle.png"],
animations: { all: { frames: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] } },
frames: [
[0, 0, 128, 128, 0, 0, 0], [128, 0, 128, 128, 0, 0, 0], [256, 0, 128, 128, 0, 0, 0], [384, 0, 128, 128, 0, 0, 0], [512, 0, 128, 128, 0, 0, 0], [640, 0, 128, 128, 0, 0, 0], [768, 0, 128, 128, 0, 0, 0], [896, 0, 128, 128, 0, 0, 0], [0, 128, 128, 128, 0, 0, 0],
[128, 128, 128, 128, 0, 0, 0], [256, 128, 128, 128, 0, 0, 0], [384, 128, 128, 128, 0, 0, 0], [512, 128, 128, 128, 0, 0, 0], [640, 128, 128, 128, 0, 0, 0], [768, 128, 128, 128, 0, 0, 0]
]
},
l,
n,
p = false;
//EXTENDER :: Modification, seriously?
// bugfix: b.offset is undefined (offset from button to silver visually)
if (null === b || void 0 === b || b.length == 0) {
return;
} else if (null === a || void 0 === a) {
return;
} else {
if (null === e || void 0 === e)
e = [
0,
0
];
if (null === g || void 0 === g) g = [0, 0];
d = $("<canvas>").attr({ id: "animatedCoins", "class": "coinCanvasAnimation", width: "130", height: "120" }).prependTo($("body"));
c = d[0];
h = $("<canvas>").attr({ id: "animatedCoinsSparkle", "class": "coinCanvasAnimation", width: "130", height: "120" }).prependTo($("body"));
f = h[0];
c = new createjs.Stage(c);
f = new createjs.Stage(f);
null === b.offset() ? (h.remove(), d.remove(), console.warn("animatedCoins: startingElement.offset() is null. Exiting script.")) : null === a.offset() ? (h.remove(), d.remove(),
console.warn("animatedCoins: endingElement.offset() is null. Exiting script.")) : (d.offset({ left: b.offset().left + e[0], top: b.offset().top + e[1] }), h.offset({ left: b.offset().left + e[0], top: b.offset().top + e[1] }), e = new createjs.SpriteSheet(k), m = new createjs.SpriteSheet(m), l = new createjs.Sprite(e), l.x = 30, l.y = 25, n = new createjs.Sprite(m), l.on("animationend", function(c, f) {
c.visible = false;
doLog("animation end");
null === b.offset() ? (h.remove(), d.remove(), console.error("animatedCoins: startingElement.offset() is null")) :
null === a.offset() ? (h.remove(), d.remove(), console.error("animatedCoins: endingElement.offset() is null")) : (h.offset({ left: a.offset().left + g[0], top: a.offset().top + g[1] }), n.visible = true, n.gotoAndPlay("all"), l.stop(), p = true);
}), n.on("animationend", function(a, b) {
n.visible = false;
p && (n.stop(), d.fadeOut(500, function(a) { d.remove(); }), h.remove());
}), l.gotoAndPlay("all"), n.gotoAndPlay("all"), f.addChild(n), c.addChild(l), createjs.Ticker.setFPS(30), createjs.Ticker.addEventListener("tick", c), createjs.Ticker.addEventListener("tick",
f), $(d).animate({ left: a.offset().left + g[0], top: a.offset().top + g[1] }, 1E3));
}
}
};
log("Animated coins fixed.", "initialize");
doInstantSpeedUp = function doInstantSpeedUp(c, a, callback) {
var b = buildingById(c),
d = getCurrentSpeedUpType(b.producing_archetype_id, b.recipe_symbol);
// EXTENDER :: Modification
if (instantSpeedCost(b.build_remaining, d) > 0) {
console.log('EXTENDER :: The instant speed up costs money. Exiting...');
return false;
}
if (false == hasGold(instantSpeedCost(b.build_remaining, d), function() {
doInstantSpeedUp(c, true, callback);
}, a) && true != a) return false;
playSound("coins");
return speedBuild(-1, c, callback);
};
log("Instant speed up returns if gold is required.", "initialize");
doFinishProduction = function doFinishProduction(b, callback) {
var a = buildingByItemId(b), c = itemFromId(a.producing_archetype_id);
userContext.lastFinish = a.symbol;
doLog("doFinishProduction: building_id=" + b + " symbol=" + a.symbol + " producing=" + c.symbol);
"Upgrade" !== c.slot && (analytics.track("Production Finish", { building_symbol: a.symbol, item_symbol: c.symbol, item_category: c.slot }), analytics.wizardtrack("Production Finish", { building_symbol: a.symbol, item_symbol: c.symbol, item_category: c.slot }));
var d = "finish-" + b;
userLock(d) && (playSound("build"),
isWeb() && $("#collect_" + a.symbol).html(""), $.ajax({
url: "/play/finish_production/" + b,
dataType: "JSON",
success: function(a) {
//console.debug("Logging server response for doFinishProduction: ", a);
doLog("doFinishProduction: succeess ");
freeLock(d);
var c = buildingByItemId(b, a.building);
userContext.playerData.character = a.character;
userContext.playerData.user.money = a.user.money;
userContext.playerData.stat.onboarding = a.stat.onboarding;
userContext.playerData.stat.num_items_produced = a.stat.num_items_produced;
userContext.playerData.stat.produced_stone = a.stat.produced_stone;
userContext.playerData.stat.building_upgrades_finished =
a.stat.building_upgrades_finished;
c.producing_archetype_id = null;
c.modifier = null;
c.recipe_symbol = null;
var f = extractItemBySymbol(playerInventory, c.symbol);
f.effective_upgrade_level = a.building.effective_upgrade_level;
f.producing_archetype_id = null;
f.modifier = null;
f.recipe_symbol = null;
// EXTENDER :: Modification, execute current code ONLY if there's a produced item returned!
if (a.produced_item) {
if (userContext.intCurrentRecipeIndex = null,
doLog("doFinishProduction: data.produced_item.id=" + a.produced_item.id + " quantity=" + a.produced_item.quantity),
insertInventoryFromItem(playerInventory, a.produced_item),
theNewItem = extractItemById(playerInventory, a.produced_item.id), 1 == a.is_loot) {
0 < a.enhanced_loot_roll
? dialogAlert({
style: "alert",
text: "The result of your production (enhanced) is: " + a.produced_full_name,
items: [theNewItem],
heading: "You have produced...",
button1: "Okay"
}) : dialogAlert({
style: "alert",
text: "The result of your production is: " + a.produced_full_name,
items: [theNewItem],
heading: "You have produced...",
button1: "Okay"
});
} else if (0 < a.affix_chance) {
var m;
m = "" + ("You have a " + a.affix_chance_from_stats +
"% chance to produce a superior-quality item from your talents, equipment and buildings.");
a.bonus_item_name && (m += " Your " + a.bonus_item_name + " adds another +" + a.affix_chance_from_bonus + "% chance to produce a superior-quality item from your talents, equipment and buildings.");
m = a.affix_roll1 <= a.affix_chance && a.affix_roll2 <= a.affix_chance ? m + "<p/>Critical Success! You obtained a superb result!" : a.affix_roll1 > a.affix_chance && a.affix_roll2 > a.affix_chance ? m + "<p/>You obtained a normal result." : m + "<p/>Success! You obtained a good result.";
dialogAlert({ style: "alert", text: m, items: [theNewItem], heading: a.produced_full_name, button1: "Okay" });
}
userContext.newBldgOrUpgrade = true;
var q;
"Upgrade" != theNewItem.slot ?
(userContext.newProducedItem = theNewItem, isWeb()
&& $("#collect_" + f.symbol).html(renderUpgradeCollect(f)),
isWeb() && $("#build_panel_action_" + f.id).html(renderBuildPanelAction(f)),
isWeb() && $("#speed_button_" + f.id).hide())
: q = theNewItem.symbol;
isWeb() ? (renderBuildingInventory(userContext.playerData),
renderBuildingsOnScreen(userContext.playerData))
: (f = null, f = null == q
? { symbol: c.symbol, status: "idle" }
: { symbol: c.symbol, status: "idle", upgrade: q },
iosSignal("finish_production", "update", f),
isAndroid()
&& mobileCooldownDataSignal([{ mode: "building", symbol: c.symbol }]),
refreshActiveBuildingPanel(),
$("#building_tab_prod, .buildingupgradetree").fadeTo("slow", "1"));
uiEvent("do_finish_production");
uiEvent("building_panel_" + userContext.activeBuildingPanel);
a.produced_item && ("stacks_of_coins" == a.produced_item.symbol ? retrievePlayerData(!0, function (a) {
userContext.playerData.quests = a.quests;
reRenderQuestActionItems()
}) : "stacks_of_coins" == a.produced_item.symbol && (userContext.playerData.stat.ftpe_decorative_blade = 1));
"Upgrade" == theNewItem.slot && (buildingUpgradePanel(c.symbol), userContext.playerData.stat[c.symbol + "_upgrades_finished"] = void 0 == userContext.playerData.stat[c.symbol + "_upgrades_finished"] ? 1 : userContext.playerData.stat[c.symbol +
"_upgrades_finished"] + 1);
updatePlayerInfo(userContext.playerData);
updateAllStatus();
} else {
// EXTENDER :: Modification ...
console.debug("This building is still producing! Building: ", a.building);
}
if (typeof callback == "function") {
//console.debug("Calling callback... ");
callback(a); // pass response
}
}
}));
};
log("Finish production and call callback if any. Fix bug.", "initialize");