gogame-old-frontend/calc.js
calc.jsRaw
1const universespeed = 1;
2
3function metalmineCost(lvl) {
4 const base = {
5 Metal: 60,
6 Crystal: 15,
7 Deuterium: 0,
8 Energy: 0,
9 };
10 // cost = base * 1.5^(lvl-1)
11 let cost = {};
12 cost.Metal = Math.floor(base.Metal * 1.5**(lvl-1));
13 cost.Crystal = Math.floor(base.Crystal * 1.5**(lvl-1));
14 cost.Deuterium = Math.floor(base.Deuterium * 1.5**(lvl-1));
15 cost.Energy = Math.floor(base.Energy * 1.5**(lvl-1));
16 return cost;
17}
18function crystalmineCost(lvl) {
19 const base = {
20 Metal: 48,
21 Crystal: 24,
22 Deuterium: 0,
23 Energy: 0,
24 };
25 // cost = base * 1.6^(lvl-1)
26 let cost = {};
27 cost.Metal = Math.floor(base.Metal * 1.6**(lvl-1));
28 cost.Crystal = Math.floor(base.Crystal * 1.6**(lvl-1));
29 cost.Deuterium = Math.floor(base.Deuterium * 1.6**(lvl-1));
30 cost.Energy = Math.floor(base.Energy * 1.6**(lvl-1));
31 return cost;
32}
33function deuteriummineCost(lvl) {
34 const base = {
35 Metal: 225,
36 Crystal: 75,
37 Deuterium: 0,
38 Energy: 0,
39 };
40 // cost = base * 1.5^(lvl-1)
41 let cost = {};
42 cost.Metal = Math.floor(base.Metal * 1.5**(lvl-1));
43 cost.Crystal = Math.floor(base.Crystal * 1.5**(lvl-1));
44 cost.Deuterium = Math.floor(base.Deuterium * 1.5**(lvl-1));
45 cost.Energy = Math.floor(base.Energy * 1.5**(lvl-1));
46 return cost;
47}
48function energymineCost(lvl) {
49 const base = {
50 Metal: 75,
51 Crystal: 30,
52 Deuterium: 0,
53 Energy: 0,
54 };
55 // cost = base * 1.5^(lvl-1)
56 let cost = {};
57 cost.Metal = Math.floor(base.Metal * 1.5**(lvl-1));
58 cost.Crystal = Math.floor(base.Crystal * 1.5**(lvl-1));
59 cost.Deuterium = Math.floor(base.Deuterium * 1.5**(lvl-1));
60 cost.Energy = Math.floor(base.Energy * 1.5**(lvl-1));
61 return cost;
62}
63function fusionreactorCost(lvl) {
64 const base = {
65 Metal: 900,
66 Crystal: 360,
67 Deuterium: 180,
68 Energy: 0,
69 };
70 // cost = base * 1.8^(lvl-1)
71 let cost = {};
72 cost.Metal = Math.floor(base.Metal * 1.8**(lvl-1));
73 cost.Crystal = Math.floor(base.Crystal * 1.8**(lvl-1));
74 cost.Deuterium = Math.floor(base.Deuterium * 1.8**(lvl-1));
75 cost.Energy = Math.floor(base.Energy * 1.8**(lvl-1));
76 return cost;
77}
78function roboticsfactoryCost(lvl) {
79 const base = {
80 Metal: 400,
81 Crystal: 120,
82 Deuterium: 200,
83 Energy: 0,
84 };
85 // cost = base * 2^(lvl-1)
86 let cost = {};
87 cost.Metal = Math.floor(base.Metal * 2**(lvl-1));
88 cost.Crystal = Math.floor(base.Crystal * 2**(lvl-1));
89 cost.Deuterium = Math.floor(base.Deuterium * 2**(lvl-1));
90 cost.Energy = Math.floor(base.Energy * 2**(lvl-1));
91 return cost;
92}
93function shipyardCost(lvl) {
94 const base = {
95 Metal: 400,
96 Crystal: 200,
97 Deuterium: 100,
98 Energy: 0,
99 };
100 // cost = base * 2^(lvl-1)
101 let cost = {};
102 cost.Metal = Math.floor(base.Metal * 2**(lvl-1));
103 cost.Crystal = Math.floor(base.Crystal * 2**(lvl-1));
104 cost.Deuterium = Math.floor(base.Deuterium * 2**(lvl-1));
105 cost.Energy = Math.floor(base.Energy * 2**(lvl-1));
106 return cost;
107}
108function metalstorageCost(lvl) {
109 const base = {
110 Metal: 1000,
111 Crystal: 0,
112 Deuterium: 0,
113 Energy: 0,
114 };
115 // cost = base * 2^(lvl-1)
116 let cost = {};
117 cost.Metal = Math.floor(base.Metal * 2**(lvl-1));
118 cost.Crystal = 0;
119 cost.Deuterium = 0;
120 cost.Energy = 0;
121 return cost;
122}
123function crystalstorageCost(lvl) {
124 const base = {
125 Metal: 1000,
126 Crystal: 500,
127 Deuterium: 0,
128 Energy: 0,
129 };
130 // cost = base * 2^(lvl-1)
131 let cost = {};
132 cost.Metal = Math.floor(base.Metal * 2**(lvl-1));
133 cost.Crystal = Math.floor(base.Crystal * 2**(lvl-1));
134 cost.Deuterium = Math.floor(base.Deuterium * 2**(lvl-1));
135 cost.Energy = Math.floor(base.Energy * 2**(lvl-1));
136 return cost;
137}
138function deuteriumstorageCost(lvl) {
139 const base = {
140 Metal: 1000,
141 Crystal: 1000,
142 Deuterium: 0,
143 Energy: 0,
144 };
145 // cost = base * 2^(lvl-1)
146 let cost = {};
147 cost.Metal = Math.floor(base.Metal * 2**(lvl-1));
148 cost.Crystal = Math.floor(base.Crystal * 2**(lvl-1));
149 cost.Deuterium = Math.floor(base.Deuterium * 2**(lvl-1));
150 cost.Energy = Math.floor(base.Energy * 2**(lvl-1));
151 return cost;
152}
153function ressearchlabCost(lvl) {
154 const base = {
155 Metal: 200,
156 Crystal: 400,
157 Deuterium: 200,
158 Energy: 0,
159 };
160 // cost = base * 1.5^(lvl-1)
161 let cost = {};
162 cost.Metal = Math.floor(base.Metal * 1.5**(lvl-1));
163 cost.Crystal = Math.floor(base.Crystal * 1.5**(lvl-1));
164 cost.Deuterium = Math.floor(base.Deuterium * 1.5**(lvl-1));
165 cost.Energy = Math.floor(base.Energy * 1.5**(lvl-1));
166 return cost;
167}
168
169function alliancedepotCost(lvl) {
170 const base = {
171 Metal: 20000,
172 Crystal: 40000,
173 Deuterium: 0,
174 Energy: 0,
175 };
176 // cost = base * 2^(lvl-1)
177 let cost = {};
178 cost.Metal = Math.floor(base.Metal * 2**(lvl-1));
179 cost.Crystal = Math.floor(base.Crystal * 2**(lvl-1));
180 cost.Deuterium = Math.floor(base.Deuterium * 2**(lvl-1));
181 cost.Energy = Math.floor(base.Energy * 2**(lvl-1));
182 return cost;
183}
184function missilesiloCost(lvl) {
185 const base = {
186 Metal: 20000,
187 Crystal: 20000,
188 Deuterium: 1000,
189 Energy: 0,
190 };
191 // cost = base * 2^(lvl-1)
192 let cost = {};
193 cost.Metal = Math.floor(base.Metal * 2**(lvl-1));
194 cost.Crystal = Math.floor(base.Crystal * 2**(lvl-1));
195 cost.Deuterium = Math.floor(base.Deuterium * 2**(lvl-1));
196 cost.Energy = Math.floor(base.Energy * 2**(lvl-1));
197 return cost;
198}
199function spacedockCost(lvl) {
200 const base = {
201 Metal: 20000,
202 Crystal: 20000,
203 Deuterium: 1000,
204 Energy: 0,
205 };
206 // cost = base * 2^(lvl-1)
207 let cost = {};
208 cost.Metal = Math.floor(base.Metal * 2**(lvl-1));
209 cost.Crystal = Math.floor(base.Crystal * 2**(lvl-1));
210 cost.Deuterium = Math.floor(base.Deuterium * 2**(lvl-1));
211 cost.Energy = Math.floor(base.Energy * 2**(lvl-1));
212 return cost;
213}
214
215function constructionTime(r, roboticsLvl) {
216 const naniteLvl = 1;
217 // T(h) = (metal + crystal) / (2500 * (1+roboticsLvl) * 2^naniteLvl * universespeed)
218 tHours = (r.Metal + r.Crystal) / (2500 * (1 + roboticsLvl) * 2**naniteLvl * universespeed);
219 return Math.floor(tHours * 3600);
220}