tx · CuXYSMrm3Zk2XMkHUyjMbo3ovj1Kgt7g3GRpLyeKSVdQ

3PKL9tfUmNciXvbSA3zpXr6PnDNnhn936ba:  -0.01400000 Waves

2022.06.09 13:44 [3154329] smart account 3PKL9tfUmNciXvbSA3zpXr6PnDNnhn936ba > SELF 0.00000000 Waves

{ "type": 13, "id": "CuXYSMrm3Zk2XMkHUyjMbo3ovj1Kgt7g3GRpLyeKSVdQ", "fee": 1400000, "feeAssetId": null, "timestamp": 1654771460515, "version": 2, "chainId": 87, "sender": "3PKL9tfUmNciXvbSA3zpXr6PnDNnhn936ba", "senderPublicKey": "8yG34okaNeKtYZriaoqUQTinJjpk3pYKFTeGptmiWvTV", "proofs": [ "4zSzTtsftwMA6tmcqWvGgSMbGEzbF7H2pnM5kPc7qgaRXQ1Y5gpVTimh2Z59Aq3hFcFN47JAYsuWVvjpBkkLLKAm" ], "script": "base64:AAIFAAAAAAAAAA4IAhIDCgEIEgASAwoBCAAAABgBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgAAAAdhZGRyZXNzAAAAA2tleQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAdhZGRyZXNzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQIAAAAAAQAAAAx0cnlHZXRTdHJpbmcAAAABAAAAA2tleQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgUAAAAEdGhpcwUAAAADa2V5AAAAABBkZWxheUZvckhhdGNoaW5nAAAAAAAAAAACAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAADHRyeUdldFN0cmluZwAAAAECAAAAFHN0YXRpY19vcmFjbGVBZGRyZXNzAQAAAA1nZXRFZ2dBc3NldElkAAAAAAkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAARc3RhdGljX2VnZ0Fzc2V0SWQBAAAAE2dldEluY3ViYXRvckFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAF3N0YXRpY19pbmN1YmF0b3JBZGRyZXNzAQAAABFnZXRCcmVlZGVyQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAAVc3RhdGljX2JyZWVkZXJBZGRyZXNzAQAAABFnZXRGYXJtaW5nQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAAVc3RhdGljX2Zhcm1pbmdBZGRyZXNzAQAAABJnZXRCYWJ5RHVja0FkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAFnN0YXRpY19iYWJ5RHVja0FkZHJlc3MBAAAAEmdldEdhbWVEYXBwQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAAWc3RhdGljX2dhbWVEYXBwQWRkcmVzcwEAAAAPZ2V0SXRlbXNBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABNzdGF0aWNfaXRlbXNBZGRyZXNzAQAAABFnZXRDb3Vwb25zQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAAVc3RhdGljX2NvdXBvbnNBZGRyZXNzAAAAABJQSE9FTklYQkFTRU9QVElPTlMAAAAAAAAAA+gBAAAADXRyeUdldEludGVnZXIAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgAAAAAAAAAAAAEAAAAIYXNTdHJpbmcAAAABAAAABXZhbHVlBAAAAAckbWF0Y2gwBQAAAAV2YWx1ZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwBQAAAAFzCQAAAgAAAAECAAAAHHdyb25nIHR5cGUsIGV4cGVjdGVkOiBTdHJpbmcAAAAACWZlZUFtb3VudAkBAAAADXRyeUdldEludGVnZXIAAAABAgAAAAxjdXJyZW50UHJpY2UBAAAAEGdldEFtb3VudE9yQ2xlYXIAAAABAAAABmFtb3VudAMJAQAAAAhjb250YWlucwAAAAIFAAAABmFtb3VudAIAAAABMAIAAAAABQAAAAZh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", "height": 3154329, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: AMKy8wUnLf4f3FBhHUMEkX4MAKeaqhgBQfMjHyB3C6wt Next: CNypNpEYGuCMN6y5MLZ4tntGq6McneNozuMu3vF6Rhuv Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let eggsAssetId = base58'3v7zGkeHS6KrsvmTRzEzvCxm5cdzkCtM7z5cM6efcjCB'
4+func tryGetStringExternal (address,key) = match getString(address, key) {
5+ case a: String =>
6+ a
7+ case _ =>
8+ ""
9+}
510
6-let feeAmount = (50 * 1000000)
711
8-let delayForHatching = 0
12+func tryGetString (key) = tryGetStringExternal(this, key)
913
10-let incubatorAddress = base58'3P6TwNU39Ykkbeqhn5TE4a2736xsA1vXemM'
1114
12-let breederAddress = base58'3P9REuLBnYBafDqtEu6hfzs2Rv2haSU158y'
15+let delayForHatching = 2
1316
14-let farmingAddress = base58'3PH75p2rmMKCV2nyW4TsAdFgFtmc61mJaqA'
17+func getOracle () = Address(fromBase58String(tryGetString("static_oracleAddress")))
1518
16-let ducklingAddress = base58'3PKwLVb8jYk58oYbfXxs2dUjD3YEKeqGWrX'
19+
20+func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), "static_eggAssetId"))
21+
22+
23+func getIncubatorAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_incubatorAddress")))
24+
25+
26+func getBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_breederAddress")))
27+
28+
29+func getFarmingAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_farmingAddress")))
30+
31+
32+func getBabyDuckAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_babyDuckAddress")))
33+
34+
35+func getGameDappAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_gameDappAddress")))
36+
37+
38+func getItemsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_itemsAddress")))
39+
40+
41+func getCouponsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_couponsAddress")))
42+
1743
1844 let PHOENIXBASEOPTIONS = 1000
19-
20-func isLocked () = {
21- let masterAddress = Address(base58'3PEPftf2kWZDmAaWBjs6BUJa9957kiA2PkU')
22- match getInteger(masterAddress, "egglock") {
23- case b: Int =>
24- b
25- case _ =>
26- 0
27- }
28- }
29-
3045
3146 func tryGetInteger (key) = match getInteger(this, key) {
3247 case b: Int =>
4459 }
4560
4661
47-func tryGetString (key) = match getString(this, key) {
48- case a: String =>
49- a
50- case _ =>
51- ""
52-}
53-
54-
55-func isSymbolA (accumulated,sym) = if ((sym == "A"))
56- then (accumulated + 1)
57- else (accumulated + 0)
58-
59-
60-func isSymbolB (accumulated,sym) = if ((sym == "B"))
61- then (accumulated + 1)
62- else (accumulated + 0)
63-
64-
65-func isSymbolC (accumulated,sym) = if ((sym == "C"))
66- then (accumulated + 1)
67- else (accumulated + 0)
68-
69-
70-func isSymbolD (accumulated,sym) = if ((sym == "D"))
71- then (accumulated + 1)
72- else (accumulated + 0)
73-
74-
75-func isSymbolE (accumulated,sym) = if ((sym == "E"))
76- then (accumulated + 1)
77- else (accumulated + 0)
78-
79-
80-func isSymbolF (accumulated,sym) = if ((sym == "F"))
81- then (accumulated + 1)
82- else (accumulated + 0)
83-
84-
85-func isSymbolG (accumulated,sym) = if ((sym == "G"))
86- then (accumulated + 1)
87- else (accumulated + 0)
88-
89-
90-func isSymbolH (accumulated,sym) = if ((sym == "H"))
91- then (accumulated + 1)
92- else (accumulated + 0)
93-
62+let feeAmount = tryGetInteger("currentPrice")
9463
9564 func getAmountOrClear (amount) = if (contains(amount, "0"))
9665 then ""
9766 else amount
9867
9968
100-func getGen (assetName) = {
101- let genotype = split(dropRight(drop(assetName, 5), 3), "")
102- (((((((getAmountOrClear((toString({
103- let $list22472278 = genotype
104- let $size22472278 = size($list22472278)
105- let $acc022472278 = 0
106- if (($size22472278 == 0))
107- then $acc022472278
108- else {
109- let $acc122472278 = isSymbolA($acc022472278, $list22472278[0])
110- if (($size22472278 == 1))
111- then $acc122472278
112- else {
113- let $acc222472278 = isSymbolA($acc122472278, $list22472278[1])
114- if (($size22472278 == 2))
115- then $acc222472278
116- else {
117- let $acc322472278 = isSymbolA($acc222472278, $list22472278[2])
118- if (($size22472278 == 3))
119- then $acc322472278
120- else {
121- let $acc422472278 = isSymbolA($acc322472278, $list22472278[3])
122- if (($size22472278 == 4))
123- then $acc422472278
124- else {
125- let $acc522472278 = isSymbolA($acc422472278, $list22472278[4])
126- if (($size22472278 == 5))
127- then $acc522472278
128- else {
129- let $acc622472278 = isSymbolA($acc522472278, $list22472278[5])
130- if (($size22472278 == 6))
131- then $acc622472278
132- else {
133- let $acc722472278 = isSymbolA($acc622472278, $list22472278[6])
134- if (($size22472278 == 7))
135- then $acc722472278
136- else {
137- let $acc822472278 = isSymbolA($acc722472278, $list22472278[7])
138- if (($size22472278 == 8))
139- then $acc822472278
140- else {
141- let $acc922472278 = isSymbolA($acc822472278, $list22472278[8])
142- throw("List size exceed 8")
143- }
144- }
145- }
146- }
147- }
148- }
149- }
150- }
151- }
152- }) + "A")) + getAmountOrClear((toString({
153- let $list23152346 = genotype
154- let $size23152346 = size($list23152346)
155- let $acc023152346 = 0
156- if (($size23152346 == 0))
157- then $acc023152346
158- else {
159- let $acc123152346 = isSymbolB($acc023152346, $list23152346[0])
160- if (($size23152346 == 1))
161- then $acc123152346
162- else {
163- let $acc223152346 = isSymbolB($acc123152346, $list23152346[1])
164- if (($size23152346 == 2))
165- then $acc223152346
166- else {
167- let $acc323152346 = isSymbolB($acc223152346, $list23152346[2])
168- if (($size23152346 == 3))
169- then $acc323152346
170- else {
171- let $acc423152346 = isSymbolB($acc323152346, $list23152346[3])
172- if (($size23152346 == 4))
173- then $acc423152346
174- else {
175- let $acc523152346 = isSymbolB($acc423152346, $list23152346[4])
176- if (($size23152346 == 5))
177- then $acc523152346
178- else {
179- let $acc623152346 = isSymbolB($acc523152346, $list23152346[5])
180- if (($size23152346 == 6))
181- then $acc623152346
182- else {
183- let $acc723152346 = isSymbolB($acc623152346, $list23152346[6])
184- if (($size23152346 == 7))
185- then $acc723152346
186- else {
187- let $acc823152346 = isSymbolB($acc723152346, $list23152346[7])
188- if (($size23152346 == 8))
189- then $acc823152346
190- else {
191- let $acc923152346 = isSymbolB($acc823152346, $list23152346[8])
192- throw("List size exceed 8")
193- }
194- }
195- }
196- }
197- }
198- }
199- }
200- }
201- }
202- }) + "B"))) + getAmountOrClear((toString({
203- let $list23832414 = genotype
204- let $size23832414 = size($list23832414)
205- let $acc023832414 = 0
206- if (($size23832414 == 0))
207- then $acc023832414
208- else {
209- let $acc123832414 = isSymbolC($acc023832414, $list23832414[0])
210- if (($size23832414 == 1))
211- then $acc123832414
212- else {
213- let $acc223832414 = isSymbolC($acc123832414, $list23832414[1])
214- if (($size23832414 == 2))
215- then $acc223832414
216- else {
217- let $acc323832414 = isSymbolC($acc223832414, $list23832414[2])
218- if (($size23832414 == 3))
219- then $acc323832414
220- else {
221- let $acc423832414 = isSymbolC($acc323832414, $list23832414[3])
222- if (($size23832414 == 4))
223- then $acc423832414
224- else {
225- let $acc523832414 = isSymbolC($acc423832414, $list23832414[4])
226- if (($size23832414 == 5))
227- then $acc523832414
228- else {
229- let $acc623832414 = isSymbolC($acc523832414, $list23832414[5])
230- if (($size23832414 == 6))
231- then $acc623832414
232- else {
233- let $acc723832414 = isSymbolC($acc623832414, $list23832414[6])
234- if (($size23832414 == 7))
235- then $acc723832414
236- else {
237- let $acc823832414 = isSymbolC($acc723832414, $list23832414[7])
238- if (($size23832414 == 8))
239- then $acc823832414
240- else {
241- let $acc923832414 = isSymbolC($acc823832414, $list23832414[8])
242- throw("List size exceed 8")
243- }
244- }
245- }
246- }
247- }
248- }
249- }
250- }
251- }
252- }) + "C"))) + getAmountOrClear((toString({
253- let $list24532484 = genotype
254- let $size24532484 = size($list24532484)
255- let $acc024532484 = 0
256- if (($size24532484 == 0))
257- then $acc024532484
258- else {
259- let $acc124532484 = isSymbolD($acc024532484, $list24532484[0])
260- if (($size24532484 == 1))
261- then $acc124532484
262- else {
263- let $acc224532484 = isSymbolD($acc124532484, $list24532484[1])
264- if (($size24532484 == 2))
265- then $acc224532484
266- else {
267- let $acc324532484 = isSymbolD($acc224532484, $list24532484[2])
268- if (($size24532484 == 3))
269- then $acc324532484
270- else {
271- let $acc424532484 = isSymbolD($acc324532484, $list24532484[3])
272- if (($size24532484 == 4))
273- then $acc424532484
274- else {
275- let $acc524532484 = isSymbolD($acc424532484, $list24532484[4])
276- if (($size24532484 == 5))
277- then $acc524532484
278- else {
279- let $acc624532484 = isSymbolD($acc524532484, $list24532484[5])
280- if (($size24532484 == 6))
281- then $acc624532484
282- else {
283- let $acc724532484 = isSymbolD($acc624532484, $list24532484[6])
284- if (($size24532484 == 7))
285- then $acc724532484
286- else {
287- let $acc824532484 = isSymbolD($acc724532484, $list24532484[7])
288- if (($size24532484 == 8))
289- then $acc824532484
290- else {
291- let $acc924532484 = isSymbolD($acc824532484, $list24532484[8])
292- throw("List size exceed 8")
293- }
294- }
295- }
296- }
297- }
298- }
299- }
300- }
301- }
302- }) + "D"))) + getAmountOrClear((toString({
303- let $list25212552 = genotype
304- let $size25212552 = size($list25212552)
305- let $acc025212552 = 0
306- if (($size25212552 == 0))
307- then $acc025212552
308- else {
309- let $acc125212552 = isSymbolE($acc025212552, $list25212552[0])
310- if (($size25212552 == 1))
311- then $acc125212552
312- else {
313- let $acc225212552 = isSymbolE($acc125212552, $list25212552[1])
314- if (($size25212552 == 2))
315- then $acc225212552
316- else {
317- let $acc325212552 = isSymbolE($acc225212552, $list25212552[2])
318- if (($size25212552 == 3))
319- then $acc325212552
320- else {
321- let $acc425212552 = isSymbolE($acc325212552, $list25212552[3])
322- if (($size25212552 == 4))
323- then $acc425212552
324- else {
325- let $acc525212552 = isSymbolE($acc425212552, $list25212552[4])
326- if (($size25212552 == 5))
327- then $acc525212552
328- else {
329- let $acc625212552 = isSymbolE($acc525212552, $list25212552[5])
330- if (($size25212552 == 6))
331- then $acc625212552
332- else {
333- let $acc725212552 = isSymbolE($acc625212552, $list25212552[6])
334- if (($size25212552 == 7))
335- then $acc725212552
336- else {
337- let $acc825212552 = isSymbolE($acc725212552, $list25212552[7])
338- if (($size25212552 == 8))
339- then $acc825212552
340- else {
341- let $acc925212552 = isSymbolE($acc825212552, $list25212552[8])
342- throw("List size exceed 8")
343- }
344- }
345- }
346- }
347- }
348- }
349- }
350- }
351- }
352- }) + "E"))) + getAmountOrClear((toString({
353- let $list25892620 = genotype
354- let $size25892620 = size($list25892620)
355- let $acc025892620 = 0
356- if (($size25892620 == 0))
357- then $acc025892620
358- else {
359- let $acc125892620 = isSymbolF($acc025892620, $list25892620[0])
360- if (($size25892620 == 1))
361- then $acc125892620
362- else {
363- let $acc225892620 = isSymbolF($acc125892620, $list25892620[1])
364- if (($size25892620 == 2))
365- then $acc225892620
366- else {
367- let $acc325892620 = isSymbolF($acc225892620, $list25892620[2])
368- if (($size25892620 == 3))
369- then $acc325892620
370- else {
371- let $acc425892620 = isSymbolF($acc325892620, $list25892620[3])
372- if (($size25892620 == 4))
373- then $acc425892620
374- else {
375- let $acc525892620 = isSymbolF($acc425892620, $list25892620[4])
376- if (($size25892620 == 5))
377- then $acc525892620
378- else {
379- let $acc625892620 = isSymbolF($acc525892620, $list25892620[5])
380- if (($size25892620 == 6))
381- then $acc625892620
382- else {
383- let $acc725892620 = isSymbolF($acc625892620, $list25892620[6])
384- if (($size25892620 == 7))
385- then $acc725892620
386- else {
387- let $acc825892620 = isSymbolF($acc725892620, $list25892620[7])
388- if (($size25892620 == 8))
389- then $acc825892620
390- else {
391- let $acc925892620 = isSymbolF($acc825892620, $list25892620[8])
392- throw("List size exceed 8")
393- }
394- }
395- }
396- }
397- }
398- }
399- }
400- }
401- }
402- }) + "F"))) + getAmountOrClear((toString({
403- let $list26592690 = genotype
404- let $size26592690 = size($list26592690)
405- let $acc026592690 = 0
406- if (($size26592690 == 0))
407- then $acc026592690
408- else {
409- let $acc126592690 = isSymbolG($acc026592690, $list26592690[0])
410- if (($size26592690 == 1))
411- then $acc126592690
412- else {
413- let $acc226592690 = isSymbolG($acc126592690, $list26592690[1])
414- if (($size26592690 == 2))
415- then $acc226592690
416- else {
417- let $acc326592690 = isSymbolG($acc226592690, $list26592690[2])
418- if (($size26592690 == 3))
419- then $acc326592690
420- else {
421- let $acc426592690 = isSymbolG($acc326592690, $list26592690[3])
422- if (($size26592690 == 4))
423- then $acc426592690
424- else {
425- let $acc526592690 = isSymbolG($acc426592690, $list26592690[4])
426- if (($size26592690 == 5))
427- then $acc526592690
428- else {
429- let $acc626592690 = isSymbolG($acc526592690, $list26592690[5])
430- if (($size26592690 == 6))
431- then $acc626592690
432- else {
433- let $acc726592690 = isSymbolG($acc626592690, $list26592690[6])
434- if (($size26592690 == 7))
435- then $acc726592690
436- else {
437- let $acc826592690 = isSymbolG($acc726592690, $list26592690[7])
438- if (($size26592690 == 8))
439- then $acc826592690
440- else {
441- let $acc926592690 = isSymbolG($acc826592690, $list26592690[8])
442- throw("List size exceed 8")
443- }
444- }
445- }
446- }
447- }
448- }
449- }
450- }
451- }
452- }) + "G"))) + getAmountOrClear((toString({
453- let $list27272758 = genotype
454- let $size27272758 = size($list27272758)
455- let $acc027272758 = 0
456- if (($size27272758 == 0))
457- then $acc027272758
458- else {
459- let $acc127272758 = isSymbolH($acc027272758, $list27272758[0])
460- if (($size27272758 == 1))
461- then $acc127272758
462- else {
463- let $acc227272758 = isSymbolH($acc127272758, $list27272758[1])
464- if (($size27272758 == 2))
465- then $acc227272758
466- else {
467- let $acc327272758 = isSymbolH($acc227272758, $list27272758[2])
468- if (($size27272758 == 3))
469- then $acc327272758
470- else {
471- let $acc427272758 = isSymbolH($acc327272758, $list27272758[3])
472- if (($size27272758 == 4))
473- then $acc427272758
474- else {
475- let $acc527272758 = isSymbolH($acc427272758, $list27272758[4])
476- if (($size27272758 == 5))
477- then $acc527272758
478- else {
479- let $acc627272758 = isSymbolH($acc527272758, $list27272758[5])
480- if (($size27272758 == 6))
481- then $acc627272758
482- else {
483- let $acc727272758 = isSymbolH($acc627272758, $list27272758[6])
484- if (($size27272758 == 7))
485- then $acc727272758
486- else {
487- let $acc827272758 = isSymbolH($acc727272758, $list27272758[7])
488- if (($size27272758 == 8))
489- then $acc827272758
490- else {
491- let $acc927272758 = isSymbolH($acc827272758, $list27272758[8])
492- throw("List size exceed 8")
493- }
494- }
495- }
496- }
497- }
498- }
499- }
500- }
501- }
502- }) + "H")))
503- }
504-
505-
50669 func getAssetOrigin (generation) = if ((generation == "G"))
507- then incubatorAddress
508- else breederAddress
70+ then getIncubatorAddress()
71+ else getBreederAddress()
50972
51073
51174 func getAssetRarity (genotype,generation) = {
512- let quantity = getIntegerValue(Address(getAssetOrigin(generation)), (("stats_" + genotype) + "_quantity"))
75+ let quantity = getIntegerValue(getAssetOrigin(generation), (("stats_" + genotype) + "_quantity"))
51376 let power = pow((10000 / quantity), 4, 5, 1, 2, FLOOR)
51477 if ((power > 0))
51578 then power
51780 }
51881
51982
520-func getAssetFarmingPower (assetId) = if (if ((value(assetInfo(assetId)).issuer == Address(breederAddress)))
83+func getAssetFarmingPower (assetId) = if (if ((value(assetInfo(assetId)).issuer == getBreederAddress()))
52184 then true
522- else (value(assetInfo(assetId)).issuer == Address(incubatorAddress)))
85+ else (value(assetInfo(assetId)).issuer == getIncubatorAddress()))
52386 then {
52487 let assetName = value(assetInfo(assetId)).name
52588 let generation = take(takeRight(assetName, 2), 1)
526- let gen = ((getGen(assetName) + "-") + generation)
527- $Tuple2(gen, getAssetRarity(gen, generation))
89+ let farmGen = asString(invoke(getBreederAddress(), "getGenFromName", [assetName], nil))
90+ if ((farmGen == farmGen))
91+ then $Tuple2(farmGen, getAssetRarity(farmGen, generation))
92+ else throw("Strict value is not equal to itself.")
52893 }
52994 else throw("not valid NFT")
53095
542107 if ((phoenixRandom == 1))
543108 then "phoenix"
544109 else {
545- let n = getRandomNumber(10, tx, finishHeight, 0)
546- if ((3 > n))
547- then "gone"
548- else if ((5 > n))
549- then "duckling"
550- else if ((n == 5))
551- then "perch_Y"
552- else if ((n == 6))
553- then "perch_G"
554- else if ((n == 7))
555- then "perch_B"
556- else if ((n == 8))
557- then "perch_R"
558- else "incubator"
110+ let n = getRandomNumber(1000, tx, finishHeight, 0)
111+ if ((n == 1))
112+ then "item_ART-FREEGENE"
113+ else if ((145 > n))
114+ then "duckling_20"
115+ else if ((195 > n))
116+ then "duckling_40"
117+ else if ((200 > n))
118+ then "duckling_80"
119+ else if ((300 > n))
120+ then "incubator"
121+ else if ((400 > n))
122+ then "perch_Y"
123+ else if ((500 > n))
124+ then "perch_G"
125+ else if ((600 > n))
126+ then "perch_B"
127+ else if ((700 > n))
128+ then "perch_R"
129+ else if ((849 > n))
130+ then "mantle_2"
131+ else if ((850 > n))
132+ then "mantle_40"
133+ else if ((930 > n))
134+ then "mantle_3"
135+ else if ((980 > n))
136+ then "mantle_5"
137+ else "mantle_10"
559138 }
560139 }
561140
566145 if (if ((generation == "G"))
567146 then true
568147 else (generation == "J"))
569- then incubatorAddress
570- else breederAddress
148+ then getIncubatorAddress()
149+ else getBreederAddress()
571150 }
572151
573152
153+func asInt (value) = match value {
154+ case int: Int =>
155+ int
156+ case _ =>
157+ throw("FAI: wrong type, expected: Int")
158+}
159+
160+
574161 @Callable(i)
575-func initRebirth () = if ((isLocked() > 0))
576- then throw("EGG operations are temporarily locked")
577- else {
578- let assetId = value(i.payments[0].assetId)
579- let initTx = toBase58String(i.transactionId)
580- let address = toString(i.caller)
581- let feePayment = value(i.payments[1])
582- if ((feePayment.assetId != eggsAssetId))
583- then throw("You need to attach EGG tokens as fee")
584- else if ((feeAmount > feePayment.amount))
585- then throw(("You need to attach the following amount of EGG tokens as fee: 0." + toString(feeAmount)))
586- else {
587- let $t053795428 = getAssetFarmingPower(assetId)
588- let gen = $t053795428._1
589- let rarity = $t053795428._2
590- let call = invoke(Address(getOrigin(assetId)), "reduceRarity", [toBase58String(assetId), gen], nil)
591- if ((call == call))
592- then [IntegerEntry((((("address_" + address) + "_initTx_") + initTx) + "_finishBlock"), (height + delayForHatching)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_status"), "open"), IntegerEntry((((("address_" + address) + "_initTx_") + initTx) + "_assetRarity"), rarity), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_assetId"), toBase58String(assetId))]
162+func configureOracle (oracle) = if ((i.caller != this))
163+ then throw("RCU: admin only")
164+ else [StringEntry("static_oracleAddress", oracle)]
165+
166+
167+
168+@Callable(i)
169+func initRebirth () = {
170+ let pmt = i.payments[0]
171+ let assetId = value(pmt.assetId)
172+ let initTx = toBase58String(i.transactionId)
173+ let address = toString(i.caller)
174+ if ((pmt.amount != 1))
175+ then throw("NFT is not attached")
176+ else {
177+ let amountPaidByCoupons = asInt(invoke(getCouponsAddress(), "useCoupons", [feeAmount], nil))
178+ if ((amountPaidByCoupons == amountPaidByCoupons))
179+ then {
180+ let leftToPay = (feeAmount - amountPaidByCoupons)
181+ let payment = if ((leftToPay != 0))
182+ then {
183+ let feePayment = value(i.payments[1])
184+ if ((feePayment.assetId != getEggAssetId()))
185+ then throw("You need to attach EGG tokens as fee")
186+ else if ((leftToPay > feePayment.amount))
187+ then throw(("You need to attach the following amount of EGG tokens as fee: 0." + toString(leftToPay)))
188+ else leftToPay
189+ }
190+ else 0
191+ if ((payment == payment))
192+ then {
193+ let $t054965545 = getAssetFarmingPower(assetId)
194+ let gen = $t054965545._1
195+ let rarity = $t054965545._2
196+ let call = invoke(getOrigin(assetId), "reduceRarity", [toBase58String(assetId), gen], nil)
197+ if ((call == call))
198+ then [IntegerEntry((((("address_" + address) + "_initTx_") + initTx) + "_finishBlock"), (height + delayForHatching)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_status"), "open"), IntegerEntry((((("address_" + address) + "_initTx_") + initTx) + "_assetRarity"), rarity), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_assetId"), toBase58String(assetId))]
199+ else throw("Strict value is not equal to itself.")
200+ }
593201 else throw("Strict value is not equal to itself.")
594202 }
595- }
203+ else throw("Strict value is not equal to itself.")
204+ }
205+ }
596206
597207
598208
612222 let result = if ((indexOf(win, "perch") != unit))
613223 then {
614224 let color = takeRight(win, 1)
615- let call = invoke(Address(farmingAddress), "addFreePerch", [address, color], nil)
225+ let call = invoke(getFarmingAddress(), "addFreePerch", [address, color], nil)
616226 if ((call == call))
617227 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
618228 else throw("Strict value is not equal to itself.")
619229 }
620230 else if ((win == "incubator"))
621231 then {
622- let call = invoke(Address(incubatorAddress), "issueFreeDuck", [address, txId], nil)
232+ let call = invoke(getIncubatorAddress(), "issueFreeDuck", [address, txId], nil)
623233 if ((call == call))
624234 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
625235 else throw("Strict value is not equal to itself.")
626236 }
627237 else if ((win == "phoenix"))
628238 then {
629- let call = invoke(Address(incubatorAddress), "issueJackpot", [address, txId, "WWWWWWWP"], nil)
239+ let call = invoke(getIncubatorAddress(), "issueJackpot", [address, txId, "WWWWWWWP"], nil)
630240 if ((call == call))
631241 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
632242 else throw("Strict value is not equal to itself.")
633243 }
634- else if ((win == "duckling"))
244+ else if ((indexOf(win, "duckling") != unit))
635245 then {
636- let call = invoke(Address(ducklingAddress), "issueFreeDuckling", [address, txId], nil)
246+ let level = asInt(split(win, "_")[1])
247+ let call = invoke(getBabyDuckAddress(), "issueFreeDuckling", [address, txId, level], nil)
637248 if ((call == call))
638249 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
639250 else throw("Strict value is not equal to itself.")
640251 }
641- else [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), "")]
252+ else if ((indexOf(win, "mantle") != unit))
253+ then {
254+ let level = asInt(split(win, "_")[1])
255+ let call = invoke(getGameDappAddress(), "issueFreeMantle", [address, "mantle", level], nil)
256+ if ((call == call))
257+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
258+ else throw("Strict value is not equal to itself.")
259+ }
260+ else if ((indexOf(win, "item") != unit))
261+ then {
262+ let itemName = asString(split(win, "_")[1])
263+ let call = invoke(getItemsAddress(), "issueArtefact", [itemName, address], nil)
264+ if ((call == call))
265+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
266+ else throw("Strict value is not equal to itself.")
267+ }
268+ else throw("RFB: Some error occured, please contact the admins!")
642269 (result ++ [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win"), win), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_status"), "finish")])
643270 }
644271 }
645272
646273
647-@Verifier(tx)
648-func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
649-
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let eggsAssetId = base58'3v7zGkeHS6KrsvmTRzEzvCxm5cdzkCtM7z5cM6efcjCB'
4+func tryGetStringExternal (address,key) = match getString(address, key) {
5+ case a: String =>
6+ a
7+ case _ =>
8+ ""
9+}
510
6-let feeAmount = (50 * 1000000)
711
8-let delayForHatching = 0
12+func tryGetString (key) = tryGetStringExternal(this, key)
913
10-let incubatorAddress = base58'3P6TwNU39Ykkbeqhn5TE4a2736xsA1vXemM'
1114
12-let breederAddress = base58'3P9REuLBnYBafDqtEu6hfzs2Rv2haSU158y'
15+let delayForHatching = 2
1316
14-let farmingAddress = base58'3PH75p2rmMKCV2nyW4TsAdFgFtmc61mJaqA'
17+func getOracle () = Address(fromBase58String(tryGetString("static_oracleAddress")))
1518
16-let ducklingAddress = base58'3PKwLVb8jYk58oYbfXxs2dUjD3YEKeqGWrX'
19+
20+func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), "static_eggAssetId"))
21+
22+
23+func getIncubatorAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_incubatorAddress")))
24+
25+
26+func getBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_breederAddress")))
27+
28+
29+func getFarmingAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_farmingAddress")))
30+
31+
32+func getBabyDuckAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_babyDuckAddress")))
33+
34+
35+func getGameDappAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_gameDappAddress")))
36+
37+
38+func getItemsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_itemsAddress")))
39+
40+
41+func getCouponsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_couponsAddress")))
42+
1743
1844 let PHOENIXBASEOPTIONS = 1000
19-
20-func isLocked () = {
21- let masterAddress = Address(base58'3PEPftf2kWZDmAaWBjs6BUJa9957kiA2PkU')
22- match getInteger(masterAddress, "egglock") {
23- case b: Int =>
24- b
25- case _ =>
26- 0
27- }
28- }
29-
3045
3146 func tryGetInteger (key) = match getInteger(this, key) {
3247 case b: Int =>
3348 b
3449 case _ =>
3550 0
3651 }
3752
3853
3954 func asString (value) = match value {
4055 case s: String =>
4156 s
4257 case _ =>
4358 throw("wrong type, expected: String")
4459 }
4560
4661
47-func tryGetString (key) = match getString(this, key) {
48- case a: String =>
49- a
50- case _ =>
51- ""
52-}
53-
54-
55-func isSymbolA (accumulated,sym) = if ((sym == "A"))
56- then (accumulated + 1)
57- else (accumulated + 0)
58-
59-
60-func isSymbolB (accumulated,sym) = if ((sym == "B"))
61- then (accumulated + 1)
62- else (accumulated + 0)
63-
64-
65-func isSymbolC (accumulated,sym) = if ((sym == "C"))
66- then (accumulated + 1)
67- else (accumulated + 0)
68-
69-
70-func isSymbolD (accumulated,sym) = if ((sym == "D"))
71- then (accumulated + 1)
72- else (accumulated + 0)
73-
74-
75-func isSymbolE (accumulated,sym) = if ((sym == "E"))
76- then (accumulated + 1)
77- else (accumulated + 0)
78-
79-
80-func isSymbolF (accumulated,sym) = if ((sym == "F"))
81- then (accumulated + 1)
82- else (accumulated + 0)
83-
84-
85-func isSymbolG (accumulated,sym) = if ((sym == "G"))
86- then (accumulated + 1)
87- else (accumulated + 0)
88-
89-
90-func isSymbolH (accumulated,sym) = if ((sym == "H"))
91- then (accumulated + 1)
92- else (accumulated + 0)
93-
62+let feeAmount = tryGetInteger("currentPrice")
9463
9564 func getAmountOrClear (amount) = if (contains(amount, "0"))
9665 then ""
9766 else amount
9867
9968
100-func getGen (assetName) = {
101- let genotype = split(dropRight(drop(assetName, 5), 3), "")
102- (((((((getAmountOrClear((toString({
103- let $list22472278 = genotype
104- let $size22472278 = size($list22472278)
105- let $acc022472278 = 0
106- if (($size22472278 == 0))
107- then $acc022472278
108- else {
109- let $acc122472278 = isSymbolA($acc022472278, $list22472278[0])
110- if (($size22472278 == 1))
111- then $acc122472278
112- else {
113- let $acc222472278 = isSymbolA($acc122472278, $list22472278[1])
114- if (($size22472278 == 2))
115- then $acc222472278
116- else {
117- let $acc322472278 = isSymbolA($acc222472278, $list22472278[2])
118- if (($size22472278 == 3))
119- then $acc322472278
120- else {
121- let $acc422472278 = isSymbolA($acc322472278, $list22472278[3])
122- if (($size22472278 == 4))
123- then $acc422472278
124- else {
125- let $acc522472278 = isSymbolA($acc422472278, $list22472278[4])
126- if (($size22472278 == 5))
127- then $acc522472278
128- else {
129- let $acc622472278 = isSymbolA($acc522472278, $list22472278[5])
130- if (($size22472278 == 6))
131- then $acc622472278
132- else {
133- let $acc722472278 = isSymbolA($acc622472278, $list22472278[6])
134- if (($size22472278 == 7))
135- then $acc722472278
136- else {
137- let $acc822472278 = isSymbolA($acc722472278, $list22472278[7])
138- if (($size22472278 == 8))
139- then $acc822472278
140- else {
141- let $acc922472278 = isSymbolA($acc822472278, $list22472278[8])
142- throw("List size exceed 8")
143- }
144- }
145- }
146- }
147- }
148- }
149- }
150- }
151- }
152- }) + "A")) + getAmountOrClear((toString({
153- let $list23152346 = genotype
154- let $size23152346 = size($list23152346)
155- let $acc023152346 = 0
156- if (($size23152346 == 0))
157- then $acc023152346
158- else {
159- let $acc123152346 = isSymbolB($acc023152346, $list23152346[0])
160- if (($size23152346 == 1))
161- then $acc123152346
162- else {
163- let $acc223152346 = isSymbolB($acc123152346, $list23152346[1])
164- if (($size23152346 == 2))
165- then $acc223152346
166- else {
167- let $acc323152346 = isSymbolB($acc223152346, $list23152346[2])
168- if (($size23152346 == 3))
169- then $acc323152346
170- else {
171- let $acc423152346 = isSymbolB($acc323152346, $list23152346[3])
172- if (($size23152346 == 4))
173- then $acc423152346
174- else {
175- let $acc523152346 = isSymbolB($acc423152346, $list23152346[4])
176- if (($size23152346 == 5))
177- then $acc523152346
178- else {
179- let $acc623152346 = isSymbolB($acc523152346, $list23152346[5])
180- if (($size23152346 == 6))
181- then $acc623152346
182- else {
183- let $acc723152346 = isSymbolB($acc623152346, $list23152346[6])
184- if (($size23152346 == 7))
185- then $acc723152346
186- else {
187- let $acc823152346 = isSymbolB($acc723152346, $list23152346[7])
188- if (($size23152346 == 8))
189- then $acc823152346
190- else {
191- let $acc923152346 = isSymbolB($acc823152346, $list23152346[8])
192- throw("List size exceed 8")
193- }
194- }
195- }
196- }
197- }
198- }
199- }
200- }
201- }
202- }) + "B"))) + getAmountOrClear((toString({
203- let $list23832414 = genotype
204- let $size23832414 = size($list23832414)
205- let $acc023832414 = 0
206- if (($size23832414 == 0))
207- then $acc023832414
208- else {
209- let $acc123832414 = isSymbolC($acc023832414, $list23832414[0])
210- if (($size23832414 == 1))
211- then $acc123832414
212- else {
213- let $acc223832414 = isSymbolC($acc123832414, $list23832414[1])
214- if (($size23832414 == 2))
215- then $acc223832414
216- else {
217- let $acc323832414 = isSymbolC($acc223832414, $list23832414[2])
218- if (($size23832414 == 3))
219- then $acc323832414
220- else {
221- let $acc423832414 = isSymbolC($acc323832414, $list23832414[3])
222- if (($size23832414 == 4))
223- then $acc423832414
224- else {
225- let $acc523832414 = isSymbolC($acc423832414, $list23832414[4])
226- if (($size23832414 == 5))
227- then $acc523832414
228- else {
229- let $acc623832414 = isSymbolC($acc523832414, $list23832414[5])
230- if (($size23832414 == 6))
231- then $acc623832414
232- else {
233- let $acc723832414 = isSymbolC($acc623832414, $list23832414[6])
234- if (($size23832414 == 7))
235- then $acc723832414
236- else {
237- let $acc823832414 = isSymbolC($acc723832414, $list23832414[7])
238- if (($size23832414 == 8))
239- then $acc823832414
240- else {
241- let $acc923832414 = isSymbolC($acc823832414, $list23832414[8])
242- throw("List size exceed 8")
243- }
244- }
245- }
246- }
247- }
248- }
249- }
250- }
251- }
252- }) + "C"))) + getAmountOrClear((toString({
253- let $list24532484 = genotype
254- let $size24532484 = size($list24532484)
255- let $acc024532484 = 0
256- if (($size24532484 == 0))
257- then $acc024532484
258- else {
259- let $acc124532484 = isSymbolD($acc024532484, $list24532484[0])
260- if (($size24532484 == 1))
261- then $acc124532484
262- else {
263- let $acc224532484 = isSymbolD($acc124532484, $list24532484[1])
264- if (($size24532484 == 2))
265- then $acc224532484
266- else {
267- let $acc324532484 = isSymbolD($acc224532484, $list24532484[2])
268- if (($size24532484 == 3))
269- then $acc324532484
270- else {
271- let $acc424532484 = isSymbolD($acc324532484, $list24532484[3])
272- if (($size24532484 == 4))
273- then $acc424532484
274- else {
275- let $acc524532484 = isSymbolD($acc424532484, $list24532484[4])
276- if (($size24532484 == 5))
277- then $acc524532484
278- else {
279- let $acc624532484 = isSymbolD($acc524532484, $list24532484[5])
280- if (($size24532484 == 6))
281- then $acc624532484
282- else {
283- let $acc724532484 = isSymbolD($acc624532484, $list24532484[6])
284- if (($size24532484 == 7))
285- then $acc724532484
286- else {
287- let $acc824532484 = isSymbolD($acc724532484, $list24532484[7])
288- if (($size24532484 == 8))
289- then $acc824532484
290- else {
291- let $acc924532484 = isSymbolD($acc824532484, $list24532484[8])
292- throw("List size exceed 8")
293- }
294- }
295- }
296- }
297- }
298- }
299- }
300- }
301- }
302- }) + "D"))) + getAmountOrClear((toString({
303- let $list25212552 = genotype
304- let $size25212552 = size($list25212552)
305- let $acc025212552 = 0
306- if (($size25212552 == 0))
307- then $acc025212552
308- else {
309- let $acc125212552 = isSymbolE($acc025212552, $list25212552[0])
310- if (($size25212552 == 1))
311- then $acc125212552
312- else {
313- let $acc225212552 = isSymbolE($acc125212552, $list25212552[1])
314- if (($size25212552 == 2))
315- then $acc225212552
316- else {
317- let $acc325212552 = isSymbolE($acc225212552, $list25212552[2])
318- if (($size25212552 == 3))
319- then $acc325212552
320- else {
321- let $acc425212552 = isSymbolE($acc325212552, $list25212552[3])
322- if (($size25212552 == 4))
323- then $acc425212552
324- else {
325- let $acc525212552 = isSymbolE($acc425212552, $list25212552[4])
326- if (($size25212552 == 5))
327- then $acc525212552
328- else {
329- let $acc625212552 = isSymbolE($acc525212552, $list25212552[5])
330- if (($size25212552 == 6))
331- then $acc625212552
332- else {
333- let $acc725212552 = isSymbolE($acc625212552, $list25212552[6])
334- if (($size25212552 == 7))
335- then $acc725212552
336- else {
337- let $acc825212552 = isSymbolE($acc725212552, $list25212552[7])
338- if (($size25212552 == 8))
339- then $acc825212552
340- else {
341- let $acc925212552 = isSymbolE($acc825212552, $list25212552[8])
342- throw("List size exceed 8")
343- }
344- }
345- }
346- }
347- }
348- }
349- }
350- }
351- }
352- }) + "E"))) + getAmountOrClear((toString({
353- let $list25892620 = genotype
354- let $size25892620 = size($list25892620)
355- let $acc025892620 = 0
356- if (($size25892620 == 0))
357- then $acc025892620
358- else {
359- let $acc125892620 = isSymbolF($acc025892620, $list25892620[0])
360- if (($size25892620 == 1))
361- then $acc125892620
362- else {
363- let $acc225892620 = isSymbolF($acc125892620, $list25892620[1])
364- if (($size25892620 == 2))
365- then $acc225892620
366- else {
367- let $acc325892620 = isSymbolF($acc225892620, $list25892620[2])
368- if (($size25892620 == 3))
369- then $acc325892620
370- else {
371- let $acc425892620 = isSymbolF($acc325892620, $list25892620[3])
372- if (($size25892620 == 4))
373- then $acc425892620
374- else {
375- let $acc525892620 = isSymbolF($acc425892620, $list25892620[4])
376- if (($size25892620 == 5))
377- then $acc525892620
378- else {
379- let $acc625892620 = isSymbolF($acc525892620, $list25892620[5])
380- if (($size25892620 == 6))
381- then $acc625892620
382- else {
383- let $acc725892620 = isSymbolF($acc625892620, $list25892620[6])
384- if (($size25892620 == 7))
385- then $acc725892620
386- else {
387- let $acc825892620 = isSymbolF($acc725892620, $list25892620[7])
388- if (($size25892620 == 8))
389- then $acc825892620
390- else {
391- let $acc925892620 = isSymbolF($acc825892620, $list25892620[8])
392- throw("List size exceed 8")
393- }
394- }
395- }
396- }
397- }
398- }
399- }
400- }
401- }
402- }) + "F"))) + getAmountOrClear((toString({
403- let $list26592690 = genotype
404- let $size26592690 = size($list26592690)
405- let $acc026592690 = 0
406- if (($size26592690 == 0))
407- then $acc026592690
408- else {
409- let $acc126592690 = isSymbolG($acc026592690, $list26592690[0])
410- if (($size26592690 == 1))
411- then $acc126592690
412- else {
413- let $acc226592690 = isSymbolG($acc126592690, $list26592690[1])
414- if (($size26592690 == 2))
415- then $acc226592690
416- else {
417- let $acc326592690 = isSymbolG($acc226592690, $list26592690[2])
418- if (($size26592690 == 3))
419- then $acc326592690
420- else {
421- let $acc426592690 = isSymbolG($acc326592690, $list26592690[3])
422- if (($size26592690 == 4))
423- then $acc426592690
424- else {
425- let $acc526592690 = isSymbolG($acc426592690, $list26592690[4])
426- if (($size26592690 == 5))
427- then $acc526592690
428- else {
429- let $acc626592690 = isSymbolG($acc526592690, $list26592690[5])
430- if (($size26592690 == 6))
431- then $acc626592690
432- else {
433- let $acc726592690 = isSymbolG($acc626592690, $list26592690[6])
434- if (($size26592690 == 7))
435- then $acc726592690
436- else {
437- let $acc826592690 = isSymbolG($acc726592690, $list26592690[7])
438- if (($size26592690 == 8))
439- then $acc826592690
440- else {
441- let $acc926592690 = isSymbolG($acc826592690, $list26592690[8])
442- throw("List size exceed 8")
443- }
444- }
445- }
446- }
447- }
448- }
449- }
450- }
451- }
452- }) + "G"))) + getAmountOrClear((toString({
453- let $list27272758 = genotype
454- let $size27272758 = size($list27272758)
455- let $acc027272758 = 0
456- if (($size27272758 == 0))
457- then $acc027272758
458- else {
459- let $acc127272758 = isSymbolH($acc027272758, $list27272758[0])
460- if (($size27272758 == 1))
461- then $acc127272758
462- else {
463- let $acc227272758 = isSymbolH($acc127272758, $list27272758[1])
464- if (($size27272758 == 2))
465- then $acc227272758
466- else {
467- let $acc327272758 = isSymbolH($acc227272758, $list27272758[2])
468- if (($size27272758 == 3))
469- then $acc327272758
470- else {
471- let $acc427272758 = isSymbolH($acc327272758, $list27272758[3])
472- if (($size27272758 == 4))
473- then $acc427272758
474- else {
475- let $acc527272758 = isSymbolH($acc427272758, $list27272758[4])
476- if (($size27272758 == 5))
477- then $acc527272758
478- else {
479- let $acc627272758 = isSymbolH($acc527272758, $list27272758[5])
480- if (($size27272758 == 6))
481- then $acc627272758
482- else {
483- let $acc727272758 = isSymbolH($acc627272758, $list27272758[6])
484- if (($size27272758 == 7))
485- then $acc727272758
486- else {
487- let $acc827272758 = isSymbolH($acc727272758, $list27272758[7])
488- if (($size27272758 == 8))
489- then $acc827272758
490- else {
491- let $acc927272758 = isSymbolH($acc827272758, $list27272758[8])
492- throw("List size exceed 8")
493- }
494- }
495- }
496- }
497- }
498- }
499- }
500- }
501- }
502- }) + "H")))
503- }
504-
505-
50669 func getAssetOrigin (generation) = if ((generation == "G"))
507- then incubatorAddress
508- else breederAddress
70+ then getIncubatorAddress()
71+ else getBreederAddress()
50972
51073
51174 func getAssetRarity (genotype,generation) = {
512- let quantity = getIntegerValue(Address(getAssetOrigin(generation)), (("stats_" + genotype) + "_quantity"))
75+ let quantity = getIntegerValue(getAssetOrigin(generation), (("stats_" + genotype) + "_quantity"))
51376 let power = pow((10000 / quantity), 4, 5, 1, 2, FLOOR)
51477 if ((power > 0))
51578 then power
51679 else 2
51780 }
51881
51982
520-func getAssetFarmingPower (assetId) = if (if ((value(assetInfo(assetId)).issuer == Address(breederAddress)))
83+func getAssetFarmingPower (assetId) = if (if ((value(assetInfo(assetId)).issuer == getBreederAddress()))
52184 then true
522- else (value(assetInfo(assetId)).issuer == Address(incubatorAddress)))
85+ else (value(assetInfo(assetId)).issuer == getIncubatorAddress()))
52386 then {
52487 let assetName = value(assetInfo(assetId)).name
52588 let generation = take(takeRight(assetName, 2), 1)
526- let gen = ((getGen(assetName) + "-") + generation)
527- $Tuple2(gen, getAssetRarity(gen, generation))
89+ let farmGen = asString(invoke(getBreederAddress(), "getGenFromName", [assetName], nil))
90+ if ((farmGen == farmGen))
91+ then $Tuple2(farmGen, getAssetRarity(farmGen, generation))
92+ else throw("Strict value is not equal to itself.")
52893 }
52994 else throw("not valid NFT")
53095
53196
53297 func getRandomNumber (options,txId,hatchingFinishHeight,offset) = {
53398 let randomSeedBlock = value(blockInfoByHeight((hatchingFinishHeight - 1)))
53499 let randomHash = sha256((txId + value(randomSeedBlock.vrf)))
535100 (toInt(randomHash, (offset * 8)) % options)
536101 }
537102
538103
539104 func getRandomWin (tx,finishHeight,assetRarity) = {
540105 let phoenixOptions = (PHOENIXBASEOPTIONS - fraction((PHOENIXBASEOPTIONS / 2), assetRarity, 100))
541106 let phoenixRandom = getRandomNumber(phoenixOptions, tx, finishHeight, 1)
542107 if ((phoenixRandom == 1))
543108 then "phoenix"
544109 else {
545- let n = getRandomNumber(10, tx, finishHeight, 0)
546- if ((3 > n))
547- then "gone"
548- else if ((5 > n))
549- then "duckling"
550- else if ((n == 5))
551- then "perch_Y"
552- else if ((n == 6))
553- then "perch_G"
554- else if ((n == 7))
555- then "perch_B"
556- else if ((n == 8))
557- then "perch_R"
558- else "incubator"
110+ let n = getRandomNumber(1000, tx, finishHeight, 0)
111+ if ((n == 1))
112+ then "item_ART-FREEGENE"
113+ else if ((145 > n))
114+ then "duckling_20"
115+ else if ((195 > n))
116+ then "duckling_40"
117+ else if ((200 > n))
118+ then "duckling_80"
119+ else if ((300 > n))
120+ then "incubator"
121+ else if ((400 > n))
122+ then "perch_Y"
123+ else if ((500 > n))
124+ then "perch_G"
125+ else if ((600 > n))
126+ then "perch_B"
127+ else if ((700 > n))
128+ then "perch_R"
129+ else if ((849 > n))
130+ then "mantle_2"
131+ else if ((850 > n))
132+ then "mantle_40"
133+ else if ((930 > n))
134+ then "mantle_3"
135+ else if ((980 > n))
136+ then "mantle_5"
137+ else "mantle_10"
559138 }
560139 }
561140
562141
563142 func getOrigin (assetId) = {
564143 let assetName = value(assetInfo(assetId)).name
565144 let generation = take(takeRight(assetName, 2), 1)
566145 if (if ((generation == "G"))
567146 then true
568147 else (generation == "J"))
569- then incubatorAddress
570- else breederAddress
148+ then getIncubatorAddress()
149+ else getBreederAddress()
571150 }
572151
573152
153+func asInt (value) = match value {
154+ case int: Int =>
155+ int
156+ case _ =>
157+ throw("FAI: wrong type, expected: Int")
158+}
159+
160+
574161 @Callable(i)
575-func initRebirth () = if ((isLocked() > 0))
576- then throw("EGG operations are temporarily locked")
577- else {
578- let assetId = value(i.payments[0].assetId)
579- let initTx = toBase58String(i.transactionId)
580- let address = toString(i.caller)
581- let feePayment = value(i.payments[1])
582- if ((feePayment.assetId != eggsAssetId))
583- then throw("You need to attach EGG tokens as fee")
584- else if ((feeAmount > feePayment.amount))
585- then throw(("You need to attach the following amount of EGG tokens as fee: 0." + toString(feeAmount)))
586- else {
587- let $t053795428 = getAssetFarmingPower(assetId)
588- let gen = $t053795428._1
589- let rarity = $t053795428._2
590- let call = invoke(Address(getOrigin(assetId)), "reduceRarity", [toBase58String(assetId), gen], nil)
591- if ((call == call))
592- then [IntegerEntry((((("address_" + address) + "_initTx_") + initTx) + "_finishBlock"), (height + delayForHatching)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_status"), "open"), IntegerEntry((((("address_" + address) + "_initTx_") + initTx) + "_assetRarity"), rarity), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_assetId"), toBase58String(assetId))]
162+func configureOracle (oracle) = if ((i.caller != this))
163+ then throw("RCU: admin only")
164+ else [StringEntry("static_oracleAddress", oracle)]
165+
166+
167+
168+@Callable(i)
169+func initRebirth () = {
170+ let pmt = i.payments[0]
171+ let assetId = value(pmt.assetId)
172+ let initTx = toBase58String(i.transactionId)
173+ let address = toString(i.caller)
174+ if ((pmt.amount != 1))
175+ then throw("NFT is not attached")
176+ else {
177+ let amountPaidByCoupons = asInt(invoke(getCouponsAddress(), "useCoupons", [feeAmount], nil))
178+ if ((amountPaidByCoupons == amountPaidByCoupons))
179+ then {
180+ let leftToPay = (feeAmount - amountPaidByCoupons)
181+ let payment = if ((leftToPay != 0))
182+ then {
183+ let feePayment = value(i.payments[1])
184+ if ((feePayment.assetId != getEggAssetId()))
185+ then throw("You need to attach EGG tokens as fee")
186+ else if ((leftToPay > feePayment.amount))
187+ then throw(("You need to attach the following amount of EGG tokens as fee: 0." + toString(leftToPay)))
188+ else leftToPay
189+ }
190+ else 0
191+ if ((payment == payment))
192+ then {
193+ let $t054965545 = getAssetFarmingPower(assetId)
194+ let gen = $t054965545._1
195+ let rarity = $t054965545._2
196+ let call = invoke(getOrigin(assetId), "reduceRarity", [toBase58String(assetId), gen], nil)
197+ if ((call == call))
198+ then [IntegerEntry((((("address_" + address) + "_initTx_") + initTx) + "_finishBlock"), (height + delayForHatching)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_status"), "open"), IntegerEntry((((("address_" + address) + "_initTx_") + initTx) + "_assetRarity"), rarity), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_assetId"), toBase58String(assetId))]
199+ else throw("Strict value is not equal to itself.")
200+ }
593201 else throw("Strict value is not equal to itself.")
594202 }
595- }
203+ else throw("Strict value is not equal to itself.")
204+ }
205+ }
596206
597207
598208
599209 @Callable(i)
600210 func finishRebirth (initTx) = {
601211 let address = toString(i.caller)
602212 let finishBlock = tryGetInteger((((("address_" + address) + "_initTx_") + initTx) + "_finishBlock"))
603213 let assetRarity = tryGetInteger((((("address_" + address) + "_initTx_") + initTx) + "_assetRarity"))
604214 let status = tryGetString((((("address_" + address) + "_initTx_") + initTx) + "_status"))
605215 if ((status != "open"))
606216 then throw("rebirth is finished or not open")
607217 else if ((finishBlock > height))
608218 then throw("you cannot finish rebirth, yet")
609219 else {
610220 let win = getRandomWin(fromBase58String(initTx), finishBlock, assetRarity)
611221 let txId = initTx
612222 let result = if ((indexOf(win, "perch") != unit))
613223 then {
614224 let color = takeRight(win, 1)
615- let call = invoke(Address(farmingAddress), "addFreePerch", [address, color], nil)
225+ let call = invoke(getFarmingAddress(), "addFreePerch", [address, color], nil)
616226 if ((call == call))
617227 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
618228 else throw("Strict value is not equal to itself.")
619229 }
620230 else if ((win == "incubator"))
621231 then {
622- let call = invoke(Address(incubatorAddress), "issueFreeDuck", [address, txId], nil)
232+ let call = invoke(getIncubatorAddress(), "issueFreeDuck", [address, txId], nil)
623233 if ((call == call))
624234 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
625235 else throw("Strict value is not equal to itself.")
626236 }
627237 else if ((win == "phoenix"))
628238 then {
629- let call = invoke(Address(incubatorAddress), "issueJackpot", [address, txId, "WWWWWWWP"], nil)
239+ let call = invoke(getIncubatorAddress(), "issueJackpot", [address, txId, "WWWWWWWP"], nil)
630240 if ((call == call))
631241 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
632242 else throw("Strict value is not equal to itself.")
633243 }
634- else if ((win == "duckling"))
244+ else if ((indexOf(win, "duckling") != unit))
635245 then {
636- let call = invoke(Address(ducklingAddress), "issueFreeDuckling", [address, txId], nil)
246+ let level = asInt(split(win, "_")[1])
247+ let call = invoke(getBabyDuckAddress(), "issueFreeDuckling", [address, txId, level], nil)
637248 if ((call == call))
638249 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
639250 else throw("Strict value is not equal to itself.")
640251 }
641- else [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), "")]
252+ else if ((indexOf(win, "mantle") != unit))
253+ then {
254+ let level = asInt(split(win, "_")[1])
255+ let call = invoke(getGameDappAddress(), "issueFreeMantle", [address, "mantle", level], nil)
256+ if ((call == call))
257+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
258+ else throw("Strict value is not equal to itself.")
259+ }
260+ else if ((indexOf(win, "item") != unit))
261+ then {
262+ let itemName = asString(split(win, "_")[1])
263+ let call = invoke(getItemsAddress(), "issueArtefact", [itemName, address], nil)
264+ if ((call == call))
265+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
266+ else throw("Strict value is not equal to itself.")
267+ }
268+ else throw("RFB: Some error occured, please contact the admins!")
642269 (result ++ [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win"), win), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_status"), "finish")])
643270 }
644271 }
645272
646273
647-@Verifier(tx)
648-func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
649-

github/deemru/w8io/6500d08 
69.65 ms