[
"autonomous agent",
{
"init": "{
//
// ==========================================
// OBYTE STACK GAME from Whistling Frogs
// ==========================================
// Written by Crypto Girl on 21 Sep 2019
// ==========================================
// Version: 0.3 - 27 Sept 2019
// ==========================================
// Can be used with OBYTE STACK GAME BOT v0.1
// ===========================================
//
// TThe object of the game is to win the Stack.
// Users make bids. Min bid is 100,000 bytes.
// 1st bid initiates the Stack.
// Each subsequent bid starts the 5 min timer.
// If more than 5 min has passed since the previous
// bid, the (stack - commission) is shared equally
// between the last bidder and the 1st bidder.
// The new stack is initiated with the current bid.
// A commission of 10,000 bytes is charged on each bid.
//
// Setting Game parameters
//
$min_bid_amnt = 100000; // 100,000 is about £0.02 to be increaded to £0.50
$fee = 10000; // 10,000 for now to be replaced with 1% of the pot
$seed_amnt = 10000;
$commission = var['commisson'] otherwise 0;
$commission_address = 'B7KF2F5AP6BZLXOE2EGHH6BKZWVNIKWF'; //testnet
$commission_payout_threshold = 10000; // amount kept small for testing
$bot_address = '4H2FOFBP7ST6BLYWHZ3GUV5PHY626AM4';
//
// Initilising Game variables
//
$game_status = var['game_status'] otherwise 'not started';
$bid_amnt = trigger.output[[asset=base]];
$game_finished = ($bot_address == trigger.initial_address);
//if ($bot_address == trigger.initial_address)
// $bot_command = 'stop the game';
//if (trigger.initial_address != $bot_address)
// $bot_command = 'keep on playing';
$bid_status = ($bid_amnt >= $min_bid_amnt) otherwise false;
if ($bid_status == false AND trigger.initial_address != $bot_address)
bounce('Your bid is too small and will be returned to you - fees');
}",
"messages": [
{
"app": "payment",
"if": "{$game_finished}",
"payload": {
"asset": "base",
"outputs": [
{
"address": "{ var['leader'] }",
"amount": "{ var['winnings'] }"
}
]
}
},
{
"app": "payment",
"if": "{$game_finished}",
"payload": {
"asset": "base",
"outputs": [
{
"address": "{ var['author'] }",
"amount": "{ var['winnings'] }"
}
]
}
},
{
"app": "payment",
"if": "{ $commission >= $commission_payout_threshold }",
"payload": {
"asset": "base",
"outputs": [
{
"address": "{ $commission_address }",
"amount": "{ var['commission'] }"
}
]
}
},
{
"app": "state",
"state": "{
// game not started
if ($bid_status AND $game_status == 'not started') {
var['stack_amnt'] = $bid_amnt - $fee;
var['winnings'] = var['stack_amnt'] / 2;
var['author'] = trigger.initial_address;
var['leader'] = trigger.initial_address;
var['game_status'] = 'running';
response['message'] = 'Thank you for playing 1st';
}
// game is running
if ($bid_status == true AND $game_status == 'running') {
var['stack_amnt'] += ($bid_amnt - $fee);
var['winnings'] = var['stack_amnt'] / 2;
var['leader'] = trigger.initial_address;
var['game_status'] = 'running';
response['message'] = 'Thank you for playing';
}
// game is finished
if ($game_finished) {
var['commission'] = balance[base] - $seed_amnt;
//var['stack_amnt'] = 0;
//var['leader'] = '';
//var['author'] = '';
var['game_status'] = 'not started';
response['message'] = 'Game finished';
}
}"
}
]
}
]