Advertisement
Guest User

Untitled

a guest
Sep 1st, 2015
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.20 KB | None | 0 0
  1. /* For All Global Variables see db.js */
  2. /* Main Game */
  3.  
  4. function Game() {
  5.  
  6. /* Declare variables to be used in Save Files */
  7.  
  8. this.netWorth = 0;
  9. this.inv = 0;
  10. this.invspace = 50;
  11. this.money = 50;
  12. this.cases = 0;
  13. this.keys = 0;
  14. this.dropFrequency = 5;
  15. this.dropHistory = "";
  16. this.sec = 0;
  17. this.rank = 1;
  18. this.totalMoneyGained = 0;
  19. this.rankCost = 50;
  20. this.freqCost = 100;
  21. this.exp = 0;
  22. this.nextLevel = 100;
  23. this.grayNum = 0;
  24. this.lightblueNum = 0;
  25. this.dodgerBlueNum = 0;
  26. this.darkmagentaNum = 0;
  27. this.fuchsiaNum = 0;
  28. this.redNum = 0;
  29. this.knifeNum = 0;
  30. this.knifeHistory = "";
  31. this.trophies = [];
  32. this.expGain = 1;
  33. this.multiplier = 1;
  34. this.lastCase = "Chroma Case";
  35. }
  36.  
  37.  
  38. var dropFrequencyDisplay = document.getElementById("dropFrequency");
  39. var usedSlotsDisplay = document.getElementById("usedSlots");
  40. var keysDisplay = document.getElementById("keys");
  41. var casesDisplay = document.getElementById("cases");
  42. var moneyDisplay = document.getElementById("money");
  43. var invspaceDisplay = document.getElementById("maxSlots");
  44. var netWorthDisplay = document.getElementById("networth");
  45. var drop_noteDisplay = document.getElementById("drop_note");
  46. var drops_listDisplay = document.getElementById("drops_list");
  47. var loadedSave = {};
  48. var caseAudio = new Audio("audio/open.wav");
  49. var knifeAudio = new Audio("audio/knifeget.mp3");
  50. var nextDrop = 20;
  51.  
  52.  
  53. /* Replica of random.ranchoice from Python */
  54. function choose(choices) {
  55. var index = Math.floor(Math.random() * choices.length);
  56. return choices[index];
  57. }
  58.  
  59. /* Generate a random integer between min, max */
  60. function randint(min, max) {
  61. return Math.floor(Math.random() * (max - min + 1)) + min;
  62. }
  63.  
  64. /* Converts Seconds to minutes */
  65. function pad(val) {
  66. return val > 9 ? val : "0" + val;
  67. }
  68.  
  69. Element.prototype.remove = function() {
  70. this.parentElement.removeChild(this);
  71. }
  72.  
  73. NodeList.prototype.remove = HTMLCollection.prototype.remove = function() {
  74. for(var i = 0, len = this.length; i < len; i++) {
  75. if(this[i] && this[i].parentElement) {
  76. this[i].parentElement.removeChild(this[i]);
  77. }
  78. }
  79. }
  80.  
  81. function removeElement(id)
  82. {
  83. return (elem=document.getElementById(id)).parentNode.removeChild(elem);
  84. }
  85.  
  86. /* Save and Load game */
  87. function saveGame() {
  88. var playerSave6 = JSON.stringify(Game);
  89. window.localStorage['playerSave6'] = playerSave6;
  90. document.getElementById("saveBtn").innerHTML = "Saved!";
  91. setTimeout(function(){document.getElementById("saveBtn").innerHTML = "Save"}, 1000)
  92.  
  93. }
  94.  
  95. function loadGame() {
  96. var playerSave6 = window.localStorage['playerSave6'];
  97. Game = JSON.parse(playerSave6);
  98. console.log(Game);
  99. document.getElementById("loadBtn").disabled = true;
  100. nextDrop = Game.sec+Game.dropFrequency;
  101. updateValues();
  102. setTimeout(function(){document.getElementById("loadBtn").disabled = false}, 2000)
  103. }
  104.  
  105. function resetSave() {
  106. var a = confirm("Are you sure you want to reset your save? There's no way to get it back!");
  107. if (a === true) {
  108. var b = confirm ("Are you really, really sure?")
  109. if (b === true) {
  110. Game = JSON.parse(cleanSave);
  111. nextDrop = Game.sec+Game.dropFrequency;
  112. saveGame();
  113. updateValues();
  114. }
  115. }
  116. else {}
  117. }
  118.  
  119. /* Update all display values */
  120. function updateValues() {
  121. Game.freqCost = Number(21 - Game.dropFrequency) * 40;
  122. dropFrequencyDisplay.innerHTML = Game.dropFrequency;
  123. usedSlotsDisplay.innerHTML = Game.inv;
  124. keysDisplay.innerHTML = "";
  125. casesDisplay.innerHTML = "";
  126. keysDisplay.innerHTML = Game.keys;
  127. casesDisplay.innerHTML = Game.cases;
  128. moneyDisplay.innerHTML = parseFloat(Game.money).toFixed(2)+" €";
  129. invspaceDisplay.innerHTML = Game.invspace;
  130. netWorthDisplay.innerHTML = parseFloat(Game.netWorth).toFixed(2)+" €";
  131. drops_listDisplay.innerHTML = Game.dropHistory;
  132. document.getElementById("rankText").innerHTML = ranks[Game.rank];
  133. document.getElementById("totalMoney").innerHTML = Game.totalMoneyGained.toFixed(2)+" €";
  134. /* document.getElementById("rankBtn").innerHTML = Game.rankCost.toFixed(2)+" €"; */
  135. document.getElementById("freqBtn").innerHTML = Game.freqCost.toFixed(2)+" €";
  136. document.getElementById("currentExp").innerHTML = Game.exp;
  137. document.getElementById("nextLevel").innerHTML = Game.nextLevel;
  138. document.getElementById("rankImage").src = "img/rank/"+Game.rank+".png";
  139. document.getElementById("totalGray").innerHTML = Game.grayNum;
  140. document.getElementById("totalLightblue").innerHTML = Game.lightblueNum;
  141. document.getElementById("totalDodgerBlue").innerHTML = Game.dodgerBlueNum;
  142. document.getElementById("totalDarkmagenta").innerHTML = Game.darkmagentaNum;
  143. document.getElementById("totalFuchsia").innerHTML = Game.fuchsiaNum;
  144. document.getElementById("totalRed").innerHTML = Game.redNum;
  145. document.getElementById("totalKnives").innerHTML = Game.knifeNum;
  146. document.getElementById("skillLevel").innerHTML = Game.expGain;
  147. if (Game.cases <= 0) {
  148. document.getElementById("chosenCase").disabled = false;
  149. }
  150. else {
  151. document.getElementById("chosenCase").disabled = true;
  152. }
  153.  
  154.  
  155.  
  156. }
  157.  
  158. /* Call when gettign a new Drop */
  159. function newDrop() {
  160. var chosen = randint(1,100)
  161. var newcol = "blue"
  162. if (chosen >= 1 && chosen <= 40) {
  163. newcol = "gray"
  164. Game.grayNum++;
  165. }
  166. else if (chosen >= 41 && chosen <= 89) {
  167. newcol = "lightblue"
  168. Game.lightblueNum++;
  169. }
  170. else if (chosen >= 90 && chosen <= 96) {
  171. newcol = "dodgerBlue"
  172. Game.dodgerBlueNum++;
  173. }
  174. else if (chosen >= 97 && chosen <= 99) {
  175. newcol = "darkmagenta"
  176. Game.darkmagentaNum++;
  177. }
  178. else {
  179. newcol = "fuchsia"
  180. Game.fuchsiaNum++;
  181. }
  182.  
  183. var newitem = choose(weapons[newcol]["item"]);
  184. var newimage = "img/collection/"+newitem+".png"
  185. var newwear = choose(wear);
  186. var newname = newitem + " (" + newwear + ")";
  187. var newvalue = Number(Number(colorValue[newcol] * wearValue[newwear])+0.02).toFixed(
  188. 2);
  189. return [newcol, newname, newvalue, newimage]
  190. }
  191.  
  192. function removeItem(item) {
  193. Game.dropHistory.replace(item, "");
  194. }
  195.  
  196. /* Sell all items */
  197. function sellAll() {
  198. var worth = Game.netWorth * 0.85;
  199. Game.money += worth;
  200. Game.netWorth = 0;
  201. drops_listDisplay.innerHTML = "";
  202. Game.dropHistory = ""
  203. netWorthDisplay.innerHTML = "0 €";
  204. Game.inv = 0;
  205. usedSlotsDisplay.innerHTML = Game.inv;
  206. nextDrop = Game.sec+Game.dropFrequency;
  207. document.getElementById("sellBtn").disabled = true;
  208. Game.totalMoneyGained += worth;
  209. updateValues();
  210. setTimeout( function(){document.getElementById("sellBtn").disabled = false;}, 5e3);
  211. }
  212. /* Choose Keys / Case amount */
  213.  
  214. document.getElementById("keysAm").addEventListener("input", function() {
  215. if (document.getElementById("keysAm").value < 1 || document.getElementById("keysAm").value > 9999 || isNaN(document.getElementById("keysAm").value)) {
  216. document.getElementById("keysAm").value = 1;
  217. }
  218. else {
  219. document.getElementById("buyKeyBtn").innerHTML = "Buy Keys ("+Number(2.15 * document.getElementById("keysAm").value).toFixed(2)+")";
  220. }
  221. })
  222.  
  223. document.getElementById("caseAm").addEventListener("input", function() {
  224. if (document.getElementById("caseAm").value < 1 || document.getElementById("caseAm").value > 9999 || isNaN(document.getElementById("caseAm").value)) {
  225. document.getElementById("caseAm").value = 1;
  226. }
  227. else {
  228. document.getElementById("buyCaseBtn").innerHTML = "Buy "+document.getElementById("chosenCase").value+" ("+Number(csCases[document.getElementById("chosenCase").value]["cost"] * document.getElementById("caseAm").value).toFixed(2)+")";
  229. }})
  230. /* Buy a Chroma Case */
  231. function buyCase() {
  232. am = document.getElementById("caseAm").value;
  233.  
  234. if (Game.money < csCases[document.getElementById("chosenCase").value]["cost"] * am) {}
  235. else {
  236. Game.money -= csCases[document.getElementById("chosenCase").value]["cost"] * am;
  237. Game.cases+=1*am;
  238. moneyDisplay.innerHTML = Game.money.toFixed(2)+" €";
  239. casesDisplay.innerHTML = Game.cases;
  240. document.getElementById("chosenCase").disabled = true;
  241. updateValues();
  242. Game.lastCase = document.getElementById("chosenCase").value
  243. }
  244. document.getElementById("sellCasesBtn").innerHTML = "Sell Cases ("+Number(Number(Game.cases * 0.7) * 0.85).toFixed(2)+")";
  245. }
  246.  
  247. /* Buy a Chroma Case Key */
  248. function buyKey() {
  249. am = document.getElementById("keysAm").value;
  250. if (Game.money < 2.15*am) {}
  251. else {
  252. Game.money-=2.15*am;
  253. Game.keys+=1*am;
  254. updateValues();
  255. }
  256. }
  257.  
  258. /* Sell back your cases for 85% */
  259. function sellCases() {
  260. worth = Number(Game.cases * 0.7) * 0.85;
  261. Game.money += worth
  262. Game.cases = 0;
  263. document.getElementById("sellCasesBtn").innerHTML = "Sell Cases ("+Number(Number(Game.cases * 0.7) * 0.85).toFixed(2)+")";
  264. updateValues();
  265. }
  266.  
  267. /* Called by openCase(); if user gets a regular item */
  268. function gotItem() {
  269. var caseWorth = {
  270. "Battle-Scarred": 0.6,
  271. "Well-Worn": 0.9,
  272. "Field-Tested": 1,
  273. "Minimal Wear": 1.2,
  274. "Factory New": 1.6
  275. }
  276. var a = document.getElementById("chosenCase").value;
  277. console.log("Player Opened a "+a);
  278. chosen = randint(1,100)
  279. var newcol = "blue"
  280. if (chosen >= 1 && chosen <= 77) {
  281. newcol = "dodgerBlue"
  282. Game.dodgerBlueNum++;
  283. }
  284. else if (chosen >= 78 && chosen <= 95) {
  285. newcol = "darkmagenta"
  286. Game.darkmagentaNum++;
  287. }
  288. else if (chosen >= 96 && chosen <= 98) {
  289. newcol = "fuchsia"
  290. Game.fuchsiaNum++;
  291. }
  292. else {
  293. newcol = "red"
  294. Game.redNum++;
  295. }
  296.  
  297. var newitem = choose(csCases[a][newcol]["item"]);
  298. var newimage = "img/"+a+"/"+newitem+".png";
  299. console.log("...They got a: "+newitem);
  300. var newwear = choose(wear);
  301. var newname = newitem + " (" + newwear + ")";
  302. var newvalue = Number(colorValue[newcol] * caseWorth[newwear]).toFixed(2);
  303. return [newcol, newname, newvalue, newimage];
  304.  
  305.  
  306. }
  307. /* Called by openCase(); if user recieves a knife */
  308. function gotKnife() {
  309. knifeAudio.play();
  310. Game.knifeNum++;
  311. var a = document.getElementById("chosenCase").value;
  312. var b = csCases[a]['knife']['availKnife']
  313. var c = csCases[a]['knife']['availSkin']
  314. var d = wear;
  315. var newKnife = [choose(b), choose(c), choose(d)];
  316. var newimage = "img/knife/"+newKnife[0]+"/"+newKnife[1]+".png";
  317. var knifeWorth = Number(knifeValue[newKnife[0]] * skinValue[newKnife[1]]) * wearValue[newKnife[2]]
  318. var knifeName = "&#9733; "+newKnife[0]+" I "+newKnife[1]+" ("+newKnife[2]+")";
  319. var newcol = "#FF0000";
  320. document.getElementById("openCaseBtn").disabled = true;
  321. setTimeout(function(){document.getElementById("openCaseBtn").disabled = false;}, 1500)
  322. return [newcol, knifeName, knifeWorth, newimage];
  323.  
  324. }
  325.  
  326.  
  327. /* Open CS Case */
  328. function openCase() {
  329. if (Game.cases < 1 || Game.keys < 1 || Game.inv >= Game.invspace) {}
  330. else{
  331. Game.keys--;
  332. Game.cases--;
  333. var chance = randint(1,chances["knife"])
  334. var isSt = randint(1,chances["st"])
  335. if (isSt === 1) {
  336. var statTrak = 2.1;
  337. var statTrakString = "StatTrak&#0153; "
  338. }
  339. else {
  340. var statTrak = 1;
  341. var statTrakString = "";
  342. }
  343.  
  344. if (chance <= 995) {
  345. var newKnife = gotItem();
  346. var glow = "";
  347. }
  348. else {
  349. var newKnife = gotKnife();
  350. var glow = "text-shadow:0 0 15px red;";
  351. var bglow = "box-shadow:0 0 15px red;"
  352. if (statTrak > 1.1) {
  353. statTrak = 3.1;
  354. }
  355. }
  356. caseAudio.play();
  357. Game.inv += 1;
  358. knifeName = newKnife[1];
  359. knifeWorth = parseFloat(newKnife[2] * statTrak);
  360. newimage = newKnife[3];
  361. knifeCol = newKnife[0];
  362. Game.netWorth += knifeWorth
  363. updateValues();
  364. itemString = "<div class='itemBoxWrapper'><div class='itemBox' title='"+knifeName+"' style='border:2px solid "+knifeCol+";background-image:url(\""+newimage+"\");'><div class='itemBoxText'>"+knifeWorth.toFixed(2)+" €</span></div></div><span style='margin:0 0 0 10px;color:"+knifeCol+"'>"+statTrakString+knifeName+"</span></div>"
  365. Game.dropHistory += itemString
  366. drops_listDisplay.innerHTML = Game.dropHistory;
  367. document.getElementById("caseItemImage").style.backgroundImage = "url('"+newimage+"')";
  368. document.getElementById("caseItemImage").style.border = "3px solid "+knifeCol;
  369. document.getElementById("caseItemImage").style.boxShadow = "0 0 40px "+knifeCol;
  370. drops_listDisplay.scrollTop = drops_listDisplay.scrollHeight;
  371.  
  372. if (Game.cases <= 0) {
  373. document.getElementById("chosenCase").disabled = false;
  374. }
  375. saveGame();
  376. }
  377. /* setTimeout(function(){document.getElementById("openCaseBtn").disabled = false;}, 210) */
  378. }
  379.  
  380. /* Listens for change of selected case and updates values accordingly. */
  381. document.getElementById("chosenCase").addEventListener("change", function() {
  382. document.getElementById("buyCaseBtn").innerHTML = "Buy "+document.getElementById("chosenCase").value+" ("+csCases[document.getElementById("chosenCase").value]["cost"].toFixed(2)+" €)";
  383.  
  384. })
  385.  
  386. /* Player Upgrades */
  387.  
  388. /* Buy additional inventory slots for 125€*/
  389. function buyInventory() {
  390. if (Game.money < 100) {}
  391. else {
  392. Game.money -= 100;
  393. Game.invspace+=5;
  394. updateValues();
  395. }
  396. }
  397.  
  398. /* Decrease Drop Frequency up to 5 times for 250 * 1.2 ^ 16 */
  399. function buyFrequency() {
  400. if (Game.money < Game.freqCost || Game.dropFrequency <= 4) {}
  401. else {
  402. Game.money -= Game.freqCost;
  403. Game.dropFrequency-=1;
  404. Game.freqCost = Number(21 - Game.dropFrequency) * 40;
  405. updateValues();
  406. }
  407. }
  408.  
  409. /* Called by Main Tick when EXP = EXP to next level */
  410. function levelUp() {
  411. Game.exp = Game.exp - Game.nextLevel
  412. Game.nextLevel = Math.round(Game.nextLevel * 1.15 + 80);
  413. Game.rank++;
  414. if (Game.rank >= 36) {
  415. Game.nextLevel = Infinity;
  416. }
  417. updateValues();
  418. }
  419. /* Autosave */
  420.  
  421. /* Main Tick. For recieving drops. */
  422. var mainTick = setInterval(function() {
  423. document.getElementById("seconds").innerHTML = pad(++Game.sec % 60);
  424. document.getElementById("minutes").innerHTML = pad(parseInt(Game.sec /
  425. 60, 10));
  426. /* Getting a Drop */
  427. if (Game.sec === nextDrop && Game.inv < Game.invspace) {
  428. var properties = newDrop();
  429. var colored = properties[0];
  430. var dropped = properties[1];
  431. var valued = properties[2];
  432. var gunImage = properties[3];
  433. drop_noteDisplay.style.border =
  434. "1px solid black";
  435. drop_noteDisplay.style.background = colored;
  436. drop_noteDisplay.style.visibility = "visible";
  437. Game.netWorth += parseFloat(valued);
  438. netWorthDisplay.innerHTML = Game.netWorth.toFixed(2)+" €";
  439. drop_noteDisplay.innerHTML = "New Drop: " + dropped;
  440. setTimeout(function() {
  441. drop_noteDisplay.style.visibility = "hidden";
  442.  
  443. }, 3000);
  444.  
  445. nextDrop += Game.dropFrequency;
  446. Game.inv++;
  447. usedSlotsDisplay.innerHTML = Game.inv;
  448. dropString = "<div class='itemBoxWrapper'><div class='itemBox' title='"+dropped+"' style='border:2px solid "+colored+";background-image:url(\""+gunImage+"\");'><div class='itemBoxText'>"+valued+" €</span></div></div><span style='margin:0 0 0 10px;color:"+colored+"'>"+dropped+"</span></div>";
  449. Game.dropHistory += dropString;
  450. drops_listDisplay.innerHTML = Game.dropHistory;
  451. drops_listDisplay.scrollTop = drops_listDisplay.scrollHeight;
  452. updateValues();
  453.  
  454. } /* */
  455. Game.exp += Game.expGain;
  456.  
  457. if (Game.exp >= Game.nextLevel) {
  458. levelUp();
  459. }
  460. updateValues();
  461. }, 1000);
  462.  
  463. /* Init new game and set starting timer */
  464. var Game = new Game();
  465. var cleanSave = JSON.stringify(Game)
  466. nextDrop = Game.sec+Game.dropFrequency;
  467. document.getElementById("openCaseBtn").disabled = false;
  468. loadGame();
  469. updateValues();
  470. document.getElementById("chosenCase").value = Game.lastCase
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement