tx · 3L62EhKLe8yFSHSsDroBWDUuSbXv9HWGYuwy3GvRDtED 3MxiJLrY6Qa5bSYxxSFHSG5bVV2n59x1MGn: -0.01400000 Waves 2022.05.19 14:51 [2058515] smart account 3MxiJLrY6Qa5bSYxxSFHSG5bVV2n59x1MGn > SELF 0.00000000 Waves
{ "type": 13, "id": "3L62EhKLe8yFSHSsDroBWDUuSbXv9HWGYuwy3GvRDtED", "fee": 1400000, "feeAssetId": null, "timestamp": 1652961109142, "version": 2, "chainId": 84, "sender": "3MxiJLrY6Qa5bSYxxSFHSG5bVV2n59x1MGn", "senderPublicKey": "9M1hAsbWkVP73NKHvZezCkamwZfSdkejc3b8sejqT98D", "proofs": [ "4rCXs8jizK2f8naBbfeLsLXo6eo7UUPNq9jNaJfLUq7MTfqUL38dkaf1oXAAoCuyNw4JvXBK1C5DaRAM1K9dYs78" ], "script": "base64:AAIFAAAAAAAAAAgIAhIECgIBAQAAACIAAAAACXNlcGFyYXRvcgIAAAABXwAAAAANc2hhcmVEZWNpbWFscwAN4Lazp2QAAAAAAAASa2V5Q2hhckN1cnJlbnRMYW5kAgAAABFjaGFyX2N1cnJlbnRfbGFuZAAAAAAfa2V5Q2hhckluaXRpYWxHZW5lcmF0ZWRTdXBwbGllcwIAAAAfY2hhcl9pbml0aWFsX2dlbmVyYXRlZF9zdXBwbGllcwAAAAAQa2V5TGFuZFB5cm9Qb3dlcgIAAAAPbGFuZF9weXJvX3Bvd2VyAAAAABBrZXlMYW5kQXF1YVBvd2VyAgAAAA9sYW5kX2FxdWFfcG93ZXIAAAAAEWtleUxhbmRUZXJyYVBvd2VyAgAAABBsYW5kX3RlcnJhX3Bvd2VyAAAAABBrZXlMYW5kQWVyb1Bvd2VyAgAAAA9sYW5kX2Flcm9fcG93ZXIAAAAAF2tleUNoYXJJbml0aWFsUHlyb1NoYXJlAgAAABdjaGFyX2luaXRpYWxfcHlyb19zaGFyZQAAAAAXa2V5Q2hhckluaXRpYWxBcXVhU2hhcmUCAAAAF2NoYXJfaW5pdGlhbF9hcXVhX3NoYXJlAAAAABhrZXlDaGFySW5pdGlhbFRlcnJhU2hhcmUCAAAAGGNoYXJfaW5pdGlhbF90ZXJyYV9zaGFyZQAAAAAXa2V5Q2hhckluaXRpYWxBZXJvU2hhcmUCAAAAF2NoYXJfaW5pdGlhbF9hZXJvX3NoYXJlAAAAABJrZXlDaGFyVG90YWxJbmNvbWUCAAAAEWNoYXJfdG90YWxfaW5jb21lAAAAABVrZXlBZGRyZXNzVG90YWxJbmNvbWUCAAAAFGFkZHJlc3NfdG90YWxfaW5jb21lAAAAAAZnb3ZBcHAJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAECAAAAIzNNeXhmd3ZidWVVQnluWUhmUXN1dE5YWk5xTm96R2lNbnNHAAAAABVrZXlFY29zeXN0ZW1BZGRyZXNzZXMCAAAAE2Vjb3N5c3RlbV9hZGRyZXNzZXMAAAAACmtleVRva2VuSWQCAAAACHRva2VuX2lkAAAAAA1rZXlUb3RhbExhbmRzAgAAAAt0b3RhbF9sYW5kcwAAAAAUa2V5VG9rZW5FbWlzc2lvblJhdGUCAAAAE3Rva2VuX2VtaXNzaW9uX3JhdGUAAAAACGNoYXJzQXBwCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABAgAAACMzTkEzTFJTaWdrNmtuTFoxNnVUemNkTE5vdzJFUVp0WFRhSgAAAAAIa2V5T3duZXICAAAABW93bmVyAAAAABNrZXlOYXR1cmFsUHlyb0JvbnVzAgAAABJuYXR1cmFsX3B5cm9fYm9udXMAAAAAE2tleU5hdHVyYWxBcXVhQm9udXMCAAAAEm5hdHVyYWxfYXF1YV9ib251cwAAAAAUa2V5TmF0dXJhbFRlcnJhQm9udXMCAAAAE25hdHVyYWxfdGVycmFfYm9udXMAAAAAE2tleU5hdHVyYWxBZXJvQm9udXMCAAAAEm5hdHVyYWxfYWVyb19ib251cwAAAAAKYmF0dGxlc0FwcAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQIAAAAjM011SDlOZ3BvR2FTUXVmRVFMUFJpa1hOUzlQWGhraGNMenABAAAADGludm9rZUNoZWNrcwAAAAEAAAAKY2FsbGVyQWRkcgMJAQAAAAIhPQAAAAIJAAQeAAAAAQUAAAAGZ292QXBwBwkAAAIAAAABAgAAABdHb3Zlcm5pbmcgYXBwIG5vdCByZWFkeQQAAAASZWNvc3lzdGVtQWRkcmVzc2VzCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAZnb3ZBcHAFAAAAFWtleUVjb3N5c3RlbUFkZHJlc3NlcwMJAQAAAAIhPQAAAAIJAQAAAAhjb250YWlucwAAAAIFAAAAEmVjb3N5c3RlbUFkZHJlc3NlcwkABCUAAAABBQAAAApjYWxsZXJBZGRyBwkAAAIAAAABAgAAAA1BY2Nlc3MgZGVuaWVkBgEAAAAEd2l0aAAAAAIAAAABYQAAAAFiBAAAAAFjBAAAAAckbWF0Y2gwBQAAAAFiAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAABWlzSW50BQAAAAckbWF0Y2gwCQABpAAAAAEFAAAABWlzSW50AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAABWlzU3RyBQAAAAckbWF0Y2gwBQAAAAVpc1N0cgkAAAIAAAABAgAAAB9NYXRjaGluZyBpc3N1ZSBpbiB3aXRo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ckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAQAAAAR3aXRoAAAAAgUAAAASa2V5Q2hhckN1cnJlbnRMYW5kBQAAAAZjaGFySWQAAAAAAAAAAAADCQAAAAAAAAIFAAAAC2N1cnJlbnRMYW5kBQAAAAZsYW5kSWQJAAACAAAAAQIAAAAZQ2hhciBhbHJlYWR5IG9uIHRoYXQgbGFuZAQAAAAUY2hhck5hdHVyYWxFbGVtQm9udXMJAQAAABdnZXRDaGFyTmF0dXJhbEVsZW1Cb251cwAAAAEFAAAABmNoYXJJZAQAAAAQb2xkTGFuZEVsZW1Qb3dlcgkBAAAAEGdldExhbmRFbGVtUG93ZXIAAAABBQAAAAtjdXJyZW50TGFuZAQAAAAeY3VycmVudEdlbmVyYXRlZFN1cHBsaWVzUmVzdWx0CQAD/AAAAAQFAAAABmdvdkFwcAIAAAAUZ2V0R2VuZXJhdGVkU3VwcGxpZXMFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAB5jdXJyZW50R2VuZXJhdGVkU3VwcGxpZXNSZXN1bHQFAAAAHmN1cnJlbnRHZW5lcmF0ZWRTdXBwbGllc1Jlc3VsdAQAAAAYY3VycmVudEdlbmVyYXRlZFN1cHBsaWVzBAAAAAckbWF0Y2gwBQAAAB5jdXJyZW50R2VuZXJhdGVkU3VwcGxpZXNSZXN1bHQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAAFaXNJbnQFAAAAByRtYXRjaDAFAAAABWlzSW50CQAAAgAAAAECAAAAEUJhZCBpbnZva2UgcmVzdWx0BAAAAA5qb2luaW5nQWN0aW9ucwMJAQAAAAIhPQAAAAIFAAAABmxhbmRJZAAAAAAAAAAAAAQAAAATbmV3TGFuZE5ld0VsZW1Qb3dlcgkBAAAAFGNhbGNOZXdMYW5kRWxlbVBvd2VyAAAAAgUAAAAGbGFuZElkBQAAABRjaGFyTmF0dXJhbEVsZW1Cb251cwQAAAAVbmV3TGFuZENoYXJFbGVtU2hhcmVzCQEAAAASY2FsY0NoYXJFbGVtU2hhcmVzAAAAAgUAAAAUY2hhck5hdHVyYWxFbGVtQm9udXMFAAAAE25ld0xhbmROZXdFbGVtUG93ZXIEAAAAFGNoYXJSZXN0UGVyaW9kVXBkYXRlCQAD/AAAAAQFAAAACmJhdHRsZXNBcHACAAAABmJhdHRsZQkABEwAAAACBQAAAAZjaGFySWQFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAABRjaGFyUmVzdFBlcmlvZFVwZGF0ZQUAAAAUY2hhclJlc3RQZXJpb2RVcGRhdGUEAAAADmNoYXJSZXN0UGVyaW9kBAAAAAckbWF0Y2gwBQAAABRjaGFyUmVzdFBlcmlvZFVwZGF0ZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAVpc0ludAUAAAAHJG1hdGNoMAUAAAAFaXNJbnQJAAACAAAAAQIAAAAbY2hhclJlc3RQZXJpb2RVcGRhdGUgZmFpbGVkAwkBAAAAAiE9AAAAAgUAAAAOY2hhclJlc3RQZXJpb2QFAAAABmhlaWdodAkAAAIAAAABAgAAABBVbmV4cGVjdGVkIGVycm9yCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAEd2l0aAAAAAIFAAAAEGtleUxhbmRQeXJvUG93ZXIFAAAABmxhbmRJZAkAAZEAAAACBQAAABNuZXdMYW5kTmV3RWxlbVBvd2VyAAAAAAAAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAEd2l0aAAAAAIFAAAAEGtleUxhbmRBcXVhUG93ZXIFAAAABmxhbmRJZAkAAZEAAAACBQAAABNuZXdMYW5kTmV3RWxlbVBvd2VyAAAAAAAAAAABCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAEd2l0aAAAAAIFAAAAEWtleUxhbmRUZXJyYVBvd2VyBQAAAAZsYW5kSWQJAAGRAAAAAgUAAAATbmV3TGFuZE5ld0VsZW1Qb3dlcgAAAAAAAAAAAgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAABHdpdGgAAAACBQAAABBrZXlMYW5kQWVyb1Bvd2VyBQAAAAZsYW5kSWQJAAGRAAAAAgUAAAATbmV3TGFuZE5ld0VsZW1Qb3dlcgAAAAAAAAAAAwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAABHdpdGgAAAACBQAAAB9rZXlDaGFySW5pdGlhbEdlbmVyYXRlZFN1cHBsaWVzBQAAAAZjaGFySWQFAAAAGGN1cnJlbnRHZW5lcmF0ZWRTdXBwbGllcwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAABHdpdGgAAAACBQAAABdrZXlDaGFySW5pdGlhbFB5cm9TaGFyZQUAAAAGY2hhcklkCQABkQAAAAIFAAAAFW5ld0xhbmRDaGFyRWxlbVNoYXJlcwAAAAAAAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAABHdpdGgAAAACBQAAABdrZXlDaGFySW5pdGlhbEFxdWFTaGFyZQUAAAAGY2hhcklkCQABkQAAAAIFAAAAFW5ld0xhbmRDaGFyRWxlbVNoYXJlcwAAAAAAAAAAAQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAABHdpdGgAAAACBQAAABhrZXlDaGFySW5pdGlhbFRlcnJhU2hhcmUFAAAABmNoYXJJZAkAAZEAAAACBQAAABVuZXdMYW5kQ2hhckVsZW1TaGFyZXMAAAAAAAAAAAIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAR3aXRoAAAAAgUAAAAXa2V5Q2hhckluaXRpYWxBZXJvU2hhcmUFAAAABmNoYXJJZAkAAZEAAAACBQAAABVuZXdMYW5kQ2hhckVsZW1TaGFyZXMAAAAAAAAAAAMFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAABHdpdGgAAAACBQAAAB9rZXlDaGFySW5pdGlhbEdlbmVyYXRlZFN1cHBsaWVzBQAAAAZjaGFySWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAABHdpdGgAAAACBQAAABdrZXlDaGFySW5pdGlhbFB5cm9TaGFyZQUAAAAGY2hhcklkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAAR3aXRoAAAAAgUAAAAXa2V5Q2hhckluaXRpYWxBcXVhU2hhcmUFAAAABmNoYXJJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAEd2l0aAAAAAIFAAAAGGtleUNoYXJJbml0aWFsVGVycmFTaGFyZQUAAAAGY2hhcklkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAAR3aXRoAAAAAgUAAAAXa2V5Q2hhckluaXRpYWxBZXJvU2hhcmUFAAAABmNoYXJJZAUAAAADbmlsBAAAAA5leGl0aW5nQWN0aW9ucwMJAQAAAAIhPQAAAAIFAAAAC2N1cnJlbnRMYW5kAAAAAAAAAAAABAAAAA9zZW5kVG9rZW5zVG9BcHAJAAP8AAAABAUAAAAGZ292QXBwAgAAAA9zZW5kVG9rZW5zdG9BcHAJAARMAAAAAgkBAAAADmNhbGNDaGFySW5jb21lAAAABAUAAAAGY2hhcklkBQAAABBvbGRMYW5kRWxlbVBvd2VyBQAAABRjaGFyTmF0dXJhbEVsZW1Cb251cwUAAAAYY3VycmVudEdlbmVyYXRlZFN1cHBsaWVzBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAPc2VuZFRva2Vuc1RvQXBwBQAAAA9zZW5kVG9rZW5zVG9BcHAEAAAAD2NoYXJUb2tlbkluY29tZQQAAAAHJG1hdGNoMAUAAAAPc2VuZFRva2Vuc1RvQXBwAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAABWlzSW50BQAAAAckbWF0Y2gwBQAAAAVpc0ludAkAAAIAAAABAgAAAAxJbnZva2UgaXNzdWUEAAAAEm5ld0NoYXJUb3RhbEluY29tZQkAAGQAAAACCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAQAAAAR3aXRoAAAAAgUAAAASa2V5Q2hhclRvdGFsSW5jb21lBQAAAAZjaGFySWQAAAAAAAAAAAAFAAAAD2NoYXJUb2tlbkluY29tZQQAAAAVbmV3QWRkcmVzc1RvdGFsSW5jb21lCQAAZAAAAAIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkBAAAABHdpdGgAAAACBQAAABVrZXlBZGRyZXNzVG90YWxJbmNvbWUFAAAACmNhbGxlckFkZHIAAAAAAAAAAAAFAAAAD2NoYXJUb2tlbkluY29tZQQAAAATb2xkTGFuZE5ld0VsZW1Qb3dlcgkBAAAAFGNhbGNPbGRMYW5kRWxlbVBvd2VyAAAAAgUAAAAQb2xkTGFuZEVsZW1Qb3dlcgUAAAAUY2hhck5hdHVyYWxFbGVtQm9udXMJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAA9jaGFyVG9rZW5JbmNvbWUJAQAAABFAZXh0ck5hdGl2ZSgxMDUyKQAAAAIFAAAABmdvdkFwcAUAAAAKa2V5VG9rZW5JZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAABHdpdGgAAAACBQAAABJrZXlDaGFyVG90YWxJbmNvbWUFAAAABmNoYXJJZAUAAAASbmV3Q2hhclRvdGFsSW5jb21lCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAEd2l0aAAAAAIFAAAAFWtleUFkZHJlc3NUb3RhbEluY29tZQUAAAAKY2FsbGVyQWRkcgUAAAASbmV3Q2hhclRvdGFsSW5jb21lCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAEd2l0aAAAAAIFAAAAEGtleUxhbmRQeXJvUG93ZXIFAAAAC2N1cnJlbnRMYW5kCQABkQAAAAIFAAAAE29sZExhbmROZXdFbGVtUG93ZXIAAAAAAAAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAR3aXRoAAAAAgUAAAAQa2V5TGFuZEFxdWFQb3dlcgUAAAALY3VycmVudExhbmQJAAGRAAAAAgUAAAATb2xkTGFuZE5ld0VsZW1Qb3dlcgAAAAAAAAAAAQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAABHdpdGgAAAACBQAAABFrZXlMYW5kVGVycmFQb3dlcgUAAAALY3VycmVudExhbmQJAAGRAAAAAgUAAAATb2xkTGFuZE5ld0VsZW1Qb3dlcgAAAAAAAAAAAgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAABHdpdGgAAAACBQAAABBrZXlMYW5kQWVyb1Bvd2VyBQAAAAtjdXJyZW50TGFuZAkAAZEAAAACBQAAABNvbGRMYW5kTmV3RWxlbVBvd2VyAAAAAAAAAAADBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQAAAANuaWwJAAROAAAAAgkABE4AAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAEd2l0aAAAAAIFAAAAEmtleUNoYXJDdXJyZW50TGFuZAUAAAAGY2hhcklkBQAAAAZsYW5kSWQFAAAAA25pbAUAAAAOam9pbmluZ0FjdGlvbnMFAAAADmV4aXRpbmdBY3Rpb25zCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5I5nbTA==", "height": 2058515, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: CGgeRC3QnRyn8ysgid7midF28nHqKuFqALBS4MAE1AA3 Next: D8FFohBxX7fy3K6r8uc5qgDbh32y94gtbXYjouQkK2PP Diff:
Old | New | Differences | |
---|---|---|---|
50 | 50 | let keyNaturalTerraBonus = "natural_terra_bonus" | |
51 | 51 | ||
52 | 52 | let keyNaturalAeroBonus = "natural_aero_bonus" | |
53 | + | ||
54 | + | let battlesApp = addressFromStringValue("3MuH9NgpoGaSQufEQLPRikXNS9PXhkhcLzp") | |
53 | 55 | ||
54 | 56 | func invokeChecks (callerAddr) = if ((isDataStorageUntouched(govApp) != false)) | |
55 | 57 | then throw("Governing app not ready") | |
131 | 133 | then { | |
132 | 134 | let newLandNewElemPower = calcNewLandElemPower(landId, charNaturalElemBonus) | |
133 | 135 | let newLandCharElemShares = calcCharElemShares(charNaturalElemBonus, newLandNewElemPower) | |
134 | - | [IntegerEntry(with(keyLandPyroPower, landId), newLandNewElemPower[0]), IntegerEntry(with(keyLandAquaPower, landId), newLandNewElemPower[1]), IntegerEntry(with(keyLandTerraPower, landId), newLandNewElemPower[2]), IntegerEntry(with(keyLandAeroPower, landId), newLandNewElemPower[3]), IntegerEntry(with(keyCharInitialGeneratedSupplies, charId), currentGeneratedSupplies), IntegerEntry(with(keyCharInitialPyroShare, charId), newLandCharElemShares[0]), IntegerEntry(with(keyCharInitialAquaShare, charId), newLandCharElemShares[1]), IntegerEntry(with(keyCharInitialTerraShare, charId), newLandCharElemShares[2]), IntegerEntry(with(keyCharInitialAeroShare, charId), newLandCharElemShares[3])] | |
136 | + | let charRestPeriodUpdate = invoke(battlesApp, "battle", [charId], nil) | |
137 | + | if ((charRestPeriodUpdate == charRestPeriodUpdate)) | |
138 | + | then { | |
139 | + | let charRestPeriod = match charRestPeriodUpdate { | |
140 | + | case isInt: Int => | |
141 | + | isInt | |
142 | + | case _ => | |
143 | + | throw("charRestPeriodUpdate failed") | |
144 | + | } | |
145 | + | if ((charRestPeriod != height)) | |
146 | + | then throw("Unexpected error") | |
147 | + | else [IntegerEntry(with(keyLandPyroPower, landId), newLandNewElemPower[0]), IntegerEntry(with(keyLandAquaPower, landId), newLandNewElemPower[1]), IntegerEntry(with(keyLandTerraPower, landId), newLandNewElemPower[2]), IntegerEntry(with(keyLandAeroPower, landId), newLandNewElemPower[3]), IntegerEntry(with(keyCharInitialGeneratedSupplies, charId), currentGeneratedSupplies), IntegerEntry(with(keyCharInitialPyroShare, charId), newLandCharElemShares[0]), IntegerEntry(with(keyCharInitialAquaShare, charId), newLandCharElemShares[1]), IntegerEntry(with(keyCharInitialTerraShare, charId), newLandCharElemShares[2]), IntegerEntry(with(keyCharInitialAeroShare, charId), newLandCharElemShares[3])] | |
148 | + | } | |
149 | + | else throw("Strict value is not equal to itself.") | |
135 | 150 | } | |
136 | 151 | else [DeleteEntry(with(keyCharInitialGeneratedSupplies, charId)), DeleteEntry(with(keyCharInitialPyroShare, charId)), DeleteEntry(with(keyCharInitialAquaShare, charId)), DeleteEntry(with(keyCharInitialTerraShare, charId)), DeleteEntry(with(keyCharInitialAeroShare, charId))] | |
137 | 152 | let exitingActions = if ((currentLand != 0)) |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let separator = "_" | |
5 | 5 | ||
6 | 6 | let shareDecimals = 1000000000000000000 | |
7 | 7 | ||
8 | 8 | let keyCharCurrentLand = "char_current_land" | |
9 | 9 | ||
10 | 10 | let keyCharInitialGeneratedSupplies = "char_initial_generated_supplies" | |
11 | 11 | ||
12 | 12 | let keyLandPyroPower = "land_pyro_power" | |
13 | 13 | ||
14 | 14 | let keyLandAquaPower = "land_aqua_power" | |
15 | 15 | ||
16 | 16 | let keyLandTerraPower = "land_terra_power" | |
17 | 17 | ||
18 | 18 | let keyLandAeroPower = "land_aero_power" | |
19 | 19 | ||
20 | 20 | let keyCharInitialPyroShare = "char_initial_pyro_share" | |
21 | 21 | ||
22 | 22 | let keyCharInitialAquaShare = "char_initial_aqua_share" | |
23 | 23 | ||
24 | 24 | let keyCharInitialTerraShare = "char_initial_terra_share" | |
25 | 25 | ||
26 | 26 | let keyCharInitialAeroShare = "char_initial_aero_share" | |
27 | 27 | ||
28 | 28 | let keyCharTotalIncome = "char_total_income" | |
29 | 29 | ||
30 | 30 | let keyAddressTotalIncome = "address_total_income" | |
31 | 31 | ||
32 | 32 | let govApp = addressFromStringValue("3MyxfwvbueUBynYHfQsutNXZNqNozGiMnsG") | |
33 | 33 | ||
34 | 34 | let keyEcosystemAddresses = "ecosystem_addresses" | |
35 | 35 | ||
36 | 36 | let keyTokenId = "token_id" | |
37 | 37 | ||
38 | 38 | let keyTotalLands = "total_lands" | |
39 | 39 | ||
40 | 40 | let keyTokenEmissionRate = "token_emission_rate" | |
41 | 41 | ||
42 | 42 | let charsApp = addressFromStringValue("3NA3LRSigk6knLZ16uTzcdLNow2EQZtXTaJ") | |
43 | 43 | ||
44 | 44 | let keyOwner = "owner" | |
45 | 45 | ||
46 | 46 | let keyNaturalPyroBonus = "natural_pyro_bonus" | |
47 | 47 | ||
48 | 48 | let keyNaturalAquaBonus = "natural_aqua_bonus" | |
49 | 49 | ||
50 | 50 | let keyNaturalTerraBonus = "natural_terra_bonus" | |
51 | 51 | ||
52 | 52 | let keyNaturalAeroBonus = "natural_aero_bonus" | |
53 | + | ||
54 | + | let battlesApp = addressFromStringValue("3MuH9NgpoGaSQufEQLPRikXNS9PXhkhcLzp") | |
53 | 55 | ||
54 | 56 | func invokeChecks (callerAddr) = if ((isDataStorageUntouched(govApp) != false)) | |
55 | 57 | then throw("Governing app not ready") | |
56 | 58 | else { | |
57 | 59 | let ecosystemAddresses = getStringValue(govApp, keyEcosystemAddresses) | |
58 | 60 | if ((contains(ecosystemAddresses, toString(callerAddr)) != false)) | |
59 | 61 | then throw("Access denied") | |
60 | 62 | else true | |
61 | 63 | } | |
62 | 64 | ||
63 | 65 | ||
64 | 66 | func with (a,b) = { | |
65 | 67 | let c = match b { | |
66 | 68 | case isInt: Int => | |
67 | 69 | toString(isInt) | |
68 | 70 | case isStr: String => | |
69 | 71 | isStr | |
70 | 72 | case _ => | |
71 | 73 | throw("Matching issue in with function") | |
72 | 74 | } | |
73 | 75 | ((c + separator) + a) | |
74 | 76 | } | |
75 | 77 | ||
76 | 78 | ||
77 | 79 | func getCharNaturalElemBonus (charId) = [getIntegerValue(charsApp, with(keyNaturalPyroBonus, charId)), getIntegerValue(charsApp, with(keyNaturalAquaBonus, charId)), getIntegerValue(charsApp, with(keyNaturalTerraBonus, charId)), getIntegerValue(charsApp, with(keyNaturalAeroBonus, charId))] | |
78 | 80 | ||
79 | 81 | ||
80 | 82 | func getLandElemPower (landId) = [valueOrElse(getInteger(this, with(keyLandPyroPower, landId)), 0), valueOrElse(getInteger(this, with(keyLandAquaPower, landId)), 0), valueOrElse(getInteger(this, with(keyLandTerraPower, landId)), 0), valueOrElse(getInteger(this, with(keyLandAeroPower, landId)), 0)] | |
81 | 83 | ||
82 | 84 | ||
83 | 85 | func calcNewLandElemPower (landId,charNaturalElemBonus) = { | |
84 | 86 | let newLandElemPower = getLandElemPower(landId) | |
85 | 87 | [(newLandElemPower[0] + charNaturalElemBonus[0]), (newLandElemPower[1] + charNaturalElemBonus[1]), (newLandElemPower[2] + charNaturalElemBonus[2]), (newLandElemPower[3] + charNaturalElemBonus[3])] | |
86 | 88 | } | |
87 | 89 | ||
88 | 90 | ||
89 | 91 | func calcOldLandElemPower (oldLandElemPower,charNaturalElemBonus) = [(oldLandElemPower[0] - charNaturalElemBonus[0]), (oldLandElemPower[1] - charNaturalElemBonus[1]), (oldLandElemPower[2] - charNaturalElemBonus[2]), (oldLandElemPower[3] - charNaturalElemBonus[3])] | |
90 | 92 | ||
91 | 93 | ||
92 | 94 | func calcCharElemShares (charNaturalBonus,landElemPower) = [fraction(shareDecimals, charNaturalBonus[0], landElemPower[0]), fraction(shareDecimals, charNaturalBonus[1], landElemPower[1]), fraction(shareDecimals, charNaturalBonus[2], landElemPower[2]), fraction(shareDecimals, charNaturalBonus[3], landElemPower[3])] | |
93 | 95 | ||
94 | 96 | ||
95 | 97 | func calcCharIncome (charId,oldLandElemPower,charNaturalElemBonus,currentGeneratedSupplies) = { | |
96 | 98 | let oldLandCharCurrentElemShares = calcCharElemShares(oldLandElemPower, charNaturalElemBonus) | |
97 | 99 | let oldLandCharAverageElemShares = [((getIntegerValue(this, with(keyCharInitialPyroShare, charId)) + oldLandCharCurrentElemShares[0]) / 2), ((getIntegerValue(this, with(keyCharInitialAquaShare, charId)) + oldLandCharCurrentElemShares[1]) / 2), ((getIntegerValue(this, with(keyCharInitialTerraShare, charId)) + oldLandCharCurrentElemShares[2]) / 2), ((getIntegerValue(this, with(keyCharInitialAeroShare, charId)) + oldLandCharCurrentElemShares[3]) / 2)] | |
98 | 100 | let charEligibleSupplies = (((currentGeneratedSupplies - getIntegerValue(this, with(keyCharInitialGeneratedSupplies, charId))) / getIntegerValue(govApp, keyTotalLands)) / 4) | |
99 | 101 | (((fraction(charEligibleSupplies, oldLandCharAverageElemShares[0], shareDecimals) + fraction(charEligibleSupplies, oldLandCharAverageElemShares[1], shareDecimals)) + fraction(charEligibleSupplies, oldLandCharAverageElemShares[2], shareDecimals)) + fraction(charEligibleSupplies, oldLandCharAverageElemShares[3], shareDecimals)) | |
100 | 102 | } | |
101 | 103 | ||
102 | 104 | ||
103 | 105 | @Callable(i) | |
104 | 106 | func charMovingLand (charId,landId) = if ((invokeChecks(i.caller) != true)) | |
105 | 107 | then throw() | |
106 | 108 | else { | |
107 | 109 | let callerAddr = toBase58String(i.caller.bytes) | |
108 | 110 | if ((getStringValue(charsApp, with(keyOwner, charId)) != callerAddr)) | |
109 | 111 | then throw("Caller doesn't own this char") | |
110 | 112 | else if (if ((0 > landId)) | |
111 | 113 | then true | |
112 | 114 | else (landId > getIntegerValue(govApp, keyTotalLands))) | |
113 | 115 | then throw("Not a land") | |
114 | 116 | else { | |
115 | 117 | let currentLand = valueOrElse(getInteger(this, with(keyCharCurrentLand, charId)), 0) | |
116 | 118 | if ((currentLand == landId)) | |
117 | 119 | then throw("Char already on that land") | |
118 | 120 | else { | |
119 | 121 | let charNaturalElemBonus = getCharNaturalElemBonus(charId) | |
120 | 122 | let oldLandElemPower = getLandElemPower(currentLand) | |
121 | 123 | let currentGeneratedSuppliesResult = invoke(govApp, "getGeneratedSupplies", nil, nil) | |
122 | 124 | if ((currentGeneratedSuppliesResult == currentGeneratedSuppliesResult)) | |
123 | 125 | then { | |
124 | 126 | let currentGeneratedSupplies = match currentGeneratedSuppliesResult { | |
125 | 127 | case isInt: Int => | |
126 | 128 | isInt | |
127 | 129 | case _ => | |
128 | 130 | throw("Bad invoke result") | |
129 | 131 | } | |
130 | 132 | let joiningActions = if ((landId != 0)) | |
131 | 133 | then { | |
132 | 134 | let newLandNewElemPower = calcNewLandElemPower(landId, charNaturalElemBonus) | |
133 | 135 | let newLandCharElemShares = calcCharElemShares(charNaturalElemBonus, newLandNewElemPower) | |
134 | - | [IntegerEntry(with(keyLandPyroPower, landId), newLandNewElemPower[0]), IntegerEntry(with(keyLandAquaPower, landId), newLandNewElemPower[1]), IntegerEntry(with(keyLandTerraPower, landId), newLandNewElemPower[2]), IntegerEntry(with(keyLandAeroPower, landId), newLandNewElemPower[3]), IntegerEntry(with(keyCharInitialGeneratedSupplies, charId), currentGeneratedSupplies), IntegerEntry(with(keyCharInitialPyroShare, charId), newLandCharElemShares[0]), IntegerEntry(with(keyCharInitialAquaShare, charId), newLandCharElemShares[1]), IntegerEntry(with(keyCharInitialTerraShare, charId), newLandCharElemShares[2]), IntegerEntry(with(keyCharInitialAeroShare, charId), newLandCharElemShares[3])] | |
136 | + | let charRestPeriodUpdate = invoke(battlesApp, "battle", [charId], nil) | |
137 | + | if ((charRestPeriodUpdate == charRestPeriodUpdate)) | |
138 | + | then { | |
139 | + | let charRestPeriod = match charRestPeriodUpdate { | |
140 | + | case isInt: Int => | |
141 | + | isInt | |
142 | + | case _ => | |
143 | + | throw("charRestPeriodUpdate failed") | |
144 | + | } | |
145 | + | if ((charRestPeriod != height)) | |
146 | + | then throw("Unexpected error") | |
147 | + | else [IntegerEntry(with(keyLandPyroPower, landId), newLandNewElemPower[0]), IntegerEntry(with(keyLandAquaPower, landId), newLandNewElemPower[1]), IntegerEntry(with(keyLandTerraPower, landId), newLandNewElemPower[2]), IntegerEntry(with(keyLandAeroPower, landId), newLandNewElemPower[3]), IntegerEntry(with(keyCharInitialGeneratedSupplies, charId), currentGeneratedSupplies), IntegerEntry(with(keyCharInitialPyroShare, charId), newLandCharElemShares[0]), IntegerEntry(with(keyCharInitialAquaShare, charId), newLandCharElemShares[1]), IntegerEntry(with(keyCharInitialTerraShare, charId), newLandCharElemShares[2]), IntegerEntry(with(keyCharInitialAeroShare, charId), newLandCharElemShares[3])] | |
148 | + | } | |
149 | + | else throw("Strict value is not equal to itself.") | |
135 | 150 | } | |
136 | 151 | else [DeleteEntry(with(keyCharInitialGeneratedSupplies, charId)), DeleteEntry(with(keyCharInitialPyroShare, charId)), DeleteEntry(with(keyCharInitialAquaShare, charId)), DeleteEntry(with(keyCharInitialTerraShare, charId)), DeleteEntry(with(keyCharInitialAeroShare, charId))] | |
137 | 152 | let exitingActions = if ((currentLand != 0)) | |
138 | 153 | then { | |
139 | 154 | let sendTokensToApp = invoke(govApp, "sendTokenstoApp", [calcCharIncome(charId, oldLandElemPower, charNaturalElemBonus, currentGeneratedSupplies)], nil) | |
140 | 155 | if ((sendTokensToApp == sendTokensToApp)) | |
141 | 156 | then { | |
142 | 157 | let charTokenIncome = match sendTokensToApp { | |
143 | 158 | case isInt: Int => | |
144 | 159 | isInt | |
145 | 160 | case _ => | |
146 | 161 | throw("Invoke issue") | |
147 | 162 | } | |
148 | 163 | let newCharTotalIncome = (valueOrElse(getInteger(this, with(keyCharTotalIncome, charId)), 0) + charTokenIncome) | |
149 | 164 | let newAddressTotalIncome = (valueOrElse(getInteger(this, with(keyAddressTotalIncome, callerAddr)), 0) + charTokenIncome) | |
150 | 165 | let oldLandNewElemPower = calcOldLandElemPower(oldLandElemPower, charNaturalElemBonus) | |
151 | 166 | [ScriptTransfer(i.caller, charTokenIncome, getBinaryValue(govApp, keyTokenId)), IntegerEntry(with(keyCharTotalIncome, charId), newCharTotalIncome), IntegerEntry(with(keyAddressTotalIncome, callerAddr), newCharTotalIncome), IntegerEntry(with(keyLandPyroPower, currentLand), oldLandNewElemPower[0]), IntegerEntry(with(keyLandAquaPower, currentLand), oldLandNewElemPower[1]), IntegerEntry(with(keyLandTerraPower, currentLand), oldLandNewElemPower[2]), IntegerEntry(with(keyLandAeroPower, currentLand), oldLandNewElemPower[3])] | |
152 | 167 | } | |
153 | 168 | else throw("Strict value is not equal to itself.") | |
154 | 169 | } | |
155 | 170 | else nil | |
156 | 171 | (([IntegerEntry(with(keyCharCurrentLand, charId), landId)] ++ joiningActions) ++ exitingActions) | |
157 | 172 | } | |
158 | 173 | else throw("Strict value is not equal to itself.") | |
159 | 174 | } | |
160 | 175 | } | |
161 | 176 | } | |
162 | 177 | ||
163 | 178 | ||
164 | 179 | @Verifier(tx) | |
165 | 180 | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
166 | 181 |
github/deemru/w8io/873ac7e 63.49 ms ◑![]()