Transaction Details
SMART CONTRACT
Transaction Hash
900227b75c66b9fa859dd888545a433f17c266fa34529ac6bfde39b5cc8252d8
Block Status
Smart Contract State
SCID Reserves
| SCID | Amount (Atomic Units) |
|---|---|
| 0000000000000000000000000000000000000000000000000000000000000000 | 0 |
String Variables
| Key | Value |
|---|---|
| C | 2f2f2020436f7079726967687420323032342e20436976696c776172652e20416c6c207269676874732072657365727665642e0a2f2f202054454c4120446563656e7472616c697a65642057656220446f63756d656e74202854454c412d444f432d31290a46756e6374696f6e20496e697469616c697a655072697661746528292055696e7436340a313020494620696e69742829203d3d2030205448454e20474f544f2033300a32302052455455524e20310a33302053544f524528226e616d65486472222c2022616968656c706572732e6a7322290a33312053544f524528226465736372486472222c202241492068656c706572732066696c6522290a33322053544f5245282269636f6e55524c486472222c202222290a33332053544f524528226455524c222c2022616968656c706572732e6a7322290a33342053544f52452822646f6354797065222c202254454c412d4a532d3122290a33352053544f52452822737562446972222c202222290a33362053544f5245282266696c65436865636b43222c20223236653538323436663663613039643932313831613733333739323230353939653961356334366264356134626465356561306238333566666230623331643422290a33372053544f5245282266696c65436865636b53222c20223236353237653433306565643733343838353630386233373065316239316337666565326361353634343139623335326365386332373039316436386565666122290a3130302052455455524e20300a456e642046756e6374696f6e0a0a46756e6374696f6e20696e697428292055696e7436340a31302049462045584953545328226f776e65722229203d3d2030205448454e20474f544f2033300a32302052455455524e20310a33302053544f524528226f776e6572222c20616464726573732829290a35302053544f52452822646f6356657273696f6e222c2022312e302e3022290a36302053544f5245282268617368222c204845582854584944282929290a37302053544f524528226c696b6573222c2030290a38302053544f524528226469736c696b6573222c2030290a3130302052455455524e20300a456e642046756e6374696f6e0a0a46756e6374696f6e2061646472657373282920537472696e670a31302044494d207320617320537472696e670a3230204c45542073203d205349474e455228290a33302049462049535f414444524553535f56414c4944287329205448454e20474f544f2035300a34302052455455524e2022616e6f6e220a35302052455455524e20414444524553535f535452494e472873290a456e642046756e6374696f6e0a0a46756e6374696f6e205261746528722055696e743634292055696e7436340a31302044494d206164647220617320537472696e670a3135204c45542061646472203d206164647265737328290a31362049462072203c2031303020262620455849535453286164647229203d3d2030202626206164647220213d2022616e6f6e22205448454e20474f544f2033300a32302052455455524e20310a33302053544f524528616464722c2022222b722b225f222b424c4f434b5f4845494748542829290a34302049462072203c203530205448454e20474f544f2037300a35302053544f524528226c696b6573222c204c4f414428226c696b657322292b31290a36302052455455524e20300a37302053544f524528226469736c696b6573222c204c4f414428226469736c696b657322292b31290a3130302052455455524e20300a456e642046756e6374696f6e0a0a2f2a0a66756e6374696f6e206973556e6465724f72466163696e675365676d656e7428656e656d792c2074617267657429207b0a09636f6e7374206c656674203d204d6174682e6d696e287461726765742e78312c207461726765742e7832293b0a09636f6e7374207269676874203d204d6174682e6d6178287461726765742e78312c207461726765742e7832293b0a09696628656e656d792e78203c206c65667420262620656e656d792e666163696e67203d3d3d31297b0a090972657475726e20747275653b0a097d656c736520696628656e656d792e78203e20726967687420262620656e656d792e666163696e67203d3d3d2d31297b0a090972657475726e20747275653b0a097d656c736520696628656e656d792e78203e3d206c65667420262620656e656d792e78203c3d207269676874297b0a090972657475726e20747275653b0a097d0a2020202072657475726e2066616c73653b0a7d0a0a66756e6374696f6e2069735365676d656e7442656c6f775365676d656e7428736567412c20736567422c207468726573686f6c64203d203029207b0a0a202020202f2f20312e20486f72697a6f6e74616c206f7665726c617020636865636b0a20202020636f6e7374206c6566744120203d204d6174682e6d696e28736567412e78312c20736567412e7832293b0a20202020636f6e737420726967687441203d204d6174682e6d617828736567412e78312c20736567412e7832293b0a0a20202020636f6e7374206c6566744220203d204d6174682e6d696e28736567422e78312c20736567422e7832293b0a20202020636f6e737420726967687442203d204d6174682e6d617828736567422e78312c20736567422e7832293b0a0a20202020636f6e7374206f7665726c6170203d202128726967687441203c206c65667442202d2031207c7c206c65667441203e20726967687442202b2031293b0a2020202069662028216f7665726c6170292072657475726e2066616c73653b0a0a202020202f2f20322e20436f6d7075746520617665726167652068656967687473202868616e646c657320736c6f706573290a20202020636f6e73742061766741203d2028736567412e7931202b20736567412e793229202a20302e353b0a20202020636f6e73742061766742203d2028736567422e7931202b20736567422e793229202a20302e353b0a0a202020202f2f20332e20412069732062656c6f77204220696620697473206176657261676520792069732067726561746572202873637265656e20636f6f726473290a2020202072657475726e2061766741203e2061766742202b207468726573686f6c643b0a7d0a0a0a0a66756e6374696f6e20676574506c6174666f726d4279496428696429207b0a20202020666f722028636f6e737420706c6174206f662067616d652e706c6174666f726d7329207b0a0909696628706c61742e6964203d3d3d2069642972657475726e20706c61743b0a097d090a7d09090a0a0a66756e6374696f6e20726573657441747461636b7328656e656d79297b0a09656e656d792e77616e744b69636b203d2066616c73653b0a09656e656d792e77616e7450756e6368203d2066616c73653b0a090a7d0a66756e6374696f6e20706c617965724973546872656174656e696e6728706c6179657229207b0a0972657475726e20706c617965722e77616e744b69636b207c7c0a0909706c617965722e77616e7450756e6368207c7c0a0909706c617965722e616e696d2e7374617465203d3d3d20226b69636b22207c7c0a0909706c617965722e616e696d2e7374617465203d3d3d2022686967684b69636b22207c7c0a0909706c617965722e616e696d2e7374617465203d3d3d202270756e6368223b0a7d0a0a66756e6374696f6e20636f756e74456e656d696573426568696e6428656e656d7929207b0a202020206c657420636f756e74203d20303b0a0a20202020666f722028636f6e73742065206f662067616d652e656e656d69657329207b0a20202020202020206966202865203d3d3d20656e656d792920636f6e74696e75653b0a202020202020202069662028652e646561642920636f6e74696e75653b0a0a20202020202020202f2f2053616d6520706c6174666f726d206f6e6c790a202020202020202069662028652e6f6e506c6174666f726d20213d3d20656e656d792e6f6e506c6174666f726d2920636f6e74696e75653b0a0a20202020202020202f2f204d75737420626520626568696e642072656c617469766520746f20666163696e670a202020202020202069662028656e656d792e666163696e67203d3d3d203120262620652e78203c20656e656d792e782920636f756e742b2b3b0a202020202020202069662028656e656d792e666163696e67203d3d3d202d3120262620652e78203e20656e656d792e782920636f756e742b2b3b0a202020207d0a0a2020202072657475726e20636f756e743b0a7d0a66756e6374696f6e20636f756e74456e656d696573416865616428656e656d7929207b0a202020206c657420636f756e74203d20303b0a0a20202020666f722028636f6e73742065206f662067616d652e656e656d69657329207b0a20202020202020206966202865203d3d3d20656e656d792920636f6e74696e75653b0a202020202020202069662028652e646561642920636f6e74696e75653b0a0a20202020202020202f2f2053616d6520706c6174666f726d206f6e6c790a202020202020202069662028652e6f6e506c6174666f726d20213d3d20656e656d792e6f6e506c6174666f726d2920636f6e74696e75653b0a0a20202020202020202f2f204d75737420626520626568696e642072656c617469766520746f20666163696e670a202020202020202069662028656e656d792e666163696e67203d3d3d203120262620652e78203e20656e656d792e782920636f756e742b2b3b0a202020202020202069662028656e656d792e666163696e67203d3d3d202d3120262620652e78203c20656e656d792e782920636f756e742b2b3b0a202020207d0a0a2020202072657475726e20636f756e743b0a7d0a0a0a66756e6374696f6e206b656570456e656d7953706163696e6728656e656d7929207b0a20202020636f6e73742073706163696e67203d2035303b202f2f20686f77206d75636820737061636520746865792077616e740a20202020666f722028636f6e73742065206f662067616d652e656e656d69657329207b0a20202020202020206966202865203d3d3d20656e656d79207c7c20652e64656164207c7c20652e696e4169722920636f6e74696e75653b0a0a20202020202020202f2f2053616d6520706c6174666f726d206f6e6c790a202020202020202069662028652e6f6e506c6174666f726d20213d3d20656e656d792e6f6e506c6174666f726d2920636f6e74696e75653b0a0a20202020202020202f2f20436865636b206966206520697320696e2066726f6e74206f6620656e656d790a2020202020202020636f6e7374206478203d20652e78202d20656e656d792e783b0a0a202020202020202069662028656e656d792e666163696e67203d3d3d2031202626206478203e2030202626206478203c2073706163696e6729207b20202020202020200a20202020202020202020202072657475726e20747275653b0a20202020202020207d0a0a202020202020202069662028656e656d792e666163696e67203d3d3d202d31202626206478203c2030202626202d6478203c2073706163696e6729207b20202020202020200a20202020202020202020202072657475726e20747275653b0a20202020202020207d0a202020207d0a2020202072657475726e2066616c73653b0a7d0a0a0a0a66756e6374696f6e2061766f696457616c6c7328656e656d79297b0a09696628646972656374696f6e426c6f636b656428656e656d79292026262021656e656d792e696e416972297b0a0909656e656d792e666163696e67203d202d656e656d792e666163696e673b0a0909656e656d792e6d6f7665496e707574203d20656e656d792e666163696e670a0909696628646972656374696f6e426c6f636b656428656e656d7929297b0a090909656e656d792e6d6f7665496e707574203d20303b0a09097d0a097d0a7d0a66756e6374696f6e2061766f696457616c6c734f6e53616d65506c6174666f726d28656e656d792c2077616c6c536567297b0a0a09696628646972656374696f6e426c6f636b656428656e656d79292026262021656e656d792e696e41697220262620656e656d792e6f6e506c6174666f726d203d3d3d20656e656d792e626c6f636b6564502026262021616943616e4a756d704f76657228656e656d792c2077616c6c53656729297b0a0909656e656d792e666163696e67203d202d656e656d792e666163696e673b0a0909656e656d792e6d6f7665496e707574203d20656e656d792e666163696e670a0909696628646972656374696f6e426c6f636b656428656e656d7929297b0a090909656e656d792e6d6f7665496e707574203d20303b0a09097d0a097d0a7d0a0a0a66756e6374696f6e20646972656374696f6e426c6f636b656428656e656d79297b0a09696628656e656d792e666163696e67203d3d3d203120262620656e656d792e626c6f636b65645269676874292072657475726e20747275653b0a09696628656e656d792e666163696e67203d3d3d202d3120262620656e656d792e626c6f636b65644c656674292072657475726e20747275653b0a0972657475726e2066616c73650a7d0a66756e6374696f6e2064657465637457616c6c416865616428656e656d7929207b0a0a0a20202020666f7220286c657420706c6174206f662067616d652e706c6174666f726d7329207b0a2020202020202020666f7220286c657420736567206f6620706c61742e7365676d656e747329207b0a09090909636f6e737420646972656374696f6e203d206169436865636b57616c6c416865616428656e656d792c20736567290a20202020202020202020202069662028646972656374696f6e29207b0a09090909696628646972656374696f6e203d3d3d2022726967687422297b0a0909090909656e656d792e626c6f636b656450203d20706c61742e69643b0a0909090909656e656d792e626c6f636b65645269676874203d20747275653b0a0909090909656e656d792e626c6f636b65644c656674203d2066616c73653b0a090909090972657475726e207365670a090909097d656c73657b0a0909090909656e656d792e626c6f636b656450203d20706c61742e69643b0a0909090909656e656d792e626c6f636b65644c656674203d20747275653b0a0909090909656e656d792e626c6f636b65645269676874203d2066616c73653b0a090909090972657475726e207365670a090909097d0a2020202020202020202020207d0a20202020202020207d0a202020207d0a0a2020202072657475726e206e756c6c3b0a7d0a0a66756e6374696f6e20616943616e4a756d704f7665722861692c2073656729207b0a09696628217365672972657475726e20747275653b0a20202020636f6e73742077616c6c486569676874203d207365672e6d617859202d207365672e6d696e593b0a2020202072657475726e2077616c6c486569676874203c3d203130303b0a7d0a0a0a66756e6374696f6e206169436865636b57616c6c41686561642861692c207365672c206c6f6f6b41686561644d6178203d20343029207b0a0a2020202069662028217365672e697357616c6c292072657475726e2066616c73653b0a0a0a20202020636f6e737420746f70203d2061692e79202b2061692e686569676874202a202e32353b0a20202020636f6e737420626f74746f6d203d2061692e79202b2061692e686569676874202a20302e353b0a0a202020202f2f20766572746963616c206f7665726c61700a2020202069662028626f74746f6d202d31203c3d207365672e6d696e59207c7c20746f70202b31203e3d207365672e6d617859292072657475726e2066616c73653b0a09090a2020202020202020636f6e73742064697374203d207365672e7831202d2061692e780a2020202020202020696620284d6174682e616273286469737429203c3d206c6f6f6b41686561644d61782026262064697374203e203029207b0909090a20202020202020202020202072657475726e202022726967687422203b0a20202020202020207d656c736520696620284d6174682e616273286469737429203c3d206c6f6f6b41686561644d61782026262064697374203c2030297b0909090a09090972657475726e2020226c65667422203b0a09097d0a0a2020202072657475726e2066616c73653b0a7d0a0a0a66756e6374696f6e2069734e656172506c6174666f726d4564676528656e656d792c20706c61742c207468726573686f6c64203d20323029207b0a20202020636f6e7374206c65667420203d20706c61742e6d696e583b0a20202020636f6e7374207269676874203d20706c61742e6d6178583b0a0a09200a20202020636f6e7374206e6561724c65667420203d20656e656d792e78203c206c656674202b207468726573686f6c643b0a20202020636f6e7374206e6561725269676874203d20656e656d792e78203e207269676874202d207468726573686f6c643b0a0a202020202f2f204f6e6c7920636f756e7420617320616e20656467652069662074686572652773206e6f20636f6e6e6563746564207365676d656e740a20202020696620286e6561724c656674292072657475726e20747275653b0a20202020696620286e6561725269676874292072657475726e20747275653b0a0a2020202072657475726e2066616c73653b0a7d0a0a0a66756e6374696f6e2069734e65617245646765466163696e6728656e656d792c20706c6174666f726d2c207468726573686f6c64203d20323029207b0a20202020636f6e7374206c65667420203d20706c6174666f726d2e6d696e583b0a20202020636f6e7374207269676874203d20706c6174666f726d2e6d6178583b0a0a2020202069662028656e656d792e666163696e67203c203029207b0a20202020202020202f2f20466163696e67206c6566740a202020202020202072657475726e20656e656d792e78203c3d206c656674202b207468726573686f6c643b0a202020207d20656c7365207b0a20202020202020202f2f20466163696e672072696768740a202020202020202072657475726e20656e656d792e78203e3d207269676874202d207468726573686f6c643b0a202020207d0a7d0a0a0a66756e6374696f6e206973466163696e675365676d656e7428656e656d792c207365676d656e74297b0a0a0969662028656e656d792e666163696e67203c203029207b0a20202020202020202f2f20466163696e67206c6566740a202020202020202072657475726e20656e656d792e78203e207365676d656e742e6d6964583b0a202020207d20656c7365207b0a20202020202020202f2f20466163696e672072696768740a202020202020202072657475726e20656e656d792e78203c207365676d656e742e6d6964583b0a202020207d0a7d0a0a66756e6374696f6e206973506c6179657242656c6f77506c6174666f726d28706c61742c207468726573686f6c64203d20323029207b0a20202020636f6e7374207078203d2067616d652e706c617965722e783b0a20202020636f6e7374207079203d2067616d652e706c617965722e793b0a0a20202020666f722028636f6e737420736567206f6620706c61742e7365676d656e747329207b0a0a20202020202020202f2f204f7074696f6e616c3a206f6e6c7920747265617420666c6f6f722d74797065207365676d656e747320617320706c6174666f726d20737572666163650a2020202020202020696620287365672e697357616c6c290a202020202020202020202020636f6e74696e75653b0a0a2020202020202020636f6e7374207831203d207365672e78313b0a2020202020202020636f6e7374207832203d207365672e78323b0a2020202020202020636f6e7374207931203d207365672e79313b0a2020202020202020636f6e7374207932203d207365672e79323b0a0a20202020202020202f2f20536b697020766572746963616c202f206e6561722d766572746963616c207365676d656e7473202877616c6c73290a2020202020202020636f6e7374206478203d207832202d2078313b0a2020202020202020696620284d6174682e61627328647829203c20302e30303031290a202020202020202020202020636f6e74696e75653b0a0a2020202020202020636f6e7374206c65667420203d204d6174682e6d696e2878312c207832293b0a2020202020202020636f6e7374207269676874203d204d6174682e6d61782878312c207832293b0a0a20202020202020202f2f20506c61796572206d75737420626520686f72697a6f6e74616c6c7920756e6465722074686973207365676d656e7420287769746820736d616c6c206d617267696e290a2020202020202020696620287078203c206c656674202d207468726573686f6c64207c7c207078203e207269676874202b207468726573686f6c64290a202020202020202020202020636f6e74696e75653b0a0a20202020202020202f2f20496e746572706f6c6174652074686520706c6174666f726d206865696768742061742070780a20202020202020206c65742074203d20287078202d20783129202f2064783b0a0a20202020202020202f2f20436c616d70207420736f20776520646f6e277420657874656e64206265796f6e6420746865207365676d656e740a20202020202020206966202874203c2030207c7c2074203e2031290a202020202020202020202020636f6e74696e75653b0a0a2020202020202020636f6e737420795f61745f7078203d207931202b2074202a20287932202d207931293b0a0a20202020202020202f2f20506c61796572206d7573742062652062656c6f772074686520737572666163650a2020202020202020696620287079203e20795f61745f7078202b203130290a20202020202020202020202072657475726e20747275653b0a202020207d0a0a2020202072657475726e2066616c73653b0a7d0a0a0a0a66756e6374696f6e20697353616665546f44726f7028656e656d7929207b0a20202020636f6e7374206665657458203d20656e656d792e783b0a20202020636f6e7374206665657459203d20656e656d792e79202b20656e656d792e686569676874202f20323b0a0a20202020636f6e73742073656742656c6f77203d20676574506c6174666f726d42656c6f77506f696e742866656574582c206665657459293b0a0a2020202072657475726e2073656742656c6f7720213d3d206e756c6c3b0a7d0a0a66756e6374696f6e20676574506c6174666f726d42656c6f77506f696e7428782c207929207b0a202020206c65742062657374203d206e756c6c3b0a202020206c6574206265737459203d20496e66696e6974793b0a0a20202020666f722028636f6e737420706c6174206f662067616d652e706c6174666f726d7329207b0a2020202020202020666f722028636f6e737420736567206f6620706c61742e7365676d656e747329207b0a0909096966287365672e697357616c6c29636f6e74696e75653b0a2020202020202020202020202f2f20536b6970207365676d656e74732061626f7665206f72206174207468652073616d65206865696768740a202020202020202020202020636f6e737420736567546f70203d204d6174682e6d696e287365672e79312c207365672e7932293b0a20202020202020202020202069662028736567546f70203c3d20792920636f6e74696e75653b0a0a2020202020202020202020202f2f20436865636b20696620782069732077697468696e207365676d656e7420686f72697a6f6e74616c207370616e0a202020202020202020202020636f6e7374206c65667420203d204d6174682e6d696e287365672e78312c207365672e7832293b0a202020202020202020202020636f6e7374207269676874203d204d6174682e6d6178287365672e78312c207365672e7832293b0a2020202020202020202020206966202878203c206c656674207c7c2078203e2072696768742920636f6e74696e75653b0a0a2020202020202020202020202f2f20496e746572706f6c617465207468652059206174207468697320580a202020202020202020202020636f6e73742074203d202878202d207365672e783129202f20287365672e7832202d207365672e7831293b0a202020202020202020202020636f6e7374206979203d207365672e7931202b2074202a20287365672e7932202d207365672e7931293b0a0a2020202020202020202020202f2f204d7573742062652062656c6f772074686520706f696e740a202020202020202020202020696620286979203c3d20792920636f6e74696e75653b0a0a2020202020202020202020202f2f204b6565702074686520636c6f73657374206f6e650a202020202020202020202020696620286979203c20626573745929207b0a202020202020202020202020202020206265737459203d2069793b0a2020202020202020202020202020202062657374203d207365673b0a2020202020202020202020207d0a20202020202020207d0a202020207d0a0a2020202072657475726e20626573743b0a7d0a0a66756e6374696f6e2063616e4a756d70546f5365676d656e7428656e656d792c2066726f6d2c20746f29207b0a20202020636f6e73742067726176697479203d2067616d652e677261766974793b0a20202020636f6e7374206a756d70203d2067616d652e6a756d70537472656e6774683b0a0a20202020636f6e7374206d61784a756d70486569676874203d20286a756d70202a206a756d7029202f202832202a2067726176697479293b0a0a20202020636f6e73742066726f6d546f70203d204d6174682e6d696e2866726f6d2e79312c2066726f6d2e7932293b0a20202020636f6e737420746f546f702020203d204d6174682e6d696e28746f2e79312c20746f2e7932293b0a0a20202020636f6e737420766572746963616c44696666203d20746f546f70202d2066726f6d546f703b202f2f206e65676174697665203d2061626f76650a0a202020202f2f20746f6f20686967680a2020202069662028766572746963616c44696666203c202d6d61784a756d70486569676874292072657475726e2066616c73653b0a0a202020202f2f20746f6f2066617220646f776e0a2020202069662028766572746963616c44696666203e20313530292072657475726e2066616c73653b0a0a202020202f2f206c616e64696e67207a6f6e65206f6e2074686520746172676574207365676d656e740a20202020636f6e7374206c65667420203d204d6174682e6d696e28746f2e78312c20746f2e7832293b0a20202020636f6e7374207269676874203d204d6174682e6d617828746f2e78312c20746f2e7832293b0a0a202020202f2f20636c616d70206c616e64696e675820746f20746865207365676d656e740a20202020636f6e7374206c616e64696e6758203d204d6174682e6d6178286c6566742c204d6174682e6d696e28656e656d792e782c20726967687429293b0a0a20202020636f6e737420686f72697a6f6e74616c476170203d204d6174682e616273286c616e64696e6758202d20656e656d792e78293b0a0a202020202f2f2061697274696d650a20202020636f6e73742074696d655570203d206a756d70202f20677261766974793b0a20202020636f6e73742074696d65446f776e203d204d6174682e73717274282832202a20286d61784a756d70486569676874202b20766572746963616c446966662929202f2067726176697479293b0a20202020636f6e737420746f74616c41697254696d65203d2074696d655570202b2074696d65446f776e3b0a0a20202020636f6e7374206d6178486f72697a6f6e74616c5265616368203d20656e656d792e7370656564202a20746f74616c41697254696d653b0a0a2020202072657475726e20686f72697a6f6e74616c476170203c3d206d6178486f72697a6f6e74616c52656163683b0a7d0a0a66756e6374696f6e2063616e5365676d656e7452656163685365676d656e742866726f6d5365672c20746f5365672c206a756d702c20677261766974792c20737065656429207b0a0a20202020636f6e73742066726f6d546f70203d204d6174682e6d696e2866726f6d5365672e79312c2066726f6d5365672e7932293b0a20202020636f6e737420746f546f702020203d204d6174682e6d696e28746f5365672e79312c20746f5365672e7932293b0a0a20202020636f6e737420766572746963616c44696666203d20746f546f70202d2066726f6d546f703b202f2f206e65676174697665203d2061626f76650a0a20202020636f6e7374206d61784a756d70486569676874203d20286a756d70202a206a756d7029202f202832202a2067726176697479293b0a0a202020202f2f20546f6f20686967680a2020202069662028766572746963616c44696666203c202d6d61784a756d70486569676874290a202020202020202072657475726e2066616c73653b0a0a202020202f2f20546f6f2066617220646f776e20286f7074696f6e616c290a2020202069662028766572746963616c44696666203e20313530290a202020202020202072657475726e2066616c73653b0a0a202020202f2f20486f72697a6f6e74616c2072616e6765730a20202020636f6e73742066726f6d4c65667420203d204d6174682e6d696e2866726f6d5365672e78312c2066726f6d5365672e7832293b0a20202020636f6e73742066726f6d5269676874203d204d6174682e6d61782866726f6d5365672e78312c2066726f6d5365672e7832293b0a0a20202020636f6e737420746f4c65667420203d204d6174682e6d696e28746f5365672e78312c20746f5365672e7832293b0a20202020636f6e737420746f5269676874203d204d6174682e6d617828746f5365672e78312c20746f5365672e7832293b0a0a202020202f2f20436f6d70757465206d617820686f72697a6f6e74616c2072656163680a20202020636f6e73742074696d655570203d206a756d70202f20677261766974793b0a20202020636f6e73742074696d65446f776e203d204d6174682e73717274282832202a20286d61784a756d70486569676874202b20766572746963616c446966662929202f2067726176697479293b0a20202020636f6e737420746f74616c41697254696d65203d2074696d655570202b2074696d65446f776e3b0a0a20202020636f6e7374206d61785265616368203d207370656564202a20746f74616c41697254696d653b0a0a202020202f2f20436865636b20696620414e5920706f696e74206f6e2066726f6d5365672063616e20726561636820414e5920706f696e74206f6e20746f5365670a202020202f2f205468697320697320696e74657276616c206f7665726c617020657870616e646564206279206d617852656163680a20202020636f6e737420657870616e64656446726f6d4c65667420203d2066726f6d4c65667420202d206d617852656163683b0a20202020636f6e737420657870616e64656446726f6d5269676874203d2066726f6d5269676874202b206d617852656163683b0a0a20202020636f6e7374206f7665726c6170203d0a2020202020202020657870616e64656446726f6d5269676874203e3d20746f4c6566742026260a2020202020202020657870616e64656446726f6d4c65667420203c3d20746f52696768743b0a0a2020202072657475726e206f7665726c61703b0a7d0a0a66756e6374696f6e2066696e64426573744a756d705365676d656e7428656e656d792c20656e656d79506c61742c20706c61796572506c617429207b0a0a20202020636f6e7374206a756d70203d2067616d652e6a756d70537472656e6774683b0a20202020636f6e73742067726176697479203d2067616d652e677261766974793b0a20202020636f6e7374207370656564203d20656e656d792e73706565643b0a0a20202020666f722028636f6e73742070736567206f6620706c61796572506c61742e7365676d656e747329207b0a09096966202820707365672e697357616c6c2920636f6e74696e75653b0a2020202020202020666f722028636f6e73742065736567206f6620656e656d79506c61742e7365676d656e747329207b0a0909096966202820657365672e697357616c6c2920636f6e74696e75653b0a2020202020202020202020206966202863616e5365676d656e7452656163685365676d656e7428657365672c20707365672c206a756d702c20677261766974792c2073706565642929207b0a2020202020202020202020202020202072657475726e20707365673b200a2020202020202020202020207d0a20202020202020207d0a202020207d0a0a2020202072657475726e206e756c6c3b0a7d0a0a66756e6374696f6e2066696e64436c6f736573745365676d656e74734265747765656e28706c6174666f726d412c20706c6174666f726d4229207b0a202020206c6574206265737441203d206e756c6c3b0a202020206c6574206265737442203d206e756c6c3b0a202020206c6574206265737444697374203d20496e66696e6974793b0a0a20202020666f722028636f6e73742073656741206f6620706c6174666f726d412e7365676d656e747329207b0a0909696628736567412e697357616c6c29636f6e74696e75653b0a2020202020202020666f722028636f6e73742073656742206f6620706c6174666f726d422e7365676d656e747329207b0a090909696628736567422e697357616c6c29636f6e74696e75653b0a0909090a2020202020202020202020202f2f20436f6d7061726520656e64706f696e7473206f66204120746f20656e64706f696e7473206f6620420a202020202020202020202020636f6e7374206431203d206469737428736567412e78312c20736567412e79312c20736567422e78312c20736567422e7931293b0a202020202020202020202020636f6e7374206432203d206469737428736567412e78312c20736567412e79312c20736567422e78322c20736567422e7932293b0a202020202020202020202020636f6e7374206433203d206469737428736567412e78322c20736567412e79322c20736567422e78312c20736567422e7931293b0a202020202020202020202020636f6e7374206434203d206469737428736567412e78322c20736567412e79322c20736567422e78322c20736567422e7932293b0a0a202020202020202020202020636f6e7374206c6f63616c4d696e203d204d6174682e6d696e2864312c2064322c2064332c206434293b0a0a202020202020202020202020696620286c6f63616c4d696e203c20626573744469737429207b0a202020202020202020202020202020206265737444697374203d206c6f63616c4d696e3b0a202020202020202020202020202020206265737441203d20736567413b0a202020202020202020202020202020206265737442203d20736567423b0a2020202020202020202020207d0a20202020202020207d0a202020207d0a0a2020202072657475726e207b20736567413a2062657374412c20736567423a2062657374422c20646973743a206265737444697374207d3b0a7d0a0a66756e6374696f6e2066696e64436c6f736573745365676d656e74734265747765656e4d6964506f696e747328706c6174666f726d412c20706c6174666f726d4229207b0a202020206c6574206265737441203d206e756c6c3b0a202020206c6574206265737442203d206e756c6c3b0a202020206c6574206265737453636f7265203d20496e66696e6974793b0a0a20202020666f722028636f6e73742073656741206f6620706c6174666f726d412e7365676d656e747329207b0a0909696628736567412e697357616c6c29636f6e74696e75653b0a2020202020202020666f722028636f6e73742073656742206f6620706c6174666f726d422e7365676d656e747329207b0a090909696628736567422e697357616c6c29636f6e74696e75653b0a0a2020202020202020202020202f2f204d6964706f696e742064697374616e63650a202020202020202020202020636f6e7374206d7841203d2028736567412e7831202b20736567412e783229202a20302e353b0a202020202020202020202020636f6e7374206d7941203d2028736567412e7931202b20736567412e793229202a20302e353b0a202020202020202020202020636f6e7374206d7842203d2028736567422e7831202b20736567422e783229202a20302e353b0a202020202020202020202020636f6e7374206d7942203d2028736567422e7931202b20736567422e793229202a20302e353b0a0a202020202020202020202020636f6e7374206d696444697374203d2064697374286d78412c206d79412c206d78422c206d7942293b0a0a2020202020202020202020202f2f20436f6d62696e65642073636f726520286d6964706f696e7420776569676874656420736c696768746c79206d6f7265290a202020202020202020202020636f6e73742073636f7265203d206d6964446973743b0a0a2020202020202020202020206966202873636f7265203c206265737453636f726529207b0a202020202020202020202020202020206265737453636f7265203d2073636f72653b0a202020202020202020202020202020206265737441203d20736567413b0a202020202020202020202020202020206265737442203d20736567423b0a2020202020202020202020207d0a20202020202020207d0a202020207d0a0a2020202072657475726e207b20736567413a2062657374412c20736567423a2062657374422c20646973743a206265737453636f7265207d3b0a7d0a0a66756e6374696f6e20646973742878312c2079312c2078322c20793229207b0a20202020636f6e7374206478203d207831202d2078323b0a20202020636f6e7374206479203d207931202d2079323b0a2020202072657475726e204d6174682e737172742864782a6478202b2064792a6479293b0a7d0a0a66756e6374696f6e20676574506c6174666f726d556e64657228656e7469747929207b0a20202020636f6e7374206665657459203d20656e746974792e79202b20656e746974792e686569676874202f20323b0a0a202020206c65742062657374536567203d206e756c6c3b0a202020206c65742062657374506c6174203d206e756c6c3b0a202020206c6574206265737444656c7461203d20496e66696e6974793b0a0a20202020666f722028636f6e737420706c6174206f662067616d652e706c6174666f726d7329207b0a2020202020202020666f722028636f6e737420736567206f6620706c61742e7365676d656e747329207b0a0909096966287365672e697357616c6c29636f6e74696e75653b0a202020202020202020202020636f6e7374206c65667420203d204d6174682e6d696e287365672e78312c207365672e7832293b0a202020202020202020202020636f6e7374207269676874203d204d6174682e6d6178287365672e78312c207365672e7832293b0a0a20202020202020202020202069662028656e746974792e78203c206c656674207c7c20656e746974792e78203e2072696768742920636f6e74696e75653b0a0a202020202020202020202020636f6e73742074203d2028656e746974792e78202d207365672e783129202f20287365672e7832202d207365672e7831293b0a202020202020202020202020636f6e737420706c617459203d207365672e7931202b20287365672e7932202d207365672e793129202a20743b0a0a202020202020202020202020636f6e73742064656c7461203d20706c617459202d2066656574593b0a0a2020202020202020202020206966202864656c7461203c202d342920636f6e74696e75653b0a2020202020202020202020206966202864656c7461203e2034302920636f6e74696e75653b0a0a2020202020202020202020206966202864656c7461203c206265737444656c746129207b0a202020202020202020202020202020206265737444656c7461203d2064656c74613b0a2020202020202020202020202020202062657374536567203d207365673b0a2020202020202020202020202020202062657374506c6174203d20706c61743b0a2020202020202020202020207d0a20202020202020207d0a202020207d0a0a2020202072657475726e207b207365676d656e743a20626573745365672c20706c6174666f726d3a2062657374506c6174207d3b0a7d0a66756e6374696f6e206765745365676d656e744f76657243757272656e742863757272656e7453656729207b0a0a20202020636f6e7374206375724c65667420203d204d6174682e6d696e2863757272656e745365672e78312c2063757272656e745365672e7832293b0a20202020636f6e7374206375725269676874203d204d6174682e6d61782863757272656e745365672e78312c2063757272656e745365672e7832293b0a20202020636f6e737420637572546f702020203d204d6174682e6d696e2863757272656e745365672e79312c2063757272656e745365672e7932293b0a0a202020206c65742063616e64696461746573203d205b5d3b0a0a20202020666f722028636f6e737420706c6174206f662067616d652e706c6174666f726d7329207b0a2020202020202020666f722028636f6e737420736567206f6620706c61742e7365676d656e747329207b0a0a20202020202020202020202069662028736567203d3d3d2063757272656e74536567207c7c207365672e697357616c6c202920636f6e74696e75653b0a0a202020202020202020202020636f6e737420736567546f70203d204d6174682e6d696e287365672e79312c207365672e7932293b0a0a2020202020202020202020202f2f206d7573742062652061626f76650a20202020202020202020202069662028736567546f70203e3d20637572546f702920636f6e74696e75653b0a0a2020202020202020202020202f2f206d757374206f7665726c617020686f72697a6f6e74616c6c790a202020202020202020202020636f6e7374206c65667420203d204d6174682e6d696e287365672e78312c207365672e7832293b0a202020202020202020202020636f6e7374207269676874203d204d6174682e6d6178287365672e78312c207365672e7832293b0a0a202020202020202020202020696620287269676874203c206375724c656674207c7c206c656674203e2063757252696768742920636f6e74696e75653b0a0a20202020202020202020202063616e646964617465732e7075736828736567293b0a20202020202020207d0a202020207d0a0a202020206966202863616e646964617465732e6c656e677468203d3d3d2030292072657475726e206e756c6c3b0a0a202020202f2f207069636b206c6f7765737420706c6174666f726d2061626f76650a2020202063616e646964617465732e736f72742828612c206229203d3e207b0a202020202020202072657475726e204d6174682e6d696e28622e79312c20622e793229202d204d6174682e6d696e28612e79312c20612e7932293b0a202020207d293b0a2020202072657475726e2063616e646964617465735b305d3b0a7d0a0a66756e6374696f6e206765745365676d656e744f766572506c6174666f726d28656e656d79506c6174666f726d29207b0a0a20202020636f6e737420706c61744c65667420203d20656e656d79506c6174666f726d2e6d696e583b0a20202020636f6e737420706c61745269676874203d20656e656d79506c6174666f726d2e6d6178583b0a20202020636f6e737420706c6174546f702020203d20656e656d79506c6174666f726d2e6d696e593b0a0a202020206c65742063616e64696461746573203d205b5d3b0a0a20202020666f722028636f6e737420706c6174206f662067616d652e706c6174666f726d7329207b0a2020202020202020666f722028636f6e737420736567206f6620706c61742e7365676d656e747329207b0a2020202020202020202020202f2f20536b6970207365676d656e74732062656c6f6e67696e6720746f207468652073616d6520706c6174666f726d0a20202020202020202020202069662028706c6174203d3d3d20656e656d79506c6174666f726d207c7c207365672e697357616c6c202920636f6e74696e75653b0a0a202020202020202020202020636f6e737420736567546f70203d204d6174682e6d696e287365672e79312c207365672e7932293b0a0a2020202020202020202020202f2f204d7573742062652061626f76652074686520706c6174666f726d0a20202020202020202020202069662028736567546f70203e3d20706c6174546f702920636f6e74696e75653b0a0a2020202020202020202020202f2f20486f72697a6f6e74616c206f7665726c617020776974682074686520454e5449524520706c6174666f726d0a202020202020202020202020636f6e7374206c65667420203d204d6174682e6d696e287365672e78312c207365672e7832293b0a202020202020202020202020636f6e7374207269676874203d204d6174682e6d6178287365672e78312c207365672e7832293b0a0a202020202020202020202020696620287269676874203c20706c61744c656674207c7c206c656674203e20706c617452696768742920636f6e74696e75653b0a0a20202020202020202020202063616e646964617465732e7075736828736567293b0a20202020202020207d0a202020207d0a0a202020206966202863616e646964617465732e6c656e677468203d3d3d2030292072657475726e206e756c6c3b0a202020202f2f205069636b20746865204c4f57455354207365676d656e742061626f76652074686520706c6174666f726d0a2020202063616e646964617465732e736f72742828612c206229203d3e207b0a2020202020202020636f6e73742061546f70203d204d6174682e6d696e28612e79312c20612e7932293b0a2020202020202020636f6e73742062546f70203d204d6174682e6d696e28622e79312c20622e7932293b0a202020202020202072657475726e2062546f70202d2061546f703b202f2f2072657665727365643a206c6f776573742041424f56450a202020207d293b0a0a2020202072657475726e2063616e646964617465735b305d3b0a7d0a2f2f666f7220646561746820616e696d6174696f6e0a66756e6374696f6e206765745365676d656e74416e676c652873656729207b0a2020202072657475726e204d6174682e6174616e32287365672e7932202d207365672e79312c207365672e7832202d207365672e7831293b0a7d0a0a0a2a2f |
| dURL | 616968656c706572732e6a73 |
| descrHdr | 41492068656c706572732066696c65 |
| dislikes | 0 |
| docType | 54454c412d4a532d31 |
| docVersion | 312e302e30 |
| fileCheckC | 32366535383234366636636130396439323138316137333337393232303539396539613563343662643561346264653565613062383335666662306233316434 |
| fileCheckS | 32363532376534333065656437333438383536303862333730653162393163376665653263613536343431396233353263653863323730393164363865656661 |
| hash | 39303032323762373563363662396661383539646438383835343561343333663137633236366661333435323961633662666465333962356363383235326438 |
| iconURLHdr | |
| likes | 0 |
| nameHdr | 616968656c706572732e6a73 |
| owner | 6465726f317179347966376335373777717a767a7134347833306c7967686135776a7a377772687736646e76356e337071346634643761716c75717133306d37616b |
| subDir |
Transaction Information
Root Hash
Built Height
7241617
Block
Timestamp
1782424301204
Timestamp (UTC)
2026-06-25 21:51:41
Block Age
1h 16m ago
Fee
0.25759
TX Size
18.363 kB
Version
1
Confirmations
249
Signature Type
DERO_HOMOMORPHIC
DERO Asset
2
Ring Size
0.25759
Fees
0.00000
Deposited
Sender
dero1qy4yf7c577wqzvzq44x30lygha5wjz7wrhw6dnv5n3pq4f4d7aqluqq30m7ak
Ring Members (2)
Smart Contract Details
SC Balance
0.00000 DERO
Smart Contract Code
Smart Contract Arguments
| Name | Type | Value |
|---|---|---|
| SC_ACTION | uint64 | 1 |
| SC_CODE | string | "// Copyright 2024. Civilware. All rights reserved. // TELA Decentralized Web Document (TELA-DOC-1) Function InitializePrivate() Uint64 10 IF init() == 0 THEN GOTO 30 20 RETURN 1 30 STORE("nameHdr", "aihelpers.js") 31 STORE("descrHdr", "AI helpers file") 32 STORE("iconURLHdr", "") 33 STORE("dURL", "aihelpers.js") 34 STORE("docType", "TELA-JS-1") 35 STORE("subDir", "") 36 STORE("fileCheckC", "26e58246f6ca09d92181a73379220599e9a5c46bd5a4bde5ea0b835ffb0b31d4") 37 STORE("fileCheckS", "26527e430eed734885608b370e1b91c7fee2ca564419b352ce8c27091d68eefa") 100 RETURN 0 End Function Function init() Uint64 10 IF EXISTS("owner") == 0 THEN GOTO 30 20 RETURN 1 30 STORE("owner", address()) 50 STORE("docVersion", "1.0.0") 60 STORE("hash", HEX(TXID())) 70 STORE("likes", 0) 80 STORE("dislikes", 0) 100 RETURN 0 End Function Function address() String 10 DIM s as String 20 LET s = SIGNER() 30 IF IS_ADDRESS_VALID(s) THEN GOTO 50 40 RETURN "anon" 50 RETURN ADDRESS_STRING(s) End Function Function Rate(r Uint64) Uint64 10 DIM addr as String 15 LET addr = address() 16 IF r < 100 && EXISTS(addr) == 0 && addr != "anon" THEN GOTO 30 20 RETURN 1 30 STORE(addr, ""+r+"_"+BLOCK_HEIGHT()) 40 IF r < 50 THEN GOTO 70 50 STORE("likes", LOAD("likes")+1) 60 RETURN 0 70 STORE("dislikes", LOAD("dislikes")+1) 100 RETURN 0 End Function /* function isUnderOrFacingSegment(enemy, target) { const left = Math.min(target.x1, target.x2); const right = Math.max(target.x1, target.x2); if(enemy.x < left && enemy.facing ===1){ return true; }else if(enemy.x > right && enemy.facing ===-1){ return true; }else if(enemy.x >= left && enemy.x <= right){ return true; } return false; } function isSegmentBelowSegment(segA, segB, threshold = 0) { // 1. Horizontal overlap check const leftA = Math.min(segA.x1, segA.x2); const rightA = Math.max(segA.x1, segA.x2); const leftB = Math.min(segB.x1, segB.x2); const rightB = Math.max(segB.x1, segB.x2); const overlap = !(rightA < leftB - 1 || leftA > rightB + 1); if (!overlap) return false; // 2. Compute average heights (handles slopes) const avgA = (segA.y1 + segA.y2) * 0.5; const avgB = (segB.y1 + segB.y2) * 0.5; // 3. A is below B if its average y is greater (screen coords) return avgA > avgB + threshold; } function getPlatformById(id) { for (const plat of game.platforms) { if(plat.id === id)return plat; } } function resetAttacks(enemy){ enemy.wantKick = false; enemy.wantPunch = false; } function playerIsThreatening(player) { return player.wantKick || player.wantPunch || player.anim.state === "kick" || player.anim.state === "highKick" || player.anim.state === "punch"; } function countEnemiesBehind(enemy) { let count = 0; for (const e of game.enemies) { if (e === enemy) continue; if (e.dead) continue; // Same platform only if (e.onPlatform !== enemy.onPlatform) continue; // Must be behind relative to facing if (enemy.facing === 1 && e.x < enemy.x) count++; if (enemy.facing === -1 && e.x > enemy.x) count++; } return count; } function countEnemiesAhead(enemy) { let count = 0; for (const e of game.enemies) { if (e === enemy) continue; if (e.dead) continue; // Same platform only if (e.onPlatform !== enemy.onPlatform) continue; // Must be behind relative to facing if (enemy.facing === 1 && e.x > enemy.x) count++; if (enemy.facing === -1 && e.x < enemy.x) count++; } return count; } function keepEnemySpacing(enemy) { const spacing = 50; // how much space they want for (const e of game.enemies) { if (e === enemy || e.dead || e.inAir) continue; // Same platform only if (e.onPlatform !== enemy.onPlatform) continue; // Check if e is in front of enemy const dx = e.x - enemy.x; if (enemy.facing === 1 && dx > 0 && dx < spacing) { return true; } if (enemy.facing === -1 && dx < 0 && -dx < spacing) { return true; } } return false; } function avoidWalls(enemy){ if(directionBlocked(enemy) && !enemy.inAir){ enemy.facing = -enemy.facing; enemy.moveInput = enemy.facing if(directionBlocked(enemy)){ enemy.moveInput = 0; } } } function avoidWallsOnSamePlatform(enemy, wallSeg){ if(directionBlocked(enemy) && !enemy.inAir && enemy.onPlatform === enemy.blockedP && !aiCanJumpOver(enemy, wallSeg)){ enemy.facing = -enemy.facing; enemy.moveInput = enemy.facing if(directionBlocked(enemy)){ enemy.moveInput = 0; } } } function directionBlocked(enemy){ if(enemy.facing === 1 && enemy.blockedRight) return true; if(enemy.facing === -1 && enemy.blockedLeft) return true; return false } function detectWallAhead(enemy) { for (let plat of game.platforms) { for (let seg of plat.segments) { const direction = aiCheckWallAhead(enemy, seg) if (direction) { if(direction === "right"){ enemy.blockedP = plat.id; enemy.blockedRight = true; enemy.blockedLeft = false; return seg }else{ enemy.blockedP = plat.id; enemy.blockedLeft = true; enemy.blockedRight = false; return seg } } } } return null; } function aiCanJumpOver(ai, seg) { if(!seg)return true; const wallHeight = seg.maxY - seg.minY; return wallHeight <= 100; } function aiCheckWallAhead(ai, seg, lookAheadMax = 40) { if (!seg.isWall) return false; const top = ai.y + ai.height * .25; const bottom = ai.y + ai.height * 0.5; // vertical overlap if (bottom -1 <= seg.minY || top +1 >= seg.maxY) return false; const dist = seg.x1 - ai.x if (Math.abs(dist) <= lookAheadMax && dist > 0) { return "right" ; }else if (Math.abs(dist) <= lookAheadMax && dist < 0){ return "left" ; } return false; } function isNearPlatformEdge(enemy, plat, threshold = 20) { const left = plat.minX; const right = plat.maxX; const nearLeft = enemy.x < left + threshold; const nearRight = enemy.x > right - threshold; // Only count as an edge if there's no connected segment if (nearLeft) return true; if (nearRight) return true; return false; } function isNearEdgeFacing(enemy, platform, threshold = 20) { const left = platform.minX; const right = platform.maxX; if (enemy.facing < 0) { // Facing left return enemy.x <= left + threshold; } else { // Facing right return enemy.x >= right - threshold; } } function isFacingSegment(enemy, segment){ if (enemy.facing < 0) { // Facing left return enemy.x > segment.midX; } else { // Facing right return enemy.x < segment.midX; } } function isPlayerBelowPlatform(plat, threshold = 20) { const px = game.player.x; const py = game.player.y; for (const seg of plat.segments) { // Optional: only treat floor-type segments as platform surface if (seg.isWall) continue; const x1 = seg.x1; const x2 = seg.x2; const y1 = seg.y1; const y2 = seg.y2; // Skip vertical / near-vertical segments (walls) const dx = x2 - x1; if (Math.abs(dx) < 0.0001) continue; const left = Math.min(x1, x2); const right = Math.max(x1, x2); // Player must be horizontally under this segment (with small margin) if (px < left - threshold || px > right + threshold) continue; // Interpolate the platform height at px let t = (px - x1) / dx; // Clamp t so we don't extend beyond the segment if (t < 0 || t > 1) continue; const y_at_px = y1 + t * (y2 - y1); // Player must be below the surface if (py > y_at_px + 10) return true; } return false; } function isSafeToDrop(enemy) { const feetX = enemy.x; const feetY = enemy.y + enemy.height / 2; const segBelow = getPlatformBelowPoint(feetX, feetY); return segBelow !== null; } function getPlatformBelowPoint(x, y) { let best = null; let bestY = Infinity; for (const plat of game.platforms) { for (const seg of plat.segments) { if(seg.isWall)continue; // Skip segments above or at the same height const segTop = Math.min(seg.y1, seg.y2); if (segTop <= y) continue; // Check if x is within segment horizontal span const left = Math.min(seg.x1, seg.x2); const right = Math.max(seg.x1, seg.x2); if (x < left || x > right) continue; // Interpolate the Y at this X const t = (x - seg.x1) / (seg.x2 - seg.x1); const iy = seg.y1 + t * (seg.y2 - seg.y1); // Must be below the point if (iy <= y) continue; // Keep the closest one if (iy < bestY) { bestY = iy; best = seg; } } } return best; } function canJumpToSegment(enemy, from, to) { const gravity = game.gravity; const jump = game.jumpStrength; const maxJumpHeight = (jump * jump) / (2 * gravity); const fromTop = Math.min(from.y1, from.y2); const toTop = Math.min(to.y1, to.y2); const verticalDiff = toTop - fromTop; // negative = above // too high if (verticalDiff < -maxJumpHeight) return false; // too far down if (verticalDiff > 150) return false; // landing zone on the target segment const left = Math.min(to.x1, to.x2); const right = Math.max(to.x1, to.x2); // clamp landingX to the segment const landingX = Math.max(left, Math.min(enemy.x, right)); const horizontalGap = Math.abs(landingX - enemy.x); // airtime const timeUp = jump / gravity; const timeDown = Math.sqrt((2 * (maxJumpHeight + verticalDiff)) / gravity); const totalAirTime = timeUp + timeDown; const maxHorizontalReach = enemy.speed * totalAirTime; return horizontalGap <= maxHorizontalReach; } function canSegmentReachSegment(fromSeg, toSeg, jump, gravity, speed) { const fromTop = Math.min(fromSeg.y1, fromSeg.y2); const toTop = Math.min(toSeg.y1, toSeg.y2); const verticalDiff = toTop - fromTop; // negative = above const maxJumpHeight = (jump * jump) / (2 * gravity); // Too high if (verticalDiff < -maxJumpHeight) return false; // Too far down (optional) if (verticalDiff > 150) return false; // Horizontal ranges const fromLeft = Math.min(fromSeg.x1, fromSeg.x2); const fromRight = Math.max(fromSeg.x1, fromSeg.x2); const toLeft = Math.min(toSeg.x1, toSeg.x2); const toRight = Math.max(toSeg.x1, toSeg.x2); // Compute max horizontal reach const timeUp = jump / gravity; const timeDown = Math.sqrt((2 * (maxJumpHeight + verticalDiff)) / gravity); const totalAirTime = timeUp + timeDown; const maxReach = speed * totalAirTime; // Check if ANY point on fromSeg can reach ANY point on toSeg // This is interval overlap expanded by maxReach const expandedFromLeft = fromLeft - maxReach; const expandedFromRight = fromRight + maxReach; const overlap = expandedFromRight >= toLeft && expandedFromLeft <= toRight; return overlap; } function findBestJumpSegment(enemy, enemyPlat, playerPlat) { const jump = game.jumpStrength; const gravity = game.gravity; const speed = enemy.speed; for (const pseg of playerPlat.segments) { if ( pseg.isWall) continue; for (const eseg of enemyPlat.segments) { if ( eseg.isWall) continue; if (canSegmentReachSegment(eseg, pseg, jump, gravity, speed)) { return pseg; } } } return null; } function findClosestSegmentsBetween(platformA, platformB) { let bestA = null; let bestB = null; let bestDist = Infinity; for (const segA of platformA.segments) { if(segA.isWall)continue; for (const segB of platformB.segments) { if(segB.isWall)continue; // Compare endpoints of A to endpoints of B const d1 = dist(segA.x1, segA.y1, segB.x1, segB.y1); const d2 = dist(segA.x1, segA.y1, segB.x2, segB.y2); const d3 = dist(segA.x2, segA.y2, segB.x1, segB.y1); const d4 = dist(segA.x2, segA.y2, segB.x2, segB.y2); const localMin = Math.min(d1, d2, d3, d4); if (localMin < bestDist) { bestDist = localMin; bestA = segA; bestB = segB; } } } return { segA: bestA, segB: bestB, dist: bestDist }; } function findClosestSegmentsBetweenMidPoints(platformA, platformB) { let bestA = null; let bestB = null; let bestScore = Infinity; for (const segA of platformA.segments) { if(segA.isWall)continue; for (const segB of platformB.segments) { if(segB.isWall)continue; // Midpoint distance const mxA = (segA.x1 + segA.x2) * 0.5; const myA = (segA.y1 + segA.y2) * 0.5; const mxB = (segB.x1 + segB.x2) * 0.5; const myB = (segB.y1 + segB.y2) * 0.5; const midDist = dist(mxA, myA, mxB, myB); // Combined score (midpoint weighted slightly more) const score = midDist; if (score < bestScore) { bestScore = score; bestA = segA; bestB = segB; } } } return { segA: bestA, segB: bestB, dist: bestScore }; } function dist(x1, y1, x2, y2) { const dx = x1 - x2; const dy = y1 - y2; return Math.sqrt(dx*dx + dy*dy); } function getPlatformUnder(entity) { const feetY = entity.y + entity.height / 2; let bestSeg = null; let bestPlat = null; let bestDelta = Infinity; for (const plat of game.platforms) { for (const seg of plat.segments) { if(seg.isWall)continue; const left = Math.min(seg.x1, seg.x2); const right = Math.max(seg.x1, seg.x2); if (entity.x < left || entity.x > right) continue; const t = (entity.x - seg.x1) / (seg.x2 - seg.x1); const platY = seg.y1 + (seg.y2 - seg.y1) * t; const delta = platY - feetY; if (delta < -4) continue; if (delta > 40) continue; if (delta < bestDelta) { bestDelta = delta; bestSeg = seg; bestPlat = plat; } } } return { segment: bestSeg, platform: bestPlat }; } function getSegmentOverCurrent(currentSeg) { const curLeft = Math.min(currentSeg.x1, currentSeg.x2); const curRight = Math.max(currentSeg.x1, currentSeg.x2); const curTop = Math.min(currentSeg.y1, currentSeg.y2); let candidates = []; for (const plat of game.platforms) { for (const seg of plat.segments) { if (seg === currentSeg || seg.isWall ) continue; const segTop = Math.min(seg.y1, seg.y2); // must be above if (segTop >= curTop) continue; // must overlap horizontally const left = Math.min(seg.x1, seg.x2); const right = Math.max(seg.x1, seg.x2); if (right < curLeft || left > curRight) continue; candidates.push(seg); } } if (candidates.length === 0) return null; // pick lowest platform above candidates.sort((a, b) => { return Math.min(b.y1, b.y2) - Math.min(a.y1, a.y2); }); return candidates[0]; } function getSegmentOverPlatform(enemyPlatform) { const platLeft = enemyPlatform.minX; const platRight = enemyPlatform.maxX; const platTop = enemyPlatform.minY; let candidates = []; for (const plat of game.platforms) { for (const seg of plat.segments) { // Skip segments belonging to the same platform if (plat === enemyPlatform || seg.isWall ) continue; const segTop = Math.min(seg.y1, seg.y2); // Must be above the platform if (segTop >= platTop) continue; // Horizontal overlap with the ENTIRE platform const left = Math.min(seg.x1, seg.x2); const right = Math.max(seg.x1, seg.x2); if (right < platLeft || left > platRight) continue; candidates.push(seg); } } if (candidates.length === 0) return null; // Pick the LOWEST segment above the platform candidates.sort((a, b) => { const aTop = Math.min(a.y1, a.y2); const bTop = Math.min(b.y1, b.y2); return bTop - aTop; // reversed: lowest ABOVE }); return candidates[0]; } //for death animation function getSegmentAngle(seg) { return Math.atan2(seg.y2 - seg.y1, seg.x2 - seg.x1); } */" |
Prove Transaction
Prove that you sent DERO in this transaction. Obtain proof using the dero-wallet-cli command or from your wallet statement.
Note: The proof is sent to the server for verification calculations.
Payload proofs are user-provided display proofs; for the strongest verification, confirm with the receiving wallet.