var customDoLog = function() {
};
var customApplySelectedUpgrade = function(c, a, callback) {
lock_name = "upgrade-" + c.id;
userContext.lastFinish = null;
var b;
if (0 < c.gold && null == a)
doGoldUnlock(c.id, function() {
applySelectedUpgrade(c, true, callback);
});
else if (hasMoney(c.silver, function() {
applySelectedUpgrade(c, a, c.silver);
}) && userLock(lock_name)) {
var d = buildingUpgradeResourceCheck(c.building_id, c.id);
if (isWeb()) {
if (null != d.markup && "" != d.markup) {
doAlert("Resources Required", "You need additional resources to construct that upgrade:<p/>" + d.markup);
return false;
}
} else if (null !=
d.strMissingComponentText) {
if (isAndroid()) {
iosSignal("building", "upgrade_fail", d);
return false;
}
return d;
}
b = d.item;
playSound("build");
var g = buildingById(c.building_id);
itemFromSymbol(g.symbol);
d = extractItemBySymbol(userContext.playerData.inventory, g.symbol).upgrade_level - 1;
0 > d && (d = 0);
userContext.buildIndex++;
g.build_progress = 0;
g.producing_archetype_id = b.id;
$.ajax({
url: "/play/apply_upgrade/" + c.id,
dataType: "JSON",
success: function(result) {
freeLock(lock_name);
if (result.resource_list)
for (var i = 0; i < result.resource_list.length; i++) {
var m =
extractItemBySymbol(playerInventory, result.resource_list[i]);
m && (m.quantity -= parseInt(result.resource_quantities[i]));
}
updateSilver(result.money);
updateBaseTime(result.base_time);
userContext.playerData.stat.onboarding = result.onboarding;
userContext.playerData.stat.building_upgrades_added = result.building_upgrades_added;
g.build_remaining = result.build_remaining;
g.original_build_seconds = result.original_build_seconds;
displayBuildingCooldown(g);
isWeb() && buildingUpgradePanel(g.symbol);
result = renderBuildingConstruction(g);
$("#bc_" + g.id).html(result);
uiEvent("add_" +
userContext.activeBuildingPanel, userContext.PlayerData);
selectedUpgrade = extractItemBySymbol(playerInventory, b.symbol);
q_upgrade = 1;
selectedUpgrade && (q_upgrade = selectedUpgrade.quantity + 1);
$("#addbtn_container").html(addButtonUpgrade(b, false, q_upgrade));
isWeb() ? selectUpgrade(userContext.activeUpgrade) : iosSignal("building", "cooldown", mobileCooldownData({ mode: "building", symbol: g.symbol, flag: "production_started" }));
questListings();
analytics.track("Building Apply-Upgrade", {
building: userContext.activeBuildingPanel,
upgrade: itemData[itemById[c.id]].symbol,
cost: itemData[itemById[c.id]].cost
});
analytics.wizardtrack("Building Apply-Upgrade", { building: userContext.activeBuildingPanel, upgrade: itemData[itemById[c.id]].symbol, cost: itemData[itemById[c.id]].cost }); // EXTENDER :: Modification
if (typeof (callback) != "undefined" && typeof (callback) == "function") {
console.log("EXTENDER :: Calling callback: ");
console.log(callback);
callback();
}
}
});
}
return false;
}
var finishAll = function() {
console.log("EXTENDER :: Checking buildings...");
for (var i = 0; i < userContext.buildingsData.length; i++) {
var b = userContext.buildingsData[i];
if (buildingFinished(b)) {
console.log("EXTENDER :: Attempt to finish production on " + b.symbol);
doFinishProduction(b.item_id, finishAll);
return;
}
}
alert('Done');
console.log("EXTENDER :: All buildings are now finished.");
}
var customClaimDaily = function() {
showSpinner();
$.ajax({
url: "/play/advice_claim_daily",
dataType: "JSON",
success: function(c) {
hideSpinner();
// EXTENDER :: Modification
// bugfix: undefined silver and gold
if (c.status && c.status == "OK") {
return;
}
$("#claimed_holder").html("<h5>Claimed</h5>");
updateSilver(c.total_silver);
updateGold(c.total_gold);
$(".claimrewardchest").hide();
$("#daily_reward_statview").html(itemStatViewFromSymbol(c.item, { produce: "Continue", produce_callback: "welcomeClaimed" }));
$("#dailynewsbtn").removeClass("btnglow");
var a = buildingBySymbol("keep");
userContext.playerData.stat.daily_streak_claimed = userContext.playerData.stat.daily_streak;
a && $("#bc_" + a.id).html(renderBuildingOwned(a));
isWeb() || iosSignal("daily_reward_claimed", null, c.item);
// EXTENDER :: Modification
$(".welcomemodal").hide();
}
});
return false;
}
var customDoCollect = function(c) {
lock_name = "collect-" + c;
if (userLock(lock_name)) {
var a = buildingByItemId(c);
0 < predictCollect(a) && (playSound("coins"), isWeb() && animatedCoins.init($("#collectbtn"), $("#silver"), [-10, -40], [-72, -44]));
uiEvent("collect_" + buildingSymbolFromItemId(c), userContext.PlayerData);
the_url = "/play/collect_building/" + c + "?client_seqnum=" + userContext.player_data_seqnum;
isWeb() || showSpinner();
$.ajax({
url: the_url,
dataType: "JSON",
success: function(b) {
freeLock(lock_name);
doLog("doCollect: building_id=" +
c + " data.money=" + b.money);
updateSilver(b.money);
updateBaseTime(b.base_time);
a.last_collected_at = b.last_collected_at;
userContext.playerData.stat.buildings_collected = b.buildings_collected;
userContext.playerData.stat.onboarding = b.onboarding;
isWeb() || (iosSignal("building_collected"), hideSpinner());
isWeb() && $("#collect_" + a.symbol).html(renderUpgradeCollect(a));
buildingUpgradePanel(a.symbol);
b = renderBuildingOwned(a);
isWeb() && $("#bc_" + a.id).html(b);
updateAllStatus();
questListings();
// EXTENDER :: Modification
closeModalLarge('modal_dialogs_top');
}
});
}
};
var buildTimerUpdate = function(c, a, b) {
$("#timer-" + c).html(renderBuildTime(a));
$("#timer-panel-" + c).html(renderBuildTime(a));
percent = 100 - 100 * (a / b);
$("#progress-" + c).html('<span style="width:' + percent + '%;"></span>');
var d = buildingById(c);
d.build_remaining = a;
markup = renderBuildPanelAction(d);
$("#speed_button_" + c).show();
$("#build_panel_action_" + c).html(markup);
$("#production_timer_" + c).html(renderBuildTime(d.build_remaining, true));
$("#production_timer_upper_" +
c).html(renderBuildTime(d.build_remaining));
$("#production_progress_" + c).css({ width: percent + "%" });
$("#duration_long_" + c).html(durationLong(buildTimerDescription(d), a, b));
a--;
userContext.doBuildId == c && (300 >= a ?
($("#speed_up_skip_block").hide(),
$("#speed_up_skip_use").show()) :
($("#speed_up_skip_use").hide(),
$("#speed_up_skip_block").show()),
$(".speed_building_" + c).html() != renderSpeedUpButton(c) && $(".speed_building_" + c).html(renderSpeedUpButton(c)));
d.cooldown = a;
d.original_cooldown_seconds = b;
displayBuildingCooldown(d);
0 < a || (closeSpeedUp(), finalizeBuildingConstruction(d), clearBuildingTimer(d.symbol));
// EXTENDER :: Modification REVISE
if (a == 300 - 1) {
doInstantSpeedUp(c);
doFinishProduction(d.item_id);
setTimeout(function() {
var el = getElement(d.symbol);
if (el) {
executeElement(el);
}
}, extender_queueDelay * 1000);
}
};
var customDoProduction = function(c, a, b, d, g, callback) {
userContext.lastFinish = null;
null == b && (b = 1);
doLog("doProduction: symbol=" + c + " producer=" + a + " quantity=" + b);
var p = null, f = "", m = null, q = "", k = null, D = null;
uiEvent("start_production");
null == userContext.playerData.stat.num_shop_items_started && (userContext.playerData.stat.num_shop_items_started = 0);
userContext.playerData.stat.num_shop_items_started += 1;
for (var u = 0; u < userContext.recipeData.length; u++)
if (console.log("DEBUG: n=" + userContext.recipeData[u].category + ", symbol: " +
userContext.recipeData[u].output), g == userContext.recipeData[u].symbol || null == g && (userContext.recipeData[u].output == c || userContext.recipeData[u].output_loot == c) && userContext.recipeData[u].category == a) {
p = userContext.recipeData[u];
p.output == c ? (k = itemFromSymbol(c), q = k.full_name) : (p.output_loot == c && (m = c), q = p.name);
D = u;
components = userContext.recipeData[u].input.split(",");
quantity_components = userContext.recipeData[u].input_quantity.split(",");
var s = itemFromSymbol(userContext.recipeData[u].category);
if (true ==
userContext.recipeData[u].unlocked) {
if (1 < userContext.recipeData[u].input.length)
for (s = 0; s < components.length; s++) {
var y = itemFromSymbol(components[s]), w = false;
0 == s && true == userContext.recipeData[u].evolution && (w = true);
w = sumInventoryQuantity(y.symbol, w);
if (parseInt(quantity_components[s]) * b > w) {
"" == f && (f = "You need more of the following:<p/>");
f += "<div>";
if (4 <= userContext.playerData.character.level)
switch (components[s]) {
case "stone":
case "iron":
case "fur":
case "ore":
case "horse":
case "riverways_fish_consumable":
case "smallfolk":
case "wood":
case "cloth":
case "grains":
w =
parseInt(quantity_components[s]) * b - w;
if (cost_item = itemFromSymbol("pennyroyal")) var z = cost_item.price_perk_points * w;
f += '<div id="basic_resource_' + components[s] + '">';
f += itemMiniView(y, { extra_styles: "left:-70px", quantity_override: w });
f += '<span style="position: relative; left: 250px; top: -88px" class="btnwrap btnmed btnprice" onclick="getBasicResource(\'' + components[s] + "'," + w + ',true);"><span class="btnedge"><a class="btngold">Get Now</a><em>for</em><strong>' + z + "</strong></span></span>";
f += "</div>";
break;
default:
f += itemMiniView(y);
}
f += "</div>";
f += "<p>" + y.howto + "</p>";
}
}
} else f = "You need <em>" + s.full_name + "</em> to produce that.";
break;
}
if ("" != f) doAlert("Requirements: " + q, f), analytics.track("Production Blocked-Resources", { item_symbol: c }), analytics.wizardtrack("Production Blocked-Resources", { item_symbol: c });
else if (p && hasMoney(p.craft_cost * b, function() { doProduction(c, a, b, d, g); })) {
f = JSON.parse(JSON.stringify(userContext.playerData.inventory));
u = [];
p.output == c ? (k = itemFromSymbol(c), q = k.full_name) : (p.output_loot ==
c && (m = c), q = p.name);
components = p.input.split(",");
quantity_components = p.input_quantity.split(",");
s = itemFromSymbol(p.category);
if (true == p.unlocked && (userContext.intCurrentRecipeIndex = D, 1 < p.input.length)) for (s = 0; s < components.length; s++) y = itemFromSymbol(components[s]), w = false, 0 == s && true == p.evolution && (w = true), depleteItems(y.symbol, parseInt(quantity_components[s]) * b, null, u, w);
q = "";
D = null;
for (s = 0; s < u.length; s++)
if (y = itemFromSymbol(u[s].symbol), u[s].full_name != y.full_name)
D = JSON.parse(JSON.stringify(u[s])),
q += "[" + u[s].full_name + "]";
else if (itemHasSeals(u[s]) && (!u[s].preserve_attributes || false == u[s].preserve_attributes)) D = JSON.parse(JSON.stringify(u[s])), y = generateSealNameList(u[s]), q += "[" + u[s].full_name + " : " + y + "]";
// EXTENDER :: Modification
if (true != d && null != D && !extender_confirmSuperiorMaterials) {
return playerInventory = JSON.parse(JSON.stringify(f)), userContext.playerData.inventory = playerInventory, dialogAlert({
style: "confirm",
margin_top: 100,
items: [D],
button2: "Not Now",
button2_action: function() { closeAlert(); },
button1: "Confirm",
button1_action: function() {
closeAlert();
return doProduction(c, a, b, true, g);
},
heading: "Confirm Superior Materials",
text: "Producing this item now will consume superior versions of your materials: " + q + "<p/>Are you sure you want to contribute superior versions of materials to produce this item?"
}), false;
}
var I = buildingBySymbol(userContext.activeBuildingPanel);
I.build_remaining = p.craft_duration * b;
I.original_build_seconds = p.craft_duration * b;
I.build_progress = 0;
"" != p.output && (I.producing_archetype_id = itemFromSymbol(p.output).id);
I.recipe_symbol = p.symbol;
I.action_sub_id = b;
f = renderBuildingConstruction(I);
isWeb() && $("#bc_" + I.id).html(f);
displayBuildingCooldown(I);
"Upgrade" == itemFromId(I.producing_archetype_id).slot ? buildingUpgradePanel(userContext.activeBuildingPanel, true, false) : (buildingUpgradePanel(userContext.activeBuildingPanel, true, false, true), buildingTabProd(), isWeb() && $("#collect_" + I.symbol).html(renderUpgradeCollect(I)));
p = "/play/set_production";
p = (m ? p + ("?loot_symbol=" + m + "&producer_symbol=" + a) : k ? p + ("/" + c + "?producer_symbol=" + a) : p + ("?producer_symbol=" + a)) + ("&quantity=" + b);
g && (p += "&recipe_symbol=" + g);
$.ajax({
url: p,
dataType: "JSON",
success: function(a) {
userContext.prodProgressShow = null;
userContext.playerData.stat.num_shop_items_started = a.num_shop_items_started;
updateAllStatus();
uiEvent("do_production");
isWeb() || iosSignal("building", "cooldown", mobileCooldownData({ mode: "building", symbol: I.symbol, flag: "production_started" }));
// EXTENDER :: Modification
if (typeof (callback) != "undefined" && typeof (callback) == "function") {
console.log("EXTENDER :: Calling callback: ");
console.log(callback);
callback();
}
}
});
}
};
var customDoFinishProduction = function doFinishProduction(c, callback) {
var a = buildingByItemId(c), b = itemFromId(a.producing_archetype_id);
userContext.lastFinish = a.symbol;
doLog("doFinishProduction: building_id=" + c + " symbol=" + a.symbol + " producing=" + b.symbol);
"Upgrade" !== b.slot && (analytics.track("Production Finish", { building_symbol: a.symbol, item_symbol: b.symbol, item_category: b.slot }), analytics.wizardtrack("Production Finish", { building_symbol: a.symbol, item_symbol: b.symbol, item_category: b.slot }));
var d = "finish-" + c;
userLock(d) && (playSound("build"),
isWeb() && $("#collect_" + a.symbol).html(""), $.ajax({
url: "/play/finish_production/" + c,
dataType: "JSON",
success: function(a) {
console.log(a);
doLog("doFinishProduction: succeess ");
freeLock(d);
var b = buildingByItemId(c, 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;
b.producing_archetype_id = null;
b.modifier = null;
b.recipe_symbol = null;
var f = extractItemBySymbol(playerInventory, b.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: b.symbol, status: "idle" }
: { symbol: b.symbol, status: "idle", upgrade: q },
iosSignal("finish_production", "update", f),
isAndroid()
&& mobileCooldownDataSignal([{ mode: "building", symbol: b.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(true, function(a) {
userContext.playerData.quests =
a.quests;
reRenderQuestActionItems();
});
"Upgrade" == theNewItem.slot && buildingUpgradePanel(b.symbol);
updatePlayerInfo(userContext.playerData);
updateAllStatus();
}
// EXTENDER :: Modification
if (typeof (callback) != "undefined" && typeof (callback) == "function") {
console.log("EXTENDER :: Calling callback: ");
console.log(callback);
callback();
}
}
}));
};
var customSpeedBuild = function speedBuild(c, a, callback) {
$("#modal_dialogs_top2").hide();
doLog("speedBuild: speed_item=" + c + " item_id=" + a);
$.ajax({
url: "/play/build_now/" + a + "?complete=" + c,
dataType: "JSON",
success: function(b) {
console.log("speedBuild: returned, data.building.id=" + b.building.id);
userContext.playerData.user.money = b.user.money;
userContext.playerData.stat.onboarding = b.stat.onboarding;
userContext.playerData.chapter = b.chapter;
var d = buildingById(a, b.building);
doLog("speedBuild: speed_item:");
doLog(b.speed_item);
b.speed_item && insertInventoryFromItem(userContext.playerData.inventory,
b.speed_item);
insertInventoryFromItem(userContext.playerData.inventory, b.produced_item);
logLastItem("speedBuild:A");
userContext.buildingsData && (userContext.playerData.buildings = userContext.buildingsData);
playerInventory && (userContext.playerData.inventory = playerInventory);
userContext.chapterData = b.chapter;
d && (analytics.track("SpeedUp-Building", { building: d.symbol, speed_item: c }), analytics.wizardtrack("SpeedUp-Building", { building: d.symbol, speed_item: c }));
userContext.buildIndex++;
logLastItem("speedBuild:B");
finalizeBuildingConstruction(d);
isItemBuildingUpgrade(d) || null == d.producing_archetype_id && null == d.recipe_symbol ? (renderBuildingInventory(userContext.playerData, buildingUpgradePanel, userContext.activeBuildingPanel, true), isWeb() || iosSignal("building", "cooldown", mobileCooldownData({ mode: "building", symbol: d.symbol, flag: "speed_up" }))) : (userContext.craftingItemFinished = true, renderBuildingInventory(userContext.playerData, buildingUpgradePanelProd, userContext.activeBuildingPanel, true), $("#collect_" + d.symbol).html(renderUpgradeCollect(d)),
$("#build_panel_action_" + d.id).html(renderBuildPanelAction(d)), $("#speed_button_" + d.id).hide());
renderBuildingsOnScreen(userContext.playerData);
d && uiEvent("building_panel_" + d.symbol);
// EXTENDER :: Modification
if (typeof (callback) != "undefined" && typeof (callback) == "function") {
console.log("EXTENDER :: Calling callback: ");
console.log(callback);
callback();
}
}
});
};
var customDoInstantSpeedUp = 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);
};
var customAnimatedCoinsInit = 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 || null === b || b.length == 0) {
return;
} else if (null === a || null === a) {
return;
} else {
if (null === e || null === e)
e = [
0,
0
];
if (null === g || null === 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));
}
}
};