tx · zQYaGPCjcjfTXbfU9eXHAsY7Funm7BVA44GwNUGN3rk

3Mw8EHDvHCbzm6VE777G6EJNQBEe6CeS335:  -0.01500000 Waves

2024.11.01 19:39 [3352711] smart account 3Mw8EHDvHCbzm6VE777G6EJNQBEe6CeS335 > SELF 0.00000000 Waves

{ "type": 13, "id": "zQYaGPCjcjfTXbfU9eXHAsY7Funm7BVA44GwNUGN3rk", "fee": 1500000, "feeAssetId": null, "timestamp": 1730479216920, "version": 2, "chainId": 84, "sender": "3Mw8EHDvHCbzm6VE777G6EJNQBEe6CeS335", "senderPublicKey": "4f2Ggz6CqZhqr3FaW8dzR6KoddCudvULpuUfh7ew3Yne", "proofs": [ "vbyT6kCZaWx9R6wfwdQHLyVdmoASiwGK2WbKYBowLEZADhhPYv8anJusDYcgzzzXNJAsXY434HWWLPBJDkVJUoF" ], "script": "base64:BgIZCAISAwoBCBIAEgMKAQgSAwoBCBIECgIICCgBFHRyeUdldFN0cmluZ0V4dGVybmFsAgdhZGRyZXNzA2tleQQHJG1hdGNoMAkAnQgCBQdhZGRyZXNzBQNrZXkDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwBQFhAgABDXRyeUdldEludGVnZXIBA2tleQQHJG1hdGNoMAkAmggCBQR0aGlzBQNrZXkDCQABAgUHJG1hdGNoMAIDSW50BAFiBQckbWF0Y2gwBQFiAAABDHRyeUdldFN0cmluZwEDa2V5CQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCBQR0aGlzBQNrZXkBBWFzSW50AQV2YWx1ZQQHJG1hdGNoMAUFdmFsdWUDCQABAgUHJG1hdGNoMAIDSW50BANpbnQFByRtYXRjaDAFA2ludAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEBnN0cmluZwUHJG1hdGNoMAkAAgEJAKwCAgIpUkFJOiB3cm9uZyB0eXBlLCBleHBlY3RlZDogSW50LCBidXQgZ290OiAFBnN0cmluZwkAAgECHlJBSTogd3JvbmcgdHlwZSwgZXhwZWN0ZWQ6IEludAEJYXNCb29sZWFuAQV2YWx1ZQQHJG1hdGNoMAUFdmFsdWUDCQABAgUHJG1hdGNoMAIHQm9vbGVhbgQHYm9vbGVhbgUHJG1hdGNoMAUHYm9vbGVhbgkAAgECIkZBQjogd3JvbmcgdHlwZSwgZXhwZWN0ZWQ6IEJvb2xlYW4BCGFzU3RyaW5nAQV2YWx1ZQQHJG1hdGNoMAUFdmFsdWUDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBQFzAwkAAQIFByRtYXRjaDACA0ludAQBcwUHJG1hdGNoMAkAAgECJndyb25nIHR5cGUsIGV4cGVjdGVkOiBTdHJpbmcsIGdvdDogSW50AwkAAQIFByRtYXRjaDACBFVuaXQEAXMFByRtYXRjaDAJAAIBAid3cm9uZyB0eXBlLCBleHBlY3RlZDogU3RyaW5nLCBnb3Q6IFVuaXQJAAIBAhx3cm9uZyB0eXBlLCBleHBlY3RlZDogU3RyaW5nARdzdGF0aWNLZXlfb3JhY2xlQWRkcmVzcwACFHN0YXRpY19vcmFjbGVBZGRyZXNzARJzdGF0aWNLZXlfZXh0cmFGZWUAAg9zdGF0aWNfZXh0cmFGZWUBF3N0YXRpY0tleV9mZWVBZ2dyZWdhdG9yAAIUc3RhdGljX2ZlZUFnZ3JlZ2F0b3IBIHN0YXRpY0tleV9jYW5pbmVJbmN1YmF0b3JBZGRyZXNzAAIdc3RhdGljX2NhbmluZUluY3ViYXRvckFkZHJlc3MBHnN0YXRpY0tleV9jYW5pbmVCcmVlZGVyQWRkcmVzcwACG3N0YXRpY19jYW5pbmVCcmVlZGVyQWRkcmVzcwEYc3RhdGljS2V5X2NvdXBvbnNBZGRyZXNzAAIVc3RhdGljX2NvdXBvbnNBZGRyZXNzAR5zdGF0aWNLZXlfY2FuaW5lU3Rha2luZ0FkZHJlc3MAAhtzdGF0aWNfY2FuaW5lU3Rha2luZ0FkZHJlc3MBHHN0YXRpY0tleV9kdWNrU3Rha2luZ0FkZHJlc3MAAhhzdGF0aWNfZmFybWluZ0FkZHJlc3NOZXcBHnN0YXRpY0tleV9kdWNrSW5jdWJhdG9yQWRkcmVzcwACF3N0YXRpY19pbmN1YmF0b3JBZGRyZXNzARZzdGF0aWNLZXlfaXRlbXNBZGRyZXNzAAITc3RhdGljX2l0ZW1zQWRkcmVzcwEhc3RhdGljS2V5X2NhbmluZVdhdmVzUmViaXJ0aFByaWNlAAIec3RhdGljX2NhbmluZVdhdmVzUmViaXJ0aFByaWNlASBzdGF0aWNLZXlfdHVydGxlSW5jdWJhdG9yQWRkcmVzcwACHXN0YXRpY190dXJ0bGVJbmN1YmF0b3JBZGRyZXNzARlzdGF0aWNLZXlfYmFieUR1Y2tBZGRyZXNzAAIWc3RhdGljX2JhYnlEdWNrQWRkcmVzcwEJZ2V0T3JhY2xlAAkBB0FkZHJlc3MBCQDZBAEJAQx0cnlHZXRTdHJpbmcBCQEXc3RhdGljS2V5X29yYWNsZUFkZHJlc3MAARBnZXRGZWVBZ2dyZWdhdG9yAAkBB0FkZHJlc3MBCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUACQEXc3RhdGljS2V5X2ZlZUFnZ3JlZ2F0b3IAARdnZXRDYW5pbmVCcmVlZGVyQWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAkBHnN0YXRpY0tleV9jYW5pbmVCcmVlZGVyQWRkcmVzcwABGWdldENhbmluZUluY3ViYXRvckFkZHJlc3MACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQAJASBzdGF0aWNLZXlfY2FuaW5lSW5jdWJhdG9yQWRkcmVzcwABEWdldENvdXBvbnNBZGRyZXNzAAkBB0FkZHJlc3MBCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUACQEYc3RhdGljS2V5X2NvdXBvbnNBZGRyZXNzAAEXZ2V0Q2FuaW5lU3Rha2luZ0FkZHJlc3MACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQAJAR5zdGF0aWNLZXlfY2FuaW5lU3Rha2luZ0FkZHJlc3MAARVnZXREdWNrU3Rha2luZ0FkZHJlc3MACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQAJARxzdGF0aWNLZXlfZHVja1N0YWtpbmdBZGRyZXNzAAEXZ2V0RHVja0luY3ViYXRvckFkZHJlc3MACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQAJAR5zdGF0aWNLZXlfZHVja0luY3ViYXRvckFkZHJlc3MAAQ9nZXRJdGVtc0FkZHJlc3MACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQAJARZzdGF0aWNLZXlfaXRlbXNBZGRyZXNzAAEZZ2V0VHVydGxlSW5jdWJhdG9yQWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAkBIHN0YXRpY0tleV90dXJ0bGVJbmN1YmF0b3JBZGRyZXNzAAESZ2V0QmFieUR1Y2tBZGRyZXNzAAkBB0FkZHJlc3MBCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUACQEZc3RhdGljS2V5X2JhYnlEdWNrQWRkcmVzcwABFXRyeUdldEludGVnZXJFeHRlcm5hbAIHYWRkcmVzcwNrZXkEByRtYXRjaDAJAJoIAgUHYWRkcmVzcwUDa2V5AwkAAQIFByRtYXRjaDACA0ludAQBYgUHJG1hdGNoMAUBYgkAAgECGlRSOiBWYWx1ZSBub3QgZm91bmQgaW4gc2MhAAt3YXZlc0Ftb3VudAkBFXRyeUdldEludGVnZXJFeHRlcm5hbAIJAQlnZXRPcmFjbGUACQEhc3RhdGljS2V5X2NhbmluZVdhdmVzUmViaXJ0aFByaWNlAAAQZGVsYXlGb3JIYXRjaGluZwACAQljaGVja1JlYWwBB2Fzc2V0SWQDAwkAAAIICQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQGaXNzdWVyCQEXZ2V0Q2FuaW5lQnJlZWRlckFkZHJlc3MABgkAAAIICQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQGaXNzdWVyCQEZZ2V0Q2FuaW5lSW5jdWJhdG9yQWRkcmVzcwAICQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQGaXNzdWVyCQACAQINbm90IHZhbGlkIE5GVAEWY2hlY2tBZGRpdGlvbmFsUGF5bWVudAEHcGF5bWVudAMJAQlpc0RlZmluZWQBCAUHcGF5bWVudAdhc3NldElkCQACAQIZUkNBUDogUGxlYXNlIGF0dGFjaCB3YXZlcwQJZmVlQW1vdW50CQERQGV4dHJOYXRpdmUoMTA1MCkCCQEJZ2V0T3JhY2xlAAkBEnN0YXRpY0tleV9leHRyYUZlZQADCQECIT0CCAUHcGF5bWVudAZhbW91bnQFCWZlZUFtb3VudAkAAgEJAKwCAgkArAICAhxSQ0FQOiBQbGVhc2UgYXR0YWNoIGV4YWN0bHkgCQCkAwEFCWZlZUFtb3VudAITIGFtb3VudCBvZiB3YXZlbGV0cwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEQZ2V0RmVlQWdncmVnYXRvcgAFCWZlZUFtb3VudAUEdW5pdAUDbmlsAQ9nZXRSYW5kb21OdW1iZXIEB29wdGlvbnMEdHhJZBRoYXRjaGluZ0ZpbmlzaEhlaWdodAZvZmZzZXQED3JhbmRvbVNlZWRCbG9jawkBBXZhbHVlAQkA7QcBCQBlAgUUaGF0Y2hpbmdGaW5pc2hIZWlnaHQAAQQKcmFuZG9tSGFzaAkA9wMBCQDLAQIFBHR4SWQJAQV2YWx1ZQEIBQ9yYW5kb21TZWVkQmxvY2sDdnJmCQBqAgkAsgkCBQpyYW5kb21IYXNoCQBoAgUGb2Zmc2V0AAgFB29wdGlvbnMBDXRyeUdldEJvb2xlYW4BA2tleQQHJG1hdGNoMAkAoAgBBQNrZXkDCQABAgUHJG1hdGNoMAIHQm9vbGVhbgQBYgUHJG1hdGNoMAUBYgcBDGdldFJhbmRvbVdpbgMCdHgMZmluaXNoSGVpZ2h0DWJsYWNrbGlzdENvZGUEDWphY2twb3RSYW5kb20JAQ9nZXRSYW5kb21OdW1iZXIEAAoFAnR4BQxmaW5pc2hIZWlnaHQAAQMJAAACBQ1qYWNrcG90UmFuZG9tAAEJAJQKAgUNamFja3BvdFJhbmRvbQIHamFja3BvdAQBbgkBD2dldFJhbmRvbU51bWJlcgQA6AcFAnR4BQxmaW5pc2hIZWlnaHQAAAQGcmVzdWx0AwMJAGYCAGQFAW4JAQIhPQIFDWJsYWNrbGlzdENvZGUCCWRvY2tpbmdfQQcCCWRvY2tpbmdfQQMDCQBmAgDIAQUBbgkBAiE9AgUNYmxhY2tsaXN0Q29kZQIJZG9ja2luZ19CBwIJZG9ja2luZ19CAwMJAGYCAKwCBQFuCQECIT0CBQ1ibGFja2xpc3RDb2RlAglkb2NraW5nX0MHAglkb2NraW5nX0MDAwkAZgIAkAMFAW4JAQIhPQIFDWJsYWNrbGlzdENvZGUCCWRvY2tpbmdfRAcCCWRvY2tpbmdfRAMDCQBmAgDCAwUBbgkBAiE9AgUNYmxhY2tsaXN0Q29kZQIJaW5jdWJhdG9yBwIJaW5jdWJhdG9yAwMJAGYCAOoDBQFuCQECIT0CBQ1ibGFja2xpc3RDb2RlAgtkdWNrbGluZ180MAcCC2R1Y2tsaW5nXzQwAwMJAGYCAJwEBQFuCQECIT0CBQ1ibGFja2xpc3RDb2RlAgtkdWNrbGluZ18yMAcCC2R1Y2tsaW5nXzIwAwMJAGYCAIAFBQFuCQECIT0CBQ1ibGFja2xpc3RDb2RlAg5pdGVtIUFSVC1GRUVENQcCDml0ZW0hQVJULUZFRUQ1AwMJAGYCAMYFBQFuCQECIT0CBQ1ibGFja2xpc3RDb2RlAg9pdGVtIUFSVC1GRUVEMTAHAg9pdGVtIUFSVC1GRUVEMTADAwkAZgIA5AUFAW4JAQIhPQIFDWJsYWNrbGlzdENvZGUCD2l0ZW0hQVJULUZFRUQxNQcCD2l0ZW0hQVJULUZFRUQxNQMDCQBmAgCCBgUBbgkBAiE9AgUNYmxhY2tsaXN0Q29kZQIPaXRlbSFBUlQtRkVFRDIwBwIPaXRlbSFBUlQtRkVFRDIwAwMJAGYCAJYGBQFuCQECIT0CBQ1ibGFja2xpc3RDb2RlAg9pdGVtIUFSVC1GRUVEMjUHAg9pdGVtIUFSVC1GRUVEMjUDAwkAZgIAqgYFAW4JAQIhPQIFDWJsYWNrbGlzdENvZGUCD2l0ZW0hQVJULUZFRUQ1MAcCD2l0ZW0hQVJULUZFRUQ1MAMDCQBmAgC+BgUBbgkBAiE9AgUNYmxhY2tsaXN0Q29kZQIQaXRlbSFBUlQtRkVFRDEwMAcCEGl0ZW0hQVJULUZFRUQxMDADAwkAZgIA3AYFAW4JAQIhPQIFDWJsYWNrbGlzdENvZGUCE2l0ZW0hQVJULU1VVEFSSVVNLUcHAhNpdGVtIUFSVC1NVVRBUklVTS1HAwMJAGYCAPoGBQFuCQECIT0CBQ1ibGFja2xpc3RDb2RlAhNpdGVtIUFSVC1NVVRBUklVTS1EBwITaXRlbSFBUlQtTVVUQVJJVU0tRAMDCQBmAgCOBwUBbgkBAiE9AgUNYmxhY2tsaXN0Q29kZQIRaXRlbSFBUlQtRlJFRUdFTkUHAhFpdGVtIUFSVC1GUkVFR0VORQMDCQBmAgCiBwUBbgkBAiE9AgUNYmxhY2tsaXN0Q29kZQIQaXRlbSFBUlQtRklYR0VORQcCEGl0ZW0hQVJULUZJWEdFTkUDAwkAZgIA1AcFAW4JAQIhPQIFDWJsYWNrbGlzdENvZGUCDnRydGxfaW5jdWJhdG9yBwIOdHJ0bF9pbmN1YmF0b3ICD2l0ZW0hQVJULVBPVElPTgkAlAoCBQFuBQZyZXN1bHQBD2dldFJhbmRvbVJldHVybgICdHgMZmluaXNoSGVpZ2h0BAFuCQEPZ2V0UmFuZG9tTnVtYmVyBAACBQJ0eAUMZmluaXNoSGVpZ2h0AAEDCQAAAgUBbgAABgcBFWZpbmlzaFJlYmlydGhJbnRlcm5hbAYGaW5pdFR4B2FkZHJlc3MRYWRkaXRpb25hbFBheW1lbnQGZG91YmxlDWJsYWNrbGlzdENvZGUGcmVzY3VlBAtmaW5pc2hCbG9jawkBDXRyeUdldEludGVnZXIBCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAghfaW5pdFR4XwUGaW5pdFR4AgxfZmluaXNoQmxvY2sEBnN0YXR1cwkBDHRyeUdldFN0cmluZwEJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCCF9pbml0VHhfBQZpbml0VHgCB19zdGF0dXMEDHZhbGlkUGF5bWVudAkBFmNoZWNrQWRkaXRpb25hbFBheW1lbnQBBRFhZGRpdGlvbmFsUGF5bWVudAMJAAACBQx2YWxpZFBheW1lbnQFDHZhbGlkUGF5bWVudAMJAQIhPQIFBnN0YXR1cwIEb3BlbgkAAgECH3JlYmlydGggaXMgZmluaXNoZWQgb3Igbm90IG9wZW4DCQBmAgULZmluaXNoQmxvY2sFBmhlaWdodAkAAgECHnlvdSBjYW5ub3QgZmluaXNoIHJlYmlydGgsIHlldAQGb3V0cHV0CQEMZ2V0UmFuZG9tV2luAwkA2QQBBQZpbml0VHgFC2ZpbmlzaEJsb2NrBQ1ibGFja2xpc3RDb2RlBAN3aW4IBQZvdXRwdXQCXzIEBnJhbmRvbQgFBm91dHB1dAJfMQQEdHhJZAUGaW5pdFR4BAZyZXN1bHQDCQECIT0CCQCzCQIFA3dpbgIHZG9ja2luZwUEdW5pdAQFY29sb3IJALICAgUDd2luAAEEBGNhbGwDCQEBIQEFBmRvdWJsZQQFZmlyc3QJAPwHBAkBF2dldENhbmluZVN0YWtpbmdBZGRyZXNzAAIMYWRkRnJlZVBlcmNoCQDMCAIFB2FkZHJlc3MJAMwIAgUFY29sb3IJAMwIAgABBQNuaWwFA25pbAMJAAACBQVmaXJzdAUFZmlyc3QJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIIX2luaXRUeF8FBmluaXRUeAIHX3Jlc3VsdAkBCGFzU3RyaW5nAQUFZmlyc3QFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQFZmlyc3QJAPwHBAkBF2dldENhbmluZVN0YWtpbmdBZGRyZXNzAAIMYWRkRnJlZVBlcmNoCQDMCAIFB2FkZHJlc3MJAMwIAgUFY29sb3IJAMwIAgACBQNuaWwFA25pbAMJAAACBQVmaXJzdAUFZmlyc3QJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIIX2luaXRUeF8FBmluaXRUeAIHX3Jlc3VsdAkBCGFzU3RyaW5nAQUFZmlyc3QJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIIX2luaXRUeF8FBmluaXRUeAIIX3Jlc3VsdDEJAQhhc1N0cmluZwEFBWZpcnN0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCCF9pbml0VHhfBQZpbml0VHgCBV93aW4xBQN3aW4FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQRjYWxsBQRjYWxsBQRjYWxsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFA3dpbgIHamFja3BvdAQEY2FsbAkA/AcECQEZZ2V0Q2FuaW5lSW5jdWJhdG9yQWRkcmVzcwACDGlzc3VlSmFja3BvdAkAzAgCBQdhZGRyZXNzCQDMCAIFBHR4SWQJAMwIAgIIV1dXV0hXVEYFA25pbAUDbmlsAwkAAAIFBGNhbGwFBGNhbGwJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIIX2luaXRUeF8FBmluaXRUeAIHX3Jlc3VsdAkBCGFzU3RyaW5nAQUEY2FsbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFA3dpbgIJaW5jdWJhdG9yBARjYWxsAwkBASEBBQZkb3VibGUEBWZpcnN0CQD8BwQJARlnZXRDYW5pbmVJbmN1YmF0b3JBZGRyZXNzAAIJaXNzdWVGcmVlCQDMCAIFB2FkZHJlc3MJAMwIAgUEdHhJZAUDbmlsBQNuaWwDCQAAAgUFZmlyc3QFBWZpcnN0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCCF9pbml0VHhfBQZpbml0VHgCB19yZXN1bHQJAQhhc1N0cmluZwEFBWZpcnN0BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EBWZpcnN0CQD8BwQJARlnZXRDYW5pbmVJbmN1YmF0b3JBZGRyZXNzAAIJaXNzdWVGcmVlCQDMCAIFB2FkZHJlc3MJAMwIAgUEdHhJZAUDbmlsBQNuaWwDCQAAAgUFZmlyc3QFBWZpcnN0BAZzZWNvbmQJAPwHBAkBGWdldFR1cnRsZUluY3ViYXRvckFkZHJlc3MAAg9pc3N1ZUZyZWVUdXJ0bGUJAMwIAgUHYWRkcmVzcwkAzAgCBQR0eElkBQNuaWwFA25pbAMJAAACBQZzZWNvbmQFBnNlY29uZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAghfaW5pdFR4XwUGaW5pdFR4AgdfcmVzdWx0CQEIYXNTdHJpbmcBBQVmaXJzdAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAghfaW5pdFR4XwUGaW5pdFR4AghfcmVzdWx0MQkBCGFzU3RyaW5nAQUGc2Vjb25kCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCCF9pbml0VHhfBQZpbml0VHgCBV93aW4xAglpbmN1YmF0b3IFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQRjYWxsBQRjYWxsBQRjYWxsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkBAiE9AgkAswkCBQN3aW4CCGR1Y2tsaW5nBQR1bml0BAVsZXZlbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgUDd2luAgFfAAEECmxldmVsRmluYWwDBQZkb3VibGUJAGgCAAIFBWxldmVsBQVsZXZlbAQEY2FsbAkA/AcECQESZ2V0QmFieUR1Y2tBZGRyZXNzAAIRaXNzdWVGcmVlRHVja2xpbmcJAMwIAgUHYWRkcmVzcwkAzAgCBQR0eElkCQDMCAIFCmxldmVsRmluYWwFA25pbAUDbmlsAwkAAAIFBGNhbGwFBGNhbGwJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIIX2luaXRUeF8FBmluaXRUeAIHX3Jlc3VsdAkBCGFzU3RyaW5nAQUEY2FsbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFA3dpbgIOdHJ0bF9pbmN1YmF0b3IEBGNhbGwDCQEBIQEFBmRvdWJsZQQFZmlyc3QJAPwHBAkBGWdldFR1cnRsZUluY3ViYXRvckFkZHJlc3MAAg9pc3N1ZUZyZWVUdXJ0bGUJAMwIAgUHYWRkcmVzcwkAzAgCBQR0eElkBQNuaWwFA25pbAMJAAACBQVmaXJzdAUFZmlyc3QJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIIX2luaXRUeF8FBmluaXRUeAIHX3Jlc3VsdAkBCGFzU3RyaW5nAQUFZmlyc3QFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQFZmlyc3QJAPwHBAkBGWdldFR1cnRsZUluY3ViYXRvckFkZHJlc3MAAg9pc3N1ZUZyZWVUdXJ0bGUJAMwIAgUHYWRkcmVzcwkAzAgCBQR0eElkBQNuaWwFA25pbAMJAAACBQVmaXJzdAUFZmlyc3QEBnNlY29uZAkA/AcECQEZZ2V0Q2FuaW5lSW5jdWJhdG9yQWRkcmVzcwACCWlzc3VlRnJlZQkAzAgCBQdhZGRyZXNzCQDMCAIFBHR4SWQFA25pbAUDbmlsAwkAAAIFBnNlY29uZAUGc2Vjb25kCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCCF9pbml0VHhfBQZpbml0VHgCB19yZXN1bHQJAQhhc1N0cmluZwEFBWZpcnN0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCCF9pbml0VHhfBQZpbml0VHgCCF9yZXN1bHQxCQEIYXNTdHJpbmcBBQZzZWNvbmQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIIX2luaXRUeF8FBmluaXRUeAIFX3dpbjECDnRydGxfaW5jdWJhdG9yBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQAAAgUEY2FsbAUEY2FsbAUEY2FsbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAQIhPQIJALMJAgUDd2luAgRpdGVtBQR1bml0BAhpdGVtTmFtZQkAkQMCCQC1CQIFA3dpbgIBIQABBARjYWxsAwkBASEBBQZkb3VibGUEBWZpcnN0CQD8BwQJAQ9nZXRJdGVtc0FkZHJlc3MAAhJpc3N1ZUFydGVmYWN0SW5kZXgJAMwIAgUIaXRlbU5hbWUJAMwIAgUHYWRkcmVzcwkAzAgCAAAFA25pbAUDbmlsAwkAAAIFBWZpcnN0BQVmaXJzdAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAghfaW5pdFR4XwUGaW5pdFR4AgdfcmVzdWx0CQEIYXNTdHJpbmcBBQVmaXJzdAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAVmaXJzdAkA/AcECQEPZ2V0SXRlbXNBZGRyZXNzAAISaXNzdWVBcnRlZmFjdEluZGV4CQDMCAIFCGl0ZW1OYW1lCQDMCAIFB2FkZHJlc3MJAMwIAgAABQNuaWwFA25pbAMJAAACBQVmaXJzdAUFZmlyc3QEBnNlY29uZAkA/AcECQEPZ2V0SXRlbXNBZGRyZXNzAAISaXNzdWVBcnRlZmFjdEluZGV4CQDMCAIFCGl0ZW1OYW1lCQDMCAIFB2FkZHJlc3MJAMwIAgABBQNuaWwFA25pbAMJAAACBQZzZWNvbmQFBnNlY29uZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAghfaW5pdFR4XwUGaW5pdFR4AgdfcmVzdWx0CQEIYXNTdHJpbmcBBQVmaXJzdAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAghfaW5pdFR4XwUGaW5pdFR4AghfcmVzdWx0MQkBCGFzU3RyaW5nAQUGc2Vjb25kCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCCF9pbml0VHhfBQZpbml0VHgCBV93aW4xBQN3aW4FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQRjYWxsBQRjYWxsBQRjYWxsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQkArAICAjRSRkI6IFNvbWUgZXJyb3Igb2NjdXJlZCwgcGxlYXNlIGNvbnRhY3QgdGhlIGFkbWlucyEgBQN3aW4DCQAAAgUGcmVzdWx0BQZyZXN1bHQEDnJldHVyblRvU2VuZGVyAwUGcmVzY3VlCQEPZ2V0UmFuZG9tUmV0dXJuAgkA2QQBBQZpbml0VHgFC2ZpbmlzaEJsb2NrBwQNcmV0dXJuUGF5bG9hZAMFDnJldHVyblRvU2VuZGVyBAdhc3NldElkCQDZBAEJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCCF9pbml0VHhfBQZpbml0VHgCCF9hc3NldElkBAZpc3N1ZXIJAQljaGVja1JlYWwBBQdhc3NldElkBANnZW4JAQhhc1N0cmluZwEJAPwHBAkBF2dldENhbmluZUJyZWVkZXJBZGRyZXNzAAIOZ2V0R2VuRnJvbU5hbWUJAMwIAggJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZARuYW1lBQNuaWwFA25pbAMJAAACBQNnZW4FA2dlbgQEY2FsbAkA/AcEBQZpc3N1ZXICDmluY3JlYXNlUmFyaXR5CQDMCAIJANgEAQUHYXNzZXRJZAkAzAgCBQNnZW4FA25pbAUDbmlsAwkAAAIFBGNhbGwFBGNhbGwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUHYWRkcmVzcwABBQdhc3NldElkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAkAzggCCQDOCAIJAM4IAgUGcmVzdWx0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCCF9pbml0VHhfBQZpbml0VHgCBF93aW4FA3dpbgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAghfaW5pdFR4XwUGaW5pdFR4Agdfc3RhdHVzAgZmaW5pc2gJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCCF9pbml0VHhfBQZpbml0VHgCB19yYW5kb20FBnJhbmRvbQUDbmlsBQx2YWxpZFBheW1lbnQFDXJldHVyblBheWxvYWQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FAWkBD2NvbmZpZ3VyZU9yYWNsZQEGb3JhY2xlAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIPUkNVOiBhZG1pbiBvbmx5CQDMCAIJAQtTdHJpbmdFbnRyeQICFHN0YXRpY19vcmFjbGVBZGRyZXNzBQZvcmFjbGUFA25pbAFpAQtpbml0UmViaXJ0aAAECXBtdENhbmluZQkAkQMCCAUBaQhwYXltZW50cwAABAhwbXRXYXZlcwkAkQMCCAUBaQhwYXltZW50cwABBAdhc3NldElkCQEFdmFsdWUBCAUJcG10Q2FuaW5lB2Fzc2V0SWQEBmluaXRUeAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgMJAQIhPQIIBQlwbXRDYW5pbmUGYW1vdW50AAEJAAIBAhNORlQgaXMgbm90IGF0dGFjaGVkAwMJAQIhPQIIBQhwbXRXYXZlcwZhbW91bnQFC3dhdmVzQW1vdW50BgkBAiE9AggFCHBtdFdhdmVzB2Fzc2V0SWQFBHVuaXQJAAIBAiZXYXZlc3BheW1lbnQgaXMgbm90IGF0dGFjaGVkIG9yIHdyb25nIQQQc2VuZFRvQWdncmVHYXRvcgkAaQIIBQhwbXRXYXZlcwZhbW91bnQABAQFdG9wdXAJAGUCCAUIcG10V2F2ZXMGYW1vdW50BRBzZW5kVG9BZ2dyZUdhdG9yBAdhZGRNb3JlCQD8BwQJARdnZXRDYW5pbmVTdGFraW5nQWRkcmVzcwACFGFkZFdhdmVzQW5kU3Rha2VNb3JlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBHVuaXQFBXRvcHVwBQNuaWwDCQAAAgUHYWRkTW9yZQUHYWRkTW9yZQQGaXNzdWVyCQEJY2hlY2tSZWFsAQUHYXNzZXRJZAQDZ2VuCQEIYXNTdHJpbmcBCQD8BwQJARdnZXRDYW5pbmVCcmVlZGVyQWRkcmVzcwACDmdldEdlbkZyb21OYW1lCQDMCAIICQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQEbmFtZQUDbmlsBQNuaWwDCQAAAgUDZ2VuBQNnZW4EBGNhbGwJAPwHBAUGaXNzdWVyAgxyZWR1Y2VSYXJpdHkJAMwIAgkA2AQBBQdhc3NldElkCQDMCAIFA2dlbgUDbmlsBQNuaWwDCQAAAgUEY2FsbAUEY2FsbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIIX2luaXRUeF8FBmluaXRUeAIMX2ZpbmlzaEJsb2NrCQBkAgUGaGVpZ2h0BRBkZWxheUZvckhhdGNoaW5nCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCCF9pbml0VHhfBQZpbml0VHgCB19zdGF0dXMCBG9wZW4JAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIIX2luaXRUeF8FBmluaXRUeAIIX2Fzc2V0SWQJANgEAQUHYXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEQZ2V0RmVlQWdncmVnYXRvcgAFEHNlbmRUb0FnZ3JlR2F0b3IFBHVuaXQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ1maW5pc2hSZWJpcnRoAQZpbml0VHgJARVmaW5pc2hSZWJpcnRoSW50ZXJuYWwGBQZpbml0VHgJAKUIAQgFAWkGY2FsbGVyCQCRAwIIBQFpCHBheW1lbnRzAAAHAgAHAWkBE2ZpbmlzaFJlYmlydGhEb3VibGUBBmluaXRUeAMJAQEhAQMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAIJAAACCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAABBwkAAgECD0ludmFsaWQgcGF5bWVudAQHYXNzZXRJZAkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBAtib29zdGVyVHlwZQkBCGFzU3RyaW5nAQkA/AcECQEPZ2V0SXRlbXNBZGRyZXNzAAIUY2hlY2tBcnRlZmFjdERldGFpbHMJAMwIAgkA2AQBBQdhc3NldElkBQNuaWwFA25pbAMJAAACBQtib29zdGVyVHlwZQULYm9vc3RlclR5cGUDCQAAAgULYm9vc3RlclR5cGUCDkFSVC1HSUZUX0RPVUJMCQDOCAIJAMwIAgkBBEJ1cm4CBQdhc3NldElkAAEFA25pbAkBFWZpbmlzaFJlYmlydGhJbnRlcm5hbAYFBmluaXRUeAkApQgBCAUBaQZjYWxsZXIJAJEDAggFAWkIcGF5bWVudHMAAQYCAAcJAAIBAi1FcnJvciEgV3JvbmcgaXRlbSBhdHRhY2hlZCB0byBkb3VibGUgcmV3YXJkcyEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQERZmluaXNoUmViaXJ0aEl0ZW0CBmluaXRUeAhpdGVtQ29kZQMDCQAAAgkAkAMBCAUBaQhwYXltZW50cwACCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQAAQcEB2Fzc2V0SWQJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQLYm9vc3RlclR5cGUJAQhhc1N0cmluZwEJAPwHBAkBD2dldEl0ZW1zQWRkcmVzcwACFGNoZWNrQXJ0ZWZhY3REZXRhaWxzCQDMCAIJANgEAQUHYXNzZXRJZAUDbmlsBQNuaWwDCQAAAgULYm9vc3RlclR5cGUFC2Jvb3N0ZXJUeXBlAwkAAAIFC2Jvb3N0ZXJUeXBlAgtBUlQtSFdFUkFTRQkAzggCCQDMCAIJAQRCdXJuAgUHYXNzZXRJZAABBQNuaWwJARVmaW5pc2hSZWJpcnRoSW50ZXJuYWwGBQZpbml0VHgJAKUIAQgFAWkGY2FsbGVyCQCRAwIIBQFpCHBheW1lbnRzAAEHBQhpdGVtQ29kZQcDCQAAAgULYm9vc3RlclR5cGUCDEFSVC1IV1JFU0NVRQkAzggCCQDMCAIJAQRCdXJuAgUHYXNzZXRJZAABBQNuaWwJARVmaW5pc2hSZWJpcnRoSW50ZXJuYWwGBQZpbml0VHgJAKUIAQgFAWkGY2FsbGVyCQCRAwIIBQFpCHBheW1lbnRzAAEHAgAGAwkAAAIFC2Jvb3N0ZXJUeXBlAg5BUlQtR0lGVF9ET1VCTAkAzggCCQDMCAIJAQRCdXJuAgUHYXNzZXRJZAABBQNuaWwJARVmaW5pc2hSZWJpcnRoSW50ZXJuYWwGBQZpbml0VHgJAKUIAQgFAWkGY2FsbGVyCQCRAwIIBQFpCHBheW1lbnRzAAEGAgAHCQACAQIbRXJyb3IhIFdyb25nIGl0ZW0gYXR0YWNoZWQgCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQkBFWZpbmlzaFJlYmlydGhJbnRlcm5hbAYFBmluaXRUeAkApQgBCAUBaQZjYWxsZXIJAJEDAggFAWkIcGF5bWVudHMAAAcCAAcJAAIBAhBJbnZhbGlkIHBheW1lbnRzAOaHkxM=", "height": 3352711, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4xsVdBshJfVZjMV7QrxDN3YRRJX9nTdY7nN1fG81xmog Next: 3KKv5b318bKU66b9s2gMWxo9EeKhsT1yLCVD7TjUUKNw Diff:
OldNewDifferences
167167
168168
169169 func getRandomWin (tx,finishHeight,blacklistCode) = {
170- let n = getRandomNumber(1000, tx, finishHeight, 0)
171- let result = if (if ((100 > n))
172- then (blacklistCode != "docking_A")
173- else false)
174- then "docking_A"
175- else if (if ((200 > n))
176- then (blacklistCode != "docking_B")
177- else false)
178- then "docking_B"
179- else if (if ((300 > n))
180- then (blacklistCode != "docking_C")
170+ let jackpotRandom = getRandomNumber(10, tx, finishHeight, 1)
171+ if ((jackpotRandom == 1))
172+ then $Tuple2(jackpotRandom, "jackpot")
173+ else {
174+ let n = getRandomNumber(1000, tx, finishHeight, 0)
175+ let result = if (if ((100 > n))
176+ then (blacklistCode != "docking_A")
181177 else false)
182- then "docking_C"
183- else if (if ((400 > n))
184- then (blacklistCode != "docking_D")
178+ then "docking_A"
179+ else if (if ((200 > n))
180+ then (blacklistCode != "docking_B")
185181 else false)
186- then "docking_D"
187- else if (if ((450 > n))
188- then (blacklistCode != "incubator")
182+ then "docking_B"
183+ else if (if ((300 > n))
184+ then (blacklistCode != "docking_C")
189185 else false)
190- then "incubator"
191- else if (if ((490 > n))
192- then (blacklistCode != "duckling_40")
186+ then "docking_C"
187+ else if (if ((400 > n))
188+ then (blacklistCode != "docking_D")
193189 else false)
194- then "duckling_40"
195- else if (if ((540 > n))
196- then (blacklistCode != "duckling_20")
190+ then "docking_D"
191+ else if (if ((450 > n))
192+ then (blacklistCode != "incubator")
197193 else false)
198- then "duckling_20"
199- else if (if ((640 > n))
200- then (blacklistCode != "item!ART-FEED5")
194+ then "incubator"
195+ else if (if ((490 > n))
196+ then (blacklistCode != "duckling_40")
201197 else false)
202- then "item!ART-FEED5"
203- else if (if ((710 > n))
204- then (blacklistCode != "item!ART-FEED10")
198+ then "duckling_40"
199+ else if (if ((540 > n))
200+ then (blacklistCode != "duckling_20")
205201 else false)
206- then "item!ART-FEED10"
207- else if (if ((740 > n))
208- then (blacklistCode != "item!ART-FEED15")
202+ then "duckling_20"
203+ else if (if ((640 > n))
204+ then (blacklistCode != "item!ART-FEED5")
209205 else false)
210- then "item!ART-FEED15"
211- else if (if ((770 > n))
212- then (blacklistCode != "item!ART-FEED20")
206+ then "item!ART-FEED5"
207+ else if (if ((710 > n))
208+ then (blacklistCode != "item!ART-FEED10")
213209 else false)
214- then "item!ART-FEED20"
215- else if (if ((790 > n))
216- then (blacklistCode != "item!ART-FEED25")
210+ then "item!ART-FEED10"
211+ else if (if ((740 > n))
212+ then (blacklistCode != "item!ART-FEED15")
217213 else false)
218- then "item!ART-FEED25"
219- else if (if ((810 > n))
220- then (blacklistCode != "item!ART-FEED50")
214+ then "item!ART-FEED15"
215+ else if (if ((770 > n))
216+ then (blacklistCode != "item!ART-FEED20")
221217 else false)
222- then "item!ART-FEED50"
223- else if (if ((830 > n))
224- then (blacklistCode != "item!ART-FEED100")
218+ then "item!ART-FEED20"
219+ else if (if ((790 > n))
220+ then (blacklistCode != "item!ART-FEED25")
225221 else false)
226- then "item!ART-FEED100"
227- else if (if ((860 > n))
228- then (blacklistCode != "item!ART-MUTARIUM-G")
222+ then "item!ART-FEED25"
223+ else if (if ((810 > n))
224+ then (blacklistCode != "item!ART-FEED50")
229225 else false)
230- then "item!ART-MUTARIUM-G"
231- else if (if ((890 > n))
232- then (blacklistCode != "item!ART-MUTARIUM-D")
226+ then "item!ART-FEED50"
227+ else if (if ((830 > n))
228+ then (blacklistCode != "item!ART-FEED100")
233229 else false)
234- then "item!ART-MUTARIUM-D"
235- else if (if ((910 > n))
236- then (blacklistCode != "item!ART-FREEGENE")
230+ then "item!ART-FEED100"
231+ else if (if ((860 > n))
232+ then (blacklistCode != "item!ART-MUTARIUM-G")
237233 else false)
238- then "item!ART-FREEGENE"
239- else if (if ((930 > n))
240- then (blacklistCode != "item!ART-FIXGENE")
234+ then "item!ART-MUTARIUM-G"
235+ else if (if ((890 > n))
236+ then (blacklistCode != "item!ART-MUTARIUM-D")
241237 else false)
242- then "item!ART-FIXGENE"
243- else if (if ((980 > n))
244- then (blacklistCode != "trtl_incubator")
238+ then "item!ART-MUTARIUM-D"
239+ else if (if ((910 > n))
240+ then (blacklistCode != "item!ART-FREEGENE")
245241 else false)
246- then "trtl_incubator"
247- else "item!ART-POTION"
248- $Tuple2(n, result)
242+ then "item!ART-FREEGENE"
243+ else if (if ((930 > n))
244+ then (blacklistCode != "item!ART-FIXGENE")
245+ else false)
246+ then "item!ART-FIXGENE"
247+ else if (if ((980 > n))
248+ then (blacklistCode != "trtl_incubator")
249+ else false)
250+ then "trtl_incubator"
251+ else "item!ART-POTION"
252+ $Tuple2(n, result)
253+ }
249254 }
250255
251256
291296 then call
292297 else throw("Strict value is not equal to itself.")
293298 }
294- else if ((win == "incubator"))
299+ else if ((win == "jackpot"))
295300 then {
296- let call = if (!(double))
301+ let call = invoke(getCanineIncubatorAddress(), "issueJackpot", [address, txId, "WWWWHWTF"], nil)
302+ if ((call == call))
303+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
304+ else throw("Strict value is not equal to itself.")
305+ }
306+ else if ((win == "incubator"))
307+ then {
308+ let call = if (!(double))
309+ then {
310+ let first = invoke(getCanineIncubatorAddress(), "issueFree", [address, txId], nil)
311+ if ((first == first))
312+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first))]
313+ else throw("Strict value is not equal to itself.")
314+ }
315+ else {
316+ let first = invoke(getCanineIncubatorAddress(), "issueFree", [address, txId], nil)
317+ if ((first == first))
318+ then {
319+ let second = invoke(getTurtleIncubatorAddress(), "issueFreeTurtle", [address, txId], nil)
320+ if ((second == second))
321+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result1"), asString(second)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win1"), "incubator")]
322+ else throw("Strict value is not equal to itself.")
323+ }
324+ else throw("Strict value is not equal to itself.")
325+ }
326+ if ((call == call))
327+ then call
328+ else throw("Strict value is not equal to itself.")
329+ }
330+ else if ((indexOf(win, "duckling") != unit))
297331 then {
298- let first = invoke(getCanineIncubatorAddress(), "issueFree", [address, txId], nil)
299- if ((first == first))
300- then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first))]
332+ let level = parseIntValue(split(win, "_")[1])
333+ let levelFinal = if (double)
334+ then (2 * level)
335+ else level
336+ let call = invoke(getBabyDuckAddress(), "issueFreeDuckling", [address, txId, levelFinal], nil)
337+ if ((call == call))
338+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
301339 else throw("Strict value is not equal to itself.")
302340 }
303- else {
304- let first = invoke(getCanineIncubatorAddress(), "issueFree", [address, txId], nil)
305- if ((first == first))
306- then {
307- let second = invoke(getTurtleIncubatorAddress(), "issueFreeTurtle", [address, txId], nil)
308- if ((second == second))
309- then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result1"), asString(second)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win1"), "incubator")]
310- else throw("Strict value is not equal to itself.")
311- }
312- else throw("Strict value is not equal to itself.")
313- }
314- if ((call == call))
315- then call
316- else throw("Strict value is not equal to itself.")
317- }
318- else if ((indexOf(win, "duckling") != unit))
319- then {
320- let level = parseIntValue(split(win, "_")[1])
321- let levelFinal = if (double)
322- then (2 * level)
323- else level
324- let call = invoke(getBabyDuckAddress(), "issueFreeDuckling", [address, txId, levelFinal], nil)
325- if ((call == call))
326- then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
327- else throw("Strict value is not equal to itself.")
328- }
329- else if ((win == "trtl_incubator"))
330- then {
331- let call = if (!(double))
332- then {
333- let first = invoke(getTurtleIncubatorAddress(), "issueFreeTurtle", [address, txId], nil)
334- if ((first == first))
335- then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first))]
336- else throw("Strict value is not equal to itself.")
337- }
338- else {
339- let first = invoke(getTurtleIncubatorAddress(), "issueFreeTurtle", [address, txId], nil)
340- if ((first == first))
341- then {
342- let second = invoke(getCanineIncubatorAddress(), "issueFree", [address, txId], nil)
343- if ((second == second))
344- then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result1"), asString(second)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win1"), "trtl_incubator")]
345- else throw("Strict value is not equal to itself.")
346- }
347- else throw("Strict value is not equal to itself.")
348- }
349- if ((call == call))
350- then call
351- else throw("Strict value is not equal to itself.")
352- }
353- else if ((indexOf(win, "item") != unit))
341+ else if ((win == "trtl_incubator"))
354342 then {
355- let itemName = split(win, "!")[1]
356343 let call = if (!(double))
357344 then {
358- let first = invoke(getItemsAddress(), "issueArtefactIndex", [itemName, address, 0], nil)
345+ let first = invoke(getTurtleIncubatorAddress(), "issueFreeTurtle", [address, txId], nil)
359346 if ((first == first))
360347 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first))]
361348 else throw("Strict value is not equal to itself.")
362349 }
363350 else {
364- let first = invoke(getItemsAddress(), "issueArtefactIndex", [itemName, address, 0], nil)
351+ let first = invoke(getTurtleIncubatorAddress(), "issueFreeTurtle", [address, txId], nil)
365352 if ((first == first))
366353 then {
367- let second = invoke(getItemsAddress(), "issueArtefactIndex", [itemName, address, 1], nil)
354+ let second = invoke(getCanineIncubatorAddress(), "issueFree", [address, txId], nil)
368355 if ((second == second))
369- then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result1"), asString(second)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win1"), win)]
356+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result1"), asString(second)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win1"), "trtl_incubator")]
370357 else throw("Strict value is not equal to itself.")
371358 }
372359 else throw("Strict value is not equal to itself.")
375362 then call
376363 else throw("Strict value is not equal to itself.")
377364 }
378- else throw(("RFB: Some error occured, please contact the admins! " + win))
365+ else if ((indexOf(win, "item") != unit))
366+ then {
367+ let itemName = split(win, "!")[1]
368+ let call = if (!(double))
369+ then {
370+ let first = invoke(getItemsAddress(), "issueArtefactIndex", [itemName, address, 0], nil)
371+ if ((first == first))
372+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first))]
373+ else throw("Strict value is not equal to itself.")
374+ }
375+ else {
376+ let first = invoke(getItemsAddress(), "issueArtefactIndex", [itemName, address, 0], nil)
377+ if ((first == first))
378+ then {
379+ let second = invoke(getItemsAddress(), "issueArtefactIndex", [itemName, address, 1], nil)
380+ if ((second == second))
381+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result1"), asString(second)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win1"), win)]
382+ else throw("Strict value is not equal to itself.")
383+ }
384+ else throw("Strict value is not equal to itself.")
385+ }
386+ if ((call == call))
387+ then call
388+ else throw("Strict value is not equal to itself.")
389+ }
390+ else throw(("RFB: Some error occured, please contact the admins! " + win))
379391 if ((result == result))
380392 then {
381- let returnToSender = getRandomReturn(fromBase58String(initTx), finishBlock)
393+ let returnToSender = if (rescue)
394+ then getRandomReturn(fromBase58String(initTx), finishBlock)
395+ else false
382396 let returnPayload = if (returnToSender)
383397 then {
384398 let assetId = fromBase58String(getStringValue((((("address_" + address) + "_initTx_") + initTx) + "_assetId")))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func tryGetStringExternal (address,key) = match getString(address, key) {
55 case a: String =>
66 a
77 case _ =>
88 ""
99 }
1010
1111
1212 func tryGetInteger (key) = match getInteger(this, key) {
1313 case b: Int =>
1414 b
1515 case _ =>
1616 0
1717 }
1818
1919
2020 func tryGetString (key) = tryGetStringExternal(this, key)
2121
2222
2323 func asInt (value) = match value {
2424 case int: Int =>
2525 int
2626 case string: String =>
2727 throw(("RAI: wrong type, expected: Int, but got: " + string))
2828 case _ =>
2929 throw("RAI: wrong type, expected: Int")
3030 }
3131
3232
3333 func asBoolean (value) = match value {
3434 case boolean: Boolean =>
3535 boolean
3636 case _ =>
3737 throw("FAB: wrong type, expected: Boolean")
3838 }
3939
4040
4141 func asString (value) = match value {
4242 case s: String =>
4343 s
4444 case s: Int =>
4545 throw("wrong type, expected: String, got: Int")
4646 case s: Unit =>
4747 throw("wrong type, expected: String, got: Unit")
4848 case _ =>
4949 throw("wrong type, expected: String")
5050 }
5151
5252
5353 func staticKey_oracleAddress () = "static_oracleAddress"
5454
5555
5656 func staticKey_extraFee () = "static_extraFee"
5757
5858
5959 func staticKey_feeAggregator () = "static_feeAggregator"
6060
6161
6262 func staticKey_canineIncubatorAddress () = "static_canineIncubatorAddress"
6363
6464
6565 func staticKey_canineBreederAddress () = "static_canineBreederAddress"
6666
6767
6868 func staticKey_couponsAddress () = "static_couponsAddress"
6969
7070
7171 func staticKey_canineStakingAddress () = "static_canineStakingAddress"
7272
7373
7474 func staticKey_duckStakingAddress () = "static_farmingAddressNew"
7575
7676
7777 func staticKey_duckIncubatorAddress () = "static_incubatorAddress"
7878
7979
8080 func staticKey_itemsAddress () = "static_itemsAddress"
8181
8282
8383 func staticKey_canineWavesRebirthPrice () = "static_canineWavesRebirthPrice"
8484
8585
8686 func staticKey_turtleIncubatorAddress () = "static_turtleIncubatorAddress"
8787
8888
8989 func staticKey_babyDuckAddress () = "static_babyDuckAddress"
9090
9191
9292 func getOracle () = Address(fromBase58String(tryGetString(staticKey_oracleAddress())))
9393
9494
9595 func getFeeAggregator () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_feeAggregator())))
9696
9797
9898 func getCanineBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_canineBreederAddress())))
9999
100100
101101 func getCanineIncubatorAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_canineIncubatorAddress())))
102102
103103
104104 func getCouponsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_couponsAddress())))
105105
106106
107107 func getCanineStakingAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_canineStakingAddress())))
108108
109109
110110 func getDuckStakingAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_duckStakingAddress())))
111111
112112
113113 func getDuckIncubatorAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_duckIncubatorAddress())))
114114
115115
116116 func getItemsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_itemsAddress())))
117117
118118
119119 func getTurtleIncubatorAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_turtleIncubatorAddress())))
120120
121121
122122 func getBabyDuckAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_babyDuckAddress())))
123123
124124
125125 func tryGetIntegerExternal (address,key) = match getInteger(address, key) {
126126 case b: Int =>
127127 b
128128 case _ =>
129129 throw("TR: Value not found in sc!")
130130 }
131131
132132
133133 let wavesAmount = tryGetIntegerExternal(getOracle(), staticKey_canineWavesRebirthPrice())
134134
135135 let delayForHatching = 2
136136
137137 func checkReal (assetId) = if (if ((value(assetInfo(assetId)).issuer == getCanineBreederAddress()))
138138 then true
139139 else (value(assetInfo(assetId)).issuer == getCanineIncubatorAddress()))
140140 then value(assetInfo(assetId)).issuer
141141 else throw("not valid NFT")
142142
143143
144144 func checkAdditionalPayment (payment) = if (isDefined(payment.assetId))
145145 then throw("RCAP: Please attach waves")
146146 else {
147147 let feeAmount = getIntegerValue(getOracle(), staticKey_extraFee())
148148 if ((payment.amount != feeAmount))
149149 then throw((("RCAP: Please attach exactly " + toString(feeAmount)) + " amount of wavelets"))
150150 else [ScriptTransfer(getFeeAggregator(), feeAmount, unit)]
151151 }
152152
153153
154154 func getRandomNumber (options,txId,hatchingFinishHeight,offset) = {
155155 let randomSeedBlock = value(blockInfoByHeight((hatchingFinishHeight - 1)))
156156 let randomHash = sha256((txId + value(randomSeedBlock.vrf)))
157157 (toInt(randomHash, (offset * 8)) % options)
158158 }
159159
160160
161161 func tryGetBoolean (key) = match getBoolean(key) {
162162 case b: Boolean =>
163163 b
164164 case _ =>
165165 false
166166 }
167167
168168
169169 func getRandomWin (tx,finishHeight,blacklistCode) = {
170- let n = getRandomNumber(1000, tx, finishHeight, 0)
171- let result = if (if ((100 > n))
172- then (blacklistCode != "docking_A")
173- else false)
174- then "docking_A"
175- else if (if ((200 > n))
176- then (blacklistCode != "docking_B")
177- else false)
178- then "docking_B"
179- else if (if ((300 > n))
180- then (blacklistCode != "docking_C")
170+ let jackpotRandom = getRandomNumber(10, tx, finishHeight, 1)
171+ if ((jackpotRandom == 1))
172+ then $Tuple2(jackpotRandom, "jackpot")
173+ else {
174+ let n = getRandomNumber(1000, tx, finishHeight, 0)
175+ let result = if (if ((100 > n))
176+ then (blacklistCode != "docking_A")
181177 else false)
182- then "docking_C"
183- else if (if ((400 > n))
184- then (blacklistCode != "docking_D")
178+ then "docking_A"
179+ else if (if ((200 > n))
180+ then (blacklistCode != "docking_B")
185181 else false)
186- then "docking_D"
187- else if (if ((450 > n))
188- then (blacklistCode != "incubator")
182+ then "docking_B"
183+ else if (if ((300 > n))
184+ then (blacklistCode != "docking_C")
189185 else false)
190- then "incubator"
191- else if (if ((490 > n))
192- then (blacklistCode != "duckling_40")
186+ then "docking_C"
187+ else if (if ((400 > n))
188+ then (blacklistCode != "docking_D")
193189 else false)
194- then "duckling_40"
195- else if (if ((540 > n))
196- then (blacklistCode != "duckling_20")
190+ then "docking_D"
191+ else if (if ((450 > n))
192+ then (blacklistCode != "incubator")
197193 else false)
198- then "duckling_20"
199- else if (if ((640 > n))
200- then (blacklistCode != "item!ART-FEED5")
194+ then "incubator"
195+ else if (if ((490 > n))
196+ then (blacklistCode != "duckling_40")
201197 else false)
202- then "item!ART-FEED5"
203- else if (if ((710 > n))
204- then (blacklistCode != "item!ART-FEED10")
198+ then "duckling_40"
199+ else if (if ((540 > n))
200+ then (blacklistCode != "duckling_20")
205201 else false)
206- then "item!ART-FEED10"
207- else if (if ((740 > n))
208- then (blacklistCode != "item!ART-FEED15")
202+ then "duckling_20"
203+ else if (if ((640 > n))
204+ then (blacklistCode != "item!ART-FEED5")
209205 else false)
210- then "item!ART-FEED15"
211- else if (if ((770 > n))
212- then (blacklistCode != "item!ART-FEED20")
206+ then "item!ART-FEED5"
207+ else if (if ((710 > n))
208+ then (blacklistCode != "item!ART-FEED10")
213209 else false)
214- then "item!ART-FEED20"
215- else if (if ((790 > n))
216- then (blacklistCode != "item!ART-FEED25")
210+ then "item!ART-FEED10"
211+ else if (if ((740 > n))
212+ then (blacklistCode != "item!ART-FEED15")
217213 else false)
218- then "item!ART-FEED25"
219- else if (if ((810 > n))
220- then (blacklistCode != "item!ART-FEED50")
214+ then "item!ART-FEED15"
215+ else if (if ((770 > n))
216+ then (blacklistCode != "item!ART-FEED20")
221217 else false)
222- then "item!ART-FEED50"
223- else if (if ((830 > n))
224- then (blacklistCode != "item!ART-FEED100")
218+ then "item!ART-FEED20"
219+ else if (if ((790 > n))
220+ then (blacklistCode != "item!ART-FEED25")
225221 else false)
226- then "item!ART-FEED100"
227- else if (if ((860 > n))
228- then (blacklistCode != "item!ART-MUTARIUM-G")
222+ then "item!ART-FEED25"
223+ else if (if ((810 > n))
224+ then (blacklistCode != "item!ART-FEED50")
229225 else false)
230- then "item!ART-MUTARIUM-G"
231- else if (if ((890 > n))
232- then (blacklistCode != "item!ART-MUTARIUM-D")
226+ then "item!ART-FEED50"
227+ else if (if ((830 > n))
228+ then (blacklistCode != "item!ART-FEED100")
233229 else false)
234- then "item!ART-MUTARIUM-D"
235- else if (if ((910 > n))
236- then (blacklistCode != "item!ART-FREEGENE")
230+ then "item!ART-FEED100"
231+ else if (if ((860 > n))
232+ then (blacklistCode != "item!ART-MUTARIUM-G")
237233 else false)
238- then "item!ART-FREEGENE"
239- else if (if ((930 > n))
240- then (blacklistCode != "item!ART-FIXGENE")
234+ then "item!ART-MUTARIUM-G"
235+ else if (if ((890 > n))
236+ then (blacklistCode != "item!ART-MUTARIUM-D")
241237 else false)
242- then "item!ART-FIXGENE"
243- else if (if ((980 > n))
244- then (blacklistCode != "trtl_incubator")
238+ then "item!ART-MUTARIUM-D"
239+ else if (if ((910 > n))
240+ then (blacklistCode != "item!ART-FREEGENE")
245241 else false)
246- then "trtl_incubator"
247- else "item!ART-POTION"
248- $Tuple2(n, result)
242+ then "item!ART-FREEGENE"
243+ else if (if ((930 > n))
244+ then (blacklistCode != "item!ART-FIXGENE")
245+ else false)
246+ then "item!ART-FIXGENE"
247+ else if (if ((980 > n))
248+ then (blacklistCode != "trtl_incubator")
249+ else false)
250+ then "trtl_incubator"
251+ else "item!ART-POTION"
252+ $Tuple2(n, result)
253+ }
249254 }
250255
251256
252257 func getRandomReturn (tx,finishHeight) = {
253258 let n = getRandomNumber(2, tx, finishHeight, 1)
254259 if ((n == 0))
255260 then true
256261 else false
257262 }
258263
259264
260265 func finishRebirthInternal (initTx,address,additionalPayment,double,blacklistCode,rescue) = {
261266 let finishBlock = tryGetInteger((((("address_" + address) + "_initTx_") + initTx) + "_finishBlock"))
262267 let status = tryGetString((((("address_" + address) + "_initTx_") + initTx) + "_status"))
263268 let validPayment = checkAdditionalPayment(additionalPayment)
264269 if ((validPayment == validPayment))
265270 then if ((status != "open"))
266271 then throw("rebirth is finished or not open")
267272 else if ((finishBlock > height))
268273 then throw("you cannot finish rebirth, yet")
269274 else {
270275 let output = getRandomWin(fromBase58String(initTx), finishBlock, blacklistCode)
271276 let win = output._2
272277 let random = output._1
273278 let txId = initTx
274279 let result = if ((indexOf(win, "docking") != unit))
275280 then {
276281 let color = takeRight(win, 1)
277282 let call = if (!(double))
278283 then {
279284 let first = invoke(getCanineStakingAddress(), "addFreePerch", [address, color, 1], nil)
280285 if ((first == first))
281286 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first))]
282287 else throw("Strict value is not equal to itself.")
283288 }
284289 else {
285290 let first = invoke(getCanineStakingAddress(), "addFreePerch", [address, color, 2], nil)
286291 if ((first == first))
287292 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result1"), asString(first)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win1"), win)]
288293 else throw("Strict value is not equal to itself.")
289294 }
290295 if ((call == call))
291296 then call
292297 else throw("Strict value is not equal to itself.")
293298 }
294- else if ((win == "incubator"))
299+ else if ((win == "jackpot"))
295300 then {
296- let call = if (!(double))
301+ let call = invoke(getCanineIncubatorAddress(), "issueJackpot", [address, txId, "WWWWHWTF"], nil)
302+ if ((call == call))
303+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
304+ else throw("Strict value is not equal to itself.")
305+ }
306+ else if ((win == "incubator"))
307+ then {
308+ let call = if (!(double))
309+ then {
310+ let first = invoke(getCanineIncubatorAddress(), "issueFree", [address, txId], nil)
311+ if ((first == first))
312+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first))]
313+ else throw("Strict value is not equal to itself.")
314+ }
315+ else {
316+ let first = invoke(getCanineIncubatorAddress(), "issueFree", [address, txId], nil)
317+ if ((first == first))
318+ then {
319+ let second = invoke(getTurtleIncubatorAddress(), "issueFreeTurtle", [address, txId], nil)
320+ if ((second == second))
321+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result1"), asString(second)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win1"), "incubator")]
322+ else throw("Strict value is not equal to itself.")
323+ }
324+ else throw("Strict value is not equal to itself.")
325+ }
326+ if ((call == call))
327+ then call
328+ else throw("Strict value is not equal to itself.")
329+ }
330+ else if ((indexOf(win, "duckling") != unit))
297331 then {
298- let first = invoke(getCanineIncubatorAddress(), "issueFree", [address, txId], nil)
299- if ((first == first))
300- then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first))]
332+ let level = parseIntValue(split(win, "_")[1])
333+ let levelFinal = if (double)
334+ then (2 * level)
335+ else level
336+ let call = invoke(getBabyDuckAddress(), "issueFreeDuckling", [address, txId, levelFinal], nil)
337+ if ((call == call))
338+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
301339 else throw("Strict value is not equal to itself.")
302340 }
303- else {
304- let first = invoke(getCanineIncubatorAddress(), "issueFree", [address, txId], nil)
305- if ((first == first))
306- then {
307- let second = invoke(getTurtleIncubatorAddress(), "issueFreeTurtle", [address, txId], nil)
308- if ((second == second))
309- then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result1"), asString(second)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win1"), "incubator")]
310- else throw("Strict value is not equal to itself.")
311- }
312- else throw("Strict value is not equal to itself.")
313- }
314- if ((call == call))
315- then call
316- else throw("Strict value is not equal to itself.")
317- }
318- else if ((indexOf(win, "duckling") != unit))
319- then {
320- let level = parseIntValue(split(win, "_")[1])
321- let levelFinal = if (double)
322- then (2 * level)
323- else level
324- let call = invoke(getBabyDuckAddress(), "issueFreeDuckling", [address, txId, levelFinal], nil)
325- if ((call == call))
326- then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
327- else throw("Strict value is not equal to itself.")
328- }
329- else if ((win == "trtl_incubator"))
330- then {
331- let call = if (!(double))
332- then {
333- let first = invoke(getTurtleIncubatorAddress(), "issueFreeTurtle", [address, txId], nil)
334- if ((first == first))
335- then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first))]
336- else throw("Strict value is not equal to itself.")
337- }
338- else {
339- let first = invoke(getTurtleIncubatorAddress(), "issueFreeTurtle", [address, txId], nil)
340- if ((first == first))
341- then {
342- let second = invoke(getCanineIncubatorAddress(), "issueFree", [address, txId], nil)
343- if ((second == second))
344- then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result1"), asString(second)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win1"), "trtl_incubator")]
345- else throw("Strict value is not equal to itself.")
346- }
347- else throw("Strict value is not equal to itself.")
348- }
349- if ((call == call))
350- then call
351- else throw("Strict value is not equal to itself.")
352- }
353- else if ((indexOf(win, "item") != unit))
341+ else if ((win == "trtl_incubator"))
354342 then {
355- let itemName = split(win, "!")[1]
356343 let call = if (!(double))
357344 then {
358- let first = invoke(getItemsAddress(), "issueArtefactIndex", [itemName, address, 0], nil)
345+ let first = invoke(getTurtleIncubatorAddress(), "issueFreeTurtle", [address, txId], nil)
359346 if ((first == first))
360347 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first))]
361348 else throw("Strict value is not equal to itself.")
362349 }
363350 else {
364- let first = invoke(getItemsAddress(), "issueArtefactIndex", [itemName, address, 0], nil)
351+ let first = invoke(getTurtleIncubatorAddress(), "issueFreeTurtle", [address, txId], nil)
365352 if ((first == first))
366353 then {
367- let second = invoke(getItemsAddress(), "issueArtefactIndex", [itemName, address, 1], nil)
354+ let second = invoke(getCanineIncubatorAddress(), "issueFree", [address, txId], nil)
368355 if ((second == second))
369- then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result1"), asString(second)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win1"), win)]
356+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result1"), asString(second)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win1"), "trtl_incubator")]
370357 else throw("Strict value is not equal to itself.")
371358 }
372359 else throw("Strict value is not equal to itself.")
373360 }
374361 if ((call == call))
375362 then call
376363 else throw("Strict value is not equal to itself.")
377364 }
378- else throw(("RFB: Some error occured, please contact the admins! " + win))
365+ else if ((indexOf(win, "item") != unit))
366+ then {
367+ let itemName = split(win, "!")[1]
368+ let call = if (!(double))
369+ then {
370+ let first = invoke(getItemsAddress(), "issueArtefactIndex", [itemName, address, 0], nil)
371+ if ((first == first))
372+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first))]
373+ else throw("Strict value is not equal to itself.")
374+ }
375+ else {
376+ let first = invoke(getItemsAddress(), "issueArtefactIndex", [itemName, address, 0], nil)
377+ if ((first == first))
378+ then {
379+ let second = invoke(getItemsAddress(), "issueArtefactIndex", [itemName, address, 1], nil)
380+ if ((second == second))
381+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result1"), asString(second)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win1"), win)]
382+ else throw("Strict value is not equal to itself.")
383+ }
384+ else throw("Strict value is not equal to itself.")
385+ }
386+ if ((call == call))
387+ then call
388+ else throw("Strict value is not equal to itself.")
389+ }
390+ else throw(("RFB: Some error occured, please contact the admins! " + win))
379391 if ((result == result))
380392 then {
381- let returnToSender = getRandomReturn(fromBase58String(initTx), finishBlock)
393+ let returnToSender = if (rescue)
394+ then getRandomReturn(fromBase58String(initTx), finishBlock)
395+ else false
382396 let returnPayload = if (returnToSender)
383397 then {
384398 let assetId = fromBase58String(getStringValue((((("address_" + address) + "_initTx_") + initTx) + "_assetId")))
385399 let issuer = checkReal(assetId)
386400 let gen = asString(invoke(getCanineBreederAddress(), "getGenFromName", [value(assetInfo(assetId)).name], nil))
387401 if ((gen == gen))
388402 then {
389403 let call = invoke(issuer, "increaseRarity", [toBase58String(assetId), gen], nil)
390404 if ((call == call))
391405 then [ScriptTransfer(addressFromStringValue(address), 1, assetId)]
392406 else throw("Strict value is not equal to itself.")
393407 }
394408 else throw("Strict value is not equal to itself.")
395409 }
396410 else nil
397411 (((result ++ [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win"), win), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_status"), "finish"), IntegerEntry((((("address_" + address) + "_initTx_") + initTx) + "_random"), random)]) ++ validPayment) ++ returnPayload)
398412 }
399413 else throw("Strict value is not equal to itself.")
400414 }
401415 else throw("Strict value is not equal to itself.")
402416 }
403417
404418
405419 @Callable(i)
406420 func configureOracle (oracle) = if ((i.caller != this))
407421 then throw("RCU: admin only")
408422 else [StringEntry("static_oracleAddress", oracle)]
409423
410424
411425
412426 @Callable(i)
413427 func initRebirth () = {
414428 let pmtCanine = i.payments[0]
415429 let pmtWaves = i.payments[1]
416430 let assetId = value(pmtCanine.assetId)
417431 let initTx = toBase58String(i.transactionId)
418432 let address = toString(i.caller)
419433 if ((pmtCanine.amount != 1))
420434 then throw("NFT is not attached")
421435 else if (if ((pmtWaves.amount != wavesAmount))
422436 then true
423437 else (pmtWaves.assetId != unit))
424438 then throw("Wavespayment is not attached or wrong!")
425439 else {
426440 let sendToAggreGator = (pmtWaves.amount / 4)
427441 let topup = (pmtWaves.amount - sendToAggreGator)
428442 let addMore = invoke(getCanineStakingAddress(), "addWavesAndStakeMore", nil, [AttachedPayment(unit, topup)])
429443 if ((addMore == addMore))
430444 then {
431445 let issuer = checkReal(assetId)
432446 let gen = asString(invoke(getCanineBreederAddress(), "getGenFromName", [value(assetInfo(assetId)).name], nil))
433447 if ((gen == gen))
434448 then {
435449 let call = invoke(issuer, "reduceRarity", [toBase58String(assetId), gen], nil)
436450 if ((call == call))
437451 then [IntegerEntry((((("address_" + address) + "_initTx_") + initTx) + "_finishBlock"), (height + delayForHatching)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_status"), "open"), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_assetId"), toBase58String(assetId)), ScriptTransfer(getFeeAggregator(), sendToAggreGator, unit)]
438452 else throw("Strict value is not equal to itself.")
439453 }
440454 else throw("Strict value is not equal to itself.")
441455 }
442456 else throw("Strict value is not equal to itself.")
443457 }
444458 }
445459
446460
447461
448462 @Callable(i)
449463 func finishRebirth (initTx) = finishRebirthInternal(initTx, toString(i.caller), i.payments[0], false, "", false)
450464
451465
452466
453467 @Callable(i)
454468 func finishRebirthDouble (initTx) = if (!(if ((size(i.payments) == 2))
455469 then (i.payments[0].amount == 1)
456470 else false))
457471 then throw("Invalid payment")
458472 else {
459473 let assetId = value(i.payments[0].assetId)
460474 let boosterType = asString(invoke(getItemsAddress(), "checkArtefactDetails", [toBase58String(assetId)], nil))
461475 if ((boosterType == boosterType))
462476 then if ((boosterType == "ART-GIFT_DOUBL"))
463477 then ([Burn(assetId, 1)] ++ finishRebirthInternal(initTx, toString(i.caller), i.payments[1], true, "", false))
464478 else throw("Error! Wrong item attached to double rewards!")
465479 else throw("Strict value is not equal to itself.")
466480 }
467481
468482
469483
470484 @Callable(i)
471485 func finishRebirthItem (initTx,itemCode) = if (if ((size(i.payments) == 2))
472486 then (i.payments[0].amount == 1)
473487 else false)
474488 then {
475489 let assetId = value(i.payments[0].assetId)
476490 let boosterType = asString(invoke(getItemsAddress(), "checkArtefactDetails", [toBase58String(assetId)], nil))
477491 if ((boosterType == boosterType))
478492 then if ((boosterType == "ART-HWERASE"))
479493 then ([Burn(assetId, 1)] ++ finishRebirthInternal(initTx, toString(i.caller), i.payments[1], false, itemCode, false))
480494 else if ((boosterType == "ART-HWRESCUE"))
481495 then ([Burn(assetId, 1)] ++ finishRebirthInternal(initTx, toString(i.caller), i.payments[1], false, "", true))
482496 else if ((boosterType == "ART-GIFT_DOUBL"))
483497 then ([Burn(assetId, 1)] ++ finishRebirthInternal(initTx, toString(i.caller), i.payments[1], true, "", false))
484498 else throw("Error! Wrong item attached ")
485499 else throw("Strict value is not equal to itself.")
486500 }
487501 else if ((size(i.payments) == 1))
488502 then finishRebirthInternal(initTx, toString(i.caller), i.payments[0], false, "", false)
489503 else throw("Invalid payments")
490504
491505

github/deemru/w8io/026f985 
99.55 ms