Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
mamayaya1
GitHub Repository: mamayaya1/game
Path: blob/main/projects/cookie-clicker/minigamePantheon.js
4626 views
1
var M={};
2
M.parent=Game.Objects['Temple'];
3
M.parent.minigame=M;
4
M.launch=function()
5
{
6
var M=this;
7
M.name=M.parent.minigameName;
8
M.init=function(div)
9
{
10
//populate div with html and initialize values
11
12
M.gods={
13
'asceticism':{
14
name:'Holobore, Spirit of Asceticism',
15
icon:[21,18],
16
desc1:'<span class="green">+15% base CpS.</span>',
17
desc2:'<span class="green">+10% base CpS.</span>',
18
desc3:'<span class="green">+5% base CpS.</span>',
19
descAfter:'<span class="red">If a golden cookie is clicked, this spirit is unslotted and all worship swaps will be used up.</span>',
20
quote:'An immortal life spent focusing on the inner self, away from the distractions of material wealth.',
21
},
22
'decadence':{
23
name:'Vomitrax, Spirit of Decadence',
24
icon:[22,18],
25
desc1:'<span class="green">Golden and wrath cookie effect duration +7%,</span> <span class="red">but buildings grant -7% CpS.</span>',
26
desc2:'<span class="green">Golden and wrath cookie effect duration +5%,</span> <span class="red">but buildings grant -5% CpS.</span>',
27
desc3:'<span class="green">Golden and wrath cookie effect duration +2%,</span> <span class="red">but buildings grant -2% CpS.</span>',
28
quote:'This sleazy spirit revels in the lust for quick easy gain and contempt for the value of steady work.',
29
},
30
'ruin':{
31
name:'Godzamok, Spirit of Ruin',
32
icon:[23,18],
33
descBefore:'<span class="green">Selling buildings triggers a buff boosted by how many buildings were sold.</span>',
34
desc1:'<span class="green">Buff boosts clicks by +1% for every building sold for 10 seconds.</span>',
35
desc2:'<span class="green">Buff boosts clicks by +0.5% for every building sold for 10 seconds.</span>',
36
desc3:'<span class="green">Buff boosts clicks by +0.25% for every building sold for 10 seconds.</span>',
37
quote:'The embodiment of natural disasters. An impenetrable motive drives the devastation caused by this spirit.',
38
},
39
'ages':{
40
name:'Cyclius, Spirit of Ages',
41
icon:[24,18],
42
activeDescFunc:function()
43
{
44
var godLvl=Game.hasGod('ages');
45
var mult=1;
46
if (godLvl==1) mult*=0.15*Math.sin((Date.now()/1000/(60*60*3))*Math.PI*2);
47
else if (godLvl==2) mult*=0.15*Math.sin((Date.now()/1000/(60*60*12))*Math.PI*2);
48
else if (godLvl==3) mult*=0.15*Math.sin((Date.now()/1000/(60*60*24))*Math.PI*2);
49
return 'Current bonus : '+(mult<0?'-':'+')+Beautify(Math.abs(mult)*100,2)+'%.';
50
},
51
descBefore:'CpS bonus fluctuating between <span class="green">+15%</span> and <span class="red">-15%</span> over time.',
52
desc1:'Effect cycles over 3 hours.',
53
desc2:'Effect cycles over 12 hours.',
54
desc3:'Effect cycles over 24 hours.',
55
quote:'This spirit knows about everything you\'ll ever do, and enjoys dispensing a harsh judgement.',
56
},
57
'seasons':{
58
name:'Selebrak, Spirit of Festivities',
59
icon:[25,18],
60
descBefore:'<span class="green">Some seasonal effects are boosted.</span>',
61
desc1:'<span class="green">Large boost.</span> <span class="red">Switching seasons is 100% pricier.</span>',
62
desc2:'<span class="green">Medium boost.</span> <span class="red">Switching seasons is 50% pricier.</span>',
63
desc3:'<span class="green">Small boost.</span> <span class="red">Switching seasons is 25% pricier.</span>',
64
quote:'This is the spirit of merry getaways and regretful Monday mornings.',
65
},
66
'creation':{
67
name:'Dotjeiess, Spirit of Creation',
68
icon:[26,18],
69
desc1:'<span class="green">Buildings are 7% cheaper,</span> <span class="red">but heavenly chips have 30% less effect.</span>',
70
desc2:'<span class="green">Buildings are 5% cheaper,</span> <span class="red">but heavenly chips have 20% less effect.</span>',
71
desc3:'<span class="green">Buildings are 2% cheaper,</span> <span class="red">but heavenly chips have 10% less effect.</span>',
72
quote:'All things that be and ever will be were scripted long ago by this spirit\'s inscrutable tendrils.',
73
},
74
'labor':{
75
name:'Muridal, Spirit of Labor',
76
icon:[27,18],
77
desc1:'<span class="green">Clicks are 15% more powerful,</span> <span class="red">but buildings produce 3% less.</span>',
78
desc2:'<span class="green">Clicks are 10% more powerful,</span> <span class="red">but buildings produce 2% less.</span>',
79
desc3:'<span class="green">Clicks are 5% more powerful,</span> <span class="red">but buildings produce 1% less.</span>',
80
quote:'This spirit enjoys a good cheese after a day of hard work.',
81
},
82
'industry':{
83
name:'Jeremy, Spirit of Industry',
84
icon:[28,18],
85
desc1:'<span class="green">Buildings produce 10% more cookies,</span> <span class="red">but golden and wrath cookies appear 10% less.</span>',
86
desc2:'<span class="green">Buildings produce 6% more cookies,</span> <span class="red">but golden and wrath cookies appear 6% less.</span>',
87
desc3:'<span class="green">Buildings produce 3% more cookies,</span> <span class="red">but golden and wrath cookies appear 3% less.</span>',
88
quote:'While this spirit has many regrets, helping you rule the world through constant industrialization is not one of them.',
89
},
90
'mother':{
91
name:'Mokalsium, Mother Spirit',
92
icon:[29,18],
93
desc1:'<span class="green">Milk is 10% more powerful,</span> <span class="red">but golden and wrath cookies appear 15% less.</span>',
94
desc2:'<span class="green">Milk is 5% more powerful,</span> <span class="red">but golden and wrath cookies appear 10% less.</span>',
95
desc3:'<span class="green">Milk is 3% more powerful,</span> <span class="red">but golden and wrath cookies appear 5% less.</span>',
96
quote:'A caring spirit said to contain itself, inwards infinitely.',
97
},
98
'scorn':{
99
name:'Skruuia, Spirit of Scorn',
100
icon:[21,19],
101
descBefore:'<span class="red">All golden cookies are wrath cookies with a greater chance of a negative effect.</span>',
102
desc1:'<span class="green">Wrinklers appear 150% faster and digest 15% more cookies.</span>',
103
desc2:'<span class="green">Wrinklers appear 100% faster and digest 10% more cookies.</span>',
104
desc3:'<span class="green">Wrinklers appear 50% faster and digest 5% more cookies.</span>',
105
quote:'This spirit enjoys poking foul beasts and watching them squirm, but has no love for its own family.',
106
},
107
'order':{
108
name:'Rigidel, Spirit of Order',
109
icon:[22,19],
110
activeDescFunc:function()
111
{
112
if (Game.BuildingsOwned%10==0) return 'Buildings owned : '+Beautify(Game.BuildingsOwned)+'.<br>Effect is active.';
113
else return 'Buildings owned : '+Beautify(Game.BuildingsOwned)+'.<br>Effect is inactive.';
114
},
115
desc1:'<span class="green">Sugar lumps ripen an hour sooner.</span>',
116
desc2:'<span class="green">Sugar lumps ripen 40 minutes sooner.</span>',
117
desc3:'<span class="green">Sugar lumps ripen 20 minutes sooner.</span>',
118
descAfter:'<span class="red">Effect is only active when your total amount of buildings ends with 0.</span>',
119
quote:'You will find that life gets just a little bit sweeter if you can motivate this spirit with tidy numbers and properly-filled tax returns.',
120
},
121
};
122
M.godsById=[];var n=0;
123
for (var i in M.gods){M.gods[i].id=n;M.gods[i].slot=-1;M.godsById[n]=M.gods[i];n++;}
124
125
126
M.slot=[];
127
M.slot[0]=-1;//diamond socket
128
M.slot[1]=-1;//ruby socket
129
M.slot[2]=-1;//jade socket
130
131
M.slotNames=[
132
'Diamond','Ruby','Jade'
133
];
134
135
M.swaps=3;//swaps left
136
M.swapT=Date.now();//the last time we swapped
137
138
M.lastSwapT=0;//frames since last swap
139
140
M.godTooltip=function(id)
141
{
142
return function(){
143
var me=M.godsById[id];
144
me.icon=me.icon||[0,0];
145
var str='<div style="padding:8px 4px;min-width:350px;">'+
146
'<div class="icon" style="float:left;margin-left:-8px;margin-top:-8px;background-position:'+(-me.icon[0]*48)+'px '+(-me.icon[1]*48)+'px;"></div>'+
147
'<div class="name">'+me.name+'</div>'+
148
'<div class="line"></div><div class="description"><div style="margin:6px 0px;font-weight:bold;">Effects :</div>'+
149
(me.descBefore?('<div class="templeEffect">'+me.descBefore+'</div>'):'')+
150
(me.desc1?('<div class="templeEffect templeEffect1"><div class="usesIcon shadowFilter templeGem templeGem1"></div>'+me.desc1+'</div>'):'')+
151
(me.desc2?('<div class="templeEffect templeEffect2"><div class="usesIcon shadowFilter templeGem templeGem2"></div>'+me.desc2+'</div>'):'')+
152
(me.desc3?('<div class="templeEffect templeEffect3"><div class="usesIcon shadowFilter templeGem templeGem3"></div>'+me.desc3+'</div>'):'')+
153
(me.descAfter?('<div class="templeEffect">'+me.descAfter+'</div>'):'')+
154
(me.quote?('<q>'+me.quote+'</q>'):'')+
155
'</div></div>';
156
return str;
157
};
158
}
159
160
M.slotTooltip=function(id)
161
{
162
return function(){
163
if (M.slot[id]!=-1)
164
{
165
var me=M.godsById[M.slot[id]];
166
me.icon=me.icon||[0,0];
167
}
168
var str='<div style="padding:8px 4px;min-width:350px;">'+
169
(M.slot[id]!=-1?(
170
'<div class="name templeEffect" style="margin-bottom:12px;"><div class="usesIcon shadowFilter templeGem templeGem'+(parseInt(id)+1)+'"></div>'+M.slotNames[id]+' slot</div>'+
171
'<div class="icon" style="float:left;margin-left:-8px;margin-top:-8px;background-position:'+(-me.icon[0]*48)+'px '+(-me.icon[1]*48)+'px;"></div>'+
172
'<div class="name">'+me.name+'</div>'+
173
'<div class="line"></div><div class="description"><div style="margin:6px 0px;font-weight:bold;">Effects :</div>'+
174
(me.activeDescFunc?('<div class="templeEffect templeEffectOn" style="padding:8px 4px;text-align:center;">'+me.activeDescFunc()+'</div>'):'')+
175
(me.descBefore?('<div class="templeEffect">'+me.descBefore+'</div>'):'')+
176
(me.desc1?('<div class="templeEffect templeEffect1'+(me.slot==0?' templeEffectOn':'')+'"><div class="usesIcon shadowFilter templeGem templeGem1"></div>'+me.desc1+'</div>'):'')+
177
(me.desc2?('<div class="templeEffect templeEffect2'+(me.slot==1?' templeEffectOn':'')+'"><div class="usesIcon shadowFilter templeGem templeGem2"></div>'+me.desc2+'</div>'):'')+
178
(me.desc3?('<div class="templeEffect templeEffect3'+(me.slot==2?' templeEffectOn':'')+'"><div class="usesIcon shadowFilter templeGem templeGem3"></div>'+me.desc3+'</div>'):'')+
179
(me.descAfter?('<div class="templeEffect">'+me.descAfter+'</div>'):'')+
180
(me.quote?('<q>'+me.quote+'</q>'):'')+
181
'</div>'
182
):
183
('<div class="name templeEffect"><div class="usesIcon shadowFilter templeGem templeGem'+(parseInt(id)+1)+'"></div>'+M.slotNames[id]+' slot (empty)</div><div class="line"></div><div class="description">'+
184
((M.slotHovered==id && M.dragging)?'Release to assign <b>'+M.dragging.name+'</b> to this slot.':'Drag a spirit onto this slot to assign it.')+
185
'</div>')
186
)+
187
'</div>';
188
return str;
189
};
190
}
191
192
M.useSwap=function(n)
193
{
194
M.swapT=Date.now();
195
M.swaps-=n;
196
if (M.swaps<0) M.swaps=0;
197
}
198
199
M.slotGod=function(god,slot)
200
{
201
if (slot==god.slot) return false;
202
if (slot!=-1 && M.slot[slot]!=-1)
203
{
204
M.godsById[M.slot[slot]].slot=god.slot;//swap
205
M.slot[god.slot]=M.slot[slot];
206
}
207
else if (god.slot!=-1) M.slot[god.slot]=-1;
208
if (slot!=-1) M.slot[slot]=god.id;
209
god.slot=slot;
210
Game.recalculateGains=true;
211
}
212
213
M.dragging=false;
214
M.dragGod=function(what)
215
{
216
M.dragging=what;
217
var div=l('templeGod'+what.id);
218
var box=div.getBoundingClientRect();
219
var box2=l('templeDrag').getBoundingClientRect();
220
div.className='ready templeGod titleFont templeDragged';
221
l('templeDrag').appendChild(div);
222
var x=box.left-box2.left;
223
var y=box.top-box2.top;
224
div.style.transform='translate('+(x)+'px,'+(y)+'px)';
225
l('templeGodPlaceholder'+M.dragging.id).style.display='inline-block';
226
PlaySound('snd/tick.mp3');
227
}
228
M.dropGod=function()
229
{
230
if (!M.dragging) return;
231
var div=l('templeGod'+M.dragging.id);
232
div.className='ready templeGod titleFont';
233
div.style.transform='none';
234
if (M.slotHovered!=-1 && (M.swaps==0 || M.dragging.slot==M.slotHovered))//dropping on a slot but no swaps left, or slot is the same as the original
235
{
236
if (M.dragging.slot!=-1) l('templeSlot'+M.dragging.slot).appendChild(div);
237
else l('templeGodPlaceholder'+(M.dragging.id)).parentNode.insertBefore(div,l('templeGodPlaceholder'+(M.dragging.id)));
238
PlaySound('snd/sell1.mp3',0.75);
239
}
240
else if (M.slotHovered!=-1)//dropping on a slot
241
{
242
M.useSwap(1);
243
M.lastSwapT=0;
244
245
var prev=M.slot[M.slotHovered];//id of the god already in the slot
246
if (prev!=-1)
247
{
248
prev=M.godsById[prev];
249
var prevDiv=l('templeGod'+prev.id);
250
if (M.dragging.slot!=-1)//swap with god's previous slot
251
{
252
l('templeSlot'+M.dragging.slot).appendChild(prevDiv);
253
}
254
else//swap back to roster
255
{
256
var other=l('templeGodPlaceholder'+(prev.id));
257
other.parentNode.insertBefore(prevDiv,other);
258
}
259
}
260
l('templeSlot'+M.slotHovered).appendChild(div);
261
M.slotGod(M.dragging,M.slotHovered);
262
263
PlaySound('snd/tick.mp3');
264
PlaySound('snd/spirit.mp3',0.5);
265
266
var rect=div.getBoundingClientRect();
267
Game.SparkleAt((rect.left+rect.right)/2,(rect.top+rect.bottom)/2-24);
268
}
269
else//dropping back to roster
270
{
271
var other=l('templeGodPlaceholder'+(M.dragging.id));
272
other.parentNode.insertBefore(div,other);
273
other.style.display='none';
274
M.slotGod(M.dragging,-1);
275
PlaySound('snd/sell1.mp3',0.75);
276
}
277
M.dragging=false;
278
}
279
280
M.slotHovered=-1;
281
M.hoverSlot=function(what)
282
{
283
M.slotHovered=what;
284
if (M.dragging)
285
{
286
if (M.slotHovered==-1) l('templeGodPlaceholder'+M.dragging.id).style.display='inline-block';
287
else l('templeGodPlaceholder'+M.dragging.id).style.display='none';
288
PlaySound('snd/clickb'+Math.floor(Math.random()*7+1)+'.mp3',0.75);
289
}
290
}
291
292
//external
293
Game.hasGod=function(what)
294
{
295
var god=M.gods[what];
296
for (var i=0;i<3;i++)
297
{
298
if (M.slot[i]==god.id) return (i+1);
299
}
300
return false;
301
}
302
Game.forceUnslotGod=function(god)
303
{
304
var god=M.gods[god];
305
if (god.slot==-1) return false;
306
var div=l('templeGod'+god.id);
307
var other=l('templeGodPlaceholder'+(god.id));
308
other.parentNode.insertBefore(div,other);
309
other.style.display='none';
310
M.slotGod(god,-1);
311
return true;
312
}
313
Game.useSwap=M.useSwap;
314
315
316
var str='';
317
str+='<style>'+
318
'#templeBG{background:url(img/shadedBorders.png),url(img/BGpantheon.jpg);background-size:100% 100%,auto;position:absolute;left:0px;right:0px;top:0px;bottom:16px;}'+
319
'#templeContent{position:relative;box-sizing:border-box;padding:4px 24px;text-align:center;}'+
320
'#templeGods{text-align:center;width:100%;padding:8px;box-sizing:border-box;}'+
321
'.templeIcon{pointer-events:none;margin:12px 6px 0px 6px;width:48px;height:48px;opacity:0.8;position:relative;}'+
322
'.templeSlot .templeIcon{margin:2px 6px 0px 6px;}'+
323
'.templeGod{box-shadow:4px 4px 4px #000;cursor:pointer;position:relative;color:#f33;opacity:0.8;text-shadow:0px 0px 4px #000,0px 0px 6px #000;font-weight:bold;font-size:12px;display:inline-block;width:60px;height:74px;background:url(img/spellBG.png);}'+
324
'.templeGod.ready{color:rgba(255,255,255,0.8);opacity:1;}'+
325
'.templeGod.ready:hover{color:#fff;}'+
326
'.templeGod:hover,.templeDragged{box-shadow:6px 6px 6px 2px #000;z-index:1000000001;top:-1px;}'+
327
'.templeGod:active{top:1px;}'+
328
'.templeGod.ready .templeIcon{opacity:1;}'+
329
'.templeGod:hover{background-position:0px -74px;} .templeGod:active{background-position:0px 74px;}'+
330
'.templeGod1{background-position:-60px 0px;} .templeGod1:hover{background-position:-60px -74px;} .templeGod1:active{background-position:-60px 74px;}'+
331
'.templeGod2{background-position:-120px 0px;} .templeGod2:hover{background-position:-120px -74px;} .templeGod2:active{background-position:-120px 74px;}'+
332
'.templeGod3{background-position:-180px 0px;} .templeGod3:hover{background-position:-180px -74px;} .templeGod3:active{background-position:-180px 74px;}'+
333
334
'.templeGod:hover .templeIcon{top:-1px;}'+
335
'.templeGod.ready:hover .templeIcon{animation-name:bounce;animation-iteration-count:infinite;animation-duration:0.8s;}'+
336
'.noFancy .templeGod.ready:hover .templeIcon{animation:none;}'+
337
338
'.templeGem{z-index:100;width:24px;height:24px;}'+
339
'.templeEffect{font-weight:bold;font-size:11px;position:relative;margin:0px -12px;padding:4px;padding-left:28px;}'+
340
'.description .templeEffect{border-top:1px solid rgba(255,255,255,0.15);background:linear-gradient(to top,rgba(255,255,255,0.1),rgba(255,255,255,0));}'+
341
'.templeEffect .templeGem{position:absolute;left:0px;top:0px;}'+
342
'.templeEffectOn{text-shadow:0px 0px 6px rgba(255,255,255,0.75);color:#fff;}'+
343
'.templeGod .templeGem{position:absolute;left:18px;bottom:8px;pointer-events:none;}'+
344
'.templeGem1{background-position:-1104px -720px;}'+
345
'.templeGem2{background-position:-1128px -720px;}'+
346
'.templeGem3{background-position:-1104px -744px;}'+
347
348
'.templeSlot .templeGod,.templeSlot .templeGod:hover,.templeSlot .templeGod:active{background:none;}'+
349
350
'.templeSlotDrag{position:absolute;left:0px;top:0px;right:0px;bottom:0px;background:#999;opacity:0;cursor:pointer;}'+
351
352
'#templeDrag{position:absolute;left:0px;top:0px;z-index:1000000000000;}'+
353
'.templeGod{transition:transform 0.1s;}'+
354
'#templeDrag .templeGod{position:absolute;left:0px;top:0px;}'+
355
'.templeDragged{pointer-events:none;}'+
356
357
'.templeGodPlaceholder{background:red;opacity:0;display:none;width:60px;height:74px;}'+
358
359
'#templeSlots{margin:4px auto;text-align:center;}'+
360
'#templeSlot0{top:-4px;}'+
361
'#templeSlot1{top:0px;}'+
362
'#templeSlot2{top:4px;}'+
363
364
'#templeInfo{position:relative;display:inline-block;margin:8px auto 0px auto;padding:8px 16px;padding-left:32px;text-align:center;font-size:11px;color:rgba(255,255,255,0.75);text-shadow:-1px 1px 0px #000;background:rgba(0,0,0,0.75);border-radius:16px;}'+
365
'</style>';
366
str+='<div id="templeBG"></div>';
367
str+='<div id="templeContent">';
368
str+='<div id="templeDrag"></div>';
369
str+='<div id="templeSlots">';
370
for (var i in M.slot)
371
{
372
var me=M.slot[i];
373
str+='<div class="ready templeGod templeGod'+(i%4)+' templeSlot titleFont" id="templeSlot'+i+'" '+Game.getDynamicTooltip('Game.ObjectsById['+M.parent.id+'].minigame.slotTooltip('+i+')','this')+'><div class="usesIcon shadowFilter templeGem templeGem'+(parseInt(i)+1)+'"></div></div>';
374
}
375
str+='</div>';
376
str+='<div id="templeInfo"><div '+Game.getDynamicTooltip('Game.ObjectsById['+M.parent.id+'].minigame.refillTooltip','this')+' id="templeLumpRefill" class="usesIcon shadowFilter lumpRefill" style="left:-6px;top:-10px;background-position:'+(-29*48)+'px '+(-14*48)+'px;"></div><div id="templeSwaps" '+Game.getTooltip('<div style="padding:8px;width:350px;font-size:11px;text-align:center;">Each time you slot a spirit, you use up one worship swap.<div class="line"></div>If you have 2 swaps left, the next one will refill after 1 hour.<br>If you have 1 swap left, the next one will refill after 4 hours.<br>If you have 0 swaps left, you will get one after 16 hours.<div class="line"></div>Unslotting a spirit costs no swaps.</div>')+'>-</div></div>';
377
str+='<div id="templeGods">';
378
for (var i in M.gods)
379
{
380
var me=M.gods[i];
381
var icon=me.icon||[0,0];
382
str+='<div class="ready templeGod templeGod'+(me.id%4)+' titleFont" id="templeGod'+me.id+'" '+Game.getDynamicTooltip('Game.ObjectsById['+M.parent.id+'].minigame.godTooltip('+me.id+')','this')+'><div class="usesIcon shadowFilter templeIcon" style="background-position:'+(-icon[0]*48)+'px '+(-icon[1]*48)+'px;"></div><div class="templeSlotDrag" id="templeGodDrag'+me.id+'"></div></div>';
383
str+='<div class="templeGodPlaceholder" id="templeGodPlaceholder'+me.id+'"></div>';
384
}//<div class="usesIcon shadowFilter templeGem templeGem'+(me.id%3+1)+'"></div>
385
str+='</div>';
386
str+='</div>';
387
div.innerHTML=str;
388
M.swapsL=l('templeSwaps');
389
M.lumpRefill=l('templeLumpRefill');
390
391
for (var i in M.gods)
392
{
393
var me=M.gods[i];
394
AddEvent(l('templeGodDrag'+me.id),'mousedown',function(what){return function(e){if (e.button==0){M.dragGod(what);}}}(me));
395
AddEvent(l('templeGodDrag'+me.id),'mouseup',function(what){return function(e){if (e.button==0){M.dropGod(what);}}}(me));
396
}
397
for (var i in M.slot)
398
{
399
var me=M.slot[i];
400
AddEvent(l('templeSlot'+i),'mouseover',function(what){return function(){M.hoverSlot(what);}}(i));
401
AddEvent(l('templeSlot'+i),'mouseout',function(what){return function(e){if (e.button==0){M.hoverSlot(-1);}}}(i));
402
}
403
404
AddEvent(document,'mouseup',M.dropGod);
405
406
407
M.refillTooltip=function(){
408
return '<div style="padding:8px;width:300px;font-size:11px;text-align:center;">Click to refill all your worship swaps for <span class="price lump">1 sugar lump</span>.'+
409
(Game.canRefillLump()?'<br><small>(can be done once every '+Game.sayTime(Game.getLumpRefillMax(),-1)+')</small>':('<br><small class="red">(usable again in '+Game.sayTime(Game.getLumpRefillRemaining()+Game.fps,-1)+')</small>'))+
410
'</div>';
411
};
412
AddEvent(M.lumpRefill,'click',function(){
413
if (M.swaps<3)
414
{Game.refillLump(1,function(){
415
M.swaps=3;
416
M.swapT=Date.now();
417
PlaySound('snd/pop'+Math.floor(Math.random()*3+1)+'.mp3',0.75);
418
});}
419
});
420
421
//M.parent.switchMinigame(1);
422
}
423
M.save=function()
424
{
425
//output cannot use ",", ";" or "|"
426
var str='';
427
for (var i in M.slot)
428
{str+=parseFloat(M.slot[i])+'/';}
429
str=str.slice(0,-1);
430
str+=' '+parseFloat(M.swaps)+' '+parseFloat(M.swapT);
431
str+=' '+parseInt(M.parent.onMinigame?'1':'0');
432
return str;
433
}
434
M.load=function(str)
435
{
436
//interpret str; called after .init
437
//note : not actually called in the Game's load; see "minigameSave" in main.js
438
if (!str) return false;
439
var i=0;
440
var spl=str.split(' ');
441
var bit=spl[i++].split('/')||[];
442
for (var ii in M.slot)
443
{
444
if (parseFloat(bit[ii])!=-1)
445
{
446
var god=M.godsById[parseFloat(bit[ii])];
447
M.slotGod(god,ii);
448
l('templeSlot'+god.slot).appendChild(l('templeGod'+god.id));
449
}
450
}
451
M.swaps=parseFloat(spl[i++]||3);
452
M.swapT=parseFloat(spl[i++]||Date.now());
453
var on=parseInt(spl[i++]||0);if (on && Game.ascensionMode!=1) M.parent.switchMinigame(1);
454
}
455
M.reset=function()
456
{
457
M.swaps=3;
458
M.swapT=Date.now();
459
for (var i in M.slot) {M.slot[i]=-1;}
460
for (var i in M.gods)
461
{
462
var me=M.gods[i];
463
me.slot=-1;
464
var other=l('templeGodPlaceholder'+(me.id));
465
other.parentNode.insertBefore(l('templeGod'+me.id),other);
466
other.style.display='none';
467
}
468
}
469
M.logic=function()
470
{
471
//run each frame
472
var t=1000*60*60;
473
if (M.swaps==0) t=1000*60*60*16;
474
else if (M.swaps==1) t=1000*60*60*4;
475
var t2=M.swapT+t-Date.now();
476
if (t2<=0 && M.swaps<3) {M.swaps++;M.swapT=Date.now();}
477
M.lastSwapT++;
478
}
479
M.draw=function()
480
{
481
//run each draw frame
482
if (M.dragging)
483
{
484
var box=l('templeDrag').getBoundingClientRect();
485
var x=Game.mouseX-box.left-60/2;
486
var y=Game.mouseY-box.top;
487
if (M.slotHovered!=-1)//snap to slots
488
{
489
var box2=l('templeSlot'+M.slotHovered).getBoundingClientRect();
490
x=box2.left-box.left;
491
y=box2.top-box.top;
492
}
493
l('templeGod'+M.dragging.id).style.transform='translate('+(x)+'px,'+(y)+'px)';
494
}
495
var t=1000*60*60;
496
if (M.swaps==0) t=1000*60*60*16;
497
else if (M.swaps==1) t=1000*60*60*4;
498
var t2=M.swapT+t-Date.now();
499
M.swapsL.innerHTML='Worship swaps : <span class="titleFont" style="color:'+(M.swaps>0?'#fff':'#c00')+';">'+M.swaps+'/'+(3)+'</span>'+((M.swaps<3)?' (next in '+Game.sayTime((t2/1000+1)*Game.fps,-1)+')':'');
500
}
501
M.init(l('rowSpecial'+M.parent.id));
502
}
503
var M=0;
504